
/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */
/* WARNING: Unknown calling convention */

char * command_word_completion_function(char *hint_text,int state)

{
  SHELL_VAR **ppSVar1;
  alias_t *paVar2;
  SHELL_VAR **ppSVar3;
  alias_t **ppaVar4;
  int iVar5;
  char *pcVar6;
  size_t sVar7;
  char *pcVar8;
  char **ppcVar9;
  int iVar10;
  uint state_00;
  int iVar11;
  int iVar12;
  char *pcVar13;
  char cVar14;
  builtin *pbVar15;
  int in_GS_OFFSET;
  char *f;
  int local_20;
  undefined4 uStack_14;
  
  uStack_14 = 0x8d029;
  local_20 = *(int *)(in_GS_OFFSET + 0x14);
  if (state == 0) {
    rl_filename_stat_hook = bash_command_name_stat_hook;
    if (command_word_completion_function::dequoted_hint == (char *)0x0) {
LAB_0008d085:
      if (command_word_completion_function::hint != (char *)0x0) goto LAB_0008d089;
    }
    else {
      if (command_word_completion_function::dequoted_hint != command_word_completion_function::hint)
      {
        free(command_word_completion_function::dequoted_hint);
        goto LAB_0008d085;
      }
LAB_0008d089:
      free(command_word_completion_function::hint);
    }
    command_word_completion_function::searching_path = 0;
    command_word_completion_function::mapping_over = 0;
    iVar5 = absolute_pathname(hint_text);
    if (((iVar5 == 0) && (iVar5 = absolute_program(hint_text), iVar5 == 0)) && (*hint_text != '~'))
    {
      iVar5 = test_for_directory(hint_text);
      command_word_completion_function::hint_is_dir = (int)(iVar5 != 0);
    }
    else {
      command_word_completion_function::hint_is_dir = 0;
    }
    command_word_completion_function::val = (char *)0x0;
    pcVar6 = rl_variable_value("completion-ignore-case");
    command_word_completion_function::igncase = 0;
    if ((*pcVar6 == 'o') && (pcVar6[1] == 'n')) {
      command_word_completion_function::igncase = (int)(pcVar6[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) &&
       (iVar5 = absolute_program(hint_text), iVar5 == 0)) {
      sVar7 = strlen(hint_text);
      pcVar6 = (char *)xmalloc(sVar7 + 1);
      pcVar6 = strcpy(pcVar6,hint_text);
      command_word_completion_function::hint = pcVar6;
      command_word_completion_function::dequoted_hint = pcVar6;
      command_word_completion_function::hint_len = strlen(pcVar6);
      if ((rl_completion_found_quote != 0) && (rl_completion_quote_character == 0)) {
        command_word_completion_function::dequoted_hint = bash_dequote_filename(pcVar6,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_0008d390;
    }
    if (*hint_text == '~') {
      command_word_completion_function::hint = bash_tilde_expand(hint_text,0);
      sVar7 = strlen(hint_text);
      pcVar6 = (char *)xmalloc(sVar7 + 1);
      pcVar6 = strcpy(pcVar6,hint_text);
      command_word_completion_function::directory_part = pcVar6;
      pcVar8 = strchr(pcVar6,0x2f);
      if (pcVar8 == (char *)0x0) {
        free(pcVar6);
        command_word_completion_function::directory_part = (char *)0x0;
      }
      else {
        *pcVar8 = '\0';
      }
    }
    else {
      sVar7 = strlen(hint_text);
      if (dircomplete_expand == 0) {
        pcVar6 = (char *)xmalloc(sVar7 + 1);
        command_word_completion_function::hint = strcpy(pcVar6,hint_text);
      }
      else {
        pcVar6 = (char *)xmalloc(sVar7 + 1);
        command_word_completion_function::hint = strcpy(pcVar6,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 != 0) && (rl_completion_quote_character == 0)) {
      pcVar6 = bash_dequote_filename(command_word_completion_function::hint,0);
      command_word_completion_function::dequoted_hint = pcVar6;
      free(command_word_completion_function::hint);
      command_word_completion_function::hint = pcVar6;
    }
    pcVar6 = command_word_completion_function::hint;
    command_word_completion_function::hint_len = strlen(command_word_completion_function::hint);
    if (command_word_completion_function::filename_hint != (char *)0x0) {
      free(command_word_completion_function::filename_hint);
      pcVar6 = command_word_completion_function::hint;
    }
    sVar7 = strlen(pcVar6);
    pcVar8 = (char *)xmalloc(sVar7 + 1);
    command_word_completion_function::fnhint = strcpy(pcVar8,pcVar6);
    command_word_completion_function::istate = 0;
    command_word_completion_function::filename_hint = command_word_completion_function::fnhint;
    if (command_word_completion_function::globpat == 0) {
      state_00 = dircomplete_expand;
      if ((dircomplete_expand != 0) &&
         (iVar5 = path_dot_or_dotdot(command_word_completion_function::fnhint),
         state_00 = command_word_completion_function::istate, iVar5 != 0)) {
        dircomplete_expand = 1;
        rl_directory_rewrite_hook = bash_directory_completion_hook;
        rl_directory_completion_hook = (undefined1 *)0x0;
      }
      command_word_completion_function::mapping_over = 4;
      pcVar6 = command_word_completion_function::fnhint;
      do {
        do {
          while( true ) {
            command_word_completion_function::val = rl_filename_completion_function(pcVar6,state_00)
            ;
            if ((command_word_completion_function::mapping_over == 4) && (dircomplete_expand != 0))
            {
              rl_directory_completion_hook = bash_directory_completion_hook;
              rl_directory_rewrite_hook = (undefined1 *)0x0;
            }
            command_word_completion_function::istate = 1;
            if (command_word_completion_function::val == (char *)0x0) break;
            iVar5 = absolute_program(command_word_completion_function::hint);
            pcVar8 = command_word_completion_function::val;
            if (iVar5 == 0) {
              pcVar6 = strrchr(command_word_completion_function::val,0x2f);
              if (pcVar6 != (char *)0x0) {
                pcVar6 = pcVar6 + 1;
                if (command_word_completion_function::igncase == 0) {
                  iVar5 = strncmp(pcVar6,command_word_completion_function::hint,
                                  command_word_completion_function::hint_len);
                }
                else {
                  iVar5 = strncasecmp(pcVar6,command_word_completion_function::hint,
                                      command_word_completion_function::hint_len);
                }
                if (iVar5 == 0) {
                  sVar7 = strlen(pcVar6);
                  pcVar8 = (char *)xmalloc(sVar7 + 1);
                  pcVar6 = strcpy(pcVar8,pcVar6);
                  goto LAB_0008d6a4;
                }
              }
            }
            else {
              if (command_word_completion_function::igncase == 0) {
                iVar5 = strncmp(command_word_completion_function::val,
                                command_word_completion_function::hint,
                                command_word_completion_function::hint_len);
              }
              else {
                iVar5 = strncasecmp(command_word_completion_function::val,
                                    command_word_completion_function::hint,
                                    command_word_completion_function::hint_len);
              }
              if (*hint_text == '~') {
                pcVar6 = maybe_restore_tilde(pcVar8,command_word_completion_function::directory_part
                                            );
              }
              else {
                sVar7 = strlen(pcVar8);
                pcVar6 = (char *)xmalloc(sVar7 + 1);
                pcVar6 = strcpy(pcVar6,pcVar8);
              }
              pcVar8 = command_word_completion_function::val;
              if (iVar5 == 0) {
LAB_0008d6a4:
                iVar5 = command_word_completion_function::searching_path;
                pcVar13 = command_word_completion_function::val;
                sVar7 = strlen(command_word_completion_function::val);
                pcVar8 = (char *)xmalloc(sVar7 + 1);
                f = strcpy(pcVar8,pcVar13);
                bash_directory_completion_hook(&f);
                if (iVar5 == 0) {
                  iVar5 = executable_or_directory(f);
                }
                else {
                  iVar5 = executable_file(f);
                }
                free(f);
                pcVar8 = command_word_completion_function::val;
                if (iVar5 != 0) {
                  if (pcVar13 != command_word_completion_function::val) {
                    free(pcVar13);
                  }
                  free(pcVar8);
                  command_word_completion_function::val = "";
                  goto LAB_0008d5c8;
                }
                free(pcVar6);
                if (pcVar13 != pcVar8) {
                  free(pcVar13);
                }
              }
              else {
                free(pcVar6);
              }
            }
            free(pcVar8);
            state_00 = command_word_completion_function::istate;
            pcVar6 = command_word_completion_function::fnhint;
          }
          iVar5 = absolute_program(command_word_completion_function::hint);
          if (iVar5 != 0) goto LAB_0008dac4;
LAB_0008d5f6:
          state_00 = (uint)(command_word_completion_function::val != (char *)0x0);
          pcVar6 = command_word_completion_function::fnhint;
          command_word_completion_function::istate = state_00;
        } while (command_word_completion_function::val != (char *)0x0);
        if (((command_word_completion_function::path == (char *)0x0) ||
            (command_word_completion_function::path[command_word_completion_function::path_index] ==
             '\0')) ||
           (pcVar6 = extract_colon_unit(command_word_completion_function::path,
                                        &command_word_completion_function::path_index),
           pcVar6 == (char *)0x0)) goto LAB_0008dac4;
        command_word_completion_function::searching_path = 1;
        cVar14 = *pcVar6;
        if (cVar14 == '\0') {
          free(pcVar6);
          pcVar6 = (char *)xmalloc(2);
          pcVar6[0] = '.';
          pcVar6[1] = '\0';
          cVar14 = '.';
        }
        pcVar8 = pcVar6;
        if (cVar14 == '~') {
          pcVar8 = bash_tilde_expand(pcVar6,0);
          free(pcVar6);
          cVar14 = *pcVar8;
        }
        pcVar6 = command_word_completion_function::filename_hint;
        if ((cVar14 == '.') && (pcVar8[1] == '\0')) {
          dot_in_path = 1;
        }
        if (command_word_completion_function::fnhint == (char *)0x0) {
LAB_0008dbfe:
          if (pcVar6 != (char *)0x0) goto LAB_0008de5f;
        }
        else {
          if (command_word_completion_function::fnhint !=
              command_word_completion_function::filename_hint) {
            free(command_word_completion_function::fnhint);
            goto LAB_0008dbfe;
          }
LAB_0008de5f:
          free(pcVar6);
        }
        pcVar6 = sh_makepath(pcVar8,command_word_completion_function::hint,0);
        command_word_completion_function::filename_hint = pcVar6;
        pcVar13 = strpbrk(pcVar6,"\"\'\\");
        if (pcVar13 != (char *)0x0) {
          pcVar6 = sh_backslash_quote(pcVar6,filename_bstab,0);
        }
        command_word_completion_function::fnhint = pcVar6;
        free(pcVar8);
        state_00 = command_word_completion_function::istate;
      } while( true );
    }
    command_word_completion_function::mapping_over = 5;
LAB_0008d218:
    glob_ignore_case = command_word_completion_function::igncase;
    ppcVar9 = shell_glob_filename(command_word_completion_function::hint);
    glob_ignore_case = 0;
    if ((ppcVar9 == (char **)PTR_glob_error_return_00149f60) || (ppcVar9 == (char **)0x0)) {
      command_word_completion_function::glob_matches = (char **)0x0;
      pcVar6 = (char *)0x0;
      goto LAB_0008d5c8;
    }
    command_word_completion_function::local_index = 0;
    command_word_completion_function::glob_matches = ppcVar9;
    if ((ppcVar9[1] != (char *)0x0) && (rl_completion_type == 9)) {
LAB_0008dac4:
      pcVar6 = (char *)0x0;
      goto LAB_0008d5c8;
    }
    iVar5 = 1;
  }
  else {
LAB_0008d390:
    pcVar6 = command_word_completion_function::hint;
    iVar12 = command_word_completion_function::igncase;
    iVar5 = command_word_completion_function::hint_len;
    ppaVar4 = command_word_completion_function::alias_list;
    iVar11 = command_word_completion_function::local_index;
    if (command_word_completion_function::mapping_over == 1) {
LAB_0008d960:
      do {
        pcVar8 = word_token_alist[iVar11].word;
        if (pcVar8 == (char *)0x0) {
          command_word_completion_function::local_index = 0;
          command_word_completion_function::mapping_over =
               command_word_completion_function::mapping_over + 1;
          iVar12 = command_word_completion_function::igncase;
          ppSVar3 = command_word_completion_function::varlist;
          goto LAB_0008d840;
        }
        iVar11 = iVar11 + 1;
        command_word_completion_function::local_index = iVar11;
      } while ((iVar5 != 0) &&
              ((*pcVar8 != *pcVar6 || (iVar12 = strncmp(pcVar8,pcVar6,iVar5), iVar12 != 0))));
LAB_0008d451:
      sVar7 = strlen(pcVar8);
      pcVar6 = (char *)xmalloc(sVar7 + 1);
      pcVar6 = strcpy(pcVar6,pcVar8);
      goto LAB_0008d5c8;
    }
    if (command_word_completion_function::mapping_over < 2) {
      if (command_word_completion_function::mapping_over == 0) {
        do {
          while( true ) {
            if ((ppaVar4 == (alias_t **)0x0) ||
               (paVar2 = ppaVar4[command_word_completion_function::local_index],
               paVar2 == (alias_t *)0x0)) {
              command_word_completion_function::mapping_over = 1;
              iVar11 = 0;
              goto LAB_0008d960;
            }
            command_word_completion_function::local_index =
                 command_word_completion_function::local_index + 1;
            pcVar8 = paVar2->name;
            if (iVar12 != 0) break;
            if ((iVar5 == 0) ||
               ((*pcVar8 == *pcVar6 && (iVar11 = strncmp(pcVar8,pcVar6,iVar5), iVar11 == 0))))
            goto LAB_0008d451;
          }
          iVar11 = strncasecmp(pcVar8,pcVar6,iVar5);
        } while (iVar11 != 0);
        goto LAB_0008d451;
      }
    }
    else {
      ppSVar3 = command_word_completion_function::varlist;
      if (command_word_completion_function::mapping_over == 2) {
LAB_0008d840:
        do {
          if ((ppSVar3 == (SHELL_VAR **)0x0) ||
             (ppSVar1 = ppSVar3 + command_word_completion_function::local_index,
             *ppSVar1 == (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_0008d3bd;
          }
          command_word_completion_function::local_index =
               command_word_completion_function::local_index + 1;
          pcVar8 = (*ppSVar1)->name;
          if (iVar12 == 0) {
            if ((iVar5 == 0) ||
               ((*pcVar8 == *pcVar6 && (iVar11 = strncmp(pcVar8,pcVar6,iVar5), iVar11 == 0))))
            break;
            goto LAB_0008d840;
          }
          iVar11 = strncasecmp(pcVar8,pcVar6,iVar5);
        } while (iVar11 != 0);
        sVar7 = strlen(pcVar8);
        pcVar6 = (char *)xmalloc(sVar7 + 1);
        pcVar6 = strcpy(pcVar6,pcVar8);
        goto LAB_0008d5c8;
      }
      if (command_word_completion_function::mapping_over == 3) {
LAB_0008d3bd:
        pcVar6 = command_word_completion_function::hint;
        iVar12 = command_word_completion_function::hint_len;
        iVar5 = num_shell_builtins;
        if (command_word_completion_function::local_index < num_shell_builtins) {
          pbVar15 = shell_builtins + command_word_completion_function::local_index;
          do {
            iVar11 = command_word_completion_function::local_index;
            if (((pbVar15->function != (sh_builtin_func_t *)0x0) && ((pbVar15->flags & 1) != 0)) &&
               ((pcVar8 = pbVar15->name, iVar12 == 0 ||
                ((*pcVar8 == *pcVar6 && (iVar10 = strncmp(pcVar8,pcVar6,iVar12), iVar10 == 0)))))) {
              command_word_completion_function::local_index = iVar11 + 1;
              goto LAB_0008d451;
            }
            command_word_completion_function::local_index = iVar11 + 1;
            pbVar15 = pbVar15 + 1;
          } while (command_word_completion_function::local_index != iVar5);
        }
        command_word_completion_function::mapping_over =
             command_word_completion_function::mapping_over + 1;
        command_word_completion_function::local_index = 0;
      }
    }
    if (command_word_completion_function::globpat == 0) {
      if (command_word_completion_function::hint_is_dir == 0) goto LAB_0008d5f6;
      command_word_completion_function::hint_is_dir = 0;
      sVar7 = strlen(hint_text);
      pcVar6 = (char *)xmalloc(sVar7 + 1);
      pcVar6 = strcpy(pcVar6,hint_text);
      goto LAB_0008d5c8;
    }
    if (state == 0) goto LAB_0008d218;
    iVar5 = command_word_completion_function::local_index + 1;
    ppcVar9 = command_word_completion_function::glob_matches +
              command_word_completion_function::local_index;
  }
  command_word_completion_function::val = *ppcVar9;
  command_word_completion_function::local_index = iVar5;
  while (command_word_completion_function::val != (char *)0x0) {
    iVar5 = executable_or_directory(command_word_completion_function::val);
    if (iVar5 != 0) {
      pcVar6 = command_word_completion_function::val;
      if ((*hint_text == '~') && (command_word_completion_function::directory_part != (char *)0x0))
      {
        pcVar6 = 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 = pcVar6;
      }
      goto LAB_0008d5c8;
    }
    free(command_word_completion_function::val);
    command_word_completion_function::val =
         command_word_completion_function::glob_matches
         [command_word_completion_function::local_index];
    command_word_completion_function::local_index =
         command_word_completion_function::local_index + 1;
  }
  glob_ignore_case = 0;
  pcVar6 = (char *)0x0;
LAB_0008d5c8:
  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {
                    /* WARNING: Subroutine does not return */
    __stack_chk_fail_local();
  }
  return pcVar6;
}



/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */

char * command_word_completion_function(char *param_1,int param_2)

{
  void *pvVar1;
  int iVar2;
  char *pcVar3;
  size_t sVar4;
  char *pcVar5;
  undefined4 *puVar6;
  int iVar7;
  uint uVar8;
  int iVar9;
  char *pcVar10;
  char cVar11;
  int in_GS_OFFSET;
  char *local_24;
  int local_20;
  undefined4 uStack_14;
  
  uStack_14 = 0x8d029;
  local_20 = *(int *)(in_GS_OFFSET + 0x14);
  if (param_2 == 0) {
    rl_filename_stat_hook = FUN_0008f310;
    if (DAT_00151468 == (char *)0x0) {
LAB_0008d085:
      if (DAT_00151464 != (char *)0x0) goto LAB_0008d089;
    }
    else {
      if (DAT_00151468 != DAT_00151464) {
        free(DAT_00151468);
        goto LAB_0008d085;
      }
LAB_0008d089:
      free(DAT_00151464);
    }
    DAT_00151460 = 0;
    DAT_0015145c = 0;
    iVar2 = absolute_pathname(param_1);
    if (((iVar2 == 0) && (iVar2 = absolute_program(param_1), iVar2 == 0)) && (*param_1 != '~')) {
      iVar2 = FUN_0008ac10(param_1);
      DAT_00151458 = (uint)(iVar2 != 0);
    }
    else {
      DAT_00151458 = 0;
    }
    DAT_00151454 = (char *)0x0;
    pcVar3 = (char *)rl_variable_value("completion-ignore-case");
    DAT_00151450 = 0;
    if ((*pcVar3 == 'o') && (pcVar3[1] == 'n')) {
      DAT_00151450 = (uint)(pcVar3[2] == '\0');
    }
    if (DAT_001514d4 != (undefined4 *)0x0) {
      free(DAT_001514d4);
      DAT_001514d4 = (undefined4 *)0x0;
    }
    DAT_0015144c = FUN_0008cd10();
    if ((DAT_0015144c == 0) && (iVar2 = absolute_program(param_1), iVar2 == 0)) {
      sVar4 = strlen(param_1);
      pcVar3 = (char *)xmalloc(sVar4 + 1);
      pcVar3 = strcpy(pcVar3,param_1);
      DAT_00151464 = pcVar3;
      DAT_00151468 = pcVar3;
      DAT_00151444 = strlen(pcVar3);
      if ((rl_completion_found_quote != 0) && (rl_completion_quote_character == 0)) {
        DAT_00151468 = (char *)FUN_00089940(pcVar3,0);
      }
      DAT_00151434 = get_string_value("PATH");
      DAT_001514ec = 0;
      DAT_00151430 = 0;
      DAT_0015142c = 0;
      if (DAT_00151428 != (void *)0x0) {
        free(DAT_00151428);
      }
      DAT_00151428 = (void *)all_visible_functions();
      if (DAT_00151424 != (void *)0x0) {
        free(DAT_00151424);
      }
      DAT_00151424 = (void *)all_aliases();
      goto LAB_0008d390;
    }
    if (*param_1 == '~') {
      DAT_00151464 = (char *)bash_tilde_expand(param_1,0);
      sVar4 = strlen(param_1);
      pcVar3 = (char *)xmalloc(sVar4 + 1);
      pcVar3 = strcpy(pcVar3,param_1);
      DAT_00151448 = pcVar3;
      pcVar5 = strchr(pcVar3,0x2f);
      if (pcVar5 == (char *)0x0) {
        free(pcVar3);
        DAT_00151448 = (char *)0x0;
      }
      else {
        *pcVar5 = '\0';
      }
    }
    else {
      sVar4 = strlen(param_1);
      if (dircomplete_expand == 0) {
        pcVar3 = (char *)xmalloc(sVar4 + 1);
        DAT_00151464 = strcpy(pcVar3,param_1);
      }
      else {
        pcVar3 = (char *)xmalloc(sVar4 + 1);
        DAT_00151464 = strcpy(pcVar3,param_1);
        FUN_0008c7b0(&DAT_00151464);
      }
    }
    DAT_00151468 = DAT_00151464;
    if ((rl_completion_found_quote != 0) && (rl_completion_quote_character == 0)) {
      pcVar3 = (char *)FUN_00089940(DAT_00151464,0);
      DAT_00151468 = pcVar3;
      free(DAT_00151464);
      DAT_00151464 = pcVar3;
    }
    pcVar3 = DAT_00151464;
    DAT_00151444 = strlen(DAT_00151464);
    if (DAT_00151440 != (char *)0x0) {
      free(DAT_00151440);
      pcVar3 = DAT_00151464;
    }
    sVar4 = strlen(pcVar3);
    pcVar5 = (char *)xmalloc(sVar4 + 1);
    DAT_0015143c = strcpy(pcVar5,pcVar3);
    DAT_00151438 = 0;
    DAT_00151440 = DAT_0015143c;
    if (DAT_0015144c == 0) {
      uVar8 = dircomplete_expand;
      if ((dircomplete_expand != 0) &&
         (iVar2 = path_dot_or_dotdot(DAT_0015143c), uVar8 = DAT_00151438, iVar2 != 0)) {
        dircomplete_expand = 1;
        rl_directory_rewrite_hook = FUN_0008c7b0;
        rl_directory_completion_hook = (code *)0x0;
      }
      DAT_0015145c = 4;
      pcVar3 = DAT_0015143c;
      do {
        do {
          while( true ) {
            DAT_00151454 = (char *)rl_filename_completion_function(pcVar3,uVar8);
            if ((DAT_0015145c == 4) && (dircomplete_expand != 0)) {
              rl_directory_completion_hook = FUN_0008c7b0;
              rl_directory_rewrite_hook = (code *)0x0;
            }
            DAT_00151438 = 1;
            if (DAT_00151454 == (char *)0x0) break;
            iVar2 = absolute_program(DAT_00151464);
            pcVar5 = DAT_00151454;
            if (iVar2 == 0) {
              pcVar3 = strrchr(DAT_00151454,0x2f);
              if (pcVar3 != (char *)0x0) {
                pcVar3 = pcVar3 + 1;
                if (DAT_00151450 == 0) {
                  iVar2 = strncmp(pcVar3,DAT_00151464,DAT_00151444);
                }
                else {
                  iVar2 = strncasecmp(pcVar3,DAT_00151464,DAT_00151444);
                }
                if (iVar2 == 0) {
                  sVar4 = strlen(pcVar3);
                  pcVar5 = (char *)xmalloc(sVar4 + 1);
                  pcVar3 = strcpy(pcVar5,pcVar3);
                  goto LAB_0008d6a4;
                }
              }
            }
            else {
              if (DAT_00151450 == 0) {
                iVar2 = strncmp(DAT_00151454,DAT_00151464,DAT_00151444);
              }
              else {
                iVar2 = strncasecmp(DAT_00151454,DAT_00151464,DAT_00151444);
              }
              if (*param_1 == '~') {
                pcVar3 = (char *)FUN_0008a220();
              }
              else {
                sVar4 = strlen(pcVar5);
                pcVar3 = (char *)xmalloc(sVar4 + 1);
                pcVar3 = strcpy(pcVar3,pcVar5);
              }
              pcVar5 = DAT_00151454;
              if (iVar2 == 0) {
LAB_0008d6a4:
                iVar2 = DAT_00151460;
                pcVar10 = DAT_00151454;
                sVar4 = strlen(DAT_00151454);
                pcVar5 = (char *)xmalloc(sVar4 + 1);
                local_24 = strcpy(pcVar5,pcVar10);
                FUN_0008c7b0(&local_24);
                if (iVar2 == 0) {
                  iVar2 = executable_or_directory(local_24);
                }
                else {
                  iVar2 = executable_file(local_24);
                }
                free(local_24);
                pcVar5 = DAT_00151454;
                if (iVar2 != 0) {
                  if (pcVar10 != DAT_00151454) {
                    free(pcVar10);
                  }
                  free(pcVar5);
                  DAT_00151454 = "";
                  goto LAB_0008d5c8;
                }
                free(pcVar3);
                if (pcVar10 != pcVar5) {
                  free(pcVar10);
                }
              }
              else {
                free(pcVar3);
              }
            }
            free(pcVar5);
            uVar8 = DAT_00151438;
            pcVar3 = DAT_0015143c;
          }
          iVar2 = absolute_program(DAT_00151464);
          if (iVar2 != 0) goto LAB_0008dac4;
LAB_0008d5f6:
          uVar8 = (uint)(DAT_00151454 != (char *)0x0);
          pcVar3 = DAT_0015143c;
          DAT_00151438 = uVar8;
        } while (DAT_00151454 != (char *)0x0);
        if (((DAT_00151434 == 0) || (*(char *)(DAT_00151434 + DAT_00151430) == '\0')) ||
           (pcVar3 = (char *)extract_colon_unit(DAT_00151434,&DAT_00151430), pcVar3 == (char *)0x0))
        goto LAB_0008dac4;
        DAT_00151460 = 1;
        cVar11 = *pcVar3;
        if (cVar11 == '\0') {
          free(pcVar3);
          pcVar3 = (char *)xmalloc(2);
          pcVar3[0] = '.';
          pcVar3[1] = '\0';
          cVar11 = '.';
        }
        pcVar5 = pcVar3;
        if (cVar11 == '~') {
          pcVar5 = (char *)bash_tilde_expand(pcVar3,0);
          free(pcVar3);
          cVar11 = *pcVar5;
        }
        pcVar3 = DAT_00151440;
        if ((cVar11 == '.') && (pcVar5[1] == '\0')) {
          DAT_001514ec = 1;
        }
        if (DAT_0015143c == (char *)0x0) {
LAB_0008dbfe:
          if (pcVar3 != (char *)0x0) goto LAB_0008de5f;
        }
        else {
          if (DAT_0015143c != DAT_00151440) {
            free(DAT_0015143c);
            goto LAB_0008dbfe;
          }
LAB_0008de5f:
          free(pcVar3);
        }
        pcVar3 = (char *)sh_makepath(pcVar5,DAT_00151464,0);
        DAT_00151440 = pcVar3;
        pcVar10 = strpbrk(pcVar3,"\"\'\\");
        if (pcVar10 != (char *)0x0) {
          pcVar3 = (char *)sh_backslash_quote(pcVar3,&DAT_00151500,0);
        }
        DAT_0015143c = pcVar3;
        free(pcVar5);
        uVar8 = DAT_00151438;
      } while( true );
    }
    DAT_0015145c = 5;
LAB_0008d218:
    glob_ignore_case = DAT_00151450;
    puVar6 = (undefined4 *)shell_glob_filename(DAT_00151464);
    glob_ignore_case = 0;
    if ((puVar6 == (undefined4 *)PTR_glob_error_return_00149f60) || (puVar6 == (undefined4 *)0x0)) {
      DAT_001514d4 = (undefined4 *)0x0;
      pcVar3 = (char *)0x0;
      goto LAB_0008d5c8;
    }
    DAT_0015142c = 0;
    DAT_001514d4 = puVar6;
    if ((puVar6[1] != 0) && (rl_completion_type == 9)) {
LAB_0008dac4:
      pcVar3 = (char *)0x0;
      goto LAB_0008d5c8;
    }
    iVar2 = 1;
  }
  else {
LAB_0008d390:
    pcVar3 = DAT_00151464;
    uVar8 = DAT_00151450;
    sVar4 = DAT_00151444;
    pvVar1 = DAT_00151424;
    iVar2 = DAT_0015142c;
    if (DAT_0015145c == 1) {
LAB_0008d960:
      do {
        pcVar5 = (&word_token_alist)[iVar2 * 2];
        if (pcVar5 == (char *)0x0) {
          DAT_0015142c = 0;
          DAT_0015145c = DAT_0015145c + 1;
          uVar8 = DAT_00151450;
          pvVar1 = DAT_00151428;
          goto LAB_0008d840;
        }
        iVar2 = iVar2 + 1;
        DAT_0015142c = iVar2;
      } while ((sVar4 != 0) &&
              ((*pcVar5 != *pcVar3 || (iVar9 = strncmp(pcVar5,pcVar3,sVar4), iVar9 != 0))));
LAB_0008d451:
      sVar4 = strlen(pcVar5);
      pcVar3 = (char *)xmalloc(sVar4 + 1);
      pcVar3 = strcpy(pcVar3,pcVar5);
      goto LAB_0008d5c8;
    }
    if (DAT_0015145c < 2) {
      if (DAT_0015145c == 0) {
        do {
          while( true ) {
            if ((pvVar1 == (void *)0x0) ||
               (puVar6 = *(undefined4 **)((int)pvVar1 + DAT_0015142c * 4),
               puVar6 == (undefined4 *)0x0)) {
              DAT_0015145c = 1;
              iVar2 = 0;
              goto LAB_0008d960;
            }
            DAT_0015142c = DAT_0015142c + 1;
            pcVar5 = (char *)*puVar6;
            if (uVar8 != 0) break;
            if ((sVar4 == 0) ||
               ((*pcVar5 == *pcVar3 && (iVar2 = strncmp(pcVar5,pcVar3,sVar4), iVar2 == 0))))
            goto LAB_0008d451;
          }
          iVar2 = strncasecmp(pcVar5,pcVar3,sVar4);
        } while (iVar2 != 0);
        goto LAB_0008d451;
      }
    }
    else {
      pvVar1 = DAT_00151428;
      if (DAT_0015145c == 2) {
LAB_0008d840:
        do {
          if ((pvVar1 == (void *)0x0) ||
             (puVar6 = *(undefined4 **)((int)pvVar1 + DAT_0015142c * 4), puVar6 == (undefined4 *)0x0
             )) {
            DAT_0015142c = 0;
            DAT_0015145c = DAT_0015145c + 1;
            goto LAB_0008d3bd;
          }
          DAT_0015142c = DAT_0015142c + 1;
          pcVar5 = (char *)*puVar6;
          if (uVar8 == 0) {
            if ((sVar4 == 0) ||
               ((*pcVar5 == *pcVar3 && (iVar2 = strncmp(pcVar5,pcVar3,sVar4), iVar2 == 0)))) break;
            goto LAB_0008d840;
          }
          iVar2 = strncasecmp(pcVar5,pcVar3,sVar4);
        } while (iVar2 != 0);
        sVar4 = strlen(pcVar5);
        pcVar3 = (char *)xmalloc(sVar4 + 1);
        pcVar3 = strcpy(pcVar3,pcVar5);
        goto LAB_0008d5c8;
      }
      if (DAT_0015145c == 3) {
LAB_0008d3bd:
        pcVar3 = DAT_00151464;
        sVar4 = DAT_00151444;
        iVar2 = num_shell_builtins;
        if (DAT_0015142c < num_shell_builtins) {
          puVar6 = (undefined4 *)(shell_builtins + DAT_0015142c * 0x18);
          do {
            iVar9 = DAT_0015142c;
            if (((puVar6[1] != 0) && ((*(byte *)(puVar6 + 2) & 1) != 0)) &&
               ((pcVar5 = (char *)*puVar6, sVar4 == 0 ||
                ((*pcVar5 == *pcVar3 && (iVar7 = strncmp(pcVar5,pcVar3,sVar4), iVar7 == 0)))))) {
              DAT_0015142c = iVar9 + 1;
              goto LAB_0008d451;
            }
            DAT_0015142c = iVar9 + 1;
            puVar6 = puVar6 + 6;
          } while (DAT_0015142c != iVar2);
        }
        DAT_0015145c = DAT_0015145c + 1;
        DAT_0015142c = 0;
      }
    }
    if (DAT_0015144c == 0) {
      if (DAT_00151458 == 0) goto LAB_0008d5f6;
      DAT_00151458 = 0;
      sVar4 = strlen(param_1);
      pcVar3 = (char *)xmalloc(sVar4 + 1);
      pcVar3 = strcpy(pcVar3,param_1);
      goto LAB_0008d5c8;
    }
    if (param_2 == 0) goto LAB_0008d218;
    iVar2 = DAT_0015142c + 1;
    puVar6 = DAT_001514d4 + DAT_0015142c;
  }
  DAT_00151454 = (char *)*puVar6;
  DAT_0015142c = iVar2;
  while (DAT_00151454 != (char *)0x0) {
    iVar2 = executable_or_directory(DAT_00151454);
    if (iVar2 != 0) {
      pcVar3 = DAT_00151454;
      if ((*param_1 == '~') && (DAT_00151448 != (char *)0x0)) {
        pcVar3 = (char *)FUN_0008a220();
        free(DAT_00151454);
        DAT_00151454 = pcVar3;
      }
      goto LAB_0008d5c8;
    }
    free(DAT_00151454);
    DAT_00151454 = (char *)DAT_001514d4[DAT_0015142c];
    DAT_0015142c = DAT_0015142c + 1;
  }
  glob_ignore_case = 0;
  pcVar3 = (char *)0x0;
LAB_0008d5c8:
  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {
                    /* WARNING: Subroutine does not return */
    FUN_000ecc40();
  }
  return pcVar3;
}


PUSH EBP
PUSH EDI
PUSH ESI
PUSH EBX
CALL 0x00031ed0
ADD EBX,0xbcfd7
SUB ESP,0x2c
MOV EAX,dword ptr [ESP + 0x40]
MOV dword ptr [ESP],EAX
MOV EAX,GS:[0x14]
MOV dword ptr [ESP + 0x1c],EAX
XOR EAX,EAX
MOV EAX,dword ptr [ESP + 0x44]
TEST EAX,EAX
JNZ 0x0008d390
LEA EAX,[EBX + 0x7d98]
LEA EDX,[EBX + 0xfff45310]
MOV dword ptr [EAX],EDX
MOV EDX,dword ptr [EBX + 0x7468]
MOV EAX,dword ptr [EBX + 0x7464]
TEST EDX,EDX
JZ 0x0008d085
CMP EDX,EAX
JZ 0x0008d089
SUB ESP,0xc
PUSH EDX
CALL 0x0002f200
MOV EAX,dword ptr [EBX + 0x7464]
ADD ESP,0x10
TEST EAX,EAX
JZ 0x0008d095
SUB ESP,0xc
PUSH EAX
CALL 0x0002f200
ADD ESP,0x10
MOV dword ptr [EBX + 0x7460],0x0
SUB ESP,0xc
PUSH dword ptr [ESP + 0xc]
MOV dword ptr [EBX + 0x745c],0x0
CALL 0x00041c90
ADD ESP,0x10
TEST EAX,EAX
JZ 0x0008d908
XOR EAX,EAX
SUB ESP,0xc
MOV dword ptr [EBX + 0x7458],EAX
LEA EAX,[EBX + 0xfffa7c9e]
PUSH EAX
MOV dword ptr [EBX + 0x7454],0x0
CALL 0x000d2d30
ADD ESP,0x10
XOR EDX,EDX
CMP byte ptr [EAX],0x6f
JZ 0x0008daf0
MOV EAX,dword ptr [EBX + 0x74d4]
MOV dword ptr [EBX + 0x7450],EDX
TEST EAX,EAX
JZ 0x0008d115
SUB ESP,0xc
PUSH EAX
CALL 0x0002f200
ADD ESP,0x10
MOV dword ptr [EBX + 0x74d4],0x0
MOV EAX,dword ptr [ESP]
CALL 0x0008cd10
MOV dword ptr [EBX + 0x744c],EAX
TEST EAX,EAX
JZ 0x0008d288
MOV EAX,dword ptr [ESP]
CMP byte ptr [EAX],0x7e
JZ 0x0008dc70
SUB ESP,0xc
MOV EDI,dword ptr [ESP + 0xc]
PUSH EDI
CALL 0x0002f760
MOV EDX,dword ptr [EBX + 0x7408]
ADD ESP,0x10
ADD EAX,0x1
TEST EDX,EDX
JNZ 0x0008d8d0
SUB ESP,0xc
PUSH EAX
CALL 0x00099200
POP EDX
POP ECX
PUSH dword ptr [ESP + 0x8]
PUSH EAX
CALL 0x0002f580
ADD ESP,0x10
MOV dword ptr [EBX + 0x7464],EAX
MOV ESI,EAX
LEA EAX,[EBX + 0xd9b8]
MOV dword ptr [EBX + 0x7468],ESI
MOV EAX,dword ptr [EAX]
TEST EAX,EAX
JZ 0x0008d19a
LEA EAX,[EBX + 0xd9a8]
MOV EBP,dword ptr [EAX]
TEST EBP,EBP
JZ 0x0008dcf0
SUB ESP,0xc
PUSH ESI
CALL 0x0002f760
ADD ESP,0x10
MOV dword ptr [EBX + 0x7444],EAX
MOV EAX,dword ptr [EBX + 0x7440]
TEST EAX,EAX
JZ 0x0008d1c8
SUB ESP,0xc
PUSH EAX
CALL 0x0002f200
MOV ESI,dword ptr [EBX + 0x7464]
ADD ESP,0x10
SUB ESP,0xc
PUSH ESI
CALL 0x0002f760
ADD EAX,0x1
MOV dword ptr [ESP],EAX
CALL 0x00099200
POP EBP
POP EDX
PUSH ESI
PUSH EAX
CALL 0x0002f580
MOV ECX,dword ptr [EBX + 0x744c]
ADD ESP,0x10
MOV dword ptr [EBX + 0x7438],0x0
MOV ESI,EAX
MOV dword ptr [EBX + 0x7440],EAX
MOV dword ptr [EBX + 0x743c],EAX
TEST ECX,ECX
JZ 0x0008dad0
MOV dword ptr [EBX + 0x745c],0x5
LEA ESI,[EBX + 0x7868]
MOV EAX,dword ptr [EBX + 0x7450]
SUB ESP,0xc
MOV dword ptr [ESI],EAX
PUSH dword ptr [EBX + 0x7464]
CALL 0x0007e880
MOV dword ptr [ESI],0x0
ADD ESP,0x10
MOV dword ptr [EBX + 0x74d4],EAX
CMP EAX,dword ptr [EBX + 0xffffff60]
JZ 0x0008de9c
TEST EAX,EAX
JZ 0x0008de9c
MOV dword ptr [EBX + 0x742c],0x0
MOV EBP,dword ptr [EAX + 0x4]
TEST EBP,EBP
JZ 0x0008d277
LEA EDX,[EBX + 0x7d7c]
CMP dword ptr [EDX],0x9
JZ 0x0008dac4
MOV EDX,0x1
JMP 0x0008d54d
SUB ESP,0xc
PUSH dword ptr [ESP + 0xc]
CALL 0x00041cf0
ADD ESP,0x10
TEST EAX,EAX
JNZ 0x0008d12b
SUB ESP,0xc
MOV EDI,dword ptr [ESP + 0xc]
PUSH EDI
CALL 0x0002f760
ADD EAX,0x1
MOV dword ptr [ESP],EAX
CALL 0x00099200
POP EDX
POP ECX
PUSH EDI
PUSH EAX
CALL 0x0002f580
MOV dword ptr [ESP],EAX
MOV ESI,EAX
MOV dword ptr [EBX + 0x7464],EAX
MOV dword ptr [EBX + 0x7468],EAX
CALL 0x0002f760
ADD ESP,0x10
MOV dword ptr [EBX + 0x7444],EAX
LEA EAX,[EBX + 0xd9b8]
MOV EDI,dword ptr [EAX]
TEST EDI,EDI
JZ 0x0008d310
LEA EAX,[EBX + 0xd9a8]
MOV EAX,dword ptr [EAX]
TEST EAX,EAX
JNZ 0x0008d310
SUB ESP,0x8
PUSH 0x0
PUSH ESI
CALL 0x00089940
ADD ESP,0x10
MOV dword ptr [EBX + 0x7468],EAX
LEA ESI,[ESI]
NOP
SUB ESP,0xc
LEA EAX,[EBX + 0xfffb77fa]
PUSH EAX
CALL 0x00052a60
ADD ESP,0x10
MOV dword ptr [EBX + 0x74ec],0x0
MOV dword ptr [EBX + 0x7434],EAX
MOV EAX,dword ptr [EBX + 0x7428]
MOV dword ptr [EBX + 0x7430],0x0
MOV dword ptr [EBX + 0x742c],0x0
TEST EAX,EAX
JZ 0x0008d35c
SUB ESP,0xc
PUSH EAX
CALL 0x0002f200
ADD ESP,0x10
CALL 0x00053c20
MOV dword ptr [EBX + 0x7428],EAX
MOV EAX,dword ptr [EBX + 0x7424]
TEST EAX,EAX
JZ 0x0008d37d
SUB ESP,0xc
PUSH EAX
CALL 0x0002f200
ADD ESP,0x10
CALL 0x00081420
MOV dword ptr [EBX + 0x7424],EAX
LEA ESI,[ESI]
NOP
MOV ESI,dword ptr [EBX + 0x745c]
CMP ESI,0x1
JZ 0x0008d948
JLE 0x0008d480
CMP ESI,0x2
JZ 0x0008d818
MOV EDI,dword ptr [EBX + 0x742c]
CMP ESI,0x3
JNZ 0x0008d521
LEA EAX,[EBX + 0xf84]
MOV EDX,dword ptr [EAX]
CMP EDI,EDX
JGE 0x0008d510
LEA ESI,[EBX + 0xf88]
MOV EAX,dword ptr [EBX + 0x7464]
MOV ECX,dword ptr [EBX + 0x7444]
MOV ESI,dword ptr [ESI]
MOV dword ptr [ESP + 0x4],EAX
LEA EAX,[EDI + EDI*0x2]
LEA ESI,[ESI + EAX*0x8]
JMP 0x0008d404
ADD EDI,0x1
ADD ESI,0x18
MOV dword ptr [EBX + 0x742c],EDI
CMP EDI,EDX
JZ 0x0008d510
MOV EBP,dword ptr [ESI + 0x4]
TEST EBP,EBP
JZ 0x0008d3f0
TEST byte ptr [ESI + 0x8],0x1
JZ 0x0008d3f0
MOV EBP,dword ptr [ESI]
TEST ECX,ECX
JZ 0x0008d448
MOV EAX,dword ptr [ESP + 0x4]
MOVZX EAX,byte ptr [EAX]
CMP byte ptr [EBP],AL
JNZ 0x0008d3f0
MOV dword ptr [ESP + 0xc],EDX
SUB ESP,0x4
PUSH ECX
MOV dword ptr [ESP + 0x10],ECX
PUSH dword ptr [ESP + 0xc]
PUSH EBP
CALL 0x0002fc30
ADD ESP,0x10
MOV ECX,dword ptr [ESP + 0x8]
MOV EDX,dword ptr [ESP + 0xc]
TEST EAX,EAX
JNZ 0x0008d3f0
ADD EDI,0x1
MOV dword ptr [EBX + 0x742c],EDI
SUB ESP,0xc
PUSH EBP
CALL 0x0002f760
ADD EAX,0x1
MOV dword ptr [ESP],EAX
CALL 0x00099200
POP EDX
POP ECX
PUSH EBP
PUSH EAX
CALL 0x0002f580
ADD ESP,0x10
MOV EBP,EAX
JMP 0x0008d5c8
TEST ESI,ESI
JNZ 0x0008d521
MOV EAX,dword ptr [EBX + 0x7450]
MOV EDX,dword ptr [EBX + 0x7424]
MOV dword ptr [ESP + 0xc],ESI
MOV ECX,dword ptr [EBX + 0x7464]
MOV EDI,dword ptr [EBX + 0x7444]
MOV dword ptr [ESP + 0x4],EAX
MOV EBP,EDX
MOV ESI,ECX
LEA ESI,[ESI]
TEST EBP,EBP
JZ 0x0008dd68
MOV EAX,dword ptr [EBX + 0x742c]
MOV EDX,dword ptr [EBP + EAX*0x4]
TEST EDX,EDX
JZ 0x0008dd68
ADD EAX,0x1
MOV EDX,dword ptr [EDX]
MOV dword ptr [EBX + 0x742c],EAX
MOV EAX,dword ptr [ESP + 0x4]
TEST EAX,EAX
JNZ 0x0008da38
TEST EDI,EDI
JZ 0x0008d506
MOVZX EAX,byte ptr [ESI]
CMP byte ptr [EDX],AL
JNZ 0x0008d4b0
SUB ESP,0x4
PUSH EDI
PUSH ESI
PUSH EDX
MOV dword ptr [ESP + 0x18],EDX
CALL 0x0002fc30
ADD ESP,0x10
MOV EDX,dword ptr [ESP + 0x8]
TEST EAX,EAX
JNZ 0x0008d4b0
MOV EBP,EDX
JMP 0x0008d451
ADD dword ptr [EBX + 0x745c],0x1
MOV dword ptr [EBX + 0x742c],0x0
MOV EAX,dword ptr [EBX + 0x744c]
TEST EAX,EAX
JZ 0x0008d5e8
MOV EAX,dword ptr [ESP + 0x44]
TEST EAX,EAX
JZ 0x0008d218
MOV EAX,dword ptr [EBX + 0x742c]
MOV ECX,dword ptr [EBX + 0x74d4]
LEA EDX,[EAX + 0x1]
LEA EAX,[ECX + EAX*0x4]
MOV EAX,dword ptr [EAX]
MOV dword ptr [EBX + 0x742c],EDX
MOV dword ptr [EBX + 0x7454],EAX
TEST EAX,EAX
JNZ 0x0008d59f
JMP 0x0008db60
SUB ESP,0xc
PUSH dword ptr [EBX + 0x7454]
CALL 0x0002f200
MOV EAX,dword ptr [EBX + 0x742c]
ADD ESP,0x10
LEA EDX,[EAX + 0x1]
MOV dword ptr [EBX + 0x742c],EDX
MOV EDX,dword ptr [EBX + 0x74d4]
MOV EAX,dword ptr [EDX + EAX*0x4]
MOV dword ptr [EBX + 0x7454],EAX
TEST EAX,EAX
JZ 0x0008db60
SUB ESP,0xc
PUSH EAX
CALL 0x000935c0
ADD ESP,0x10
TEST EAX,EAX
JZ 0x0008d568
MOV EAX,dword ptr [ESP]
MOV EBP,dword ptr [EBX + 0x7454]
CMP byte ptr [EAX],0x7e
JZ 0x0008de2c
LEA ESI,[ESI]
MOV ECX,dword ptr [ESP + 0x1c]
XOR ECX,dword ptr GS:[0x14]
MOV EAX,EBP
JNZ 0x0008dead
ADD ESP,0x2c
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOV EDI,dword ptr [EBX + 0x7458]
TEST EDI,EDI
JNZ 0x0008dd90
MOV EDX,dword ptr [EBX + 0x7454]
XOR EAX,EAX
TEST EDX,EDX
SETNZ AL
MOV dword ptr [EBX + 0x7438],EAX
JZ 0x0008db78
MOV ESI,dword ptr [EBX + 0x743c]
LEA ECX,[EBX + 0x7da0]
MOV dword ptr [ESP + 0x8],ECX
LEA ECX,[EBX + 0x7d9c]
MOV dword ptr [ESP + 0xc],ECX
JMP 0x0008d749
MOV ESI,dword ptr [EBX + 0x7450]
MOV EDI,dword ptr [EBX + 0x7454]
MOV EDX,dword ptr [EBX + 0x7444]
MOV EAX,dword ptr [EBX + 0x7464]
TEST ESI,ESI
JNZ 0x0008da08
SUB ESP,0x4
PUSH EDX
PUSH EAX
PUSH EDI
CALL 0x0002fc30
ADD ESP,0x10
TEST EAX,EAX
SETZ AL
MOVZX EAX,AL
MOV ESI,EAX
MOV EAX,dword ptr [ESP]
CMP byte ptr [EAX],0x7e
JZ 0x0008da80
SUB ESP,0xc
PUSH EDI
CALL 0x0002f760
ADD EAX,0x1
MOV dword ptr [ESP],EAX
CALL 0x00099200
POP EDX
POP ECX
PUSH EDI
PUSH EAX
CALL 0x0002f580
ADD ESP,0x10
MOV EDI,dword ptr [EBX + 0x7454]
MOV EBP,EAX
TEST ESI,ESI
JZ 0x0008da9d
SUB ESP,0xc
MOV ESI,dword ptr [EBX + 0x7460]
PUSH EDI
CALL 0x0002f760
ADD EAX,0x1
MOV dword ptr [ESP],EAX
CALL 0x00099200
POP EDX
POP ECX
PUSH EDI
PUSH EAX
CALL 0x0002f580
MOV dword ptr [ESP + 0x28],EAX
POP EAX
LEA EAX,[ESP + 0x24]
PUSH EAX
CALL 0x0008c7b0
ADD ESP,0x10
TEST ESI,ESI
JZ 0x0008da20
SUB ESP,0xc
PUSH dword ptr [ESP + 0x24]
CALL 0x00093560
ADD ESP,0x10
MOV dword ptr [ESP + 0x4],EAX
SUB ESP,0xc
PUSH dword ptr [ESP + 0x24]
CALL 0x0002f200
ADD ESP,0x10
MOV EAX,dword ptr [ESP + 0x4]
MOV ESI,dword ptr [EBX + 0x7454]
TEST EAX,EAX
JNZ 0x0008db30
SUB ESP,0xc
PUSH EBP
CALL 0x0002f200
ADD ESP,0x10
CMP EDI,ESI
JZ 0x0008d731
SUB ESP,0xc
PUSH EDI
CALL 0x0002f200
ADD ESP,0x10
SUB ESP,0xc
PUSH ESI
CALL 0x0002f200
MOV EAX,dword ptr [EBX + 0x7438]
MOV ESI,dword ptr [EBX + 0x743c]
ADD ESP,0x10
SUB ESP,0x8
PUSH EAX
PUSH ESI
CALL 0x000ccb40
ADD ESP,0x10
CMP dword ptr [EBX + 0x745c],0x4
MOV dword ptr [EBX + 0x7454],EAX
JZ 0x0008d9b0
MOV dword ptr [EBX + 0x7438],0x1
MOV EDX,dword ptr [EBX + 0x7464]
TEST EAX,EAX
JZ 0x0008dab0
SUB ESP,0xc
PUSH EDX
CALL 0x00041cf0
ADD ESP,0x10
TEST EAX,EAX
JNZ 0x0008d630
MOV ESI,dword ptr [EBX + 0x7454]
SUB ESP,0x8
PUSH 0x2f
PUSH ESI
CALL 0x0002fab0
ADD ESP,0x10
TEST EAX,EAX
JZ 0x0008d731
MOV EBP,dword ptr [EBX + 0x7450]
LEA EDI,[EAX + 0x1]
MOV EDX,dword ptr [EBX + 0x7444]
MOV EAX,dword ptr [EBX + 0x7464]
TEST EBP,EBP
JNZ 0x0008da60
SUB ESP,0x4
PUSH EDX
PUSH EAX
PUSH EDI
CALL 0x0002fc30
ADD ESP,0x10
TEST EAX,EAX
SETZ AL
MOVZX EAX,AL
TEST EAX,EAX
JZ 0x0008d731
SUB ESP,0xc
PUSH EDI
CALL 0x0002f760
ADD EAX,0x1
MOV dword ptr [ESP],EAX
CALL 0x00099200
POP EDX
POP ECX
PUSH EDI
PUSH EAX
CALL 0x0002f580
MOV EDI,dword ptr [EBX + 0x7454]
ADD ESP,0x10
MOV EBP,EAX
JMP 0x0008d6a4
MOV EDI,dword ptr [EBX + 0x7444]
MOV ECX,dword ptr [EBX + 0x7464]
MOV EAX,dword ptr [EBX + 0x7450]
MOV EBP,dword ptr [EBX + 0x7428]
MOV ESI,ECX
MOV dword ptr [ESP + 0x4],EAX
LEA ESI,[ESI]
LEA ESI,[ESI]
TEST EBP,EBP
JZ 0x0008db10
MOV EAX,dword ptr [EBX + 0x742c]
MOV EDX,dword ptr [EBP + EAX*0x4]
TEST EDX,EDX
JZ 0x0008db10
ADD EAX,0x1
MOV EDX,dword ptr [EDX]
MOV dword ptr [EBX + 0x742c],EAX
MOV EAX,dword ptr [ESP + 0x4]
TEST EAX,EAX
JNZ 0x0008d9e0
TEST EDI,EDI
JZ 0x0008d8a0
MOVZX EAX,byte ptr [ESI]
CMP byte ptr [EDX],AL
JNZ 0x0008d840
SUB ESP,0x4
PUSH EDI
PUSH ESI
PUSH EDX
MOV dword ptr [ESP + 0x18],EDX
CALL 0x0002fc30
ADD ESP,0x10
MOV EDX,dword ptr [ESP + 0x8]
TEST EAX,EAX
JNZ 0x0008d840
LEA ESI,[ESI]
LEA ESI,[ESI]
SUB ESP,0xc
MOV ESI,EDX
PUSH EDX
CALL 0x0002f760
ADD EAX,0x1
MOV dword ptr [ESP],EAX
CALL 0x00099200
POP EDX
POP ECX
PUSH ESI
PUSH EAX
CALL 0x0002f580
ADD ESP,0x10
MOV EBP,EAX
JMP 0x0008d5c8
SUB ESP,0xc
PUSH EAX
CALL 0x00099200
POP ESI
POP EBP
PUSH EDI
PUSH EAX
CALL 0x0002f580
MOV dword ptr [EBX + 0x7464],EAX
LEA EAX,[EBX + 0x7464]
MOV dword ptr [ESP],EAX
CALL 0x0008c7b0
MOV ESI,dword ptr [EBX + 0x7464]
ADD ESP,0x10
JMP 0x0008d178
SUB ESP,0xc
MOV EDI,dword ptr [ESP + 0xc]
PUSH EDI
CALL 0x00041cf0
ADD ESP,0x10
TEST EAX,EAX
JNZ 0x0008d0c0
CMP byte ptr [EDI],0x7e
JZ 0x0008d0c0
SUB ESP,0xc
PUSH EDI
CALL 0x0008ac10
ADD ESP,0x10
TEST EAX,EAX
SETNZ AL
MOVZX EAX,AL
JMP 0x0008d0c2
MOV EDI,dword ptr [EBX + 0x7444]
MOV ECX,dword ptr [EBX + 0x7464]
MOV ESI,dword ptr [EBX + 0x742c]
LEA EDX,[EBX + 0x4e0]
MOV EBP,dword ptr [EDX + ESI*0x8]
TEST EBP,EBP
JZ 0x0008dcd0
ADD ESI,0x1
MOV dword ptr [EBX + 0x742c],ESI
TEST EDI,EDI
JZ 0x0008d451
MOVZX EAX,byte ptr [ECX]
CMP byte ptr [EBP],AL
JNZ 0x0008d960
MOV dword ptr [ESP + 0x8],EDX
SUB ESP,0x4
PUSH EDI
PUSH ECX
MOV dword ptr [ESP + 0x10],ECX
PUSH EBP
CALL 0x0002fc30
ADD ESP,0x10
MOV ECX,dword ptr [ESP + 0x4]
MOV EDX,dword ptr [ESP + 0x8]
TEST EAX,EAX
JNZ 0x0008d960
JMP 0x0008d451
MOV EDI,dword ptr [EBX + 0x7408]
TEST EDI,EDI
JZ 0x0008d769
MOV ECX,dword ptr [ESP + 0x8]
LEA EDX,[EBX + 0xfff427b0]
MOV dword ptr [ECX],EDX
MOV ECX,dword ptr [ESP + 0xc]
MOV dword ptr [ECX],0x0
JMP 0x0008d769
SUB ESP,0x4
PUSH EDI
PUSH ESI
PUSH EDX
MOV dword ptr [ESP + 0x18],EDX
CALL 0x0002f990
ADD ESP,0x10
MOV EDX,dword ptr [ESP + 0x8]
TEST EAX,EAX
JNZ 0x0008d840
JMP 0x0008d8a0
SUB ESP,0x4
PUSH EDX
PUSH EAX
PUSH EDI
CALL 0x0002f990
JMP 0x0008d65b
SUB ESP,0xc
PUSH dword ptr [ESP + 0x24]
CALL 0x000935c0
ADD ESP,0x10
JMP 0x0008d6f0
SUB ESP,0x4
PUSH EDI
PUSH ESI
PUSH EDX
MOV dword ptr [ESP + 0x18],EDX
CALL 0x0002f990
ADD ESP,0x10
MOV EDX,dword ptr [ESP + 0x8]
TEST EAX,EAX
JNZ 0x0008d4b0
MOV EBP,EDX
JMP 0x0008d451
SUB ESP,0x4
PUSH EDX
PUSH EAX
PUSH EDI
CALL 0x0002f990
ADD ESP,0x10
TEST EAX,EAX
SETZ AL
MOVZX EAX,AL
JMP 0x0008d7e0
MOV EDX,dword ptr [EBX + 0x7448]
MOV EAX,EDI
CALL 0x0008a220
MOV EDI,dword ptr [EBX + 0x7454]
MOV EBP,EAX
TEST ESI,ESI
JNZ 0x0008d6a4
SUB ESP,0xc
MOV ESI,EDI
PUSH EBP
CALL 0x0002f200
ADD ESP,0x10
JMP 0x0008d731
SUB ESP,0xc
PUSH EDX
CALL 0x00041cf0
ADD ESP,0x10
TEST EAX,EAX
JZ 0x0008d5f6
XOR EBP,EBP
JMP 0x0008d5c8
MOV EAX,dword ptr [EBX + 0x7408]
TEST EAX,EAX
JNZ 0x0008dd20
MOV dword ptr [EBX + 0x745c],0x4
JMP 0x0008d615
CMP byte ptr [EAX + 0x1],0x6e
JNZ 0x0008d0ef
XOR EDX,EDX
CMP byte ptr [EAX + 0x2],0x0
SETZ DL
JMP 0x0008d0ef
MOV dword ptr [EBX + 0x742c],0x0
XOR EDI,EDI
ADD dword ptr [EBX + 0x745c],0x1
JMP 0x0008d3bd
CMP EDI,ESI
JZ 0x0008db40
SUB ESP,0xc
PUSH EDI
CALL 0x0002f200
ADD ESP,0x10
SUB ESP,0xc
PUSH ESI
CALL 0x0002f200
LEA EAX,[EBX + 0xfffbc524]
ADD ESP,0x10
MOV dword ptr [EBX + 0x7454],EAX
JMP 0x0008d5c8
LEA EAX,[EBX + 0x7868]
XOR EBP,EBP
MOV dword ptr [EAX],0x0
JMP 0x0008d5c8
MOV EAX,dword ptr [EBX + 0x7434]
TEST EAX,EAX
JZ 0x0008dac4
MOV EDX,dword ptr [EBX + 0x7430]
CMP byte ptr [EAX + EDX*0x1],0x0
JZ 0x0008dac4
SUB ESP,0x8
LEA EDX,[EBX + 0x7430]
PUSH EDX
PUSH EAX
CALL 0x000420f0
ADD ESP,0x10
MOV EDI,EAX
TEST EAX,EAX
JZ 0x0008dac4
MOV dword ptr [EBX + 0x7460],0x1
MOVZX EDX,byte ptr [EAX]
TEST DL,DL
JZ 0x0008ddde
CMP DL,0x7e
JZ 0x0008de0a
CMP DL,0x2e
JZ 0x0008ddc5
MOV EAX,dword ptr [EBX + 0x743c]
MOV ESI,dword ptr [EBX + 0x7440]
TEST EAX,EAX
JZ 0x0008dbfe
CMP EAX,ESI
JZ 0x0008de5f
SUB ESP,0xc
PUSH EAX
CALL 0x0002f200
ADD ESP,0x10
TEST ESI,ESI
JNZ 0x0008de5f
SUB ESP,0x4
PUSH 0x0
PUSH dword ptr [EBX + 0x7464]
PUSH EDI
CALL 0x000bd760
POP EBP
MOV ESI,EAX
MOV dword ptr [EBX + 0x7440],EAX
POP EAX
LEA EAX,[EBX + 0xfffa7cb5]
PUSH EAX
PUSH ESI
CALL 0x0002fa50
ADD ESP,0x10
TEST EAX,EAX
JZ 0x0008de70
SUB ESP,0x4
LEA EAX,[EBX + 0x7500]
PUSH 0x0
PUSH EAX
PUSH ESI
CALL 0x000bfc30
ADD ESP,0x10
MOV dword ptr [EBX + 0x743c],EAX
MOV ESI,EAX
SUB ESP,0xc
PUSH EDI
CALL 0x0002f200
MOV EAX,dword ptr [EBX + 0x7438]
ADD ESP,0x10
JMP 0x0008d615
SUB ESP,0x8
PUSH 0x0
MOV EDI,dword ptr [ESP + 0xc]
PUSH EDI
CALL 0x000423e0
MOV dword ptr [ESP],EDI
MOV dword ptr [EBX + 0x7464],EAX
CALL 0x0002f760
ADD EAX,0x1
MOV dword ptr [ESP],EAX
CALL 0x00099200
POP ECX
POP ESI
PUSH EDI
PUSH EAX
CALL 0x0002f580
POP EDI
POP EBP
PUSH 0x2f
PUSH EAX
MOV ESI,EAX
MOV dword ptr [EBX + 0x7448],EAX
CALL 0x0002f730
ADD ESP,0x10
TEST EAX,EAX
JZ 0x0008de7b
MOV byte ptr [EAX],0x0
MOV ESI,dword ptr [EBX + 0x7464]
JMP 0x0008d178
MOV dword ptr [EBX + 0x742c],0x0
ADD dword ptr [EBX + 0x745c],0x1
JMP 0x0008d824
SUB ESP,0x8
PUSH 0x0
PUSH ESI
CALL 0x00089940
POP EDI
PUSH dword ptr [EBX + 0x7464]
MOV ESI,EAX
MOV dword ptr [EBX + 0x7468],EAX
CALL 0x0002f200
MOV dword ptr [EBX + 0x7464],ESI
ADD ESP,0x10
JMP 0x0008d19a
SUB ESP,0xc
PUSH ESI
CALL 0x00041c30
ADD ESP,0x10
TEST EAX,EAX
JZ 0x0008dd54
LEA EAX,[EBX + 0x7d9c]
LEA EDX,[EBX + 0xfff427b0]
MOV dword ptr [EBX + 0x7408],0x1
MOV dword ptr [EAX],EDX
LEA EAX,[EBX + 0x7da0]
MOV dword ptr [EAX],0x0
MOV EAX,dword ptr [EBX + 0x7438]
MOV ESI,dword ptr [EBX + 0x743c]
JMP 0x0008dade
MOV dword ptr [EBX + 0x742c],0x0
MOV ECX,ESI
MOV ESI,dword ptr [ESP + 0xc]
MOV dword ptr [EBX + 0x745c],0x1
JMP 0x0008d95a
MOV dword ptr [EBX + 0x7458],0x0
SUB ESP,0xc
MOV EDI,dword ptr [ESP + 0xc]
PUSH EDI
CALL 0x0002f760
ADD EAX,0x1
MOV dword ptr [ESP],EAX
CALL 0x00099200
POP ECX
POP ESI
PUSH EDI
PUSH EAX
CALL 0x0002f580
ADD ESP,0x10
MOV EBP,EAX
JMP 0x0008d5c8
CMP byte ptr [EDI + 0x1],0x0
JNZ 0x0008dbda
MOV dword ptr [EBX + 0x74ec],0x1
JMP 0x0008dbda
SUB ESP,0xc
PUSH EAX
CALL 0x0002f200
MOV dword ptr [ESP],0x2
CALL 0x00099200
MOV EDX,0x2e
ADD ESP,0x10
MOV word ptr [EAX],DX
MOV EDI,EAX
MOV EDX,0x2e
JMP 0x0008dbc8
SUB ESP,0x8
PUSH 0x0
PUSH EDI
CALL 0x000423e0
MOV dword ptr [ESP],EDI
MOV ESI,EAX
CALL 0x0002f200
MOV EDI,ESI
MOVZX EDX,byte ptr [ESI]
ADD ESP,0x10
JMP 0x0008dbd1
MOV EDX,dword ptr [EBX + 0x7448]
TEST EDX,EDX
JZ 0x0008d5c8
MOV EAX,EBP
CALL 0x0008a220
SUB ESP,0xc
PUSH dword ptr [EBX + 0x7454]
MOV EBP,EAX
CALL 0x0002f200
MOV dword ptr [EBX + 0x7454],EBP
ADD ESP,0x10
JMP 0x0008d5c8
SUB ESP,0xc
PUSH ESI
CALL 0x0002f200
ADD ESP,0x10
JMP 0x0008dc06
MOV dword ptr [EBX + 0x743c],ESI
JMP 0x0008dc56
SUB ESP,0xc
PUSH ESI
CALL 0x0002f200
MOV ESI,dword ptr [EBX + 0x7464]
ADD ESP,0x10
MOV dword ptr [EBX + 0x7448],0x0
JMP 0x0008d178
MOV dword ptr [EBX + 0x74d4],0x0
XOR EBP,EBP
JMP 0x0008d5c8
CALL 0x000ecc40
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nchar * command_word_completion_function(char *param_1,int param_2)\n\n{\n  void *pvVar1;\n  int iVar2;\n  char *pcVar3;\n  size_t sVar4;\n  char *pcVar5;\n  undefined4 *puVar6;\n  int iVar7;\n  uint uVar8;\n  int iVar9;\n  char *pcVar10;\n  char cVar11;\n  int in_GS_OFFSET;\n  char *local_24;\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x8d029;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  if (param_2 == 0) {\n    rl_filename_stat_hook = FUN_0008f310;\n    if (DAT_00151468 == (char *)0x0) {\nLAB_0008d085:\n      if (DAT_00151464 != (char *)0x0) goto LAB_0008d089;\n    }\n    else {\n      if (DAT_00151468 != DAT_00151464) {\n        free(DAT_00151468);\n        goto LAB_0008d085;\n      }\nLAB_0008d089:\n      free(DAT_00151464);\n    }\n    DAT_00151460 = 0;\n    DAT_0015145c = 0;\n    iVar2 = absolute_pathname(param_1);\n    if (((iVar2 == 0) && (iVar2 = absolute_program(param_1), iVar2 == 0)) && (*param_1 != '~')) {\n      iVar2 = FUN_0008ac10(param_1);\n      DAT_00151458 = (uint)(iVar2 != 0);\n    }\n    else {\n      DAT_00151458 = 0;\n    }\n    DAT_00151454 = (char *)0x0;\n    pcVar3 = (char *)rl_variable_value("completion-ignore-case");\n    DAT_00151450 = 0;\n    if ((*pcVar3 == 'o') && (pcVar3[1] == 'n')) {\n      DAT_00151450 = (uint)(pcVar3[2] == '\0');\n    }\n    if (DAT_001514d4 != (undefined4 *)0x0) {\n      free(DAT_001514d4);\n      DAT_001514d4 = (undefined4 *)0x0;\n    }\n    DAT_0015144c = FUN_0008cd10();\n    if ((DAT_0015144c == 0) && (iVar2 = absolute_program(param_1), iVar2 == 0)) {\n      sVar4 = strlen(param_1);\n      pcVar3 = (char *)xmalloc(sVar4 + 1);\n      pcVar3 = strcpy(pcVar3,param_1);\n      DAT_00151464 = pcVar3;\n      DAT_00151468 = pcVar3;\n      DAT_00151444 = strlen(pcVar3);\n      if ((rl_completion_found_quote != 0) && (rl_completion_quote_character == 0)) {\n        DAT_00151468 = (char *)FUN_00089940(pcVar3,0);\n      }\n      DAT_00151434 = get_string_value("PATH");\n      DAT_001514ec = 0;\n      DAT_00151430 = 0;\n      DAT_0015142c = 0;\n      if (DAT_00151428 != (void *)0x0) {\n        free(DAT_00151428);\n      }\n      DAT_00151428 = (void *)all_visible_functions();\n      if (DAT_00151424 != (void *)0x0) {\n        free(DAT_00151424);\n      }\n      DAT_00151424 = (void *)all_aliases();\n      goto LAB_0008d390;\n    }\n    if (*param_1 == '~') {\n      DAT_00151464 = (char *)bash_tilde_expand(param_1,0);\n      sVar4 = strlen(param_1);\n      pcVar3 = (char *)xmalloc(sVar4 + 1);\n      pcVar3 = strcpy(pcVar3,param_1);\n      DAT_00151448 = pcVar3;\n      pcVar5 = strchr(pcVar3,0x2f);\n      if (pcVar5 == (char *)0x0) {\n        free(pcVar3);\n        DAT_00151448 = (char *)0x0;\n      }\n      else {\n        *pcVar5 = '\0';\n      }\n    }\n    else {\n      sVar4 = strlen(param_1);\n      if (dircomplete_expand == 0) {\n        pcVar3 = (char *)xmalloc(sVar4 + 1);\n        DAT_00151464 = strcpy(pcVar3,param_1);\n      }\n      else {\n        pcVar3 = (char *)xmalloc(sVar4 + 1);\n        DAT_00151464 = strcpy(pcVar3,param_1);\n        FUN_0008c7b0(&DAT_00151464);\n      }\n    }\n    DAT_00151468 = DAT_00151464;\n    if ((rl_completion_found_quote != 0) && (rl_completion_quote_character == 0)) {\n      pcVar3 = (char *)FUN_00089940(DAT_00151464,0);\n      DAT_00151468 = pcVar3;\n      free(DAT_00151464);\n      DAT_00151464 = pcVar3;\n    }\n    pcVar3 = DAT_00151464;\n    DAT_00151444 = strlen(DAT_00151464);\n    if (DAT_00151440 != (char *)0x0) {\n      free(DAT_00151440);\n      pcVar3 = DAT_00151464;\n    }\n    sVar4 = strlen(pcVar3);\n    pcVar5 = (char *)xmalloc(sVar4 + 1);\n    DAT_0015143c = strcpy(pcVar5,pcVar3);\n    DAT_00151438 = 0;\n    DAT_00151440 = DAT_0015143c;\n    if (DAT_0015144c == 0) {\n      uVar8 = dircomplete_expand;\n      if ((dircomplete_expand != 0) &&\n         (iVar2 = path_dot_or_dotdot(DAT_0015143c), uVar8 = DAT_00151438, iVar2 != 0)) {\n        dircomplete_expand = 1;\n        rl_directory_rewrite_hook = FUN_0008c7b0;\n        rl_directory_completion_hook = (code *)0x0;\n      }\n      DAT_0015145c = 4;\n      pcVar3 = DAT_0015143c;\n      do {\n        do {\n          while( true ) {\n            DAT_00151454 = (char *)rl_filename_completion_function(pcVar3,uVar8);\n            if ((DAT_0015145c == 4) && (dircomplete_expand != 0)) {\n              rl_directory_completion_hook = FUN_0008c7b0;\n              rl_directory_rewrite_hook = (code *)0x0;\n            }\n            DAT_00151438 = 1;\n            if (DAT_00151454 == (char *)0x0) break;\n            iVar2 = absolute_program(DAT_00151464);\n            pcVar5 = DAT_00151454;\n            if (iVar2 == 0) {\n              pcVar3 = strrchr(DAT_00151454,0x2f);\n              if (pcVar3 != (char *)0x0) {\n                pcVar3 = pcVar3 + 1;\n                if (DAT_00151450 == 0) {\n                  iVar2 = strncmp(pcVar3,DAT_00151464,DAT_00151444);\n                }\n                else {\n                  iVar2 = strncasecmp(pcVar3,DAT_00151464,DAT_00151444);\n                }\n                if (iVar2 == 0) {\n                  sVar4 = strlen(pcVar3);\n                  pcVar5 = (char *)xmalloc(sVar4 + 1);\n                  pcVar3 = strcpy(pcVar5,pcVar3);\n                  goto LAB_0008d6a4;\n                }\n              }\n            }\n            else {\n              if (DAT_00151450 == 0) {\n                iVar2 = strncmp(DAT_00151454,DAT_00151464,DAT_00151444);\n              }\n              else {\n                iVar2 = strncasecmp(DAT_00151454,DAT_00151464,DAT_00151444);\n              }\n              if (*param_1 == '~') {\n                pcVar3 = (char *)FUN_0008a220();\n              }\n              else {\n                sVar4 = strlen(pcVar5);\n                pcVar3 = (char *)xmalloc(sVar4 + 1);\n                pcVar3 = strcpy(pcVar3,pcVar5);\n              }\n              pcVar5 = DAT_00151454;\n              if (iVar2 == 0) {\nLAB_0008d6a4:\n                iVar2 = DAT_00151460;\n                pcVar10 = DAT_00151454;\n                sVar4 = strlen(DAT_00151454);\n                pcVar5 = (char *)xmalloc(sVar4 + 1);\n                local_24 = strcpy(pcVar5,pcVar10);\n                FUN_0008c7b0(&local_24);\n                if (iVar2 == 0) {\n                  iVar2 = executable_or_directory(local_24);\n                }\n                else {\n                  iVar2 = executable_file(local_24);\n                }\n                free(local_24);\n                pcVar5 = DAT_00151454;\n                if (iVar2 != 0) {\n                  if (pcVar10 != DAT_00151454) {\n                    free(pcVar10);\n                  }\n                  free(pcVar5);\n                  DAT_00151454 = "";\n                  goto LAB_0008d5c8;\n                }\n                free(pcVar3);\n                if (pcVar10 != pcVar5) {\n                  free(pcVar10);\n                }\n              }\n              else {\n                free(pcVar3);\n              }\n            }\n            free(pcVar5);\n            uVar8 = DAT_00151438;\n            pcVar3 = DAT_0015143c;\n          }\n          iVar2 = absolute_program(DAT_00151464);\n          if (iVar2 != 0) goto LAB_0008dac4;\nLAB_0008d5f6:\n          uVar8 = (uint)(DAT_00151454 != (char *)0x0);\n          pcVar3 = DAT_0015143c;\n          DAT_00151438 = uVar8;\n        } while (DAT_00151454 != (char *)0x0);\n        if (((DAT_00151434 == 0) || (*(char *)(DAT_00151434 + DAT_00151430) == '\0')) ||\n           (pcVar3 = (char *)extract_colon_unit(DAT_00151434,&DAT_00151430), pcVar3 == (char *)0x0))\n        goto LAB_0008dac4;\n        DAT_00151460 = 1;\n        cVar11 = *pcVar3;\n        if (cVar11 == '\0') {\n          free(pcVar3);\n          pcVar3 = (char *)xmalloc(2);\n          pcVar3[0] = '.';\n          pcVar3[1] = '\0';\n          cVar11 = '.';\n        }\n        pcVar5 = pcVar3;\n        if (cVar11 == '~') {\n          pcVar5 = (char *)bash_tilde_expand(pcVar3,0);\n          free(pcVar3);\n          cVar11 = *pcVar5;\n        }\n        pcVar3 = DAT_00151440;\n        if ((cVar11 == '.') && (pcVar5[1] == '\0')) {\n          DAT_001514ec = 1;\n        }\n        if (DAT_0015143c == (char *)0x0) {\nLAB_0008dbfe:\n          if (pcVar3 != (char *)0x0) goto LAB_0008de5f;\n        }\n        else {\n          if (DAT_0015143c != DAT_00151440) {\n            free(DAT_0015143c);\n            goto LAB_0008dbfe;\n          }\nLAB_0008de5f:\n          free(pcVar3);\n        }\n        pcVar3 = (char *)sh_makepath(pcVar5,DAT_00151464,0);\n        DAT_00151440 = pcVar3;\n        pcVar10 = strpbrk(pcVar3,"\"\'\\");\n        if (pcVar10 != (char *)0x0) {\n          pcVar3 = (char *)sh_backslash_quote(pcVar3,&DAT_00151500,0);\n        }\n        DAT_0015143c = pcVar3;\n        free(pcVar5);\n        uVar8 = DAT_00151438;\n      } while( true );\n    }\n    DAT_0015145c = 5;\nLAB_0008d218:\n    glob_ignore_case = DAT_00151450;\n    puVar6 = (undefined4 *)shell_glob_filename(DAT_00151464);\n    glob_ignore_case = 0;\n    if ((puVar6 == (undefined4 *)PTR_glob_error_return_00149f60) || (puVar6 == (undefined4 *)0x0)) {\n      DAT_001514d4 = (undefined4 *)0x0;\n      pcVar3 = (char *)0x0;\n      goto LAB_0008d5c8;\n    }\n    DAT_0015142c = 0;\n    DAT_001514d4 = puVar6;\n    if ((puVar6[1] != 0) && (rl_completion_type == 9)) {\nLAB_0008dac4:\n      pcVar3 = (char *)0x0;\n      goto LAB_0008d5c8;\n    }\n    iVar2 = 1;\n  }\n  else {\nLAB_0008d390:\n    pcVar3 = DAT_00151464;\n    uVar8 = DAT_00151450;\n    sVar4 = DAT_00151444;\n    pvVar1 = DAT_00151424;\n    iVar2 = DAT_0015142c;\n    if (DAT_0015145c == 1) {\nLAB_0008d960:\n      do {\n        pcVar5 = (&word_token_alist)[iVar2 * 2];\n        if (pcVar5 == (char *)0x0) {\n          DAT_0015142c = 0;\n          DAT_0015145c = DAT_0015145c + 1;\n          uVar8 = DAT_00151450;\n          pvVar1 = DAT_00151428;\n          goto LAB_0008d840;\n        }\n        iVar2 = iVar2 + 1;\n        DAT_0015142c = iVar2;\n      } while ((sVar4 != 0) &&\n              ((*pcVar5 != *pcVar3 || (iVar9 = strncmp(pcVar5,pcVar3,sVar4), iVar9 != 0))));\nLAB_0008d451:\n      sVar4 = strlen(pcVar5);\n      pcVar3 = (char *)xmalloc(sVar4 + 1);\n      pcVar3 = strcpy(pcVar3,pcVar5);\n      goto LAB_0008d5c8;\n    }\n    if (DAT_0015145c < 2) {\n      if (DAT_0015145c == 0) {\n        do {\n          while( true ) {\n            if ((pvVar1 == (void *)0x0) ||\n               (puVar6 = *(undefined4 **)((int)pvVar1 + DAT_0015142c * 4),\n               puVar6 == (undefined4 *)0x0)) {\n              DAT_0015145c = 1;\n              iVar2 = 0;\n              goto LAB_0008d960;\n            }\n            DAT_0015142c = DAT_0015142c + 1;\n            pcVar5 = (char *)*puVar6;\n            if (uVar8 != 0) break;\n            if ((sVar4 == 0) ||\n               ((*pcVar5 == *pcVar3 && (iVar2 = strncmp(pcVar5,pcVar3,sVar4), iVar2 == 0))))\n            goto LAB_0008d451;\n          }\n          iVar2 = strncasecmp(pcVar5,pcVar3,sVar4);\n        } while (iVar2 != 0);\n        goto LAB_0008d451;\n      }\n    }\n    else {\n      pvVar1 = DAT_00151428;\n      if (DAT_0015145c == 2) {\nLAB_0008d840:\n        do {\n          if ((pvVar1 == (void *)0x0) ||\n             (puVar6 = *(undefined4 **)((int)pvVar1 + DAT_0015142c * 4), puVar6 == (undefined4 *)0x0\n             )) {\n            DAT_0015142c = 0;\n            DAT_0015145c = DAT_0015145c + 1;\n            goto LAB_0008d3bd;\n          }\n          DAT_0015142c = DAT_0015142c + 1;\n          pcVar5 = (char *)*puVar6;\n          if (uVar8 == 0) {\n            if ((sVar4 == 0) ||\n               ((*pcVar5 == *pcVar3 && (iVar2 = strncmp(pcVar5,pcVar3,sVar4), iVar2 == 0)))) break;\n            goto LAB_0008d840;\n          }\n          iVar2 = strncasecmp(pcVar5,pcVar3,sVar4);\n        } while (iVar2 != 0);\n        sVar4 = strlen(pcVar5);\n        pcVar3 = (char *)xmalloc(sVar4 + 1);\n        pcVar3 = strcpy(pcVar3,pcVar5);\n        goto LAB_0008d5c8;\n      }\n      if (DAT_0015145c == 3) {\nLAB_0008d3bd:\n        pcVar3 = DAT_00151464;\n        sVar4 = DAT_00151444;\n        iVar2 = num_shell_builtins;\n        if (DAT_0015142c < num_shell_builtins) {\n          puVar6 = (undefined4 *)(shell_builtins + DAT_0015142c * 0x18);\n          do {\n            iVar9 = DAT_0015142c;\n            if (((puVar6[1] != 0) && ((*(byte *)(puVar6 + 2) & 1) != 0)) &&\n               ((pcVar5 = (char *)*puVar6, sVar4 == 0 ||\n                ((*pcVar5 == *pcVar3 && (iVar7 = strncmp(pcVar5,pcVar3,sVar4), iVar7 == 0)))))) {\n              DAT_0015142c = iVar9 + 1;\n              goto LAB_0008d451;\n            }\n            DAT_0015142c = iVar9 + 1;\n            puVar6 = puVar6 + 6;\n          } while (DAT_0015142c != iVar2);\n        }\n        DAT_0015145c = DAT_0015145c + 1;\n        DAT_0015142c = 0;\n      }\n    }\n    if (DAT_0015144c == 0) {\n      if (DAT_00151458 == 0) goto LAB_0008d5f6;\n      DAT_00151458 = 0;\n      sVar4 = strlen(param_1);\n      pcVar3 = (char *)xmalloc(sVar4 + 1);\n      pcVar3 = strcpy(pcVar3,param_1);\n      goto LAB_0008d5c8;\n    }\n    if (param_2 == 0) goto LAB_0008d218;\n    iVar2 = DAT_0015142c + 1;\n    puVar6 = DAT_001514d4 + DAT_0015142c;\n  }\n  DAT_00151454 = (char *)*puVar6;\n  DAT_0015142c = iVar2;\n  while (DAT_00151454 != (char *)0x0) {\n    iVar2 = executable_or_directory(DAT_00151454);\n    if (iVar2 != 0) {\n      pcVar3 = DAT_00151454;\n      if ((*param_1 == '~') && (DAT_00151448 != (char *)0x0)) {\n        pcVar3 = (char *)FUN_0008a220();\n        free(DAT_00151454);\n        DAT_00151454 = pcVar3;\n      }\n      goto LAB_0008d5c8;\n    }\n    free(DAT_00151454);\n    DAT_00151454 = (char *)DAT_001514d4[DAT_0015142c];\n    DAT_0015142c = DAT_0015142c + 1;\n  }\n  glob_ignore_case = 0;\n  pcVar3 = (char *)0x0;\nLAB_0008d5c8:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    FUN_000ecc40();\n  }\n  return pcVar3;\n}\n\n" comment (function_definition "char * command_word_completion_function(char *param_1,int param_2)\n\n{\n  void *pvVar1;\n  int iVar2;\n  char *pcVar3;\n  size_t sVar4;\n  char *pcVar5;\n  undefined4 *puVar6;\n  int iVar7;\n  uint uVar8;\n  int iVar9;\n  char *pcVar10;\n  char cVar11;\n  int in_GS_OFFSET;\n  char *local_24;\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x8d029;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  if (param_2 == 0) {\n    rl_filename_stat_hook = FUN_0008f310;\n    if (DAT_00151468 == (char *)0x0) {\nLAB_0008d085:\n      if (DAT_00151464 != (char *)0x0) goto LAB_0008d089;\n    }\n    else {\n      if (DAT_00151468 != DAT_00151464) {\n        free(DAT_00151468);\n        goto LAB_0008d085;\n      }\nLAB_0008d089:\n      free(DAT_00151464);\n    }\n    DAT_00151460 = 0;\n    DAT_0015145c = 0;\n    iVar2 = absolute_pathname(param_1);\n    if (((iVar2 == 0) && (iVar2 = absolute_program(param_1), iVar2 == 0)) && (*param_1 != '~')) {\n      iVar2 = FUN_0008ac10(param_1);\n      DAT_00151458 = (uint)(iVar2 != 0);\n    }\n    else {\n      DAT_00151458 = 0;\n    }\n    DAT_00151454 = (char *)0x0;\n    pcVar3 = (char *)rl_variable_value("completion-ignore-case");\n    DAT_00151450 = 0;\n    if ((*pcVar3 == 'o') && (pcVar3[1] == 'n')) {\n      DAT_00151450 = (uint)(pcVar3[2] == '\0');\n    }\n    if (DAT_001514d4 != (undefined4 *)0x0) {\n      free(DAT_001514d4);\n      DAT_001514d4 = (undefined4 *)0x0;\n    }\n    DAT_0015144c = FUN_0008cd10();\n    if ((DAT_0015144c == 0) && (iVar2 = absolute_program(param_1), iVar2 == 0)) {\n      sVar4 = strlen(param_1);\n      pcVar3 = (char *)xmalloc(sVar4 + 1);\n      pcVar3 = strcpy(pcVar3,param_1);\n      DAT_00151464 = pcVar3;\n      DAT_00151468 = pcVar3;\n      DAT_00151444 = strlen(pcVar3);\n      if ((rl_completion_found_quote != 0) && (rl_completion_quote_character == 0)) {\n        DAT_00151468 = (char *)FUN_00089940(pcVar3,0);\n      }\n      DAT_00151434 = get_string_value("PATH");\n      DAT_001514ec = 0;\n      DAT_00151430 = 0;\n      DAT_0015142c = 0;\n      if (DAT_00151428 != (void *)0x0) {\n        free(DAT_00151428);\n      }\n      DAT_00151428 = (void *)all_visible_functions();\n      if (DAT_00151424 != (void *)0x0) {\n        free(DAT_00151424);\n      }\n      DAT_00151424 = (void *)all_aliases();\n      goto LAB_0008d390;\n    }\n    if (*param_1 == '~') {\n      DAT_00151464 = (char *)bash_tilde_expand(param_1,0);\n      sVar4 = strlen(param_1);\n      pcVar3 = (char *)xmalloc(sVar4 + 1);\n      pcVar3 = strcpy(pcVar3,param_1);\n      DAT_00151448 = pcVar3;\n      pcVar5 = strchr(pcVar3,0x2f);\n      if (pcVar5 == (char *)0x0) {\n        free(pcVar3);\n        DAT_00151448 = (char *)0x0;\n      }\n      else {\n        *pcVar5 = '\0';\n      }\n    }\n    else {\n      sVar4 = strlen(param_1);\n      if (dircomplete_expand == 0) {\n        pcVar3 = (char *)xmalloc(sVar4 + 1);\n        DAT_00151464 = strcpy(pcVar3,param_1);\n      }\n      else {\n        pcVar3 = (char *)xmalloc(sVar4 + 1);\n        DAT_00151464 = strcpy(pcVar3,param_1);\n        FUN_0008c7b0(&DAT_00151464);\n      }\n    }\n    DAT_00151468 = DAT_00151464;\n    if ((rl_completion_found_quote != 0) && (rl_completion_quote_character == 0)) {\n      pcVar3 = (char *)FUN_00089940(DAT_00151464,0);\n      DAT_00151468 = pcVar3;\n      free(DAT_00151464);\n      DAT_00151464 = pcVar3;\n    }\n    pcVar3 = DAT_00151464;\n    DAT_00151444 = strlen(DAT_00151464);\n    if (DAT_00151440 != (char *)0x0) {\n      free(DAT_00151440);\n      pcVar3 = DAT_00151464;\n    }\n    sVar4 = strlen(pcVar3);\n    pcVar5 = (char *)xmalloc(sVar4 + 1);\n    DAT_0015143c = strcpy(pcVar5,pcVar3);\n    DAT_00151438 = 0;\n    DAT_00151440 = DAT_0015143c;\n    if (DAT_0015144c == 0) {\n      uVar8 = dircomplete_expand;\n      if ((dircomplete_expand != 0) &&\n         (iVar2 = path_dot_or_dotdot(DAT_0015143c), uVar8 = DAT_00151438, iVar2 != 0)) {\n        dircomplete_expand = 1;\n        rl_directory_rewrite_hook = FUN_0008c7b0;\n        rl_directory_completion_hook = (code *)0x0;\n      }\n      DAT_0015145c = 4;\n      pcVar3 = DAT_0015143c;\n      do {\n        do {\n          while( true ) {\n            DAT_00151454 = (char *)rl_filename_completion_function(pcVar3,uVar8);\n            if ((DAT_0015145c == 4) && (dircomplete_expand != 0)) {\n              rl_directory_completion_hook = FUN_0008c7b0;\n              rl_directory_rewrite_hook = (code *)0x0;\n            }\n            DAT_00151438 = 1;\n            if (DAT_00151454 == (char *)0x0) break;\n            iVar2 = absolute_program(DAT_00151464);\n            pcVar5 = DAT_00151454;\n            if (iVar2 == 0) {\n              pcVar3 = strrchr(DAT_00151454,0x2f);\n              if (pcVar3 != (char *)0x0) {\n                pcVar3 = pcVar3 + 1;\n                if (DAT_00151450 == 0) {\n                  iVar2 = strncmp(pcVar3,DAT_00151464,DAT_00151444);\n                }\n                else {\n                  iVar2 = strncasecmp(pcVar3,DAT_00151464,DAT_00151444);\n                }\n                if (iVar2 == 0) {\n                  sVar4 = strlen(pcVar3);\n                  pcVar5 = (char *)xmalloc(sVar4 + 1);\n                  pcVar3 = strcpy(pcVar5,pcVar3);\n                  goto LAB_0008d6a4;\n                }\n              }\n            }\n            else {\n              if (DAT_00151450 == 0) {\n                iVar2 = strncmp(DAT_00151454,DAT_00151464,DAT_00151444);\n              }\n              else {\n                iVar2 = strncasecmp(DAT_00151454,DAT_00151464,DAT_00151444);\n              }\n              if (*param_1 == '~') {\n                pcVar3 = (char *)FUN_0008a220();\n              }\n              else {\n                sVar4 = strlen(pcVar5);\n                pcVar3 = (char *)xmalloc(sVar4 + 1);\n                pcVar3 = strcpy(pcVar3,pcVar5);\n              }\n              pcVar5 = DAT_00151454;\n              if (iVar2 == 0) {\nLAB_0008d6a4:\n                iVar2 = DAT_00151460;\n                pcVar10 = DAT_00151454;\n                sVar4 = strlen(DAT_00151454);\n                pcVar5 = (char *)xmalloc(sVar4 + 1);\n                local_24 = strcpy(pcVar5,pcVar10);\n                FUN_0008c7b0(&local_24);\n                if (iVar2 == 0) {\n                  iVar2 = executable_or_directory(local_24);\n                }\n                else {\n                  iVar2 = executable_file(local_24);\n                }\n                free(local_24);\n                pcVar5 = DAT_00151454;\n                if (iVar2 != 0) {\n                  if (pcVar10 != DAT_00151454) {\n                    free(pcVar10);\n                  }\n                  free(pcVar5);\n                  DAT_00151454 = "";\n                  goto LAB_0008d5c8;\n                }\n                free(pcVar3);\n                if (pcVar10 != pcVar5) {\n                  free(pcVar10);\n                }\n              }\n              else {\n                free(pcVar3);\n              }\n            }\n            free(pcVar5);\n            uVar8 = DAT_00151438;\n            pcVar3 = DAT_0015143c;\n          }\n          iVar2 = absolute_program(DAT_00151464);\n          if (iVar2 != 0) goto LAB_0008dac4;\nLAB_0008d5f6:\n          uVar8 = (uint)(DAT_00151454 != (char *)0x0);\n          pcVar3 = DAT_0015143c;\n          DAT_00151438 = uVar8;\n        } while (DAT_00151454 != (char *)0x0);\n        if (((DAT_00151434 == 0) || (*(char *)(DAT_00151434 + DAT_00151430) == '\0')) ||\n           (pcVar3 = (char *)extract_colon_unit(DAT_00151434,&DAT_00151430), pcVar3 == (char *)0x0))\n        goto LAB_0008dac4;\n        DAT_00151460 = 1;\n        cVar11 = *pcVar3;\n        if (cVar11 == '\0') {\n          free(pcVar3);\n          pcVar3 = (char *)xmalloc(2);\n          pcVar3[0] = '.';\n          pcVar3[1] = '\0';\n          cVar11 = '.';\n        }\n        pcVar5 = pcVar3;\n        if (cVar11 == '~') {\n          pcVar5 = (char *)bash_tilde_expand(pcVar3,0);\n          free(pcVar3);\n          cVar11 = *pcVar5;\n        }\n        pcVar3 = DAT_00151440;\n        if ((cVar11 == '.') && (pcVar5[1] == '\0')) {\n          DAT_001514ec = 1;\n        }\n        if (DAT_0015143c == (char *)0x0) {\nLAB_0008dbfe:\n          if (pcVar3 != (char *)0x0) goto LAB_0008de5f;\n        }\n        else {\n          if (DAT_0015143c != DAT_00151440) {\n            free(DAT_0015143c);\n            goto LAB_0008dbfe;\n          }\nLAB_0008de5f:\n          free(pcVar3);\n        }\n        pcVar3 = (char *)sh_makepath(pcVar5,DAT_00151464,0);\n        DAT_00151440 = pcVar3;\n        pcVar10 = strpbrk(pcVar3,"\"\'\\");\n        if (pcVar10 != (char *)0x0) {\n          pcVar3 = (char *)sh_backslash_quote(pcVar3,&DAT_00151500,0);\n        }\n        DAT_0015143c = pcVar3;\n        free(pcVar5);\n        uVar8 = DAT_00151438;\n      } while( true );\n    }\n    DAT_0015145c = 5;\nLAB_0008d218:\n    glob_ignore_case = DAT_00151450;\n    puVar6 = (undefined4 *)shell_glob_filename(DAT_00151464);\n    glob_ignore_case = 0;\n    if ((puVar6 == (undefined4 *)PTR_glob_error_return_00149f60) || (puVar6 == (undefined4 *)0x0)) {\n      DAT_001514d4 = (undefined4 *)0x0;\n      pcVar3 = (char *)0x0;\n      goto LAB_0008d5c8;\n    }\n    DAT_0015142c = 0;\n    DAT_001514d4 = puVar6;\n    if ((puVar6[1] != 0) && (rl_completion_type == 9)) {\nLAB_0008dac4:\n      pcVar3 = (char *)0x0;\n      goto LAB_0008d5c8;\n    }\n    iVar2 = 1;\n  }\n  else {\nLAB_0008d390:\n    pcVar3 = DAT_00151464;\n    uVar8 = DAT_00151450;\n    sVar4 = DAT_00151444;\n    pvVar1 = DAT_00151424;\n    iVar2 = DAT_0015142c;\n    if (DAT_0015145c == 1) {\nLAB_0008d960:\n      do {\n        pcVar5 = (&word_token_alist)[iVar2 * 2];\n        if (pcVar5 == (char *)0x0) {\n          DAT_0015142c = 0;\n          DAT_0015145c = DAT_0015145c + 1;\n          uVar8 = DAT_00151450;\n          pvVar1 = DAT_00151428;\n          goto LAB_0008d840;\n        }\n        iVar2 = iVar2 + 1;\n        DAT_0015142c = iVar2;\n      } while ((sVar4 != 0) &&\n              ((*pcVar5 != *pcVar3 || (iVar9 = strncmp(pcVar5,pcVar3,sVar4), iVar9 != 0))));\nLAB_0008d451:\n      sVar4 = strlen(pcVar5);\n      pcVar3 = (char *)xmalloc(sVar4 + 1);\n      pcVar3 = strcpy(pcVar3,pcVar5);\n      goto LAB_0008d5c8;\n    }\n    if (DAT_0015145c < 2) {\n      if (DAT_0015145c == 0) {\n        do {\n          while( true ) {\n            if ((pvVar1 == (void *)0x0) ||\n               (puVar6 = *(undefined4 **)((int)pvVar1 + DAT_0015142c * 4),\n               puVar6 == (undefined4 *)0x0)) {\n              DAT_0015145c = 1;\n              iVar2 = 0;\n              goto LAB_0008d960;\n            }\n            DAT_0015142c = DAT_0015142c + 1;\n            pcVar5 = (char *)*puVar6;\n            if (uVar8 != 0) break;\n            if ((sVar4 == 0) ||\n               ((*pcVar5 == *pcVar3 && (iVar2 = strncmp(pcVar5,pcVar3,sVar4), iVar2 == 0))))\n            goto LAB_0008d451;\n          }\n          iVar2 = strncasecmp(pcVar5,pcVar3,sVar4);\n        } while (iVar2 != 0);\n        goto LAB_0008d451;\n      }\n    }\n    else {\n      pvVar1 = DAT_00151428;\n      if (DAT_0015145c == 2) {\nLAB_0008d840:\n        do {\n          if ((pvVar1 == (void *)0x0) ||\n             (puVar6 = *(undefined4 **)((int)pvVar1 + DAT_0015142c * 4), puVar6 == (undefined4 *)0x0\n             )) {\n            DAT_0015142c = 0;\n            DAT_0015145c = DAT_0015145c + 1;\n            goto LAB_0008d3bd;\n          }\n          DAT_0015142c = DAT_0015142c + 1;\n          pcVar5 = (char *)*puVar6;\n          if (uVar8 == 0) {\n            if ((sVar4 == 0) ||\n               ((*pcVar5 == *pcVar3 && (iVar2 = strncmp(pcVar5,pcVar3,sVar4), iVar2 == 0)))) break;\n            goto LAB_0008d840;\n          }\n          iVar2 = strncasecmp(pcVar5,pcVar3,sVar4);\n        } while (iVar2 != 0);\n        sVar4 = strlen(pcVar5);\n        pcVar3 = (char *)xmalloc(sVar4 + 1);\n        pcVar3 = strcpy(pcVar3,pcVar5);\n        goto LAB_0008d5c8;\n      }\n      if (DAT_0015145c == 3) {\nLAB_0008d3bd:\n        pcVar3 = DAT_00151464;\n        sVar4 = DAT_00151444;\n        iVar2 = num_shell_builtins;\n        if (DAT_0015142c < num_shell_builtins) {\n          puVar6 = (undefined4 *)(shell_builtins + DAT_0015142c * 0x18);\n          do {\n            iVar9 = DAT_0015142c;\n            if (((puVar6[1] != 0) && ((*(byte *)(puVar6 + 2) & 1) != 0)) &&\n               ((pcVar5 = (char *)*puVar6, sVar4 == 0 ||\n                ((*pcVar5 == *pcVar3 && (iVar7 = strncmp(pcVar5,pcVar3,sVar4), iVar7 == 0)))))) {\n              DAT_0015142c = iVar9 + 1;\n              goto LAB_0008d451;\n            }\n            DAT_0015142c = iVar9 + 1;\n            puVar6 = puVar6 + 6;\n          } while (DAT_0015142c != iVar2);\n        }\n        DAT_0015145c = DAT_0015145c + 1;\n        DAT_0015142c = 0;\n      }\n    }\n    if (DAT_0015144c == 0) {\n      if (DAT_00151458 == 0) goto LAB_0008d5f6;\n      DAT_00151458 = 0;\n      sVar4 = strlen(param_1);\n      pcVar3 = (char *)xmalloc(sVar4 + 1);\n      pcVar3 = strcpy(pcVar3,param_1);\n      goto LAB_0008d5c8;\n    }\n    if (param_2 == 0) goto LAB_0008d218;\n    iVar2 = DAT_0015142c + 1;\n    puVar6 = DAT_001514d4 + DAT_0015142c;\n  }\n  DAT_00151454 = (char *)*puVar6;\n  DAT_0015142c = iVar2;\n  while (DAT_00151454 != (char *)0x0) {\n    iVar2 = executable_or_directory(DAT_00151454);\n    if (iVar2 != 0) {\n      pcVar3 = DAT_00151454;\n      if ((*param_1 == '~') && (DAT_00151448 != (char *)0x0)) {\n        pcVar3 = (char *)FUN_0008a220();\n        free(DAT_00151454);\n        DAT_00151454 = pcVar3;\n      }\n      goto LAB_0008d5c8;\n    }\n    free(DAT_00151454);\n    DAT_00151454 = (char *)DAT_001514d4[DAT_0015142c];\n    DAT_0015142c = DAT_0015142c + 1;\n  }\n  glob_ignore_case = 0;\n  pcVar3 = (char *)0x0;\nLAB_0008d5c8:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    FUN_000ecc40();\n  }\n  return pcVar3;\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  void *pvVar1;\n  int iVar2;\n  char *pcVar3;\n  size_t sVar4;\n  char *pcVar5;\n  undefined4 *puVar6;\n  int iVar7;\n  uint uVar8;\n  int iVar9;\n  char *pcVar10;\n  char cVar11;\n  int in_GS_OFFSET;\n  char *local_24;\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x8d029;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  if (param_2 == 0) {\n    rl_filename_stat_hook = FUN_0008f310;\n    if (DAT_00151468 == (char *)0x0) {\nLAB_0008d085:\n      if (DAT_00151464 != (char *)0x0) goto LAB_0008d089;\n    }\n    else {\n      if (DAT_00151468 != DAT_00151464) {\n        free(DAT_00151468);\n        goto LAB_0008d085;\n      }\nLAB_0008d089:\n      free(DAT_00151464);\n    }\n    DAT_00151460 = 0;\n    DAT_0015145c = 0;\n    iVar2 = absolute_pathname(param_1);\n    if (((iVar2 == 0) && (iVar2 = absolute_program(param_1), iVar2 == 0)) && (*param_1 != '~')) {\n      iVar2 = FUN_0008ac10(param_1);\n      DAT_00151458 = (uint)(iVar2 != 0);\n    }\n    else {\n      DAT_00151458 = 0;\n    }\n    DAT_00151454 = (char *)0x0;\n    pcVar3 = (char *)rl_variable_value("completion-ignore-case");\n    DAT_00151450 = 0;\n    if ((*pcVar3 == 'o') && (pcVar3[1] == 'n')) {\n      DAT_00151450 = (uint)(pcVar3[2] == '\0');\n    }\n    if (DAT_001514d4 != (undefined4 *)0x0) {\n      free(DAT_001514d4);\n      DAT_001514d4 = (undefined4 *)0x0;\n    }\n    DAT_0015144c = FUN_0008cd10();\n    if ((DAT_0015144c == 0) && (iVar2 = absolute_program(param_1), iVar2 == 0)) {\n      sVar4 = strlen(param_1);\n      pcVar3 = (char *)xmalloc(sVar4 + 1);\n      pcVar3 = strcpy(pcVar3,param_1);\n      DAT_00151464 = pcVar3;\n      DAT_00151468 = pcVar3;\n      DAT_00151444 = strlen(pcVar3);\n      if ((rl_completion_found_quote != 0) && (rl_completion_quote_character == 0)) {\n        DAT_00151468 = (char *)FUN_00089940(pcVar3,0);\n      }\n      DAT_00151434 = get_string_value("PATH");\n      DAT_001514ec = 0;\n      DAT_00151430 = 0;\n      DAT_0015142c = 0;\n      if (DAT_00151428 != (void *)0x0) {\n        free(DAT_00151428);\n      }\n      DAT_00151428 = (void *)all_visible_functions();\n      if (DAT_00151424 != (void *)0x0) {\n        free(DAT_00151424);\n      }\n      DAT_00151424 = (void *)all_aliases();\n      goto LAB_0008d390;\n    }\n    if (*param_1 == '~') {\n      DAT_00151464 = (char *)bash_tilde_expand(param_1,0);\n      sVar4 = strlen(param_1);\n      pcVar3 = (char *)xmalloc(sVar4 + 1);\n      pcVar3 = strcpy(pcVar3,param_1);\n      DAT_00151448 = pcVar3;\n      pcVar5 = strchr(pcVar3,0x2f);\n      if (pcVar5 == (char *)0x0) {\n        free(pcVar3);\n        DAT_00151448 = (char *)0x0;\n      }\n      else {\n        *pcVar5 = '\0';\n      }\n    }\n    else {\n      sVar4 = strlen(param_1);\n      if (dircomplete_expand == 0) {\n        pcVar3 = (char *)xmalloc(sVar4 + 1);\n        DAT_00151464 = strcpy(pcVar3,param_1);\n      }\n      else {\n        pcVar3 = (char *)xmalloc(sVar4 + 1);\n        DAT_00151464 = strcpy(pcVar3,param_1);\n        FUN_0008c7b0(&DAT_00151464);\n      }\n    }\n    DAT_00151468 = DAT_00151464;\n    if ((rl_completion_found_quote != 0) && (rl_completion_quote_character == 0)) {\n      pcVar3 = (char *)FUN_00089940(DAT_00151464,0);\n      DAT_00151468 = pcVar3;\n      free(DAT_00151464);\n      DAT_00151464 = pcVar3;\n    }\n    pcVar3 = DAT_00151464;\n    DAT_00151444 = strlen(DAT_00151464);\n    if (DAT_00151440 != (char *)0x0) {\n      free(DAT_00151440);\n      pcVar3 = DAT_00151464;\n    }\n    sVar4 = strlen(pcVar3);\n    pcVar5 = (char *)xmalloc(sVar4 + 1);\n    DAT_0015143c = strcpy(pcVar5,pcVar3);\n    DAT_00151438 = 0;\n    DAT_00151440 = DAT_0015143c;\n    if (DAT_0015144c == 0) {\n      uVar8 = dircomplete_expand;\n      if ((dircomplete_expand != 0) &&\n         (iVar2 = path_dot_or_dotdot(DAT_0015143c), uVar8 = DAT_00151438, iVar2 != 0)) {\n        dircomplete_expand = 1;\n        rl_directory_rewrite_hook = FUN_0008c7b0;\n        rl_directory_completion_hook = (code *)0x0;\n      }\n      DAT_0015145c = 4;\n      pcVar3 = DAT_0015143c;\n      do {\n        do {\n          while( true ) {\n            DAT_00151454 = (char *)rl_filename_completion_function(pcVar3,uVar8);\n            if ((DAT_0015145c == 4) && (dircomplete_expand != 0)) {\n              rl_directory_completion_hook = FUN_0008c7b0;\n              rl_directory_rewrite_hook = (code *)0x0;\n            }\n            DAT_00151438 = 1;\n            if (DAT_00151454 == (char *)0x0) break;\n            iVar2 = absolute_program(DAT_00151464);\n            pcVar5 = DAT_00151454;\n            if (iVar2 == 0) {\n              pcVar3 = strrchr(DAT_00151454,0x2f);\n              if (pcVar3 != (char *)0x0) {\n                pcVar3 = pcVar3 + 1;\n                if (DAT_00151450 == 0) {\n                  iVar2 = strncmp(pcVar3,DAT_00151464,DAT_00151444);\n                }\n                else {\n                  iVar2 = strncasecmp(pcVar3,DAT_00151464,DAT_00151444);\n                }\n                if (iVar2 == 0) {\n                  sVar4 = strlen(pcVar3);\n                  pcVar5 = (char *)xmalloc(sVar4 + 1);\n                  pcVar3 = strcpy(pcVar5,pcVar3);\n                  goto LAB_0008d6a4;\n                }\n              }\n            }\n            else {\n              if (DAT_00151450 == 0) {\n                iVar2 = strncmp(DAT_00151454,DAT_00151464,DAT_00151444);\n              }\n              else {\n                iVar2 = strncasecmp(DAT_00151454,DAT_00151464,DAT_00151444);\n              }\n              if (*param_1 == '~') {\n                pcVar3 = (char *)FUN_0008a220();\n              }\n              else {\n                sVar4 = strlen(pcVar5);\n                pcVar3 = (char *)xmalloc(sVar4 + 1);\n                pcVar3 = strcpy(pcVar3,pcVar5);\n              }\n              pcVar5 = DAT_00151454;\n              if (iVar2 == 0) {\nLAB_0008d6a4:\n                iVar2 = DAT_00151460;\n                pcVar10 = DAT_00151454;\n                sVar4 = strlen(DAT_00151454);\n                pcVar5 = (char *)xmalloc(sVar4 + 1);\n                local_24 = strcpy(pcVar5,pcVar10);\n                FUN_0008c7b0(&local_24);\n                if (iVar2 == 0) {\n                  iVar2 = executable_or_directory(local_24);\n                }\n                else {\n                  iVar2 = executable_file(local_24);\n                }\n                free(local_24);\n                pcVar5 = DAT_00151454;\n                if (iVar2 != 0) {\n                  if (pcVar10 != DAT_00151454) {\n                    free(pcVar10);\n                  }\n                  free(pcVar5);\n                  DAT_00151454 = "";\n                  goto LAB_0008d5c8;\n                }\n                free(pcVar3);\n                if (pcVar10 != pcVar5) {\n                  free(pcVar10);\n                }\n              }\n              else {\n                free(pcVar3);\n              }\n            }\n            free(pcVar5);\n            uVar8 = DAT_00151438;\n            pcVar3 = DAT_0015143c;\n          }\n          iVar2 = absolute_program(DAT_00151464);\n          if (iVar2 != 0) goto LAB_0008dac4;\nLAB_0008d5f6:\n          uVar8 = (uint)(DAT_00151454 != (char *)0x0);\n          pcVar3 = DAT_0015143c;\n          DAT_00151438 = uVar8;\n        } while (DAT_00151454 != (char *)0x0);\n        if (((DAT_00151434 == 0) || (*(char *)(DAT_00151434 + DAT_00151430) == '\0')) ||\n           (pcVar3 = (char *)extract_colon_unit(DAT_00151434,&DAT_00151430), pcVar3 == (char *)0x0))\n        goto LAB_0008dac4;\n        DAT_00151460 = 1;\n        cVar11 = *pcVar3;\n        if (cVar11 == '\0') {\n          free(pcVar3);\n          pcVar3 = (char *)xmalloc(2);\n          pcVar3[0] = '.';\n          pcVar3[1] = '\0';\n          cVar11 = '.';\n        }\n        pcVar5 = pcVar3;\n        if (cVar11 == '~') {\n          pcVar5 = (char *)bash_tilde_expand(pcVar3,0);\n          free(pcVar3);\n          cVar11 = *pcVar5;\n        }\n        pcVar3 = DAT_00151440;\n        if ((cVar11 == '.') && (pcVar5[1] == '\0')) {\n          DAT_001514ec = 1;\n        }\n        if (DAT_0015143c == (char *)0x0) {\nLAB_0008dbfe:\n          if (pcVar3 != (char *)0x0) goto LAB_0008de5f;\n        }\n        else {\n          if (DAT_0015143c != DAT_00151440) {\n            free(DAT_0015143c);\n            goto LAB_0008dbfe;\n          }\nLAB_0008de5f:\n          free(pcVar3);\n        }\n        pcVar3 = (char *)sh_makepath(pcVar5,DAT_00151464,0);\n        DAT_00151440 = pcVar3;\n        pcVar10 = strpbrk(pcVar3,"\"\'\\");\n        if (pcVar10 != (char *)0x0) {\n          pcVar3 = (char *)sh_backslash_quote(pcVar3,&DAT_00151500,0);\n        }\n        DAT_0015143c = pcVar3;\n        free(pcVar5);\n        uVar8 = DAT_00151438;\n      } while( true );\n    }\n    DAT_0015145c = 5;\nLAB_0008d218:\n    glob_ignore_case = DAT_00151450;\n    puVar6 = (undefined4 *)shell_glob_filename(DAT_00151464);\n    glob_ignore_case = 0;\n    if ((puVar6 == (undefined4 *)PTR_glob_error_return_00149f60) || (puVar6 == (undefined4 *)0x0)) {\n      DAT_001514d4 = (undefined4 *)0x0;\n      pcVar3 = (char *)0x0;\n      goto LAB_0008d5c8;\n    }\n    DAT_0015142c = 0;\n    DAT_001514d4 = puVar6;\n    if ((puVar6[1] != 0) && (rl_completion_type == 9)) {\nLAB_0008dac4:\n      pcVar3 = (char *)0x0;\n      goto LAB_0008d5c8;\n    }\n    iVar2 = 1;\n  }\n  else {\nLAB_0008d390:\n    pcVar3 = DAT_00151464;\n    uVar8 = DAT_00151450;\n    sVar4 = DAT_00151444;\n    pvVar1 = DAT_00151424;\n    iVar2 = DAT_0015142c;\n    if (DAT_0015145c == 1) {\nLAB_0008d960:\n      do {\n        pcVar5 = (&word_token_alist)[iVar2 * 2];\n        if (pcVar5 == (char *)0x0) {\n          DAT_0015142c = 0;\n          DAT_0015145c = DAT_0015145c + 1;\n          uVar8 = DAT_00151450;\n          pvVar1 = DAT_00151428;\n          goto LAB_0008d840;\n        }\n        iVar2 = iVar2 + 1;\n        DAT_0015142c = iVar2;\n      } while ((sVar4 != 0) &&\n              ((*pcVar5 != *pcVar3 || (iVar9 = strncmp(pcVar5,pcVar3,sVar4), iVar9 != 0))));\nLAB_0008d451:\n      sVar4 = strlen(pcVar5);\n      pcVar3 = (char *)xmalloc(sVar4 + 1);\n      pcVar3 = strcpy(pcVar3,pcVar5);\n      goto LAB_0008d5c8;\n    }\n    if (DAT_0015145c < 2) {\n      if (DAT_0015145c == 0) {\n        do {\n          while( true ) {\n            if ((pvVar1 == (void *)0x0) ||\n               (puVar6 = *(undefined4 **)((int)pvVar1 + DAT_0015142c * 4),\n               puVar6 == (undefined4 *)0x0)) {\n              DAT_0015145c = 1;\n              iVar2 = 0;\n              goto LAB_0008d960;\n            }\n            DAT_0015142c = DAT_0015142c + 1;\n            pcVar5 = (char *)*puVar6;\n            if (uVar8 != 0) break;\n            if ((sVar4 == 0) ||\n               ((*pcVar5 == *pcVar3 && (iVar2 = strncmp(pcVar5,pcVar3,sVar4), iVar2 == 0))))\n            goto LAB_0008d451;\n          }\n          iVar2 = strncasecmp(pcVar5,pcVar3,sVar4);\n        } while (iVar2 != 0);\n        goto LAB_0008d451;\n      }\n    }\n    else {\n      pvVar1 = DAT_00151428;\n      if (DAT_0015145c == 2) {\nLAB_0008d840:\n        do {\n          if ((pvVar1 == (void *)0x0) ||\n             (puVar6 = *(undefined4 **)((int)pvVar1 + DAT_0015142c * 4), puVar6 == (undefined4 *)0x0\n             )) {\n            DAT_0015142c = 0;\n            DAT_0015145c = DAT_0015145c + 1;\n            goto LAB_0008d3bd;\n          }\n          DAT_0015142c = DAT_0015142c + 1;\n          pcVar5 = (char *)*puVar6;\n          if (uVar8 == 0) {\n            if ((sVar4 == 0) ||\n               ((*pcVar5 == *pcVar3 && (iVar2 = strncmp(pcVar5,pcVar3,sVar4), iVar2 == 0)))) break;\n            goto LAB_0008d840;\n          }\n          iVar2 = strncasecmp(pcVar5,pcVar3,sVar4);\n        } while (iVar2 != 0);\n        sVar4 = strlen(pcVar5);\n        pcVar3 = (char *)xmalloc(sVar4 + 1);\n        pcVar3 = strcpy(pcVar3,pcVar5);\n        goto LAB_0008d5c8;\n      }\n      if (DAT_0015145c == 3) {\nLAB_0008d3bd:\n        pcVar3 = DAT_00151464;\n        sVar4 = DAT_00151444;\n        iVar2 = num_shell_builtins;\n        if (DAT_0015142c < num_shell_builtins) {\n          puVar6 = (undefined4 *)(shell_builtins + DAT_0015142c * 0x18);\n          do {\n            iVar9 = DAT_0015142c;\n            if (((puVar6[1] != 0) && ((*(byte *)(puVar6 + 2) & 1) != 0)) &&\n               ((pcVar5 = (char *)*puVar6, sVar4 == 0 ||\n                ((*pcVar5 == *pcVar3 && (iVar7 = strncmp(pcVar5,pcVar3,sVar4), iVar7 == 0)))))) {\n              DAT_0015142c = iVar9 + 1;\n              goto LAB_0008d451;\n            }\n            DAT_0015142c = iVar9 + 1;\n            puVar6 = puVar6 + 6;\n          } while (DAT_0015142c != iVar2);\n        }\n        DAT_0015145c = DAT_0015145c + 1;\n        DAT_0015142c = 0;\n      }\n    }\n    if (DAT_0015144c == 0) {\n      if (DAT_00151458 == 0) goto LAB_0008d5f6;\n      DAT_00151458 = 0;\n      sVar4 = strlen(param_1);\n      pcVar3 = (char *)xmalloc(sVar4 + 1);\n      pcVar3 = strcpy(pcVar3,param_1);\n      goto LAB_0008d5c8;\n    }\n    if (param_2 == 0) goto LAB_0008d218;\n    iVar2 = DAT_0015142c + 1;\n    puVar6 = DAT_001514d4 + DAT_0015142c;\n  }\n  DAT_00151454 = (char *)*puVar6;\n  DAT_0015142c = iVar2;\n  while (DAT_00151454 != (char *)0x0) {\n    iVar2 = executable_or_directory(DAT_00151454);\n    if (iVar2 != 0) {\n      pcVar3 = DAT_00151454;\n      if ((*param_1 == '~') && (DAT_00151448 != (char *)0x0)) {\n        pcVar3 = (char *)FUN_0008a220();\n        free(DAT_00151454);\n        DAT_00151454 = pcVar3;\n      }\n      goto LAB_0008d5c8;\n    }\n    free(DAT_00151454);\n    DAT_00151454 = (char *)DAT_001514d4[DAT_0015142c];\n    DAT_0015142c = DAT_0015142c + 1;\n  }\n  glob_ignore_case = 0;\n  pcVar3 = (char *)0x0;\nLAB_0008d5c8:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    FUN_000ecc40();\n  }\n  return pcVar3;\n}" { (declaration "void *pvVar1;" primitive_type (pointer_declarator "*pvVar1" * identifier) ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "char *pcVar3;" primitive_type (pointer_declarator "*pcVar3" * identifier) ;) (declaration "size_t sVar4;" primitive_type identifier ;) (declaration "char *pcVar5;" primitive_type (pointer_declarator "*pcVar5" * identifier) ;) (declaration "undefined4 *puVar6;" type_identifier (pointer_declarator "*puVar6" * identifier) ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "int iVar9;" primitive_type identifier ;) (declaration "char *pcVar10;" primitive_type (pointer_declarator "*pcVar10" * identifier) ;) (declaration "char cVar11;" primitive_type identifier ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "char *local_24;" primitive_type (pointer_declarator "*local_24" * identifier) ;) (declaration "int local_20;" primitive_type identifier ;) (declaration "undefined4 uStack_14;" type_identifier identifier ;) (expression_statement "uStack_14 = 0x8d029;" (assignment_expression "uStack_14 = 0x8d029" identifier = number_literal) ;) (expression_statement "local_20 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "local_20 = *(int *)(in_GS_OFFSET + 0x14)" identifier = (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) ;) (if_statement "if (param_2 == 0) {\n    rl_filename_stat_hook = FUN_0008f310;\n    if (DAT_00151468 == (char *)0x0) {\nLAB_0008d085:\n      if (DAT_00151464 != (char *)0x0) goto LAB_0008d089;\n    }\n    else {\n      if (DAT_00151468 != DAT_00151464) {\n        free(DAT_00151468);\n        goto LAB_0008d085;\n      }\nLAB_0008d089:\n      free(DAT_00151464);\n    }\n    DAT_00151460 = 0;\n    DAT_0015145c = 0;\n    iVar2 = absolute_pathname(param_1);\n    if (((iVar2 == 0) && (iVar2 = absolute_program(param_1), iVar2 == 0)) && (*param_1 != '~')) {\n      iVar2 = FUN_0008ac10(param_1);\n      DAT_00151458 = (uint)(iVar2 != 0);\n    }\n    else {\n      DAT_00151458 = 0;\n    }\n    DAT_00151454 = (char *)0x0;\n    pcVar3 = (char *)rl_variable_value("completion-ignore-case");\n    DAT_00151450 = 0;\n    if ((*pcVar3 == 'o') && (pcVar3[1] == 'n')) {\n      DAT_00151450 = (uint)(pcVar3[2] == '\0');\n    }\n    if (DAT_001514d4 != (undefined4 *)0x0) {\n      free(DAT_001514d4);\n      DAT_001514d4 = (undefined4 *)0x0;\n    }\n    DAT_0015144c = FUN_0008cd10();\n    if ((DAT_0015144c == 0) && (iVar2 = absolute_program(param_1), iVar2 == 0)) {\n      sVar4 = strlen(param_1);\n      pcVar3 = (char *)xmalloc(sVar4 + 1);\n      pcVar3 = strcpy(pcVar3,param_1);\n      DAT_00151464 = pcVar3;\n      DAT_00151468 = pcVar3;\n      DAT_00151444 = strlen(pcVar3);\n      if ((rl_completion_found_quote != 0) && (rl_completion_quote_character == 0)) {\n        DAT_00151468 = (char *)FUN_00089940(pcVar3,0);\n      }\n      DAT_00151434 = get_string_value("PATH");\n      DAT_001514ec = 0;\n      DAT_00151430 = 0;\n      DAT_0015142c = 0;\n      if (DAT_00151428 != (void *)0x0) {\n        free(DAT_00151428);\n      }\n      DAT_00151428 = (void *)all_visible_functions();\n      if (DAT_00151424 != (void *)0x0) {\n        free(DAT_00151424);\n      }\n      DAT_00151424 = (void *)all_aliases();\n      goto LAB_0008d390;\n    }\n    if (*param_1 == '~') {\n      DAT_00151464 = (char *)bash_tilde_expand(param_1,0);\n      sVar4 = strlen(param_1);\n      pcVar3 = (char *)xmalloc(sVar4 + 1);\n      pcVar3 = strcpy(pcVar3,param_1);\n      DAT_00151448 = pcVar3;\n      pcVar5 = strchr(pcVar3,0x2f);\n      if (pcVar5 == (char *)0x0) {\n        free(pcVar3);\n        DAT_00151448 = (char *)0x0;\n      }\n      else {\n        *pcVar5 = '\0';\n      }\n    }\n    else {\n      sVar4 = strlen(param_1);\n      if (dircomplete_expand == 0) {\n        pcVar3 = (char *)xmalloc(sVar4 + 1);\n        DAT_00151464 = strcpy(pcVar3,param_1);\n      }\n      else {\n        pcVar3 = (char *)xmalloc(sVar4 + 1);\n        DAT_00151464 = strcpy(pcVar3,param_1);\n        FUN_0008c7b0(&DAT_00151464);\n      }\n    }\n    DAT_00151468 = DAT_00151464;\n    if ((rl_completion_found_quote != 0) && (rl_completion_quote_character == 0)) {\n      pcVar3 = (char *)FUN_00089940(DAT_00151464,0);\n      DAT_00151468 = pcVar3;\n      free(DAT_00151464);\n      DAT_00151464 = pcVar3;\n    }\n    pcVar3 = DAT_00151464;\n    DAT_00151444 = strlen(DAT_00151464);\n    if (DAT_00151440 != (char *)0x0) {\n      free(DAT_00151440);\n      pcVar3 = DAT_00151464;\n    }\n    sVar4 = strlen(pcVar3);\n    pcVar5 = (char *)xmalloc(sVar4 + 1);\n    DAT_0015143c = strcpy(pcVar5,pcVar3);\n    DAT_00151438 = 0;\n    DAT_00151440 = DAT_0015143c;\n    if (DAT_0015144c == 0) {\n      uVar8 = dircomplete_expand;\n      if ((dircomplete_expand != 0) &&\n         (iVar2 = path_dot_or_dotdot(DAT_0015143c), uVar8 = DAT_00151438, iVar2 != 0)) {\n        dircomplete_expand = 1;\n        rl_directory_rewrite_hook = FUN_0008c7b0;\n        rl_directory_completion_hook = (code *)0x0;\n      }\n      DAT_0015145c = 4;\n      pcVar3 = DAT_0015143c;\n      do {\n        do {\n          while( true ) {\n            DAT_00151454 = (char *)rl_filename_completion_function(pcVar3,uVar8);\n            if ((DAT_0015145c == 4) && (dircomplete_expand != 0)) {\n              rl_directory_completion_hook = FUN_0008c7b0;\n              rl_directory_rewrite_hook = (code *)0x0;\n            }\n            DAT_00151438 = 1;\n            if (DAT_00151454 == (char *)0x0) break;\n            iVar2 = absolute_program(DAT_00151464);\n            pcVar5 = DAT_00151454;\n            if (iVar2 == 0) {\n              pcVar3 = strrchr(DAT_00151454,0x2f);\n              if (pcVar3 != (char *)0x0) {\n                pcVar3 = pcVar3 + 1;\n                if (DAT_00151450 == 0) {\n                  iVar2 = strncmp(pcVar3,DAT_00151464,DAT_00151444);\n                }\n                else {\n                  iVar2 = strncasecmp(pcVar3,DAT_00151464,DAT_00151444);\n                }\n                if (iVar2 == 0) {\n                  sVar4 = strlen(pcVar3);\n                  pcVar5 = (char *)xmalloc(sVar4 + 1);\n                  pcVar3 = strcpy(pcVar5,pcVar3);\n                  goto LAB_0008d6a4;\n                }\n              }\n            }\n            else {\n              if (DAT_00151450 == 0) {\n                iVar2 = strncmp(DAT_00151454,DAT_00151464,DAT_00151444);\n              }\n              else {\n                iVar2 = strncasecmp(DAT_00151454,DAT_00151464,DAT_00151444);\n              }\n              if (*param_1 == '~') {\n                pcVar3 = (char *)FUN_0008a220();\n              }\n              else {\n                sVar4 = strlen(pcVar5);\n                pcVar3 = (char *)xmalloc(sVar4 + 1);\n                pcVar3 = strcpy(pcVar3,pcVar5);\n              }\n              pcVar5 = DAT_00151454;\n              if (iVar2 == 0) {\nLAB_0008d6a4:\n                iVar2 = DAT_00151460;\n                pcVar10 = DAT_00151454;\n                sVar4 = strlen(DAT_00151454);\n                pcVar5 = (char *)xmalloc(sVar4 + 1);\n                local_24 = strcpy(pcVar5,pcVar10);\n                FUN_0008c7b0(&local_24);\n                if (iVar2 == 0) {\n                  iVar2 = executable_or_directory(local_24);\n                }\n                else {\n                  iVar2 = executable_file(local_24);\n                }\n                free(local_24);\n                pcVar5 = DAT_00151454;\n                if (iVar2 != 0) {\n                  if (pcVar10 != DAT_00151454) {\n                    free(pcVar10);\n                  }\n                  free(pcVar5);\n                  DAT_00151454 = "";\n                  goto LAB_0008d5c8;\n                }\n                free(pcVar3);\n                if (pcVar10 != pcVar5) {\n                  free(pcVar10);\n                }\n              }\n              else {\n                free(pcVar3);\n              }\n            }\n            free(pcVar5);\n            uVar8 = DAT_00151438;\n            pcVar3 = DAT_0015143c;\n          }\n          iVar2 = absolute_program(DAT_00151464);\n          if (iVar2 != 0) goto LAB_0008dac4;\nLAB_0008d5f6:\n          uVar8 = (uint)(DAT_00151454 != (char *)0x0);\n          pcVar3 = DAT_0015143c;\n          DAT_00151438 = uVar8;\n        } while (DAT_00151454 != (char *)0x0);\n        if (((DAT_00151434 == 0) || (*(char *)(DAT_00151434 + DAT_00151430) == '\0')) ||\n           (pcVar3 = (char *)extract_colon_unit(DAT_00151434,&DAT_00151430), pcVar3 == (char *)0x0))\n        goto LAB_0008dac4;\n        DAT_00151460 = 1;\n        cVar11 = *pcVar3;\n        if (cVar11 == '\0') {\n          free(pcVar3);\n          pcVar3 = (char *)xmalloc(2);\n          pcVar3[0] = '.';\n          pcVar3[1] = '\0';\n          cVar11 = '.';\n        }\n        pcVar5 = pcVar3;\n        if (cVar11 == '~') {\n          pcVar5 = (char *)bash_tilde_expand(pcVar3,0);\n          free(pcVar3);\n          cVar11 = *pcVar5;\n        }\n        pcVar3 = DAT_00151440;\n        if ((cVar11 == '.') && (pcVar5[1] == '\0')) {\n          DAT_001514ec = 1;\n        }\n        if (DAT_0015143c == (char *)0x0) {\nLAB_0008dbfe:\n          if (pcVar3 != (char *)0x0) goto LAB_0008de5f;\n        }\n        else {\n          if (DAT_0015143c != DAT_00151440) {\n            free(DAT_0015143c);\n            goto LAB_0008dbfe;\n          }\nLAB_0008de5f:\n          free(pcVar3);\n        }\n        pcVar3 = (char *)sh_makepath(pcVar5,DAT_00151464,0);\n        DAT_00151440 = pcVar3;\n        pcVar10 = strpbrk(pcVar3,"\"\'\\");\n        if (pcVar10 != (char *)0x0) {\n          pcVar3 = (char *)sh_backslash_quote(pcVar3,&DAT_00151500,0);\n        }\n        DAT_0015143c = pcVar3;\n        free(pcVar5);\n        uVar8 = DAT_00151438;\n      } while( true );\n    }\n    DAT_0015145c = 5;\nLAB_0008d218:\n    glob_ignore_case = DAT_00151450;\n    puVar6 = (undefined4 *)shell_glob_filename(DAT_00151464);\n    glob_ignore_case = 0;\n    if ((puVar6 == (undefined4 *)PTR_glob_error_return_00149f60) || (puVar6 == (undefined4 *)0x0)) {\n      DAT_001514d4 = (undefined4 *)0x0;\n      pcVar3 = (char *)0x0;\n      goto LAB_0008d5c8;\n    }\n    DAT_0015142c = 0;\n    DAT_001514d4 = puVar6;\n    if ((puVar6[1] != 0) && (rl_completion_type == 9)) {\nLAB_0008dac4:\n      pcVar3 = (char *)0x0;\n      goto LAB_0008d5c8;\n    }\n    iVar2 = 1;\n  }\n  else {\nLAB_0008d390:\n    pcVar3 = DAT_00151464;\n    uVar8 = DAT_00151450;\n    sVar4 = DAT_00151444;\n    pvVar1 = DAT_00151424;\n    iVar2 = DAT_0015142c;\n    if (DAT_0015145c == 1) {\nLAB_0008d960:\n      do {\n        pcVar5 = (&word_token_alist)[iVar2 * 2];\n        if (pcVar5 == (char *)0x0) {\n          DAT_0015142c = 0;\n          DAT_0015145c = DAT_0015145c + 1;\n          uVar8 = DAT_00151450;\n          pvVar1 = DAT_00151428;\n          goto LAB_0008d840;\n        }\n        iVar2 = iVar2 + 1;\n        DAT_0015142c = iVar2;\n      } while ((sVar4 != 0) &&\n              ((*pcVar5 != *pcVar3 || (iVar9 = strncmp(pcVar5,pcVar3,sVar4), iVar9 != 0))));\nLAB_0008d451:\n      sVar4 = strlen(pcVar5);\n      pcVar3 = (char *)xmalloc(sVar4 + 1);\n      pcVar3 = strcpy(pcVar3,pcVar5);\n      goto LAB_0008d5c8;\n    }\n    if (DAT_0015145c < 2) {\n      if (DAT_0015145c == 0) {\n        do {\n          while( true ) {\n            if ((pvVar1 == (void *)0x0) ||\n               (puVar6 = *(undefined4 **)((int)pvVar1 + DAT_0015142c * 4),\n               puVar6 == (undefined4 *)0x0)) {\n              DAT_0015145c = 1;\n              iVar2 = 0;\n              goto LAB_0008d960;\n            }\n            DAT_0015142c = DAT_0015142c + 1;\n            pcVar5 = (char *)*puVar6;\n            if (uVar8 != 0) break;\n            if ((sVar4 == 0) ||\n               ((*pcVar5 == *pcVar3 && (iVar2 = strncmp(pcVar5,pcVar3,sVar4), iVar2 == 0))))\n            goto LAB_0008d451;\n          }\n          iVar2 = strncasecmp(pcVar5,pcVar3,sVar4);\n        } while (iVar2 != 0);\n        goto LAB_0008d451;\n      }\n    }\n    else {\n      pvVar1 = DAT_00151428;\n      if (DAT_0015145c == 2) {\nLAB_0008d840:\n        do {\n          if ((pvVar1 == (void *)0x0) ||\n             (puVar6 = *(undefined4 **)((int)pvVar1 + DAT_0015142c * 4), puVar6 == (undefined4 *)0x0\n             )) {\n            DAT_0015142c = 0;\n            DAT_0015145c = DAT_0015145c + 1;\n            goto LAB_0008d3bd;\n          }\n          DAT_0015142c = DAT_0015142c + 1;\n          pcVar5 = (char *)*puVar6;\n          if (uVar8 == 0) {\n            if ((sVar4 == 0) ||\n               ((*pcVar5 == *pcVar3 && (iVar2 = strncmp(pcVar5,pcVar3,sVar4), iVar2 == 0)))) break;\n            goto LAB_0008d840;\n          }\n          iVar2 = strncasecmp(pcVar5,pcVar3,sVar4);\n        } while (iVar2 != 0);\n        sVar4 = strlen(pcVar5);\n        pcVar3 = (char *)xmalloc(sVar4 + 1);\n        pcVar3 = strcpy(pcVar3,pcVar5);\n        goto LAB_0008d5c8;\n      }\n      if (DAT_0015145c == 3) {\nLAB_0008d3bd:\n        pcVar3 = DAT_00151464;\n        sVar4 = DAT_00151444;\n        iVar2 = num_shell_builtins;\n        if (DAT_0015142c < num_shell_builtins) {\n          puVar6 = (undefined4 *)(shell_builtins + DAT_0015142c * 0x18);\n          do {\n            iVar9 = DAT_0015142c;\n            if (((puVar6[1] != 0) && ((*(byte *)(puVar6 + 2) & 1) != 0)) &&\n               ((pcVar5 = (char *)*puVar6, sVar4 == 0 ||\n                ((*pcVar5 == *pcVar3 && (iVar7 = strncmp(pcVar5,pcVar3,sVar4), iVar7 == 0)))))) {\n              DAT_0015142c = iVar9 + 1;\n              goto LAB_0008d451;\n            }\n            DAT_0015142c = iVar9 + 1;\n            puVar6 = puVar6 + 6;\n          } while (DAT_0015142c != iVar2);\n        }\n        DAT_0015145c = DAT_0015145c + 1;\n        DAT_0015142c = 0;\n      }\n    }\n    if (DAT_0015144c == 0) {\n      if (DAT_00151458 == 0) goto LAB_0008d5f6;\n      DAT_00151458 = 0;\n      sVar4 = strlen(param_1);\n      pcVar3 = (char *)xmalloc(sVar4 + 1);\n      pcVar3 = strcpy(pcVar3,param_1);\n      goto LAB_0008d5c8;\n    }\n    if (param_2 == 0) goto LAB_0008d218;\n    iVar2 = DAT_0015142c + 1;\n    puVar6 = DAT_001514d4 + DAT_0015142c;\n  }" if (parenthesized_expression "(param_2 == 0)" ( (binary_expression "param_2 == 0" identifier == number_literal) )) (compound_statement "{\n    rl_filename_stat_hook = FUN_0008f310;\n    if (DAT_00151468 == (char *)0x0) {\nLAB_0008d085:\n      if (DAT_00151464 != (char *)0x0) goto LAB_0008d089;\n    }\n    else {\n      if (DAT_00151468 != DAT_00151464) {\n        free(DAT_00151468);\n        goto LAB_0008d085;\n      }\nLAB_0008d089:\n      free(DAT_00151464);\n    }\n    DAT_00151460 = 0;\n    DAT_0015145c = 0;\n    iVar2 = absolute_pathname(param_1);\n    if (((iVar2 == 0) && (iVar2 = absolute_program(param_1), iVar2 == 0)) && (*param_1 != '~')) {\n      iVar2 = FUN_0008ac10(param_1);\n      DAT_00151458 = (uint)(iVar2 != 0);\n    }\n    else {\n      DAT_00151458 = 0;\n    }\n    DAT_00151454 = (char *)0x0;\n    pcVar3 = (char *)rl_variable_value("completion-ignore-case");\n    DAT_00151450 = 0;\n    if ((*pcVar3 == 'o') && (pcVar3[1] == 'n')) {\n      DAT_00151450 = (uint)(pcVar3[2] == '\0');\n    }\n    if (DAT_001514d4 != (undefined4 *)0x0) {\n      free(DAT_001514d4);\n      DAT_001514d4 = (undefined4 *)0x0;\n    }\n    DAT_0015144c = FUN_0008cd10();\n    if ((DAT_0015144c == 0) && (iVar2 = absolute_program(param_1), iVar2 == 0)) {\n      sVar4 = strlen(param_1);\n      pcVar3 = (char *)xmalloc(sVar4 + 1);\n      pcVar3 = strcpy(pcVar3,param_1);\n      DAT_00151464 = pcVar3;\n      DAT_00151468 = pcVar3;\n      DAT_00151444 = strlen(pcVar3);\n      if ((rl_completion_found_quote != 0) && (rl_completion_quote_character == 0)) {\n        DAT_00151468 = (char *)FUN_00089940(pcVar3,0);\n      }\n      DAT_00151434 = get_string_value("PATH");\n      DAT_001514ec = 0;\n      DAT_00151430 = 0;\n      DAT_0015142c = 0;\n      if (DAT_00151428 != (void *)0x0) {\n        free(DAT_00151428);\n      }\n      DAT_00151428 = (void *)all_visible_functions();\n      if (DAT_00151424 != (void *)0x0) {\n        free(DAT_00151424);\n      }\n      DAT_00151424 = (void *)all_aliases();\n      goto LAB_0008d390;\n    }\n    if (*param_1 == '~') {\n      DAT_00151464 = (char *)bash_tilde_expand(param_1,0);\n      sVar4 = strlen(param_1);\n      pcVar3 = (char *)xmalloc(sVar4 + 1);\n      pcVar3 = strcpy(pcVar3,param_1);\n      DAT_00151448 = pcVar3;\n      pcVar5 = strchr(pcVar3,0x2f);\n      if (pcVar5 == (char *)0x0) {\n        free(pcVar3);\n        DAT_00151448 = (char *)0x0;\n      }\n      else {\n        *pcVar5 = '\0';\n      }\n    }\n    else {\n      sVar4 = strlen(param_1);\n      if (dircomplete_expand == 0) {\n        pcVar3 = (char *)xmalloc(sVar4 + 1);\n        DAT_00151464 = strcpy(pcVar3,param_1);\n      }\n      else {\n        pcVar3 = (char *)xmalloc(sVar4 + 1);\n        DAT_00151464 = strcpy(pcVar3,param_1);\n        FUN_0008c7b0(&DAT_00151464);\n      }\n    }\n    DAT_00151468 = DAT_00151464;\n    if ((rl_completion_found_quote != 0) && (rl_completion_quote_character == 0)) {\n      pcVar3 = (char *)FUN_00089940(DAT_00151464,0);\n      DAT_00151468 = pcVar3;\n      free(DAT_00151464);\n      DAT_00151464 = pcVar3;\n    }\n    pcVar3 = DAT_00151464;\n    DAT_00151444 = strlen(DAT_00151464);\n    if (DAT_00151440 != (char *)0x0) {\n      free(DAT_00151440);\n      pcVar3 = DAT_00151464;\n    }\n    sVar4 = strlen(pcVar3);\n    pcVar5 = (char *)xmalloc(sVar4 + 1);\n    DAT_0015143c = strcpy(pcVar5,pcVar3);\n    DAT_00151438 = 0;\n    DAT_00151440 = DAT_0015143c;\n    if (DAT_0015144c == 0) {\n      uVar8 = dircomplete_expand;\n      if ((dircomplete_expand != 0) &&\n         (iVar2 = path_dot_or_dotdot(DAT_0015143c), uVar8 = DAT_00151438, iVar2 != 0)) {\n        dircomplete_expand = 1;\n        rl_directory_rewrite_hook = FUN_0008c7b0;\n        rl_directory_completion_hook = (code *)0x0;\n      }\n      DAT_0015145c = 4;\n      pcVar3 = DAT_0015143c;\n      do {\n        do {\n          while( true ) {\n            DAT_00151454 = (char *)rl_filename_completion_function(pcVar3,uVar8);\n            if ((DAT_0015145c == 4) && (dircomplete_expand != 0)) {\n              rl_directory_completion_hook = FUN_0008c7b0;\n              rl_directory_rewrite_hook = (code *)0x0;\n            }\n            DAT_00151438 = 1;\n            if (DAT_00151454 == (char *)0x0) break;\n            iVar2 = absolute_program(DAT_00151464);\n            pcVar5 = DAT_00151454;\n            if (iVar2 == 0) {\n              pcVar3 = strrchr(DAT_00151454,0x2f);\n              if (pcVar3 != (char *)0x0) {\n                pcVar3 = pcVar3 + 1;\n                if (DAT_00151450 == 0) {\n                  iVar2 = strncmp(pcVar3,DAT_00151464,DAT_00151444);\n                }\n                else {\n                  iVar2 = strncasecmp(pcVar3,DAT_00151464,DAT_00151444);\n                }\n                if (iVar2 == 0) {\n                  sVar4 = strlen(pcVar3);\n                  pcVar5 = (char *)xmalloc(sVar4 + 1);\n                  pcVar3 = strcpy(pcVar5,pcVar3);\n                  goto LAB_0008d6a4;\n                }\n              }\n            }\n            else {\n              if (DAT_00151450 == 0) {\n                iVar2 = strncmp(DAT_00151454,DAT_00151464,DAT_00151444);\n              }\n              else {\n                iVar2 = strncasecmp(DAT_00151454,DAT_00151464,DAT_00151444);\n              }\n              if (*param_1 == '~') {\n                pcVar3 = (char *)FUN_0008a220();\n              }\n              else {\n                sVar4 = strlen(pcVar5);\n                pcVar3 = (char *)xmalloc(sVar4 + 1);\n                pcVar3 = strcpy(pcVar3,pcVar5);\n              }\n              pcVar5 = DAT_00151454;\n              if (iVar2 == 0) {\nLAB_0008d6a4:\n                iVar2 = DAT_00151460;\n                pcVar10 = DAT_00151454;\n                sVar4 = strlen(DAT_00151454);\n                pcVar5 = (char *)xmalloc(sVar4 + 1);\n                local_24 = strcpy(pcVar5,pcVar10);\n                FUN_0008c7b0(&local_24);\n                if (iVar2 == 0) {\n                  iVar2 = executable_or_directory(local_24);\n                }\n                else {\n                  iVar2 = executable_file(local_24);\n                }\n                free(local_24);\n                pcVar5 = DAT_00151454;\n                if (iVar2 != 0) {\n                  if (pcVar10 != DAT_00151454) {\n                    free(pcVar10);\n                  }\n                  free(pcVar5);\n                  DAT_00151454 = "";\n                  goto LAB_0008d5c8;\n                }\n                free(pcVar3);\n                if (pcVar10 != pcVar5) {\n                  free(pcVar10);\n                }\n              }\n              else {\n                free(pcVar3);\n              }\n            }\n            free(pcVar5);\n            uVar8 = DAT_00151438;\n            pcVar3 = DAT_0015143c;\n          }\n          iVar2 = absolute_program(DAT_00151464);\n          if (iVar2 != 0) goto LAB_0008dac4;\nLAB_0008d5f6:\n          uVar8 = (uint)(DAT_00151454 != (char *)0x0);\n          pcVar3 = DAT_0015143c;\n          DAT_00151438 = uVar8;\n        } while (DAT_00151454 != (char *)0x0);\n        if (((DAT_00151434 == 0) || (*(char *)(DAT_00151434 + DAT_00151430) == '\0')) ||\n           (pcVar3 = (char *)extract_colon_unit(DAT_00151434,&DAT_00151430), pcVar3 == (char *)0x0))\n        goto LAB_0008dac4;\n        DAT_00151460 = 1;\n        cVar11 = *pcVar3;\n        if (cVar11 == '\0') {\n          free(pcVar3);\n          pcVar3 = (char *)xmalloc(2);\n          pcVar3[0] = '.';\n          pcVar3[1] = '\0';\n          cVar11 = '.';\n        }\n        pcVar5 = pcVar3;\n        if (cVar11 == '~') {\n          pcVar5 = (char *)bash_tilde_expand(pcVar3,0);\n          free(pcVar3);\n          cVar11 = *pcVar5;\n        }\n        pcVar3 = DAT_00151440;\n        if ((cVar11 == '.') && (pcVar5[1] == '\0')) {\n          DAT_001514ec = 1;\n        }\n        if (DAT_0015143c == (char *)0x0) {\nLAB_0008dbfe:\n          if (pcVar3 != (char *)0x0) goto LAB_0008de5f;\n        }\n        else {\n          if (DAT_0015143c != DAT_00151440) {\n            free(DAT_0015143c);\n            goto LAB_0008dbfe;\n          }\nLAB_0008de5f:\n          free(pcVar3);\n        }\n        pcVar3 = (char *)sh_makepath(pcVar5,DAT_00151464,0);\n        DAT_00151440 = pcVar3;\n        pcVar10 = strpbrk(pcVar3,"\"\'\\");\n        if (pcVar10 != (char *)0x0) {\n          pcVar3 = (char *)sh_backslash_quote(pcVar3,&DAT_00151500,0);\n        }\n        DAT_0015143c = pcVar3;\n        free(pcVar5);\n        uVar8 = DAT_00151438;\n      } while( true );\n    }\n    DAT_0015145c = 5;\nLAB_0008d218:\n    glob_ignore_case = DAT_00151450;\n    puVar6 = (undefined4 *)shell_glob_filename(DAT_00151464);\n    glob_ignore_case = 0;\n    if ((puVar6 == (undefined4 *)PTR_glob_error_return_00149f60) || (puVar6 == (undefined4 *)0x0)) {\n      DAT_001514d4 = (undefined4 *)0x0;\n      pcVar3 = (char *)0x0;\n      goto LAB_0008d5c8;\n    }\n    DAT_0015142c = 0;\n    DAT_001514d4 = puVar6;\n    if ((puVar6[1] != 0) && (rl_completion_type == 9)) {\nLAB_0008dac4:\n      pcVar3 = (char *)0x0;\n      goto LAB_0008d5c8;\n    }\n    iVar2 = 1;\n  }" { (expression_statement "rl_filename_stat_hook = FUN_0008f310;" (assignment_expression "rl_filename_stat_hook = FUN_0008f310" identifier = identifier) ;) (if_statement "if (DAT_00151468 == (char *)0x0) {\nLAB_0008d085:\n      if (DAT_00151464 != (char *)0x0) goto LAB_0008d089;\n    }\n    else {\n      if (DAT_00151468 != DAT_00151464) {\n        free(DAT_00151468);\n        goto LAB_0008d085;\n      }\nLAB_0008d089:\n      free(DAT_00151464);\n    }" if (parenthesized_expression "(DAT_00151468 == (char *)0x0)" ( (binary_expression "DAT_00151468 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nLAB_0008d085:\n      if (DAT_00151464 != (char *)0x0) goto LAB_0008d089;\n    }" { (labeled_statement "LAB_0008d085:\n      if (DAT_00151464 != (char *)0x0) goto LAB_0008d089;" statement_identifier : (if_statement "if (DAT_00151464 != (char *)0x0) goto LAB_0008d089;" if (parenthesized_expression "(DAT_00151464 != (char *)0x0)" ( (binary_expression "DAT_00151464 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0008d089;" goto statement_identifier ;))) }) (else_clause "else {\n      if (DAT_00151468 != DAT_00151464) {\n        free(DAT_00151468);\n        goto LAB_0008d085;\n      }\nLAB_0008d089:\n      free(DAT_00151464);\n    }" else (compound_statement "{\n      if (DAT_00151468 != DAT_00151464) {\n        free(DAT_00151468);\n        goto LAB_0008d085;\n      }\nLAB_0008d089:\n      free(DAT_00151464);\n    }" { (if_statement "if (DAT_00151468 != DAT_00151464) {\n        free(DAT_00151468);\n        goto LAB_0008d085;\n      }" if (parenthesized_expression "(DAT_00151468 != DAT_00151464)" ( (binary_expression "DAT_00151468 != DAT_00151464" identifier != identifier) )) (compound_statement "{\n        free(DAT_00151468);\n        goto LAB_0008d085;\n      }" { (expression_statement "free(DAT_00151468);" (call_expression "free(DAT_00151468)" identifier (argument_list "(DAT_00151468)" ( identifier ))) ;) (goto_statement "goto LAB_0008d085;" goto statement_identifier ;) })) (labeled_statement "LAB_0008d089:\n      free(DAT_00151464);" statement_identifier : (expression_statement "free(DAT_00151464);" (call_expression "free(DAT_00151464)" identifier (argument_list "(DAT_00151464)" ( identifier ))) ;)) }))) (expression_statement "DAT_00151460 = 0;" (assignment_expression "DAT_00151460 = 0" identifier = number_literal) ;) (expression_statement "DAT_0015145c = 0;" (assignment_expression "DAT_0015145c = 0" identifier = number_literal) ;) (expression_statement "iVar2 = absolute_pathname(param_1);" (assignment_expression "iVar2 = absolute_pathname(param_1)" identifier = (call_expression "absolute_pathname(param_1)" identifier (argument_list "(param_1)" ( identifier )))) ;) (if_statement "if (((iVar2 == 0) && (iVar2 = absolute_program(param_1), iVar2 == 0)) && (*param_1 != '~')) {\n      iVar2 = FUN_0008ac10(param_1);\n      DAT_00151458 = (uint)(iVar2 != 0);\n    }\n    else {\n      DAT_00151458 = 0;\n    }" if (parenthesized_expression "(((iVar2 == 0) && (iVar2 = absolute_program(param_1), iVar2 == 0)) && (*param_1 != '~'))" ( (binary_expression "((iVar2 == 0) && (iVar2 = absolute_program(param_1), iVar2 == 0)) && (*param_1 != '~')" (parenthesized_expression "((iVar2 == 0) && (iVar2 = absolute_program(param_1), iVar2 == 0))" ( (binary_expression "(iVar2 == 0) && (iVar2 = absolute_program(param_1), iVar2 == 0)" (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) && (parenthesized_expression "(iVar2 = absolute_program(param_1), iVar2 == 0)" ( (comma_expression "iVar2 = absolute_program(param_1), iVar2 == 0" (assignment_expression "iVar2 = absolute_program(param_1)" identifier = (call_expression "absolute_program(param_1)" identifier (argument_list "(param_1)" ( identifier )))) , (binary_expression "iVar2 == 0" identifier == number_literal)) ))) )) && (parenthesized_expression "(*param_1 != '~')" ( (binary_expression "*param_1 != '~'" (pointer_expression "*param_1" * identifier) != (char_literal "'~'" ' character ')) ))) )) (compound_statement "{\n      iVar2 = FUN_0008ac10(param_1);\n      DAT_00151458 = (uint)(iVar2 != 0);\n    }" { (expression_statement "iVar2 = FUN_0008ac10(param_1);" (assignment_expression "iVar2 = FUN_0008ac10(param_1)" identifier = (call_expression "FUN_0008ac10(param_1)" identifier (argument_list "(param_1)" ( identifier )))) ;) (expression_statement "DAT_00151458 = (uint)(iVar2 != 0);" (assignment_expression "DAT_00151458 = (uint)(iVar2 != 0)" identifier = (call_expression "(uint)(iVar2 != 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar2 != 0)" ( (binary_expression "iVar2 != 0" identifier != number_literal) )))) ;) }) (else_clause "else {\n      DAT_00151458 = 0;\n    }" else (compound_statement "{\n      DAT_00151458 = 0;\n    }" { (expression_statement "DAT_00151458 = 0;" (assignment_expression "DAT_00151458 = 0" identifier = number_literal) ;) }))) (expression_statement "DAT_00151454 = (char *)0x0;" (assignment_expression "DAT_00151454 = (char *)0x0" identifier = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "pcVar3 = (char *)rl_variable_value("completion-ignore-case");" (assignment_expression "pcVar3 = (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_00151450 = 0;" (assignment_expression "DAT_00151450 = 0" identifier = number_literal) ;) (if_statement "if ((*pcVar3 == 'o') && (pcVar3[1] == 'n')) {\n      DAT_00151450 = (uint)(pcVar3[2] == '\0');\n    }" if (parenthesized_expression "((*pcVar3 == 'o') && (pcVar3[1] == 'n'))" ( (binary_expression "(*pcVar3 == 'o') && (pcVar3[1] == 'n')" (parenthesized_expression "(*pcVar3 == 'o')" ( (binary_expression "*pcVar3 == 'o'" (pointer_expression "*pcVar3" * identifier) == (char_literal "'o'" ' character ')) )) && (parenthesized_expression "(pcVar3[1] == 'n')" ( (binary_expression "pcVar3[1] == 'n'" (subscript_expression "pcVar3[1]" identifier [ number_literal ]) == (char_literal "'n'" ' character ')) ))) )) (compound_statement "{\n      DAT_00151450 = (uint)(pcVar3[2] == '\0');\n    }" { (expression_statement "DAT_00151450 = (uint)(pcVar3[2] == '\0');" (assignment_expression "DAT_00151450 = (uint)(pcVar3[2] == '\0')" identifier = (call_expression "(uint)(pcVar3[2] == '\0')" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(pcVar3[2] == '\0')" ( (binary_expression "pcVar3[2] == '\0'" (subscript_expression "pcVar3[2]" identifier [ number_literal ]) == (char_literal "'\0'" ' escape_sequence ')) )))) ;) })) (if_statement "if (DAT_001514d4 != (undefined4 *)0x0) {\n      free(DAT_001514d4);\n      DAT_001514d4 = (undefined4 *)0x0;\n    }" if (parenthesized_expression "(DAT_001514d4 != (undefined4 *)0x0)" ( (binary_expression "DAT_001514d4 != (undefined4 *)0x0" identifier != (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      free(DAT_001514d4);\n      DAT_001514d4 = (undefined4 *)0x0;\n    }" { (expression_statement "free(DAT_001514d4);" (call_expression "free(DAT_001514d4)" identifier (argument_list "(DAT_001514d4)" ( identifier ))) ;) (expression_statement "DAT_001514d4 = (undefined4 *)0x0;" (assignment_expression "DAT_001514d4 = (undefined4 *)0x0" identifier = (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) })) (expression_statement "DAT_0015144c = FUN_0008cd10();" (assignment_expression "DAT_0015144c = FUN_0008cd10()" identifier = (call_expression "FUN_0008cd10()" identifier (argument_list "()" ( )))) ;) (if_statement "if ((DAT_0015144c == 0) && (iVar2 = absolute_program(param_1), iVar2 == 0)) {\n      sVar4 = strlen(param_1);\n      pcVar3 = (char *)xmalloc(sVar4 + 1);\n      pcVar3 = strcpy(pcVar3,param_1);\n      DAT_00151464 = pcVar3;\n      DAT_00151468 = pcVar3;\n      DAT_00151444 = strlen(pcVar3);\n      if ((rl_completion_found_quote != 0) && (rl_completion_quote_character == 0)) {\n        DAT_00151468 = (char *)FUN_00089940(pcVar3,0);\n      }\n      DAT_00151434 = get_string_value("PATH");\n      DAT_001514ec = 0;\n      DAT_00151430 = 0;\n      DAT_0015142c = 0;\n      if (DAT_00151428 != (void *)0x0) {\n        free(DAT_00151428);\n      }\n      DAT_00151428 = (void *)all_visible_functions();\n      if (DAT_00151424 != (void *)0x0) {\n        free(DAT_00151424);\n      }\n      DAT_00151424 = (void *)all_aliases();\n      goto LAB_0008d390;\n    }" if (parenthesized_expression "((DAT_0015144c == 0) && (iVar2 = absolute_program(param_1), iVar2 == 0))" ( (binary_expression "(DAT_0015144c == 0) && (iVar2 = absolute_program(param_1), iVar2 == 0)" (parenthesized_expression "(DAT_0015144c == 0)" ( (binary_expression "DAT_0015144c == 0" identifier == number_literal) )) && (parenthesized_expression "(iVar2 = absolute_program(param_1), iVar2 == 0)" ( (comma_expression "iVar2 = absolute_program(param_1), iVar2 == 0" (assignment_expression "iVar2 = absolute_program(param_1)" identifier = (call_expression "absolute_program(param_1)" identifier (argument_list "(param_1)" ( identifier )))) , (binary_expression "iVar2 == 0" identifier == number_literal)) ))) )) (compound_statement "{\n      sVar4 = strlen(param_1);\n      pcVar3 = (char *)xmalloc(sVar4 + 1);\n      pcVar3 = strcpy(pcVar3,param_1);\n      DAT_00151464 = pcVar3;\n      DAT_00151468 = pcVar3;\n      DAT_00151444 = strlen(pcVar3);\n      if ((rl_completion_found_quote != 0) && (rl_completion_quote_character == 0)) {\n        DAT_00151468 = (char *)FUN_00089940(pcVar3,0);\n      }\n      DAT_00151434 = get_string_value("PATH");\n      DAT_001514ec = 0;\n      DAT_00151430 = 0;\n      DAT_0015142c = 0;\n      if (DAT_00151428 != (void *)0x0) {\n        free(DAT_00151428);\n      }\n      DAT_00151428 = (void *)all_visible_functions();\n      if (DAT_00151424 != (void *)0x0) {\n        free(DAT_00151424);\n      }\n      DAT_00151424 = (void *)all_aliases();\n      goto LAB_0008d390;\n    }" { (expression_statement "sVar4 = strlen(param_1);" (assignment_expression "sVar4 = strlen(param_1)" identifier = (call_expression "strlen(param_1)" identifier (argument_list "(param_1)" ( identifier )))) ;) (expression_statement "pcVar3 = (char *)xmalloc(sVar4 + 1);" (assignment_expression "pcVar3 = (char *)xmalloc(sVar4 + 1)" identifier = (cast_expression "(char *)xmalloc(sVar4 + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(sVar4 + 1)" identifier (argument_list "(sVar4 + 1)" ( (binary_expression "sVar4 + 1" identifier + number_literal) ))))) ;) (expression_statement "pcVar3 = strcpy(pcVar3,param_1);" (assignment_expression "pcVar3 = strcpy(pcVar3,param_1)" identifier = (call_expression "strcpy(pcVar3,param_1)" identifier (argument_list "(pcVar3,param_1)" ( identifier , identifier )))) ;) (expression_statement "DAT_00151464 = pcVar3;" (assignment_expression "DAT_00151464 = pcVar3" identifier = identifier) ;) (expression_statement "DAT_00151468 = pcVar3;" (assignment_expression "DAT_00151468 = pcVar3" identifier = identifier) ;) (expression_statement "DAT_00151444 = strlen(pcVar3);" (assignment_expression "DAT_00151444 = strlen(pcVar3)" identifier = (call_expression "strlen(pcVar3)" identifier (argument_list "(pcVar3)" ( identifier )))) ;) (if_statement "if ((rl_completion_found_quote != 0) && (rl_completion_quote_character == 0)) {\n        DAT_00151468 = (char *)FUN_00089940(pcVar3,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_00151468 = (char *)FUN_00089940(pcVar3,0);\n      }" { (expression_statement "DAT_00151468 = (char *)FUN_00089940(pcVar3,0);" (assignment_expression "DAT_00151468 = (char *)FUN_00089940(pcVar3,0)" identifier = (cast_expression "(char *)FUN_00089940(pcVar3,0)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00089940(pcVar3,0)" identifier (argument_list "(pcVar3,0)" ( identifier , number_literal ))))) ;) })) (expression_statement "DAT_00151434 = get_string_value("PATH");" (assignment_expression "DAT_00151434 = get_string_value("PATH")" identifier = (call_expression "get_string_value("PATH")" identifier (argument_list "("PATH")" ( (string_literal ""PATH"" " string_content ") )))) ;) (expression_statement "DAT_001514ec = 0;" (assignment_expression "DAT_001514ec = 0" identifier = number_literal) ;) (expression_statement "DAT_00151430 = 0;" (assignment_expression "DAT_00151430 = 0" identifier = number_literal) ;) (expression_statement "DAT_0015142c = 0;" (assignment_expression "DAT_0015142c = 0" identifier = number_literal) ;) (if_statement "if (DAT_00151428 != (void *)0x0) {\n        free(DAT_00151428);\n      }" if (parenthesized_expression "(DAT_00151428 != (void *)0x0)" ( (binary_expression "DAT_00151428 != (void *)0x0" identifier != (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        free(DAT_00151428);\n      }" { (expression_statement "free(DAT_00151428);" (call_expression "free(DAT_00151428)" identifier (argument_list "(DAT_00151428)" ( identifier ))) ;) })) (expression_statement "DAT_00151428 = (void *)all_visible_functions();" (assignment_expression "DAT_00151428 = (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_00151424 != (void *)0x0) {\n        free(DAT_00151424);\n      }" if (parenthesized_expression "(DAT_00151424 != (void *)0x0)" ( (binary_expression "DAT_00151424 != (void *)0x0" identifier != (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        free(DAT_00151424);\n      }" { (expression_statement "free(DAT_00151424);" (call_expression "free(DAT_00151424)" identifier (argument_list "(DAT_00151424)" ( identifier ))) ;) })) (expression_statement "DAT_00151424 = (void *)all_aliases();" (assignment_expression "DAT_00151424 = (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_0008d390;" goto statement_identifier ;) })) (if_statement "if (*param_1 == '~') {\n      DAT_00151464 = (char *)bash_tilde_expand(param_1,0);\n      sVar4 = strlen(param_1);\n      pcVar3 = (char *)xmalloc(sVar4 + 1);\n      pcVar3 = strcpy(pcVar3,param_1);\n      DAT_00151448 = pcVar3;\n      pcVar5 = strchr(pcVar3,0x2f);\n      if (pcVar5 == (char *)0x0) {\n        free(pcVar3);\n        DAT_00151448 = (char *)0x0;\n      }\n      else {\n        *pcVar5 = '\0';\n      }\n    }\n    else {\n      sVar4 = strlen(param_1);\n      if (dircomplete_expand == 0) {\n        pcVar3 = (char *)xmalloc(sVar4 + 1);\n        DAT_00151464 = strcpy(pcVar3,param_1);\n      }\n      else {\n        pcVar3 = (char *)xmalloc(sVar4 + 1);\n        DAT_00151464 = strcpy(pcVar3,param_1);\n        FUN_0008c7b0(&DAT_00151464);\n      }\n    }" if (parenthesized_expression "(*param_1 == '~')" ( (binary_expression "*param_1 == '~'" (pointer_expression "*param_1" * identifier) == (char_literal "'~'" ' character ')) )) (compound_statement "{\n      DAT_00151464 = (char *)bash_tilde_expand(param_1,0);\n      sVar4 = strlen(param_1);\n      pcVar3 = (char *)xmalloc(sVar4 + 1);\n      pcVar3 = strcpy(pcVar3,param_1);\n      DAT_00151448 = pcVar3;\n      pcVar5 = strchr(pcVar3,0x2f);\n      if (pcVar5 == (char *)0x0) {\n        free(pcVar3);\n        DAT_00151448 = (char *)0x0;\n      }\n      else {\n        *pcVar5 = '\0';\n      }\n    }" { (expression_statement "DAT_00151464 = (char *)bash_tilde_expand(param_1,0);" (assignment_expression "DAT_00151464 = (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 "sVar4 = strlen(param_1);" (assignment_expression "sVar4 = strlen(param_1)" identifier = (call_expression "strlen(param_1)" identifier (argument_list "(param_1)" ( identifier )))) ;) (expression_statement "pcVar3 = (char *)xmalloc(sVar4 + 1);" (assignment_expression "pcVar3 = (char *)xmalloc(sVar4 + 1)" identifier = (cast_expression "(char *)xmalloc(sVar4 + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(sVar4 + 1)" identifier (argument_list "(sVar4 + 1)" ( (binary_expression "sVar4 + 1" identifier + number_literal) ))))) ;) (expression_statement "pcVar3 = strcpy(pcVar3,param_1);" (assignment_expression "pcVar3 = strcpy(pcVar3,param_1)" identifier = (call_expression "strcpy(pcVar3,param_1)" identifier (argument_list "(pcVar3,param_1)" ( identifier , identifier )))) ;) (expression_statement "DAT_00151448 = pcVar3;" (assignment_expression "DAT_00151448 = pcVar3" identifier = identifier) ;) (expression_statement "pcVar5 = strchr(pcVar3,0x2f);" (assignment_expression "pcVar5 = strchr(pcVar3,0x2f)" identifier = (call_expression "strchr(pcVar3,0x2f)" identifier (argument_list "(pcVar3,0x2f)" ( identifier , number_literal )))) ;) (if_statement "if (pcVar5 == (char *)0x0) {\n        free(pcVar3);\n        DAT_00151448 = (char *)0x0;\n      }\n      else {\n        *pcVar5 = '\0';\n      }" if (parenthesized_expression "(pcVar5 == (char *)0x0)" ( (binary_expression "pcVar5 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        free(pcVar3);\n        DAT_00151448 = (char *)0x0;\n      }" { (expression_statement "free(pcVar3);" (call_expression "free(pcVar3)" identifier (argument_list "(pcVar3)" ( identifier ))) ;) (expression_statement "DAT_00151448 = (char *)0x0;" (assignment_expression "DAT_00151448 = (char *)0x0" identifier = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }) (else_clause "else {\n        *pcVar5 = '\0';\n      }" else (compound_statement "{\n        *pcVar5 = '\0';\n      }" { (expression_statement "*pcVar5 = '\0';" (assignment_expression "*pcVar5 = '\0'" (pointer_expression "*pcVar5" * identifier) = (char_literal "'\0'" ' escape_sequence ')) ;) }))) }) (else_clause "else {\n      sVar4 = strlen(param_1);\n      if (dircomplete_expand == 0) {\n        pcVar3 = (char *)xmalloc(sVar4 + 1);\n        DAT_00151464 = strcpy(pcVar3,param_1);\n      }\n      else {\n        pcVar3 = (char *)xmalloc(sVar4 + 1);\n        DAT_00151464 = strcpy(pcVar3,param_1);\n        FUN_0008c7b0(&DAT_00151464);\n      }\n    }" else (compound_statement "{\n      sVar4 = strlen(param_1);\n      if (dircomplete_expand == 0) {\n        pcVar3 = (char *)xmalloc(sVar4 + 1);\n        DAT_00151464 = strcpy(pcVar3,param_1);\n      }\n      else {\n        pcVar3 = (char *)xmalloc(sVar4 + 1);\n        DAT_00151464 = strcpy(pcVar3,param_1);\n        FUN_0008c7b0(&DAT_00151464);\n      }\n    }" { (expression_statement "sVar4 = strlen(param_1);" (assignment_expression "sVar4 = strlen(param_1)" identifier = (call_expression "strlen(param_1)" identifier (argument_list "(param_1)" ( identifier )))) ;) (if_statement "if (dircomplete_expand == 0) {\n        pcVar3 = (char *)xmalloc(sVar4 + 1);\n        DAT_00151464 = strcpy(pcVar3,param_1);\n      }\n      else {\n        pcVar3 = (char *)xmalloc(sVar4 + 1);\n        DAT_00151464 = strcpy(pcVar3,param_1);\n        FUN_0008c7b0(&DAT_00151464);\n      }" if (parenthesized_expression "(dircomplete_expand == 0)" ( (binary_expression "dircomplete_expand == 0" identifier == number_literal) )) (compound_statement "{\n        pcVar3 = (char *)xmalloc(sVar4 + 1);\n        DAT_00151464 = strcpy(pcVar3,param_1);\n      }" { (expression_statement "pcVar3 = (char *)xmalloc(sVar4 + 1);" (assignment_expression "pcVar3 = (char *)xmalloc(sVar4 + 1)" identifier = (cast_expression "(char *)xmalloc(sVar4 + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(sVar4 + 1)" identifier (argument_list "(sVar4 + 1)" ( (binary_expression "sVar4 + 1" identifier + number_literal) ))))) ;) (expression_statement "DAT_00151464 = strcpy(pcVar3,param_1);" (assignment_expression "DAT_00151464 = strcpy(pcVar3,param_1)" identifier = (call_expression "strcpy(pcVar3,param_1)" identifier (argument_list "(pcVar3,param_1)" ( identifier , identifier )))) ;) }) (else_clause "else {\n        pcVar3 = (char *)xmalloc(sVar4 + 1);\n        DAT_00151464 = strcpy(pcVar3,param_1);\n        FUN_0008c7b0(&DAT_00151464);\n      }" else (compound_statement "{\n        pcVar3 = (char *)xmalloc(sVar4 + 1);\n        DAT_00151464 = strcpy(pcVar3,param_1);\n        FUN_0008c7b0(&DAT_00151464);\n      }" { (expression_statement "pcVar3 = (char *)xmalloc(sVar4 + 1);" (assignment_expression "pcVar3 = (char *)xmalloc(sVar4 + 1)" identifier = (cast_expression "(char *)xmalloc(sVar4 + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(sVar4 + 1)" identifier (argument_list "(sVar4 + 1)" ( (binary_expression "sVar4 + 1" identifier + number_literal) ))))) ;) (expression_statement "DAT_00151464 = strcpy(pcVar3,param_1);" (assignment_expression "DAT_00151464 = strcpy(pcVar3,param_1)" identifier = (call_expression "strcpy(pcVar3,param_1)" identifier (argument_list "(pcVar3,param_1)" ( identifier , identifier )))) ;) (expression_statement "FUN_0008c7b0(&DAT_00151464);" (call_expression "FUN_0008c7b0(&DAT_00151464)" identifier (argument_list "(&DAT_00151464)" ( (pointer_expression "&DAT_00151464" & identifier) ))) ;) }))) }))) (expression_statement "DAT_00151468 = DAT_00151464;" (assignment_expression "DAT_00151468 = DAT_00151464" identifier = identifier) ;) (if_statement "if ((rl_completion_found_quote != 0) && (rl_completion_quote_character == 0)) {\n      pcVar3 = (char *)FUN_00089940(DAT_00151464,0);\n      DAT_00151468 = pcVar3;\n      free(DAT_00151464);\n      DAT_00151464 = pcVar3;\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      pcVar3 = (char *)FUN_00089940(DAT_00151464,0);\n      DAT_00151468 = pcVar3;\n      free(DAT_00151464);\n      DAT_00151464 = pcVar3;\n    }" { (expression_statement "pcVar3 = (char *)FUN_00089940(DAT_00151464,0);" (assignment_expression "pcVar3 = (char *)FUN_00089940(DAT_00151464,0)" identifier = (cast_expression "(char *)FUN_00089940(DAT_00151464,0)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00089940(DAT_00151464,0)" identifier (argument_list "(DAT_00151464,0)" ( identifier , number_literal ))))) ;) (expression_statement "DAT_00151468 = pcVar3;" (assignment_expression "DAT_00151468 = pcVar3" identifier = identifier) ;) (expression_statement "free(DAT_00151464);" (call_expression "free(DAT_00151464)" identifier (argument_list "(DAT_00151464)" ( identifier ))) ;) (expression_statement "DAT_00151464 = pcVar3;" (assignment_expression "DAT_00151464 = pcVar3" identifier = identifier) ;) })) (expression_statement "pcVar3 = DAT_00151464;" (assignment_expression "pcVar3 = DAT_00151464" identifier = identifier) ;) (expression_statement "DAT_00151444 = strlen(DAT_00151464);" (assignment_expression "DAT_00151444 = strlen(DAT_00151464)" identifier = (call_expression "strlen(DAT_00151464)" identifier (argument_list "(DAT_00151464)" ( identifier )))) ;) (if_statement "if (DAT_00151440 != (char *)0x0) {\n      free(DAT_00151440);\n      pcVar3 = DAT_00151464;\n    }" if (parenthesized_expression "(DAT_00151440 != (char *)0x0)" ( (binary_expression "DAT_00151440 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      free(DAT_00151440);\n      pcVar3 = DAT_00151464;\n    }" { (expression_statement "free(DAT_00151440);" (call_expression "free(DAT_00151440)" identifier (argument_list "(DAT_00151440)" ( identifier ))) ;) (expression_statement "pcVar3 = DAT_00151464;" (assignment_expression "pcVar3 = DAT_00151464" identifier = identifier) ;) })) (expression_statement "sVar4 = strlen(pcVar3);" (assignment_expression "sVar4 = strlen(pcVar3)" identifier = (call_expression "strlen(pcVar3)" identifier (argument_list "(pcVar3)" ( identifier )))) ;) (expression_statement "pcVar5 = (char *)xmalloc(sVar4 + 1);" (assignment_expression "pcVar5 = (char *)xmalloc(sVar4 + 1)" identifier = (cast_expression "(char *)xmalloc(sVar4 + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(sVar4 + 1)" identifier (argument_list "(sVar4 + 1)" ( (binary_expression "sVar4 + 1" identifier + number_literal) ))))) ;) (expression_statement "DAT_0015143c = strcpy(pcVar5,pcVar3);" (assignment_expression "DAT_0015143c = strcpy(pcVar5,pcVar3)" identifier = (call_expression "strcpy(pcVar5,pcVar3)" identifier (argument_list "(pcVar5,pcVar3)" ( identifier , identifier )))) ;) (expression_statement "DAT_00151438 = 0;" (assignment_expression "DAT_00151438 = 0" identifier = number_literal) ;) (expression_statement "DAT_00151440 = DAT_0015143c;" (assignment_expression "DAT_00151440 = DAT_0015143c" identifier = identifier) ;) (if_statement "if (DAT_0015144c == 0) {\n      uVar8 = dircomplete_expand;\n      if ((dircomplete_expand != 0) &&\n         (iVar2 = path_dot_or_dotdot(DAT_0015143c), uVar8 = DAT_00151438, iVar2 != 0)) {\n        dircomplete_expand = 1;\n        rl_directory_rewrite_hook = FUN_0008c7b0;\n        rl_directory_completion_hook = (code *)0x0;\n      }\n      DAT_0015145c = 4;\n      pcVar3 = DAT_0015143c;\n      do {\n        do {\n          while( true ) {\n            DAT_00151454 = (char *)rl_filename_completion_function(pcVar3,uVar8);\n            if ((DAT_0015145c == 4) && (dircomplete_expand != 0)) {\n              rl_directory_completion_hook = FUN_0008c7b0;\n              rl_directory_rewrite_hook = (code *)0x0;\n            }\n            DAT_00151438 = 1;\n            if (DAT_00151454 == (char *)0x0) break;\n            iVar2 = absolute_program(DAT_00151464);\n            pcVar5 = DAT_00151454;\n            if (iVar2 == 0) {\n              pcVar3 = strrchr(DAT_00151454,0x2f);\n              if (pcVar3 != (char *)0x0) {\n                pcVar3 = pcVar3 + 1;\n                if (DAT_00151450 == 0) {\n                  iVar2 = strncmp(pcVar3,DAT_00151464,DAT_00151444);\n                }\n                else {\n                  iVar2 = strncasecmp(pcVar3,DAT_00151464,DAT_00151444);\n                }\n                if (iVar2 == 0) {\n                  sVar4 = strlen(pcVar3);\n                  pcVar5 = (char *)xmalloc(sVar4 + 1);\n                  pcVar3 = strcpy(pcVar5,pcVar3);\n                  goto LAB_0008d6a4;\n                }\n              }\n            }\n            else {\n              if (DAT_00151450 == 0) {\n                iVar2 = strncmp(DAT_00151454,DAT_00151464,DAT_00151444);\n              }\n              else {\n                iVar2 = strncasecmp(DAT_00151454,DAT_00151464,DAT_00151444);\n              }\n              if (*param_1 == '~') {\n                pcVar3 = (char *)FUN_0008a220();\n              }\n              else {\n                sVar4 = strlen(pcVar5);\n                pcVar3 = (char *)xmalloc(sVar4 + 1);\n                pcVar3 = strcpy(pcVar3,pcVar5);\n              }\n              pcVar5 = DAT_00151454;\n              if (iVar2 == 0) {\nLAB_0008d6a4:\n                iVar2 = DAT_00151460;\n                pcVar10 = DAT_00151454;\n                sVar4 = strlen(DAT_00151454);\n                pcVar5 = (char *)xmalloc(sVar4 + 1);\n                local_24 = strcpy(pcVar5,pcVar10);\n                FUN_0008c7b0(&local_24);\n                if (iVar2 == 0) {\n                  iVar2 = executable_or_directory(local_24);\n                }\n                else {\n                  iVar2 = executable_file(local_24);\n                }\n                free(local_24);\n                pcVar5 = DAT_00151454;\n                if (iVar2 != 0) {\n                  if (pcVar10 != DAT_00151454) {\n                    free(pcVar10);\n                  }\n                  free(pcVar5);\n                  DAT_00151454 = "";\n                  goto LAB_0008d5c8;\n                }\n                free(pcVar3);\n                if (pcVar10 != pcVar5) {\n                  free(pcVar10);\n                }\n              }\n              else {\n                free(pcVar3);\n              }\n            }\n            free(pcVar5);\n            uVar8 = DAT_00151438;\n            pcVar3 = DAT_0015143c;\n          }\n          iVar2 = absolute_program(DAT_00151464);\n          if (iVar2 != 0) goto LAB_0008dac4;\nLAB_0008d5f6:\n          uVar8 = (uint)(DAT_00151454 != (char *)0x0);\n          pcVar3 = DAT_0015143c;\n          DAT_00151438 = uVar8;\n        } while (DAT_00151454 != (char *)0x0);\n        if (((DAT_00151434 == 0) || (*(char *)(DAT_00151434 + DAT_00151430) == '\0')) ||\n           (pcVar3 = (char *)extract_colon_unit(DAT_00151434,&DAT_00151430), pcVar3 == (char *)0x0))\n        goto LAB_0008dac4;\n        DAT_00151460 = 1;\n        cVar11 = *pcVar3;\n        if (cVar11 == '\0') {\n          free(pcVar3);\n          pcVar3 = (char *)xmalloc(2);\n          pcVar3[0] = '.';\n          pcVar3[1] = '\0';\n          cVar11 = '.';\n        }\n        pcVar5 = pcVar3;\n        if (cVar11 == '~') {\n          pcVar5 = (char *)bash_tilde_expand(pcVar3,0);\n          free(pcVar3);\n          cVar11 = *pcVar5;\n        }\n        pcVar3 = DAT_00151440;\n        if ((cVar11 == '.') && (pcVar5[1] == '\0')) {\n          DAT_001514ec = 1;\n        }\n        if (DAT_0015143c == (char *)0x0) {\nLAB_0008dbfe:\n          if (pcVar3 != (char *)0x0) goto LAB_0008de5f;\n        }\n        else {\n          if (DAT_0015143c != DAT_00151440) {\n            free(DAT_0015143c);\n            goto LAB_0008dbfe;\n          }\nLAB_0008de5f:\n          free(pcVar3);\n        }\n        pcVar3 = (char *)sh_makepath(pcVar5,DAT_00151464,0);\n        DAT_00151440 = pcVar3;\n        pcVar10 = strpbrk(pcVar3,"\"\'\\");\n        if (pcVar10 != (char *)0x0) {\n          pcVar3 = (char *)sh_backslash_quote(pcVar3,&DAT_00151500,0);\n        }\n        DAT_0015143c = pcVar3;\n        free(pcVar5);\n        uVar8 = DAT_00151438;\n      } while( true );\n    }" if (parenthesized_expression "(DAT_0015144c == 0)" ( (binary_expression "DAT_0015144c == 0" identifier == number_literal) )) (compound_statement "{\n      uVar8 = dircomplete_expand;\n      if ((dircomplete_expand != 0) &&\n         (iVar2 = path_dot_or_dotdot(DAT_0015143c), uVar8 = DAT_00151438, iVar2 != 0)) {\n        dircomplete_expand = 1;\n        rl_directory_rewrite_hook = FUN_0008c7b0;\n        rl_directory_completion_hook = (code *)0x0;\n      }\n      DAT_0015145c = 4;\n      pcVar3 = DAT_0015143c;\n      do {\n        do {\n          while( true ) {\n            DAT_00151454 = (char *)rl_filename_completion_function(pcVar3,uVar8);\n            if ((DAT_0015145c == 4) && (dircomplete_expand != 0)) {\n              rl_directory_completion_hook = FUN_0008c7b0;\n              rl_directory_rewrite_hook = (code *)0x0;\n            }\n            DAT_00151438 = 1;\n            if (DAT_00151454 == (char *)0x0) break;\n            iVar2 = absolute_program(DAT_00151464);\n            pcVar5 = DAT_00151454;\n            if (iVar2 == 0) {\n              pcVar3 = strrchr(DAT_00151454,0x2f);\n              if (pcVar3 != (char *)0x0) {\n                pcVar3 = pcVar3 + 1;\n                if (DAT_00151450 == 0) {\n                  iVar2 = strncmp(pcVar3,DAT_00151464,DAT_00151444);\n                }\n                else {\n                  iVar2 = strncasecmp(pcVar3,DAT_00151464,DAT_00151444);\n                }\n                if (iVar2 == 0) {\n                  sVar4 = strlen(pcVar3);\n                  pcVar5 = (char *)xmalloc(sVar4 + 1);\n                  pcVar3 = strcpy(pcVar5,pcVar3);\n                  goto LAB_0008d6a4;\n                }\n              }\n            }\n            else {\n              if (DAT_00151450 == 0) {\n                iVar2 = strncmp(DAT_00151454,DAT_00151464,DAT_00151444);\n              }\n              else {\n                iVar2 = strncasecmp(DAT_00151454,DAT_00151464,DAT_00151444);\n              }\n              if (*param_1 == '~') {\n                pcVar3 = (char *)FUN_0008a220();\n              }\n              else {\n                sVar4 = strlen(pcVar5);\n                pcVar3 = (char *)xmalloc(sVar4 + 1);\n                pcVar3 = strcpy(pcVar3,pcVar5);\n              }\n              pcVar5 = DAT_00151454;\n              if (iVar2 == 0) {\nLAB_0008d6a4:\n                iVar2 = DAT_00151460;\n                pcVar10 = DAT_00151454;\n                sVar4 = strlen(DAT_00151454);\n                pcVar5 = (char *)xmalloc(sVar4 + 1);\n                local_24 = strcpy(pcVar5,pcVar10);\n                FUN_0008c7b0(&local_24);\n                if (iVar2 == 0) {\n                  iVar2 = executable_or_directory(local_24);\n                }\n                else {\n                  iVar2 = executable_file(local_24);\n                }\n                free(local_24);\n                pcVar5 = DAT_00151454;\n                if (iVar2 != 0) {\n                  if (pcVar10 != DAT_00151454) {\n                    free(pcVar10);\n                  }\n                  free(pcVar5);\n                  DAT_00151454 = "";\n                  goto LAB_0008d5c8;\n                }\n                free(pcVar3);\n                if (pcVar10 != pcVar5) {\n                  free(pcVar10);\n                }\n              }\n              else {\n                free(pcVar3);\n              }\n            }\n            free(pcVar5);\n            uVar8 = DAT_00151438;\n            pcVar3 = DAT_0015143c;\n          }\n          iVar2 = absolute_program(DAT_00151464);\n          if (iVar2 != 0) goto LAB_0008dac4;\nLAB_0008d5f6:\n          uVar8 = (uint)(DAT_00151454 != (char *)0x0);\n          pcVar3 = DAT_0015143c;\n          DAT_00151438 = uVar8;\n        } while (DAT_00151454 != (char *)0x0);\n        if (((DAT_00151434 == 0) || (*(char *)(DAT_00151434 + DAT_00151430) == '\0')) ||\n           (pcVar3 = (char *)extract_colon_unit(DAT_00151434,&DAT_00151430), pcVar3 == (char *)0x0))\n        goto LAB_0008dac4;\n        DAT_00151460 = 1;\n        cVar11 = *pcVar3;\n        if (cVar11 == '\0') {\n          free(pcVar3);\n          pcVar3 = (char *)xmalloc(2);\n          pcVar3[0] = '.';\n          pcVar3[1] = '\0';\n          cVar11 = '.';\n        }\n        pcVar5 = pcVar3;\n        if (cVar11 == '~') {\n          pcVar5 = (char *)bash_tilde_expand(pcVar3,0);\n          free(pcVar3);\n          cVar11 = *pcVar5;\n        }\n        pcVar3 = DAT_00151440;\n        if ((cVar11 == '.') && (pcVar5[1] == '\0')) {\n          DAT_001514ec = 1;\n        }\n        if (DAT_0015143c == (char *)0x0) {\nLAB_0008dbfe:\n          if (pcVar3 != (char *)0x0) goto LAB_0008de5f;\n        }\n        else {\n          if (DAT_0015143c != DAT_00151440) {\n            free(DAT_0015143c);\n            goto LAB_0008dbfe;\n          }\nLAB_0008de5f:\n          free(pcVar3);\n        }\n        pcVar3 = (char *)sh_makepath(pcVar5,DAT_00151464,0);\n        DAT_00151440 = pcVar3;\n        pcVar10 = strpbrk(pcVar3,"\"\'\\");\n        if (pcVar10 != (char *)0x0) {\n          pcVar3 = (char *)sh_backslash_quote(pcVar3,&DAT_00151500,0);\n        }\n        DAT_0015143c = pcVar3;\n        free(pcVar5);\n        uVar8 = DAT_00151438;\n      } while( true );\n    }" { (expression_statement "uVar8 = dircomplete_expand;" (assignment_expression "uVar8 = dircomplete_expand" identifier = identifier) ;) (if_statement "if ((dircomplete_expand != 0) &&\n         (iVar2 = path_dot_or_dotdot(DAT_0015143c), uVar8 = DAT_00151438, iVar2 != 0)) {\n        dircomplete_expand = 1;\n        rl_directory_rewrite_hook = FUN_0008c7b0;\n        rl_directory_completion_hook = (code *)0x0;\n      }" if (parenthesized_expression "((dircomplete_expand != 0) &&\n         (iVar2 = path_dot_or_dotdot(DAT_0015143c), uVar8 = DAT_00151438, iVar2 != 0))" ( (binary_expression "(dircomplete_expand != 0) &&\n         (iVar2 = path_dot_or_dotdot(DAT_0015143c), uVar8 = DAT_00151438, iVar2 != 0)" (parenthesized_expression "(dircomplete_expand != 0)" ( (binary_expression "dircomplete_expand != 0" identifier != number_literal) )) && (parenthesized_expression "(iVar2 = path_dot_or_dotdot(DAT_0015143c), uVar8 = DAT_00151438, iVar2 != 0)" ( (comma_expression "iVar2 = path_dot_or_dotdot(DAT_0015143c), uVar8 = DAT_00151438, iVar2 != 0" (assignment_expression "iVar2 = path_dot_or_dotdot(DAT_0015143c)" identifier = (call_expression "path_dot_or_dotdot(DAT_0015143c)" identifier (argument_list "(DAT_0015143c)" ( identifier )))) , (comma_expression "uVar8 = DAT_00151438, iVar2 != 0" (assignment_expression "uVar8 = DAT_00151438" identifier = identifier) , (binary_expression "iVar2 != 0" identifier != number_literal))) ))) )) (compound_statement "{\n        dircomplete_expand = 1;\n        rl_directory_rewrite_hook = FUN_0008c7b0;\n        rl_directory_completion_hook = (code *)0x0;\n      }" { (expression_statement "dircomplete_expand = 1;" (assignment_expression "dircomplete_expand = 1" identifier = number_literal) ;) (expression_statement "rl_directory_rewrite_hook = FUN_0008c7b0;" (assignment_expression "rl_directory_rewrite_hook = FUN_0008c7b0" identifier = identifier) ;) (expression_statement "rl_directory_completion_hook = (code *)0x0;" (assignment_expression "rl_directory_completion_hook = (code *)0x0" identifier = (cast_expression "(code *)0x0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) })) (expression_statement "DAT_0015145c = 4;" (assignment_expression "DAT_0015145c = 4" identifier = number_literal) ;) (expression_statement "pcVar3 = DAT_0015143c;" (assignment_expression "pcVar3 = DAT_0015143c" identifier = identifier) ;) (do_statement "do {\n        do {\n          while( true ) {\n            DAT_00151454 = (char *)rl_filename_completion_function(pcVar3,uVar8);\n            if ((DAT_0015145c == 4) && (dircomplete_expand != 0)) {\n              rl_directory_completion_hook = FUN_0008c7b0;\n              rl_directory_rewrite_hook = (code *)0x0;\n            }\n            DAT_00151438 = 1;\n            if (DAT_00151454 == (char *)0x0) break;\n            iVar2 = absolute_program(DAT_00151464);\n            pcVar5 = DAT_00151454;\n            if (iVar2 == 0) {\n              pcVar3 = strrchr(DAT_00151454,0x2f);\n              if (pcVar3 != (char *)0x0) {\n                pcVar3 = pcVar3 + 1;\n                if (DAT_00151450 == 0) {\n                  iVar2 = strncmp(pcVar3,DAT_00151464,DAT_00151444);\n                }\n                else {\n                  iVar2 = strncasecmp(pcVar3,DAT_00151464,DAT_00151444);\n                }\n                if (iVar2 == 0) {\n                  sVar4 = strlen(pcVar3);\n                  pcVar5 = (char *)xmalloc(sVar4 + 1);\n                  pcVar3 = strcpy(pcVar5,pcVar3);\n                  goto LAB_0008d6a4;\n                }\n              }\n            }\n            else {\n              if (DAT_00151450 == 0) {\n                iVar2 = strncmp(DAT_00151454,DAT_00151464,DAT_00151444);\n              }\n              else {\n                iVar2 = strncasecmp(DAT_00151454,DAT_00151464,DAT_00151444);\n              }\n              if (*param_1 == '~') {\n                pcVar3 = (char *)FUN_0008a220();\n              }\n              else {\n                sVar4 = strlen(pcVar5);\n                pcVar3 = (char *)xmalloc(sVar4 + 1);\n                pcVar3 = strcpy(pcVar3,pcVar5);\n              }\n              pcVar5 = DAT_00151454;\n              if (iVar2 == 0) {\nLAB_0008d6a4:\n                iVar2 = DAT_00151460;\n                pcVar10 = DAT_00151454;\n                sVar4 = strlen(DAT_00151454);\n                pcVar5 = (char *)xmalloc(sVar4 + 1);\n                local_24 = strcpy(pcVar5,pcVar10);\n                FUN_0008c7b0(&local_24);\n                if (iVar2 == 0) {\n                  iVar2 = executable_or_directory(local_24);\n                }\n                else {\n                  iVar2 = executable_file(local_24);\n                }\n                free(local_24);\n                pcVar5 = DAT_00151454;\n                if (iVar2 != 0) {\n                  if (pcVar10 != DAT_00151454) {\n                    free(pcVar10);\n                  }\n                  free(pcVar5);\n                  DAT_00151454 = "";\n                  goto LAB_0008d5c8;\n                }\n                free(pcVar3);\n                if (pcVar10 != pcVar5) {\n                  free(pcVar10);\n                }\n              }\n              else {\n                free(pcVar3);\n              }\n            }\n            free(pcVar5);\n            uVar8 = DAT_00151438;\n            pcVar3 = DAT_0015143c;\n          }\n          iVar2 = absolute_program(DAT_00151464);\n          if (iVar2 != 0) goto LAB_0008dac4;\nLAB_0008d5f6:\n          uVar8 = (uint)(DAT_00151454 != (char *)0x0);\n          pcVar3 = DAT_0015143c;\n          DAT_00151438 = uVar8;\n        } while (DAT_00151454 != (char *)0x0);\n        if (((DAT_00151434 == 0) || (*(char *)(DAT_00151434 + DAT_00151430) == '\0')) ||\n           (pcVar3 = (char *)extract_colon_unit(DAT_00151434,&DAT_00151430), pcVar3 == (char *)0x0))\n        goto LAB_0008dac4;\n        DAT_00151460 = 1;\n        cVar11 = *pcVar3;\n        if (cVar11 == '\0') {\n          free(pcVar3);\n          pcVar3 = (char *)xmalloc(2);\n          pcVar3[0] = '.';\n          pcVar3[1] = '\0';\n          cVar11 = '.';\n        }\n        pcVar5 = pcVar3;\n        if (cVar11 == '~') {\n          pcVar5 = (char *)bash_tilde_expand(pcVar3,0);\n          free(pcVar3);\n          cVar11 = *pcVar5;\n        }\n        pcVar3 = DAT_00151440;\n        if ((cVar11 == '.') && (pcVar5[1] == '\0')) {\n          DAT_001514ec = 1;\n        }\n        if (DAT_0015143c == (char *)0x0) {\nLAB_0008dbfe:\n          if (pcVar3 != (char *)0x0) goto LAB_0008de5f;\n        }\n        else {\n          if (DAT_0015143c != DAT_00151440) {\n            free(DAT_0015143c);\n            goto LAB_0008dbfe;\n          }\nLAB_0008de5f:\n          free(pcVar3);\n        }\n        pcVar3 = (char *)sh_makepath(pcVar5,DAT_00151464,0);\n        DAT_00151440 = pcVar3;\n        pcVar10 = strpbrk(pcVar3,"\"\'\\");\n        if (pcVar10 != (char *)0x0) {\n          pcVar3 = (char *)sh_backslash_quote(pcVar3,&DAT_00151500,0);\n        }\n        DAT_0015143c = pcVar3;\n        free(pcVar5);\n        uVar8 = DAT_00151438;\n      } while( true );" do (compound_statement "{\n        do {\n          while( true ) {\n            DAT_00151454 = (char *)rl_filename_completion_function(pcVar3,uVar8);\n            if ((DAT_0015145c == 4) && (dircomplete_expand != 0)) {\n              rl_directory_completion_hook = FUN_0008c7b0;\n              rl_directory_rewrite_hook = (code *)0x0;\n            }\n            DAT_00151438 = 1;\n            if (DAT_00151454 == (char *)0x0) break;\n            iVar2 = absolute_program(DAT_00151464);\n            pcVar5 = DAT_00151454;\n            if (iVar2 == 0) {\n              pcVar3 = strrchr(DAT_00151454,0x2f);\n              if (pcVar3 != (char *)0x0) {\n                pcVar3 = pcVar3 + 1;\n                if (DAT_00151450 == 0) {\n                  iVar2 = strncmp(pcVar3,DAT_00151464,DAT_00151444);\n                }\n                else {\n                  iVar2 = strncasecmp(pcVar3,DAT_00151464,DAT_00151444);\n                }\n                if (iVar2 == 0) {\n                  sVar4 = strlen(pcVar3);\n                  pcVar5 = (char *)xmalloc(sVar4 + 1);\n                  pcVar3 = strcpy(pcVar5,pcVar3);\n                  goto LAB_0008d6a4;\n                }\n              }\n            }\n            else {\n              if (DAT_00151450 == 0) {\n                iVar2 = strncmp(DAT_00151454,DAT_00151464,DAT_00151444);\n              }\n              else {\n                iVar2 = strncasecmp(DAT_00151454,DAT_00151464,DAT_00151444);\n              }\n              if (*param_1 == '~') {\n                pcVar3 = (char *)FUN_0008a220();\n              }\n              else {\n                sVar4 = strlen(pcVar5);\n                pcVar3 = (char *)xmalloc(sVar4 + 1);\n                pcVar3 = strcpy(pcVar3,pcVar5);\n              }\n              pcVar5 = DAT_00151454;\n              if (iVar2 == 0) {\nLAB_0008d6a4:\n                iVar2 = DAT_00151460;\n                pcVar10 = DAT_00151454;\n                sVar4 = strlen(DAT_00151454);\n                pcVar5 = (char *)xmalloc(sVar4 + 1);\n                local_24 = strcpy(pcVar5,pcVar10);\n                FUN_0008c7b0(&local_24);\n                if (iVar2 == 0) {\n                  iVar2 = executable_or_directory(local_24);\n                }\n                else {\n                  iVar2 = executable_file(local_24);\n                }\n                free(local_24);\n                pcVar5 = DAT_00151454;\n                if (iVar2 != 0) {\n                  if (pcVar10 != DAT_00151454) {\n                    free(pcVar10);\n                  }\n                  free(pcVar5);\n                  DAT_00151454 = "";\n                  goto LAB_0008d5c8;\n                }\n                free(pcVar3);\n                if (pcVar10 != pcVar5) {\n                  free(pcVar10);\n                }\n              }\n              else {\n                free(pcVar3);\n              }\n            }\n            free(pcVar5);\n            uVar8 = DAT_00151438;\n            pcVar3 = DAT_0015143c;\n          }\n          iVar2 = absolute_program(DAT_00151464);\n          if (iVar2 != 0) goto LAB_0008dac4;\nLAB_0008d5f6:\n          uVar8 = (uint)(DAT_00151454 != (char *)0x0);\n          pcVar3 = DAT_0015143c;\n          DAT_00151438 = uVar8;\n        } while (DAT_00151454 != (char *)0x0);\n        if (((DAT_00151434 == 0) || (*(char *)(DAT_00151434 + DAT_00151430) == '\0')) ||\n           (pcVar3 = (char *)extract_colon_unit(DAT_00151434,&DAT_00151430), pcVar3 == (char *)0x0))\n        goto LAB_0008dac4;\n        DAT_00151460 = 1;\n        cVar11 = *pcVar3;\n        if (cVar11 == '\0') {\n          free(pcVar3);\n          pcVar3 = (char *)xmalloc(2);\n          pcVar3[0] = '.';\n          pcVar3[1] = '\0';\n          cVar11 = '.';\n        }\n        pcVar5 = pcVar3;\n        if (cVar11 == '~') {\n          pcVar5 = (char *)bash_tilde_expand(pcVar3,0);\n          free(pcVar3);\n          cVar11 = *pcVar5;\n        }\n        pcVar3 = DAT_00151440;\n        if ((cVar11 == '.') && (pcVar5[1] == '\0')) {\n          DAT_001514ec = 1;\n        }\n        if (DAT_0015143c == (char *)0x0) {\nLAB_0008dbfe:\n          if (pcVar3 != (char *)0x0) goto LAB_0008de5f;\n        }\n        else {\n          if (DAT_0015143c != DAT_00151440) {\n            free(DAT_0015143c);\n            goto LAB_0008dbfe;\n          }\nLAB_0008de5f:\n          free(pcVar3);\n        }\n        pcVar3 = (char *)sh_makepath(pcVar5,DAT_00151464,0);\n        DAT_00151440 = pcVar3;\n        pcVar10 = strpbrk(pcVar3,"\"\'\\");\n        if (pcVar10 != (char *)0x0) {\n          pcVar3 = (char *)sh_backslash_quote(pcVar3,&DAT_00151500,0);\n        }\n        DAT_0015143c = pcVar3;\n        free(pcVar5);\n        uVar8 = DAT_00151438;\n      }" { (do_statement "do {\n          while( true ) {\n            DAT_00151454 = (char *)rl_filename_completion_function(pcVar3,uVar8);\n            if ((DAT_0015145c == 4) && (dircomplete_expand != 0)) {\n              rl_directory_completion_hook = FUN_0008c7b0;\n              rl_directory_rewrite_hook = (code *)0x0;\n            }\n            DAT_00151438 = 1;\n            if (DAT_00151454 == (char *)0x0) break;\n            iVar2 = absolute_program(DAT_00151464);\n            pcVar5 = DAT_00151454;\n            if (iVar2 == 0) {\n              pcVar3 = strrchr(DAT_00151454,0x2f);\n              if (pcVar3 != (char *)0x0) {\n                pcVar3 = pcVar3 + 1;\n                if (DAT_00151450 == 0) {\n                  iVar2 = strncmp(pcVar3,DAT_00151464,DAT_00151444);\n                }\n                else {\n                  iVar2 = strncasecmp(pcVar3,DAT_00151464,DAT_00151444);\n                }\n                if (iVar2 == 0) {\n                  sVar4 = strlen(pcVar3);\n                  pcVar5 = (char *)xmalloc(sVar4 + 1);\n                  pcVar3 = strcpy(pcVar5,pcVar3);\n                  goto LAB_0008d6a4;\n                }\n              }\n            }\n            else {\n              if (DAT_00151450 == 0) {\n                iVar2 = strncmp(DAT_00151454,DAT_00151464,DAT_00151444);\n              }\n              else {\n                iVar2 = strncasecmp(DAT_00151454,DAT_00151464,DAT_00151444);\n              }\n              if (*param_1 == '~') {\n                pcVar3 = (char *)FUN_0008a220();\n              }\n              else {\n                sVar4 = strlen(pcVar5);\n                pcVar3 = (char *)xmalloc(sVar4 + 1);\n                pcVar3 = strcpy(pcVar3,pcVar5);\n              }\n              pcVar5 = DAT_00151454;\n              if (iVar2 == 0) {\nLAB_0008d6a4:\n                iVar2 = DAT_00151460;\n                pcVar10 = DAT_00151454;\n                sVar4 = strlen(DAT_00151454);\n                pcVar5 = (char *)xmalloc(sVar4 + 1);\n                local_24 = strcpy(pcVar5,pcVar10);\n                FUN_0008c7b0(&local_24);\n                if (iVar2 == 0) {\n                  iVar2 = executable_or_directory(local_24);\n                }\n                else {\n                  iVar2 = executable_file(local_24);\n                }\n                free(local_24);\n                pcVar5 = DAT_00151454;\n                if (iVar2 != 0) {\n                  if (pcVar10 != DAT_00151454) {\n                    free(pcVar10);\n                  }\n                  free(pcVar5);\n                  DAT_00151454 = "";\n                  goto LAB_0008d5c8;\n                }\n                free(pcVar3);\n                if (pcVar10 != pcVar5) {\n                  free(pcVar10);\n                }\n              }\n              else {\n                free(pcVar3);\n              }\n            }\n            free(pcVar5);\n            uVar8 = DAT_00151438;\n            pcVar3 = DAT_0015143c;\n          }\n          iVar2 = absolute_program(DAT_00151464);\n          if (iVar2 != 0) goto LAB_0008dac4;\nLAB_0008d5f6:\n          uVar8 = (uint)(DAT_00151454 != (char *)0x0);\n          pcVar3 = DAT_0015143c;\n          DAT_00151438 = uVar8;\n        } while (DAT_00151454 != (char *)0x0);" do (compound_statement "{\n          while( true ) {\n            DAT_00151454 = (char *)rl_filename_completion_function(pcVar3,uVar8);\n            if ((DAT_0015145c == 4) && (dircomplete_expand != 0)) {\n              rl_directory_completion_hook = FUN_0008c7b0;\n              rl_directory_rewrite_hook = (code *)0x0;\n            }\n            DAT_00151438 = 1;\n            if (DAT_00151454 == (char *)0x0) break;\n            iVar2 = absolute_program(DAT_00151464);\n            pcVar5 = DAT_00151454;\n            if (iVar2 == 0) {\n              pcVar3 = strrchr(DAT_00151454,0x2f);\n              if (pcVar3 != (char *)0x0) {\n                pcVar3 = pcVar3 + 1;\n                if (DAT_00151450 == 0) {\n                  iVar2 = strncmp(pcVar3,DAT_00151464,DAT_00151444);\n                }\n                else {\n                  iVar2 = strncasecmp(pcVar3,DAT_00151464,DAT_00151444);\n                }\n                if (iVar2 == 0) {\n                  sVar4 = strlen(pcVar3);\n                  pcVar5 = (char *)xmalloc(sVar4 + 1);\n                  pcVar3 = strcpy(pcVar5,pcVar3);\n                  goto LAB_0008d6a4;\n                }\n              }\n            }\n            else {\n              if (DAT_00151450 == 0) {\n                iVar2 = strncmp(DAT_00151454,DAT_00151464,DAT_00151444);\n              }\n              else {\n                iVar2 = strncasecmp(DAT_00151454,DAT_00151464,DAT_00151444);\n              }\n              if (*param_1 == '~') {\n                pcVar3 = (char *)FUN_0008a220();\n              }\n              else {\n                sVar4 = strlen(pcVar5);\n                pcVar3 = (char *)xmalloc(sVar4 + 1);\n                pcVar3 = strcpy(pcVar3,pcVar5);\n              }\n              pcVar5 = DAT_00151454;\n              if (iVar2 == 0) {\nLAB_0008d6a4:\n                iVar2 = DAT_00151460;\n                pcVar10 = DAT_00151454;\n                sVar4 = strlen(DAT_00151454);\n                pcVar5 = (char *)xmalloc(sVar4 + 1);\n                local_24 = strcpy(pcVar5,pcVar10);\n                FUN_0008c7b0(&local_24);\n                if (iVar2 == 0) {\n                  iVar2 = executable_or_directory(local_24);\n                }\n                else {\n                  iVar2 = executable_file(local_24);\n                }\n                free(local_24);\n                pcVar5 = DAT_00151454;\n                if (iVar2 != 0) {\n                  if (pcVar10 != DAT_00151454) {\n                    free(pcVar10);\n                  }\n                  free(pcVar5);\n                  DAT_00151454 = "";\n                  goto LAB_0008d5c8;\n                }\n                free(pcVar3);\n                if (pcVar10 != pcVar5) {\n                  free(pcVar10);\n                }\n              }\n              else {\n                free(pcVar3);\n              }\n            }\n            free(pcVar5);\n            uVar8 = DAT_00151438;\n            pcVar3 = DAT_0015143c;\n          }\n          iVar2 = absolute_program(DAT_00151464);\n          if (iVar2 != 0) goto LAB_0008dac4;\nLAB_0008d5f6:\n          uVar8 = (uint)(DAT_00151454 != (char *)0x0);\n          pcVar3 = DAT_0015143c;\n          DAT_00151438 = uVar8;\n        }" { (while_statement "while( true ) {\n            DAT_00151454 = (char *)rl_filename_completion_function(pcVar3,uVar8);\n            if ((DAT_0015145c == 4) && (dircomplete_expand != 0)) {\n              rl_directory_completion_hook = FUN_0008c7b0;\n              rl_directory_rewrite_hook = (code *)0x0;\n            }\n            DAT_00151438 = 1;\n            if (DAT_00151454 == (char *)0x0) break;\n            iVar2 = absolute_program(DAT_00151464);\n            pcVar5 = DAT_00151454;\n            if (iVar2 == 0) {\n              pcVar3 = strrchr(DAT_00151454,0x2f);\n              if (pcVar3 != (char *)0x0) {\n                pcVar3 = pcVar3 + 1;\n                if (DAT_00151450 == 0) {\n                  iVar2 = strncmp(pcVar3,DAT_00151464,DAT_00151444);\n                }\n                else {\n                  iVar2 = strncasecmp(pcVar3,DAT_00151464,DAT_00151444);\n                }\n                if (iVar2 == 0) {\n                  sVar4 = strlen(pcVar3);\n                  pcVar5 = (char *)xmalloc(sVar4 + 1);\n                  pcVar3 = strcpy(pcVar5,pcVar3);\n                  goto LAB_0008d6a4;\n                }\n              }\n            }\n            else {\n              if (DAT_00151450 == 0) {\n                iVar2 = strncmp(DAT_00151454,DAT_00151464,DAT_00151444);\n              }\n              else {\n                iVar2 = strncasecmp(DAT_00151454,DAT_00151464,DAT_00151444);\n              }\n              if (*param_1 == '~') {\n                pcVar3 = (char *)FUN_0008a220();\n              }\n              else {\n                sVar4 = strlen(pcVar5);\n                pcVar3 = (char *)xmalloc(sVar4 + 1);\n                pcVar3 = strcpy(pcVar3,pcVar5);\n              }\n              pcVar5 = DAT_00151454;\n              if (iVar2 == 0) {\nLAB_0008d6a4:\n                iVar2 = DAT_00151460;\n                pcVar10 = DAT_00151454;\n                sVar4 = strlen(DAT_00151454);\n                pcVar5 = (char *)xmalloc(sVar4 + 1);\n                local_24 = strcpy(pcVar5,pcVar10);\n                FUN_0008c7b0(&local_24);\n                if (iVar2 == 0) {\n                  iVar2 = executable_or_directory(local_24);\n                }\n                else {\n                  iVar2 = executable_file(local_24);\n                }\n                free(local_24);\n                pcVar5 = DAT_00151454;\n                if (iVar2 != 0) {\n                  if (pcVar10 != DAT_00151454) {\n                    free(pcVar10);\n                  }\n                  free(pcVar5);\n                  DAT_00151454 = "";\n                  goto LAB_0008d5c8;\n                }\n                free(pcVar3);\n                if (pcVar10 != pcVar5) {\n                  free(pcVar10);\n                }\n              }\n              else {\n                free(pcVar3);\n              }\n            }\n            free(pcVar5);\n            uVar8 = DAT_00151438;\n            pcVar3 = DAT_0015143c;\n          }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n            DAT_00151454 = (char *)rl_filename_completion_function(pcVar3,uVar8);\n            if ((DAT_0015145c == 4) && (dircomplete_expand != 0)) {\n              rl_directory_completion_hook = FUN_0008c7b0;\n              rl_directory_rewrite_hook = (code *)0x0;\n            }\n            DAT_00151438 = 1;\n            if (DAT_00151454 == (char *)0x0) break;\n            iVar2 = absolute_program(DAT_00151464);\n            pcVar5 = DAT_00151454;\n            if (iVar2 == 0) {\n              pcVar3 = strrchr(DAT_00151454,0x2f);\n              if (pcVar3 != (char *)0x0) {\n                pcVar3 = pcVar3 + 1;\n                if (DAT_00151450 == 0) {\n                  iVar2 = strncmp(pcVar3,DAT_00151464,DAT_00151444);\n                }\n                else {\n                  iVar2 = strncasecmp(pcVar3,DAT_00151464,DAT_00151444);\n                }\n                if (iVar2 == 0) {\n                  sVar4 = strlen(pcVar3);\n                  pcVar5 = (char *)xmalloc(sVar4 + 1);\n                  pcVar3 = strcpy(pcVar5,pcVar3);\n                  goto LAB_0008d6a4;\n                }\n              }\n            }\n            else {\n              if (DAT_00151450 == 0) {\n                iVar2 = strncmp(DAT_00151454,DAT_00151464,DAT_00151444);\n              }\n              else {\n                iVar2 = strncasecmp(DAT_00151454,DAT_00151464,DAT_00151444);\n              }\n              if (*param_1 == '~') {\n                pcVar3 = (char *)FUN_0008a220();\n              }\n              else {\n                sVar4 = strlen(pcVar5);\n                pcVar3 = (char *)xmalloc(sVar4 + 1);\n                pcVar3 = strcpy(pcVar3,pcVar5);\n              }\n              pcVar5 = DAT_00151454;\n              if (iVar2 == 0) {\nLAB_0008d6a4:\n                iVar2 = DAT_00151460;\n                pcVar10 = DAT_00151454;\n                sVar4 = strlen(DAT_00151454);\n                pcVar5 = (char *)xmalloc(sVar4 + 1);\n                local_24 = strcpy(pcVar5,pcVar10);\n                FUN_0008c7b0(&local_24);\n                if (iVar2 == 0) {\n                  iVar2 = executable_or_directory(local_24);\n                }\n                else {\n                  iVar2 = executable_file(local_24);\n                }\n                free(local_24);\n                pcVar5 = DAT_00151454;\n                if (iVar2 != 0) {\n                  if (pcVar10 != DAT_00151454) {\n                    free(pcVar10);\n                  }\n                  free(pcVar5);\n                  DAT_00151454 = "";\n                  goto LAB_0008d5c8;\n                }\n                free(pcVar3);\n                if (pcVar10 != pcVar5) {\n                  free(pcVar10);\n                }\n              }\n              else {\n                free(pcVar3);\n              }\n            }\n            free(pcVar5);\n            uVar8 = DAT_00151438;\n            pcVar3 = DAT_0015143c;\n          }" { (expression_statement "DAT_00151454 = (char *)rl_filename_completion_function(pcVar3,uVar8);" (assignment_expression "DAT_00151454 = (char *)rl_filename_completion_function(pcVar3,uVar8)" identifier = (cast_expression "(char *)rl_filename_completion_function(pcVar3,uVar8)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "rl_filename_completion_function(pcVar3,uVar8)" identifier (argument_list "(pcVar3,uVar8)" ( identifier , identifier ))))) ;) (if_statement "if ((DAT_0015145c == 4) && (dircomplete_expand != 0)) {\n              rl_directory_completion_hook = FUN_0008c7b0;\n              rl_directory_rewrite_hook = (code *)0x0;\n            }" if (parenthesized_expression "((DAT_0015145c == 4) && (dircomplete_expand != 0))" ( (binary_expression "(DAT_0015145c == 4) && (dircomplete_expand != 0)" (parenthesized_expression "(DAT_0015145c == 4)" ( (binary_expression "DAT_0015145c == 4" identifier == number_literal) )) && (parenthesized_expression "(dircomplete_expand != 0)" ( (binary_expression "dircomplete_expand != 0" identifier != number_literal) ))) )) (compound_statement "{\n              rl_directory_completion_hook = FUN_0008c7b0;\n              rl_directory_rewrite_hook = (code *)0x0;\n            }" { (expression_statement "rl_directory_completion_hook = FUN_0008c7b0;" (assignment_expression "rl_directory_completion_hook = FUN_0008c7b0" identifier = identifier) ;) (expression_statement "rl_directory_rewrite_hook = (code *)0x0;" (assignment_expression "rl_directory_rewrite_hook = (code *)0x0" identifier = (cast_expression "(code *)0x0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) })) (expression_statement "DAT_00151438 = 1;" (assignment_expression "DAT_00151438 = 1" identifier = number_literal) ;) (if_statement "if (DAT_00151454 == (char *)0x0) break;" if (parenthesized_expression "(DAT_00151454 == (char *)0x0)" ( (binary_expression "DAT_00151454 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (break_statement "break;" break ;)) (expression_statement "iVar2 = absolute_program(DAT_00151464);" (assignment_expression "iVar2 = absolute_program(DAT_00151464)" identifier = (call_expression "absolute_program(DAT_00151464)" identifier (argument_list "(DAT_00151464)" ( identifier )))) ;) (expression_statement "pcVar5 = DAT_00151454;" (assignment_expression "pcVar5 = DAT_00151454" identifier = identifier) ;) (if_statement "if (iVar2 == 0) {\n              pcVar3 = strrchr(DAT_00151454,0x2f);\n              if (pcVar3 != (char *)0x0) {\n                pcVar3 = pcVar3 + 1;\n                if (DAT_00151450 == 0) {\n                  iVar2 = strncmp(pcVar3,DAT_00151464,DAT_00151444);\n                }\n                else {\n                  iVar2 = strncasecmp(pcVar3,DAT_00151464,DAT_00151444);\n                }\n                if (iVar2 == 0) {\n                  sVar4 = strlen(pcVar3);\n                  pcVar5 = (char *)xmalloc(sVar4 + 1);\n                  pcVar3 = strcpy(pcVar5,pcVar3);\n                  goto LAB_0008d6a4;\n                }\n              }\n            }\n            else {\n              if (DAT_00151450 == 0) {\n                iVar2 = strncmp(DAT_00151454,DAT_00151464,DAT_00151444);\n              }\n              else {\n                iVar2 = strncasecmp(DAT_00151454,DAT_00151464,DAT_00151444);\n              }\n              if (*param_1 == '~') {\n                pcVar3 = (char *)FUN_0008a220();\n              }\n              else {\n                sVar4 = strlen(pcVar5);\n                pcVar3 = (char *)xmalloc(sVar4 + 1);\n                pcVar3 = strcpy(pcVar3,pcVar5);\n              }\n              pcVar5 = DAT_00151454;\n              if (iVar2 == 0) {\nLAB_0008d6a4:\n                iVar2 = DAT_00151460;\n                pcVar10 = DAT_00151454;\n                sVar4 = strlen(DAT_00151454);\n                pcVar5 = (char *)xmalloc(sVar4 + 1);\n                local_24 = strcpy(pcVar5,pcVar10);\n                FUN_0008c7b0(&local_24);\n                if (iVar2 == 0) {\n                  iVar2 = executable_or_directory(local_24);\n                }\n                else {\n                  iVar2 = executable_file(local_24);\n                }\n                free(local_24);\n                pcVar5 = DAT_00151454;\n                if (iVar2 != 0) {\n                  if (pcVar10 != DAT_00151454) {\n                    free(pcVar10);\n                  }\n                  free(pcVar5);\n                  DAT_00151454 = "";\n                  goto LAB_0008d5c8;\n                }\n                free(pcVar3);\n                if (pcVar10 != pcVar5) {\n                  free(pcVar10);\n                }\n              }\n              else {\n                free(pcVar3);\n              }\n            }" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (compound_statement "{\n              pcVar3 = strrchr(DAT_00151454,0x2f);\n              if (pcVar3 != (char *)0x0) {\n                pcVar3 = pcVar3 + 1;\n                if (DAT_00151450 == 0) {\n                  iVar2 = strncmp(pcVar3,DAT_00151464,DAT_00151444);\n                }\n                else {\n                  iVar2 = strncasecmp(pcVar3,DAT_00151464,DAT_00151444);\n                }\n                if (iVar2 == 0) {\n                  sVar4 = strlen(pcVar3);\n                  pcVar5 = (char *)xmalloc(sVar4 + 1);\n                  pcVar3 = strcpy(pcVar5,pcVar3);\n                  goto LAB_0008d6a4;\n                }\n              }\n            }" { (expression_statement "pcVar3 = strrchr(DAT_00151454,0x2f);" (assignment_expression "pcVar3 = strrchr(DAT_00151454,0x2f)" identifier = (call_expression "strrchr(DAT_00151454,0x2f)" identifier (argument_list "(DAT_00151454,0x2f)" ( identifier , number_literal )))) ;) (if_statement "if (pcVar3 != (char *)0x0) {\n                pcVar3 = pcVar3 + 1;\n                if (DAT_00151450 == 0) {\n                  iVar2 = strncmp(pcVar3,DAT_00151464,DAT_00151444);\n                }\n                else {\n                  iVar2 = strncasecmp(pcVar3,DAT_00151464,DAT_00151444);\n                }\n                if (iVar2 == 0) {\n                  sVar4 = strlen(pcVar3);\n                  pcVar5 = (char *)xmalloc(sVar4 + 1);\n                  pcVar3 = strcpy(pcVar5,pcVar3);\n                  goto LAB_0008d6a4;\n                }\n              }" if (parenthesized_expression "(pcVar3 != (char *)0x0)" ( (binary_expression "pcVar3 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                pcVar3 = pcVar3 + 1;\n                if (DAT_00151450 == 0) {\n                  iVar2 = strncmp(pcVar3,DAT_00151464,DAT_00151444);\n                }\n                else {\n                  iVar2 = strncasecmp(pcVar3,DAT_00151464,DAT_00151444);\n                }\n                if (iVar2 == 0) {\n                  sVar4 = strlen(pcVar3);\n                  pcVar5 = (char *)xmalloc(sVar4 + 1);\n                  pcVar3 = strcpy(pcVar5,pcVar3);\n                  goto LAB_0008d6a4;\n                }\n              }" { (expression_statement "pcVar3 = pcVar3 + 1;" (assignment_expression "pcVar3 = pcVar3 + 1" identifier = (binary_expression "pcVar3 + 1" identifier + number_literal)) ;) (if_statement "if (DAT_00151450 == 0) {\n                  iVar2 = strncmp(pcVar3,DAT_00151464,DAT_00151444);\n                }\n                else {\n                  iVar2 = strncasecmp(pcVar3,DAT_00151464,DAT_00151444);\n                }" if (parenthesized_expression "(DAT_00151450 == 0)" ( (binary_expression "DAT_00151450 == 0" identifier == number_literal) )) (compound_statement "{\n                  iVar2 = strncmp(pcVar3,DAT_00151464,DAT_00151444);\n                }" { (expression_statement "iVar2 = strncmp(pcVar3,DAT_00151464,DAT_00151444);" (assignment_expression "iVar2 = strncmp(pcVar3,DAT_00151464,DAT_00151444)" identifier = (call_expression "strncmp(pcVar3,DAT_00151464,DAT_00151444)" identifier (argument_list "(pcVar3,DAT_00151464,DAT_00151444)" ( identifier , identifier , identifier )))) ;) }) (else_clause "else {\n                  iVar2 = strncasecmp(pcVar3,DAT_00151464,DAT_00151444);\n                }" else (compound_statement "{\n                  iVar2 = strncasecmp(pcVar3,DAT_00151464,DAT_00151444);\n                }" { (expression_statement "iVar2 = strncasecmp(pcVar3,DAT_00151464,DAT_00151444);" (assignment_expression "iVar2 = strncasecmp(pcVar3,DAT_00151464,DAT_00151444)" identifier = (call_expression "strncasecmp(pcVar3,DAT_00151464,DAT_00151444)" identifier (argument_list "(pcVar3,DAT_00151464,DAT_00151444)" ( identifier , identifier , identifier )))) ;) }))) (if_statement "if (iVar2 == 0) {\n                  sVar4 = strlen(pcVar3);\n                  pcVar5 = (char *)xmalloc(sVar4 + 1);\n                  pcVar3 = strcpy(pcVar5,pcVar3);\n                  goto LAB_0008d6a4;\n                }" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (compound_statement "{\n                  sVar4 = strlen(pcVar3);\n                  pcVar5 = (char *)xmalloc(sVar4 + 1);\n                  pcVar3 = strcpy(pcVar5,pcVar3);\n                  goto LAB_0008d6a4;\n                }" { (expression_statement "sVar4 = strlen(pcVar3);" (assignment_expression "sVar4 = strlen(pcVar3)" identifier = (call_expression "strlen(pcVar3)" identifier (argument_list "(pcVar3)" ( identifier )))) ;) (expression_statement "pcVar5 = (char *)xmalloc(sVar4 + 1);" (assignment_expression "pcVar5 = (char *)xmalloc(sVar4 + 1)" identifier = (cast_expression "(char *)xmalloc(sVar4 + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(sVar4 + 1)" identifier (argument_list "(sVar4 + 1)" ( (binary_expression "sVar4 + 1" identifier + number_literal) ))))) ;) (expression_statement "pcVar3 = strcpy(pcVar5,pcVar3);" (assignment_expression "pcVar3 = strcpy(pcVar5,pcVar3)" identifier = (call_expression "strcpy(pcVar5,pcVar3)" identifier (argument_list "(pcVar5,pcVar3)" ( identifier , identifier )))) ;) (goto_statement "goto LAB_0008d6a4;" goto statement_identifier ;) })) })) }) (else_clause "else {\n              if (DAT_00151450 == 0) {\n                iVar2 = strncmp(DAT_00151454,DAT_00151464,DAT_00151444);\n              }\n              else {\n                iVar2 = strncasecmp(DAT_00151454,DAT_00151464,DAT_00151444);\n              }\n              if (*param_1 == '~') {\n                pcVar3 = (char *)FUN_0008a220();\n              }\n              else {\n                sVar4 = strlen(pcVar5);\n                pcVar3 = (char *)xmalloc(sVar4 + 1);\n                pcVar3 = strcpy(pcVar3,pcVar5);\n              }\n              pcVar5 = DAT_00151454;\n              if (iVar2 == 0) {\nLAB_0008d6a4:\n                iVar2 = DAT_00151460;\n                pcVar10 = DAT_00151454;\n                sVar4 = strlen(DAT_00151454);\n                pcVar5 = (char *)xmalloc(sVar4 + 1);\n                local_24 = strcpy(pcVar5,pcVar10);\n                FUN_0008c7b0(&local_24);\n                if (iVar2 == 0) {\n                  iVar2 = executable_or_directory(local_24);\n                }\n                else {\n                  iVar2 = executable_file(local_24);\n                }\n                free(local_24);\n                pcVar5 = DAT_00151454;\n                if (iVar2 != 0) {\n                  if (pcVar10 != DAT_00151454) {\n                    free(pcVar10);\n                  }\n                  free(pcVar5);\n                  DAT_00151454 = "";\n                  goto LAB_0008d5c8;\n                }\n                free(pcVar3);\n                if (pcVar10 != pcVar5) {\n                  free(pcVar10);\n                }\n              }\n              else {\n                free(pcVar3);\n              }\n            }" else (compound_statement "{\n              if (DAT_00151450 == 0) {\n                iVar2 = strncmp(DAT_00151454,DAT_00151464,DAT_00151444);\n              }\n              else {\n                iVar2 = strncasecmp(DAT_00151454,DAT_00151464,DAT_00151444);\n              }\n              if (*param_1 == '~') {\n                pcVar3 = (char *)FUN_0008a220();\n              }\n              else {\n                sVar4 = strlen(pcVar5);\n                pcVar3 = (char *)xmalloc(sVar4 + 1);\n                pcVar3 = strcpy(pcVar3,pcVar5);\n              }\n              pcVar5 = DAT_00151454;\n              if (iVar2 == 0) {\nLAB_0008d6a4:\n                iVar2 = DAT_00151460;\n                pcVar10 = DAT_00151454;\n                sVar4 = strlen(DAT_00151454);\n                pcVar5 = (char *)xmalloc(sVar4 + 1);\n                local_24 = strcpy(pcVar5,pcVar10);\n                FUN_0008c7b0(&local_24);\n                if (iVar2 == 0) {\n                  iVar2 = executable_or_directory(local_24);\n                }\n                else {\n                  iVar2 = executable_file(local_24);\n                }\n                free(local_24);\n                pcVar5 = DAT_00151454;\n                if (iVar2 != 0) {\n                  if (pcVar10 != DAT_00151454) {\n                    free(pcVar10);\n                  }\n                  free(pcVar5);\n                  DAT_00151454 = "";\n                  goto LAB_0008d5c8;\n                }\n                free(pcVar3);\n                if (pcVar10 != pcVar5) {\n                  free(pcVar10);\n                }\n              }\n              else {\n                free(pcVar3);\n              }\n            }" { (if_statement "if (DAT_00151450 == 0) {\n                iVar2 = strncmp(DAT_00151454,DAT_00151464,DAT_00151444);\n              }\n              else {\n                iVar2 = strncasecmp(DAT_00151454,DAT_00151464,DAT_00151444);\n              }" if (parenthesized_expression "(DAT_00151450 == 0)" ( (binary_expression "DAT_00151450 == 0" identifier == number_literal) )) (compound_statement "{\n                iVar2 = strncmp(DAT_00151454,DAT_00151464,DAT_00151444);\n              }" { (expression_statement "iVar2 = strncmp(DAT_00151454,DAT_00151464,DAT_00151444);" (assignment_expression "iVar2 = strncmp(DAT_00151454,DAT_00151464,DAT_00151444)" identifier = (call_expression "strncmp(DAT_00151454,DAT_00151464,DAT_00151444)" identifier (argument_list "(DAT_00151454,DAT_00151464,DAT_00151444)" ( identifier , identifier , identifier )))) ;) }) (else_clause "else {\n                iVar2 = strncasecmp(DAT_00151454,DAT_00151464,DAT_00151444);\n              }" else (compound_statement "{\n                iVar2 = strncasecmp(DAT_00151454,DAT_00151464,DAT_00151444);\n              }" { (expression_statement "iVar2 = strncasecmp(DAT_00151454,DAT_00151464,DAT_00151444);" (assignment_expression "iVar2 = strncasecmp(DAT_00151454,DAT_00151464,DAT_00151444)" identifier = (call_expression "strncasecmp(DAT_00151454,DAT_00151464,DAT_00151444)" identifier (argument_list "(DAT_00151454,DAT_00151464,DAT_00151444)" ( identifier , identifier , identifier )))) ;) }))) (if_statement "if (*param_1 == '~') {\n                pcVar3 = (char *)FUN_0008a220();\n              }\n              else {\n                sVar4 = strlen(pcVar5);\n                pcVar3 = (char *)xmalloc(sVar4 + 1);\n                pcVar3 = strcpy(pcVar3,pcVar5);\n              }" if (parenthesized_expression "(*param_1 == '~')" ( (binary_expression "*param_1 == '~'" (pointer_expression "*param_1" * identifier) == (char_literal "'~'" ' character ')) )) (compound_statement "{\n                pcVar3 = (char *)FUN_0008a220();\n              }" { (expression_statement "pcVar3 = (char *)FUN_0008a220();" (assignment_expression "pcVar3 = (char *)FUN_0008a220()" identifier = (cast_expression "(char *)FUN_0008a220()" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0008a220()" identifier (argument_list "()" ( ))))) ;) }) (else_clause "else {\n                sVar4 = strlen(pcVar5);\n                pcVar3 = (char *)xmalloc(sVar4 + 1);\n                pcVar3 = strcpy(pcVar3,pcVar5);\n              }" else (compound_statement "{\n                sVar4 = strlen(pcVar5);\n                pcVar3 = (char *)xmalloc(sVar4 + 1);\n                pcVar3 = strcpy(pcVar3,pcVar5);\n              }" { (expression_statement "sVar4 = strlen(pcVar5);" (assignment_expression "sVar4 = strlen(pcVar5)" identifier = (call_expression "strlen(pcVar5)" identifier (argument_list "(pcVar5)" ( identifier )))) ;) (expression_statement "pcVar3 = (char *)xmalloc(sVar4 + 1);" (assignment_expression "pcVar3 = (char *)xmalloc(sVar4 + 1)" identifier = (cast_expression "(char *)xmalloc(sVar4 + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(sVar4 + 1)" identifier (argument_list "(sVar4 + 1)" ( (binary_expression "sVar4 + 1" identifier + number_literal) ))))) ;) (expression_statement "pcVar3 = strcpy(pcVar3,pcVar5);" (assignment_expression "pcVar3 = strcpy(pcVar3,pcVar5)" identifier = (call_expression "strcpy(pcVar3,pcVar5)" identifier (argument_list "(pcVar3,pcVar5)" ( identifier , identifier )))) ;) }))) (expression_statement "pcVar5 = DAT_00151454;" (assignment_expression "pcVar5 = DAT_00151454" identifier = identifier) ;) (if_statement "if (iVar2 == 0) {\nLAB_0008d6a4:\n                iVar2 = DAT_00151460;\n                pcVar10 = DAT_00151454;\n                sVar4 = strlen(DAT_00151454);\n                pcVar5 = (char *)xmalloc(sVar4 + 1);\n                local_24 = strcpy(pcVar5,pcVar10);\n                FUN_0008c7b0(&local_24);\n                if (iVar2 == 0) {\n                  iVar2 = executable_or_directory(local_24);\n                }\n                else {\n                  iVar2 = executable_file(local_24);\n                }\n                free(local_24);\n                pcVar5 = DAT_00151454;\n                if (iVar2 != 0) {\n                  if (pcVar10 != DAT_00151454) {\n                    free(pcVar10);\n                  }\n                  free(pcVar5);\n                  DAT_00151454 = "";\n                  goto LAB_0008d5c8;\n                }\n                free(pcVar3);\n                if (pcVar10 != pcVar5) {\n                  free(pcVar10);\n                }\n              }\n              else {\n                free(pcVar3);\n              }" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (compound_statement "{\nLAB_0008d6a4:\n                iVar2 = DAT_00151460;\n                pcVar10 = DAT_00151454;\n                sVar4 = strlen(DAT_00151454);\n                pcVar5 = (char *)xmalloc(sVar4 + 1);\n                local_24 = strcpy(pcVar5,pcVar10);\n                FUN_0008c7b0(&local_24);\n                if (iVar2 == 0) {\n                  iVar2 = executable_or_directory(local_24);\n                }\n                else {\n                  iVar2 = executable_file(local_24);\n                }\n                free(local_24);\n                pcVar5 = DAT_00151454;\n                if (iVar2 != 0) {\n                  if (pcVar10 != DAT_00151454) {\n                    free(pcVar10);\n                  }\n                  free(pcVar5);\n                  DAT_00151454 = "";\n                  goto LAB_0008d5c8;\n                }\n                free(pcVar3);\n                if (pcVar10 != pcVar5) {\n                  free(pcVar10);\n                }\n              }" { (labeled_statement "LAB_0008d6a4:\n                iVar2 = DAT_00151460;" statement_identifier : (expression_statement "iVar2 = DAT_00151460;" (assignment_expression "iVar2 = DAT_00151460" identifier = identifier) ;)) (expression_statement "pcVar10 = DAT_00151454;" (assignment_expression "pcVar10 = DAT_00151454" identifier = identifier) ;) (expression_statement "sVar4 = strlen(DAT_00151454);" (assignment_expression "sVar4 = strlen(DAT_00151454)" identifier = (call_expression "strlen(DAT_00151454)" identifier (argument_list "(DAT_00151454)" ( identifier )))) ;) (expression_statement "pcVar5 = (char *)xmalloc(sVar4 + 1);" (assignment_expression "pcVar5 = (char *)xmalloc(sVar4 + 1)" identifier = (cast_expression "(char *)xmalloc(sVar4 + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(sVar4 + 1)" identifier (argument_list "(sVar4 + 1)" ( (binary_expression "sVar4 + 1" identifier + number_literal) ))))) ;) (expression_statement "local_24 = strcpy(pcVar5,pcVar10);" (assignment_expression "local_24 = strcpy(pcVar5,pcVar10)" identifier = (call_expression "strcpy(pcVar5,pcVar10)" identifier (argument_list "(pcVar5,pcVar10)" ( identifier , identifier )))) ;) (expression_statement "FUN_0008c7b0(&local_24);" (call_expression "FUN_0008c7b0(&local_24)" identifier (argument_list "(&local_24)" ( (pointer_expression "&local_24" & identifier) ))) ;) (if_statement "if (iVar2 == 0) {\n                  iVar2 = executable_or_directory(local_24);\n                }\n                else {\n                  iVar2 = executable_file(local_24);\n                }" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (compound_statement "{\n                  iVar2 = executable_or_directory(local_24);\n                }" { (expression_statement "iVar2 = executable_or_directory(local_24);" (assignment_expression "iVar2 = executable_or_directory(local_24)" identifier = (call_expression "executable_or_directory(local_24)" identifier (argument_list "(local_24)" ( identifier )))) ;) }) (else_clause "else {\n                  iVar2 = executable_file(local_24);\n                }" else (compound_statement "{\n                  iVar2 = executable_file(local_24);\n                }" { (expression_statement "iVar2 = executable_file(local_24);" (assignment_expression "iVar2 = executable_file(local_24)" identifier = (call_expression "executable_file(local_24)" identifier (argument_list "(local_24)" ( identifier )))) ;) }))) (expression_statement "free(local_24);" (call_expression "free(local_24)" identifier (argument_list "(local_24)" ( identifier ))) ;) (expression_statement "pcVar5 = DAT_00151454;" (assignment_expression "pcVar5 = DAT_00151454" identifier = identifier) ;) (if_statement "if (iVar2 != 0) {\n                  if (pcVar10 != DAT_00151454) {\n                    free(pcVar10);\n                  }\n                  free(pcVar5);\n                  DAT_00151454 = "";\n                  goto LAB_0008d5c8;\n                }" if (parenthesized_expression "(iVar2 != 0)" ( (binary_expression "iVar2 != 0" identifier != number_literal) )) (compound_statement "{\n                  if (pcVar10 != DAT_00151454) {\n                    free(pcVar10);\n                  }\n                  free(pcVar5);\n                  DAT_00151454 = "";\n                  goto LAB_0008d5c8;\n                }" { (if_statement "if (pcVar10 != DAT_00151454) {\n                    free(pcVar10);\n                  }" if (parenthesized_expression "(pcVar10 != DAT_00151454)" ( (binary_expression "pcVar10 != DAT_00151454" identifier != identifier) )) (compound_statement "{\n                    free(pcVar10);\n                  }" { (expression_statement "free(pcVar10);" (call_expression "free(pcVar10)" identifier (argument_list "(pcVar10)" ( identifier ))) ;) })) (expression_statement "free(pcVar5);" (call_expression "free(pcVar5)" identifier (argument_list "(pcVar5)" ( identifier ))) ;) (expression_statement "DAT_00151454 = "";" (assignment_expression "DAT_00151454 = """ identifier = (string_literal """" " ")) ;) (goto_statement "goto LAB_0008d5c8;" goto statement_identifier ;) })) (expression_statement "free(pcVar3);" (call_expression "free(pcVar3)" identifier (argument_list "(pcVar3)" ( identifier ))) ;) (if_statement "if (pcVar10 != pcVar5) {\n                  free(pcVar10);\n                }" if (parenthesized_expression "(pcVar10 != pcVar5)" ( (binary_expression "pcVar10 != pcVar5" identifier != identifier) )) (compound_statement "{\n                  free(pcVar10);\n                }" { (expression_statement "free(pcVar10);" (call_expression "free(pcVar10)" identifier (argument_list "(pcVar10)" ( identifier ))) ;) })) }) (else_clause "else {\n                free(pcVar3);\n              }" else (compound_statement "{\n                free(pcVar3);\n              }" { (expression_statement "free(pcVar3);" (call_expression "free(pcVar3)" identifier (argument_list "(pcVar3)" ( identifier ))) ;) }))) }))) (expression_statement "free(pcVar5);" (call_expression "free(pcVar5)" identifier (argument_list "(pcVar5)" ( identifier ))) ;) (expression_statement "uVar8 = DAT_00151438;" (assignment_expression "uVar8 = DAT_00151438" identifier = identifier) ;) (expression_statement "pcVar3 = DAT_0015143c;" (assignment_expression "pcVar3 = DAT_0015143c" identifier = identifier) ;) })) (expression_statement "iVar2 = absolute_program(DAT_00151464);" (assignment_expression "iVar2 = absolute_program(DAT_00151464)" identifier = (call_expression "absolute_program(DAT_00151464)" identifier (argument_list "(DAT_00151464)" ( identifier )))) ;) (if_statement "if (iVar2 != 0) goto LAB_0008dac4;" if (parenthesized_expression "(iVar2 != 0)" ( (binary_expression "iVar2 != 0" identifier != number_literal) )) (goto_statement "goto LAB_0008dac4;" goto statement_identifier ;)) (labeled_statement "LAB_0008d5f6:\n          uVar8 = (uint)(DAT_00151454 != (char *)0x0);" statement_identifier : (expression_statement "uVar8 = (uint)(DAT_00151454 != (char *)0x0);" (assignment_expression "uVar8 = (uint)(DAT_00151454 != (char *)0x0)" identifier = (call_expression "(uint)(DAT_00151454 != (char *)0x0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(DAT_00151454 != (char *)0x0)" ( (binary_expression "DAT_00151454 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )))) ;)) (expression_statement "pcVar3 = DAT_0015143c;" (assignment_expression "pcVar3 = DAT_0015143c" identifier = identifier) ;) (expression_statement "DAT_00151438 = uVar8;" (assignment_expression "DAT_00151438 = uVar8" identifier = identifier) ;) }) while (parenthesized_expression "(DAT_00151454 != (char *)0x0)" ( (binary_expression "DAT_00151454 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) (if_statement "if (((DAT_00151434 == 0) || (*(char *)(DAT_00151434 + DAT_00151430) == '\0')) ||\n           (pcVar3 = (char *)extract_colon_unit(DAT_00151434,&DAT_00151430), pcVar3 == (char *)0x0))\n        goto LAB_0008dac4;" if (parenthesized_expression "(((DAT_00151434 == 0) || (*(char *)(DAT_00151434 + DAT_00151430) == '\0')) ||\n           (pcVar3 = (char *)extract_colon_unit(DAT_00151434,&DAT_00151430), pcVar3 == (char *)0x0))" ( (binary_expression "((DAT_00151434 == 0) || (*(char *)(DAT_00151434 + DAT_00151430) == '\0')) ||\n           (pcVar3 = (char *)extract_colon_unit(DAT_00151434,&DAT_00151430), pcVar3 == (char *)0x0)" (parenthesized_expression "((DAT_00151434 == 0) || (*(char *)(DAT_00151434 + DAT_00151430) == '\0'))" ( (binary_expression "(DAT_00151434 == 0) || (*(char *)(DAT_00151434 + DAT_00151430) == '\0')" (parenthesized_expression "(DAT_00151434 == 0)" ( (binary_expression "DAT_00151434 == 0" identifier == number_literal) )) || (parenthesized_expression "(*(char *)(DAT_00151434 + DAT_00151430) == '\0')" ( (binary_expression "*(char *)(DAT_00151434 + DAT_00151430) == '\0'" (pointer_expression "*(char *)(DAT_00151434 + DAT_00151430)" * (cast_expression "(char *)(DAT_00151434 + DAT_00151430)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_00151434 + DAT_00151430)" ( (binary_expression "DAT_00151434 + DAT_00151430" identifier + identifier) )))) == (char_literal "'\0'" ' escape_sequence ')) ))) )) || (parenthesized_expression "(pcVar3 = (char *)extract_colon_unit(DAT_00151434,&DAT_00151430), pcVar3 == (char *)0x0)" ( (comma_expression "pcVar3 = (char *)extract_colon_unit(DAT_00151434,&DAT_00151430), pcVar3 == (char *)0x0" (assignment_expression "pcVar3 = (char *)extract_colon_unit(DAT_00151434,&DAT_00151430)" identifier = (cast_expression "(char *)extract_colon_unit(DAT_00151434,&DAT_00151430)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "extract_colon_unit(DAT_00151434,&DAT_00151430)" identifier (argument_list "(DAT_00151434,&DAT_00151430)" ( identifier , (pointer_expression "&DAT_00151430" & identifier) ))))) , (binary_expression "pcVar3 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) (goto_statement "goto LAB_0008dac4;" goto statement_identifier ;)) (expression_statement "DAT_00151460 = 1;" (assignment_expression "DAT_00151460 = 1" identifier = number_literal) ;) (expression_statement "cVar11 = *pcVar3;" (assignment_expression "cVar11 = *pcVar3" identifier = (pointer_expression "*pcVar3" * identifier)) ;) (if_statement "if (cVar11 == '\0') {\n          free(pcVar3);\n          pcVar3 = (char *)xmalloc(2);\n          pcVar3[0] = '.';\n          pcVar3[1] = '\0';\n          cVar11 = '.';\n        }" if (parenthesized_expression "(cVar11 == '\0')" ( (binary_expression "cVar11 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n          free(pcVar3);\n          pcVar3 = (char *)xmalloc(2);\n          pcVar3[0] = '.';\n          pcVar3[1] = '\0';\n          cVar11 = '.';\n        }" { (expression_statement "free(pcVar3);" (call_expression "free(pcVar3)" identifier (argument_list "(pcVar3)" ( identifier ))) ;) (expression_statement "pcVar3 = (char *)xmalloc(2);" (assignment_expression "pcVar3 = (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 "pcVar3[0] = '.';" (assignment_expression "pcVar3[0] = '.'" (subscript_expression "pcVar3[0]" identifier [ number_literal ]) = (char_literal "'.'" ' character ')) ;) (expression_statement "pcVar3[1] = '\0';" (assignment_expression "pcVar3[1] = '\0'" (subscript_expression "pcVar3[1]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "cVar11 = '.';" (assignment_expression "cVar11 = '.'" identifier = (char_literal "'.'" ' character ')) ;) })) (expression_statement "pcVar5 = pcVar3;" (assignment_expression "pcVar5 = pcVar3" identifier = identifier) ;) (if_statement "if (cVar11 == '~') {\n          pcVar5 = (char *)bash_tilde_expand(pcVar3,0);\n          free(pcVar3);\n          cVar11 = *pcVar5;\n        }" if (parenthesized_expression "(cVar11 == '~')" ( (binary_expression "cVar11 == '~'" identifier == (char_literal "'~'" ' character ')) )) (compound_statement "{\n          pcVar5 = (char *)bash_tilde_expand(pcVar3,0);\n          free(pcVar3);\n          cVar11 = *pcVar5;\n        }" { (expression_statement "pcVar5 = (char *)bash_tilde_expand(pcVar3,0);" (assignment_expression "pcVar5 = (char *)bash_tilde_expand(pcVar3,0)" identifier = (cast_expression "(char *)bash_tilde_expand(pcVar3,0)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "bash_tilde_expand(pcVar3,0)" identifier (argument_list "(pcVar3,0)" ( identifier , number_literal ))))) ;) (expression_statement "free(pcVar3);" (call_expression "free(pcVar3)" identifier (argument_list "(pcVar3)" ( identifier ))) ;) (expression_statement "cVar11 = *pcVar5;" (assignment_expression "cVar11 = *pcVar5" identifier = (pointer_expression "*pcVar5" * identifier)) ;) })) (expression_statement "pcVar3 = DAT_00151440;" (assignment_expression "pcVar3 = DAT_00151440" identifier = identifier) ;) (if_statement "if ((cVar11 == '.') && (pcVar5[1] == '\0')) {\n          DAT_001514ec = 1;\n        }" if (parenthesized_expression "((cVar11 == '.') && (pcVar5[1] == '\0'))" ( (binary_expression "(cVar11 == '.') && (pcVar5[1] == '\0')" (parenthesized_expression "(cVar11 == '.')" ( (binary_expression "cVar11 == '.'" identifier == (char_literal "'.'" ' character ')) )) && (parenthesized_expression "(pcVar5[1] == '\0')" ( (binary_expression "pcVar5[1] == '\0'" (subscript_expression "pcVar5[1]" identifier [ number_literal ]) == (char_literal "'\0'" ' escape_sequence ')) ))) )) (compound_statement "{\n          DAT_001514ec = 1;\n        }" { (expression_statement "DAT_001514ec = 1;" (assignment_expression "DAT_001514ec = 1" identifier = number_literal) ;) })) (if_statement "if (DAT_0015143c == (char *)0x0) {\nLAB_0008dbfe:\n          if (pcVar3 != (char *)0x0) goto LAB_0008de5f;\n        }\n        else {\n          if (DAT_0015143c != DAT_00151440) {\n            free(DAT_0015143c);\n            goto LAB_0008dbfe;\n          }\nLAB_0008de5f:\n          free(pcVar3);\n        }" if (parenthesized_expression "(DAT_0015143c == (char *)0x0)" ( (binary_expression "DAT_0015143c == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nLAB_0008dbfe:\n          if (pcVar3 != (char *)0x0) goto LAB_0008de5f;\n        }" { (labeled_statement "LAB_0008dbfe:\n          if (pcVar3 != (char *)0x0) goto LAB_0008de5f;" statement_identifier : (if_statement "if (pcVar3 != (char *)0x0) goto LAB_0008de5f;" if (parenthesized_expression "(pcVar3 != (char *)0x0)" ( (binary_expression "pcVar3 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0008de5f;" goto statement_identifier ;))) }) (else_clause "else {\n          if (DAT_0015143c != DAT_00151440) {\n            free(DAT_0015143c);\n            goto LAB_0008dbfe;\n          }\nLAB_0008de5f:\n          free(pcVar3);\n        }" else (compound_statement "{\n          if (DAT_0015143c != DAT_00151440) {\n            free(DAT_0015143c);\n            goto LAB_0008dbfe;\n          }\nLAB_0008de5f:\n          free(pcVar3);\n        }" { (if_statement "if (DAT_0015143c != DAT_00151440) {\n            free(DAT_0015143c);\n            goto LAB_0008dbfe;\n          }" if (parenthesized_expression "(DAT_0015143c != DAT_00151440)" ( (binary_expression "DAT_0015143c != DAT_00151440" identifier != identifier) )) (compound_statement "{\n            free(DAT_0015143c);\n            goto LAB_0008dbfe;\n          }" { (expression_statement "free(DAT_0015143c);" (call_expression "free(DAT_0015143c)" identifier (argument_list "(DAT_0015143c)" ( identifier ))) ;) (goto_statement "goto LAB_0008dbfe;" goto statement_identifier ;) })) (labeled_statement "LAB_0008de5f:\n          free(pcVar3);" statement_identifier : (expression_statement "free(pcVar3);" (call_expression "free(pcVar3)" identifier (argument_list "(pcVar3)" ( identifier ))) ;)) }))) (expression_statement "pcVar3 = (char *)sh_makepath(pcVar5,DAT_00151464,0);" (assignment_expression "pcVar3 = (char *)sh_makepath(pcVar5,DAT_00151464,0)" identifier = (cast_expression "(char *)sh_makepath(pcVar5,DAT_00151464,0)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "sh_makepath(pcVar5,DAT_00151464,0)" identifier (argument_list "(pcVar5,DAT_00151464,0)" ( identifier , identifier , number_literal ))))) ;) (expression_statement "DAT_00151440 = pcVar3;" (assignment_expression "DAT_00151440 = pcVar3" identifier = identifier) ;) (expression_statement "pcVar10 = strpbrk(pcVar3,"\"\'\\");" (assignment_expression "pcVar10 = strpbrk(pcVar3,"\"\'\\")" identifier = (call_expression "strpbrk(pcVar3,"\"\'\\")" identifier (argument_list "(pcVar3,"\"\'\\")" ( identifier , (string_literal ""\"\'\\"" " escape_sequence escape_sequence escape_sequence ") )))) ;) (if_statement "if (pcVar10 != (char *)0x0) {\n          pcVar3 = (char *)sh_backslash_quote(pcVar3,&DAT_00151500,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          pcVar3 = (char *)sh_backslash_quote(pcVar3,&DAT_00151500,0);\n        }" { (expression_statement "pcVar3 = (char *)sh_backslash_quote(pcVar3,&DAT_00151500,0);" (assignment_expression "pcVar3 = (char *)sh_backslash_quote(pcVar3,&DAT_00151500,0)" identifier = (cast_expression "(char *)sh_backslash_quote(pcVar3,&DAT_00151500,0)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "sh_backslash_quote(pcVar3,&DAT_00151500,0)" identifier (argument_list "(pcVar3,&DAT_00151500,0)" ( identifier , (pointer_expression "&DAT_00151500" & identifier) , number_literal ))))) ;) })) (expression_statement "DAT_0015143c = pcVar3;" (assignment_expression "DAT_0015143c = pcVar3" identifier = identifier) ;) (expression_statement "free(pcVar5);" (call_expression "free(pcVar5)" identifier (argument_list "(pcVar5)" ( identifier ))) ;) (expression_statement "uVar8 = DAT_00151438;" (assignment_expression "uVar8 = DAT_00151438" identifier = identifier) ;) }) while (parenthesized_expression "( true )" ( true )) ;) })) (expression_statement "DAT_0015145c = 5;" (assignment_expression "DAT_0015145c = 5" identifier = number_literal) ;) (labeled_statement "LAB_0008d218:\n    glob_ignore_case = DAT_00151450;" statement_identifier : (expression_statement "glob_ignore_case = DAT_00151450;" (assignment_expression "glob_ignore_case = DAT_00151450" identifier = identifier) ;)) (expression_statement "puVar6 = (undefined4 *)shell_glob_filename(DAT_00151464);" (assignment_expression "puVar6 = (undefined4 *)shell_glob_filename(DAT_00151464)" identifier = (cast_expression "(undefined4 *)shell_glob_filename(DAT_00151464)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "shell_glob_filename(DAT_00151464)" identifier (argument_list "(DAT_00151464)" ( identifier ))))) ;) (expression_statement "glob_ignore_case = 0;" (assignment_expression "glob_ignore_case = 0" identifier = number_literal) ;) (if_statement "if ((puVar6 == (undefined4 *)PTR_glob_error_return_00149f60) || (puVar6 == (undefined4 *)0x0)) {\n      DAT_001514d4 = (undefined4 *)0x0;\n      pcVar3 = (char *)0x0;\n      goto LAB_0008d5c8;\n    }" if (parenthesized_expression "((puVar6 == (undefined4 *)PTR_glob_error_return_00149f60) || (puVar6 == (undefined4 *)0x0))" ( (binary_expression "(puVar6 == (undefined4 *)PTR_glob_error_return_00149f60) || (puVar6 == (undefined4 *)0x0)" (parenthesized_expression "(puVar6 == (undefined4 *)PTR_glob_error_return_00149f60)" ( (binary_expression "puVar6 == (undefined4 *)PTR_glob_error_return_00149f60" identifier == (cast_expression "(undefined4 *)PTR_glob_error_return_00149f60" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) || (parenthesized_expression "(puVar6 == (undefined4 *)0x0)" ( (binary_expression "puVar6 == (undefined4 *)0x0" identifier == (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) (compound_statement "{\n      DAT_001514d4 = (undefined4 *)0x0;\n      pcVar3 = (char *)0x0;\n      goto LAB_0008d5c8;\n    }" { (expression_statement "DAT_001514d4 = (undefined4 *)0x0;" (assignment_expression "DAT_001514d4 = (undefined4 *)0x0" identifier = (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "pcVar3 = (char *)0x0;" (assignment_expression "pcVar3 = (char *)0x0" identifier = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (goto_statement "goto LAB_0008d5c8;" goto statement_identifier ;) })) (expression_statement "DAT_0015142c = 0;" (assignment_expression "DAT_0015142c = 0" identifier = number_literal) ;) (expression_statement "DAT_001514d4 = puVar6;" (assignment_expression "DAT_001514d4 = puVar6" identifier = identifier) ;) (if_statement "if ((puVar6[1] != 0) && (rl_completion_type == 9)) {\nLAB_0008dac4:\n      pcVar3 = (char *)0x0;\n      goto LAB_0008d5c8;\n    }" if (parenthesized_expression "((puVar6[1] != 0) && (rl_completion_type == 9))" ( (binary_expression "(puVar6[1] != 0) && (rl_completion_type == 9)" (parenthesized_expression "(puVar6[1] != 0)" ( (binary_expression "puVar6[1] != 0" (subscript_expression "puVar6[1]" identifier [ number_literal ]) != number_literal) )) && (parenthesized_expression "(rl_completion_type == 9)" ( (binary_expression "rl_completion_type == 9" identifier == number_literal) ))) )) (compound_statement "{\nLAB_0008dac4:\n      pcVar3 = (char *)0x0;\n      goto LAB_0008d5c8;\n    }" { (labeled_statement "LAB_0008dac4:\n      pcVar3 = (char *)0x0;" statement_identifier : (expression_statement "pcVar3 = (char *)0x0;" (assignment_expression "pcVar3 = (char *)0x0" identifier = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;)) (goto_statement "goto LAB_0008d5c8;" goto statement_identifier ;) })) (expression_statement "iVar2 = 1;" (assignment_expression "iVar2 = 1" identifier = number_literal) ;) }) (else_clause "else {\nLAB_0008d390:\n    pcVar3 = DAT_00151464;\n    uVar8 = DAT_00151450;\n    sVar4 = DAT_00151444;\n    pvVar1 = DAT_00151424;\n    iVar2 = DAT_0015142c;\n    if (DAT_0015145c == 1) {\nLAB_0008d960:\n      do {\n        pcVar5 = (&word_token_alist)[iVar2 * 2];\n        if (pcVar5 == (char *)0x0) {\n          DAT_0015142c = 0;\n          DAT_0015145c = DAT_0015145c + 1;\n          uVar8 = DAT_00151450;\n          pvVar1 = DAT_00151428;\n          goto LAB_0008d840;\n        }\n        iVar2 = iVar2 + 1;\n        DAT_0015142c = iVar2;\n      } while ((sVar4 != 0) &&\n              ((*pcVar5 != *pcVar3 || (iVar9 = strncmp(pcVar5,pcVar3,sVar4), iVar9 != 0))));\nLAB_0008d451:\n      sVar4 = strlen(pcVar5);\n      pcVar3 = (char *)xmalloc(sVar4 + 1);\n      pcVar3 = strcpy(pcVar3,pcVar5);\n      goto LAB_0008d5c8;\n    }\n    if (DAT_0015145c < 2) {\n      if (DAT_0015145c == 0) {\n        do {\n          while( true ) {\n            if ((pvVar1 == (void *)0x0) ||\n               (puVar6 = *(undefined4 **)((int)pvVar1 + DAT_0015142c * 4),\n               puVar6 == (undefined4 *)0x0)) {\n              DAT_0015145c = 1;\n              iVar2 = 0;\n              goto LAB_0008d960;\n            }\n            DAT_0015142c = DAT_0015142c + 1;\n            pcVar5 = (char *)*puVar6;\n            if (uVar8 != 0) break;\n            if ((sVar4 == 0) ||\n               ((*pcVar5 == *pcVar3 && (iVar2 = strncmp(pcVar5,pcVar3,sVar4), iVar2 == 0))))\n            goto LAB_0008d451;\n          }\n          iVar2 = strncasecmp(pcVar5,pcVar3,sVar4);\n        } while (iVar2 != 0);\n        goto LAB_0008d451;\n      }\n    }\n    else {\n      pvVar1 = DAT_00151428;\n      if (DAT_0015145c == 2) {\nLAB_0008d840:\n        do {\n          if ((pvVar1 == (void *)0x0) ||\n             (puVar6 = *(undefined4 **)((int)pvVar1 + DAT_0015142c * 4), puVar6 == (undefined4 *)0x0\n             )) {\n            DAT_0015142c = 0;\n            DAT_0015145c = DAT_0015145c + 1;\n            goto LAB_0008d3bd;\n          }\n          DAT_0015142c = DAT_0015142c + 1;\n          pcVar5 = (char *)*puVar6;\n          if (uVar8 == 0) {\n            if ((sVar4 == 0) ||\n               ((*pcVar5 == *pcVar3 && (iVar2 = strncmp(pcVar5,pcVar3,sVar4), iVar2 == 0)))) break;\n            goto LAB_0008d840;\n          }\n          iVar2 = strncasecmp(pcVar5,pcVar3,sVar4);\n        } while (iVar2 != 0);\n        sVar4 = strlen(pcVar5);\n        pcVar3 = (char *)xmalloc(sVar4 + 1);\n        pcVar3 = strcpy(pcVar3,pcVar5);\n        goto LAB_0008d5c8;\n      }\n      if (DAT_0015145c == 3) {\nLAB_0008d3bd:\n        pcVar3 = DAT_00151464;\n        sVar4 = DAT_00151444;\n        iVar2 = num_shell_builtins;\n        if (DAT_0015142c < num_shell_builtins) {\n          puVar6 = (undefined4 *)(shell_builtins + DAT_0015142c * 0x18);\n          do {\n            iVar9 = DAT_0015142c;\n            if (((puVar6[1] != 0) && ((*(byte *)(puVar6 + 2) & 1) != 0)) &&\n               ((pcVar5 = (char *)*puVar6, sVar4 == 0 ||\n                ((*pcVar5 == *pcVar3 && (iVar7 = strncmp(pcVar5,pcVar3,sVar4), iVar7 == 0)))))) {\n              DAT_0015142c = iVar9 + 1;\n              goto LAB_0008d451;\n            }\n            DAT_0015142c = iVar9 + 1;\n            puVar6 = puVar6 + 6;\n          } while (DAT_0015142c != iVar2);\n        }\n        DAT_0015145c = DAT_0015145c + 1;\n        DAT_0015142c = 0;\n      }\n    }\n    if (DAT_0015144c == 0) {\n      if (DAT_00151458 == 0) goto LAB_0008d5f6;\n      DAT_00151458 = 0;\n      sVar4 = strlen(param_1);\n      pcVar3 = (char *)xmalloc(sVar4 + 1);\n      pcVar3 = strcpy(pcVar3,param_1);\n      goto LAB_0008d5c8;\n    }\n    if (param_2 == 0) goto LAB_0008d218;\n    iVar2 = DAT_0015142c + 1;\n    puVar6 = DAT_001514d4 + DAT_0015142c;\n  }" else (compound_statement "{\nLAB_0008d390:\n    pcVar3 = DAT_00151464;\n    uVar8 = DAT_00151450;\n    sVar4 = DAT_00151444;\n    pvVar1 = DAT_00151424;\n    iVar2 = DAT_0015142c;\n    if (DAT_0015145c == 1) {\nLAB_0008d960:\n      do {\n        pcVar5 = (&word_token_alist)[iVar2 * 2];\n        if (pcVar5 == (char *)0x0) {\n          DAT_0015142c = 0;\n          DAT_0015145c = DAT_0015145c + 1;\n          uVar8 = DAT_00151450;\n          pvVar1 = DAT_00151428;\n          goto LAB_0008d840;\n        }\n        iVar2 = iVar2 + 1;\n        DAT_0015142c = iVar2;\n      } while ((sVar4 != 0) &&\n              ((*pcVar5 != *pcVar3 || (iVar9 = strncmp(pcVar5,pcVar3,sVar4), iVar9 != 0))));\nLAB_0008d451:\n      sVar4 = strlen(pcVar5);\n      pcVar3 = (char *)xmalloc(sVar4 + 1);\n      pcVar3 = strcpy(pcVar3,pcVar5);\n      goto LAB_0008d5c8;\n    }\n    if (DAT_0015145c < 2) {\n      if (DAT_0015145c == 0) {\n        do {\n          while( true ) {\n            if ((pvVar1 == (void *)0x0) ||\n               (puVar6 = *(undefined4 **)((int)pvVar1 + DAT_0015142c * 4),\n               puVar6 == (undefined4 *)0x0)) {\n              DAT_0015145c = 1;\n              iVar2 = 0;\n              goto LAB_0008d960;\n            }\n            DAT_0015142c = DAT_0015142c + 1;\n            pcVar5 = (char *)*puVar6;\n            if (uVar8 != 0) break;\n            if ((sVar4 == 0) ||\n               ((*pcVar5 == *pcVar3 && (iVar2 = strncmp(pcVar5,pcVar3,sVar4), iVar2 == 0))))\n            goto LAB_0008d451;\n          }\n          iVar2 = strncasecmp(pcVar5,pcVar3,sVar4);\n        } while (iVar2 != 0);\n        goto LAB_0008d451;\n      }\n    }\n    else {\n      pvVar1 = DAT_00151428;\n      if (DAT_0015145c == 2) {\nLAB_0008d840:\n        do {\n          if ((pvVar1 == (void *)0x0) ||\n             (puVar6 = *(undefined4 **)((int)pvVar1 + DAT_0015142c * 4), puVar6 == (undefined4 *)0x0\n             )) {\n            DAT_0015142c = 0;\n            DAT_0015145c = DAT_0015145c + 1;\n            goto LAB_0008d3bd;\n          }\n          DAT_0015142c = DAT_0015142c + 1;\n          pcVar5 = (char *)*puVar6;\n          if (uVar8 == 0) {\n            if ((sVar4 == 0) ||\n               ((*pcVar5 == *pcVar3 && (iVar2 = strncmp(pcVar5,pcVar3,sVar4), iVar2 == 0)))) break;\n            goto LAB_0008d840;\n          }\n          iVar2 = strncasecmp(pcVar5,pcVar3,sVar4);\n        } while (iVar2 != 0);\n        sVar4 = strlen(pcVar5);\n        pcVar3 = (char *)xmalloc(sVar4 + 1);\n        pcVar3 = strcpy(pcVar3,pcVar5);\n        goto LAB_0008d5c8;\n      }\n      if (DAT_0015145c == 3) {\nLAB_0008d3bd:\n        pcVar3 = DAT_00151464;\n        sVar4 = DAT_00151444;\n        iVar2 = num_shell_builtins;\n        if (DAT_0015142c < num_shell_builtins) {\n          puVar6 = (undefined4 *)(shell_builtins + DAT_0015142c * 0x18);\n          do {\n            iVar9 = DAT_0015142c;\n            if (((puVar6[1] != 0) && ((*(byte *)(puVar6 + 2) & 1) != 0)) &&\n               ((pcVar5 = (char *)*puVar6, sVar4 == 0 ||\n                ((*pcVar5 == *pcVar3 && (iVar7 = strncmp(pcVar5,pcVar3,sVar4), iVar7 == 0)))))) {\n              DAT_0015142c = iVar9 + 1;\n              goto LAB_0008d451;\n            }\n            DAT_0015142c = iVar9 + 1;\n            puVar6 = puVar6 + 6;\n          } while (DAT_0015142c != iVar2);\n        }\n        DAT_0015145c = DAT_0015145c + 1;\n        DAT_0015142c = 0;\n      }\n    }\n    if (DAT_0015144c == 0) {\n      if (DAT_00151458 == 0) goto LAB_0008d5f6;\n      DAT_00151458 = 0;\n      sVar4 = strlen(param_1);\n      pcVar3 = (char *)xmalloc(sVar4 + 1);\n      pcVar3 = strcpy(pcVar3,param_1);\n      goto LAB_0008d5c8;\n    }\n    if (param_2 == 0) goto LAB_0008d218;\n    iVar2 = DAT_0015142c + 1;\n    puVar6 = DAT_001514d4 + DAT_0015142c;\n  }" { (labeled_statement "LAB_0008d390:\n    pcVar3 = DAT_00151464;" statement_identifier : (expression_statement "pcVar3 = DAT_00151464;" (assignment_expression "pcVar3 = DAT_00151464" identifier = identifier) ;)) (expression_statement "uVar8 = DAT_00151450;" (assignment_expression "uVar8 = DAT_00151450" identifier = identifier) ;) (expression_statement "sVar4 = DAT_00151444;" (assignment_expression "sVar4 = DAT_00151444" identifier = identifier) ;) (expression_statement "pvVar1 = DAT_00151424;" (assignment_expression "pvVar1 = DAT_00151424" identifier = identifier) ;) (expression_statement "iVar2 = DAT_0015142c;" (assignment_expression "iVar2 = DAT_0015142c" identifier = identifier) ;) (if_statement "if (DAT_0015145c == 1) {\nLAB_0008d960:\n      do {\n        pcVar5 = (&word_token_alist)[iVar2 * 2];\n        if (pcVar5 == (char *)0x0) {\n          DAT_0015142c = 0;\n          DAT_0015145c = DAT_0015145c + 1;\n          uVar8 = DAT_00151450;\n          pvVar1 = DAT_00151428;\n          goto LAB_0008d840;\n        }\n        iVar2 = iVar2 + 1;\n        DAT_0015142c = iVar2;\n      } while ((sVar4 != 0) &&\n              ((*pcVar5 != *pcVar3 || (iVar9 = strncmp(pcVar5,pcVar3,sVar4), iVar9 != 0))));\nLAB_0008d451:\n      sVar4 = strlen(pcVar5);\n      pcVar3 = (char *)xmalloc(sVar4 + 1);\n      pcVar3 = strcpy(pcVar3,pcVar5);\n      goto LAB_0008d5c8;\n    }" if (parenthesized_expression "(DAT_0015145c == 1)" ( (binary_expression "DAT_0015145c == 1" identifier == number_literal) )) (compound_statement "{\nLAB_0008d960:\n      do {\n        pcVar5 = (&word_token_alist)[iVar2 * 2];\n        if (pcVar5 == (char *)0x0) {\n          DAT_0015142c = 0;\n          DAT_0015145c = DAT_0015145c + 1;\n          uVar8 = DAT_00151450;\n          pvVar1 = DAT_00151428;\n          goto LAB_0008d840;\n        }\n        iVar2 = iVar2 + 1;\n        DAT_0015142c = iVar2;\n      } while ((sVar4 != 0) &&\n              ((*pcVar5 != *pcVar3 || (iVar9 = strncmp(pcVar5,pcVar3,sVar4), iVar9 != 0))));\nLAB_0008d451:\n      sVar4 = strlen(pcVar5);\n      pcVar3 = (char *)xmalloc(sVar4 + 1);\n      pcVar3 = strcpy(pcVar3,pcVar5);\n      goto LAB_0008d5c8;\n    }" { (labeled_statement "LAB_0008d960:\n      do {\n        pcVar5 = (&word_token_alist)[iVar2 * 2];\n        if (pcVar5 == (char *)0x0) {\n          DAT_0015142c = 0;\n          DAT_0015145c = DAT_0015145c + 1;\n          uVar8 = DAT_00151450;\n          pvVar1 = DAT_00151428;\n          goto LAB_0008d840;\n        }\n        iVar2 = iVar2 + 1;\n        DAT_0015142c = iVar2;\n      } while ((sVar4 != 0) &&\n              ((*pcVar5 != *pcVar3 || (iVar9 = strncmp(pcVar5,pcVar3,sVar4), iVar9 != 0))));" statement_identifier : (do_statement "do {\n        pcVar5 = (&word_token_alist)[iVar2 * 2];\n        if (pcVar5 == (char *)0x0) {\n          DAT_0015142c = 0;\n          DAT_0015145c = DAT_0015145c + 1;\n          uVar8 = DAT_00151450;\n          pvVar1 = DAT_00151428;\n          goto LAB_0008d840;\n        }\n        iVar2 = iVar2 + 1;\n        DAT_0015142c = iVar2;\n      } while ((sVar4 != 0) &&\n              ((*pcVar5 != *pcVar3 || (iVar9 = strncmp(pcVar5,pcVar3,sVar4), iVar9 != 0))));" do (compound_statement "{\n        pcVar5 = (&word_token_alist)[iVar2 * 2];\n        if (pcVar5 == (char *)0x0) {\n          DAT_0015142c = 0;\n          DAT_0015145c = DAT_0015145c + 1;\n          uVar8 = DAT_00151450;\n          pvVar1 = DAT_00151428;\n          goto LAB_0008d840;\n        }\n        iVar2 = iVar2 + 1;\n        DAT_0015142c = iVar2;\n      }" { (expression_statement "pcVar5 = (&word_token_alist)[iVar2 * 2];" (assignment_expression "pcVar5 = (&word_token_alist)[iVar2 * 2]" identifier = (subscript_expression "(&word_token_alist)[iVar2 * 2]" (parenthesized_expression "(&word_token_alist)" ( (pointer_expression "&word_token_alist" & identifier) )) [ (binary_expression "iVar2 * 2" identifier * number_literal) ])) ;) (if_statement "if (pcVar5 == (char *)0x0) {\n          DAT_0015142c = 0;\n          DAT_0015145c = DAT_0015145c + 1;\n          uVar8 = DAT_00151450;\n          pvVar1 = DAT_00151428;\n          goto LAB_0008d840;\n        }" if (parenthesized_expression "(pcVar5 == (char *)0x0)" ( (binary_expression "pcVar5 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          DAT_0015142c = 0;\n          DAT_0015145c = DAT_0015145c + 1;\n          uVar8 = DAT_00151450;\n          pvVar1 = DAT_00151428;\n          goto LAB_0008d840;\n        }" { (expression_statement "DAT_0015142c = 0;" (assignment_expression "DAT_0015142c = 0" identifier = number_literal) ;) (expression_statement "DAT_0015145c = DAT_0015145c + 1;" (assignment_expression "DAT_0015145c = DAT_0015145c + 1" identifier = (binary_expression "DAT_0015145c + 1" identifier + number_literal)) ;) (expression_statement "uVar8 = DAT_00151450;" (assignment_expression "uVar8 = DAT_00151450" identifier = identifier) ;) (expression_statement "pvVar1 = DAT_00151428;" (assignment_expression "pvVar1 = DAT_00151428" identifier = identifier) ;) (goto_statement "goto LAB_0008d840;" goto statement_identifier ;) })) (expression_statement "iVar2 = iVar2 + 1;" (assignment_expression "iVar2 = iVar2 + 1" identifier = (binary_expression "iVar2 + 1" identifier + number_literal)) ;) (expression_statement "DAT_0015142c = iVar2;" (assignment_expression "DAT_0015142c = iVar2" identifier = identifier) ;) }) while (parenthesized_expression "((sVar4 != 0) &&\n              ((*pcVar5 != *pcVar3 || (iVar9 = strncmp(pcVar5,pcVar3,sVar4), iVar9 != 0))))" ( (binary_expression "(sVar4 != 0) &&\n              ((*pcVar5 != *pcVar3 || (iVar9 = strncmp(pcVar5,pcVar3,sVar4), iVar9 != 0)))" (parenthesized_expression "(sVar4 != 0)" ( (binary_expression "sVar4 != 0" identifier != number_literal) )) && (parenthesized_expression "((*pcVar5 != *pcVar3 || (iVar9 = strncmp(pcVar5,pcVar3,sVar4), iVar9 != 0)))" ( (parenthesized_expression "(*pcVar5 != *pcVar3 || (iVar9 = strncmp(pcVar5,pcVar3,sVar4), iVar9 != 0))" ( (binary_expression "*pcVar5 != *pcVar3 || (iVar9 = strncmp(pcVar5,pcVar3,sVar4), iVar9 != 0)" (binary_expression "*pcVar5 != *pcVar3" (pointer_expression "*pcVar5" * identifier) != (pointer_expression "*pcVar3" * identifier)) || (parenthesized_expression "(iVar9 = strncmp(pcVar5,pcVar3,sVar4), iVar9 != 0)" ( (comma_expression "iVar9 = strncmp(pcVar5,pcVar3,sVar4), iVar9 != 0" (assignment_expression "iVar9 = strncmp(pcVar5,pcVar3,sVar4)" identifier = (call_expression "strncmp(pcVar5,pcVar3,sVar4)" identifier (argument_list "(pcVar5,pcVar3,sVar4)" ( identifier , identifier , identifier )))) , (binary_expression "iVar9 != 0" identifier != number_literal)) ))) )) ))) )) ;)) (labeled_statement "LAB_0008d451:\n      sVar4 = strlen(pcVar5);" statement_identifier : (expression_statement "sVar4 = strlen(pcVar5);" (assignment_expression "sVar4 = strlen(pcVar5)" identifier = (call_expression "strlen(pcVar5)" identifier (argument_list "(pcVar5)" ( identifier )))) ;)) (expression_statement "pcVar3 = (char *)xmalloc(sVar4 + 1);" (assignment_expression "pcVar3 = (char *)xmalloc(sVar4 + 1)" identifier = (cast_expression "(char *)xmalloc(sVar4 + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(sVar4 + 1)" identifier (argument_list "(sVar4 + 1)" ( (binary_expression "sVar4 + 1" identifier + number_literal) ))))) ;) (expression_statement "pcVar3 = strcpy(pcVar3,pcVar5);" (assignment_expression "pcVar3 = strcpy(pcVar3,pcVar5)" identifier = (call_expression "strcpy(pcVar3,pcVar5)" identifier (argument_list "(pcVar3,pcVar5)" ( identifier , identifier )))) ;) (goto_statement "goto LAB_0008d5c8;" goto statement_identifier ;) })) (if_statement "if (DAT_0015145c < 2) {\n      if (DAT_0015145c == 0) {\n        do {\n          while( true ) {\n            if ((pvVar1 == (void *)0x0) ||\n               (puVar6 = *(undefined4 **)((int)pvVar1 + DAT_0015142c * 4),\n               puVar6 == (undefined4 *)0x0)) {\n              DAT_0015145c = 1;\n              iVar2 = 0;\n              goto LAB_0008d960;\n            }\n            DAT_0015142c = DAT_0015142c + 1;\n            pcVar5 = (char *)*puVar6;\n            if (uVar8 != 0) break;\n            if ((sVar4 == 0) ||\n               ((*pcVar5 == *pcVar3 && (iVar2 = strncmp(pcVar5,pcVar3,sVar4), iVar2 == 0))))\n            goto LAB_0008d451;\n          }\n          iVar2 = strncasecmp(pcVar5,pcVar3,sVar4);\n        } while (iVar2 != 0);\n        goto LAB_0008d451;\n      }\n    }\n    else {\n      pvVar1 = DAT_00151428;\n      if (DAT_0015145c == 2) {\nLAB_0008d840:\n        do {\n          if ((pvVar1 == (void *)0x0) ||\n             (puVar6 = *(undefined4 **)((int)pvVar1 + DAT_0015142c * 4), puVar6 == (undefined4 *)0x0\n             )) {\n            DAT_0015142c = 0;\n            DAT_0015145c = DAT_0015145c + 1;\n            goto LAB_0008d3bd;\n          }\n          DAT_0015142c = DAT_0015142c + 1;\n          pcVar5 = (char *)*puVar6;\n          if (uVar8 == 0) {\n            if ((sVar4 == 0) ||\n               ((*pcVar5 == *pcVar3 && (iVar2 = strncmp(pcVar5,pcVar3,sVar4), iVar2 == 0)))) break;\n            goto LAB_0008d840;\n          }\n          iVar2 = strncasecmp(pcVar5,pcVar3,sVar4);\n        } while (iVar2 != 0);\n        sVar4 = strlen(pcVar5);\n        pcVar3 = (char *)xmalloc(sVar4 + 1);\n        pcVar3 = strcpy(pcVar3,pcVar5);\n        goto LAB_0008d5c8;\n      }\n      if (DAT_0015145c == 3) {\nLAB_0008d3bd:\n        pcVar3 = DAT_00151464;\n        sVar4 = DAT_00151444;\n        iVar2 = num_shell_builtins;\n        if (DAT_0015142c < num_shell_builtins) {\n          puVar6 = (undefined4 *)(shell_builtins + DAT_0015142c * 0x18);\n          do {\n            iVar9 = DAT_0015142c;\n            if (((puVar6[1] != 0) && ((*(byte *)(puVar6 + 2) & 1) != 0)) &&\n               ((pcVar5 = (char *)*puVar6, sVar4 == 0 ||\n                ((*pcVar5 == *pcVar3 && (iVar7 = strncmp(pcVar5,pcVar3,sVar4), iVar7 == 0)))))) {\n              DAT_0015142c = iVar9 + 1;\n              goto LAB_0008d451;\n            }\n            DAT_0015142c = iVar9 + 1;\n            puVar6 = puVar6 + 6;\n          } while (DAT_0015142c != iVar2);\n        }\n        DAT_0015145c = DAT_0015145c + 1;\n        DAT_0015142c = 0;\n      }\n    }" if (parenthesized_expression "(DAT_0015145c < 2)" ( (binary_expression "DAT_0015145c < 2" identifier < number_literal) )) (compound_statement "{\n      if (DAT_0015145c == 0) {\n        do {\n          while( true ) {\n            if ((pvVar1 == (void *)0x0) ||\n               (puVar6 = *(undefined4 **)((int)pvVar1 + DAT_0015142c * 4),\n               puVar6 == (undefined4 *)0x0)) {\n              DAT_0015145c = 1;\n              iVar2 = 0;\n              goto LAB_0008d960;\n            }\n            DAT_0015142c = DAT_0015142c + 1;\n            pcVar5 = (char *)*puVar6;\n            if (uVar8 != 0) break;\n            if ((sVar4 == 0) ||\n               ((*pcVar5 == *pcVar3 && (iVar2 = strncmp(pcVar5,pcVar3,sVar4), iVar2 == 0))))\n            goto LAB_0008d451;\n          }\n          iVar2 = strncasecmp(pcVar5,pcVar3,sVar4);\n        } while (iVar2 != 0);\n        goto LAB_0008d451;\n      }\n    }" { (if_statement "if (DAT_0015145c == 0) {\n        do {\n          while( true ) {\n            if ((pvVar1 == (void *)0x0) ||\n               (puVar6 = *(undefined4 **)((int)pvVar1 + DAT_0015142c * 4),\n               puVar6 == (undefined4 *)0x0)) {\n              DAT_0015145c = 1;\n              iVar2 = 0;\n              goto LAB_0008d960;\n            }\n            DAT_0015142c = DAT_0015142c + 1;\n            pcVar5 = (char *)*puVar6;\n            if (uVar8 != 0) break;\n            if ((sVar4 == 0) ||\n               ((*pcVar5 == *pcVar3 && (iVar2 = strncmp(pcVar5,pcVar3,sVar4), iVar2 == 0))))\n            goto LAB_0008d451;\n          }\n          iVar2 = strncasecmp(pcVar5,pcVar3,sVar4);\n        } while (iVar2 != 0);\n        goto LAB_0008d451;\n      }" if (parenthesized_expression "(DAT_0015145c == 0)" ( (binary_expression "DAT_0015145c == 0" identifier == number_literal) )) (compound_statement "{\n        do {\n          while( true ) {\n            if ((pvVar1 == (void *)0x0) ||\n               (puVar6 = *(undefined4 **)((int)pvVar1 + DAT_0015142c * 4),\n               puVar6 == (undefined4 *)0x0)) {\n              DAT_0015145c = 1;\n              iVar2 = 0;\n              goto LAB_0008d960;\n            }\n            DAT_0015142c = DAT_0015142c + 1;\n            pcVar5 = (char *)*puVar6;\n            if (uVar8 != 0) break;\n            if ((sVar4 == 0) ||\n               ((*pcVar5 == *pcVar3 && (iVar2 = strncmp(pcVar5,pcVar3,sVar4), iVar2 == 0))))\n            goto LAB_0008d451;\n          }\n          iVar2 = strncasecmp(pcVar5,pcVar3,sVar4);\n        } while (iVar2 != 0);\n        goto LAB_0008d451;\n      }" { (do_statement "do {\n          while( true ) {\n            if ((pvVar1 == (void *)0x0) ||\n               (puVar6 = *(undefined4 **)((int)pvVar1 + DAT_0015142c * 4),\n               puVar6 == (undefined4 *)0x0)) {\n              DAT_0015145c = 1;\n              iVar2 = 0;\n              goto LAB_0008d960;\n            }\n            DAT_0015142c = DAT_0015142c + 1;\n            pcVar5 = (char *)*puVar6;\n            if (uVar8 != 0) break;\n            if ((sVar4 == 0) ||\n               ((*pcVar5 == *pcVar3 && (iVar2 = strncmp(pcVar5,pcVar3,sVar4), iVar2 == 0))))\n            goto LAB_0008d451;\n          }\n          iVar2 = strncasecmp(pcVar5,pcVar3,sVar4);\n        } while (iVar2 != 0);" do (compound_statement "{\n          while( true ) {\n            if ((pvVar1 == (void *)0x0) ||\n               (puVar6 = *(undefined4 **)((int)pvVar1 + DAT_0015142c * 4),\n               puVar6 == (undefined4 *)0x0)) {\n              DAT_0015145c = 1;\n              iVar2 = 0;\n              goto LAB_0008d960;\n            }\n            DAT_0015142c = DAT_0015142c + 1;\n            pcVar5 = (char *)*puVar6;\n            if (uVar8 != 0) break;\n            if ((sVar4 == 0) ||\n               ((*pcVar5 == *pcVar3 && (iVar2 = strncmp(pcVar5,pcVar3,sVar4), iVar2 == 0))))\n            goto LAB_0008d451;\n          }\n          iVar2 = strncasecmp(pcVar5,pcVar3,sVar4);\n        }" { (while_statement "while( true ) {\n            if ((pvVar1 == (void *)0x0) ||\n               (puVar6 = *(undefined4 **)((int)pvVar1 + DAT_0015142c * 4),\n               puVar6 == (undefined4 *)0x0)) {\n              DAT_0015145c = 1;\n              iVar2 = 0;\n              goto LAB_0008d960;\n            }\n            DAT_0015142c = DAT_0015142c + 1;\n            pcVar5 = (char *)*puVar6;\n            if (uVar8 != 0) break;\n            if ((sVar4 == 0) ||\n               ((*pcVar5 == *pcVar3 && (iVar2 = strncmp(pcVar5,pcVar3,sVar4), iVar2 == 0))))\n            goto LAB_0008d451;\n          }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n            if ((pvVar1 == (void *)0x0) ||\n               (puVar6 = *(undefined4 **)((int)pvVar1 + DAT_0015142c * 4),\n               puVar6 == (undefined4 *)0x0)) {\n              DAT_0015145c = 1;\n              iVar2 = 0;\n              goto LAB_0008d960;\n            }\n            DAT_0015142c = DAT_0015142c + 1;\n            pcVar5 = (char *)*puVar6;\n            if (uVar8 != 0) break;\n            if ((sVar4 == 0) ||\n               ((*pcVar5 == *pcVar3 && (iVar2 = strncmp(pcVar5,pcVar3,sVar4), iVar2 == 0))))\n            goto LAB_0008d451;\n          }" { (if_statement "if ((pvVar1 == (void *)0x0) ||\n               (puVar6 = *(undefined4 **)((int)pvVar1 + DAT_0015142c * 4),\n               puVar6 == (undefined4 *)0x0)) {\n              DAT_0015145c = 1;\n              iVar2 = 0;\n              goto LAB_0008d960;\n            }" if (parenthesized_expression "((pvVar1 == (void *)0x0) ||\n               (puVar6 = *(undefined4 **)((int)pvVar1 + DAT_0015142c * 4),\n               puVar6 == (undefined4 *)0x0))" ( (binary_expression "(pvVar1 == (void *)0x0) ||\n               (puVar6 = *(undefined4 **)((int)pvVar1 + DAT_0015142c * 4),\n               puVar6 == (undefined4 *)0x0)" (parenthesized_expression "(pvVar1 == (void *)0x0)" ( (binary_expression "pvVar1 == (void *)0x0" identifier == (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "(puVar6 = *(undefined4 **)((int)pvVar1 + DAT_0015142c * 4),\n               puVar6 == (undefined4 *)0x0)" ( (comma_expression "puVar6 = *(undefined4 **)((int)pvVar1 + DAT_0015142c * 4),\n               puVar6 == (undefined4 *)0x0" (assignment_expression "puVar6 = *(undefined4 **)((int)pvVar1 + DAT_0015142c * 4)" identifier = (pointer_expression "*(undefined4 **)((int)pvVar1 + DAT_0015142c * 4)" * (cast_expression "(undefined4 **)((int)pvVar1 + DAT_0015142c * 4)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)pvVar1 + DAT_0015142c * 4)" ( (binary_expression "(int)pvVar1 + DAT_0015142c * 4" (cast_expression "(int)pvVar1" ( (type_descriptor "int" primitive_type) ) identifier) + (binary_expression "DAT_0015142c * 4" identifier * number_literal)) ))))) , (binary_expression "puVar6 == (undefined4 *)0x0" identifier == (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) (compound_statement "{\n              DAT_0015145c = 1;\n              iVar2 = 0;\n              goto LAB_0008d960;\n            }" { (expression_statement "DAT_0015145c = 1;" (assignment_expression "DAT_0015145c = 1" identifier = number_literal) ;) (expression_statement "iVar2 = 0;" (assignment_expression "iVar2 = 0" identifier = number_literal) ;) (goto_statement "goto LAB_0008d960;" goto statement_identifier ;) })) (expression_statement "DAT_0015142c = DAT_0015142c + 1;" (assignment_expression "DAT_0015142c = DAT_0015142c + 1" identifier = (binary_expression "DAT_0015142c + 1" identifier + number_literal)) ;) (expression_statement "pcVar5 = (char *)*puVar6;" (assignment_expression "pcVar5 = (char *)*puVar6" identifier = (cast_expression "(char *)*puVar6" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar6" * identifier))) ;) (if_statement "if (uVar8 != 0) break;" if (parenthesized_expression "(uVar8 != 0)" ( (binary_expression "uVar8 != 0" identifier != number_literal) )) (break_statement "break;" break ;)) (if_statement "if ((sVar4 == 0) ||\n               ((*pcVar5 == *pcVar3 && (iVar2 = strncmp(pcVar5,pcVar3,sVar4), iVar2 == 0))))\n            goto LAB_0008d451;" if (parenthesized_expression "((sVar4 == 0) ||\n               ((*pcVar5 == *pcVar3 && (iVar2 = strncmp(pcVar5,pcVar3,sVar4), iVar2 == 0))))" ( (binary_expression "(sVar4 == 0) ||\n               ((*pcVar5 == *pcVar3 && (iVar2 = strncmp(pcVar5,pcVar3,sVar4), iVar2 == 0)))" (parenthesized_expression "(sVar4 == 0)" ( (binary_expression "sVar4 == 0" identifier == number_literal) )) || (parenthesized_expression "((*pcVar5 == *pcVar3 && (iVar2 = strncmp(pcVar5,pcVar3,sVar4), iVar2 == 0)))" ( (parenthesized_expression "(*pcVar5 == *pcVar3 && (iVar2 = strncmp(pcVar5,pcVar3,sVar4), iVar2 == 0))" ( (binary_expression "*pcVar5 == *pcVar3 && (iVar2 = strncmp(pcVar5,pcVar3,sVar4), iVar2 == 0)" (binary_expression "*pcVar5 == *pcVar3" (pointer_expression "*pcVar5" * identifier) == (pointer_expression "*pcVar3" * identifier)) && (parenthesized_expression "(iVar2 = strncmp(pcVar5,pcVar3,sVar4), iVar2 == 0)" ( (comma_expression "iVar2 = strncmp(pcVar5,pcVar3,sVar4), iVar2 == 0" (assignment_expression "iVar2 = strncmp(pcVar5,pcVar3,sVar4)" identifier = (call_expression "strncmp(pcVar5,pcVar3,sVar4)" identifier (argument_list "(pcVar5,pcVar3,sVar4)" ( identifier , identifier , identifier )))) , (binary_expression "iVar2 == 0" identifier == number_literal)) ))) )) ))) )) (goto_statement "goto LAB_0008d451;" goto statement_identifier ;)) })) (expression_statement "iVar2 = strncasecmp(pcVar5,pcVar3,sVar4);" (assignment_expression "iVar2 = strncasecmp(pcVar5,pcVar3,sVar4)" identifier = (call_expression "strncasecmp(pcVar5,pcVar3,sVar4)" identifier (argument_list "(pcVar5,pcVar3,sVar4)" ( identifier , identifier , identifier )))) ;) }) while (parenthesized_expression "(iVar2 != 0)" ( (binary_expression "iVar2 != 0" identifier != number_literal) )) ;) (goto_statement "goto LAB_0008d451;" goto statement_identifier ;) })) }) (else_clause "else {\n      pvVar1 = DAT_00151428;\n      if (DAT_0015145c == 2) {\nLAB_0008d840:\n        do {\n          if ((pvVar1 == (void *)0x0) ||\n             (puVar6 = *(undefined4 **)((int)pvVar1 + DAT_0015142c * 4), puVar6 == (undefined4 *)0x0\n             )) {\n            DAT_0015142c = 0;\n            DAT_0015145c = DAT_0015145c + 1;\n            goto LAB_0008d3bd;\n          }\n          DAT_0015142c = DAT_0015142c + 1;\n          pcVar5 = (char *)*puVar6;\n          if (uVar8 == 0) {\n            if ((sVar4 == 0) ||\n               ((*pcVar5 == *pcVar3 && (iVar2 = strncmp(pcVar5,pcVar3,sVar4), iVar2 == 0)))) break;\n            goto LAB_0008d840;\n          }\n          iVar2 = strncasecmp(pcVar5,pcVar3,sVar4);\n        } while (iVar2 != 0);\n        sVar4 = strlen(pcVar5);\n        pcVar3 = (char *)xmalloc(sVar4 + 1);\n        pcVar3 = strcpy(pcVar3,pcVar5);\n        goto LAB_0008d5c8;\n      }\n      if (DAT_0015145c == 3) {\nLAB_0008d3bd:\n        pcVar3 = DAT_00151464;\n        sVar4 = DAT_00151444;\n        iVar2 = num_shell_builtins;\n        if (DAT_0015142c < num_shell_builtins) {\n          puVar6 = (undefined4 *)(shell_builtins + DAT_0015142c * 0x18);\n          do {\n            iVar9 = DAT_0015142c;\n            if (((puVar6[1] != 0) && ((*(byte *)(puVar6 + 2) & 1) != 0)) &&\n               ((pcVar5 = (char *)*puVar6, sVar4 == 0 ||\n                ((*pcVar5 == *pcVar3 && (iVar7 = strncmp(pcVar5,pcVar3,sVar4), iVar7 == 0)))))) {\n              DAT_0015142c = iVar9 + 1;\n              goto LAB_0008d451;\n            }\n            DAT_0015142c = iVar9 + 1;\n            puVar6 = puVar6 + 6;\n          } while (DAT_0015142c != iVar2);\n        }\n        DAT_0015145c = DAT_0015145c + 1;\n        DAT_0015142c = 0;\n      }\n    }" else (compound_statement "{\n      pvVar1 = DAT_00151428;\n      if (DAT_0015145c == 2) {\nLAB_0008d840:\n        do {\n          if ((pvVar1 == (void *)0x0) ||\n             (puVar6 = *(undefined4 **)((int)pvVar1 + DAT_0015142c * 4), puVar6 == (undefined4 *)0x0\n             )) {\n            DAT_0015142c = 0;\n            DAT_0015145c = DAT_0015145c + 1;\n            goto LAB_0008d3bd;\n          }\n          DAT_0015142c = DAT_0015142c + 1;\n          pcVar5 = (char *)*puVar6;\n          if (uVar8 == 0) {\n            if ((sVar4 == 0) ||\n               ((*pcVar5 == *pcVar3 && (iVar2 = strncmp(pcVar5,pcVar3,sVar4), iVar2 == 0)))) break;\n            goto LAB_0008d840;\n          }\n          iVar2 = strncasecmp(pcVar5,pcVar3,sVar4);\n        } while (iVar2 != 0);\n        sVar4 = strlen(pcVar5);\n        pcVar3 = (char *)xmalloc(sVar4 + 1);\n        pcVar3 = strcpy(pcVar3,pcVar5);\n        goto LAB_0008d5c8;\n      }\n      if (DAT_0015145c == 3) {\nLAB_0008d3bd:\n        pcVar3 = DAT_00151464;\n        sVar4 = DAT_00151444;\n        iVar2 = num_shell_builtins;\n        if (DAT_0015142c < num_shell_builtins) {\n          puVar6 = (undefined4 *)(shell_builtins + DAT_0015142c * 0x18);\n          do {\n            iVar9 = DAT_0015142c;\n            if (((puVar6[1] != 0) && ((*(byte *)(puVar6 + 2) & 1) != 0)) &&\n               ((pcVar5 = (char *)*puVar6, sVar4 == 0 ||\n                ((*pcVar5 == *pcVar3 && (iVar7 = strncmp(pcVar5,pcVar3,sVar4), iVar7 == 0)))))) {\n              DAT_0015142c = iVar9 + 1;\n              goto LAB_0008d451;\n            }\n            DAT_0015142c = iVar9 + 1;\n            puVar6 = puVar6 + 6;\n          } while (DAT_0015142c != iVar2);\n        }\n        DAT_0015145c = DAT_0015145c + 1;\n        DAT_0015142c = 0;\n      }\n    }" { (expression_statement "pvVar1 = DAT_00151428;" (assignment_expression "pvVar1 = DAT_00151428" identifier = identifier) ;) (if_statement "if (DAT_0015145c == 2) {\nLAB_0008d840:\n        do {\n          if ((pvVar1 == (void *)0x0) ||\n             (puVar6 = *(undefined4 **)((int)pvVar1 + DAT_0015142c * 4), puVar6 == (undefined4 *)0x0\n             )) {\n            DAT_0015142c = 0;\n            DAT_0015145c = DAT_0015145c + 1;\n            goto LAB_0008d3bd;\n          }\n          DAT_0015142c = DAT_0015142c + 1;\n          pcVar5 = (char *)*puVar6;\n          if (uVar8 == 0) {\n            if ((sVar4 == 0) ||\n               ((*pcVar5 == *pcVar3 && (iVar2 = strncmp(pcVar5,pcVar3,sVar4), iVar2 == 0)))) break;\n            goto LAB_0008d840;\n          }\n          iVar2 = strncasecmp(pcVar5,pcVar3,sVar4);\n        } while (iVar2 != 0);\n        sVar4 = strlen(pcVar5);\n        pcVar3 = (char *)xmalloc(sVar4 + 1);\n        pcVar3 = strcpy(pcVar3,pcVar5);\n        goto LAB_0008d5c8;\n      }" if (parenthesized_expression "(DAT_0015145c == 2)" ( (binary_expression "DAT_0015145c == 2" identifier == number_literal) )) (compound_statement "{\nLAB_0008d840:\n        do {\n          if ((pvVar1 == (void *)0x0) ||\n             (puVar6 = *(undefined4 **)((int)pvVar1 + DAT_0015142c * 4), puVar6 == (undefined4 *)0x0\n             )) {\n            DAT_0015142c = 0;\n            DAT_0015145c = DAT_0015145c + 1;\n            goto LAB_0008d3bd;\n          }\n          DAT_0015142c = DAT_0015142c + 1;\n          pcVar5 = (char *)*puVar6;\n          if (uVar8 == 0) {\n            if ((sVar4 == 0) ||\n               ((*pcVar5 == *pcVar3 && (iVar2 = strncmp(pcVar5,pcVar3,sVar4), iVar2 == 0)))) break;\n            goto LAB_0008d840;\n          }\n          iVar2 = strncasecmp(pcVar5,pcVar3,sVar4);\n        } while (iVar2 != 0);\n        sVar4 = strlen(pcVar5);\n        pcVar3 = (char *)xmalloc(sVar4 + 1);\n        pcVar3 = strcpy(pcVar3,pcVar5);\n        goto LAB_0008d5c8;\n      }" { (labeled_statement "LAB_0008d840:\n        do {\n          if ((pvVar1 == (void *)0x0) ||\n             (puVar6 = *(undefined4 **)((int)pvVar1 + DAT_0015142c * 4), puVar6 == (undefined4 *)0x0\n             )) {\n            DAT_0015142c = 0;\n            DAT_0015145c = DAT_0015145c + 1;\n            goto LAB_0008d3bd;\n          }\n          DAT_0015142c = DAT_0015142c + 1;\n          pcVar5 = (char *)*puVar6;\n          if (uVar8 == 0) {\n            if ((sVar4 == 0) ||\n               ((*pcVar5 == *pcVar3 && (iVar2 = strncmp(pcVar5,pcVar3,sVar4), iVar2 == 0)))) break;\n            goto LAB_0008d840;\n          }\n          iVar2 = strncasecmp(pcVar5,pcVar3,sVar4);\n        } while (iVar2 != 0);" statement_identifier : (do_statement "do {\n          if ((pvVar1 == (void *)0x0) ||\n             (puVar6 = *(undefined4 **)((int)pvVar1 + DAT_0015142c * 4), puVar6 == (undefined4 *)0x0\n             )) {\n            DAT_0015142c = 0;\n            DAT_0015145c = DAT_0015145c + 1;\n            goto LAB_0008d3bd;\n          }\n          DAT_0015142c = DAT_0015142c + 1;\n          pcVar5 = (char *)*puVar6;\n          if (uVar8 == 0) {\n            if ((sVar4 == 0) ||\n               ((*pcVar5 == *pcVar3 && (iVar2 = strncmp(pcVar5,pcVar3,sVar4), iVar2 == 0)))) break;\n            goto LAB_0008d840;\n          }\n          iVar2 = strncasecmp(pcVar5,pcVar3,sVar4);\n        } while (iVar2 != 0);" do (compound_statement "{\n          if ((pvVar1 == (void *)0x0) ||\n             (puVar6 = *(undefined4 **)((int)pvVar1 + DAT_0015142c * 4), puVar6 == (undefined4 *)0x0\n             )) {\n            DAT_0015142c = 0;\n            DAT_0015145c = DAT_0015145c + 1;\n            goto LAB_0008d3bd;\n          }\n          DAT_0015142c = DAT_0015142c + 1;\n          pcVar5 = (char *)*puVar6;\n          if (uVar8 == 0) {\n            if ((sVar4 == 0) ||\n               ((*pcVar5 == *pcVar3 && (iVar2 = strncmp(pcVar5,pcVar3,sVar4), iVar2 == 0)))) break;\n            goto LAB_0008d840;\n          }\n          iVar2 = strncasecmp(pcVar5,pcVar3,sVar4);\n        }" { (if_statement "if ((pvVar1 == (void *)0x0) ||\n             (puVar6 = *(undefined4 **)((int)pvVar1 + DAT_0015142c * 4), puVar6 == (undefined4 *)0x0\n             )) {\n            DAT_0015142c = 0;\n            DAT_0015145c = DAT_0015145c + 1;\n            goto LAB_0008d3bd;\n          }" if (parenthesized_expression "((pvVar1 == (void *)0x0) ||\n             (puVar6 = *(undefined4 **)((int)pvVar1 + DAT_0015142c * 4), puVar6 == (undefined4 *)0x0\n             ))" ( (binary_expression "(pvVar1 == (void *)0x0) ||\n             (puVar6 = *(undefined4 **)((int)pvVar1 + DAT_0015142c * 4), puVar6 == (undefined4 *)0x0\n             )" (parenthesized_expression "(pvVar1 == (void *)0x0)" ( (binary_expression "pvVar1 == (void *)0x0" identifier == (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "(puVar6 = *(undefined4 **)((int)pvVar1 + DAT_0015142c * 4), puVar6 == (undefined4 *)0x0\n             )" ( (comma_expression "puVar6 = *(undefined4 **)((int)pvVar1 + DAT_0015142c * 4), puVar6 == (undefined4 *)0x0" (assignment_expression "puVar6 = *(undefined4 **)((int)pvVar1 + DAT_0015142c * 4)" identifier = (pointer_expression "*(undefined4 **)((int)pvVar1 + DAT_0015142c * 4)" * (cast_expression "(undefined4 **)((int)pvVar1 + DAT_0015142c * 4)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)pvVar1 + DAT_0015142c * 4)" ( (binary_expression "(int)pvVar1 + DAT_0015142c * 4" (cast_expression "(int)pvVar1" ( (type_descriptor "int" primitive_type) ) identifier) + (binary_expression "DAT_0015142c * 4" identifier * number_literal)) ))))) , (binary_expression "puVar6 == (undefined4 *)0x0" identifier == (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) (compound_statement "{\n            DAT_0015142c = 0;\n            DAT_0015145c = DAT_0015145c + 1;\n            goto LAB_0008d3bd;\n          }" { (expression_statement "DAT_0015142c = 0;" (assignment_expression "DAT_0015142c = 0" identifier = number_literal) ;) (expression_statement "DAT_0015145c = DAT_0015145c + 1;" (assignment_expression "DAT_0015145c = DAT_0015145c + 1" identifier = (binary_expression "DAT_0015145c + 1" identifier + number_literal)) ;) (goto_statement "goto LAB_0008d3bd;" goto statement_identifier ;) })) (expression_statement "DAT_0015142c = DAT_0015142c + 1;" (assignment_expression "DAT_0015142c = DAT_0015142c + 1" identifier = (binary_expression "DAT_0015142c + 1" identifier + number_literal)) ;) (expression_statement "pcVar5 = (char *)*puVar6;" (assignment_expression "pcVar5 = (char *)*puVar6" identifier = (cast_expression "(char *)*puVar6" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar6" * identifier))) ;) (if_statement "if (uVar8 == 0) {\n            if ((sVar4 == 0) ||\n               ((*pcVar5 == *pcVar3 && (iVar2 = strncmp(pcVar5,pcVar3,sVar4), iVar2 == 0)))) break;\n            goto LAB_0008d840;\n          }" if (parenthesized_expression "(uVar8 == 0)" ( (binary_expression "uVar8 == 0" identifier == number_literal) )) (compound_statement "{\n            if ((sVar4 == 0) ||\n               ((*pcVar5 == *pcVar3 && (iVar2 = strncmp(pcVar5,pcVar3,sVar4), iVar2 == 0)))) break;\n            goto LAB_0008d840;\n          }" { (if_statement "if ((sVar4 == 0) ||\n               ((*pcVar5 == *pcVar3 && (iVar2 = strncmp(pcVar5,pcVar3,sVar4), iVar2 == 0)))) break;" if (parenthesized_expression "((sVar4 == 0) ||\n               ((*pcVar5 == *pcVar3 && (iVar2 = strncmp(pcVar5,pcVar3,sVar4), iVar2 == 0))))" ( (binary_expression "(sVar4 == 0) ||\n               ((*pcVar5 == *pcVar3 && (iVar2 = strncmp(pcVar5,pcVar3,sVar4), iVar2 == 0)))" (parenthesized_expression "(sVar4 == 0)" ( (binary_expression "sVar4 == 0" identifier == number_literal) )) || (parenthesized_expression "((*pcVar5 == *pcVar3 && (iVar2 = strncmp(pcVar5,pcVar3,sVar4), iVar2 == 0)))" ( (parenthesized_expression "(*pcVar5 == *pcVar3 && (iVar2 = strncmp(pcVar5,pcVar3,sVar4), iVar2 == 0))" ( (binary_expression "*pcVar5 == *pcVar3 && (iVar2 = strncmp(pcVar5,pcVar3,sVar4), iVar2 == 0)" (binary_expression "*pcVar5 == *pcVar3" (pointer_expression "*pcVar5" * identifier) == (pointer_expression "*pcVar3" * identifier)) && (parenthesized_expression "(iVar2 = strncmp(pcVar5,pcVar3,sVar4), iVar2 == 0)" ( (comma_expression "iVar2 = strncmp(pcVar5,pcVar3,sVar4), iVar2 == 0" (assignment_expression "iVar2 = strncmp(pcVar5,pcVar3,sVar4)" identifier = (call_expression "strncmp(pcVar5,pcVar3,sVar4)" identifier (argument_list "(pcVar5,pcVar3,sVar4)" ( identifier , identifier , identifier )))) , (binary_expression "iVar2 == 0" identifier == number_literal)) ))) )) ))) )) (break_statement "break;" break ;)) (goto_statement "goto LAB_0008d840;" goto statement_identifier ;) })) (expression_statement "iVar2 = strncasecmp(pcVar5,pcVar3,sVar4);" (assignment_expression "iVar2 = strncasecmp(pcVar5,pcVar3,sVar4)" identifier = (call_expression "strncasecmp(pcVar5,pcVar3,sVar4)" identifier (argument_list "(pcVar5,pcVar3,sVar4)" ( identifier , identifier , identifier )))) ;) }) while (parenthesized_expression "(iVar2 != 0)" ( (binary_expression "iVar2 != 0" identifier != number_literal) )) ;)) (expression_statement "sVar4 = strlen(pcVar5);" (assignment_expression "sVar4 = strlen(pcVar5)" identifier = (call_expression "strlen(pcVar5)" identifier (argument_list "(pcVar5)" ( identifier )))) ;) (expression_statement "pcVar3 = (char *)xmalloc(sVar4 + 1);" (assignment_expression "pcVar3 = (char *)xmalloc(sVar4 + 1)" identifier = (cast_expression "(char *)xmalloc(sVar4 + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(sVar4 + 1)" identifier (argument_list "(sVar4 + 1)" ( (binary_expression "sVar4 + 1" identifier + number_literal) ))))) ;) (expression_statement "pcVar3 = strcpy(pcVar3,pcVar5);" (assignment_expression "pcVar3 = strcpy(pcVar3,pcVar5)" identifier = (call_expression "strcpy(pcVar3,pcVar5)" identifier (argument_list "(pcVar3,pcVar5)" ( identifier , identifier )))) ;) (goto_statement "goto LAB_0008d5c8;" goto statement_identifier ;) })) (if_statement "if (DAT_0015145c == 3) {\nLAB_0008d3bd:\n        pcVar3 = DAT_00151464;\n        sVar4 = DAT_00151444;\n        iVar2 = num_shell_builtins;\n        if (DAT_0015142c < num_shell_builtins) {\n          puVar6 = (undefined4 *)(shell_builtins + DAT_0015142c * 0x18);\n          do {\n            iVar9 = DAT_0015142c;\n            if (((puVar6[1] != 0) && ((*(byte *)(puVar6 + 2) & 1) != 0)) &&\n               ((pcVar5 = (char *)*puVar6, sVar4 == 0 ||\n                ((*pcVar5 == *pcVar3 && (iVar7 = strncmp(pcVar5,pcVar3,sVar4), iVar7 == 0)))))) {\n              DAT_0015142c = iVar9 + 1;\n              goto LAB_0008d451;\n            }\n            DAT_0015142c = iVar9 + 1;\n            puVar6 = puVar6 + 6;\n          } while (DAT_0015142c != iVar2);\n        }\n        DAT_0015145c = DAT_0015145c + 1;\n        DAT_0015142c = 0;\n      }" if (parenthesized_expression "(DAT_0015145c == 3)" ( (binary_expression "DAT_0015145c == 3" identifier == number_literal) )) (compound_statement "{\nLAB_0008d3bd:\n        pcVar3 = DAT_00151464;\n        sVar4 = DAT_00151444;\n        iVar2 = num_shell_builtins;\n        if (DAT_0015142c < num_shell_builtins) {\n          puVar6 = (undefined4 *)(shell_builtins + DAT_0015142c * 0x18);\n          do {\n            iVar9 = DAT_0015142c;\n            if (((puVar6[1] != 0) && ((*(byte *)(puVar6 + 2) & 1) != 0)) &&\n               ((pcVar5 = (char *)*puVar6, sVar4 == 0 ||\n                ((*pcVar5 == *pcVar3 && (iVar7 = strncmp(pcVar5,pcVar3,sVar4), iVar7 == 0)))))) {\n              DAT_0015142c = iVar9 + 1;\n              goto LAB_0008d451;\n            }\n            DAT_0015142c = iVar9 + 1;\n            puVar6 = puVar6 + 6;\n          } while (DAT_0015142c != iVar2);\n        }\n        DAT_0015145c = DAT_0015145c + 1;\n        DAT_0015142c = 0;\n      }" { (labeled_statement "LAB_0008d3bd:\n        pcVar3 = DAT_00151464;" statement_identifier : (expression_statement "pcVar3 = DAT_00151464;" (assignment_expression "pcVar3 = DAT_00151464" identifier = identifier) ;)) (expression_statement "sVar4 = DAT_00151444;" (assignment_expression "sVar4 = DAT_00151444" identifier = identifier) ;) (expression_statement "iVar2 = num_shell_builtins;" (assignment_expression "iVar2 = num_shell_builtins" identifier = identifier) ;) (if_statement "if (DAT_0015142c < num_shell_builtins) {\n          puVar6 = (undefined4 *)(shell_builtins + DAT_0015142c * 0x18);\n          do {\n            iVar9 = DAT_0015142c;\n            if (((puVar6[1] != 0) && ((*(byte *)(puVar6 + 2) & 1) != 0)) &&\n               ((pcVar5 = (char *)*puVar6, sVar4 == 0 ||\n                ((*pcVar5 == *pcVar3 && (iVar7 = strncmp(pcVar5,pcVar3,sVar4), iVar7 == 0)))))) {\n              DAT_0015142c = iVar9 + 1;\n              goto LAB_0008d451;\n            }\n            DAT_0015142c = iVar9 + 1;\n            puVar6 = puVar6 + 6;\n          } while (DAT_0015142c != iVar2);\n        }" if (parenthesized_expression "(DAT_0015142c < num_shell_builtins)" ( (binary_expression "DAT_0015142c < num_shell_builtins" identifier < identifier) )) (compound_statement "{\n          puVar6 = (undefined4 *)(shell_builtins + DAT_0015142c * 0x18);\n          do {\n            iVar9 = DAT_0015142c;\n            if (((puVar6[1] != 0) && ((*(byte *)(puVar6 + 2) & 1) != 0)) &&\n               ((pcVar5 = (char *)*puVar6, sVar4 == 0 ||\n                ((*pcVar5 == *pcVar3 && (iVar7 = strncmp(pcVar5,pcVar3,sVar4), iVar7 == 0)))))) {\n              DAT_0015142c = iVar9 + 1;\n              goto LAB_0008d451;\n            }\n            DAT_0015142c = iVar9 + 1;\n            puVar6 = puVar6 + 6;\n          } while (DAT_0015142c != iVar2);\n        }" { (expression_statement "puVar6 = (undefined4 *)(shell_builtins + DAT_0015142c * 0x18);" (assignment_expression "puVar6 = (undefined4 *)(shell_builtins + DAT_0015142c * 0x18)" identifier = (cast_expression "(undefined4 *)(shell_builtins + DAT_0015142c * 0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(shell_builtins + DAT_0015142c * 0x18)" ( (binary_expression "shell_builtins + DAT_0015142c * 0x18" identifier + (binary_expression "DAT_0015142c * 0x18" identifier * number_literal)) )))) ;) (do_statement "do {\n            iVar9 = DAT_0015142c;\n            if (((puVar6[1] != 0) && ((*(byte *)(puVar6 + 2) & 1) != 0)) &&\n               ((pcVar5 = (char *)*puVar6, sVar4 == 0 ||\n                ((*pcVar5 == *pcVar3 && (iVar7 = strncmp(pcVar5,pcVar3,sVar4), iVar7 == 0)))))) {\n              DAT_0015142c = iVar9 + 1;\n              goto LAB_0008d451;\n            }\n            DAT_0015142c = iVar9 + 1;\n            puVar6 = puVar6 + 6;\n          } while (DAT_0015142c != iVar2);" do (compound_statement "{\n            iVar9 = DAT_0015142c;\n            if (((puVar6[1] != 0) && ((*(byte *)(puVar6 + 2) & 1) != 0)) &&\n               ((pcVar5 = (char *)*puVar6, sVar4 == 0 ||\n                ((*pcVar5 == *pcVar3 && (iVar7 = strncmp(pcVar5,pcVar3,sVar4), iVar7 == 0)))))) {\n              DAT_0015142c = iVar9 + 1;\n              goto LAB_0008d451;\n            }\n            DAT_0015142c = iVar9 + 1;\n            puVar6 = puVar6 + 6;\n          }" { (expression_statement "iVar9 = DAT_0015142c;" (assignment_expression "iVar9 = DAT_0015142c" identifier = identifier) ;) (if_statement "if (((puVar6[1] != 0) && ((*(byte *)(puVar6 + 2) & 1) != 0)) &&\n               ((pcVar5 = (char *)*puVar6, sVar4 == 0 ||\n                ((*pcVar5 == *pcVar3 && (iVar7 = strncmp(pcVar5,pcVar3,sVar4), iVar7 == 0)))))) {\n              DAT_0015142c = iVar9 + 1;\n              goto LAB_0008d451;\n            }" if (parenthesized_expression "(((puVar6[1] != 0) && ((*(byte *)(puVar6 + 2) & 1) != 0)) &&\n               ((pcVar5 = (char *)*puVar6, sVar4 == 0 ||\n                ((*pcVar5 == *pcVar3 && (iVar7 = strncmp(pcVar5,pcVar3,sVar4), iVar7 == 0))))))" ( (binary_expression "((puVar6[1] != 0) && ((*(byte *)(puVar6 + 2) & 1) != 0)) &&\n               ((pcVar5 = (char *)*puVar6, sVar4 == 0 ||\n                ((*pcVar5 == *pcVar3 && (iVar7 = strncmp(pcVar5,pcVar3,sVar4), iVar7 == 0)))))" (parenthesized_expression "((puVar6[1] != 0) && ((*(byte *)(puVar6 + 2) & 1) != 0))" ( (binary_expression "(puVar6[1] != 0) && ((*(byte *)(puVar6 + 2) & 1) != 0)" (parenthesized_expression "(puVar6[1] != 0)" ( (binary_expression "puVar6[1] != 0" (subscript_expression "puVar6[1]" identifier [ number_literal ]) != number_literal) )) && (parenthesized_expression "((*(byte *)(puVar6 + 2) & 1) != 0)" ( (binary_expression "(*(byte *)(puVar6 + 2) & 1) != 0" (parenthesized_expression "(*(byte *)(puVar6 + 2) & 1)" ( (binary_expression "*(byte *)(puVar6 + 2) & 1" (pointer_expression "*(byte *)(puVar6 + 2)" * (cast_expression "(byte *)(puVar6 + 2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar6 + 2)" ( (binary_expression "puVar6 + 2" identifier + number_literal) )))) & number_literal) )) != number_literal) ))) )) && (parenthesized_expression "((pcVar5 = (char *)*puVar6, sVar4 == 0 ||\n                ((*pcVar5 == *pcVar3 && (iVar7 = strncmp(pcVar5,pcVar3,sVar4), iVar7 == 0)))))" ( (parenthesized_expression "(pcVar5 = (char *)*puVar6, sVar4 == 0 ||\n                ((*pcVar5 == *pcVar3 && (iVar7 = strncmp(pcVar5,pcVar3,sVar4), iVar7 == 0))))" ( (comma_expression "pcVar5 = (char *)*puVar6, sVar4 == 0 ||\n                ((*pcVar5 == *pcVar3 && (iVar7 = strncmp(pcVar5,pcVar3,sVar4), iVar7 == 0)))" (assignment_expression "pcVar5 = (char *)*puVar6" identifier = (cast_expression "(char *)*puVar6" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar6" * identifier))) , (binary_expression "sVar4 == 0 ||\n                ((*pcVar5 == *pcVar3 && (iVar7 = strncmp(pcVar5,pcVar3,sVar4), iVar7 == 0)))" (binary_expression "sVar4 == 0" identifier == number_literal) || (parenthesized_expression "((*pcVar5 == *pcVar3 && (iVar7 = strncmp(pcVar5,pcVar3,sVar4), iVar7 == 0)))" ( (parenthesized_expression "(*pcVar5 == *pcVar3 && (iVar7 = strncmp(pcVar5,pcVar3,sVar4), iVar7 == 0))" ( (binary_expression "*pcVar5 == *pcVar3 && (iVar7 = strncmp(pcVar5,pcVar3,sVar4), iVar7 == 0)" (binary_expression "*pcVar5 == *pcVar3" (pointer_expression "*pcVar5" * identifier) == (pointer_expression "*pcVar3" * identifier)) && (parenthesized_expression "(iVar7 = strncmp(pcVar5,pcVar3,sVar4), iVar7 == 0)" ( (comma_expression "iVar7 = strncmp(pcVar5,pcVar3,sVar4), iVar7 == 0" (assignment_expression "iVar7 = strncmp(pcVar5,pcVar3,sVar4)" identifier = (call_expression "strncmp(pcVar5,pcVar3,sVar4)" identifier (argument_list "(pcVar5,pcVar3,sVar4)" ( identifier , identifier , identifier )))) , (binary_expression "iVar7 == 0" identifier == number_literal)) ))) )) )))) )) ))) )) (compound_statement "{\n              DAT_0015142c = iVar9 + 1;\n              goto LAB_0008d451;\n            }" { (expression_statement "DAT_0015142c = iVar9 + 1;" (assignment_expression "DAT_0015142c = iVar9 + 1" identifier = (binary_expression "iVar9 + 1" identifier + number_literal)) ;) (goto_statement "goto LAB_0008d451;" goto statement_identifier ;) })) (expression_statement "DAT_0015142c = iVar9 + 1;" (assignment_expression "DAT_0015142c = iVar9 + 1" identifier = (binary_expression "iVar9 + 1" identifier + number_literal)) ;) (expression_statement "puVar6 = puVar6 + 6;" (assignment_expression "puVar6 = puVar6 + 6" identifier = (binary_expression "puVar6 + 6" identifier + number_literal)) ;) }) while (parenthesized_expression "(DAT_0015142c != iVar2)" ( (binary_expression "DAT_0015142c != iVar2" identifier != identifier) )) ;) })) (expression_statement "DAT_0015145c = DAT_0015145c + 1;" (assignment_expression "DAT_0015145c = DAT_0015145c + 1" identifier = (binary_expression "DAT_0015145c + 1" identifier + number_literal)) ;) (expression_statement "DAT_0015142c = 0;" (assignment_expression "DAT_0015142c = 0" identifier = number_literal) ;) })) }))) (if_statement "if (DAT_0015144c == 0) {\n      if (DAT_00151458 == 0) goto LAB_0008d5f6;\n      DAT_00151458 = 0;\n      sVar4 = strlen(param_1);\n      pcVar3 = (char *)xmalloc(sVar4 + 1);\n      pcVar3 = strcpy(pcVar3,param_1);\n      goto LAB_0008d5c8;\n    }" if (parenthesized_expression "(DAT_0015144c == 0)" ( (binary_expression "DAT_0015144c == 0" identifier == number_literal) )) (compound_statement "{\n      if (DAT_00151458 == 0) goto LAB_0008d5f6;\n      DAT_00151458 = 0;\n      sVar4 = strlen(param_1);\n      pcVar3 = (char *)xmalloc(sVar4 + 1);\n      pcVar3 = strcpy(pcVar3,param_1);\n      goto LAB_0008d5c8;\n    }" { (if_statement "if (DAT_00151458 == 0) goto LAB_0008d5f6;" if (parenthesized_expression "(DAT_00151458 == 0)" ( (binary_expression "DAT_00151458 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0008d5f6;" goto statement_identifier ;)) (expression_statement "DAT_00151458 = 0;" (assignment_expression "DAT_00151458 = 0" identifier = number_literal) ;) (expression_statement "sVar4 = strlen(param_1);" (assignment_expression "sVar4 = strlen(param_1)" identifier = (call_expression "strlen(param_1)" identifier (argument_list "(param_1)" ( identifier )))) ;) (expression_statement "pcVar3 = (char *)xmalloc(sVar4 + 1);" (assignment_expression "pcVar3 = (char *)xmalloc(sVar4 + 1)" identifier = (cast_expression "(char *)xmalloc(sVar4 + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(sVar4 + 1)" identifier (argument_list "(sVar4 + 1)" ( (binary_expression "sVar4 + 1" identifier + number_literal) ))))) ;) (expression_statement "pcVar3 = strcpy(pcVar3,param_1);" (assignment_expression "pcVar3 = strcpy(pcVar3,param_1)" identifier = (call_expression "strcpy(pcVar3,param_1)" identifier (argument_list "(pcVar3,param_1)" ( identifier , identifier )))) ;) (goto_statement "goto LAB_0008d5c8;" goto statement_identifier ;) })) (if_statement "if (param_2 == 0) goto LAB_0008d218;" if (parenthesized_expression "(param_2 == 0)" ( (binary_expression "param_2 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0008d218;" goto statement_identifier ;)) (expression_statement "iVar2 = DAT_0015142c + 1;" (assignment_expression "iVar2 = DAT_0015142c + 1" identifier = (binary_expression "DAT_0015142c + 1" identifier + number_literal)) ;) (expression_statement "puVar6 = DAT_001514d4 + DAT_0015142c;" (assignment_expression "puVar6 = DAT_001514d4 + DAT_0015142c" identifier = (binary_expression "DAT_001514d4 + DAT_0015142c" identifier + identifier)) ;) }))) (expression_statement "DAT_00151454 = (char *)*puVar6;" (assignment_expression "DAT_00151454 = (char *)*puVar6" identifier = (cast_expression "(char *)*puVar6" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar6" * identifier))) ;) (expression_statement "DAT_0015142c = iVar2;" (assignment_expression "DAT_0015142c = iVar2" identifier = identifier) ;) (while_statement "while (DAT_00151454 != (char *)0x0) {\n    iVar2 = executable_or_directory(DAT_00151454);\n    if (iVar2 != 0) {\n      pcVar3 = DAT_00151454;\n      if ((*param_1 == '~') && (DAT_00151448 != (char *)0x0)) {\n        pcVar3 = (char *)FUN_0008a220();\n        free(DAT_00151454);\n        DAT_00151454 = pcVar3;\n      }\n      goto LAB_0008d5c8;\n    }\n    free(DAT_00151454);\n    DAT_00151454 = (char *)DAT_001514d4[DAT_0015142c];\n    DAT_0015142c = DAT_0015142c + 1;\n  }" while (parenthesized_expression "(DAT_00151454 != (char *)0x0)" ( (binary_expression "DAT_00151454 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    iVar2 = executable_or_directory(DAT_00151454);\n    if (iVar2 != 0) {\n      pcVar3 = DAT_00151454;\n      if ((*param_1 == '~') && (DAT_00151448 != (char *)0x0)) {\n        pcVar3 = (char *)FUN_0008a220();\n        free(DAT_00151454);\n        DAT_00151454 = pcVar3;\n      }\n      goto LAB_0008d5c8;\n    }\n    free(DAT_00151454);\n    DAT_00151454 = (char *)DAT_001514d4[DAT_0015142c];\n    DAT_0015142c = DAT_0015142c + 1;\n  }" { (expression_statement "iVar2 = executable_or_directory(DAT_00151454);" (assignment_expression "iVar2 = executable_or_directory(DAT_00151454)" identifier = (call_expression "executable_or_directory(DAT_00151454)" identifier (argument_list "(DAT_00151454)" ( identifier )))) ;) (if_statement "if (iVar2 != 0) {\n      pcVar3 = DAT_00151454;\n      if ((*param_1 == '~') && (DAT_00151448 != (char *)0x0)) {\n        pcVar3 = (char *)FUN_0008a220();\n        free(DAT_00151454);\n        DAT_00151454 = pcVar3;\n      }\n      goto LAB_0008d5c8;\n    }" if (parenthesized_expression "(iVar2 != 0)" ( (binary_expression "iVar2 != 0" identifier != number_literal) )) (compound_statement "{\n      pcVar3 = DAT_00151454;\n      if ((*param_1 == '~') && (DAT_00151448 != (char *)0x0)) {\n        pcVar3 = (char *)FUN_0008a220();\n        free(DAT_00151454);\n        DAT_00151454 = pcVar3;\n      }\n      goto LAB_0008d5c8;\n    }" { (expression_statement "pcVar3 = DAT_00151454;" (assignment_expression "pcVar3 = DAT_00151454" identifier = identifier) ;) (if_statement "if ((*param_1 == '~') && (DAT_00151448 != (char *)0x0)) {\n        pcVar3 = (char *)FUN_0008a220();\n        free(DAT_00151454);\n        DAT_00151454 = pcVar3;\n      }" if (parenthesized_expression "((*param_1 == '~') && (DAT_00151448 != (char *)0x0))" ( (binary_expression "(*param_1 == '~') && (DAT_00151448 != (char *)0x0)" (parenthesized_expression "(*param_1 == '~')" ( (binary_expression "*param_1 == '~'" (pointer_expression "*param_1" * identifier) == (char_literal "'~'" ' character ')) )) && (parenthesized_expression "(DAT_00151448 != (char *)0x0)" ( (binary_expression "DAT_00151448 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) (compound_statement "{\n        pcVar3 = (char *)FUN_0008a220();\n        free(DAT_00151454);\n        DAT_00151454 = pcVar3;\n      }" { (expression_statement "pcVar3 = (char *)FUN_0008a220();" (assignment_expression "pcVar3 = (char *)FUN_0008a220()" identifier = (cast_expression "(char *)FUN_0008a220()" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0008a220()" identifier (argument_list "()" ( ))))) ;) (expression_statement "free(DAT_00151454);" (call_expression "free(DAT_00151454)" identifier (argument_list "(DAT_00151454)" ( identifier ))) ;) (expression_statement "DAT_00151454 = pcVar3;" (assignment_expression "DAT_00151454 = pcVar3" identifier = identifier) ;) })) (goto_statement "goto LAB_0008d5c8;" goto statement_identifier ;) })) (expression_statement "free(DAT_00151454);" (call_expression "free(DAT_00151454)" identifier (argument_list "(DAT_00151454)" ( identifier ))) ;) (expression_statement "DAT_00151454 = (char *)DAT_001514d4[DAT_0015142c];" (assignment_expression "DAT_00151454 = (char *)DAT_001514d4[DAT_0015142c]" identifier = (cast_expression "(char *)DAT_001514d4[DAT_0015142c]" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "DAT_001514d4[DAT_0015142c]" identifier [ identifier ]))) ;) (expression_statement "DAT_0015142c = DAT_0015142c + 1;" (assignment_expression "DAT_0015142c = DAT_0015142c + 1" identifier = (binary_expression "DAT_0015142c + 1" identifier + number_literal)) ;) })) (expression_statement "glob_ignore_case = 0;" (assignment_expression "glob_ignore_case = 0" identifier = number_literal) ;) (expression_statement "pcVar3 = (char *)0x0;" (assignment_expression "pcVar3 = (char *)0x0" identifier = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (labeled_statement "LAB_0008d5c8:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    FUN_000ecc40();\n  }" statement_identifier : (if_statement "if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    FUN_000ecc40();\n  }" if (parenthesized_expression "(local_20 != *(int *)(in_GS_OFFSET + 0x14))" ( (binary_expression "local_20 != *(int *)(in_GS_OFFSET + 0x14)" identifier != (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    FUN_000ecc40();\n  }" { comment (expression_statement "FUN_000ecc40();" (call_expression "FUN_000ecc40()" identifier (argument_list "()" ( ))) ;) }))) (return_statement "return pcVar3;" return identifier ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n/* WARNING: Unknown calling convention */\n\nchar * command_word_completion_function(char *hint_text,int state)\n\n{\n  SHELL_VAR **ppSVar1;\n  alias_t *paVar2;\n  SHELL_VAR **ppSVar3;\n  alias_t **ppaVar4;\n  int iVar5;\n  char *pcVar6;\n  size_t sVar7;\n  char *pcVar8;\n  char **ppcVar9;\n  int iVar10;\n  uint state_00;\n  int iVar11;\n  int iVar12;\n  char *pcVar13;\n  char cVar14;\n  builtin *pbVar15;\n  int in_GS_OFFSET;\n  char *f;\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x8d029;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  if (state == 0) {\n    rl_filename_stat_hook = bash_command_name_stat_hook;\n    if (command_word_completion_function::dequoted_hint == (char *)0x0) {\nLAB_0008d085:\n      if (command_word_completion_function::hint != (char *)0x0) goto LAB_0008d089;\n    }\n    else {\n      if (command_word_completion_function::dequoted_hint != command_word_completion_function::hint)\n      {\n        free(command_word_completion_function::dequoted_hint);\n        goto LAB_0008d085;\n      }\nLAB_0008d089:\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    iVar5 = absolute_pathname(hint_text);\n    if (((iVar5 == 0) && (iVar5 = absolute_program(hint_text), iVar5 == 0)) && (*hint_text != '~'))\n    {\n      iVar5 = test_for_directory(hint_text);\n      command_word_completion_function::hint_is_dir = (int)(iVar5 != 0);\n    }\n    else {\n      command_word_completion_function::hint_is_dir = 0;\n    }\n    command_word_completion_function::val = (char *)0x0;\n    pcVar6 = rl_variable_value("completion-ignore-case");\n    command_word_completion_function::igncase = 0;\n    if ((*pcVar6 == 'o') && (pcVar6[1] == 'n')) {\n      command_word_completion_function::igncase = (int)(pcVar6[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       (iVar5 = absolute_program(hint_text), iVar5 == 0)) {\n      sVar7 = strlen(hint_text);\n      pcVar6 = (char *)xmalloc(sVar7 + 1);\n      pcVar6 = strcpy(pcVar6,hint_text);\n      command_word_completion_function::hint = pcVar6;\n      command_word_completion_function::dequoted_hint = pcVar6;\n      command_word_completion_function::hint_len = strlen(pcVar6);\n      if ((rl_completion_found_quote != 0) && (rl_completion_quote_character == 0)) {\n        command_word_completion_function::dequoted_hint = bash_dequote_filename(pcVar6,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_0008d390;\n    }\n    if (*hint_text == '~') {\n      command_word_completion_function::hint = bash_tilde_expand(hint_text,0);\n      sVar7 = strlen(hint_text);\n      pcVar6 = (char *)xmalloc(sVar7 + 1);\n      pcVar6 = strcpy(pcVar6,hint_text);\n      command_word_completion_function::directory_part = pcVar6;\n      pcVar8 = strchr(pcVar6,0x2f);\n      if (pcVar8 == (char *)0x0) {\n        free(pcVar6);\n        command_word_completion_function::directory_part = (char *)0x0;\n      }\n      else {\n        *pcVar8 = '\0';\n      }\n    }\n    else {\n      sVar7 = strlen(hint_text);\n      if (dircomplete_expand == 0) {\n        pcVar6 = (char *)xmalloc(sVar7 + 1);\n        command_word_completion_function::hint = strcpy(pcVar6,hint_text);\n      }\n      else {\n        pcVar6 = (char *)xmalloc(sVar7 + 1);\n        command_word_completion_function::hint = strcpy(pcVar6,hint_text);\n        bash_directory_completion_hook(&command_word_completion_function::hint);\n      }\n    }\n    command_word_completion_function::dequoted_hint = command_word_completion_function::hint;\n    if ((rl_completion_found_quote != 0) && (rl_completion_quote_character == 0)) {\n      pcVar6 = bash_dequote_filename(command_word_completion_function::hint,0);\n      command_word_completion_function::dequoted_hint = pcVar6;\n      free(command_word_completion_function::hint);\n      command_word_completion_function::hint = pcVar6;\n    }\n    pcVar6 = command_word_completion_function::hint;\n    command_word_completion_function::hint_len = strlen(command_word_completion_function::hint);\n    if (command_word_completion_function::filename_hint != (char *)0x0) {\n      free(command_word_completion_function::filename_hint);\n      pcVar6 = command_word_completion_function::hint;\n    }\n    sVar7 = strlen(pcVar6);\n    pcVar8 = (char *)xmalloc(sVar7 + 1);\n    command_word_completion_function::fnhint = strcpy(pcVar8,pcVar6);\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      state_00 = dircomplete_expand;\n      if ((dircomplete_expand != 0) &&\n         (iVar5 = path_dot_or_dotdot(command_word_completion_function::fnhint),\n         state_00 = command_word_completion_function::istate, iVar5 != 0)) {\n        dircomplete_expand = 1;\n        rl_directory_rewrite_hook = bash_directory_completion_hook;\n        rl_directory_completion_hook = (undefined1 *)0x0;\n      }\n      command_word_completion_function::mapping_over = 4;\n      pcVar6 = command_word_completion_function::fnhint;\n      do {\n        do {\n          while( true ) {\n            command_word_completion_function::val = rl_filename_completion_function(pcVar6,state_00)\n            ;\n            if ((command_word_completion_function::mapping_over == 4) && (dircomplete_expand != 0))\n            {\n              rl_directory_completion_hook = bash_directory_completion_hook;\n              rl_directory_rewrite_hook = (undefined1 *)0x0;\n            }\n            command_word_completion_function::istate = 1;\n            if (command_word_completion_function::val == (char *)0x0) break;\n            iVar5 = absolute_program(command_word_completion_function::hint);\n            pcVar8 = command_word_completion_function::val;\n            if (iVar5 == 0) {\n              pcVar6 = strrchr(command_word_completion_function::val,0x2f);\n              if (pcVar6 != (char *)0x0) {\n                pcVar6 = pcVar6 + 1;\n                if (command_word_completion_function::igncase == 0) {\n                  iVar5 = strncmp(pcVar6,command_word_completion_function::hint,\n                                  command_word_completion_function::hint_len);\n                }\n                else {\n                  iVar5 = strncasecmp(pcVar6,command_word_completion_function::hint,\n                                      command_word_completion_function::hint_len);\n                }\n                if (iVar5 == 0) {\n                  sVar7 = strlen(pcVar6);\n                  pcVar8 = (char *)xmalloc(sVar7 + 1);\n                  pcVar6 = strcpy(pcVar8,pcVar6);\n                  goto LAB_0008d6a4;\n                }\n              }\n            }\n            else {\n              if (command_word_completion_function::igncase == 0) {\n                iVar5 = strncmp(command_word_completion_function::val,\n                                command_word_completion_function::hint,\n                                command_word_completion_function::hint_len);\n              }\n              else {\n                iVar5 = strncasecmp(command_word_completion_function::val,\n                                    command_word_completion_function::hint,\n                                    command_word_completion_function::hint_len);\n              }\n              if (*hint_text == '~') {\n                pcVar6 = maybe_restore_tilde(pcVar8,command_word_completion_function::directory_part\n                                            );\n              }\n              else {\n                sVar7 = strlen(pcVar8);\n                pcVar6 = (char *)xmalloc(sVar7 + 1);\n                pcVar6 = strcpy(pcVar6,pcVar8);\n              }\n              pcVar8 = command_word_completion_function::val;\n              if (iVar5 == 0) {\nLAB_0008d6a4:\n                iVar5 = command_word_completion_function::searching_path;\n                pcVar13 = command_word_completion_function::val;\n                sVar7 = strlen(command_word_completion_function::val);\n                pcVar8 = (char *)xmalloc(sVar7 + 1);\n                f = strcpy(pcVar8,pcVar13);\n                bash_directory_completion_hook(&f);\n                if (iVar5 == 0) {\n                  iVar5 = executable_or_directory(f);\n                }\n                else {\n                  iVar5 = executable_file(f);\n                }\n                free(f);\n                pcVar8 = command_word_completion_function::val;\n                if (iVar5 != 0) {\n                  if (pcVar13 != command_word_completion_function::val) {\n                    free(pcVar13);\n                  }\n                  free(pcVar8);\n                  command_word_completion_function::val = "";\n                  goto LAB_0008d5c8;\n                }\n                free(pcVar6);\n                if (pcVar13 != pcVar8) {\n                  free(pcVar13);\n                }\n              }\n              else {\n                free(pcVar6);\n              }\n            }\n            free(pcVar8);\n            state_00 = command_word_completion_function::istate;\n            pcVar6 = command_word_completion_function::fnhint;\n          }\n          iVar5 = absolute_program(command_word_completion_function::hint);\n          if (iVar5 != 0) goto LAB_0008dac4;\nLAB_0008d5f6:\n          state_00 = (uint)(command_word_completion_function::val != (char *)0x0);\n          pcVar6 = command_word_completion_function::fnhint;\n          command_word_completion_function::istate = state_00;\n        } while (command_word_completion_function::val != (char *)0x0);\n        if (((command_word_completion_function::path == (char *)0x0) ||\n            (command_word_completion_function::path[command_word_completion_function::path_index] ==\n             '\0')) ||\n           (pcVar6 = extract_colon_unit(command_word_completion_function::path,\n                                        &command_word_completion_function::path_index),\n           pcVar6 == (char *)0x0)) goto LAB_0008dac4;\n        command_word_completion_function::searching_path = 1;\n        cVar14 = *pcVar6;\n        if (cVar14 == '\0') {\n          free(pcVar6);\n          pcVar6 = (char *)xmalloc(2);\n          pcVar6[0] = '.';\n          pcVar6[1] = '\0';\n          cVar14 = '.';\n        }\n        pcVar8 = pcVar6;\n        if (cVar14 == '~') {\n          pcVar8 = bash_tilde_expand(pcVar6,0);\n          free(pcVar6);\n          cVar14 = *pcVar8;\n        }\n        pcVar6 = command_word_completion_function::filename_hint;\n        if ((cVar14 == '.') && (pcVar8[1] == '\0')) {\n          dot_in_path = 1;\n        }\n        if (command_word_completion_function::fnhint == (char *)0x0) {\nLAB_0008dbfe:\n          if (pcVar6 != (char *)0x0) goto LAB_0008de5f;\n        }\n        else {\n          if (command_word_completion_function::fnhint !=\n              command_word_completion_function::filename_hint) {\n            free(command_word_completion_function::fnhint);\n            goto LAB_0008dbfe;\n          }\nLAB_0008de5f:\n          free(pcVar6);\n        }\n        pcVar6 = sh_makepath(pcVar8,command_word_completion_function::hint,0);\n        command_word_completion_function::filename_hint = pcVar6;\n        pcVar13 = strpbrk(pcVar6,"\"\'\\");\n        if (pcVar13 != (char *)0x0) {\n          pcVar6 = sh_backslash_quote(pcVar6,filename_bstab,0);\n        }\n        command_word_completion_function::fnhint = pcVar6;\n        free(pcVar8);\n        state_00 = command_word_completion_function::istate;\n      } while( true );\n    }\n    command_word_completion_function::mapping_over = 5;\nLAB_0008d218:\n    glob_ignore_case = command_word_completion_function::igncase;\n    ppcVar9 = shell_glob_filename(command_word_completion_function::hint);\n    glob_ignore_case = 0;\n    if ((ppcVar9 == (char **)PTR_glob_error_return_00149f60) || (ppcVar9 == (char **)0x0)) {\n      command_word_completion_function::glob_matches = (char **)0x0;\n      pcVar6 = (char *)0x0;\n      goto LAB_0008d5c8;\n    }\n    command_word_completion_function::local_index = 0;\n    command_word_completion_function::glob_matches = ppcVar9;\n    if ((ppcVar9[1] != (char *)0x0) && (rl_completion_type == 9)) {\nLAB_0008dac4:\n      pcVar6 = (char *)0x0;\n      goto LAB_0008d5c8;\n    }\n    iVar5 = 1;\n  }\n  else {\nLAB_0008d390:\n    pcVar6 = command_word_completion_function::hint;\n    iVar12 = command_word_completion_function::igncase;\n    iVar5 = command_word_completion_function::hint_len;\n    ppaVar4 = command_word_completion_function::alias_list;\n    iVar11 = command_word_completion_function::local_index;\n    if (command_word_completion_function::mapping_over == 1) {\nLAB_0008d960:\n      do {\n        pcVar8 = word_token_alist[iVar11].word;\n        if (pcVar8 == (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          iVar12 = command_word_completion_function::igncase;\n          ppSVar3 = command_word_completion_function::varlist;\n          goto LAB_0008d840;\n        }\n        iVar11 = iVar11 + 1;\n        command_word_completion_function::local_index = iVar11;\n      } while ((iVar5 != 0) &&\n              ((*pcVar8 != *pcVar6 || (iVar12 = strncmp(pcVar8,pcVar6,iVar5), iVar12 != 0))));\nLAB_0008d451:\n      sVar7 = strlen(pcVar8);\n      pcVar6 = (char *)xmalloc(sVar7 + 1);\n      pcVar6 = strcpy(pcVar6,pcVar8);\n      goto LAB_0008d5c8;\n    }\n    if (command_word_completion_function::mapping_over < 2) {\n      if (command_word_completion_function::mapping_over == 0) {\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::mapping_over = 1;\n              iVar11 = 0;\n              goto LAB_0008d960;\n            }\n            command_word_completion_function::local_index =\n                 command_word_completion_function::local_index + 1;\n            pcVar8 = paVar2->name;\n            if (iVar12 != 0) break;\n            if ((iVar5 == 0) ||\n               ((*pcVar8 == *pcVar6 && (iVar11 = strncmp(pcVar8,pcVar6,iVar5), iVar11 == 0))))\n            goto LAB_0008d451;\n          }\n          iVar11 = strncasecmp(pcVar8,pcVar6,iVar5);\n        } while (iVar11 != 0);\n        goto LAB_0008d451;\n      }\n    }\n    else {\n      ppSVar3 = command_word_completion_function::varlist;\n      if (command_word_completion_function::mapping_over == 2) {\nLAB_0008d840:\n        do {\n          if ((ppSVar3 == (SHELL_VAR **)0x0) ||\n             (ppSVar1 = ppSVar3 + command_word_completion_function::local_index,\n             *ppSVar1 == (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_0008d3bd;\n          }\n          command_word_completion_function::local_index =\n               command_word_completion_function::local_index + 1;\n          pcVar8 = (*ppSVar1)->name;\n          if (iVar12 == 0) {\n            if ((iVar5 == 0) ||\n               ((*pcVar8 == *pcVar6 && (iVar11 = strncmp(pcVar8,pcVar6,iVar5), iVar11 == 0))))\n            break;\n            goto LAB_0008d840;\n          }\n          iVar11 = strncasecmp(pcVar8,pcVar6,iVar5);\n        } while (iVar11 != 0);\n        sVar7 = strlen(pcVar8);\n        pcVar6 = (char *)xmalloc(sVar7 + 1);\n        pcVar6 = strcpy(pcVar6,pcVar8);\n        goto LAB_0008d5c8;\n      }\n      if (command_word_completion_function::mapping_over == 3) {\nLAB_0008d3bd:\n        pcVar6 = command_word_completion_function::hint;\n        iVar12 = command_word_completion_function::hint_len;\n        iVar5 = num_shell_builtins;\n        if (command_word_completion_function::local_index < num_shell_builtins) {\n          pbVar15 = shell_builtins + command_word_completion_function::local_index;\n          do {\n            iVar11 = command_word_completion_function::local_index;\n            if (((pbVar15->function != (sh_builtin_func_t *)0x0) && ((pbVar15->flags & 1) != 0)) &&\n               ((pcVar8 = pbVar15->name, iVar12 == 0 ||\n                ((*pcVar8 == *pcVar6 && (iVar10 = strncmp(pcVar8,pcVar6,iVar12), iVar10 == 0)))))) {\n              command_word_completion_function::local_index = iVar11 + 1;\n              goto LAB_0008d451;\n            }\n            command_word_completion_function::local_index = iVar11 + 1;\n            pbVar15 = pbVar15 + 1;\n          } while (command_word_completion_function::local_index != iVar5);\n        }\n        command_word_completion_function::mapping_over =\n             command_word_completion_function::mapping_over + 1;\n        command_word_completion_function::local_index = 0;\n      }\n    }\n    if (command_word_completion_function::globpat == 0) {\n      if (command_word_completion_function::hint_is_dir == 0) goto LAB_0008d5f6;\n      command_word_completion_function::hint_is_dir = 0;\n      sVar7 = strlen(hint_text);\n      pcVar6 = (char *)xmalloc(sVar7 + 1);\n      pcVar6 = strcpy(pcVar6,hint_text);\n      goto LAB_0008d5c8;\n    }\n    if (state == 0) goto LAB_0008d218;\n    iVar5 = command_word_completion_function::local_index + 1;\n    ppcVar9 = command_word_completion_function::glob_matches +\n              command_word_completion_function::local_index;\n  }\n  command_word_completion_function::val = *ppcVar9;\n  command_word_completion_function::local_index = iVar5;\n  while (command_word_completion_function::val != (char *)0x0) {\n    iVar5 = executable_or_directory(command_word_completion_function::val);\n    if (iVar5 != 0) {\n      pcVar6 = command_word_completion_function::val;\n      if ((*hint_text == '~') && (command_word_completion_function::directory_part != (char *)0x0))\n      {\n        pcVar6 = 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 = pcVar6;\n      }\n      goto LAB_0008d5c8;\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    command_word_completion_function::local_index =\n         command_word_completion_function::local_index + 1;\n  }\n  glob_ignore_case = 0;\n  pcVar6 = (char *)0x0;\nLAB_0008d5c8:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail_local();\n  }\n  return pcVar6;\n}\n\n" comment comment (function_definition "char * command_word_completion_function(char *hint_text,int state)\n\n{\n  SHELL_VAR **ppSVar1;\n  alias_t *paVar2;\n  SHELL_VAR **ppSVar3;\n  alias_t **ppaVar4;\n  int iVar5;\n  char *pcVar6;\n  size_t sVar7;\n  char *pcVar8;\n  char **ppcVar9;\n  int iVar10;\n  uint state_00;\n  int iVar11;\n  int iVar12;\n  char *pcVar13;\n  char cVar14;\n  builtin *pbVar15;\n  int in_GS_OFFSET;\n  char *f;\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x8d029;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  if (state == 0) {\n    rl_filename_stat_hook = bash_command_name_stat_hook;\n    if (command_word_completion_function::dequoted_hint == (char *)0x0) {\nLAB_0008d085:\n      if (command_word_completion_function::hint != (char *)0x0) goto LAB_0008d089;\n    }\n    else {\n      if (command_word_completion_function::dequoted_hint != command_word_completion_function::hint)\n      {\n        free(command_word_completion_function::dequoted_hint);\n        goto LAB_0008d085;\n      }\nLAB_0008d089:\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    iVar5 = absolute_pathname(hint_text);\n    if (((iVar5 == 0) && (iVar5 = absolute_program(hint_text), iVar5 == 0)) && (*hint_text != '~'))\n    {\n      iVar5 = test_for_directory(hint_text);\n      command_word_completion_function::hint_is_dir = (int)(iVar5 != 0);\n    }\n    else {\n      command_word_completion_function::hint_is_dir = 0;\n    }\n    command_word_completion_function::val = (char *)0x0;\n    pcVar6 = rl_variable_value("completion-ignore-case");\n    command_word_completion_function::igncase = 0;\n    if ((*pcVar6 == 'o') && (pcVar6[1] == 'n')) {\n      command_word_completion_function::igncase = (int)(pcVar6[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       (iVar5 = absolute_program(hint_text), iVar5 == 0)) {\n      sVar7 = strlen(hint_text);\n      pcVar6 = (char *)xmalloc(sVar7 + 1);\n      pcVar6 = strcpy(pcVar6,hint_text);\n      command_word_completion_function::hint = pcVar6;\n      command_word_completion_function::dequoted_hint = pcVar6;\n      command_word_completion_function::hint_len = strlen(pcVar6);\n      if ((rl_completion_found_quote != 0) && (rl_completion_quote_character == 0)) {\n        command_word_completion_function::dequoted_hint = bash_dequote_filename(pcVar6,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_0008d390;\n    }\n    if (*hint_text == '~') {\n      command_word_completion_function::hint = bash_tilde_expand(hint_text,0);\n      sVar7 = strlen(hint_text);\n      pcVar6 = (char *)xmalloc(sVar7 + 1);\n      pcVar6 = strcpy(pcVar6,hint_text);\n      command_word_completion_function::directory_part = pcVar6;\n      pcVar8 = strchr(pcVar6,0x2f);\n      if (pcVar8 == (char *)0x0) {\n        free(pcVar6);\n        command_word_completion_function::directory_part = (char *)0x0;\n      }\n      else {\n        *pcVar8 = '\0';\n      }\n    }\n    else {\n      sVar7 = strlen(hint_text);\n      if (dircomplete_expand == 0) {\n        pcVar6 = (char *)xmalloc(sVar7 + 1);\n        command_word_completion_function::hint = strcpy(pcVar6,hint_text);\n      }\n      else {\n        pcVar6 = (char *)xmalloc(sVar7 + 1);\n        command_word_completion_function::hint = strcpy(pcVar6,hint_text);\n        bash_directory_completion_hook(&command_word_completion_function::hint);\n      }\n    }\n    command_word_completion_function::dequoted_hint = command_word_completion_function::hint;\n    if ((rl_completion_found_quote != 0) && (rl_completion_quote_character == 0)) {\n      pcVar6 = bash_dequote_filename(command_word_completion_function::hint,0);\n      command_word_completion_function::dequoted_hint = pcVar6;\n      free(command_word_completion_function::hint);\n      command_word_completion_function::hint = pcVar6;\n    }\n    pcVar6 = command_word_completion_function::hint;\n    command_word_completion_function::hint_len = strlen(command_word_completion_function::hint);\n    if (command_word_completion_function::filename_hint != (char *)0x0) {\n      free(command_word_completion_function::filename_hint);\n      pcVar6 = command_word_completion_function::hint;\n    }\n    sVar7 = strlen(pcVar6);\n    pcVar8 = (char *)xmalloc(sVar7 + 1);\n    command_word_completion_function::fnhint = strcpy(pcVar8,pcVar6);\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      state_00 = dircomplete_expand;\n      if ((dircomplete_expand != 0) &&\n         (iVar5 = path_dot_or_dotdot(command_word_completion_function::fnhint),\n         state_00 = command_word_completion_function::istate, iVar5 != 0)) {\n        dircomplete_expand = 1;\n        rl_directory_rewrite_hook = bash_directory_completion_hook;\n        rl_directory_completion_hook = (undefined1 *)0x0;\n      }\n      command_word_completion_function::mapping_over = 4;\n      pcVar6 = command_word_completion_function::fnhint;\n      do {\n        do {\n          while( true ) {\n            command_word_completion_function::val = rl_filename_completion_function(pcVar6,state_00)\n            ;\n            if ((command_word_completion_function::mapping_over == 4) && (dircomplete_expand != 0))\n            {\n              rl_directory_completion_hook = bash_directory_completion_hook;\n              rl_directory_rewrite_hook = (undefined1 *)0x0;\n            }\n            command_word_completion_function::istate = 1;\n            if (command_word_completion_function::val == (char *)0x0) break;\n            iVar5 = absolute_program(command_word_completion_function::hint);\n            pcVar8 = command_word_completion_function::val;\n            if (iVar5 == 0) {\n              pcVar6 = strrchr(command_word_completion_function::val,0x2f);\n              if (pcVar6 != (char *)0x0) {\n                pcVar6 = pcVar6 + 1;\n                if (command_word_completion_function::igncase == 0) {\n                  iVar5 = strncmp(pcVar6,command_word_completion_function::hint,\n                                  command_word_completion_function::hint_len);\n                }\n                else {\n                  iVar5 = strncasecmp(pcVar6,command_word_completion_function::hint,\n                                      command_word_completion_function::hint_len);\n                }\n                if (iVar5 == 0) {\n                  sVar7 = strlen(pcVar6);\n                  pcVar8 = (char *)xmalloc(sVar7 + 1);\n                  pcVar6 = strcpy(pcVar8,pcVar6);\n                  goto LAB_0008d6a4;\n                }\n              }\n            }\n            else {\n              if (command_word_completion_function::igncase == 0) {\n                iVar5 = strncmp(command_word_completion_function::val,\n                                command_word_completion_function::hint,\n                                command_word_completion_function::hint_len);\n              }\n              else {\n                iVar5 = strncasecmp(command_word_completion_function::val,\n                                    command_word_completion_function::hint,\n                                    command_word_completion_function::hint_len);\n              }\n              if (*hint_text == '~') {\n                pcVar6 = maybe_restore_tilde(pcVar8,command_word_completion_function::directory_part\n                                            );\n              }\n              else {\n                sVar7 = strlen(pcVar8);\n                pcVar6 = (char *)xmalloc(sVar7 + 1);\n                pcVar6 = strcpy(pcVar6,pcVar8);\n              }\n              pcVar8 = command_word_completion_function::val;\n              if (iVar5 == 0) {\nLAB_0008d6a4:\n                iVar5 = command_word_completion_function::searching_path;\n                pcVar13 = command_word_completion_function::val;\n                sVar7 = strlen(command_word_completion_function::val);\n                pcVar8 = (char *)xmalloc(sVar7 + 1);\n                f = strcpy(pcVar8,pcVar13);\n                bash_directory_completion_hook(&f);\n                if (iVar5 == 0) {\n                  iVar5 = executable_or_directory(f);\n                }\n                else {\n                  iVar5 = executable_file(f);\n                }\n                free(f);\n                pcVar8 = command_word_completion_function::val;\n                if (iVar5 != 0) {\n                  if (pcVar13 != command_word_completion_function::val) {\n                    free(pcVar13);\n                  }\n                  free(pcVar8);\n                  command_word_completion_function::val = "";\n                  goto LAB_0008d5c8;\n                }\n                free(pcVar6);\n                if (pcVar13 != pcVar8) {\n                  free(pcVar13);\n                }\n              }\n              else {\n                free(pcVar6);\n              }\n            }\n            free(pcVar8);\n            state_00 = command_word_completion_function::istate;\n            pcVar6 = command_word_completion_function::fnhint;\n          }\n          iVar5 = absolute_program(command_word_completion_function::hint);\n          if (iVar5 != 0) goto LAB_0008dac4;\nLAB_0008d5f6:\n          state_00 = (uint)(command_word_completion_function::val != (char *)0x0);\n          pcVar6 = command_word_completion_function::fnhint;\n          command_word_completion_function::istate = state_00;\n        } while (command_word_completion_function::val != (char *)0x0);\n        if (((command_word_completion_function::path == (char *)0x0) ||\n            (command_word_completion_function::path[command_word_completion_function::path_index] ==\n             '\0')) ||\n           (pcVar6 = extract_colon_unit(command_word_completion_function::path,\n                                        &command_word_completion_function::path_index),\n           pcVar6 == (char *)0x0)) goto LAB_0008dac4;\n        command_word_completion_function::searching_path = 1;\n        cVar14 = *pcVar6;\n        if (cVar14 == '\0') {\n          free(pcVar6);\n          pcVar6 = (char *)xmalloc(2);\n          pcVar6[0] = '.';\n          pcVar6[1] = '\0';\n          cVar14 = '.';\n        }\n        pcVar8 = pcVar6;\n        if (cVar14 == '~') {\n          pcVar8 = bash_tilde_expand(pcVar6,0);\n          free(pcVar6);\n          cVar14 = *pcVar8;\n        }\n        pcVar6 = command_word_completion_function::filename_hint;\n        if ((cVar14 == '.') && (pcVar8[1] == '\0')) {\n          dot_in_path = 1;\n        }\n        if (command_word_completion_function::fnhint == (char *)0x0) {\nLAB_0008dbfe:\n          if (pcVar6 != (char *)0x0) goto LAB_0008de5f;\n        }\n        else {\n          if (command_word_completion_function::fnhint !=\n              command_word_completion_function::filename_hint) {\n            free(command_word_completion_function::fnhint);\n            goto LAB_0008dbfe;\n          }\nLAB_0008de5f:\n          free(pcVar6);\n        }\n        pcVar6 = sh_makepath(pcVar8,command_word_completion_function::hint,0);\n        command_word_completion_function::filename_hint = pcVar6;\n        pcVar13 = strpbrk(pcVar6,"\"\'\\");\n        if (pcVar13 != (char *)0x0) {\n          pcVar6 = sh_backslash_quote(pcVar6,filename_bstab,0);\n        }\n        command_word_completion_function::fnhint = pcVar6;\n        free(pcVar8);\n        state_00 = command_word_completion_function::istate;\n      } while( true );\n    }\n    command_word_completion_function::mapping_over = 5;\nLAB_0008d218:\n    glob_ignore_case = command_word_completion_function::igncase;\n    ppcVar9 = shell_glob_filename(command_word_completion_function::hint);\n    glob_ignore_case = 0;\n    if ((ppcVar9 == (char **)PTR_glob_error_return_00149f60) || (ppcVar9 == (char **)0x0)) {\n      command_word_completion_function::glob_matches = (char **)0x0;\n      pcVar6 = (char *)0x0;\n      goto LAB_0008d5c8;\n    }\n    command_word_completion_function::local_index = 0;\n    command_word_completion_function::glob_matches = ppcVar9;\n    if ((ppcVar9[1] != (char *)0x0) && (rl_completion_type == 9)) {\nLAB_0008dac4:\n      pcVar6 = (char *)0x0;\n      goto LAB_0008d5c8;\n    }\n    iVar5 = 1;\n  }\n  else {\nLAB_0008d390:\n    pcVar6 = command_word_completion_function::hint;\n    iVar12 = command_word_completion_function::igncase;\n    iVar5 = command_word_completion_function::hint_len;\n    ppaVar4 = command_word_completion_function::alias_list;\n    iVar11 = command_word_completion_function::local_index;\n    if (command_word_completion_function::mapping_over == 1) {\nLAB_0008d960:\n      do {\n        pcVar8 = word_token_alist[iVar11].word;\n        if (pcVar8 == (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          iVar12 = command_word_completion_function::igncase;\n          ppSVar3 = command_word_completion_function::varlist;\n          goto LAB_0008d840;\n        }\n        iVar11 = iVar11 + 1;\n        command_word_completion_function::local_index = iVar11;\n      } while ((iVar5 != 0) &&\n              ((*pcVar8 != *pcVar6 || (iVar12 = strncmp(pcVar8,pcVar6,iVar5), iVar12 != 0))));\nLAB_0008d451:\n      sVar7 = strlen(pcVar8);\n      pcVar6 = (char *)xmalloc(sVar7 + 1);\n      pcVar6 = strcpy(pcVar6,pcVar8);\n      goto LAB_0008d5c8;\n    }\n    if (command_word_completion_function::mapping_over < 2) {\n      if (command_word_completion_function::mapping_over == 0) {\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::mapping_over = 1;\n              iVar11 = 0;\n              goto LAB_0008d960;\n            }\n            command_word_completion_function::local_index =\n                 command_word_completion_function::local_index + 1;\n            pcVar8 = paVar2->name;\n            if (iVar12 != 0) break;\n            if ((iVar5 == 0) ||\n               ((*pcVar8 == *pcVar6 && (iVar11 = strncmp(pcVar8,pcVar6,iVar5), iVar11 == 0))))\n            goto LAB_0008d451;\n          }\n          iVar11 = strncasecmp(pcVar8,pcVar6,iVar5);\n        } while (iVar11 != 0);\n        goto LAB_0008d451;\n      }\n    }\n    else {\n      ppSVar3 = command_word_completion_function::varlist;\n      if (command_word_completion_function::mapping_over == 2) {\nLAB_0008d840:\n        do {\n          if ((ppSVar3 == (SHELL_VAR **)0x0) ||\n             (ppSVar1 = ppSVar3 + command_word_completion_function::local_index,\n             *ppSVar1 == (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_0008d3bd;\n          }\n          command_word_completion_function::local_index =\n               command_word_completion_function::local_index + 1;\n          pcVar8 = (*ppSVar1)->name;\n          if (iVar12 == 0) {\n            if ((iVar5 == 0) ||\n               ((*pcVar8 == *pcVar6 && (iVar11 = strncmp(pcVar8,pcVar6,iVar5), iVar11 == 0))))\n            break;\n            goto LAB_0008d840;\n          }\n          iVar11 = strncasecmp(pcVar8,pcVar6,iVar5);\n        } while (iVar11 != 0);\n        sVar7 = strlen(pcVar8);\n        pcVar6 = (char *)xmalloc(sVar7 + 1);\n        pcVar6 = strcpy(pcVar6,pcVar8);\n        goto LAB_0008d5c8;\n      }\n      if (command_word_completion_function::mapping_over == 3) {\nLAB_0008d3bd:\n        pcVar6 = command_word_completion_function::hint;\n        iVar12 = command_word_completion_function::hint_len;\n        iVar5 = num_shell_builtins;\n        if (command_word_completion_function::local_index < num_shell_builtins) {\n          pbVar15 = shell_builtins + command_word_completion_function::local_index;\n          do {\n            iVar11 = command_word_completion_function::local_index;\n            if (((pbVar15->function != (sh_builtin_func_t *)0x0) && ((pbVar15->flags & 1) != 0)) &&\n               ((pcVar8 = pbVar15->name, iVar12 == 0 ||\n                ((*pcVar8 == *pcVar6 && (iVar10 = strncmp(pcVar8,pcVar6,iVar12), iVar10 == 0)))))) {\n              command_word_completion_function::local_index = iVar11 + 1;\n              goto LAB_0008d451;\n            }\n            command_word_completion_function::local_index = iVar11 + 1;\n            pbVar15 = pbVar15 + 1;\n          } while (command_word_completion_function::local_index != iVar5);\n        }\n        command_word_completion_function::mapping_over =\n             command_word_completion_function::mapping_over + 1;\n        command_word_completion_function::local_index = 0;\n      }\n    }\n    if (command_word_completion_function::globpat == 0) {\n      if (command_word_completion_function::hint_is_dir == 0) goto LAB_0008d5f6;\n      command_word_completion_function::hint_is_dir = 0;\n      sVar7 = strlen(hint_text);\n      pcVar6 = (char *)xmalloc(sVar7 + 1);\n      pcVar6 = strcpy(pcVar6,hint_text);\n      goto LAB_0008d5c8;\n    }\n    if (state == 0) goto LAB_0008d218;\n    iVar5 = command_word_completion_function::local_index + 1;\n    ppcVar9 = command_word_completion_function::glob_matches +\n              command_word_completion_function::local_index;\n  }\n  command_word_completion_function::val = *ppcVar9;\n  command_word_completion_function::local_index = iVar5;\n  while (command_word_completion_function::val != (char *)0x0) {\n    iVar5 = executable_or_directory(command_word_completion_function::val);\n    if (iVar5 != 0) {\n      pcVar6 = command_word_completion_function::val;\n      if ((*hint_text == '~') && (command_word_completion_function::directory_part != (char *)0x0))\n      {\n        pcVar6 = 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 = pcVar6;\n      }\n      goto LAB_0008d5c8;\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    command_word_completion_function::local_index =\n         command_word_completion_function::local_index + 1;\n  }\n  glob_ignore_case = 0;\n  pcVar6 = (char *)0x0;\nLAB_0008d5c8:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail_local();\n  }\n  return pcVar6;\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  SHELL_VAR **ppSVar1;\n  alias_t *paVar2;\n  SHELL_VAR **ppSVar3;\n  alias_t **ppaVar4;\n  int iVar5;\n  char *pcVar6;\n  size_t sVar7;\n  char *pcVar8;\n  char **ppcVar9;\n  int iVar10;\n  uint state_00;\n  int iVar11;\n  int iVar12;\n  char *pcVar13;\n  char cVar14;\n  builtin *pbVar15;\n  int in_GS_OFFSET;\n  char *f;\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x8d029;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  if (state == 0) {\n    rl_filename_stat_hook = bash_command_name_stat_hook;\n    if (command_word_completion_function::dequoted_hint == (char *)0x0) {\nLAB_0008d085:\n      if (command_word_completion_function::hint != (char *)0x0) goto LAB_0008d089;\n    }\n    else {\n      if (command_word_completion_function::dequoted_hint != command_word_completion_function::hint)\n      {\n        free(command_word_completion_function::dequoted_hint);\n        goto LAB_0008d085;\n      }\nLAB_0008d089:\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    iVar5 = absolute_pathname(hint_text);\n    if (((iVar5 == 0) && (iVar5 = absolute_program(hint_text), iVar5 == 0)) && (*hint_text != '~'))\n    {\n      iVar5 = test_for_directory(hint_text);\n      command_word_completion_function::hint_is_dir = (int)(iVar5 != 0);\n    }\n    else {\n      command_word_completion_function::hint_is_dir = 0;\n    }\n    command_word_completion_function::val = (char *)0x0;\n    pcVar6 = rl_variable_value("completion-ignore-case");\n    command_word_completion_function::igncase = 0;\n    if ((*pcVar6 == 'o') && (pcVar6[1] == 'n')) {\n      command_word_completion_function::igncase = (int)(pcVar6[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       (iVar5 = absolute_program(hint_text), iVar5 == 0)) {\n      sVar7 = strlen(hint_text);\n      pcVar6 = (char *)xmalloc(sVar7 + 1);\n      pcVar6 = strcpy(pcVar6,hint_text);\n      command_word_completion_function::hint = pcVar6;\n      command_word_completion_function::dequoted_hint = pcVar6;\n      command_word_completion_function::hint_len = strlen(pcVar6);\n      if ((rl_completion_found_quote != 0) && (rl_completion_quote_character == 0)) {\n        command_word_completion_function::dequoted_hint = bash_dequote_filename(pcVar6,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_0008d390;\n    }\n    if (*hint_text == '~') {\n      command_word_completion_function::hint = bash_tilde_expand(hint_text,0);\n      sVar7 = strlen(hint_text);\n      pcVar6 = (char *)xmalloc(sVar7 + 1);\n      pcVar6 = strcpy(pcVar6,hint_text);\n      command_word_completion_function::directory_part = pcVar6;\n      pcVar8 = strchr(pcVar6,0x2f);\n      if (pcVar8 == (char *)0x0) {\n        free(pcVar6);\n        command_word_completion_function::directory_part = (char *)0x0;\n      }\n      else {\n        *pcVar8 = '\0';\n      }\n    }\n    else {\n      sVar7 = strlen(hint_text);\n      if (dircomplete_expand == 0) {\n        pcVar6 = (char *)xmalloc(sVar7 + 1);\n        command_word_completion_function::hint = strcpy(pcVar6,hint_text);\n      }\n      else {\n        pcVar6 = (char *)xmalloc(sVar7 + 1);\n        command_word_completion_function::hint = strcpy(pcVar6,hint_text);\n        bash_directory_completion_hook(&command_word_completion_function::hint);\n      }\n    }\n    command_word_completion_function::dequoted_hint = command_word_completion_function::hint;\n    if ((rl_completion_found_quote != 0) && (rl_completion_quote_character == 0)) {\n      pcVar6 = bash_dequote_filename(command_word_completion_function::hint,0);\n      command_word_completion_function::dequoted_hint = pcVar6;\n      free(command_word_completion_function::hint);\n      command_word_completion_function::hint = pcVar6;\n    }\n    pcVar6 = command_word_completion_function::hint;\n    command_word_completion_function::hint_len = strlen(command_word_completion_function::hint);\n    if (command_word_completion_function::filename_hint != (char *)0x0) {\n      free(command_word_completion_function::filename_hint);\n      pcVar6 = command_word_completion_function::hint;\n    }\n    sVar7 = strlen(pcVar6);\n    pcVar8 = (char *)xmalloc(sVar7 + 1);\n    command_word_completion_function::fnhint = strcpy(pcVar8,pcVar6);\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      state_00 = dircomplete_expand;\n      if ((dircomplete_expand != 0) &&\n         (iVar5 = path_dot_or_dotdot(command_word_completion_function::fnhint),\n         state_00 = command_word_completion_function::istate, iVar5 != 0)) {\n        dircomplete_expand = 1;\n        rl_directory_rewrite_hook = bash_directory_completion_hook;\n        rl_directory_completion_hook = (undefined1 *)0x0;\n      }\n      command_word_completion_function::mapping_over = 4;\n      pcVar6 = command_word_completion_function::fnhint;\n      do {\n        do {\n          while( true ) {\n            command_word_completion_function::val = rl_filename_completion_function(pcVar6,state_00)\n            ;\n            if ((command_word_completion_function::mapping_over == 4) && (dircomplete_expand != 0))\n            {\n              rl_directory_completion_hook = bash_directory_completion_hook;\n              rl_directory_rewrite_hook = (undefined1 *)0x0;\n            }\n            command_word_completion_function::istate = 1;\n            if (command_word_completion_function::val == (char *)0x0) break;\n            iVar5 = absolute_program(command_word_completion_function::hint);\n            pcVar8 = command_word_completion_function::val;\n            if (iVar5 == 0) {\n              pcVar6 = strrchr(command_word_completion_function::val,0x2f);\n              if (pcVar6 != (char *)0x0) {\n                pcVar6 = pcVar6 + 1;\n                if (command_word_completion_function::igncase == 0) {\n                  iVar5 = strncmp(pcVar6,command_word_completion_function::hint,\n                                  command_word_completion_function::hint_len);\n                }\n                else {\n                  iVar5 = strncasecmp(pcVar6,command_word_completion_function::hint,\n                                      command_word_completion_function::hint_len);\n                }\n                if (iVar5 == 0) {\n                  sVar7 = strlen(pcVar6);\n                  pcVar8 = (char *)xmalloc(sVar7 + 1);\n                  pcVar6 = strcpy(pcVar8,pcVar6);\n                  goto LAB_0008d6a4;\n                }\n              }\n            }\n            else {\n              if (command_word_completion_function::igncase == 0) {\n                iVar5 = strncmp(command_word_completion_function::val,\n                                command_word_completion_function::hint,\n                                command_word_completion_function::hint_len);\n              }\n              else {\n                iVar5 = strncasecmp(command_word_completion_function::val,\n                                    command_word_completion_function::hint,\n                                    command_word_completion_function::hint_len);\n              }\n              if (*hint_text == '~') {\n                pcVar6 = maybe_restore_tilde(pcVar8,command_word_completion_function::directory_part\n                                            );\n              }\n              else {\n                sVar7 = strlen(pcVar8);\n                pcVar6 = (char *)xmalloc(sVar7 + 1);\n                pcVar6 = strcpy(pcVar6,pcVar8);\n              }\n              pcVar8 = command_word_completion_function::val;\n              if (iVar5 == 0) {\nLAB_0008d6a4:\n                iVar5 = command_word_completion_function::searching_path;\n                pcVar13 = command_word_completion_function::val;\n                sVar7 = strlen(command_word_completion_function::val);\n                pcVar8 = (char *)xmalloc(sVar7 + 1);\n                f = strcpy(pcVar8,pcVar13);\n                bash_directory_completion_hook(&f);\n                if (iVar5 == 0) {\n                  iVar5 = executable_or_directory(f);\n                }\n                else {\n                  iVar5 = executable_file(f);\n                }\n                free(f);\n                pcVar8 = command_word_completion_function::val;\n                if (iVar5 != 0) {\n                  if (pcVar13 != command_word_completion_function::val) {\n                    free(pcVar13);\n                  }\n                  free(pcVar8);\n                  command_word_completion_function::val = "";\n                  goto LAB_0008d5c8;\n                }\n                free(pcVar6);\n                if (pcVar13 != pcVar8) {\n                  free(pcVar13);\n                }\n              }\n              else {\n                free(pcVar6);\n              }\n            }\n            free(pcVar8);\n            state_00 = command_word_completion_function::istate;\n            pcVar6 = command_word_completion_function::fnhint;\n          }\n          iVar5 = absolute_program(command_word_completion_function::hint);\n          if (iVar5 != 0) goto LAB_0008dac4;\nLAB_0008d5f6:\n          state_00 = (uint)(command_word_completion_function::val != (char *)0x0);\n          pcVar6 = command_word_completion_function::fnhint;\n          command_word_completion_function::istate = state_00;\n        } while (command_word_completion_function::val != (char *)0x0);\n        if (((command_word_completion_function::path == (char *)0x0) ||\n            (command_word_completion_function::path[command_word_completion_function::path_index] ==\n             '\0')) ||\n           (pcVar6 = extract_colon_unit(command_word_completion_function::path,\n                                        &command_word_completion_function::path_index),\n           pcVar6 == (char *)0x0)) goto LAB_0008dac4;\n        command_word_completion_function::searching_path = 1;\n        cVar14 = *pcVar6;\n        if (cVar14 == '\0') {\n          free(pcVar6);\n          pcVar6 = (char *)xmalloc(2);\n          pcVar6[0] = '.';\n          pcVar6[1] = '\0';\n          cVar14 = '.';\n        }\n        pcVar8 = pcVar6;\n        if (cVar14 == '~') {\n          pcVar8 = bash_tilde_expand(pcVar6,0);\n          free(pcVar6);\n          cVar14 = *pcVar8;\n        }\n        pcVar6 = command_word_completion_function::filename_hint;\n        if ((cVar14 == '.') && (pcVar8[1] == '\0')) {\n          dot_in_path = 1;\n        }\n        if (command_word_completion_function::fnhint == (char *)0x0) {\nLAB_0008dbfe:\n          if (pcVar6 != (char *)0x0) goto LAB_0008de5f;\n        }\n        else {\n          if (command_word_completion_function::fnhint !=\n              command_word_completion_function::filename_hint) {\n            free(command_word_completion_function::fnhint);\n            goto LAB_0008dbfe;\n          }\nLAB_0008de5f:\n          free(pcVar6);\n        }\n        pcVar6 = sh_makepath(pcVar8,command_word_completion_function::hint,0);\n        command_word_completion_function::filename_hint = pcVar6;\n        pcVar13 = strpbrk(pcVar6,"\"\'\\");\n        if (pcVar13 != (char *)0x0) {\n          pcVar6 = sh_backslash_quote(pcVar6,filename_bstab,0);\n        }\n        command_word_completion_function::fnhint = pcVar6;\n        free(pcVar8);\n        state_00 = command_word_completion_function::istate;\n      } while( true );\n    }\n    command_word_completion_function::mapping_over = 5;\nLAB_0008d218:\n    glob_ignore_case = command_word_completion_function::igncase;\n    ppcVar9 = shell_glob_filename(command_word_completion_function::hint);\n    glob_ignore_case = 0;\n    if ((ppcVar9 == (char **)PTR_glob_error_return_00149f60) || (ppcVar9 == (char **)0x0)) {\n      command_word_completion_function::glob_matches = (char **)0x0;\n      pcVar6 = (char *)0x0;\n      goto LAB_0008d5c8;\n    }\n    command_word_completion_function::local_index = 0;\n    command_word_completion_function::glob_matches = ppcVar9;\n    if ((ppcVar9[1] != (char *)0x0) && (rl_completion_type == 9)) {\nLAB_0008dac4:\n      pcVar6 = (char *)0x0;\n      goto LAB_0008d5c8;\n    }\n    iVar5 = 1;\n  }\n  else {\nLAB_0008d390:\n    pcVar6 = command_word_completion_function::hint;\n    iVar12 = command_word_completion_function::igncase;\n    iVar5 = command_word_completion_function::hint_len;\n    ppaVar4 = command_word_completion_function::alias_list;\n    iVar11 = command_word_completion_function::local_index;\n    if (command_word_completion_function::mapping_over == 1) {\nLAB_0008d960:\n      do {\n        pcVar8 = word_token_alist[iVar11].word;\n        if (pcVar8 == (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          iVar12 = command_word_completion_function::igncase;\n          ppSVar3 = command_word_completion_function::varlist;\n          goto LAB_0008d840;\n        }\n        iVar11 = iVar11 + 1;\n        command_word_completion_function::local_index = iVar11;\n      } while ((iVar5 != 0) &&\n              ((*pcVar8 != *pcVar6 || (iVar12 = strncmp(pcVar8,pcVar6,iVar5), iVar12 != 0))));\nLAB_0008d451:\n      sVar7 = strlen(pcVar8);\n      pcVar6 = (char *)xmalloc(sVar7 + 1);\n      pcVar6 = strcpy(pcVar6,pcVar8);\n      goto LAB_0008d5c8;\n    }\n    if (command_word_completion_function::mapping_over < 2) {\n      if (command_word_completion_function::mapping_over == 0) {\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::mapping_over = 1;\n              iVar11 = 0;\n              goto LAB_0008d960;\n            }\n            command_word_completion_function::local_index =\n                 command_word_completion_function::local_index + 1;\n            pcVar8 = paVar2->name;\n            if (iVar12 != 0) break;\n            if ((iVar5 == 0) ||\n               ((*pcVar8 == *pcVar6 && (iVar11 = strncmp(pcVar8,pcVar6,iVar5), iVar11 == 0))))\n            goto LAB_0008d451;\n          }\n          iVar11 = strncasecmp(pcVar8,pcVar6,iVar5);\n        } while (iVar11 != 0);\n        goto LAB_0008d451;\n      }\n    }\n    else {\n      ppSVar3 = command_word_completion_function::varlist;\n      if (command_word_completion_function::mapping_over == 2) {\nLAB_0008d840:\n        do {\n          if ((ppSVar3 == (SHELL_VAR **)0x0) ||\n             (ppSVar1 = ppSVar3 + command_word_completion_function::local_index,\n             *ppSVar1 == (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_0008d3bd;\n          }\n          command_word_completion_function::local_index =\n               command_word_completion_function::local_index + 1;\n          pcVar8 = (*ppSVar1)->name;\n          if (iVar12 == 0) {\n            if ((iVar5 == 0) ||\n               ((*pcVar8 == *pcVar6 && (iVar11 = strncmp(pcVar8,pcVar6,iVar5), iVar11 == 0))))\n            break;\n            goto LAB_0008d840;\n          }\n          iVar11 = strncasecmp(pcVar8,pcVar6,iVar5);\n        } while (iVar11 != 0);\n        sVar7 = strlen(pcVar8);\n        pcVar6 = (char *)xmalloc(sVar7 + 1);\n        pcVar6 = strcpy(pcVar6,pcVar8);\n        goto LAB_0008d5c8;\n      }\n      if (command_word_completion_function::mapping_over == 3) {\nLAB_0008d3bd:\n        pcVar6 = command_word_completion_function::hint;\n        iVar12 = command_word_completion_function::hint_len;\n        iVar5 = num_shell_builtins;\n        if (command_word_completion_function::local_index < num_shell_builtins) {\n          pbVar15 = shell_builtins + command_word_completion_function::local_index;\n          do {\n            iVar11 = command_word_completion_function::local_index;\n            if (((pbVar15->function != (sh_builtin_func_t *)0x0) && ((pbVar15->flags & 1) != 0)) &&\n               ((pcVar8 = pbVar15->name, iVar12 == 0 ||\n                ((*pcVar8 == *pcVar6 && (iVar10 = strncmp(pcVar8,pcVar6,iVar12), iVar10 == 0)))))) {\n              command_word_completion_function::local_index = iVar11 + 1;\n              goto LAB_0008d451;\n            }\n            command_word_completion_function::local_index = iVar11 + 1;\n            pbVar15 = pbVar15 + 1;\n          } while (command_word_completion_function::local_index != iVar5);\n        }\n        command_word_completion_function::mapping_over =\n             command_word_completion_function::mapping_over + 1;\n        command_word_completion_function::local_index = 0;\n      }\n    }\n    if (command_word_completion_function::globpat == 0) {\n      if (command_word_completion_function::hint_is_dir == 0) goto LAB_0008d5f6;\n      command_word_completion_function::hint_is_dir = 0;\n      sVar7 = strlen(hint_text);\n      pcVar6 = (char *)xmalloc(sVar7 + 1);\n      pcVar6 = strcpy(pcVar6,hint_text);\n      goto LAB_0008d5c8;\n    }\n    if (state == 0) goto LAB_0008d218;\n    iVar5 = command_word_completion_function::local_index + 1;\n    ppcVar9 = command_word_completion_function::glob_matches +\n              command_word_completion_function::local_index;\n  }\n  command_word_completion_function::val = *ppcVar9;\n  command_word_completion_function::local_index = iVar5;\n  while (command_word_completion_function::val != (char *)0x0) {\n    iVar5 = executable_or_directory(command_word_completion_function::val);\n    if (iVar5 != 0) {\n      pcVar6 = command_word_completion_function::val;\n      if ((*hint_text == '~') && (command_word_completion_function::directory_part != (char *)0x0))\n      {\n        pcVar6 = 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 = pcVar6;\n      }\n      goto LAB_0008d5c8;\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    command_word_completion_function::local_index =\n         command_word_completion_function::local_index + 1;\n  }\n  glob_ignore_case = 0;\n  pcVar6 = (char *)0x0;\nLAB_0008d5c8:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail_local();\n  }\n  return pcVar6;\n}" { (declaration "SHELL_VAR **ppSVar1;" type_identifier (pointer_declarator "**ppSVar1" * (pointer_declarator "*ppSVar1" * identifier)) ;) (declaration "alias_t *paVar2;" type_identifier (pointer_declarator "*paVar2" * identifier) ;) (declaration "SHELL_VAR **ppSVar3;" type_identifier (pointer_declarator "**ppSVar3" * (pointer_declarator "*ppSVar3" * identifier)) ;) (declaration "alias_t **ppaVar4;" type_identifier (pointer_declarator "**ppaVar4" * (pointer_declarator "*ppaVar4" * identifier)) ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "char *pcVar6;" primitive_type (pointer_declarator "*pcVar6" * identifier) ;) (declaration "size_t sVar7;" primitive_type identifier ;) (declaration "char *pcVar8;" primitive_type (pointer_declarator "*pcVar8" * identifier) ;) (declaration "char **ppcVar9;" primitive_type (pointer_declarator "**ppcVar9" * (pointer_declarator "*ppcVar9" * identifier)) ;) (declaration "int iVar10;" primitive_type identifier ;) (declaration "uint state_00;" type_identifier identifier ;) (declaration "int iVar11;" primitive_type identifier ;) (declaration "int iVar12;" primitive_type identifier ;) (declaration "char *pcVar13;" primitive_type (pointer_declarator "*pcVar13" * identifier) ;) (declaration "char cVar14;" primitive_type identifier ;) (declaration "builtin *pbVar15;" type_identifier (pointer_declarator "*pbVar15" * identifier) ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "char *f;" primitive_type (pointer_declarator "*f" * identifier) ;) (declaration "int local_20;" primitive_type identifier ;) (declaration "undefined4 uStack_14;" type_identifier identifier ;) (expression_statement "uStack_14 = 0x8d029;" (assignment_expression "uStack_14 = 0x8d029" identifier = number_literal) ;) (expression_statement "local_20 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "local_20 = *(int *)(in_GS_OFFSET + 0x14)" identifier = (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" 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) {\nLAB_0008d085:\n      if (command_word_completion_function::hint != (char *)0x0) goto LAB_0008d089;\n    }\n    else {\n      if (command_word_completion_function::dequoted_hint != command_word_completion_function::hint)\n      {\n        free(command_word_completion_function::dequoted_hint);\n        goto LAB_0008d085;\n      }\nLAB_0008d089:\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    iVar5 = absolute_pathname(hint_text);\n    if (((iVar5 == 0) && (iVar5 = absolute_program(hint_text), iVar5 == 0)) && (*hint_text != '~'))\n    {\n      iVar5 = test_for_directory(hint_text);\n      command_word_completion_function::hint_is_dir = (int)(iVar5 != 0);\n    }\n    else {\n      command_word_completion_function::hint_is_dir = 0;\n    }\n    command_word_completion_function::val = (char *)0x0;\n    pcVar6 = rl_variable_value("completion-ignore-case");\n    command_word_completion_function::igncase = 0;\n    if ((*pcVar6 == 'o') && (pcVar6[1] == 'n')) {\n      command_word_completion_function::igncase = (int)(pcVar6[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       (iVar5 = absolute_program(hint_text), iVar5 == 0)) {\n      sVar7 = strlen(hint_text);\n      pcVar6 = (char *)xmalloc(sVar7 + 1);\n      pcVar6 = strcpy(pcVar6,hint_text);\n      command_word_completion_function::hint = pcVar6;\n      command_word_completion_function::dequoted_hint = pcVar6;\n      command_word_completion_function::hint_len = strlen(pcVar6);\n      if ((rl_completion_found_quote != 0) && (rl_completion_quote_character == 0)) {\n        command_word_completion_function::dequoted_hint = bash_dequote_filename(pcVar6,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_0008d390;\n    }\n    if (*hint_text == '~') {\n      command_word_completion_function::hint = bash_tilde_expand(hint_text,0);\n      sVar7 = strlen(hint_text);\n      pcVar6 = (char *)xmalloc(sVar7 + 1);\n      pcVar6 = strcpy(pcVar6,hint_text);\n      command_word_completion_function::directory_part = pcVar6;\n      pcVar8 = strchr(pcVar6,0x2f);\n      if (pcVar8 == (char *)0x0) {\n        free(pcVar6);\n        command_word_completion_function::directory_part = (char *)0x0;\n      }\n      else {\n        *pcVar8 = '\0';\n      }\n    }\n    else {\n      sVar7 = strlen(hint_text);\n      if (dircomplete_expand == 0) {\n        pcVar6 = (char *)xmalloc(sVar7 + 1);\n        command_word_completion_function::hint = strcpy(pcVar6,hint_text);\n      }\n      else {\n        pcVar6 = (char *)xmalloc(sVar7 + 1);\n        command_word_completion_function::hint = strcpy(pcVar6,hint_text);\n        bash_directory_completion_hook(&command_word_completion_function::hint);\n      }\n    }\n    command_word_completion_function::dequoted_hint = command_word_completion_function::hint;\n    if ((rl_completion_found_quote != 0) && (rl_completion_quote_character == 0)) {\n      pcVar6 = bash_dequote_filename(command_word_completion_function::hint,0);\n      command_word_completion_function::dequoted_hint = pcVar6;\n      free(command_word_completion_function::hint);\n      command_word_completion_function::hint = pcVar6;\n    }\n    pcVar6 = command_word_completion_function::hint;\n    command_word_completion_function::hint_len = strlen(command_word_completion_function::hint);\n    if (command_word_completion_function::filename_hint != (char *)0x0) {\n      free(command_word_completion_function::filename_hint);\n      pcVar6 = command_word_completion_function::hint;\n    }\n    sVar7 = strlen(pcVar6);\n    pcVar8 = (char *)xmalloc(sVar7 + 1);\n    command_word_completion_function::fnhint = strcpy(pcVar8,pcVar6);\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      state_00 = dircomplete_expand;\n      if ((dircomplete_expand != 0) &&\n         (iVar5 = path_dot_or_dotdot(command_word_completion_function::fnhint),\n         state_00 = command_word_completion_function::istate, iVar5 != 0)) {\n        dircomplete_expand = 1;\n        rl_directory_rewrite_hook = bash_directory_completion_hook;\n        rl_directory_completion_hook = (undefined1 *)0x0;\n      }\n      command_word_completion_function::mapping_over = 4;\n      pcVar6 = command_word_completion_function::fnhint;\n      do {\n        do {\n          while( true ) {\n            command_word_completion_function::val = rl_filename_completion_function(pcVar6,state_00)\n            ;\n            if ((command_word_completion_function::mapping_over == 4) && (dircomplete_expand != 0))\n            {\n              rl_directory_completion_hook = bash_directory_completion_hook;\n              rl_directory_rewrite_hook = (undefined1 *)0x0;\n            }\n            command_word_completion_function::istate = 1;\n            if (command_word_completion_function::val == (char *)0x0) break;\n            iVar5 = absolute_program(command_word_completion_function::hint);\n            pcVar8 = command_word_completion_function::val;\n            if (iVar5 == 0) {\n              pcVar6 = strrchr(command_word_completion_function::val,0x2f);\n              if (pcVar6 != (char *)0x0) {\n                pcVar6 = pcVar6 + 1;\n                if (command_word_completion_function::igncase == 0) {\n                  iVar5 = strncmp(pcVar6,command_word_completion_function::hint,\n                                  command_word_completion_function::hint_len);\n                }\n                else {\n                  iVar5 = strncasecmp(pcVar6,command_word_completion_function::hint,\n                                      command_word_completion_function::hint_len);\n                }\n                if (iVar5 == 0) {\n                  sVar7 = strlen(pcVar6);\n                  pcVar8 = (char *)xmalloc(sVar7 + 1);\n                  pcVar6 = strcpy(pcVar8,pcVar6);\n                  goto LAB_0008d6a4;\n                }\n              }\n            }\n            else {\n              if (command_word_completion_function::igncase == 0) {\n                iVar5 = strncmp(command_word_completion_function::val,\n                                command_word_completion_function::hint,\n                                command_word_completion_function::hint_len);\n              }\n              else {\n                iVar5 = strncasecmp(command_word_completion_function::val,\n                                    command_word_completion_function::hint,\n                                    command_word_completion_function::hint_len);\n              }\n              if (*hint_text == '~') {\n                pcVar6 = maybe_restore_tilde(pcVar8,command_word_completion_function::directory_part\n                                            );\n              }\n              else {\n                sVar7 = strlen(pcVar8);\n                pcVar6 = (char *)xmalloc(sVar7 + 1);\n                pcVar6 = strcpy(pcVar6,pcVar8);\n              }\n              pcVar8 = command_word_completion_function::val;\n              if (iVar5 == 0) {\nLAB_0008d6a4:\n                iVar5 = command_word_completion_function::searching_path;\n                pcVar13 = command_word_completion_function::val;\n                sVar7 = strlen(command_word_completion_function::val);\n                pcVar8 = (char *)xmalloc(sVar7 + 1);\n                f = strcpy(pcVar8,pcVar13);\n                bash_directory_completion_hook(&f);\n                if (iVar5 == 0) {\n                  iVar5 = executable_or_directory(f);\n                }\n                else {\n                  iVar5 = executable_file(f);\n                }\n                free(f);\n                pcVar8 = command_word_completion_function::val;\n                if (iVar5 != 0) {\n                  if (pcVar13 != command_word_completion_function::val) {\n                    free(pcVar13);\n                  }\n                  free(pcVar8);\n                  command_word_completion_function::val = "";\n                  goto LAB_0008d5c8;\n                }\n                free(pcVar6);\n                if (pcVar13 != pcVar8) {\n                  free(pcVar13);\n                }\n              }\n              else {\n                free(pcVar6);\n              }\n            }\n            free(pcVar8);\n            state_00 = command_word_completion_function::istate;\n            pcVar6 = command_word_completion_function::fnhint;\n          }\n          iVar5 = absolute_program(command_word_completion_function::hint);\n          if (iVar5 != 0) goto LAB_0008dac4;\nLAB_0008d5f6:\n          state_00 = (uint)(command_word_completion_function::val != (char *)0x0);\n          pcVar6 = command_word_completion_function::fnhint;\n          command_word_completion_function::istate = state_00;\n        } while (command_word_completion_function::val != (char *)0x0);\n        if (((command_word_completion_function::path == (char *)0x0) ||\n            (command_word_completion_function::path[command_word_completion_function::path_index] ==\n             '\0')) ||\n           (pcVar6 = extract_colon_unit(command_word_completion_function::path,\n                                        &command_word_completion_function::path_index),\n           pcVar6 == (char *)0x0)) goto LAB_0008dac4;\n        command_word_completion_function::searching_path = 1;\n        cVar14 = *pcVar6;\n        if (cVar14 == '\0') {\n          free(pcVar6);\n          pcVar6 = (char *)xmalloc(2);\n          pcVar6[0] = '.';\n          pcVar6[1] = '\0';\n          cVar14 = '.';\n        }\n        pcVar8 = pcVar6;\n        if (cVar14 == '~') {\n          pcVar8 = bash_tilde_expand(pcVar6,0);\n          free(pcVar6);\n          cVar14 = *pcVar8;\n        }\n        pcVar6 = command_word_completion_function::filename_hint;\n        if ((cVar14 == '.') && (pcVar8[1] == '\0')) {\n          dot_in_path = 1;\n        }\n        if (command_word_completion_function::fnhint == (char *)0x0) {\nLAB_0008dbfe:\n          if (pcVar6 != (char *)0x0) goto LAB_0008de5f;\n        }\n        else {\n          if (command_word_completion_function::fnhint !=\n              command_word_completion_function::filename_hint) {\n            free(command_word_completion_function::fnhint);\n            goto LAB_0008dbfe;\n          }\nLAB_0008de5f:\n          free(pcVar6);\n        }\n        pcVar6 = sh_makepath(pcVar8,command_word_completion_function::hint,0);\n        command_word_completion_function::filename_hint = pcVar6;\n        pcVar13 = strpbrk(pcVar6,"\"\'\\");\n        if (pcVar13 != (char *)0x0) {\n          pcVar6 = sh_backslash_quote(pcVar6,filename_bstab,0);\n        }\n        command_word_completion_function::fnhint = pcVar6;\n        free(pcVar8);\n        state_00 = command_word_completion_function::istate;\n      } while( true );\n    }\n    command_word_completion_function::mapping_over = 5;\nLAB_0008d218:\n    glob_ignore_case = command_word_completion_function::igncase;\n    ppcVar9 = shell_glob_filename(command_word_completion_function::hint);\n    glob_ignore_case = 0;\n    if ((ppcVar9 == (char **)PTR_glob_error_return_00149f60) || (ppcVar9 == (char **)0x0)) {\n      command_word_completion_function::glob_matches = (char **)0x0;\n      pcVar6 = (char *)0x0;\n      goto LAB_0008d5c8;\n    }\n    command_word_completion_function::local_index = 0;\n    command_word_completion_function::glob_matches = ppcVar9;\n    if ((ppcVar9[1] != (char *)0x0) && (rl_completion_type == 9)) {\nLAB_0008dac4:\n      pcVar6 = (char *)0x0;\n      goto LAB_0008d5c8;\n    }\n    iVar5 = 1;\n  }\n  else {\nLAB_0008d390:\n    pcVar6 = command_word_completion_function::hint;\n    iVar12 = command_word_completion_function::igncase;\n    iVar5 = command_word_completion_function::hint_len;\n    ppaVar4 = command_word_completion_function::alias_list;\n    iVar11 = command_word_completion_function::local_index;\n    if (command_word_completion_function::mapping_over == 1) {\nLAB_0008d960:\n      do {\n        pcVar8 = word_token_alist[iVar11].word;\n        if (pcVar8 == (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          iVar12 = command_word_completion_function::igncase;\n          ppSVar3 = command_word_completion_function::varlist;\n          goto LAB_0008d840;\n        }\n        iVar11 = iVar11 + 1;\n        command_word_completion_function::local_index = iVar11;\n      } while ((iVar5 != 0) &&\n              ((*pcVar8 != *pcVar6 || (iVar12 = strncmp(pcVar8,pcVar6,iVar5), iVar12 != 0))));\nLAB_0008d451:\n      sVar7 = strlen(pcVar8);\n      pcVar6 = (char *)xmalloc(sVar7 + 1);\n      pcVar6 = strcpy(pcVar6,pcVar8);\n      goto LAB_0008d5c8;\n    }\n    if (command_word_completion_function::mapping_over < 2) {\n      if (command_word_completion_function::mapping_over == 0) {\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::mapping_over = 1;\n              iVar11 = 0;\n              goto LAB_0008d960;\n            }\n            command_word_completion_function::local_index =\n                 command_word_completion_function::local_index + 1;\n            pcVar8 = paVar2->name;\n            if (iVar12 != 0) break;\n            if ((iVar5 == 0) ||\n               ((*pcVar8 == *pcVar6 && (iVar11 = strncmp(pcVar8,pcVar6,iVar5), iVar11 == 0))))\n            goto LAB_0008d451;\n          }\n          iVar11 = strncasecmp(pcVar8,pcVar6,iVar5);\n        } while (iVar11 != 0);\n        goto LAB_0008d451;\n      }\n    }\n    else {\n      ppSVar3 = command_word_completion_function::varlist;\n      if (command_word_completion_function::mapping_over == 2) {\nLAB_0008d840:\n        do {\n          if ((ppSVar3 == (SHELL_VAR **)0x0) ||\n             (ppSVar1 = ppSVar3 + command_word_completion_function::local_index,\n             *ppSVar1 == (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_0008d3bd;\n          }\n          command_word_completion_function::local_index =\n               command_word_completion_function::local_index + 1;\n          pcVar8 = (*ppSVar1)->name;\n          if (iVar12 == 0) {\n            if ((iVar5 == 0) ||\n               ((*pcVar8 == *pcVar6 && (iVar11 = strncmp(pcVar8,pcVar6,iVar5), iVar11 == 0))))\n            break;\n            goto LAB_0008d840;\n          }\n          iVar11 = strncasecmp(pcVar8,pcVar6,iVar5);\n        } while (iVar11 != 0);\n        sVar7 = strlen(pcVar8);\n        pcVar6 = (char *)xmalloc(sVar7 + 1);\n        pcVar6 = strcpy(pcVar6,pcVar8);\n        goto LAB_0008d5c8;\n      }\n      if (command_word_completion_function::mapping_over == 3) {\nLAB_0008d3bd:\n        pcVar6 = command_word_completion_function::hint;\n        iVar12 = command_word_completion_function::hint_len;\n        iVar5 = num_shell_builtins;\n        if (command_word_completion_function::local_index < num_shell_builtins) {\n          pbVar15 = shell_builtins + command_word_completion_function::local_index;\n          do {\n            iVar11 = command_word_completion_function::local_index;\n            if (((pbVar15->function != (sh_builtin_func_t *)0x0) && ((pbVar15->flags & 1) != 0)) &&\n               ((pcVar8 = pbVar15->name, iVar12 == 0 ||\n                ((*pcVar8 == *pcVar6 && (iVar10 = strncmp(pcVar8,pcVar6,iVar12), iVar10 == 0)))))) {\n              command_word_completion_function::local_index = iVar11 + 1;\n              goto LAB_0008d451;\n            }\n            command_word_completion_function::local_index = iVar11 + 1;\n            pbVar15 = pbVar15 + 1;\n          } while (command_word_completion_function::local_index != iVar5);\n        }\n        command_word_completion_function::mapping_over =\n             command_word_completion_function::mapping_over + 1;\n        command_word_completion_function::local_index = 0;\n      }\n    }\n    if (command_word_completion_function::globpat == 0) {\n      if (command_word_completion_function::hint_is_dir == 0) goto LAB_0008d5f6;\n      command_word_completion_function::hint_is_dir = 0;\n      sVar7 = strlen(hint_text);\n      pcVar6 = (char *)xmalloc(sVar7 + 1);\n      pcVar6 = strcpy(pcVar6,hint_text);\n      goto LAB_0008d5c8;\n    }\n    if (state == 0) goto LAB_0008d218;\n    iVar5 = command_word_completion_function::local_index + 1;\n    ppcVar9 = command_word_completion_function::glob_matches +\n              command_word_completion_function::local_index;\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) {\nLAB_0008d085:\n      if (command_word_completion_function::hint != (char *)0x0) goto LAB_0008d089;\n    }\n    else {\n      if (command_word_completion_function::dequoted_hint != command_word_completion_function::hint)\n      {\n        free(command_word_completion_function::dequoted_hint);\n        goto LAB_0008d085;\n      }\nLAB_0008d089:\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    iVar5 = absolute_pathname(hint_text);\n    if (((iVar5 == 0) && (iVar5 = absolute_program(hint_text), iVar5 == 0)) && (*hint_text != '~'))\n    {\n      iVar5 = test_for_directory(hint_text);\n      command_word_completion_function::hint_is_dir = (int)(iVar5 != 0);\n    }\n    else {\n      command_word_completion_function::hint_is_dir = 0;\n    }\n    command_word_completion_function::val = (char *)0x0;\n    pcVar6 = rl_variable_value("completion-ignore-case");\n    command_word_completion_function::igncase = 0;\n    if ((*pcVar6 == 'o') && (pcVar6[1] == 'n')) {\n      command_word_completion_function::igncase = (int)(pcVar6[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       (iVar5 = absolute_program(hint_text), iVar5 == 0)) {\n      sVar7 = strlen(hint_text);\n      pcVar6 = (char *)xmalloc(sVar7 + 1);\n      pcVar6 = strcpy(pcVar6,hint_text);\n      command_word_completion_function::hint = pcVar6;\n      command_word_completion_function::dequoted_hint = pcVar6;\n      command_word_completion_function::hint_len = strlen(pcVar6);\n      if ((rl_completion_found_quote != 0) && (rl_completion_quote_character == 0)) {\n        command_word_completion_function::dequoted_hint = bash_dequote_filename(pcVar6,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_0008d390;\n    }\n    if (*hint_text == '~') {\n      command_word_completion_function::hint = bash_tilde_expand(hint_text,0);\n      sVar7 = strlen(hint_text);\n      pcVar6 = (char *)xmalloc(sVar7 + 1);\n      pcVar6 = strcpy(pcVar6,hint_text);\n      command_word_completion_function::directory_part = pcVar6;\n      pcVar8 = strchr(pcVar6,0x2f);\n      if (pcVar8 == (char *)0x0) {\n        free(pcVar6);\n        command_word_completion_function::directory_part = (char *)0x0;\n      }\n      else {\n        *pcVar8 = '\0';\n      }\n    }\n    else {\n      sVar7 = strlen(hint_text);\n      if (dircomplete_expand == 0) {\n        pcVar6 = (char *)xmalloc(sVar7 + 1);\n        command_word_completion_function::hint = strcpy(pcVar6,hint_text);\n      }\n      else {\n        pcVar6 = (char *)xmalloc(sVar7 + 1);\n        command_word_completion_function::hint = strcpy(pcVar6,hint_text);\n        bash_directory_completion_hook(&command_word_completion_function::hint);\n      }\n    }\n    command_word_completion_function::dequoted_hint = command_word_completion_function::hint;\n    if ((rl_completion_found_quote != 0) && (rl_completion_quote_character == 0)) {\n      pcVar6 = bash_dequote_filename(command_word_completion_function::hint,0);\n      command_word_completion_function::dequoted_hint = pcVar6;\n      free(command_word_completion_function::hint);\n      command_word_completion_function::hint = pcVar6;\n    }\n    pcVar6 = command_word_completion_function::hint;\n    command_word_completion_function::hint_len = strlen(command_word_completion_function::hint);\n    if (command_word_completion_function::filename_hint != (char *)0x0) {\n      free(command_word_completion_function::filename_hint);\n      pcVar6 = command_word_completion_function::hint;\n    }\n    sVar7 = strlen(pcVar6);\n    pcVar8 = (char *)xmalloc(sVar7 + 1);\n    command_word_completion_function::fnhint = strcpy(pcVar8,pcVar6);\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      state_00 = dircomplete_expand;\n      if ((dircomplete_expand != 0) &&\n         (iVar5 = path_dot_or_dotdot(command_word_completion_function::fnhint),\n         state_00 = command_word_completion_function::istate, iVar5 != 0)) {\n        dircomplete_expand = 1;\n        rl_directory_rewrite_hook = bash_directory_completion_hook;\n        rl_directory_completion_hook = (undefined1 *)0x0;\n      }\n      command_word_completion_function::mapping_over = 4;\n      pcVar6 = command_word_completion_function::fnhint;\n      do {\n        do {\n          while( true ) {\n            command_word_completion_function::val = rl_filename_completion_function(pcVar6,state_00)\n            ;\n            if ((command_word_completion_function::mapping_over == 4) && (dircomplete_expand != 0))\n            {\n              rl_directory_completion_hook = bash_directory_completion_hook;\n              rl_directory_rewrite_hook = (undefined1 *)0x0;\n            }\n            command_word_completion_function::istate = 1;\n            if (command_word_completion_function::val == (char *)0x0) break;\n            iVar5 = absolute_program(command_word_completion_function::hint);\n            pcVar8 = command_word_completion_function::val;\n            if (iVar5 == 0) {\n              pcVar6 = strrchr(command_word_completion_function::val,0x2f);\n              if (pcVar6 != (char *)0x0) {\n                pcVar6 = pcVar6 + 1;\n                if (command_word_completion_function::igncase == 0) {\n                  iVar5 = strncmp(pcVar6,command_word_completion_function::hint,\n                                  command_word_completion_function::hint_len);\n                }\n                else {\n                  iVar5 = strncasecmp(pcVar6,command_word_completion_function::hint,\n                                      command_word_completion_function::hint_len);\n                }\n                if (iVar5 == 0) {\n                  sVar7 = strlen(pcVar6);\n                  pcVar8 = (char *)xmalloc(sVar7 + 1);\n                  pcVar6 = strcpy(pcVar8,pcVar6);\n                  goto LAB_0008d6a4;\n                }\n              }\n            }\n            else {\n              if (command_word_completion_function::igncase == 0) {\n                iVar5 = strncmp(command_word_completion_function::val,\n                                command_word_completion_function::hint,\n                                command_word_completion_function::hint_len);\n              }\n              else {\n                iVar5 = strncasecmp(command_word_completion_function::val,\n                                    command_word_completion_function::hint,\n                                    command_word_completion_function::hint_len);\n              }\n              if (*hint_text == '~') {\n                pcVar6 = maybe_restore_tilde(pcVar8,command_word_completion_function::directory_part\n                                            );\n              }\n              else {\n                sVar7 = strlen(pcVar8);\n                pcVar6 = (char *)xmalloc(sVar7 + 1);\n                pcVar6 = strcpy(pcVar6,pcVar8);\n              }\n              pcVar8 = command_word_completion_function::val;\n              if (iVar5 == 0) {\nLAB_0008d6a4:\n                iVar5 = command_word_completion_function::searching_path;\n                pcVar13 = command_word_completion_function::val;\n                sVar7 = strlen(command_word_completion_function::val);\n                pcVar8 = (char *)xmalloc(sVar7 + 1);\n                f = strcpy(pcVar8,pcVar13);\n                bash_directory_completion_hook(&f);\n                if (iVar5 == 0) {\n                  iVar5 = executable_or_directory(f);\n                }\n                else {\n                  iVar5 = executable_file(f);\n                }\n                free(f);\n                pcVar8 = command_word_completion_function::val;\n                if (iVar5 != 0) {\n                  if (pcVar13 != command_word_completion_function::val) {\n                    free(pcVar13);\n                  }\n                  free(pcVar8);\n                  command_word_completion_function::val = "";\n                  goto LAB_0008d5c8;\n                }\n                free(pcVar6);\n                if (pcVar13 != pcVar8) {\n                  free(pcVar13);\n                }\n              }\n              else {\n                free(pcVar6);\n              }\n            }\n            free(pcVar8);\n            state_00 = command_word_completion_function::istate;\n            pcVar6 = command_word_completion_function::fnhint;\n          }\n          iVar5 = absolute_program(command_word_completion_function::hint);\n          if (iVar5 != 0) goto LAB_0008dac4;\nLAB_0008d5f6:\n          state_00 = (uint)(command_word_completion_function::val != (char *)0x0);\n          pcVar6 = command_word_completion_function::fnhint;\n          command_word_completion_function::istate = state_00;\n        } while (command_word_completion_function::val != (char *)0x0);\n        if (((command_word_completion_function::path == (char *)0x0) ||\n            (command_word_completion_function::path[command_word_completion_function::path_index] ==\n             '\0')) ||\n           (pcVar6 = extract_colon_unit(command_word_completion_function::path,\n                                        &command_word_completion_function::path_index),\n           pcVar6 == (char *)0x0)) goto LAB_0008dac4;\n        command_word_completion_function::searching_path = 1;\n        cVar14 = *pcVar6;\n        if (cVar14 == '\0') {\n          free(pcVar6);\n          pcVar6 = (char *)xmalloc(2);\n          pcVar6[0] = '.';\n          pcVar6[1] = '\0';\n          cVar14 = '.';\n        }\n        pcVar8 = pcVar6;\n        if (cVar14 == '~') {\n          pcVar8 = bash_tilde_expand(pcVar6,0);\n          free(pcVar6);\n          cVar14 = *pcVar8;\n        }\n        pcVar6 = command_word_completion_function::filename_hint;\n        if ((cVar14 == '.') && (pcVar8[1] == '\0')) {\n          dot_in_path = 1;\n        }\n        if (command_word_completion_function::fnhint == (char *)0x0) {\nLAB_0008dbfe:\n          if (pcVar6 != (char *)0x0) goto LAB_0008de5f;\n        }\n        else {\n          if (command_word_completion_function::fnhint !=\n              command_word_completion_function::filename_hint) {\n            free(command_word_completion_function::fnhint);\n            goto LAB_0008dbfe;\n          }\nLAB_0008de5f:\n          free(pcVar6);\n        }\n        pcVar6 = sh_makepath(pcVar8,command_word_completion_function::hint,0);\n        command_word_completion_function::filename_hint = pcVar6;\n        pcVar13 = strpbrk(pcVar6,"\"\'\\");\n        if (pcVar13 != (char *)0x0) {\n          pcVar6 = sh_backslash_quote(pcVar6,filename_bstab,0);\n        }\n        command_word_completion_function::fnhint = pcVar6;\n        free(pcVar8);\n        state_00 = command_word_completion_function::istate;\n      } while( true );\n    }\n    command_word_completion_function::mapping_over = 5;\nLAB_0008d218:\n    glob_ignore_case = command_word_completion_function::igncase;\n    ppcVar9 = shell_glob_filename(command_word_completion_function::hint);\n    glob_ignore_case = 0;\n    if ((ppcVar9 == (char **)PTR_glob_error_return_00149f60) || (ppcVar9 == (char **)0x0)) {\n      command_word_completion_function::glob_matches = (char **)0x0;\n      pcVar6 = (char *)0x0;\n      goto LAB_0008d5c8;\n    }\n    command_word_completion_function::local_index = 0;\n    command_word_completion_function::glob_matches = ppcVar9;\n    if ((ppcVar9[1] != (char *)0x0) && (rl_completion_type == 9)) {\nLAB_0008dac4:\n      pcVar6 = (char *)0x0;\n      goto LAB_0008d5c8;\n    }\n    iVar5 = 1;\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) {\nLAB_0008d085:\n      if (command_word_completion_function::hint != (char *)0x0) goto LAB_0008d089;\n    }\n    else {\n      if (command_word_completion_function::dequoted_hint != command_word_completion_function::hint)\n      {\n        free(command_word_completion_function::dequoted_hint);\n        goto LAB_0008d085;\n      }\nLAB_0008d089:\n      free(command_word_completion_function::hint);\n    }" if (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)) )) (compound_statement "{\nLAB_0008d085:\n      if (command_word_completion_function::hint != (char *)0x0) goto LAB_0008d089;\n    }" { (labeled_statement "LAB_0008d085:\n      if (command_word_completion_function::hint != (char *)0x0) goto LAB_0008d089;" statement_identifier : (if_statement "if (command_word_completion_function::hint != (char *)0x0) goto LAB_0008d089;" 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)) )) (goto_statement "goto LAB_0008d089;" goto statement_identifier ;))) }) (else_clause "else {\n      if (command_word_completion_function::dequoted_hint != command_word_completion_function::hint)\n      {\n        free(command_word_completion_function::dequoted_hint);\n        goto LAB_0008d085;\n      }\nLAB_0008d089:\n      free(command_word_completion_function::hint);\n    }" else (compound_statement "{\n      if (command_word_completion_function::dequoted_hint != command_word_completion_function::hint)\n      {\n        free(command_word_completion_function::dequoted_hint);\n        goto LAB_0008d085;\n      }\nLAB_0008d089:\n      free(command_word_completion_function::hint);\n    }" { (if_statement "if (command_word_completion_function::dequoted_hint != command_word_completion_function::hint)\n      {\n        free(command_word_completion_function::dequoted_hint);\n        goto LAB_0008d085;\n      }" if (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        goto LAB_0008d085;\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 ")" )) ;)) (goto_statement "goto LAB_0008d085;" goto statement_identifier ;) })) (labeled_statement "LAB_0008d089:\n      free(command_word_completion_function::hint);" statement_identifier : (declaration "free(command_word_completion_function::hint);" (macro_type_specifier "free(command_word_completion_function::hint)" identifier ( (type_descriptor "command_word_completion_function" type_identifier) (ERROR "::hint" : : identifier) )) identifier ;)) }))) (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 "iVar5 = absolute_pathname(hint_text);" (assignment_expression "iVar5 = absolute_pathname(hint_text)" identifier = (call_expression "absolute_pathname(hint_text)" identifier (argument_list "(hint_text)" ( identifier )))) ;) (if_statement "if (((iVar5 == 0) && (iVar5 = absolute_program(hint_text), iVar5 == 0)) && (*hint_text != '~'))\n    {\n      iVar5 = test_for_directory(hint_text);\n      command_word_completion_function::hint_is_dir = (int)(iVar5 != 0);\n    }\n    else {\n      command_word_completion_function::hint_is_dir = 0;\n    }" if (parenthesized_expression "(((iVar5 == 0) && (iVar5 = absolute_program(hint_text), iVar5 == 0)) && (*hint_text != '~'))" ( (binary_expression "((iVar5 == 0) && (iVar5 = absolute_program(hint_text), iVar5 == 0)) && (*hint_text != '~')" (parenthesized_expression "((iVar5 == 0) && (iVar5 = absolute_program(hint_text), iVar5 == 0))" ( (binary_expression "(iVar5 == 0) && (iVar5 = absolute_program(hint_text), iVar5 == 0)" (parenthesized_expression "(iVar5 == 0)" ( (binary_expression "iVar5 == 0" identifier == number_literal) )) && (parenthesized_expression "(iVar5 = absolute_program(hint_text), iVar5 == 0)" ( (comma_expression "iVar5 = absolute_program(hint_text), iVar5 == 0" (assignment_expression "iVar5 = absolute_program(hint_text)" identifier = (call_expression "absolute_program(hint_text)" identifier (argument_list "(hint_text)" ( identifier )))) , (binary_expression "iVar5 == 0" identifier == number_literal)) ))) )) && (parenthesized_expression "(*hint_text != '~')" ( (binary_expression "*hint_text != '~'" (pointer_expression "*hint_text" * identifier) != (char_literal "'~'" ' character ')) ))) )) (compound_statement "{\n      iVar5 = test_for_directory(hint_text);\n      command_word_completion_function::hint_is_dir = (int)(iVar5 != 0);\n    }" { (expression_statement "iVar5 = test_for_directory(hint_text);" (assignment_expression "iVar5 = test_for_directory(hint_text)" identifier = (call_expression "test_for_directory(hint_text)" identifier (argument_list "(hint_text)" ( identifier )))) ;) (labeled_statement "command_word_completion_function::hint_is_dir = (int)(iVar5 != 0);" statement_identifier : (ERROR ":" :) (expression_statement "hint_is_dir = (int)(iVar5 != 0);" (assignment_expression "hint_is_dir = (int)(iVar5 != 0)" identifier = (cast_expression "(int)(iVar5 != 0)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(iVar5 != 0)" ( (binary_expression "iVar5 != 0" identifier != number_literal) )))) ;)) }) (else_clause "else {\n      command_word_completion_function::hint_is_dir = 0;\n    }" else (compound_statement "{\n      command_word_completion_function::hint_is_dir = 0;\n    }" { (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) ;)) }))) (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)) ;)) (expression_statement "pcVar6 = rl_variable_value("completion-ignore-case");" (assignment_expression "pcVar6 = 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 ((*pcVar6 == 'o') && (pcVar6[1] == 'n')) {\n      command_word_completion_function::igncase = (int)(pcVar6[2] == '\0');\n    }" if (parenthesized_expression "((*pcVar6 == 'o') && (pcVar6[1] == 'n'))" ( (binary_expression "(*pcVar6 == 'o') && (pcVar6[1] == 'n')" (parenthesized_expression "(*pcVar6 == 'o')" ( (binary_expression "*pcVar6 == 'o'" (pointer_expression "*pcVar6" * identifier) == (char_literal "'o'" ' character ')) )) && (parenthesized_expression "(pcVar6[1] == 'n')" ( (binary_expression "pcVar6[1] == 'n'" (subscript_expression "pcVar6[1]" identifier [ number_literal ]) == (char_literal "'n'" ' character ')) ))) )) (compound_statement "{\n      command_word_completion_function::igncase = (int)(pcVar6[2] == '\0');\n    }" { (labeled_statement "command_word_completion_function::igncase = (int)(pcVar6[2] == '\0');" statement_identifier : (ERROR ":" :) (expression_statement "igncase = (int)(pcVar6[2] == '\0');" (assignment_expression "igncase = (int)(pcVar6[2] == '\0')" identifier = (cast_expression "(int)(pcVar6[2] == '\0')" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(pcVar6[2] == '\0')" ( (binary_expression "pcVar6[2] == '\0'" (subscript_expression "pcVar6[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       (iVar5 = absolute_program(hint_text), iVar5 == 0)) {\n      sVar7 = strlen(hint_text);\n      pcVar6 = (char *)xmalloc(sVar7 + 1);\n      pcVar6 = strcpy(pcVar6,hint_text);\n      command_word_completion_function::hint = pcVar6;\n      command_word_completion_function::dequoted_hint = pcVar6;\n      command_word_completion_function::hint_len = strlen(pcVar6);\n      if ((rl_completion_found_quote != 0) && (rl_completion_quote_character == 0)) {\n        command_word_completion_function::dequoted_hint = bash_dequote_filename(pcVar6,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_0008d390;\n    }" if (parenthesized_expression "((command_word_completion_function::globpat == 0) &&\n       (iVar5 = absolute_program(hint_text), iVar5 == 0))" ( (binary_expression "(command_word_completion_function::globpat == 0) &&\n       (iVar5 = absolute_program(hint_text), iVar5 == 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 "(iVar5 = absolute_program(hint_text), iVar5 == 0)" ( (comma_expression "iVar5 = absolute_program(hint_text), iVar5 == 0" (assignment_expression "iVar5 = absolute_program(hint_text)" identifier = (call_expression "absolute_program(hint_text)" identifier (argument_list "(hint_text)" ( identifier )))) , (binary_expression "iVar5 == 0" identifier == number_literal)) ))) )) (compound_statement "{\n      sVar7 = strlen(hint_text);\n      pcVar6 = (char *)xmalloc(sVar7 + 1);\n      pcVar6 = strcpy(pcVar6,hint_text);\n      command_word_completion_function::hint = pcVar6;\n      command_word_completion_function::dequoted_hint = pcVar6;\n      command_word_completion_function::hint_len = strlen(pcVar6);\n      if ((rl_completion_found_quote != 0) && (rl_completion_quote_character == 0)) {\n        command_word_completion_function::dequoted_hint = bash_dequote_filename(pcVar6,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_0008d390;\n    }" { (expression_statement "sVar7 = strlen(hint_text);" (assignment_expression "sVar7 = strlen(hint_text)" identifier = (call_expression "strlen(hint_text)" identifier (argument_list "(hint_text)" ( identifier )))) ;) (expression_statement "pcVar6 = (char *)xmalloc(sVar7 + 1);" (assignment_expression "pcVar6 = (char *)xmalloc(sVar7 + 1)" identifier = (cast_expression "(char *)xmalloc(sVar7 + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(sVar7 + 1)" identifier (argument_list "(sVar7 + 1)" ( (binary_expression "sVar7 + 1" identifier + number_literal) ))))) ;) (expression_statement "pcVar6 = strcpy(pcVar6,hint_text);" (assignment_expression "pcVar6 = strcpy(pcVar6,hint_text)" identifier = (call_expression "strcpy(pcVar6,hint_text)" identifier (argument_list "(pcVar6,hint_text)" ( identifier , identifier )))) ;) (labeled_statement "command_word_completion_function::hint = pcVar6;" statement_identifier : (ERROR ":" :) (expression_statement "hint = pcVar6;" (assignment_expression "hint = pcVar6" identifier = identifier) ;)) (labeled_statement "command_word_completion_function::dequoted_hint = pcVar6;" statement_identifier : (ERROR ":" :) (expression_statement "dequoted_hint = pcVar6;" (assignment_expression "dequoted_hint = pcVar6" identifier = identifier) ;)) (labeled_statement "command_word_completion_function::hint_len = strlen(pcVar6);" statement_identifier : (ERROR ":" :) (expression_statement "hint_len = strlen(pcVar6);" (assignment_expression "hint_len = strlen(pcVar6)" identifier = (call_expression "strlen(pcVar6)" identifier (argument_list "(pcVar6)" ( identifier )))) ;)) (if_statement "if ((rl_completion_found_quote != 0) && (rl_completion_quote_character == 0)) {\n        command_word_completion_function::dequoted_hint = bash_dequote_filename(pcVar6,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        command_word_completion_function::dequoted_hint = bash_dequote_filename(pcVar6,0);\n      }" { (labeled_statement "command_word_completion_function::dequoted_hint = bash_dequote_filename(pcVar6,0);" statement_identifier : (ERROR ":" :) (expression_statement "dequoted_hint = bash_dequote_filename(pcVar6,0);" (assignment_expression "dequoted_hint = bash_dequote_filename(pcVar6,0)" identifier = (call_expression "bash_dequote_filename(pcVar6,0)" identifier (argument_list "(pcVar6,0)" ( 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_0008d390;" goto statement_identifier ;) })) (if_statement "if (*hint_text == '~') {\n      command_word_completion_function::hint = bash_tilde_expand(hint_text,0);\n      sVar7 = strlen(hint_text);\n      pcVar6 = (char *)xmalloc(sVar7 + 1);\n      pcVar6 = strcpy(pcVar6,hint_text);\n      command_word_completion_function::directory_part = pcVar6;\n      pcVar8 = strchr(pcVar6,0x2f);\n      if (pcVar8 == (char *)0x0) {\n        free(pcVar6);\n        command_word_completion_function::directory_part = (char *)0x0;\n      }\n      else {\n        *pcVar8 = '\0';\n      }\n    }\n    else {\n      sVar7 = strlen(hint_text);\n      if (dircomplete_expand == 0) {\n        pcVar6 = (char *)xmalloc(sVar7 + 1);\n        command_word_completion_function::hint = strcpy(pcVar6,hint_text);\n      }\n      else {\n        pcVar6 = (char *)xmalloc(sVar7 + 1);\n        command_word_completion_function::hint = strcpy(pcVar6,hint_text);\n        bash_directory_completion_hook(&command_word_completion_function::hint);\n      }\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      sVar7 = strlen(hint_text);\n      pcVar6 = (char *)xmalloc(sVar7 + 1);\n      pcVar6 = strcpy(pcVar6,hint_text);\n      command_word_completion_function::directory_part = pcVar6;\n      pcVar8 = strchr(pcVar6,0x2f);\n      if (pcVar8 == (char *)0x0) {\n        free(pcVar6);\n        command_word_completion_function::directory_part = (char *)0x0;\n      }\n      else {\n        *pcVar8 = '\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 "sVar7 = strlen(hint_text);" (assignment_expression "sVar7 = strlen(hint_text)" identifier = (call_expression "strlen(hint_text)" identifier (argument_list "(hint_text)" ( identifier )))) ;) (expression_statement "pcVar6 = (char *)xmalloc(sVar7 + 1);" (assignment_expression "pcVar6 = (char *)xmalloc(sVar7 + 1)" identifier = (cast_expression "(char *)xmalloc(sVar7 + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(sVar7 + 1)" identifier (argument_list "(sVar7 + 1)" ( (binary_expression "sVar7 + 1" identifier + number_literal) ))))) ;) (expression_statement "pcVar6 = strcpy(pcVar6,hint_text);" (assignment_expression "pcVar6 = strcpy(pcVar6,hint_text)" identifier = (call_expression "strcpy(pcVar6,hint_text)" identifier (argument_list "(pcVar6,hint_text)" ( identifier , identifier )))) ;) (labeled_statement "command_word_completion_function::directory_part = pcVar6;" statement_identifier : (ERROR ":" :) (expression_statement "directory_part = pcVar6;" (assignment_expression "directory_part = pcVar6" identifier = identifier) ;)) (expression_statement "pcVar8 = strchr(pcVar6,0x2f);" (assignment_expression "pcVar8 = strchr(pcVar6,0x2f)" identifier = (call_expression "strchr(pcVar6,0x2f)" identifier (argument_list "(pcVar6,0x2f)" ( identifier , number_literal )))) ;) (if_statement "if (pcVar8 == (char *)0x0) {\n        free(pcVar6);\n        command_word_completion_function::directory_part = (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(pcVar6);\n        command_word_completion_function::directory_part = (char *)0x0;\n      }" { (expression_statement "free(pcVar6);" (call_expression "free(pcVar6)" identifier (argument_list "(pcVar6)" ( 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        *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 {\n      sVar7 = strlen(hint_text);\n      if (dircomplete_expand == 0) {\n        pcVar6 = (char *)xmalloc(sVar7 + 1);\n        command_word_completion_function::hint = strcpy(pcVar6,hint_text);\n      }\n      else {\n        pcVar6 = (char *)xmalloc(sVar7 + 1);\n        command_word_completion_function::hint = strcpy(pcVar6,hint_text);\n        bash_directory_completion_hook(&command_word_completion_function::hint);\n      }\n    }" else (compound_statement "{\n      sVar7 = strlen(hint_text);\n      if (dircomplete_expand == 0) {\n        pcVar6 = (char *)xmalloc(sVar7 + 1);\n        command_word_completion_function::hint = strcpy(pcVar6,hint_text);\n      }\n      else {\n        pcVar6 = (char *)xmalloc(sVar7 + 1);\n        command_word_completion_function::hint = strcpy(pcVar6,hint_text);\n        bash_directory_completion_hook(&command_word_completion_function::hint);\n      }\n    }" { (expression_statement "sVar7 = strlen(hint_text);" (assignment_expression "sVar7 = strlen(hint_text)" identifier = (call_expression "strlen(hint_text)" identifier (argument_list "(hint_text)" ( identifier )))) ;) (if_statement "if (dircomplete_expand == 0) {\n        pcVar6 = (char *)xmalloc(sVar7 + 1);\n        command_word_completion_function::hint = strcpy(pcVar6,hint_text);\n      }\n      else {\n        pcVar6 = (char *)xmalloc(sVar7 + 1);\n        command_word_completion_function::hint = strcpy(pcVar6,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        pcVar6 = (char *)xmalloc(sVar7 + 1);\n        command_word_completion_function::hint = strcpy(pcVar6,hint_text);\n      }" { (expression_statement "pcVar6 = (char *)xmalloc(sVar7 + 1);" (assignment_expression "pcVar6 = (char *)xmalloc(sVar7 + 1)" identifier = (cast_expression "(char *)xmalloc(sVar7 + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(sVar7 + 1)" identifier (argument_list "(sVar7 + 1)" ( (binary_expression "sVar7 + 1" identifier + number_literal) ))))) ;) (labeled_statement "command_word_completion_function::hint = strcpy(pcVar6,hint_text);" statement_identifier : (ERROR ":" :) (expression_statement "hint = strcpy(pcVar6,hint_text);" (assignment_expression "hint = strcpy(pcVar6,hint_text)" identifier = (call_expression "strcpy(pcVar6,hint_text)" identifier (argument_list "(pcVar6,hint_text)" ( identifier , identifier )))) ;)) }) (else_clause "else {\n        pcVar6 = (char *)xmalloc(sVar7 + 1);\n        command_word_completion_function::hint = strcpy(pcVar6,hint_text);\n        bash_directory_completion_hook(&command_word_completion_function::hint);\n      }" else (compound_statement "{\n        pcVar6 = (char *)xmalloc(sVar7 + 1);\n        command_word_completion_function::hint = strcpy(pcVar6,hint_text);\n        bash_directory_completion_hook(&command_word_completion_function::hint);\n      }" { (expression_statement "pcVar6 = (char *)xmalloc(sVar7 + 1);" (assignment_expression "pcVar6 = (char *)xmalloc(sVar7 + 1)" identifier = (cast_expression "(char *)xmalloc(sVar7 + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(sVar7 + 1)" identifier (argument_list "(sVar7 + 1)" ( (binary_expression "sVar7 + 1" identifier + number_literal) ))))) ;) (labeled_statement "command_word_completion_function::hint = strcpy(pcVar6,hint_text);" statement_identifier : (ERROR ":" :) (expression_statement "hint = strcpy(pcVar6,hint_text);" (assignment_expression "hint = strcpy(pcVar6,hint_text)" identifier = (call_expression "strcpy(pcVar6,hint_text)" identifier (argument_list "(pcVar6,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 != 0) && (rl_completion_quote_character == 0)) {\n      pcVar6 = bash_dequote_filename(command_word_completion_function::hint,0);\n      command_word_completion_function::dequoted_hint = pcVar6;\n      free(command_word_completion_function::hint);\n      command_word_completion_function::hint = pcVar6;\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      pcVar6 = bash_dequote_filename(command_word_completion_function::hint,0);\n      command_word_completion_function::dequoted_hint = pcVar6;\n      free(command_word_completion_function::hint);\n      command_word_completion_function::hint = pcVar6;\n    }" { (expression_statement "pcVar6 = bash_dequote_filename(command_word_completion_function::hint,0);" (assignment_expression "pcVar6 = 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 = pcVar6;" statement_identifier : (ERROR ":" :) (expression_statement "dequoted_hint = pcVar6;" (assignment_expression "dequoted_hint = pcVar6" 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 = pcVar6;" statement_identifier : (ERROR ":" :) (expression_statement "hint = pcVar6;" (assignment_expression "hint = pcVar6" identifier = identifier) ;)) })) (expression_statement "pcVar6 = command_word_completion_function::hint;" (assignment_expression "pcVar6 = command_word_completion_function" identifier = identifier) (ERROR "::hint" : : identifier) ;) (labeled_statement "command_word_completion_function::hint_len = strlen(command_word_completion_function::hint);" statement_identifier : (ERROR ":" :) (expression_statement "hint_len = strlen(command_word_completion_function::hint);" (assignment_expression "hint_len = strlen(command_word_completion_function::hint)" identifier = (call_expression "strlen(command_word_completion_function::hint)" identifier (argument_list "(command_word_completion_function::hint)" ( identifier (ERROR "::hint" : : identifier) )))) ;)) (if_statement "if (command_word_completion_function::filename_hint != (char *)0x0) {\n      free(command_word_completion_function::filename_hint);\n      pcVar6 = command_word_completion_function::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      pcVar6 = command_word_completion_function::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 "pcVar6 = command_word_completion_function::hint;" (assignment_expression "pcVar6 = command_word_completion_function" identifier = identifier) (ERROR "::hint" : : identifier) ;) })) (expression_statement "sVar7 = strlen(pcVar6);" (assignment_expression "sVar7 = strlen(pcVar6)" identifier = (call_expression "strlen(pcVar6)" identifier (argument_list "(pcVar6)" ( identifier )))) ;) (expression_statement "pcVar8 = (char *)xmalloc(sVar7 + 1);" (assignment_expression "pcVar8 = (char *)xmalloc(sVar7 + 1)" identifier = (cast_expression "(char *)xmalloc(sVar7 + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(sVar7 + 1)" identifier (argument_list "(sVar7 + 1)" ( (binary_expression "sVar7 + 1" identifier + number_literal) ))))) ;) (labeled_statement "command_word_completion_function::fnhint = strcpy(pcVar8,pcVar6);" statement_identifier : (ERROR ":" :) (expression_statement "fnhint = strcpy(pcVar8,pcVar6);" (assignment_expression "fnhint = strcpy(pcVar8,pcVar6)" identifier = (call_expression "strcpy(pcVar8,pcVar6)" identifier (argument_list "(pcVar8,pcVar6)" ( 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      state_00 = dircomplete_expand;\n      if ((dircomplete_expand != 0) &&\n         (iVar5 = path_dot_or_dotdot(command_word_completion_function::fnhint),\n         state_00 = command_word_completion_function::istate, iVar5 != 0)) {\n        dircomplete_expand = 1;\n        rl_directory_rewrite_hook = bash_directory_completion_hook;\n        rl_directory_completion_hook = (undefined1 *)0x0;\n      }\n      command_word_completion_function::mapping_over = 4;\n      pcVar6 = command_word_completion_function::fnhint;\n      do {\n        do {\n          while( true ) {\n            command_word_completion_function::val = rl_filename_completion_function(pcVar6,state_00)\n            ;\n            if ((command_word_completion_function::mapping_over == 4) && (dircomplete_expand != 0))\n            {\n              rl_directory_completion_hook = bash_directory_completion_hook;\n              rl_directory_rewrite_hook = (undefined1 *)0x0;\n            }\n            command_word_completion_function::istate = 1;\n            if (command_word_completion_function::val == (char *)0x0) break;\n            iVar5 = absolute_program(command_word_completion_function::hint);\n            pcVar8 = command_word_completion_function::val;\n            if (iVar5 == 0) {\n              pcVar6 = strrchr(command_word_completion_function::val,0x2f);\n              if (pcVar6 != (char *)0x0) {\n                pcVar6 = pcVar6 + 1;\n                if (command_word_completion_function::igncase == 0) {\n                  iVar5 = strncmp(pcVar6,command_word_completion_function::hint,\n                                  command_word_completion_function::hint_len);\n                }\n                else {\n                  iVar5 = strncasecmp(pcVar6,command_word_completion_function::hint,\n                                      command_word_completion_function::hint_len);\n                }\n                if (iVar5 == 0) {\n                  sVar7 = strlen(pcVar6);\n                  pcVar8 = (char *)xmalloc(sVar7 + 1);\n                  pcVar6 = strcpy(pcVar8,pcVar6);\n                  goto LAB_0008d6a4;\n                }\n              }\n            }\n            else {\n              if (command_word_completion_function::igncase == 0) {\n                iVar5 = strncmp(command_word_completion_function::val,\n                                command_word_completion_function::hint,\n                                command_word_completion_function::hint_len);\n              }\n              else {\n                iVar5 = strncasecmp(command_word_completion_function::val,\n                                    command_word_completion_function::hint,\n                                    command_word_completion_function::hint_len);\n              }\n              if (*hint_text == '~') {\n                pcVar6 = maybe_restore_tilde(pcVar8,command_word_completion_function::directory_part\n                                            );\n              }\n              else {\n                sVar7 = strlen(pcVar8);\n                pcVar6 = (char *)xmalloc(sVar7 + 1);\n                pcVar6 = strcpy(pcVar6,pcVar8);\n              }\n              pcVar8 = command_word_completion_function::val;\n              if (iVar5 == 0) {\nLAB_0008d6a4:\n                iVar5 = command_word_completion_function::searching_path;\n                pcVar13 = command_word_completion_function::val;\n                sVar7 = strlen(command_word_completion_function::val);\n                pcVar8 = (char *)xmalloc(sVar7 + 1);\n                f = strcpy(pcVar8,pcVar13);\n                bash_directory_completion_hook(&f);\n                if (iVar5 == 0) {\n                  iVar5 = executable_or_directory(f);\n                }\n                else {\n                  iVar5 = executable_file(f);\n                }\n                free(f);\n                pcVar8 = command_word_completion_function::val;\n                if (iVar5 != 0) {\n                  if (pcVar13 != command_word_completion_function::val) {\n                    free(pcVar13);\n                  }\n                  free(pcVar8);\n                  command_word_completion_function::val = "";\n                  goto LAB_0008d5c8;\n                }\n                free(pcVar6);\n                if (pcVar13 != pcVar8) {\n                  free(pcVar13);\n                }\n              }\n              else {\n                free(pcVar6);\n              }\n            }\n            free(pcVar8);\n            state_00 = command_word_completion_function::istate;\n            pcVar6 = command_word_completion_function::fnhint;\n          }\n          iVar5 = absolute_program(command_word_completion_function::hint);\n          if (iVar5 != 0) goto LAB_0008dac4;\nLAB_0008d5f6:\n          state_00 = (uint)(command_word_completion_function::val != (char *)0x0);\n          pcVar6 = command_word_completion_function::fnhint;\n          command_word_completion_function::istate = state_00;\n        } while (command_word_completion_function::val != (char *)0x0);\n        if (((command_word_completion_function::path == (char *)0x0) ||\n            (command_word_completion_function::path[command_word_completion_function::path_index] ==\n             '\0')) ||\n           (pcVar6 = extract_colon_unit(command_word_completion_function::path,\n                                        &command_word_completion_function::path_index),\n           pcVar6 == (char *)0x0)) goto LAB_0008dac4;\n        command_word_completion_function::searching_path = 1;\n        cVar14 = *pcVar6;\n        if (cVar14 == '\0') {\n          free(pcVar6);\n          pcVar6 = (char *)xmalloc(2);\n          pcVar6[0] = '.';\n          pcVar6[1] = '\0';\n          cVar14 = '.';\n        }\n        pcVar8 = pcVar6;\n        if (cVar14 == '~') {\n          pcVar8 = bash_tilde_expand(pcVar6,0);\n          free(pcVar6);\n          cVar14 = *pcVar8;\n        }\n        pcVar6 = command_word_completion_function::filename_hint;\n        if ((cVar14 == '.') && (pcVar8[1] == '\0')) {\n          dot_in_path = 1;\n        }\n        if (command_word_completion_function::fnhint == (char *)0x0) {\nLAB_0008dbfe:\n          if (pcVar6 != (char *)0x0) goto LAB_0008de5f;\n        }\n        else {\n          if (command_word_completion_function::fnhint !=\n              command_word_completion_function::filename_hint) {\n            free(command_word_completion_function::fnhint);\n            goto LAB_0008dbfe;\n          }\nLAB_0008de5f:\n          free(pcVar6);\n        }\n        pcVar6 = sh_makepath(pcVar8,command_word_completion_function::hint,0);\n        command_word_completion_function::filename_hint = pcVar6;\n        pcVar13 = strpbrk(pcVar6,"\"\'\\");\n        if (pcVar13 != (char *)0x0) {\n          pcVar6 = sh_backslash_quote(pcVar6,filename_bstab,0);\n        }\n        command_word_completion_function::fnhint = pcVar6;\n        free(pcVar8);\n        state_00 = command_word_completion_function::istate;\n      } while( true );\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      state_00 = dircomplete_expand;\n      if ((dircomplete_expand != 0) &&\n         (iVar5 = path_dot_or_dotdot(command_word_completion_function::fnhint),\n         state_00 = command_word_completion_function::istate, iVar5 != 0)) {\n        dircomplete_expand = 1;\n        rl_directory_rewrite_hook = bash_directory_completion_hook;\n        rl_directory_completion_hook = (undefined1 *)0x0;\n      }\n      command_word_completion_function::mapping_over = 4;\n      pcVar6 = command_word_completion_function::fnhint;\n      do {\n        do {\n          while( true ) {\n            command_word_completion_function::val = rl_filename_completion_function(pcVar6,state_00)\n            ;\n            if ((command_word_completion_function::mapping_over == 4) && (dircomplete_expand != 0))\n            {\n              rl_directory_completion_hook = bash_directory_completion_hook;\n              rl_directory_rewrite_hook = (undefined1 *)0x0;\n            }\n            command_word_completion_function::istate = 1;\n            if (command_word_completion_function::val == (char *)0x0) break;\n            iVar5 = absolute_program(command_word_completion_function::hint);\n            pcVar8 = command_word_completion_function::val;\n            if (iVar5 == 0) {\n              pcVar6 = strrchr(command_word_completion_function::val,0x2f);\n              if (pcVar6 != (char *)0x0) {\n                pcVar6 = pcVar6 + 1;\n                if (command_word_completion_function::igncase == 0) {\n                  iVar5 = strncmp(pcVar6,command_word_completion_function::hint,\n                                  command_word_completion_function::hint_len);\n                }\n                else {\n                  iVar5 = strncasecmp(pcVar6,command_word_completion_function::hint,\n                                      command_word_completion_function::hint_len);\n                }\n                if (iVar5 == 0) {\n                  sVar7 = strlen(pcVar6);\n                  pcVar8 = (char *)xmalloc(sVar7 + 1);\n                  pcVar6 = strcpy(pcVar8,pcVar6);\n                  goto LAB_0008d6a4;\n                }\n              }\n            }\n            else {\n              if (command_word_completion_function::igncase == 0) {\n                iVar5 = strncmp(command_word_completion_function::val,\n                                command_word_completion_function::hint,\n                                command_word_completion_function::hint_len);\n              }\n              else {\n                iVar5 = strncasecmp(command_word_completion_function::val,\n                                    command_word_completion_function::hint,\n                                    command_word_completion_function::hint_len);\n              }\n              if (*hint_text == '~') {\n                pcVar6 = maybe_restore_tilde(pcVar8,command_word_completion_function::directory_part\n                                            );\n              }\n              else {\n                sVar7 = strlen(pcVar8);\n                pcVar6 = (char *)xmalloc(sVar7 + 1);\n                pcVar6 = strcpy(pcVar6,pcVar8);\n              }\n              pcVar8 = command_word_completion_function::val;\n              if (iVar5 == 0) {\nLAB_0008d6a4:\n                iVar5 = command_word_completion_function::searching_path;\n                pcVar13 = command_word_completion_function::val;\n                sVar7 = strlen(command_word_completion_function::val);\n                pcVar8 = (char *)xmalloc(sVar7 + 1);\n                f = strcpy(pcVar8,pcVar13);\n                bash_directory_completion_hook(&f);\n                if (iVar5 == 0) {\n                  iVar5 = executable_or_directory(f);\n                }\n                else {\n                  iVar5 = executable_file(f);\n                }\n                free(f);\n                pcVar8 = command_word_completion_function::val;\n                if (iVar5 != 0) {\n                  if (pcVar13 != command_word_completion_function::val) {\n                    free(pcVar13);\n                  }\n                  free(pcVar8);\n                  command_word_completion_function::val = "";\n                  goto LAB_0008d5c8;\n                }\n                free(pcVar6);\n                if (pcVar13 != pcVar8) {\n                  free(pcVar13);\n                }\n              }\n              else {\n                free(pcVar6);\n              }\n            }\n            free(pcVar8);\n            state_00 = command_word_completion_function::istate;\n            pcVar6 = command_word_completion_function::fnhint;\n          }\n          iVar5 = absolute_program(command_word_completion_function::hint);\n          if (iVar5 != 0) goto LAB_0008dac4;\nLAB_0008d5f6:\n          state_00 = (uint)(command_word_completion_function::val != (char *)0x0);\n          pcVar6 = command_word_completion_function::fnhint;\n          command_word_completion_function::istate = state_00;\n        } while (command_word_completion_function::val != (char *)0x0);\n        if (((command_word_completion_function::path == (char *)0x0) ||\n            (command_word_completion_function::path[command_word_completion_function::path_index] ==\n             '\0')) ||\n           (pcVar6 = extract_colon_unit(command_word_completion_function::path,\n                                        &command_word_completion_function::path_index),\n           pcVar6 == (char *)0x0)) goto LAB_0008dac4;\n        command_word_completion_function::searching_path = 1;\n        cVar14 = *pcVar6;\n        if (cVar14 == '\0') {\n          free(pcVar6);\n          pcVar6 = (char *)xmalloc(2);\n          pcVar6[0] = '.';\n          pcVar6[1] = '\0';\n          cVar14 = '.';\n        }\n        pcVar8 = pcVar6;\n        if (cVar14 == '~') {\n          pcVar8 = bash_tilde_expand(pcVar6,0);\n          free(pcVar6);\n          cVar14 = *pcVar8;\n        }\n        pcVar6 = command_word_completion_function::filename_hint;\n        if ((cVar14 == '.') && (pcVar8[1] == '\0')) {\n          dot_in_path = 1;\n        }\n        if (command_word_completion_function::fnhint == (char *)0x0) {\nLAB_0008dbfe:\n          if (pcVar6 != (char *)0x0) goto LAB_0008de5f;\n        }\n        else {\n          if (command_word_completion_function::fnhint !=\n              command_word_completion_function::filename_hint) {\n            free(command_word_completion_function::fnhint);\n            goto LAB_0008dbfe;\n          }\nLAB_0008de5f:\n          free(pcVar6);\n        }\n        pcVar6 = sh_makepath(pcVar8,command_word_completion_function::hint,0);\n        command_word_completion_function::filename_hint = pcVar6;\n        pcVar13 = strpbrk(pcVar6,"\"\'\\");\n        if (pcVar13 != (char *)0x0) {\n          pcVar6 = sh_backslash_quote(pcVar6,filename_bstab,0);\n        }\n        command_word_completion_function::fnhint = pcVar6;\n        free(pcVar8);\n        state_00 = command_word_completion_function::istate;\n      } while( true );\n    }" { (expression_statement "state_00 = dircomplete_expand;" (assignment_expression "state_00 = dircomplete_expand" identifier = identifier) ;) (if_statement "if ((dircomplete_expand != 0) &&\n         (iVar5 = path_dot_or_dotdot(command_word_completion_function::fnhint),\n         state_00 = command_word_completion_function::istate, iVar5 != 0)) {\n        dircomplete_expand = 1;\n        rl_directory_rewrite_hook = bash_directory_completion_hook;\n        rl_directory_completion_hook = (undefined1 *)0x0;\n      }" if (parenthesized_expression "((dircomplete_expand != 0) &&\n         (iVar5 = path_dot_or_dotdot(command_word_completion_function::fnhint),\n         state_00 = command_word_completion_function::istate, iVar5 != 0))" ( (binary_expression "(dircomplete_expand != 0) &&\n         (iVar5 = path_dot_or_dotdot(command_word_completion_function::fnhint),\n         state_00 = command_word_completion_function::istate, iVar5 != 0)" (parenthesized_expression "(dircomplete_expand != 0)" ( (binary_expression "dircomplete_expand != 0" identifier != number_literal) )) && (parenthesized_expression "(iVar5 = path_dot_or_dotdot(command_word_completion_function::fnhint),\n         state_00 = command_word_completion_function::istate, iVar5 != 0)" ( (ERROR "iVar5 = path_dot_or_dotdot(command_word_completion_function::fnhint),\n         state_00 = command_word_completion_function::" (comma_expression "iVar5 = path_dot_or_dotdot(command_word_completion_function::fnhint),\n         state_00 = command_word_completion_function" (assignment_expression "iVar5 = 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) )))) , (assignment_expression "state_00 = command_word_completion_function" identifier = identifier)) : :) (comma_expression "istate, iVar5 != 0" identifier , (binary_expression "iVar5 != 0" identifier != number_literal)) ))) )) (compound_statement "{\n        dircomplete_expand = 1;\n        rl_directory_rewrite_hook = bash_directory_completion_hook;\n        rl_directory_completion_hook = (undefined1 *)0x0;\n      }" { (expression_statement "dircomplete_expand = 1;" (assignment_expression "dircomplete_expand = 1" identifier = number_literal) ;) (expression_statement "rl_directory_rewrite_hook = bash_directory_completion_hook;" (assignment_expression "rl_directory_rewrite_hook = bash_directory_completion_hook" identifier = identifier) ;) (expression_statement "rl_directory_completion_hook = (undefined1 *)0x0;" (assignment_expression "rl_directory_completion_hook = (undefined1 *)0x0" identifier = (cast_expression "(undefined1 *)0x0" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) 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) ;)) (expression_statement "pcVar6 = command_word_completion_function::fnhint;" (assignment_expression "pcVar6 = command_word_completion_function" identifier = identifier) (ERROR "::fnhint" : : identifier) ;) (do_statement "do {\n        do {\n          while( true ) {\n            command_word_completion_function::val = rl_filename_completion_function(pcVar6,state_00)\n            ;\n            if ((command_word_completion_function::mapping_over == 4) && (dircomplete_expand != 0))\n            {\n              rl_directory_completion_hook = bash_directory_completion_hook;\n              rl_directory_rewrite_hook = (undefined1 *)0x0;\n            }\n            command_word_completion_function::istate = 1;\n            if (command_word_completion_function::val == (char *)0x0) break;\n            iVar5 = absolute_program(command_word_completion_function::hint);\n            pcVar8 = command_word_completion_function::val;\n            if (iVar5 == 0) {\n              pcVar6 = strrchr(command_word_completion_function::val,0x2f);\n              if (pcVar6 != (char *)0x0) {\n                pcVar6 = pcVar6 + 1;\n                if (command_word_completion_function::igncase == 0) {\n                  iVar5 = strncmp(pcVar6,command_word_completion_function::hint,\n                                  command_word_completion_function::hint_len);\n                }\n                else {\n                  iVar5 = strncasecmp(pcVar6,command_word_completion_function::hint,\n                                      command_word_completion_function::hint_len);\n                }\n                if (iVar5 == 0) {\n                  sVar7 = strlen(pcVar6);\n                  pcVar8 = (char *)xmalloc(sVar7 + 1);\n                  pcVar6 = strcpy(pcVar8,pcVar6);\n                  goto LAB_0008d6a4;\n                }\n              }\n            }\n            else {\n              if (command_word_completion_function::igncase == 0) {\n                iVar5 = strncmp(command_word_completion_function::val,\n                                command_word_completion_function::hint,\n                                command_word_completion_function::hint_len);\n              }\n              else {\n                iVar5 = strncasecmp(command_word_completion_function::val,\n                                    command_word_completion_function::hint,\n                                    command_word_completion_function::hint_len);\n              }\n              if (*hint_text == '~') {\n                pcVar6 = maybe_restore_tilde(pcVar8,command_word_completion_function::directory_part\n                                            );\n              }\n              else {\n                sVar7 = strlen(pcVar8);\n                pcVar6 = (char *)xmalloc(sVar7 + 1);\n                pcVar6 = strcpy(pcVar6,pcVar8);\n              }\n              pcVar8 = command_word_completion_function::val;\n              if (iVar5 == 0) {\nLAB_0008d6a4:\n                iVar5 = command_word_completion_function::searching_path;\n                pcVar13 = command_word_completion_function::val;\n                sVar7 = strlen(command_word_completion_function::val);\n                pcVar8 = (char *)xmalloc(sVar7 + 1);\n                f = strcpy(pcVar8,pcVar13);\n                bash_directory_completion_hook(&f);\n                if (iVar5 == 0) {\n                  iVar5 = executable_or_directory(f);\n                }\n                else {\n                  iVar5 = executable_file(f);\n                }\n                free(f);\n                pcVar8 = command_word_completion_function::val;\n                if (iVar5 != 0) {\n                  if (pcVar13 != command_word_completion_function::val) {\n                    free(pcVar13);\n                  }\n                  free(pcVar8);\n                  command_word_completion_function::val = "";\n                  goto LAB_0008d5c8;\n                }\n                free(pcVar6);\n                if (pcVar13 != pcVar8) {\n                  free(pcVar13);\n                }\n              }\n              else {\n                free(pcVar6);\n              }\n            }\n            free(pcVar8);\n            state_00 = command_word_completion_function::istate;\n            pcVar6 = command_word_completion_function::fnhint;\n          }\n          iVar5 = absolute_program(command_word_completion_function::hint);\n          if (iVar5 != 0) goto LAB_0008dac4;\nLAB_0008d5f6:\n          state_00 = (uint)(command_word_completion_function::val != (char *)0x0);\n          pcVar6 = command_word_completion_function::fnhint;\n          command_word_completion_function::istate = state_00;\n        } while (command_word_completion_function::val != (char *)0x0);\n        if (((command_word_completion_function::path == (char *)0x0) ||\n            (command_word_completion_function::path[command_word_completion_function::path_index] ==\n             '\0')) ||\n           (pcVar6 = extract_colon_unit(command_word_completion_function::path,\n                                        &command_word_completion_function::path_index),\n           pcVar6 == (char *)0x0)) goto LAB_0008dac4;\n        command_word_completion_function::searching_path = 1;\n        cVar14 = *pcVar6;\n        if (cVar14 == '\0') {\n          free(pcVar6);\n          pcVar6 = (char *)xmalloc(2);\n          pcVar6[0] = '.';\n          pcVar6[1] = '\0';\n          cVar14 = '.';\n        }\n        pcVar8 = pcVar6;\n        if (cVar14 == '~') {\n          pcVar8 = bash_tilde_expand(pcVar6,0);\n          free(pcVar6);\n          cVar14 = *pcVar8;\n        }\n        pcVar6 = command_word_completion_function::filename_hint;\n        if ((cVar14 == '.') && (pcVar8[1] == '\0')) {\n          dot_in_path = 1;\n        }\n        if (command_word_completion_function::fnhint == (char *)0x0) {\nLAB_0008dbfe:\n          if (pcVar6 != (char *)0x0) goto LAB_0008de5f;\n        }\n        else {\n          if (command_word_completion_function::fnhint !=\n              command_word_completion_function::filename_hint) {\n            free(command_word_completion_function::fnhint);\n            goto LAB_0008dbfe;\n          }\nLAB_0008de5f:\n          free(pcVar6);\n        }\n        pcVar6 = sh_makepath(pcVar8,command_word_completion_function::hint,0);\n        command_word_completion_function::filename_hint = pcVar6;\n        pcVar13 = strpbrk(pcVar6,"\"\'\\");\n        if (pcVar13 != (char *)0x0) {\n          pcVar6 = sh_backslash_quote(pcVar6,filename_bstab,0);\n        }\n        command_word_completion_function::fnhint = pcVar6;\n        free(pcVar8);\n        state_00 = command_word_completion_function::istate;\n      } while( true );" do (compound_statement "{\n        do {\n          while( true ) {\n            command_word_completion_function::val = rl_filename_completion_function(pcVar6,state_00)\n            ;\n            if ((command_word_completion_function::mapping_over == 4) && (dircomplete_expand != 0))\n            {\n              rl_directory_completion_hook = bash_directory_completion_hook;\n              rl_directory_rewrite_hook = (undefined1 *)0x0;\n            }\n            command_word_completion_function::istate = 1;\n            if (command_word_completion_function::val == (char *)0x0) break;\n            iVar5 = absolute_program(command_word_completion_function::hint);\n            pcVar8 = command_word_completion_function::val;\n            if (iVar5 == 0) {\n              pcVar6 = strrchr(command_word_completion_function::val,0x2f);\n              if (pcVar6 != (char *)0x0) {\n                pcVar6 = pcVar6 + 1;\n                if (command_word_completion_function::igncase == 0) {\n                  iVar5 = strncmp(pcVar6,command_word_completion_function::hint,\n                                  command_word_completion_function::hint_len);\n                }\n                else {\n                  iVar5 = strncasecmp(pcVar6,command_word_completion_function::hint,\n                                      command_word_completion_function::hint_len);\n                }\n                if (iVar5 == 0) {\n                  sVar7 = strlen(pcVar6);\n                  pcVar8 = (char *)xmalloc(sVar7 + 1);\n                  pcVar6 = strcpy(pcVar8,pcVar6);\n                  goto LAB_0008d6a4;\n                }\n              }\n            }\n            else {\n              if (command_word_completion_function::igncase == 0) {\n                iVar5 = strncmp(command_word_completion_function::val,\n                                command_word_completion_function::hint,\n                                command_word_completion_function::hint_len);\n              }\n              else {\n                iVar5 = strncasecmp(command_word_completion_function::val,\n                                    command_word_completion_function::hint,\n                                    command_word_completion_function::hint_len);\n              }\n              if (*hint_text == '~') {\n                pcVar6 = maybe_restore_tilde(pcVar8,command_word_completion_function::directory_part\n                                            );\n              }\n              else {\n                sVar7 = strlen(pcVar8);\n                pcVar6 = (char *)xmalloc(sVar7 + 1);\n                pcVar6 = strcpy(pcVar6,pcVar8);\n              }\n              pcVar8 = command_word_completion_function::val;\n              if (iVar5 == 0) {\nLAB_0008d6a4:\n                iVar5 = command_word_completion_function::searching_path;\n                pcVar13 = command_word_completion_function::val;\n                sVar7 = strlen(command_word_completion_function::val);\n                pcVar8 = (char *)xmalloc(sVar7 + 1);\n                f = strcpy(pcVar8,pcVar13);\n                bash_directory_completion_hook(&f);\n                if (iVar5 == 0) {\n                  iVar5 = executable_or_directory(f);\n                }\n                else {\n                  iVar5 = executable_file(f);\n                }\n                free(f);\n                pcVar8 = command_word_completion_function::val;\n                if (iVar5 != 0) {\n                  if (pcVar13 != command_word_completion_function::val) {\n                    free(pcVar13);\n                  }\n                  free(pcVar8);\n                  command_word_completion_function::val = "";\n                  goto LAB_0008d5c8;\n                }\n                free(pcVar6);\n                if (pcVar13 != pcVar8) {\n                  free(pcVar13);\n                }\n              }\n              else {\n                free(pcVar6);\n              }\n            }\n            free(pcVar8);\n            state_00 = command_word_completion_function::istate;\n            pcVar6 = command_word_completion_function::fnhint;\n          }\n          iVar5 = absolute_program(command_word_completion_function::hint);\n          if (iVar5 != 0) goto LAB_0008dac4;\nLAB_0008d5f6:\n          state_00 = (uint)(command_word_completion_function::val != (char *)0x0);\n          pcVar6 = command_word_completion_function::fnhint;\n          command_word_completion_function::istate = state_00;\n        } while (command_word_completion_function::val != (char *)0x0);\n        if (((command_word_completion_function::path == (char *)0x0) ||\n            (command_word_completion_function::path[command_word_completion_function::path_index] ==\n             '\0')) ||\n           (pcVar6 = extract_colon_unit(command_word_completion_function::path,\n                                        &command_word_completion_function::path_index),\n           pcVar6 == (char *)0x0)) goto LAB_0008dac4;\n        command_word_completion_function::searching_path = 1;\n        cVar14 = *pcVar6;\n        if (cVar14 == '\0') {\n          free(pcVar6);\n          pcVar6 = (char *)xmalloc(2);\n          pcVar6[0] = '.';\n          pcVar6[1] = '\0';\n          cVar14 = '.';\n        }\n        pcVar8 = pcVar6;\n        if (cVar14 == '~') {\n          pcVar8 = bash_tilde_expand(pcVar6,0);\n          free(pcVar6);\n          cVar14 = *pcVar8;\n        }\n        pcVar6 = command_word_completion_function::filename_hint;\n        if ((cVar14 == '.') && (pcVar8[1] == '\0')) {\n          dot_in_path = 1;\n        }\n        if (command_word_completion_function::fnhint == (char *)0x0) {\nLAB_0008dbfe:\n          if (pcVar6 != (char *)0x0) goto LAB_0008de5f;\n        }\n        else {\n          if (command_word_completion_function::fnhint !=\n              command_word_completion_function::filename_hint) {\n            free(command_word_completion_function::fnhint);\n            goto LAB_0008dbfe;\n          }\nLAB_0008de5f:\n          free(pcVar6);\n        }\n        pcVar6 = sh_makepath(pcVar8,command_word_completion_function::hint,0);\n        command_word_completion_function::filename_hint = pcVar6;\n        pcVar13 = strpbrk(pcVar6,"\"\'\\");\n        if (pcVar13 != (char *)0x0) {\n          pcVar6 = sh_backslash_quote(pcVar6,filename_bstab,0);\n        }\n        command_word_completion_function::fnhint = pcVar6;\n        free(pcVar8);\n        state_00 = command_word_completion_function::istate;\n      }" { (do_statement "do {\n          while( true ) {\n            command_word_completion_function::val = rl_filename_completion_function(pcVar6,state_00)\n            ;\n            if ((command_word_completion_function::mapping_over == 4) && (dircomplete_expand != 0))\n            {\n              rl_directory_completion_hook = bash_directory_completion_hook;\n              rl_directory_rewrite_hook = (undefined1 *)0x0;\n            }\n            command_word_completion_function::istate = 1;\n            if (command_word_completion_function::val == (char *)0x0) break;\n            iVar5 = absolute_program(command_word_completion_function::hint);\n            pcVar8 = command_word_completion_function::val;\n            if (iVar5 == 0) {\n              pcVar6 = strrchr(command_word_completion_function::val,0x2f);\n              if (pcVar6 != (char *)0x0) {\n                pcVar6 = pcVar6 + 1;\n                if (command_word_completion_function::igncase == 0) {\n                  iVar5 = strncmp(pcVar6,command_word_completion_function::hint,\n                                  command_word_completion_function::hint_len);\n                }\n                else {\n                  iVar5 = strncasecmp(pcVar6,command_word_completion_function::hint,\n                                      command_word_completion_function::hint_len);\n                }\n                if (iVar5 == 0) {\n                  sVar7 = strlen(pcVar6);\n                  pcVar8 = (char *)xmalloc(sVar7 + 1);\n                  pcVar6 = strcpy(pcVar8,pcVar6);\n                  goto LAB_0008d6a4;\n                }\n              }\n            }\n            else {\n              if (command_word_completion_function::igncase == 0) {\n                iVar5 = strncmp(command_word_completion_function::val,\n                                command_word_completion_function::hint,\n                                command_word_completion_function::hint_len);\n              }\n              else {\n                iVar5 = strncasecmp(command_word_completion_function::val,\n                                    command_word_completion_function::hint,\n                                    command_word_completion_function::hint_len);\n              }\n              if (*hint_text == '~') {\n                pcVar6 = maybe_restore_tilde(pcVar8,command_word_completion_function::directory_part\n                                            );\n              }\n              else {\n                sVar7 = strlen(pcVar8);\n                pcVar6 = (char *)xmalloc(sVar7 + 1);\n                pcVar6 = strcpy(pcVar6,pcVar8);\n              }\n              pcVar8 = command_word_completion_function::val;\n              if (iVar5 == 0) {\nLAB_0008d6a4:\n                iVar5 = command_word_completion_function::searching_path;\n                pcVar13 = command_word_completion_function::val;\n                sVar7 = strlen(command_word_completion_function::val);\n                pcVar8 = (char *)xmalloc(sVar7 + 1);\n                f = strcpy(pcVar8,pcVar13);\n                bash_directory_completion_hook(&f);\n                if (iVar5 == 0) {\n                  iVar5 = executable_or_directory(f);\n                }\n                else {\n                  iVar5 = executable_file(f);\n                }\n                free(f);\n                pcVar8 = command_word_completion_function::val;\n                if (iVar5 != 0) {\n                  if (pcVar13 != command_word_completion_function::val) {\n                    free(pcVar13);\n                  }\n                  free(pcVar8);\n                  command_word_completion_function::val = "";\n                  goto LAB_0008d5c8;\n                }\n                free(pcVar6);\n                if (pcVar13 != pcVar8) {\n                  free(pcVar13);\n                }\n              }\n              else {\n                free(pcVar6);\n              }\n            }\n            free(pcVar8);\n            state_00 = command_word_completion_function::istate;\n            pcVar6 = command_word_completion_function::fnhint;\n          }\n          iVar5 = absolute_program(command_word_completion_function::hint);\n          if (iVar5 != 0) goto LAB_0008dac4;\nLAB_0008d5f6:\n          state_00 = (uint)(command_word_completion_function::val != (char *)0x0);\n          pcVar6 = command_word_completion_function::fnhint;\n          command_word_completion_function::istate = state_00;\n        } while (command_word_completion_function::val != (char *)0x0);" do (compound_statement "{\n          while( true ) {\n            command_word_completion_function::val = rl_filename_completion_function(pcVar6,state_00)\n            ;\n            if ((command_word_completion_function::mapping_over == 4) && (dircomplete_expand != 0))\n            {\n              rl_directory_completion_hook = bash_directory_completion_hook;\n              rl_directory_rewrite_hook = (undefined1 *)0x0;\n            }\n            command_word_completion_function::istate = 1;\n            if (command_word_completion_function::val == (char *)0x0) break;\n            iVar5 = absolute_program(command_word_completion_function::hint);\n            pcVar8 = command_word_completion_function::val;\n            if (iVar5 == 0) {\n              pcVar6 = strrchr(command_word_completion_function::val,0x2f);\n              if (pcVar6 != (char *)0x0) {\n                pcVar6 = pcVar6 + 1;\n                if (command_word_completion_function::igncase == 0) {\n                  iVar5 = strncmp(pcVar6,command_word_completion_function::hint,\n                                  command_word_completion_function::hint_len);\n                }\n                else {\n                  iVar5 = strncasecmp(pcVar6,command_word_completion_function::hint,\n                                      command_word_completion_function::hint_len);\n                }\n                if (iVar5 == 0) {\n                  sVar7 = strlen(pcVar6);\n                  pcVar8 = (char *)xmalloc(sVar7 + 1);\n                  pcVar6 = strcpy(pcVar8,pcVar6);\n                  goto LAB_0008d6a4;\n                }\n              }\n            }\n            else {\n              if (command_word_completion_function::igncase == 0) {\n                iVar5 = strncmp(command_word_completion_function::val,\n                                command_word_completion_function::hint,\n                                command_word_completion_function::hint_len);\n              }\n              else {\n                iVar5 = strncasecmp(command_word_completion_function::val,\n                                    command_word_completion_function::hint,\n                                    command_word_completion_function::hint_len);\n              }\n              if (*hint_text == '~') {\n                pcVar6 = maybe_restore_tilde(pcVar8,command_word_completion_function::directory_part\n                                            );\n              }\n              else {\n                sVar7 = strlen(pcVar8);\n                pcVar6 = (char *)xmalloc(sVar7 + 1);\n                pcVar6 = strcpy(pcVar6,pcVar8);\n              }\n              pcVar8 = command_word_completion_function::val;\n              if (iVar5 == 0) {\nLAB_0008d6a4:\n                iVar5 = command_word_completion_function::searching_path;\n                pcVar13 = command_word_completion_function::val;\n                sVar7 = strlen(command_word_completion_function::val);\n                pcVar8 = (char *)xmalloc(sVar7 + 1);\n                f = strcpy(pcVar8,pcVar13);\n                bash_directory_completion_hook(&f);\n                if (iVar5 == 0) {\n                  iVar5 = executable_or_directory(f);\n                }\n                else {\n                  iVar5 = executable_file(f);\n                }\n                free(f);\n                pcVar8 = command_word_completion_function::val;\n                if (iVar5 != 0) {\n                  if (pcVar13 != command_word_completion_function::val) {\n                    free(pcVar13);\n                  }\n                  free(pcVar8);\n                  command_word_completion_function::val = "";\n                  goto LAB_0008d5c8;\n                }\n                free(pcVar6);\n                if (pcVar13 != pcVar8) {\n                  free(pcVar13);\n                }\n              }\n              else {\n                free(pcVar6);\n              }\n            }\n            free(pcVar8);\n            state_00 = command_word_completion_function::istate;\n            pcVar6 = command_word_completion_function::fnhint;\n          }\n          iVar5 = absolute_program(command_word_completion_function::hint);\n          if (iVar5 != 0) goto LAB_0008dac4;\nLAB_0008d5f6:\n          state_00 = (uint)(command_word_completion_function::val != (char *)0x0);\n          pcVar6 = command_word_completion_function::fnhint;\n          command_word_completion_function::istate = state_00;\n        }" { (while_statement "while( true ) {\n            command_word_completion_function::val = rl_filename_completion_function(pcVar6,state_00)\n            ;\n            if ((command_word_completion_function::mapping_over == 4) && (dircomplete_expand != 0))\n            {\n              rl_directory_completion_hook = bash_directory_completion_hook;\n              rl_directory_rewrite_hook = (undefined1 *)0x0;\n            }\n            command_word_completion_function::istate = 1;\n            if (command_word_completion_function::val == (char *)0x0) break;\n            iVar5 = absolute_program(command_word_completion_function::hint);\n            pcVar8 = command_word_completion_function::val;\n            if (iVar5 == 0) {\n              pcVar6 = strrchr(command_word_completion_function::val,0x2f);\n              if (pcVar6 != (char *)0x0) {\n                pcVar6 = pcVar6 + 1;\n                if (command_word_completion_function::igncase == 0) {\n                  iVar5 = strncmp(pcVar6,command_word_completion_function::hint,\n                                  command_word_completion_function::hint_len);\n                }\n                else {\n                  iVar5 = strncasecmp(pcVar6,command_word_completion_function::hint,\n                                      command_word_completion_function::hint_len);\n                }\n                if (iVar5 == 0) {\n                  sVar7 = strlen(pcVar6);\n                  pcVar8 = (char *)xmalloc(sVar7 + 1);\n                  pcVar6 = strcpy(pcVar8,pcVar6);\n                  goto LAB_0008d6a4;\n                }\n              }\n            }\n            else {\n              if (command_word_completion_function::igncase == 0) {\n                iVar5 = strncmp(command_word_completion_function::val,\n                                command_word_completion_function::hint,\n                                command_word_completion_function::hint_len);\n              }\n              else {\n                iVar5 = strncasecmp(command_word_completion_function::val,\n                                    command_word_completion_function::hint,\n                                    command_word_completion_function::hint_len);\n              }\n              if (*hint_text == '~') {\n                pcVar6 = maybe_restore_tilde(pcVar8,command_word_completion_function::directory_part\n                                            );\n              }\n              else {\n                sVar7 = strlen(pcVar8);\n                pcVar6 = (char *)xmalloc(sVar7 + 1);\n                pcVar6 = strcpy(pcVar6,pcVar8);\n              }\n              pcVar8 = command_word_completion_function::val;\n              if (iVar5 == 0) {\nLAB_0008d6a4:\n                iVar5 = command_word_completion_function::searching_path;\n                pcVar13 = command_word_completion_function::val;\n                sVar7 = strlen(command_word_completion_function::val);\n                pcVar8 = (char *)xmalloc(sVar7 + 1);\n                f = strcpy(pcVar8,pcVar13);\n                bash_directory_completion_hook(&f);\n                if (iVar5 == 0) {\n                  iVar5 = executable_or_directory(f);\n                }\n                else {\n                  iVar5 = executable_file(f);\n                }\n                free(f);\n                pcVar8 = command_word_completion_function::val;\n                if (iVar5 != 0) {\n                  if (pcVar13 != command_word_completion_function::val) {\n                    free(pcVar13);\n                  }\n                  free(pcVar8);\n                  command_word_completion_function::val = "";\n                  goto LAB_0008d5c8;\n                }\n                free(pcVar6);\n                if (pcVar13 != pcVar8) {\n                  free(pcVar13);\n                }\n              }\n              else {\n                free(pcVar6);\n              }\n            }\n            free(pcVar8);\n            state_00 = command_word_completion_function::istate;\n            pcVar6 = command_word_completion_function::fnhint;\n          }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n            command_word_completion_function::val = rl_filename_completion_function(pcVar6,state_00)\n            ;\n            if ((command_word_completion_function::mapping_over == 4) && (dircomplete_expand != 0))\n            {\n              rl_directory_completion_hook = bash_directory_completion_hook;\n              rl_directory_rewrite_hook = (undefined1 *)0x0;\n            }\n            command_word_completion_function::istate = 1;\n            if (command_word_completion_function::val == (char *)0x0) break;\n            iVar5 = absolute_program(command_word_completion_function::hint);\n            pcVar8 = command_word_completion_function::val;\n            if (iVar5 == 0) {\n              pcVar6 = strrchr(command_word_completion_function::val,0x2f);\n              if (pcVar6 != (char *)0x0) {\n                pcVar6 = pcVar6 + 1;\n                if (command_word_completion_function::igncase == 0) {\n                  iVar5 = strncmp(pcVar6,command_word_completion_function::hint,\n                                  command_word_completion_function::hint_len);\n                }\n                else {\n                  iVar5 = strncasecmp(pcVar6,command_word_completion_function::hint,\n                                      command_word_completion_function::hint_len);\n                }\n                if (iVar5 == 0) {\n                  sVar7 = strlen(pcVar6);\n                  pcVar8 = (char *)xmalloc(sVar7 + 1);\n                  pcVar6 = strcpy(pcVar8,pcVar6);\n                  goto LAB_0008d6a4;\n                }\n              }\n            }\n            else {\n              if (command_word_completion_function::igncase == 0) {\n                iVar5 = strncmp(command_word_completion_function::val,\n                                command_word_completion_function::hint,\n                                command_word_completion_function::hint_len);\n              }\n              else {\n                iVar5 = strncasecmp(command_word_completion_function::val,\n                                    command_word_completion_function::hint,\n                                    command_word_completion_function::hint_len);\n              }\n              if (*hint_text == '~') {\n                pcVar6 = maybe_restore_tilde(pcVar8,command_word_completion_function::directory_part\n                                            );\n              }\n              else {\n                sVar7 = strlen(pcVar8);\n                pcVar6 = (char *)xmalloc(sVar7 + 1);\n                pcVar6 = strcpy(pcVar6,pcVar8);\n              }\n              pcVar8 = command_word_completion_function::val;\n              if (iVar5 == 0) {\nLAB_0008d6a4:\n                iVar5 = command_word_completion_function::searching_path;\n                pcVar13 = command_word_completion_function::val;\n                sVar7 = strlen(command_word_completion_function::val);\n                pcVar8 = (char *)xmalloc(sVar7 + 1);\n                f = strcpy(pcVar8,pcVar13);\n                bash_directory_completion_hook(&f);\n                if (iVar5 == 0) {\n                  iVar5 = executable_or_directory(f);\n                }\n                else {\n                  iVar5 = executable_file(f);\n                }\n                free(f);\n                pcVar8 = command_word_completion_function::val;\n                if (iVar5 != 0) {\n                  if (pcVar13 != command_word_completion_function::val) {\n                    free(pcVar13);\n                  }\n                  free(pcVar8);\n                  command_word_completion_function::val = "";\n                  goto LAB_0008d5c8;\n                }\n                free(pcVar6);\n                if (pcVar13 != pcVar8) {\n                  free(pcVar13);\n                }\n              }\n              else {\n                free(pcVar6);\n              }\n            }\n            free(pcVar8);\n            state_00 = command_word_completion_function::istate;\n            pcVar6 = command_word_completion_function::fnhint;\n          }" { (labeled_statement "command_word_completion_function::val = rl_filename_completion_function(pcVar6,state_00)\n            ;" statement_identifier : (ERROR ":" :) (expression_statement "val = rl_filename_completion_function(pcVar6,state_00)\n            ;" (assignment_expression "val = rl_filename_completion_function(pcVar6,state_00)" identifier = (call_expression "rl_filename_completion_function(pcVar6,state_00)" identifier (argument_list "(pcVar6,state_00)" ( identifier , identifier )))) ;)) (if_statement "if ((command_word_completion_function::mapping_over == 4) && (dircomplete_expand != 0))\n            {\n              rl_directory_completion_hook = bash_directory_completion_hook;\n              rl_directory_rewrite_hook = (undefined1 *)0x0;\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              rl_directory_completion_hook = bash_directory_completion_hook;\n              rl_directory_rewrite_hook = (undefined1 *)0x0;\n            }" { (expression_statement "rl_directory_completion_hook = bash_directory_completion_hook;" (assignment_expression "rl_directory_completion_hook = bash_directory_completion_hook" identifier = identifier) ;) (expression_statement "rl_directory_rewrite_hook = (undefined1 *)0x0;" (assignment_expression "rl_directory_rewrite_hook = (undefined1 *)0x0" identifier = (cast_expression "(undefined1 *)0x0" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) })) (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 (command_word_completion_function::val == (char *)0x0) break;" 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)) )) (break_statement "break;" break ;)) (expression_statement "iVar5 = absolute_program(command_word_completion_function::hint);" (assignment_expression "iVar5 = 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) )))) ;) (expression_statement "pcVar8 = command_word_completion_function::val;" (assignment_expression "pcVar8 = command_word_completion_function" identifier = identifier) (ERROR "::val" : : identifier) ;) (if_statement "if (iVar5 == 0) {\n              pcVar6 = strrchr(command_word_completion_function::val,0x2f);\n              if (pcVar6 != (char *)0x0) {\n                pcVar6 = pcVar6 + 1;\n                if (command_word_completion_function::igncase == 0) {\n                  iVar5 = strncmp(pcVar6,command_word_completion_function::hint,\n                                  command_word_completion_function::hint_len);\n                }\n                else {\n                  iVar5 = strncasecmp(pcVar6,command_word_completion_function::hint,\n                                      command_word_completion_function::hint_len);\n                }\n                if (iVar5 == 0) {\n                  sVar7 = strlen(pcVar6);\n                  pcVar8 = (char *)xmalloc(sVar7 + 1);\n                  pcVar6 = strcpy(pcVar8,pcVar6);\n                  goto LAB_0008d6a4;\n                }\n              }\n            }\n            else {\n              if (command_word_completion_function::igncase == 0) {\n                iVar5 = strncmp(command_word_completion_function::val,\n                                command_word_completion_function::hint,\n                                command_word_completion_function::hint_len);\n              }\n              else {\n                iVar5 = strncasecmp(command_word_completion_function::val,\n                                    command_word_completion_function::hint,\n                                    command_word_completion_function::hint_len);\n              }\n              if (*hint_text == '~') {\n                pcVar6 = maybe_restore_tilde(pcVar8,command_word_completion_function::directory_part\n                                            );\n              }\n              else {\n                sVar7 = strlen(pcVar8);\n                pcVar6 = (char *)xmalloc(sVar7 + 1);\n                pcVar6 = strcpy(pcVar6,pcVar8);\n              }\n              pcVar8 = command_word_completion_function::val;\n              if (iVar5 == 0) {\nLAB_0008d6a4:\n                iVar5 = command_word_completion_function::searching_path;\n                pcVar13 = command_word_completion_function::val;\n                sVar7 = strlen(command_word_completion_function::val);\n                pcVar8 = (char *)xmalloc(sVar7 + 1);\n                f = strcpy(pcVar8,pcVar13);\n                bash_directory_completion_hook(&f);\n                if (iVar5 == 0) {\n                  iVar5 = executable_or_directory(f);\n                }\n                else {\n                  iVar5 = executable_file(f);\n                }\n                free(f);\n                pcVar8 = command_word_completion_function::val;\n                if (iVar5 != 0) {\n                  if (pcVar13 != command_word_completion_function::val) {\n                    free(pcVar13);\n                  }\n                  free(pcVar8);\n                  command_word_completion_function::val = "";\n                  goto LAB_0008d5c8;\n                }\n                free(pcVar6);\n                if (pcVar13 != pcVar8) {\n                  free(pcVar13);\n                }\n              }\n              else {\n                free(pcVar6);\n              }\n            }" if (parenthesized_expression "(iVar5 == 0)" ( (binary_expression "iVar5 == 0" identifier == number_literal) )) (compound_statement "{\n              pcVar6 = strrchr(command_word_completion_function::val,0x2f);\n              if (pcVar6 != (char *)0x0) {\n                pcVar6 = pcVar6 + 1;\n                if (command_word_completion_function::igncase == 0) {\n                  iVar5 = strncmp(pcVar6,command_word_completion_function::hint,\n                                  command_word_completion_function::hint_len);\n                }\n                else {\n                  iVar5 = strncasecmp(pcVar6,command_word_completion_function::hint,\n                                      command_word_completion_function::hint_len);\n                }\n                if (iVar5 == 0) {\n                  sVar7 = strlen(pcVar6);\n                  pcVar8 = (char *)xmalloc(sVar7 + 1);\n                  pcVar6 = strcpy(pcVar8,pcVar6);\n                  goto LAB_0008d6a4;\n                }\n              }\n            }" { (expression_statement "pcVar6 = strrchr(command_word_completion_function::val,0x2f);" (assignment_expression "pcVar6 = 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 )))) ;) (if_statement "if (pcVar6 != (char *)0x0) {\n                pcVar6 = pcVar6 + 1;\n                if (command_word_completion_function::igncase == 0) {\n                  iVar5 = strncmp(pcVar6,command_word_completion_function::hint,\n                                  command_word_completion_function::hint_len);\n                }\n                else {\n                  iVar5 = strncasecmp(pcVar6,command_word_completion_function::hint,\n                                      command_word_completion_function::hint_len);\n                }\n                if (iVar5 == 0) {\n                  sVar7 = strlen(pcVar6);\n                  pcVar8 = (char *)xmalloc(sVar7 + 1);\n                  pcVar6 = strcpy(pcVar8,pcVar6);\n                  goto LAB_0008d6a4;\n                }\n              }" if (parenthesized_expression "(pcVar6 != (char *)0x0)" ( (binary_expression "pcVar6 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                pcVar6 = pcVar6 + 1;\n                if (command_word_completion_function::igncase == 0) {\n                  iVar5 = strncmp(pcVar6,command_word_completion_function::hint,\n                                  command_word_completion_function::hint_len);\n                }\n                else {\n                  iVar5 = strncasecmp(pcVar6,command_word_completion_function::hint,\n                                      command_word_completion_function::hint_len);\n                }\n                if (iVar5 == 0) {\n                  sVar7 = strlen(pcVar6);\n                  pcVar8 = (char *)xmalloc(sVar7 + 1);\n                  pcVar6 = strcpy(pcVar8,pcVar6);\n                  goto LAB_0008d6a4;\n                }\n              }" { (expression_statement "pcVar6 = pcVar6 + 1;" (assignment_expression "pcVar6 = pcVar6 + 1" identifier = (binary_expression "pcVar6 + 1" identifier + number_literal)) ;) (if_statement "if (command_word_completion_function::igncase == 0) {\n                  iVar5 = strncmp(pcVar6,command_word_completion_function::hint,\n                                  command_word_completion_function::hint_len);\n                }\n                else {\n                  iVar5 = strncasecmp(pcVar6,command_word_completion_function::hint,\n                                      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                  iVar5 = strncmp(pcVar6,command_word_completion_function::hint,\n                                  command_word_completion_function::hint_len);\n                }" { (expression_statement "iVar5 = strncmp(pcVar6,command_word_completion_function::hint,\n                                  command_word_completion_function::hint_len);" (assignment_expression "iVar5 = strncmp(pcVar6,command_word_completion_function::hint,\n                                  command_word_completion_function::hint_len)" identifier = (call_expression "strncmp(pcVar6,command_word_completion_function::hint,\n                                  command_word_completion_function::hint_len)" identifier (argument_list "(pcVar6,command_word_completion_function::hint,\n                                  command_word_completion_function::hint_len)" ( identifier , identifier (ERROR "::hint" : : identifier) , identifier (ERROR "::hint_len" : : identifier) )))) ;) }) (else_clause "else {\n                  iVar5 = strncasecmp(pcVar6,command_word_completion_function::hint,\n                                      command_word_completion_function::hint_len);\n                }" else (compound_statement "{\n                  iVar5 = strncasecmp(pcVar6,command_word_completion_function::hint,\n                                      command_word_completion_function::hint_len);\n                }" { (expression_statement "iVar5 = strncasecmp(pcVar6,command_word_completion_function::hint,\n                                      command_word_completion_function::hint_len);" (assignment_expression "iVar5 = strncasecmp(pcVar6,command_word_completion_function::hint,\n                                      command_word_completion_function::hint_len)" identifier = (call_expression "strncasecmp(pcVar6,command_word_completion_function::hint,\n                                      command_word_completion_function::hint_len)" identifier (argument_list "(pcVar6,command_word_completion_function::hint,\n                                      command_word_completion_function::hint_len)" ( identifier , identifier (ERROR "::hint" : : identifier) , identifier (ERROR "::hint_len" : : identifier) )))) ;) }))) (if_statement "if (iVar5 == 0) {\n                  sVar7 = strlen(pcVar6);\n                  pcVar8 = (char *)xmalloc(sVar7 + 1);\n                  pcVar6 = strcpy(pcVar8,pcVar6);\n                  goto LAB_0008d6a4;\n                }" if (parenthesized_expression "(iVar5 == 0)" ( (binary_expression "iVar5 == 0" identifier == number_literal) )) (compound_statement "{\n                  sVar7 = strlen(pcVar6);\n                  pcVar8 = (char *)xmalloc(sVar7 + 1);\n                  pcVar6 = strcpy(pcVar8,pcVar6);\n                  goto LAB_0008d6a4;\n                }" { (expression_statement "sVar7 = strlen(pcVar6);" (assignment_expression "sVar7 = strlen(pcVar6)" identifier = (call_expression "strlen(pcVar6)" identifier (argument_list "(pcVar6)" ( identifier )))) ;) (expression_statement "pcVar8 = (char *)xmalloc(sVar7 + 1);" (assignment_expression "pcVar8 = (char *)xmalloc(sVar7 + 1)" identifier = (cast_expression "(char *)xmalloc(sVar7 + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(sVar7 + 1)" identifier (argument_list "(sVar7 + 1)" ( (binary_expression "sVar7 + 1" identifier + number_literal) ))))) ;) (expression_statement "pcVar6 = strcpy(pcVar8,pcVar6);" (assignment_expression "pcVar6 = strcpy(pcVar8,pcVar6)" identifier = (call_expression "strcpy(pcVar8,pcVar6)" identifier (argument_list "(pcVar8,pcVar6)" ( identifier , identifier )))) ;) (goto_statement "goto LAB_0008d6a4;" goto statement_identifier ;) })) })) }) (else_clause "else {\n              if (command_word_completion_function::igncase == 0) {\n                iVar5 = strncmp(command_word_completion_function::val,\n                                command_word_completion_function::hint,\n                                command_word_completion_function::hint_len);\n              }\n              else {\n                iVar5 = strncasecmp(command_word_completion_function::val,\n                                    command_word_completion_function::hint,\n                                    command_word_completion_function::hint_len);\n              }\n              if (*hint_text == '~') {\n                pcVar6 = maybe_restore_tilde(pcVar8,command_word_completion_function::directory_part\n                                            );\n              }\n              else {\n                sVar7 = strlen(pcVar8);\n                pcVar6 = (char *)xmalloc(sVar7 + 1);\n                pcVar6 = strcpy(pcVar6,pcVar8);\n              }\n              pcVar8 = command_word_completion_function::val;\n              if (iVar5 == 0) {\nLAB_0008d6a4:\n                iVar5 = command_word_completion_function::searching_path;\n                pcVar13 = command_word_completion_function::val;\n                sVar7 = strlen(command_word_completion_function::val);\n                pcVar8 = (char *)xmalloc(sVar7 + 1);\n                f = strcpy(pcVar8,pcVar13);\n                bash_directory_completion_hook(&f);\n                if (iVar5 == 0) {\n                  iVar5 = executable_or_directory(f);\n                }\n                else {\n                  iVar5 = executable_file(f);\n                }\n                free(f);\n                pcVar8 = command_word_completion_function::val;\n                if (iVar5 != 0) {\n                  if (pcVar13 != command_word_completion_function::val) {\n                    free(pcVar13);\n                  }\n                  free(pcVar8);\n                  command_word_completion_function::val = "";\n                  goto LAB_0008d5c8;\n                }\n                free(pcVar6);\n                if (pcVar13 != pcVar8) {\n                  free(pcVar13);\n                }\n              }\n              else {\n                free(pcVar6);\n              }\n            }" else (compound_statement "{\n              if (command_word_completion_function::igncase == 0) {\n                iVar5 = strncmp(command_word_completion_function::val,\n                                command_word_completion_function::hint,\n                                command_word_completion_function::hint_len);\n              }\n              else {\n                iVar5 = strncasecmp(command_word_completion_function::val,\n                                    command_word_completion_function::hint,\n                                    command_word_completion_function::hint_len);\n              }\n              if (*hint_text == '~') {\n                pcVar6 = maybe_restore_tilde(pcVar8,command_word_completion_function::directory_part\n                                            );\n              }\n              else {\n                sVar7 = strlen(pcVar8);\n                pcVar6 = (char *)xmalloc(sVar7 + 1);\n                pcVar6 = strcpy(pcVar6,pcVar8);\n              }\n              pcVar8 = command_word_completion_function::val;\n              if (iVar5 == 0) {\nLAB_0008d6a4:\n                iVar5 = command_word_completion_function::searching_path;\n                pcVar13 = command_word_completion_function::val;\n                sVar7 = strlen(command_word_completion_function::val);\n                pcVar8 = (char *)xmalloc(sVar7 + 1);\n                f = strcpy(pcVar8,pcVar13);\n                bash_directory_completion_hook(&f);\n                if (iVar5 == 0) {\n                  iVar5 = executable_or_directory(f);\n                }\n                else {\n                  iVar5 = executable_file(f);\n                }\n                free(f);\n                pcVar8 = command_word_completion_function::val;\n                if (iVar5 != 0) {\n                  if (pcVar13 != command_word_completion_function::val) {\n                    free(pcVar13);\n                  }\n                  free(pcVar8);\n                  command_word_completion_function::val = "";\n                  goto LAB_0008d5c8;\n                }\n                free(pcVar6);\n                if (pcVar13 != pcVar8) {\n                  free(pcVar13);\n                }\n              }\n              else {\n                free(pcVar6);\n              }\n            }" { (if_statement "if (command_word_completion_function::igncase == 0) {\n                iVar5 = strncmp(command_word_completion_function::val,\n                                command_word_completion_function::hint,\n                                command_word_completion_function::hint_len);\n              }\n              else {\n                iVar5 = strncasecmp(command_word_completion_function::val,\n                                    command_word_completion_function::hint,\n                                    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                iVar5 = strncmp(command_word_completion_function::val,\n                                command_word_completion_function::hint,\n                                command_word_completion_function::hint_len);\n              }" { (expression_statement "iVar5 = strncmp(command_word_completion_function::val,\n                                command_word_completion_function::hint,\n                                command_word_completion_function::hint_len);" (assignment_expression "iVar5 = strncmp(command_word_completion_function::val,\n                                command_word_completion_function::hint,\n                                command_word_completion_function::hint_len)" identifier = (call_expression "strncmp(command_word_completion_function::val,\n                                command_word_completion_function::hint,\n                                command_word_completion_function::hint_len)" identifier (argument_list "(command_word_completion_function::val,\n                                command_word_completion_function::hint,\n                                command_word_completion_function::hint_len)" ( identifier (ERROR "::val" : : identifier) , identifier (ERROR "::hint" : : identifier) , identifier (ERROR "::hint_len" : : identifier) )))) ;) }) (else_clause "else {\n                iVar5 = strncasecmp(command_word_completion_function::val,\n                                    command_word_completion_function::hint,\n                                    command_word_completion_function::hint_len);\n              }" else (compound_statement "{\n                iVar5 = strncasecmp(command_word_completion_function::val,\n                                    command_word_completion_function::hint,\n                                    command_word_completion_function::hint_len);\n              }" { (expression_statement "iVar5 = strncasecmp(command_word_completion_function::val,\n                                    command_word_completion_function::hint,\n                                    command_word_completion_function::hint_len);" (assignment_expression "iVar5 = strncasecmp(command_word_completion_function::val,\n                                    command_word_completion_function::hint,\n                                    command_word_completion_function::hint_len)" identifier = (call_expression "strncasecmp(command_word_completion_function::val,\n                                    command_word_completion_function::hint,\n                                    command_word_completion_function::hint_len)" identifier (argument_list "(command_word_completion_function::val,\n                                    command_word_completion_function::hint,\n                                    command_word_completion_function::hint_len)" ( identifier (ERROR "::val" : : identifier) , identifier (ERROR "::hint" : : identifier) , identifier (ERROR "::hint_len" : : identifier) )))) ;) }))) (if_statement "if (*hint_text == '~') {\n                pcVar6 = maybe_restore_tilde(pcVar8,command_word_completion_function::directory_part\n                                            );\n              }\n              else {\n                sVar7 = strlen(pcVar8);\n                pcVar6 = (char *)xmalloc(sVar7 + 1);\n                pcVar6 = strcpy(pcVar6,pcVar8);\n              }" if (parenthesized_expression "(*hint_text == '~')" ( (binary_expression "*hint_text == '~'" (pointer_expression "*hint_text" * identifier) == (char_literal "'~'" ' character ')) )) (compound_statement "{\n                pcVar6 = maybe_restore_tilde(pcVar8,command_word_completion_function::directory_part\n                                            );\n              }" { (expression_statement "pcVar6 = maybe_restore_tilde(pcVar8,command_word_completion_function::directory_part\n                                            );" (assignment_expression "pcVar6 = maybe_restore_tilde(pcVar8,command_word_completion_function::directory_part\n                                            )" identifier = (call_expression "maybe_restore_tilde(pcVar8,command_word_completion_function::directory_part\n                                            )" identifier (argument_list "(pcVar8,command_word_completion_function::directory_part\n                                            )" ( identifier , identifier (ERROR "::directory_part" : : identifier) )))) ;) }) (else_clause "else {\n                sVar7 = strlen(pcVar8);\n                pcVar6 = (char *)xmalloc(sVar7 + 1);\n                pcVar6 = strcpy(pcVar6,pcVar8);\n              }" else (compound_statement "{\n                sVar7 = strlen(pcVar8);\n                pcVar6 = (char *)xmalloc(sVar7 + 1);\n                pcVar6 = strcpy(pcVar6,pcVar8);\n              }" { (expression_statement "sVar7 = strlen(pcVar8);" (assignment_expression "sVar7 = strlen(pcVar8)" identifier = (call_expression "strlen(pcVar8)" identifier (argument_list "(pcVar8)" ( identifier )))) ;) (expression_statement "pcVar6 = (char *)xmalloc(sVar7 + 1);" (assignment_expression "pcVar6 = (char *)xmalloc(sVar7 + 1)" identifier = (cast_expression "(char *)xmalloc(sVar7 + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(sVar7 + 1)" identifier (argument_list "(sVar7 + 1)" ( (binary_expression "sVar7 + 1" identifier + number_literal) ))))) ;) (expression_statement "pcVar6 = strcpy(pcVar6,pcVar8);" (assignment_expression "pcVar6 = strcpy(pcVar6,pcVar8)" identifier = (call_expression "strcpy(pcVar6,pcVar8)" identifier (argument_list "(pcVar6,pcVar8)" ( identifier , identifier )))) ;) }))) (expression_statement "pcVar8 = command_word_completion_function::val;" (assignment_expression "pcVar8 = command_word_completion_function" identifier = identifier) (ERROR "::val" : : identifier) ;) (if_statement "if (iVar5 == 0) {\nLAB_0008d6a4:\n                iVar5 = command_word_completion_function::searching_path;\n                pcVar13 = command_word_completion_function::val;\n                sVar7 = strlen(command_word_completion_function::val);\n                pcVar8 = (char *)xmalloc(sVar7 + 1);\n                f = strcpy(pcVar8,pcVar13);\n                bash_directory_completion_hook(&f);\n                if (iVar5 == 0) {\n                  iVar5 = executable_or_directory(f);\n                }\n                else {\n                  iVar5 = executable_file(f);\n                }\n                free(f);\n                pcVar8 = command_word_completion_function::val;\n                if (iVar5 != 0) {\n                  if (pcVar13 != command_word_completion_function::val) {\n                    free(pcVar13);\n                  }\n                  free(pcVar8);\n                  command_word_completion_function::val = "";\n                  goto LAB_0008d5c8;\n                }\n                free(pcVar6);\n                if (pcVar13 != pcVar8) {\n                  free(pcVar13);\n                }\n              }\n              else {\n                free(pcVar6);\n              }" if (parenthesized_expression "(iVar5 == 0)" ( (binary_expression "iVar5 == 0" identifier == number_literal) )) (compound_statement "{\nLAB_0008d6a4:\n                iVar5 = command_word_completion_function::searching_path;\n                pcVar13 = command_word_completion_function::val;\n                sVar7 = strlen(command_word_completion_function::val);\n                pcVar8 = (char *)xmalloc(sVar7 + 1);\n                f = strcpy(pcVar8,pcVar13);\n                bash_directory_completion_hook(&f);\n                if (iVar5 == 0) {\n                  iVar5 = executable_or_directory(f);\n                }\n                else {\n                  iVar5 = executable_file(f);\n                }\n                free(f);\n                pcVar8 = command_word_completion_function::val;\n                if (iVar5 != 0) {\n                  if (pcVar13 != command_word_completion_function::val) {\n                    free(pcVar13);\n                  }\n                  free(pcVar8);\n                  command_word_completion_function::val = "";\n                  goto LAB_0008d5c8;\n                }\n                free(pcVar6);\n                if (pcVar13 != pcVar8) {\n                  free(pcVar13);\n                }\n              }" { (labeled_statement "LAB_0008d6a4:\n                iVar5 = command_word_completion_function::searching_path;" statement_identifier : (expression_statement "iVar5 = command_word_completion_function::searching_path;" (assignment_expression "iVar5 = 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 "sVar7 = strlen(command_word_completion_function::val);" (assignment_expression "sVar7 = strlen(command_word_completion_function::val)" identifier = (call_expression "strlen(command_word_completion_function::val)" identifier (argument_list "(command_word_completion_function::val)" ( identifier (ERROR "::val" : : identifier) )))) ;) (expression_statement "pcVar8 = (char *)xmalloc(sVar7 + 1);" (assignment_expression "pcVar8 = (char *)xmalloc(sVar7 + 1)" identifier = (cast_expression "(char *)xmalloc(sVar7 + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(sVar7 + 1)" identifier (argument_list "(sVar7 + 1)" ( (binary_expression "sVar7 + 1" identifier + number_literal) ))))) ;) (expression_statement "f = strcpy(pcVar8,pcVar13);" (assignment_expression "f = strcpy(pcVar8,pcVar13)" identifier = (call_expression "strcpy(pcVar8,pcVar13)" identifier (argument_list "(pcVar8,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 (iVar5 == 0) {\n                  iVar5 = executable_or_directory(f);\n                }\n                else {\n                  iVar5 = executable_file(f);\n                }" if (parenthesized_expression "(iVar5 == 0)" ( (binary_expression "iVar5 == 0" identifier == number_literal) )) (compound_statement "{\n                  iVar5 = executable_or_directory(f);\n                }" { (expression_statement "iVar5 = executable_or_directory(f);" (assignment_expression "iVar5 = executable_or_directory(f)" identifier = (call_expression "executable_or_directory(f)" identifier (argument_list "(f)" ( identifier )))) ;) }) (else_clause "else {\n                  iVar5 = executable_file(f);\n                }" else (compound_statement "{\n                  iVar5 = executable_file(f);\n                }" { (expression_statement "iVar5 = executable_file(f);" (assignment_expression "iVar5 = 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 "pcVar8 = command_word_completion_function::val;" (assignment_expression "pcVar8 = command_word_completion_function" identifier = identifier) (ERROR "::val" : : identifier) ;) (if_statement "if (iVar5 != 0) {\n                  if (pcVar13 != command_word_completion_function::val) {\n                    free(pcVar13);\n                  }\n                  free(pcVar8);\n                  command_word_completion_function::val = "";\n                  goto LAB_0008d5c8;\n                }" if (parenthesized_expression "(iVar5 != 0)" ( (binary_expression "iVar5 != 0" identifier != number_literal) )) (compound_statement "{\n                  if (pcVar13 != command_word_completion_function::val) {\n                    free(pcVar13);\n                  }\n                  free(pcVar8);\n                  command_word_completion_function::val = "";\n                  goto LAB_0008d5c8;\n                }" { (if_statement "if (pcVar13 != command_word_completion_function::val) {\n                    free(pcVar13);\n                  }" if (parenthesized_expression "(pcVar13 != command_word_completion_function::val)" ( (binary_expression "pcVar13 != command_word_completion_function" identifier != identifier) (ERROR "::val" : : identifier) )) (compound_statement "{\n                    free(pcVar13);\n                  }" { (expression_statement "free(pcVar13);" (call_expression "free(pcVar13)" identifier (argument_list "(pcVar13)" ( identifier ))) ;) })) (expression_statement "free(pcVar8);" (call_expression "free(pcVar8)" identifier (argument_list "(pcVar8)" ( identifier ))) ;) (labeled_statement "command_word_completion_function::val = "";" statement_identifier : (ERROR ":" :) (expression_statement "val = "";" (assignment_expression "val = """ identifier = (string_literal """" " ")) ;)) (goto_statement "goto LAB_0008d5c8;" goto statement_identifier ;) })) (expression_statement "free(pcVar6);" (call_expression "free(pcVar6)" identifier (argument_list "(pcVar6)" ( identifier ))) ;) (if_statement "if (pcVar13 != pcVar8) {\n                  free(pcVar13);\n                }" if (parenthesized_expression "(pcVar13 != pcVar8)" ( (binary_expression "pcVar13 != pcVar8" identifier != identifier) )) (compound_statement "{\n                  free(pcVar13);\n                }" { (expression_statement "free(pcVar13);" (call_expression "free(pcVar13)" identifier (argument_list "(pcVar13)" ( identifier ))) ;) })) }) (else_clause "else {\n                free(pcVar6);\n              }" else (compound_statement "{\n                free(pcVar6);\n              }" { (expression_statement "free(pcVar6);" (call_expression "free(pcVar6)" identifier (argument_list "(pcVar6)" ( identifier ))) ;) }))) }))) (expression_statement "free(pcVar8);" (call_expression "free(pcVar8)" identifier (argument_list "(pcVar8)" ( identifier ))) ;) (expression_statement "state_00 = command_word_completion_function::istate;" (assignment_expression "state_00 = command_word_completion_function" identifier = identifier) (ERROR "::istate" : : identifier) ;) (expression_statement "pcVar6 = command_word_completion_function::fnhint;" (assignment_expression "pcVar6 = command_word_completion_function" identifier = identifier) (ERROR "::fnhint" : : identifier) ;) })) (expression_statement "iVar5 = absolute_program(command_word_completion_function::hint);" (assignment_expression "iVar5 = 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 (iVar5 != 0) goto LAB_0008dac4;" if (parenthesized_expression "(iVar5 != 0)" ( (binary_expression "iVar5 != 0" identifier != number_literal) )) (goto_statement "goto LAB_0008dac4;" goto statement_identifier ;)) (labeled_statement "LAB_0008d5f6:\n          state_00 = (uint)(command_word_completion_function::val != (char *)0x0);" statement_identifier : (expression_statement "state_00 = (uint)(command_word_completion_function::val != (char *)0x0);" (assignment_expression "state_00 = (uint)(command_word_completion_function::val != (char *)0x0)" identifier = (call_expression "(uint)(command_word_completion_function::val != (char *)0x0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(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)) )))) ;)) (expression_statement "pcVar6 = command_word_completion_function::fnhint;" (assignment_expression "pcVar6 = command_word_completion_function" identifier = identifier) (ERROR "::fnhint" : : identifier) ;) (labeled_statement "command_word_completion_function::istate = state_00;" statement_identifier : (ERROR ":" :) (expression_statement "istate = state_00;" (assignment_expression "istate = state_00" identifier = identifier) ;)) }) while (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::path == (char *)0x0) ||\n            (command_word_completion_function::path[command_word_completion_function::path_index] ==\n             '\0')) ||\n           (pcVar6 = extract_colon_unit(command_word_completion_function::path,\n                                        &command_word_completion_function::path_index),\n           pcVar6 == (char *)0x0)) goto LAB_0008dac4;" if (parenthesized_expression "(((command_word_completion_function::path == (char *)0x0) ||\n            (command_word_completion_function::path[command_word_completion_function::path_index] ==\n             '\0')) ||\n           (pcVar6 = extract_colon_unit(command_word_completion_function::path,\n                                        &command_word_completion_function::path_index),\n           pcVar6 == (char *)0x0))" ( (binary_expression "((command_word_completion_function::path == (char *)0x0) ||\n            (command_word_completion_function::path[command_word_completion_function::path_index] ==\n             '\0')) ||\n           (pcVar6 = extract_colon_unit(command_word_completion_function::path,\n                                        &command_word_completion_function::path_index),\n           pcVar6 == (char *)0x0)" (parenthesized_expression "((command_word_completion_function::path == (char *)0x0) ||\n            (command_word_completion_function::path[command_word_completion_function::path_index] ==\n             '\0'))" ( (binary_expression "(command_word_completion_function::path == (char *)0x0) ||\n            (command_word_completion_function::path[command_word_completion_function::path_index] ==\n             '\0')" (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)) )) || (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 "(pcVar6 = extract_colon_unit(command_word_completion_function::path,\n                                        &command_word_completion_function::path_index),\n           pcVar6 == (char *)0x0)" ( (comma_expression "pcVar6 = extract_colon_unit(command_word_completion_function::path,\n                                        &command_word_completion_function::path_index),\n           pcVar6 == (char *)0x0" (assignment_expression "pcVar6 = 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 "pcVar6 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) (goto_statement "goto LAB_0008dac4;" 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) ;)) (expression_statement "cVar14 = *pcVar6;" (assignment_expression "cVar14 = *pcVar6" identifier = (pointer_expression "*pcVar6" * identifier)) ;) (if_statement "if (cVar14 == '\0') {\n          free(pcVar6);\n          pcVar6 = (char *)xmalloc(2);\n          pcVar6[0] = '.';\n          pcVar6[1] = '\0';\n          cVar14 = '.';\n        }" if (parenthesized_expression "(cVar14 == '\0')" ( (binary_expression "cVar14 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n          free(pcVar6);\n          pcVar6 = (char *)xmalloc(2);\n          pcVar6[0] = '.';\n          pcVar6[1] = '\0';\n          cVar14 = '.';\n        }" { (expression_statement "free(pcVar6);" (call_expression "free(pcVar6)" identifier (argument_list "(pcVar6)" ( identifier ))) ;) (expression_statement "pcVar6 = (char *)xmalloc(2);" (assignment_expression "pcVar6 = (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 "pcVar6[0] = '.';" (assignment_expression "pcVar6[0] = '.'" (subscript_expression "pcVar6[0]" identifier [ number_literal ]) = (char_literal "'.'" ' character ')) ;) (expression_statement "pcVar6[1] = '\0';" (assignment_expression "pcVar6[1] = '\0'" (subscript_expression "pcVar6[1]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "cVar14 = '.';" (assignment_expression "cVar14 = '.'" identifier = (char_literal "'.'" ' character ')) ;) })) (expression_statement "pcVar8 = pcVar6;" (assignment_expression "pcVar8 = pcVar6" identifier = identifier) ;) (if_statement "if (cVar14 == '~') {\n          pcVar8 = bash_tilde_expand(pcVar6,0);\n          free(pcVar6);\n          cVar14 = *pcVar8;\n        }" if (parenthesized_expression "(cVar14 == '~')" ( (binary_expression "cVar14 == '~'" identifier == (char_literal "'~'" ' character ')) )) (compound_statement "{\n          pcVar8 = bash_tilde_expand(pcVar6,0);\n          free(pcVar6);\n          cVar14 = *pcVar8;\n        }" { (expression_statement "pcVar8 = bash_tilde_expand(pcVar6,0);" (assignment_expression "pcVar8 = bash_tilde_expand(pcVar6,0)" identifier = (call_expression "bash_tilde_expand(pcVar6,0)" identifier (argument_list "(pcVar6,0)" ( identifier , number_literal )))) ;) (expression_statement "free(pcVar6);" (call_expression "free(pcVar6)" identifier (argument_list "(pcVar6)" ( identifier ))) ;) (expression_statement "cVar14 = *pcVar8;" (assignment_expression "cVar14 = *pcVar8" identifier = (pointer_expression "*pcVar8" * identifier)) ;) })) (expression_statement "pcVar6 = command_word_completion_function::filename_hint;" (assignment_expression "pcVar6 = command_word_completion_function" identifier = identifier) (ERROR "::filename_hint" : : identifier) ;) (if_statement "if ((cVar14 == '.') && (pcVar8[1] == '\0')) {\n          dot_in_path = 1;\n        }" if (parenthesized_expression "((cVar14 == '.') && (pcVar8[1] == '\0'))" ( (binary_expression "(cVar14 == '.') && (pcVar8[1] == '\0')" (parenthesized_expression "(cVar14 == '.')" ( (binary_expression "cVar14 == '.'" 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          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) {\nLAB_0008dbfe:\n          if (pcVar6 != (char *)0x0) goto LAB_0008de5f;\n        }\n        else {\n          if (command_word_completion_function::fnhint !=\n              command_word_completion_function::filename_hint) {\n            free(command_word_completion_function::fnhint);\n            goto LAB_0008dbfe;\n          }\nLAB_0008de5f:\n          free(pcVar6);\n        }" if (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)) )) (compound_statement "{\nLAB_0008dbfe:\n          if (pcVar6 != (char *)0x0) goto LAB_0008de5f;\n        }" { (labeled_statement "LAB_0008dbfe:\n          if (pcVar6 != (char *)0x0) goto LAB_0008de5f;" statement_identifier : (if_statement "if (pcVar6 != (char *)0x0) goto LAB_0008de5f;" if (parenthesized_expression "(pcVar6 != (char *)0x0)" ( (binary_expression "pcVar6 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0008de5f;" goto statement_identifier ;))) }) (else_clause "else {\n          if (command_word_completion_function::fnhint !=\n              command_word_completion_function::filename_hint) {\n            free(command_word_completion_function::fnhint);\n            goto LAB_0008dbfe;\n          }\nLAB_0008de5f:\n          free(pcVar6);\n        }" else (compound_statement "{\n          if (command_word_completion_function::fnhint !=\n              command_word_completion_function::filename_hint) {\n            free(command_word_completion_function::fnhint);\n            goto LAB_0008dbfe;\n          }\nLAB_0008de5f:\n          free(pcVar6);\n        }" { (if_statement "if (command_word_completion_function::fnhint !=\n              command_word_completion_function::filename_hint) {\n            free(command_word_completion_function::fnhint);\n            goto LAB_0008dbfe;\n          }" if (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            goto LAB_0008dbfe;\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 ")" )) ;)) (goto_statement "goto LAB_0008dbfe;" goto statement_identifier ;) })) (labeled_statement "LAB_0008de5f:\n          free(pcVar6);" statement_identifier : (expression_statement "free(pcVar6);" (call_expression "free(pcVar6)" identifier (argument_list "(pcVar6)" ( identifier ))) ;)) }))) (expression_statement "pcVar6 = sh_makepath(pcVar8,command_word_completion_function::hint,0);" (assignment_expression "pcVar6 = sh_makepath(pcVar8,command_word_completion_function::hint,0)" identifier = (call_expression "sh_makepath(pcVar8,command_word_completion_function::hint,0)" identifier (argument_list "(pcVar8,command_word_completion_function::hint,0)" ( identifier , identifier (ERROR "::hint" : : identifier) , number_literal )))) ;) (labeled_statement "command_word_completion_function::filename_hint = pcVar6;" statement_identifier : (ERROR ":" :) (expression_statement "filename_hint = pcVar6;" (assignment_expression "filename_hint = pcVar6" identifier = identifier) ;)) (expression_statement "pcVar13 = strpbrk(pcVar6,"\"\'\\");" (assignment_expression "pcVar13 = strpbrk(pcVar6,"\"\'\\")" identifier = (call_expression "strpbrk(pcVar6,"\"\'\\")" identifier (argument_list "(pcVar6,"\"\'\\")" ( identifier , (string_literal ""\"\'\\"" " escape_sequence escape_sequence escape_sequence ") )))) ;) (if_statement "if (pcVar13 != (char *)0x0) {\n          pcVar6 = sh_backslash_quote(pcVar6,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          pcVar6 = sh_backslash_quote(pcVar6,filename_bstab,0);\n        }" { (expression_statement "pcVar6 = sh_backslash_quote(pcVar6,filename_bstab,0);" (assignment_expression "pcVar6 = sh_backslash_quote(pcVar6,filename_bstab,0)" identifier = (call_expression "sh_backslash_quote(pcVar6,filename_bstab,0)" identifier (argument_list "(pcVar6,filename_bstab,0)" ( identifier , identifier , number_literal )))) ;) })) (labeled_statement "command_word_completion_function::fnhint = pcVar6;" statement_identifier : (ERROR ":" :) (expression_statement "fnhint = pcVar6;" (assignment_expression "fnhint = pcVar6" identifier = identifier) ;)) (expression_statement "free(pcVar8);" (call_expression "free(pcVar8)" identifier (argument_list "(pcVar8)" ( identifier ))) ;) (expression_statement "state_00 = command_word_completion_function::istate;" (assignment_expression "state_00 = command_word_completion_function" identifier = identifier) (ERROR "::istate" : : identifier) ;) }) while (parenthesized_expression "( true )" ( true )) ;) })) (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_0008d218:\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) ;)) (expression_statement "ppcVar9 = shell_glob_filename(command_word_completion_function::hint);" (assignment_expression "ppcVar9 = 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 = 0;" (assignment_expression "glob_ignore_case = 0" identifier = number_literal) ;) (if_statement "if ((ppcVar9 == (char **)PTR_glob_error_return_00149f60) || (ppcVar9 == (char **)0x0)) {\n      command_word_completion_function::glob_matches = (char **)0x0;\n      pcVar6 = (char *)0x0;\n      goto LAB_0008d5c8;\n    }" if (parenthesized_expression "((ppcVar9 == (char **)PTR_glob_error_return_00149f60) || (ppcVar9 == (char **)0x0))" ( (binary_expression "(ppcVar9 == (char **)PTR_glob_error_return_00149f60) || (ppcVar9 == (char **)0x0)" (parenthesized_expression "(ppcVar9 == (char **)PTR_glob_error_return_00149f60)" ( (binary_expression "ppcVar9 == (char **)PTR_glob_error_return_00149f60" identifier == (cast_expression "(char **)PTR_glob_error_return_00149f60" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) )) || (parenthesized_expression "(ppcVar9 == (char **)0x0)" ( (binary_expression "ppcVar9 == (char **)0x0" 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      pcVar6 = (char *)0x0;\n      goto LAB_0008d5c8;\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 "pcVar6 = (char *)0x0;" (assignment_expression "pcVar6 = (char *)0x0" identifier = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (goto_statement "goto LAB_0008d5c8;" 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) ;)) (labeled_statement "command_word_completion_function::glob_matches = ppcVar9;" statement_identifier : (ERROR ":" :) (expression_statement "glob_matches = ppcVar9;" (assignment_expression "glob_matches = ppcVar9" identifier = identifier) ;)) (if_statement "if ((ppcVar9[1] != (char *)0x0) && (rl_completion_type == 9)) {\nLAB_0008dac4:\n      pcVar6 = (char *)0x0;\n      goto LAB_0008d5c8;\n    }" if (parenthesized_expression "((ppcVar9[1] != (char *)0x0) && (rl_completion_type == 9))" ( (binary_expression "(ppcVar9[1] != (char *)0x0) && (rl_completion_type == 9)" (parenthesized_expression "(ppcVar9[1] != (char *)0x0)" ( (binary_expression "ppcVar9[1] != (char *)0x0" (subscript_expression "ppcVar9[1]" identifier [ number_literal ]) != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(rl_completion_type == 9)" ( (binary_expression "rl_completion_type == 9" identifier == number_literal) ))) )) (compound_statement "{\nLAB_0008dac4:\n      pcVar6 = (char *)0x0;\n      goto LAB_0008d5c8;\n    }" { (labeled_statement "LAB_0008dac4:\n      pcVar6 = (char *)0x0;" statement_identifier : (expression_statement "pcVar6 = (char *)0x0;" (assignment_expression "pcVar6 = (char *)0x0" identifier = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;)) (goto_statement "goto LAB_0008d5c8;" goto statement_identifier ;) })) (expression_statement "iVar5 = 1;" (assignment_expression "iVar5 = 1" identifier = number_literal) ;) }) (else_clause "else {\nLAB_0008d390:\n    pcVar6 = command_word_completion_function::hint;\n    iVar12 = command_word_completion_function::igncase;\n    iVar5 = command_word_completion_function::hint_len;\n    ppaVar4 = command_word_completion_function::alias_list;\n    iVar11 = command_word_completion_function::local_index;\n    if (command_word_completion_function::mapping_over == 1) {\nLAB_0008d960:\n      do {\n        pcVar8 = word_token_alist[iVar11].word;\n        if (pcVar8 == (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          iVar12 = command_word_completion_function::igncase;\n          ppSVar3 = command_word_completion_function::varlist;\n          goto LAB_0008d840;\n        }\n        iVar11 = iVar11 + 1;\n        command_word_completion_function::local_index = iVar11;\n      } while ((iVar5 != 0) &&\n              ((*pcVar8 != *pcVar6 || (iVar12 = strncmp(pcVar8,pcVar6,iVar5), iVar12 != 0))));\nLAB_0008d451:\n      sVar7 = strlen(pcVar8);\n      pcVar6 = (char *)xmalloc(sVar7 + 1);\n      pcVar6 = strcpy(pcVar6,pcVar8);\n      goto LAB_0008d5c8;\n    }\n    if (command_word_completion_function::mapping_over < 2) {\n      if (command_word_completion_function::mapping_over == 0) {\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::mapping_over = 1;\n              iVar11 = 0;\n              goto LAB_0008d960;\n            }\n            command_word_completion_function::local_index =\n                 command_word_completion_function::local_index + 1;\n            pcVar8 = paVar2->name;\n            if (iVar12 != 0) break;\n            if ((iVar5 == 0) ||\n               ((*pcVar8 == *pcVar6 && (iVar11 = strncmp(pcVar8,pcVar6,iVar5), iVar11 == 0))))\n            goto LAB_0008d451;\n          }\n          iVar11 = strncasecmp(pcVar8,pcVar6,iVar5);\n        } while (iVar11 != 0);\n        goto LAB_0008d451;\n      }\n    }\n    else {\n      ppSVar3 = command_word_completion_function::varlist;\n      if (command_word_completion_function::mapping_over == 2) {\nLAB_0008d840:\n        do {\n          if ((ppSVar3 == (SHELL_VAR **)0x0) ||\n             (ppSVar1 = ppSVar3 + command_word_completion_function::local_index,\n             *ppSVar1 == (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_0008d3bd;\n          }\n          command_word_completion_function::local_index =\n               command_word_completion_function::local_index + 1;\n          pcVar8 = (*ppSVar1)->name;\n          if (iVar12 == 0) {\n            if ((iVar5 == 0) ||\n               ((*pcVar8 == *pcVar6 && (iVar11 = strncmp(pcVar8,pcVar6,iVar5), iVar11 == 0))))\n            break;\n            goto LAB_0008d840;\n          }\n          iVar11 = strncasecmp(pcVar8,pcVar6,iVar5);\n        } while (iVar11 != 0);\n        sVar7 = strlen(pcVar8);\n        pcVar6 = (char *)xmalloc(sVar7 + 1);\n        pcVar6 = strcpy(pcVar6,pcVar8);\n        goto LAB_0008d5c8;\n      }\n      if (command_word_completion_function::mapping_over == 3) {\nLAB_0008d3bd:\n        pcVar6 = command_word_completion_function::hint;\n        iVar12 = command_word_completion_function::hint_len;\n        iVar5 = num_shell_builtins;\n        if (command_word_completion_function::local_index < num_shell_builtins) {\n          pbVar15 = shell_builtins + command_word_completion_function::local_index;\n          do {\n            iVar11 = command_word_completion_function::local_index;\n            if (((pbVar15->function != (sh_builtin_func_t *)0x0) && ((pbVar15->flags & 1) != 0)) &&\n               ((pcVar8 = pbVar15->name, iVar12 == 0 ||\n                ((*pcVar8 == *pcVar6 && (iVar10 = strncmp(pcVar8,pcVar6,iVar12), iVar10 == 0)))))) {\n              command_word_completion_function::local_index = iVar11 + 1;\n              goto LAB_0008d451;\n            }\n            command_word_completion_function::local_index = iVar11 + 1;\n            pbVar15 = pbVar15 + 1;\n          } while (command_word_completion_function::local_index != iVar5);\n        }\n        command_word_completion_function::mapping_over =\n             command_word_completion_function::mapping_over + 1;\n        command_word_completion_function::local_index = 0;\n      }\n    }\n    if (command_word_completion_function::globpat == 0) {\n      if (command_word_completion_function::hint_is_dir == 0) goto LAB_0008d5f6;\n      command_word_completion_function::hint_is_dir = 0;\n      sVar7 = strlen(hint_text);\n      pcVar6 = (char *)xmalloc(sVar7 + 1);\n      pcVar6 = strcpy(pcVar6,hint_text);\n      goto LAB_0008d5c8;\n    }\n    if (state == 0) goto LAB_0008d218;\n    iVar5 = command_word_completion_function::local_index + 1;\n    ppcVar9 = command_word_completion_function::glob_matches +\n              command_word_completion_function::local_index;\n  }" else (compound_statement "{\nLAB_0008d390:\n    pcVar6 = command_word_completion_function::hint;\n    iVar12 = command_word_completion_function::igncase;\n    iVar5 = command_word_completion_function::hint_len;\n    ppaVar4 = command_word_completion_function::alias_list;\n    iVar11 = command_word_completion_function::local_index;\n    if (command_word_completion_function::mapping_over == 1) {\nLAB_0008d960:\n      do {\n        pcVar8 = word_token_alist[iVar11].word;\n        if (pcVar8 == (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          iVar12 = command_word_completion_function::igncase;\n          ppSVar3 = command_word_completion_function::varlist;\n          goto LAB_0008d840;\n        }\n        iVar11 = iVar11 + 1;\n        command_word_completion_function::local_index = iVar11;\n      } while ((iVar5 != 0) &&\n              ((*pcVar8 != *pcVar6 || (iVar12 = strncmp(pcVar8,pcVar6,iVar5), iVar12 != 0))));\nLAB_0008d451:\n      sVar7 = strlen(pcVar8);\n      pcVar6 = (char *)xmalloc(sVar7 + 1);\n      pcVar6 = strcpy(pcVar6,pcVar8);\n      goto LAB_0008d5c8;\n    }\n    if (command_word_completion_function::mapping_over < 2) {\n      if (command_word_completion_function::mapping_over == 0) {\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::mapping_over = 1;\n              iVar11 = 0;\n              goto LAB_0008d960;\n            }\n            command_word_completion_function::local_index =\n                 command_word_completion_function::local_index + 1;\n            pcVar8 = paVar2->name;\n            if (iVar12 != 0) break;\n            if ((iVar5 == 0) ||\n               ((*pcVar8 == *pcVar6 && (iVar11 = strncmp(pcVar8,pcVar6,iVar5), iVar11 == 0))))\n            goto LAB_0008d451;\n          }\n          iVar11 = strncasecmp(pcVar8,pcVar6,iVar5);\n        } while (iVar11 != 0);\n        goto LAB_0008d451;\n      }\n    }\n    else {\n      ppSVar3 = command_word_completion_function::varlist;\n      if (command_word_completion_function::mapping_over == 2) {\nLAB_0008d840:\n        do {\n          if ((ppSVar3 == (SHELL_VAR **)0x0) ||\n             (ppSVar1 = ppSVar3 + command_word_completion_function::local_index,\n             *ppSVar1 == (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_0008d3bd;\n          }\n          command_word_completion_function::local_index =\n               command_word_completion_function::local_index + 1;\n          pcVar8 = (*ppSVar1)->name;\n          if (iVar12 == 0) {\n            if ((iVar5 == 0) ||\n               ((*pcVar8 == *pcVar6 && (iVar11 = strncmp(pcVar8,pcVar6,iVar5), iVar11 == 0))))\n            break;\n            goto LAB_0008d840;\n          }\n          iVar11 = strncasecmp(pcVar8,pcVar6,iVar5);\n        } while (iVar11 != 0);\n        sVar7 = strlen(pcVar8);\n        pcVar6 = (char *)xmalloc(sVar7 + 1);\n        pcVar6 = strcpy(pcVar6,pcVar8);\n        goto LAB_0008d5c8;\n      }\n      if (command_word_completion_function::mapping_over == 3) {\nLAB_0008d3bd:\n        pcVar6 = command_word_completion_function::hint;\n        iVar12 = command_word_completion_function::hint_len;\n        iVar5 = num_shell_builtins;\n        if (command_word_completion_function::local_index < num_shell_builtins) {\n          pbVar15 = shell_builtins + command_word_completion_function::local_index;\n          do {\n            iVar11 = command_word_completion_function::local_index;\n            if (((pbVar15->function != (sh_builtin_func_t *)0x0) && ((pbVar15->flags & 1) != 0)) &&\n               ((pcVar8 = pbVar15->name, iVar12 == 0 ||\n                ((*pcVar8 == *pcVar6 && (iVar10 = strncmp(pcVar8,pcVar6,iVar12), iVar10 == 0)))))) {\n              command_word_completion_function::local_index = iVar11 + 1;\n              goto LAB_0008d451;\n            }\n            command_word_completion_function::local_index = iVar11 + 1;\n            pbVar15 = pbVar15 + 1;\n          } while (command_word_completion_function::local_index != iVar5);\n        }\n        command_word_completion_function::mapping_over =\n             command_word_completion_function::mapping_over + 1;\n        command_word_completion_function::local_index = 0;\n      }\n    }\n    if (command_word_completion_function::globpat == 0) {\n      if (command_word_completion_function::hint_is_dir == 0) goto LAB_0008d5f6;\n      command_word_completion_function::hint_is_dir = 0;\n      sVar7 = strlen(hint_text);\n      pcVar6 = (char *)xmalloc(sVar7 + 1);\n      pcVar6 = strcpy(pcVar6,hint_text);\n      goto LAB_0008d5c8;\n    }\n    if (state == 0) goto LAB_0008d218;\n    iVar5 = command_word_completion_function::local_index + 1;\n    ppcVar9 = command_word_completion_function::glob_matches +\n              command_word_completion_function::local_index;\n  }" { (labeled_statement "LAB_0008d390:\n    pcVar6 = command_word_completion_function::hint;" statement_identifier : (expression_statement "pcVar6 = command_word_completion_function::hint;" (assignment_expression "pcVar6 = command_word_completion_function" identifier = identifier) (ERROR "::hint" : : identifier) ;)) (expression_statement "iVar12 = command_word_completion_function::igncase;" (assignment_expression "iVar12 = command_word_completion_function" identifier = identifier) (ERROR "::igncase" : : identifier) ;) (expression_statement "iVar5 = command_word_completion_function::hint_len;" (assignment_expression "iVar5 = 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) ;) (expression_statement "iVar11 = command_word_completion_function::local_index;" (assignment_expression "iVar11 = command_word_completion_function" identifier = identifier) (ERROR "::local_index" : : identifier) ;) (if_statement "if (command_word_completion_function::mapping_over == 1) {\nLAB_0008d960:\n      do {\n        pcVar8 = word_token_alist[iVar11].word;\n        if (pcVar8 == (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          iVar12 = command_word_completion_function::igncase;\n          ppSVar3 = command_word_completion_function::varlist;\n          goto LAB_0008d840;\n        }\n        iVar11 = iVar11 + 1;\n        command_word_completion_function::local_index = iVar11;\n      } while ((iVar5 != 0) &&\n              ((*pcVar8 != *pcVar6 || (iVar12 = strncmp(pcVar8,pcVar6,iVar5), iVar12 != 0))));\nLAB_0008d451:\n      sVar7 = strlen(pcVar8);\n      pcVar6 = (char *)xmalloc(sVar7 + 1);\n      pcVar6 = strcpy(pcVar6,pcVar8);\n      goto LAB_0008d5c8;\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_0008d960:\n      do {\n        pcVar8 = word_token_alist[iVar11].word;\n        if (pcVar8 == (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          iVar12 = command_word_completion_function::igncase;\n          ppSVar3 = command_word_completion_function::varlist;\n          goto LAB_0008d840;\n        }\n        iVar11 = iVar11 + 1;\n        command_word_completion_function::local_index = iVar11;\n      } while ((iVar5 != 0) &&\n              ((*pcVar8 != *pcVar6 || (iVar12 = strncmp(pcVar8,pcVar6,iVar5), iVar12 != 0))));\nLAB_0008d451:\n      sVar7 = strlen(pcVar8);\n      pcVar6 = (char *)xmalloc(sVar7 + 1);\n      pcVar6 = strcpy(pcVar6,pcVar8);\n      goto LAB_0008d5c8;\n    }" { (labeled_statement "LAB_0008d960:\n      do {\n        pcVar8 = word_token_alist[iVar11].word;\n        if (pcVar8 == (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          iVar12 = command_word_completion_function::igncase;\n          ppSVar3 = command_word_completion_function::varlist;\n          goto LAB_0008d840;\n        }\n        iVar11 = iVar11 + 1;\n        command_word_completion_function::local_index = iVar11;\n      } while ((iVar5 != 0) &&\n              ((*pcVar8 != *pcVar6 || (iVar12 = strncmp(pcVar8,pcVar6,iVar5), iVar12 != 0))));" statement_identifier : (do_statement "do {\n        pcVar8 = word_token_alist[iVar11].word;\n        if (pcVar8 == (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          iVar12 = command_word_completion_function::igncase;\n          ppSVar3 = command_word_completion_function::varlist;\n          goto LAB_0008d840;\n        }\n        iVar11 = iVar11 + 1;\n        command_word_completion_function::local_index = iVar11;\n      } while ((iVar5 != 0) &&\n              ((*pcVar8 != *pcVar6 || (iVar12 = strncmp(pcVar8,pcVar6,iVar5), iVar12 != 0))));" do (compound_statement "{\n        pcVar8 = word_token_alist[iVar11].word;\n        if (pcVar8 == (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          iVar12 = command_word_completion_function::igncase;\n          ppSVar3 = command_word_completion_function::varlist;\n          goto LAB_0008d840;\n        }\n        iVar11 = iVar11 + 1;\n        command_word_completion_function::local_index = iVar11;\n      }" { (expression_statement "pcVar8 = word_token_alist[iVar11].word;" (assignment_expression "pcVar8 = word_token_alist[iVar11].word" identifier = (field_expression "word_token_alist[iVar11].word" (subscript_expression "word_token_alist[iVar11]" identifier [ identifier ]) . field_identifier)) ;) (if_statement "if (pcVar8 == (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          iVar12 = command_word_completion_function::igncase;\n          ppSVar3 = command_word_completion_function::varlist;\n          goto LAB_0008d840;\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          command_word_completion_function::local_index = 0;\n          command_word_completion_function::mapping_over =\n               command_word_completion_function::mapping_over + 1;\n          iVar12 = command_word_completion_function::igncase;\n          ppSVar3 = command_word_completion_function::varlist;\n          goto LAB_0008d840;\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) ;)) (expression_statement "iVar12 = command_word_completion_function::igncase;" (assignment_expression "iVar12 = command_word_completion_function" identifier = identifier) (ERROR "::igncase" : : identifier) ;) (expression_statement "ppSVar3 = command_word_completion_function::varlist;" (assignment_expression "ppSVar3 = command_word_completion_function" identifier = identifier) (ERROR "::varlist" : : identifier) ;) (goto_statement "goto LAB_0008d840;" goto statement_identifier ;) })) (expression_statement "iVar11 = iVar11 + 1;" (assignment_expression "iVar11 = iVar11 + 1" identifier = (binary_expression "iVar11 + 1" identifier + number_literal)) ;) (labeled_statement "command_word_completion_function::local_index = iVar11;" statement_identifier : (ERROR ":" :) (expression_statement "local_index = iVar11;" (assignment_expression "local_index = iVar11" identifier = identifier) ;)) }) while (parenthesized_expression "((iVar5 != 0) &&\n              ((*pcVar8 != *pcVar6 || (iVar12 = strncmp(pcVar8,pcVar6,iVar5), iVar12 != 0))))" ( (binary_expression "(iVar5 != 0) &&\n              ((*pcVar8 != *pcVar6 || (iVar12 = strncmp(pcVar8,pcVar6,iVar5), iVar12 != 0)))" (parenthesized_expression "(iVar5 != 0)" ( (binary_expression "iVar5 != 0" identifier != number_literal) )) && (parenthesized_expression "((*pcVar8 != *pcVar6 || (iVar12 = strncmp(pcVar8,pcVar6,iVar5), iVar12 != 0)))" ( (parenthesized_expression "(*pcVar8 != *pcVar6 || (iVar12 = strncmp(pcVar8,pcVar6,iVar5), iVar12 != 0))" ( (binary_expression "*pcVar8 != *pcVar6 || (iVar12 = strncmp(pcVar8,pcVar6,iVar5), iVar12 != 0)" (binary_expression "*pcVar8 != *pcVar6" (pointer_expression "*pcVar8" * identifier) != (pointer_expression "*pcVar6" * identifier)) || (parenthesized_expression "(iVar12 = strncmp(pcVar8,pcVar6,iVar5), iVar12 != 0)" ( (comma_expression "iVar12 = strncmp(pcVar8,pcVar6,iVar5), iVar12 != 0" (assignment_expression "iVar12 = strncmp(pcVar8,pcVar6,iVar5)" identifier = (call_expression "strncmp(pcVar8,pcVar6,iVar5)" identifier (argument_list "(pcVar8,pcVar6,iVar5)" ( identifier , identifier , identifier )))) , (binary_expression "iVar12 != 0" identifier != number_literal)) ))) )) ))) )) ;)) (labeled_statement "LAB_0008d451:\n      sVar7 = strlen(pcVar8);" statement_identifier : (expression_statement "sVar7 = strlen(pcVar8);" (assignment_expression "sVar7 = strlen(pcVar8)" identifier = (call_expression "strlen(pcVar8)" identifier (argument_list "(pcVar8)" ( identifier )))) ;)) (expression_statement "pcVar6 = (char *)xmalloc(sVar7 + 1);" (assignment_expression "pcVar6 = (char *)xmalloc(sVar7 + 1)" identifier = (cast_expression "(char *)xmalloc(sVar7 + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(sVar7 + 1)" identifier (argument_list "(sVar7 + 1)" ( (binary_expression "sVar7 + 1" identifier + number_literal) ))))) ;) (expression_statement "pcVar6 = strcpy(pcVar6,pcVar8);" (assignment_expression "pcVar6 = strcpy(pcVar6,pcVar8)" identifier = (call_expression "strcpy(pcVar6,pcVar8)" identifier (argument_list "(pcVar6,pcVar8)" ( identifier , identifier )))) ;) (goto_statement "goto LAB_0008d5c8;" goto statement_identifier ;) })) (if_statement "if (command_word_completion_function::mapping_over < 2) {\n      if (command_word_completion_function::mapping_over == 0) {\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::mapping_over = 1;\n              iVar11 = 0;\n              goto LAB_0008d960;\n            }\n            command_word_completion_function::local_index =\n                 command_word_completion_function::local_index + 1;\n            pcVar8 = paVar2->name;\n            if (iVar12 != 0) break;\n            if ((iVar5 == 0) ||\n               ((*pcVar8 == *pcVar6 && (iVar11 = strncmp(pcVar8,pcVar6,iVar5), iVar11 == 0))))\n            goto LAB_0008d451;\n          }\n          iVar11 = strncasecmp(pcVar8,pcVar6,iVar5);\n        } while (iVar11 != 0);\n        goto LAB_0008d451;\n      }\n    }\n    else {\n      ppSVar3 = command_word_completion_function::varlist;\n      if (command_word_completion_function::mapping_over == 2) {\nLAB_0008d840:\n        do {\n          if ((ppSVar3 == (SHELL_VAR **)0x0) ||\n             (ppSVar1 = ppSVar3 + command_word_completion_function::local_index,\n             *ppSVar1 == (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_0008d3bd;\n          }\n          command_word_completion_function::local_index =\n               command_word_completion_function::local_index + 1;\n          pcVar8 = (*ppSVar1)->name;\n          if (iVar12 == 0) {\n            if ((iVar5 == 0) ||\n               ((*pcVar8 == *pcVar6 && (iVar11 = strncmp(pcVar8,pcVar6,iVar5), iVar11 == 0))))\n            break;\n            goto LAB_0008d840;\n          }\n          iVar11 = strncasecmp(pcVar8,pcVar6,iVar5);\n        } while (iVar11 != 0);\n        sVar7 = strlen(pcVar8);\n        pcVar6 = (char *)xmalloc(sVar7 + 1);\n        pcVar6 = strcpy(pcVar6,pcVar8);\n        goto LAB_0008d5c8;\n      }\n      if (command_word_completion_function::mapping_over == 3) {\nLAB_0008d3bd:\n        pcVar6 = command_word_completion_function::hint;\n        iVar12 = command_word_completion_function::hint_len;\n        iVar5 = num_shell_builtins;\n        if (command_word_completion_function::local_index < num_shell_builtins) {\n          pbVar15 = shell_builtins + command_word_completion_function::local_index;\n          do {\n            iVar11 = command_word_completion_function::local_index;\n            if (((pbVar15->function != (sh_builtin_func_t *)0x0) && ((pbVar15->flags & 1) != 0)) &&\n               ((pcVar8 = pbVar15->name, iVar12 == 0 ||\n                ((*pcVar8 == *pcVar6 && (iVar10 = strncmp(pcVar8,pcVar6,iVar12), iVar10 == 0)))))) {\n              command_word_completion_function::local_index = iVar11 + 1;\n              goto LAB_0008d451;\n            }\n            command_word_completion_function::local_index = iVar11 + 1;\n            pbVar15 = pbVar15 + 1;\n          } while (command_word_completion_function::local_index != iVar5);\n        }\n        command_word_completion_function::mapping_over =\n             command_word_completion_function::mapping_over + 1;\n        command_word_completion_function::local_index = 0;\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        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::mapping_over = 1;\n              iVar11 = 0;\n              goto LAB_0008d960;\n            }\n            command_word_completion_function::local_index =\n                 command_word_completion_function::local_index + 1;\n            pcVar8 = paVar2->name;\n            if (iVar12 != 0) break;\n            if ((iVar5 == 0) ||\n               ((*pcVar8 == *pcVar6 && (iVar11 = strncmp(pcVar8,pcVar6,iVar5), iVar11 == 0))))\n            goto LAB_0008d451;\n          }\n          iVar11 = strncasecmp(pcVar8,pcVar6,iVar5);\n        } while (iVar11 != 0);\n        goto LAB_0008d451;\n      }\n    }" { (if_statement "if (command_word_completion_function::mapping_over == 0) {\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::mapping_over = 1;\n              iVar11 = 0;\n              goto LAB_0008d960;\n            }\n            command_word_completion_function::local_index =\n                 command_word_completion_function::local_index + 1;\n            pcVar8 = paVar2->name;\n            if (iVar12 != 0) break;\n            if ((iVar5 == 0) ||\n               ((*pcVar8 == *pcVar6 && (iVar11 = strncmp(pcVar8,pcVar6,iVar5), iVar11 == 0))))\n            goto LAB_0008d451;\n          }\n          iVar11 = strncasecmp(pcVar8,pcVar6,iVar5);\n        } while (iVar11 != 0);\n        goto LAB_0008d451;\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        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::mapping_over = 1;\n              iVar11 = 0;\n              goto LAB_0008d960;\n            }\n            command_word_completion_function::local_index =\n                 command_word_completion_function::local_index + 1;\n            pcVar8 = paVar2->name;\n            if (iVar12 != 0) break;\n            if ((iVar5 == 0) ||\n               ((*pcVar8 == *pcVar6 && (iVar11 = strncmp(pcVar8,pcVar6,iVar5), iVar11 == 0))))\n            goto LAB_0008d451;\n          }\n          iVar11 = strncasecmp(pcVar8,pcVar6,iVar5);\n        } while (iVar11 != 0);\n        goto LAB_0008d451;\n      }" { (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::mapping_over = 1;\n              iVar11 = 0;\n              goto LAB_0008d960;\n            }\n            command_word_completion_function::local_index =\n                 command_word_completion_function::local_index + 1;\n            pcVar8 = paVar2->name;\n            if (iVar12 != 0) break;\n            if ((iVar5 == 0) ||\n               ((*pcVar8 == *pcVar6 && (iVar11 = strncmp(pcVar8,pcVar6,iVar5), iVar11 == 0))))\n            goto LAB_0008d451;\n          }\n          iVar11 = strncasecmp(pcVar8,pcVar6,iVar5);\n        } while (iVar11 != 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::mapping_over = 1;\n              iVar11 = 0;\n              goto LAB_0008d960;\n            }\n            command_word_completion_function::local_index =\n                 command_word_completion_function::local_index + 1;\n            pcVar8 = paVar2->name;\n            if (iVar12 != 0) break;\n            if ((iVar5 == 0) ||\n               ((*pcVar8 == *pcVar6 && (iVar11 = strncmp(pcVar8,pcVar6,iVar5), iVar11 == 0))))\n            goto LAB_0008d451;\n          }\n          iVar11 = strncasecmp(pcVar8,pcVar6,iVar5);\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::mapping_over = 1;\n              iVar11 = 0;\n              goto LAB_0008d960;\n            }\n            command_word_completion_function::local_index =\n                 command_word_completion_function::local_index + 1;\n            pcVar8 = paVar2->name;\n            if (iVar12 != 0) break;\n            if ((iVar5 == 0) ||\n               ((*pcVar8 == *pcVar6 && (iVar11 = strncmp(pcVar8,pcVar6,iVar5), iVar11 == 0))))\n            goto LAB_0008d451;\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::mapping_over = 1;\n              iVar11 = 0;\n              goto LAB_0008d960;\n            }\n            command_word_completion_function::local_index =\n                 command_word_completion_function::local_index + 1;\n            pcVar8 = paVar2->name;\n            if (iVar12 != 0) break;\n            if ((iVar5 == 0) ||\n               ((*pcVar8 == *pcVar6 && (iVar11 = strncmp(pcVar8,pcVar6,iVar5), iVar11 == 0))))\n            goto LAB_0008d451;\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::mapping_over = 1;\n              iVar11 = 0;\n              goto LAB_0008d960;\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::mapping_over = 1;\n              iVar11 = 0;\n              goto LAB_0008d960;\n            }" { (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) ;)) (expression_statement "iVar11 = 0;" (assignment_expression "iVar11 = 0" identifier = number_literal) ;) (goto_statement "goto LAB_0008d960;" 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 "pcVar8 = paVar2->name;" (assignment_expression "pcVar8 = paVar2->name" identifier = (field_expression "paVar2->name" identifier -> field_identifier)) ;) (if_statement "if (iVar12 != 0) break;" if (parenthesized_expression "(iVar12 != 0)" ( (binary_expression "iVar12 != 0" identifier != number_literal) )) (break_statement "break;" break ;)) (if_statement "if ((iVar5 == 0) ||\n               ((*pcVar8 == *pcVar6 && (iVar11 = strncmp(pcVar8,pcVar6,iVar5), iVar11 == 0))))\n            goto LAB_0008d451;" if (parenthesized_expression "((iVar5 == 0) ||\n               ((*pcVar8 == *pcVar6 && (iVar11 = strncmp(pcVar8,pcVar6,iVar5), iVar11 == 0))))" ( (binary_expression "(iVar5 == 0) ||\n               ((*pcVar8 == *pcVar6 && (iVar11 = strncmp(pcVar8,pcVar6,iVar5), iVar11 == 0)))" (parenthesized_expression "(iVar5 == 0)" ( (binary_expression "iVar5 == 0" identifier == number_literal) )) || (parenthesized_expression "((*pcVar8 == *pcVar6 && (iVar11 = strncmp(pcVar8,pcVar6,iVar5), iVar11 == 0)))" ( (parenthesized_expression "(*pcVar8 == *pcVar6 && (iVar11 = strncmp(pcVar8,pcVar6,iVar5), iVar11 == 0))" ( (binary_expression "*pcVar8 == *pcVar6 && (iVar11 = strncmp(pcVar8,pcVar6,iVar5), iVar11 == 0)" (binary_expression "*pcVar8 == *pcVar6" (pointer_expression "*pcVar8" * identifier) == (pointer_expression "*pcVar6" * identifier)) && (parenthesized_expression "(iVar11 = strncmp(pcVar8,pcVar6,iVar5), iVar11 == 0)" ( (comma_expression "iVar11 = strncmp(pcVar8,pcVar6,iVar5), iVar11 == 0" (assignment_expression "iVar11 = strncmp(pcVar8,pcVar6,iVar5)" identifier = (call_expression "strncmp(pcVar8,pcVar6,iVar5)" identifier (argument_list "(pcVar8,pcVar6,iVar5)" ( identifier , identifier , identifier )))) , (binary_expression "iVar11 == 0" identifier == number_literal)) ))) )) ))) )) (goto_statement "goto LAB_0008d451;" goto statement_identifier ;)) })) (expression_statement "iVar11 = strncasecmp(pcVar8,pcVar6,iVar5);" (assignment_expression "iVar11 = strncasecmp(pcVar8,pcVar6,iVar5)" identifier = (call_expression "strncasecmp(pcVar8,pcVar6,iVar5)" identifier (argument_list "(pcVar8,pcVar6,iVar5)" ( identifier , identifier , identifier )))) ;) }) while (parenthesized_expression "(iVar11 != 0)" ( (binary_expression "iVar11 != 0" identifier != number_literal) )) ;) (goto_statement "goto LAB_0008d451;" goto statement_identifier ;) })) }) (else_clause "else {\n      ppSVar3 = command_word_completion_function::varlist;\n      if (command_word_completion_function::mapping_over == 2) {\nLAB_0008d840:\n        do {\n          if ((ppSVar3 == (SHELL_VAR **)0x0) ||\n             (ppSVar1 = ppSVar3 + command_word_completion_function::local_index,\n             *ppSVar1 == (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_0008d3bd;\n          }\n          command_word_completion_function::local_index =\n               command_word_completion_function::local_index + 1;\n          pcVar8 = (*ppSVar1)->name;\n          if (iVar12 == 0) {\n            if ((iVar5 == 0) ||\n               ((*pcVar8 == *pcVar6 && (iVar11 = strncmp(pcVar8,pcVar6,iVar5), iVar11 == 0))))\n            break;\n            goto LAB_0008d840;\n          }\n          iVar11 = strncasecmp(pcVar8,pcVar6,iVar5);\n        } while (iVar11 != 0);\n        sVar7 = strlen(pcVar8);\n        pcVar6 = (char *)xmalloc(sVar7 + 1);\n        pcVar6 = strcpy(pcVar6,pcVar8);\n        goto LAB_0008d5c8;\n      }\n      if (command_word_completion_function::mapping_over == 3) {\nLAB_0008d3bd:\n        pcVar6 = command_word_completion_function::hint;\n        iVar12 = command_word_completion_function::hint_len;\n        iVar5 = num_shell_builtins;\n        if (command_word_completion_function::local_index < num_shell_builtins) {\n          pbVar15 = shell_builtins + command_word_completion_function::local_index;\n          do {\n            iVar11 = command_word_completion_function::local_index;\n            if (((pbVar15->function != (sh_builtin_func_t *)0x0) && ((pbVar15->flags & 1) != 0)) &&\n               ((pcVar8 = pbVar15->name, iVar12 == 0 ||\n                ((*pcVar8 == *pcVar6 && (iVar10 = strncmp(pcVar8,pcVar6,iVar12), iVar10 == 0)))))) {\n              command_word_completion_function::local_index = iVar11 + 1;\n              goto LAB_0008d451;\n            }\n            command_word_completion_function::local_index = iVar11 + 1;\n            pbVar15 = pbVar15 + 1;\n          } while (command_word_completion_function::local_index != iVar5);\n        }\n        command_word_completion_function::mapping_over =\n             command_word_completion_function::mapping_over + 1;\n        command_word_completion_function::local_index = 0;\n      }\n    }" else (compound_statement "{\n      ppSVar3 = command_word_completion_function::varlist;\n      if (command_word_completion_function::mapping_over == 2) {\nLAB_0008d840:\n        do {\n          if ((ppSVar3 == (SHELL_VAR **)0x0) ||\n             (ppSVar1 = ppSVar3 + command_word_completion_function::local_index,\n             *ppSVar1 == (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_0008d3bd;\n          }\n          command_word_completion_function::local_index =\n               command_word_completion_function::local_index + 1;\n          pcVar8 = (*ppSVar1)->name;\n          if (iVar12 == 0) {\n            if ((iVar5 == 0) ||\n               ((*pcVar8 == *pcVar6 && (iVar11 = strncmp(pcVar8,pcVar6,iVar5), iVar11 == 0))))\n            break;\n            goto LAB_0008d840;\n          }\n          iVar11 = strncasecmp(pcVar8,pcVar6,iVar5);\n        } while (iVar11 != 0);\n        sVar7 = strlen(pcVar8);\n        pcVar6 = (char *)xmalloc(sVar7 + 1);\n        pcVar6 = strcpy(pcVar6,pcVar8);\n        goto LAB_0008d5c8;\n      }\n      if (command_word_completion_function::mapping_over == 3) {\nLAB_0008d3bd:\n        pcVar6 = command_word_completion_function::hint;\n        iVar12 = command_word_completion_function::hint_len;\n        iVar5 = num_shell_builtins;\n        if (command_word_completion_function::local_index < num_shell_builtins) {\n          pbVar15 = shell_builtins + command_word_completion_function::local_index;\n          do {\n            iVar11 = command_word_completion_function::local_index;\n            if (((pbVar15->function != (sh_builtin_func_t *)0x0) && ((pbVar15->flags & 1) != 0)) &&\n               ((pcVar8 = pbVar15->name, iVar12 == 0 ||\n                ((*pcVar8 == *pcVar6 && (iVar10 = strncmp(pcVar8,pcVar6,iVar12), iVar10 == 0)))))) {\n              command_word_completion_function::local_index = iVar11 + 1;\n              goto LAB_0008d451;\n            }\n            command_word_completion_function::local_index = iVar11 + 1;\n            pbVar15 = pbVar15 + 1;\n          } while (command_word_completion_function::local_index != iVar5);\n        }\n        command_word_completion_function::mapping_over =\n             command_word_completion_function::mapping_over + 1;\n        command_word_completion_function::local_index = 0;\n      }\n    }" { (expression_statement "ppSVar3 = command_word_completion_function::varlist;" (assignment_expression "ppSVar3 = command_word_completion_function" identifier = identifier) (ERROR "::varlist" : : identifier) ;) (if_statement "if (command_word_completion_function::mapping_over == 2) {\nLAB_0008d840:\n        do {\n          if ((ppSVar3 == (SHELL_VAR **)0x0) ||\n             (ppSVar1 = ppSVar3 + command_word_completion_function::local_index,\n             *ppSVar1 == (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_0008d3bd;\n          }\n          command_word_completion_function::local_index =\n               command_word_completion_function::local_index + 1;\n          pcVar8 = (*ppSVar1)->name;\n          if (iVar12 == 0) {\n            if ((iVar5 == 0) ||\n               ((*pcVar8 == *pcVar6 && (iVar11 = strncmp(pcVar8,pcVar6,iVar5), iVar11 == 0))))\n            break;\n            goto LAB_0008d840;\n          }\n          iVar11 = strncasecmp(pcVar8,pcVar6,iVar5);\n        } while (iVar11 != 0);\n        sVar7 = strlen(pcVar8);\n        pcVar6 = (char *)xmalloc(sVar7 + 1);\n        pcVar6 = strcpy(pcVar6,pcVar8);\n        goto LAB_0008d5c8;\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_0008d840:\n        do {\n          if ((ppSVar3 == (SHELL_VAR **)0x0) ||\n             (ppSVar1 = ppSVar3 + command_word_completion_function::local_index,\n             *ppSVar1 == (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_0008d3bd;\n          }\n          command_word_completion_function::local_index =\n               command_word_completion_function::local_index + 1;\n          pcVar8 = (*ppSVar1)->name;\n          if (iVar12 == 0) {\n            if ((iVar5 == 0) ||\n               ((*pcVar8 == *pcVar6 && (iVar11 = strncmp(pcVar8,pcVar6,iVar5), iVar11 == 0))))\n            break;\n            goto LAB_0008d840;\n          }\n          iVar11 = strncasecmp(pcVar8,pcVar6,iVar5);\n        } while (iVar11 != 0);\n        sVar7 = strlen(pcVar8);\n        pcVar6 = (char *)xmalloc(sVar7 + 1);\n        pcVar6 = strcpy(pcVar6,pcVar8);\n        goto LAB_0008d5c8;\n      }" { (labeled_statement "LAB_0008d840:\n        do {\n          if ((ppSVar3 == (SHELL_VAR **)0x0) ||\n             (ppSVar1 = ppSVar3 + command_word_completion_function::local_index,\n             *ppSVar1 == (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_0008d3bd;\n          }\n          command_word_completion_function::local_index =\n               command_word_completion_function::local_index + 1;\n          pcVar8 = (*ppSVar1)->name;\n          if (iVar12 == 0) {\n            if ((iVar5 == 0) ||\n               ((*pcVar8 == *pcVar6 && (iVar11 = strncmp(pcVar8,pcVar6,iVar5), iVar11 == 0))))\n            break;\n            goto LAB_0008d840;\n          }\n          iVar11 = strncasecmp(pcVar8,pcVar6,iVar5);\n        } while (iVar11 != 0);" statement_identifier : (do_statement "do {\n          if ((ppSVar3 == (SHELL_VAR **)0x0) ||\n             (ppSVar1 = ppSVar3 + command_word_completion_function::local_index,\n             *ppSVar1 == (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_0008d3bd;\n          }\n          command_word_completion_function::local_index =\n               command_word_completion_function::local_index + 1;\n          pcVar8 = (*ppSVar1)->name;\n          if (iVar12 == 0) {\n            if ((iVar5 == 0) ||\n               ((*pcVar8 == *pcVar6 && (iVar11 = strncmp(pcVar8,pcVar6,iVar5), iVar11 == 0))))\n            break;\n            goto LAB_0008d840;\n          }\n          iVar11 = strncasecmp(pcVar8,pcVar6,iVar5);\n        } while (iVar11 != 0);" do (compound_statement "{\n          if ((ppSVar3 == (SHELL_VAR **)0x0) ||\n             (ppSVar1 = ppSVar3 + command_word_completion_function::local_index,\n             *ppSVar1 == (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_0008d3bd;\n          }\n          command_word_completion_function::local_index =\n               command_word_completion_function::local_index + 1;\n          pcVar8 = (*ppSVar1)->name;\n          if (iVar12 == 0) {\n            if ((iVar5 == 0) ||\n               ((*pcVar8 == *pcVar6 && (iVar11 = strncmp(pcVar8,pcVar6,iVar5), iVar11 == 0))))\n            break;\n            goto LAB_0008d840;\n          }\n          iVar11 = strncasecmp(pcVar8,pcVar6,iVar5);\n        }" { (if_statement "if ((ppSVar3 == (SHELL_VAR **)0x0) ||\n             (ppSVar1 = ppSVar3 + command_word_completion_function::local_index,\n             *ppSVar1 == (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_0008d3bd;\n          }" if (parenthesized_expression "((ppSVar3 == (SHELL_VAR **)0x0) ||\n             (ppSVar1 = ppSVar3 + command_word_completion_function::local_index,\n             *ppSVar1 == (SHELL_VAR *)0x0))" ( (binary_expression "(ppSVar3 == (SHELL_VAR **)0x0) ||\n             (ppSVar1 = ppSVar3 + command_word_completion_function::local_index,\n             *ppSVar1 == (SHELL_VAR *)0x0)" (parenthesized_expression "(ppSVar3 == (SHELL_VAR **)0x0)" ( (binary_expression "ppSVar3 == (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 "(ppSVar1 = ppSVar3 + command_word_completion_function::local_index,\n             *ppSVar1 == (SHELL_VAR *)0x0)" ( (comma_expression "ppSVar1 = ppSVar3 + command_word_completion_function::local_index,\n             *ppSVar1 == (SHELL_VAR *)0x0" (assignment_expression "ppSVar1 = ppSVar3 + command_word_completion_function" identifier = (binary_expression "ppSVar3 + command_word_completion_function" identifier + identifier)) (ERROR "::local_index" : : identifier) , (binary_expression "*ppSVar1 == (SHELL_VAR *)0x0" (pointer_expression "*ppSVar1" * 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_0008d3bd;\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_0008d3bd;" 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 "pcVar8 = (*ppSVar1)->name;" (assignment_expression "pcVar8 = (*ppSVar1)->name" identifier = (field_expression "(*ppSVar1)->name" (parenthesized_expression "(*ppSVar1)" ( (pointer_expression "*ppSVar1" * identifier) )) -> field_identifier)) ;) (if_statement "if (iVar12 == 0) {\n            if ((iVar5 == 0) ||\n               ((*pcVar8 == *pcVar6 && (iVar11 = strncmp(pcVar8,pcVar6,iVar5), iVar11 == 0))))\n            break;\n            goto LAB_0008d840;\n          }" if (parenthesized_expression "(iVar12 == 0)" ( (binary_expression "iVar12 == 0" identifier == number_literal) )) (compound_statement "{\n            if ((iVar5 == 0) ||\n               ((*pcVar8 == *pcVar6 && (iVar11 = strncmp(pcVar8,pcVar6,iVar5), iVar11 == 0))))\n            break;\n            goto LAB_0008d840;\n          }" { (if_statement "if ((iVar5 == 0) ||\n               ((*pcVar8 == *pcVar6 && (iVar11 = strncmp(pcVar8,pcVar6,iVar5), iVar11 == 0))))\n            break;" if (parenthesized_expression "((iVar5 == 0) ||\n               ((*pcVar8 == *pcVar6 && (iVar11 = strncmp(pcVar8,pcVar6,iVar5), iVar11 == 0))))" ( (binary_expression "(iVar5 == 0) ||\n               ((*pcVar8 == *pcVar6 && (iVar11 = strncmp(pcVar8,pcVar6,iVar5), iVar11 == 0)))" (parenthesized_expression "(iVar5 == 0)" ( (binary_expression "iVar5 == 0" identifier == number_literal) )) || (parenthesized_expression "((*pcVar8 == *pcVar6 && (iVar11 = strncmp(pcVar8,pcVar6,iVar5), iVar11 == 0)))" ( (parenthesized_expression "(*pcVar8 == *pcVar6 && (iVar11 = strncmp(pcVar8,pcVar6,iVar5), iVar11 == 0))" ( (binary_expression "*pcVar8 == *pcVar6 && (iVar11 = strncmp(pcVar8,pcVar6,iVar5), iVar11 == 0)" (binary_expression "*pcVar8 == *pcVar6" (pointer_expression "*pcVar8" * identifier) == (pointer_expression "*pcVar6" * identifier)) && (parenthesized_expression "(iVar11 = strncmp(pcVar8,pcVar6,iVar5), iVar11 == 0)" ( (comma_expression "iVar11 = strncmp(pcVar8,pcVar6,iVar5), iVar11 == 0" (assignment_expression "iVar11 = strncmp(pcVar8,pcVar6,iVar5)" identifier = (call_expression "strncmp(pcVar8,pcVar6,iVar5)" identifier (argument_list "(pcVar8,pcVar6,iVar5)" ( identifier , identifier , identifier )))) , (binary_expression "iVar11 == 0" identifier == number_literal)) ))) )) ))) )) (break_statement "break;" break ;)) (goto_statement "goto LAB_0008d840;" goto statement_identifier ;) })) (expression_statement "iVar11 = strncasecmp(pcVar8,pcVar6,iVar5);" (assignment_expression "iVar11 = strncasecmp(pcVar8,pcVar6,iVar5)" identifier = (call_expression "strncasecmp(pcVar8,pcVar6,iVar5)" identifier (argument_list "(pcVar8,pcVar6,iVar5)" ( identifier , identifier , identifier )))) ;) }) while (parenthesized_expression "(iVar11 != 0)" ( (binary_expression "iVar11 != 0" identifier != number_literal) )) ;)) (expression_statement "sVar7 = strlen(pcVar8);" (assignment_expression "sVar7 = strlen(pcVar8)" identifier = (call_expression "strlen(pcVar8)" identifier (argument_list "(pcVar8)" ( identifier )))) ;) (expression_statement "pcVar6 = (char *)xmalloc(sVar7 + 1);" (assignment_expression "pcVar6 = (char *)xmalloc(sVar7 + 1)" identifier = (cast_expression "(char *)xmalloc(sVar7 + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(sVar7 + 1)" identifier (argument_list "(sVar7 + 1)" ( (binary_expression "sVar7 + 1" identifier + number_literal) ))))) ;) (expression_statement "pcVar6 = strcpy(pcVar6,pcVar8);" (assignment_expression "pcVar6 = strcpy(pcVar6,pcVar8)" identifier = (call_expression "strcpy(pcVar6,pcVar8)" identifier (argument_list "(pcVar6,pcVar8)" ( identifier , identifier )))) ;) (goto_statement "goto LAB_0008d5c8;" goto statement_identifier ;) })) (if_statement "if (command_word_completion_function::mapping_over == 3) {\nLAB_0008d3bd:\n        pcVar6 = command_word_completion_function::hint;\n        iVar12 = command_word_completion_function::hint_len;\n        iVar5 = num_shell_builtins;\n        if (command_word_completion_function::local_index < num_shell_builtins) {\n          pbVar15 = shell_builtins + command_word_completion_function::local_index;\n          do {\n            iVar11 = command_word_completion_function::local_index;\n            if (((pbVar15->function != (sh_builtin_func_t *)0x0) && ((pbVar15->flags & 1) != 0)) &&\n               ((pcVar8 = pbVar15->name, iVar12 == 0 ||\n                ((*pcVar8 == *pcVar6 && (iVar10 = strncmp(pcVar8,pcVar6,iVar12), iVar10 == 0)))))) {\n              command_word_completion_function::local_index = iVar11 + 1;\n              goto LAB_0008d451;\n            }\n            command_word_completion_function::local_index = iVar11 + 1;\n            pbVar15 = pbVar15 + 1;\n          } while (command_word_completion_function::local_index != iVar5);\n        }\n        command_word_completion_function::mapping_over =\n             command_word_completion_function::mapping_over + 1;\n        command_word_completion_function::local_index = 0;\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_0008d3bd:\n        pcVar6 = command_word_completion_function::hint;\n        iVar12 = command_word_completion_function::hint_len;\n        iVar5 = num_shell_builtins;\n        if (command_word_completion_function::local_index < num_shell_builtins) {\n          pbVar15 = shell_builtins + command_word_completion_function::local_index;\n          do {\n            iVar11 = command_word_completion_function::local_index;\n            if (((pbVar15->function != (sh_builtin_func_t *)0x0) && ((pbVar15->flags & 1) != 0)) &&\n               ((pcVar8 = pbVar15->name, iVar12 == 0 ||\n                ((*pcVar8 == *pcVar6 && (iVar10 = strncmp(pcVar8,pcVar6,iVar12), iVar10 == 0)))))) {\n              command_word_completion_function::local_index = iVar11 + 1;\n              goto LAB_0008d451;\n            }\n            command_word_completion_function::local_index = iVar11 + 1;\n            pbVar15 = pbVar15 + 1;\n          } while (command_word_completion_function::local_index != iVar5);\n        }\n        command_word_completion_function::mapping_over =\n             command_word_completion_function::mapping_over + 1;\n        command_word_completion_function::local_index = 0;\n      }" { (labeled_statement "LAB_0008d3bd:\n        pcVar6 = command_word_completion_function::hint;" statement_identifier : (expression_statement "pcVar6 = command_word_completion_function::hint;" (assignment_expression "pcVar6 = command_word_completion_function" identifier = identifier) (ERROR "::hint" : : identifier) ;)) (expression_statement "iVar12 = command_word_completion_function::hint_len;" (assignment_expression "iVar12 = command_word_completion_function" identifier = identifier) (ERROR "::hint_len" : : identifier) ;) (expression_statement "iVar5 = num_shell_builtins;" (assignment_expression "iVar5 = num_shell_builtins" identifier = identifier) ;) (if_statement "if (command_word_completion_function::local_index < num_shell_builtins) {\n          pbVar15 = shell_builtins + command_word_completion_function::local_index;\n          do {\n            iVar11 = command_word_completion_function::local_index;\n            if (((pbVar15->function != (sh_builtin_func_t *)0x0) && ((pbVar15->flags & 1) != 0)) &&\n               ((pcVar8 = pbVar15->name, iVar12 == 0 ||\n                ((*pcVar8 == *pcVar6 && (iVar10 = strncmp(pcVar8,pcVar6,iVar12), iVar10 == 0)))))) {\n              command_word_completion_function::local_index = iVar11 + 1;\n              goto LAB_0008d451;\n            }\n            command_word_completion_function::local_index = iVar11 + 1;\n            pbVar15 = pbVar15 + 1;\n          } while (command_word_completion_function::local_index != iVar5);\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          pbVar15 = shell_builtins + command_word_completion_function::local_index;\n          do {\n            iVar11 = command_word_completion_function::local_index;\n            if (((pbVar15->function != (sh_builtin_func_t *)0x0) && ((pbVar15->flags & 1) != 0)) &&\n               ((pcVar8 = pbVar15->name, iVar12 == 0 ||\n                ((*pcVar8 == *pcVar6 && (iVar10 = strncmp(pcVar8,pcVar6,iVar12), iVar10 == 0)))))) {\n              command_word_completion_function::local_index = iVar11 + 1;\n              goto LAB_0008d451;\n            }\n            command_word_completion_function::local_index = iVar11 + 1;\n            pbVar15 = pbVar15 + 1;\n          } while (command_word_completion_function::local_index != iVar5);\n        }" { (expression_statement "pbVar15 = shell_builtins + command_word_completion_function::local_index;" (assignment_expression "pbVar15 = 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            iVar11 = command_word_completion_function::local_index;\n            if (((pbVar15->function != (sh_builtin_func_t *)0x0) && ((pbVar15->flags & 1) != 0)) &&\n               ((pcVar8 = pbVar15->name, iVar12 == 0 ||\n                ((*pcVar8 == *pcVar6 && (iVar10 = strncmp(pcVar8,pcVar6,iVar12), iVar10 == 0)))))) {\n              command_word_completion_function::local_index = iVar11 + 1;\n              goto LAB_0008d451;\n            }\n            command_word_completion_function::local_index = iVar11 + 1;\n            pbVar15 = pbVar15 + 1;\n          } while (command_word_completion_function::local_index != iVar5);" do (compound_statement "{\n            iVar11 = command_word_completion_function::local_index;\n            if (((pbVar15->function != (sh_builtin_func_t *)0x0) && ((pbVar15->flags & 1) != 0)) &&\n               ((pcVar8 = pbVar15->name, iVar12 == 0 ||\n                ((*pcVar8 == *pcVar6 && (iVar10 = strncmp(pcVar8,pcVar6,iVar12), iVar10 == 0)))))) {\n              command_word_completion_function::local_index = iVar11 + 1;\n              goto LAB_0008d451;\n            }\n            command_word_completion_function::local_index = iVar11 + 1;\n            pbVar15 = pbVar15 + 1;\n          }" { (expression_statement "iVar11 = command_word_completion_function::local_index;" (assignment_expression "iVar11 = command_word_completion_function" identifier = identifier) (ERROR "::local_index" : : identifier) ;) (if_statement "if (((pbVar15->function != (sh_builtin_func_t *)0x0) && ((pbVar15->flags & 1) != 0)) &&\n               ((pcVar8 = pbVar15->name, iVar12 == 0 ||\n                ((*pcVar8 == *pcVar6 && (iVar10 = strncmp(pcVar8,pcVar6,iVar12), iVar10 == 0)))))) {\n              command_word_completion_function::local_index = iVar11 + 1;\n              goto LAB_0008d451;\n            }" if (parenthesized_expression "(((pbVar15->function != (sh_builtin_func_t *)0x0) && ((pbVar15->flags & 1) != 0)) &&\n               ((pcVar8 = pbVar15->name, iVar12 == 0 ||\n                ((*pcVar8 == *pcVar6 && (iVar10 = strncmp(pcVar8,pcVar6,iVar12), iVar10 == 0))))))" ( (binary_expression "((pbVar15->function != (sh_builtin_func_t *)0x0) && ((pbVar15->flags & 1) != 0)) &&\n               ((pcVar8 = pbVar15->name, iVar12 == 0 ||\n                ((*pcVar8 == *pcVar6 && (iVar10 = strncmp(pcVar8,pcVar6,iVar12), iVar10 == 0)))))" (parenthesized_expression "((pbVar15->function != (sh_builtin_func_t *)0x0) && ((pbVar15->flags & 1) != 0))" ( (binary_expression "(pbVar15->function != (sh_builtin_func_t *)0x0) && ((pbVar15->flags & 1) != 0)" (parenthesized_expression "(pbVar15->function != (sh_builtin_func_t *)0x0)" ( (binary_expression "pbVar15->function != (sh_builtin_func_t *)0x0" (field_expression "pbVar15->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 "((pbVar15->flags & 1) != 0)" ( (binary_expression "(pbVar15->flags & 1) != 0" (parenthesized_expression "(pbVar15->flags & 1)" ( (binary_expression "pbVar15->flags & 1" (field_expression "pbVar15->flags" identifier -> field_identifier) & number_literal) )) != number_literal) ))) )) && (parenthesized_expression "((pcVar8 = pbVar15->name, iVar12 == 0 ||\n                ((*pcVar8 == *pcVar6 && (iVar10 = strncmp(pcVar8,pcVar6,iVar12), iVar10 == 0)))))" ( (parenthesized_expression "(pcVar8 = pbVar15->name, iVar12 == 0 ||\n                ((*pcVar8 == *pcVar6 && (iVar10 = strncmp(pcVar8,pcVar6,iVar12), iVar10 == 0))))" ( (comma_expression "pcVar8 = pbVar15->name, iVar12 == 0 ||\n                ((*pcVar8 == *pcVar6 && (iVar10 = strncmp(pcVar8,pcVar6,iVar12), iVar10 == 0)))" (assignment_expression "pcVar8 = pbVar15->name" identifier = (field_expression "pbVar15->name" identifier -> field_identifier)) , (binary_expression "iVar12 == 0 ||\n                ((*pcVar8 == *pcVar6 && (iVar10 = strncmp(pcVar8,pcVar6,iVar12), iVar10 == 0)))" (binary_expression "iVar12 == 0" identifier == number_literal) || (parenthesized_expression "((*pcVar8 == *pcVar6 && (iVar10 = strncmp(pcVar8,pcVar6,iVar12), iVar10 == 0)))" ( (parenthesized_expression "(*pcVar8 == *pcVar6 && (iVar10 = strncmp(pcVar8,pcVar6,iVar12), iVar10 == 0))" ( (binary_expression "*pcVar8 == *pcVar6 && (iVar10 = strncmp(pcVar8,pcVar6,iVar12), iVar10 == 0)" (binary_expression "*pcVar8 == *pcVar6" (pointer_expression "*pcVar8" * identifier) == (pointer_expression "*pcVar6" * identifier)) && (parenthesized_expression "(iVar10 = strncmp(pcVar8,pcVar6,iVar12), iVar10 == 0)" ( (comma_expression "iVar10 = strncmp(pcVar8,pcVar6,iVar12), iVar10 == 0" (assignment_expression "iVar10 = strncmp(pcVar8,pcVar6,iVar12)" identifier = (call_expression "strncmp(pcVar8,pcVar6,iVar12)" identifier (argument_list "(pcVar8,pcVar6,iVar12)" ( identifier , identifier , identifier )))) , (binary_expression "iVar10 == 0" identifier == number_literal)) ))) )) )))) )) ))) )) (compound_statement "{\n              command_word_completion_function::local_index = iVar11 + 1;\n              goto LAB_0008d451;\n            }" { (labeled_statement "command_word_completion_function::local_index = iVar11 + 1;" statement_identifier : (ERROR ":" :) (expression_statement "local_index = iVar11 + 1;" (assignment_expression "local_index = iVar11 + 1" identifier = (binary_expression "iVar11 + 1" identifier + number_literal)) ;)) (goto_statement "goto LAB_0008d451;" goto statement_identifier ;) })) (labeled_statement "command_word_completion_function::local_index = iVar11 + 1;" statement_identifier : (ERROR ":" :) (expression_statement "local_index = iVar11 + 1;" (assignment_expression "local_index = iVar11 + 1" identifier = (binary_expression "iVar11 + 1" identifier + number_literal)) ;)) (expression_statement "pbVar15 = pbVar15 + 1;" (assignment_expression "pbVar15 = pbVar15 + 1" identifier = (binary_expression "pbVar15 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(command_word_completion_function::local_index != iVar5)" ( (binary_expression "command_word_completion_function::local_index != iVar5" identifier (ERROR "::local_index" : : identifier) != identifier) )) ;) })) (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) ;)) (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::globpat == 0) {\n      if (command_word_completion_function::hint_is_dir == 0) goto LAB_0008d5f6;\n      command_word_completion_function::hint_is_dir = 0;\n      sVar7 = strlen(hint_text);\n      pcVar6 = (char *)xmalloc(sVar7 + 1);\n      pcVar6 = strcpy(pcVar6,hint_text);\n      goto LAB_0008d5c8;\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_0008d5f6;\n      command_word_completion_function::hint_is_dir = 0;\n      sVar7 = strlen(hint_text);\n      pcVar6 = (char *)xmalloc(sVar7 + 1);\n      pcVar6 = strcpy(pcVar6,hint_text);\n      goto LAB_0008d5c8;\n    }" { (if_statement "if (command_word_completion_function::hint_is_dir == 0) goto LAB_0008d5f6;" 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_0008d5f6;" 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 "sVar7 = strlen(hint_text);" (assignment_expression "sVar7 = strlen(hint_text)" identifier = (call_expression "strlen(hint_text)" identifier (argument_list "(hint_text)" ( identifier )))) ;) (expression_statement "pcVar6 = (char *)xmalloc(sVar7 + 1);" (assignment_expression "pcVar6 = (char *)xmalloc(sVar7 + 1)" identifier = (cast_expression "(char *)xmalloc(sVar7 + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(sVar7 + 1)" identifier (argument_list "(sVar7 + 1)" ( (binary_expression "sVar7 + 1" identifier + number_literal) ))))) ;) (expression_statement "pcVar6 = strcpy(pcVar6,hint_text);" (assignment_expression "pcVar6 = strcpy(pcVar6,hint_text)" identifier = (call_expression "strcpy(pcVar6,hint_text)" identifier (argument_list "(pcVar6,hint_text)" ( identifier , identifier )))) ;) (goto_statement "goto LAB_0008d5c8;" goto statement_identifier ;) })) (if_statement "if (state == 0) goto LAB_0008d218;" if (parenthesized_expression "(state == 0)" ( (binary_expression "state == 0" identifier == number_literal) )) (goto_statement "goto LAB_0008d218;" goto statement_identifier ;)) (expression_statement "iVar5 = command_word_completion_function::local_index + 1;" (binary_expression "iVar5 = command_word_completion_function::local_index + 1" (assignment_expression "iVar5 = command_word_completion_function" identifier = identifier) (ERROR "::local_index" : : identifier) + number_literal) ;) (expression_statement "ppcVar9 = command_word_completion_function::glob_matches +\n              command_word_completion_function::local_index;" (binary_expression "ppcVar9 = command_word_completion_function::glob_matches +\n              command_word_completion_function" (assignment_expression "ppcVar9 = command_word_completion_function" identifier = identifier) (ERROR "::glob_matches" : : identifier) + identifier) (ERROR "::local_index" : : identifier) ;) }))) (labeled_statement "command_word_completion_function::val = *ppcVar9;" statement_identifier : (ERROR ":" :) (expression_statement "val = *ppcVar9;" (assignment_expression "val = *ppcVar9" identifier = (pointer_expression "*ppcVar9" * identifier)) ;)) (labeled_statement "command_word_completion_function::local_index = iVar5;" statement_identifier : (ERROR ":" :) (expression_statement "local_index = iVar5;" (assignment_expression "local_index = iVar5" identifier = identifier) ;)) (while_statement "while (command_word_completion_function::val != (char *)0x0) {\n    iVar5 = executable_or_directory(command_word_completion_function::val);\n    if (iVar5 != 0) {\n      pcVar6 = command_word_completion_function::val;\n      if ((*hint_text == '~') && (command_word_completion_function::directory_part != (char *)0x0))\n      {\n        pcVar6 = 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 = pcVar6;\n      }\n      goto LAB_0008d5c8;\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    command_word_completion_function::local_index =\n         command_word_completion_function::local_index + 1;\n  }" while (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    iVar5 = executable_or_directory(command_word_completion_function::val);\n    if (iVar5 != 0) {\n      pcVar6 = command_word_completion_function::val;\n      if ((*hint_text == '~') && (command_word_completion_function::directory_part != (char *)0x0))\n      {\n        pcVar6 = 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 = pcVar6;\n      }\n      goto LAB_0008d5c8;\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    command_word_completion_function::local_index =\n         command_word_completion_function::local_index + 1;\n  }" { (expression_statement "iVar5 = executable_or_directory(command_word_completion_function::val);" (assignment_expression "iVar5 = 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 (iVar5 != 0) {\n      pcVar6 = command_word_completion_function::val;\n      if ((*hint_text == '~') && (command_word_completion_function::directory_part != (char *)0x0))\n      {\n        pcVar6 = 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 = pcVar6;\n      }\n      goto LAB_0008d5c8;\n    }" if (parenthesized_expression "(iVar5 != 0)" ( (binary_expression "iVar5 != 0" identifier != number_literal) )) (compound_statement "{\n      pcVar6 = command_word_completion_function::val;\n      if ((*hint_text == '~') && (command_word_completion_function::directory_part != (char *)0x0))\n      {\n        pcVar6 = 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 = pcVar6;\n      }\n      goto LAB_0008d5c8;\n    }" { (expression_statement "pcVar6 = command_word_completion_function::val;" (assignment_expression "pcVar6 = command_word_completion_function" identifier = identifier) (ERROR "::val" : : identifier) ;) (if_statement "if ((*hint_text == '~') && (command_word_completion_function::directory_part != (char *)0x0))\n      {\n        pcVar6 = 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 = pcVar6;\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        pcVar6 = 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 = pcVar6;\n      }" { (expression_statement "pcVar6 = maybe_restore_tilde(command_word_completion_function::val,\n                                     command_word_completion_function::directory_part);" (assignment_expression "pcVar6 = 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 = pcVar6;" statement_identifier : (ERROR ":" :) (expression_statement "val = pcVar6;" (assignment_expression "val = pcVar6" identifier = identifier) ;)) })) (goto_statement "goto LAB_0008d5c8;" 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 "]" ]) ;)) (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 "glob_ignore_case = 0;" (assignment_expression "glob_ignore_case = 0" identifier = number_literal) ;) (expression_statement "pcVar6 = (char *)0x0;" (assignment_expression "pcVar6 = (char *)0x0" identifier = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (labeled_statement "LAB_0008d5c8:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail_local();\n  }" statement_identifier : (if_statement "if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail_local();\n  }" if (parenthesized_expression "(local_20 != *(int *)(in_GS_OFFSET + 0x14))" ( (binary_expression "local_20 != *(int *)(in_GS_OFFSET + 0x14)" identifier != (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail_local();\n  }" { comment (expression_statement "__stack_chk_fail_local();" (call_expression "__stack_chk_fail_local()" identifier (argument_list "()" ( ))) ;) }))) (return_statement "return pcVar6;" return identifier ;) })))
(translation_unit "char * command_word_completion_function(char *param_1,int param_2)\n\n{\n  void *pvVar1;\n  int iVar2;\n  char *pcVar3;\n  size_t sVar4;\n  char *pcVar5;\n  undefined4 *puVar6;\n  int iVar7;\n  uint uVar8;\n  int iVar9;\n  char *pcVar10;\n  char cVar11;\n  int in_GS_OFFSET;\n  char *local_24;\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x8d029;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  if (param_2 == 0) {\n    rl_filename_stat_hook = FUN_0008f310;\n    if (DAT_00151468 == (char *)0x0) {\nLAB_0008d085:\n      if (DAT_00151464 != (char *)0x0) goto LAB_0008d089;\n    }\n    else {\n      if (DAT_00151468 != DAT_00151464) {\n        free(DAT_00151468);\n        goto LAB_0008d085;\n      }\nLAB_0008d089:\n      free(DAT_00151464);\n    }\n    DAT_00151460 = 0;\n    DAT_0015145c = 0;\n    iVar2 = absolute_pathname(param_1);\n    if (((iVar2 == 0) && (iVar2 = absolute_program(param_1), iVar2 == 0)) && (*param_1 != '~')) {\n      iVar2 = FUN_0008ac10(param_1);\n      DAT_00151458 = (uint)(iVar2 != 0);\n    }\n    else {\n      DAT_00151458 = 0;\n    }\n    DAT_00151454 = (char *)0x0;\n    pcVar3 = (char *)rl_variable_value("completion-ignore-case");\n    DAT_00151450 = 0;\n    if ((*pcVar3 == 'o') && (pcVar3[1] == 'n')) {\n      DAT_00151450 = (uint)(pcVar3[2] == '\0');\n    }\n    if (DAT_001514d4 != (undefined4 *)0x0) {\n      free(DAT_001514d4);\n      DAT_001514d4 = (undefined4 *)0x0;\n    }\n    DAT_0015144c = FUN_0008cd10();\n    if ((DAT_0015144c == 0) && (iVar2 = absolute_program(param_1), iVar2 == 0)) {\n      sVar4 = strlen(param_1);\n      pcVar3 = (char *)xmalloc(sVar4 + 1);\n      pcVar3 = strcpy(pcVar3,param_1);\n      DAT_00151464 = pcVar3;\n      DAT_00151468 = pcVar3;\n      DAT_00151444 = strlen(pcVar3);\n      if ((rl_completion_found_quote != 0) && (rl_completion_quote_character == 0)) {\n        DAT_00151468 = (char *)FUN_00089940(pcVar3,0);\n      }\n      DAT_00151434 = get_string_value("PATH");\n      DAT_001514ec = 0;\n      DAT_00151430 = 0;\n      DAT_0015142c = 0;\n      if (DAT_00151428 != (void *)0x0) {\n        free(DAT_00151428);\n      }\n      DAT_00151428 = (void *)all_visible_functions();\n      if (DAT_00151424 != (void *)0x0) {\n        free(DAT_00151424);\n      }\n      DAT_00151424 = (void *)all_aliases();\n      goto LAB_0008d390;\n    }\n    if (*param_1 == '~') {\n      DAT_00151464 = (char *)bash_tilde_expand(param_1,0);\n      sVar4 = strlen(param_1);\n      pcVar3 = (char *)xmalloc(sVar4 + 1);\n      pcVar3 = strcpy(pcVar3,param_1);\n      DAT_00151448 = pcVar3;\n      pcVar5 = strchr(pcVar3,0x2f);\n      if (pcVar5 == (char *)0x0) {\n        free(pcVar3);\n        DAT_00151448 = (char *)0x0;\n      }\n      else {\n        *pcVar5 = '\0';\n      }\n    }\n    else {\n      sVar4 = strlen(param_1);\n      if (dircomplete_expand == 0) {\n        pcVar3 = (char *)xmalloc(sVar4 + 1);\n        DAT_00151464 = strcpy(pcVar3,param_1);\n      }\n      else {\n        pcVar3 = (char *)xmalloc(sVar4 + 1);\n        DAT_00151464 = strcpy(pcVar3,param_1);\n        FUN_0008c7b0(&DAT_00151464);\n      }\n    }\n    DAT_00151468 = DAT_00151464;\n    if ((rl_completion_found_quote != 0) && (rl_completion_quote_character == 0)) {\n      pcVar3 = (char *)FUN_00089940(DAT_00151464,0);\n      DAT_00151468 = pcVar3;\n      free(DAT_00151464);\n      DAT_00151464 = pcVar3;\n    }\n    pcVar3 = DAT_00151464;\n    DAT_00151444 = strlen(DAT_00151464);\n    if (DAT_00151440 != (char *)0x0) {\n      free(DAT_00151440);\n      pcVar3 = DAT_00151464;\n    }\n    sVar4 = strlen(pcVar3);\n    pcVar5 = (char *)xmalloc(sVar4 + 1);\n    DAT_0015143c = strcpy(pcVar5,pcVar3);\n    DAT_00151438 = 0;\n    DAT_00151440 = DAT_0015143c;\n    if (DAT_0015144c == 0) {\n      uVar8 = dircomplete_expand;\n      if ((dircomplete_expand != 0) &&\n         (iVar2 = path_dot_or_dotdot(DAT_0015143c), uVar8 = DAT_00151438, iVar2 != 0)) {\n        dircomplete_expand = 1;\n        rl_directory_rewrite_hook = FUN_0008c7b0;\n        rl_directory_completion_hook = (code *)0x0;\n      }\n      DAT_0015145c = 4;\n      pcVar3 = DAT_0015143c;\n      do {\n        do {\n          while( true ) {\n            DAT_00151454 = (char *)rl_filename_completion_function(pcVar3,uVar8);\n            if ((DAT_0015145c == 4) && (dircomplete_expand != 0)) {\n              rl_directory_completion_hook = FUN_0008c7b0;\n              rl_directory_rewrite_hook = (code *)0x0;\n            }\n            DAT_00151438 = 1;\n            if (DAT_00151454 == (char *)0x0) break;\n            iVar2 = absolute_program(DAT_00151464);\n            pcVar5 = DAT_00151454;\n            if (iVar2 == 0) {\n              pcVar3 = strrchr(DAT_00151454,0x2f);\n              if (pcVar3 != (char *)0x0) {\n                pcVar3 = pcVar3 + 1;\n                if (DAT_00151450 == 0) {\n                  iVar2 = strncmp(pcVar3,DAT_00151464,DAT_00151444);\n                }\n                else {\n                  iVar2 = strncasecmp(pcVar3,DAT_00151464,DAT_00151444);\n                }\n                if (iVar2 == 0) {\n                  sVar4 = strlen(pcVar3);\n                  pcVar5 = (char *)xmalloc(sVar4 + 1);\n                  pcVar3 = strcpy(pcVar5,pcVar3);\n                  goto LAB_0008d6a4;\n                }\n              }\n            }\n            else {\n              if (DAT_00151450 == 0) {\n                iVar2 = strncmp(DAT_00151454,DAT_00151464,DAT_00151444);\n              }\n              else {\n                iVar2 = strncasecmp(DAT_00151454,DAT_00151464,DAT_00151444);\n              }\n              if (*param_1 == '~') {\n                pcVar3 = (char *)FUN_0008a220();\n              }\n              else {\n                sVar4 = strlen(pcVar5);\n                pcVar3 = (char *)xmalloc(sVar4 + 1);\n                pcVar3 = strcpy(pcVar3,pcVar5);\n              }\n              pcVar5 = DAT_00151454;\n              if (iVar2 == 0) {\nLAB_0008d6a4:\n                iVar2 = DAT_00151460;\n                pcVar10 = DAT_00151454;\n                sVar4 = strlen(DAT_00151454);\n                pcVar5 = (char *)xmalloc(sVar4 + 1);\n                local_24 = strcpy(pcVar5,pcVar10);\n                FUN_0008c7b0(&local_24);\n                if (iVar2 == 0) {\n                  iVar2 = executable_or_directory(local_24);\n                }\n                else {\n                  iVar2 = executable_file(local_24);\n                }\n                free(local_24);\n                pcVar5 = DAT_00151454;\n                if (iVar2 != 0) {\n                  if (pcVar10 != DAT_00151454) {\n                    free(pcVar10);\n                  }\n                  free(pcVar5);\n                  DAT_00151454 = "";\n                  goto LAB_0008d5c8;\n                }\n                free(pcVar3);\n                if (pcVar10 != pcVar5) {\n                  free(pcVar10);\n                }\n              }\n              else {\n                free(pcVar3);\n              }\n            }\n            free(pcVar5);\n            uVar8 = DAT_00151438;\n            pcVar3 = DAT_0015143c;\n          }\n          iVar2 = absolute_program(DAT_00151464);\n          if (iVar2 != 0) goto LAB_0008dac4;\nLAB_0008d5f6:\n          uVar8 = (uint)(DAT_00151454 != (char *)0x0);\n          pcVar3 = DAT_0015143c;\n          DAT_00151438 = uVar8;\n        } while (DAT_00151454 != (char *)0x0);\n        if (((DAT_00151434 == 0) || (*(char *)(DAT_00151434 + DAT_00151430) == '\0')) ||\n           (pcVar3 = (char *)extract_colon_unit(DAT_00151434,&DAT_00151430), pcVar3 == (char *)0x0))\n        goto LAB_0008dac4;\n        DAT_00151460 = 1;\n        cVar11 = *pcVar3;\n        if (cVar11 == '\0') {\n          free(pcVar3);\n          pcVar3 = (char *)xmalloc(2);\n          pcVar3[0] = '.';\n          pcVar3[1] = '\0';\n          cVar11 = '.';\n        }\n        pcVar5 = pcVar3;\n        if (cVar11 == '~') {\n          pcVar5 = (char *)bash_tilde_expand(pcVar3,0);\n          free(pcVar3);\n          cVar11 = *pcVar5;\n        }\n        pcVar3 = DAT_00151440;\n        if ((cVar11 == '.') && (pcVar5[1] == '\0')) {\n          DAT_001514ec = 1;\n        }\n        if (DAT_0015143c == (char *)0x0) {\nLAB_0008dbfe:\n          if (pcVar3 != (char *)0x0) goto LAB_0008de5f;\n        }\n        else {\n          if (DAT_0015143c != DAT_00151440) {\n            free(DAT_0015143c);\n            goto LAB_0008dbfe;\n          }\nLAB_0008de5f:\n          free(pcVar3);\n        }\n        pcVar3 = (char *)sh_makepath(pcVar5,DAT_00151464,0);\n        DAT_00151440 = pcVar3;\n        pcVar10 = strpbrk(pcVar3,"\"\'\\");\n        if (pcVar10 != (char *)0x0) {\n          pcVar3 = (char *)sh_backslash_quote(pcVar3,&DAT_00151500,0);\n        }\n        DAT_0015143c = pcVar3;\n        free(pcVar5);\n        uVar8 = DAT_00151438;\n      } while( true );\n    }\n    DAT_0015145c = 5;\nLAB_0008d218:\n    glob_ignore_case = DAT_00151450;\n    puVar6 = (undefined4 *)shell_glob_filename(DAT_00151464);\n    glob_ignore_case = 0;\n    if ((puVar6 == (undefined4 *)PTR_glob_error_return_00149f60) || (puVar6 == (undefined4 *)0x0)) {\n      DAT_001514d4 = (undefined4 *)0x0;\n      pcVar3 = (char *)0x0;\n      goto LAB_0008d5c8;\n    }\n    DAT_0015142c = 0;\n    DAT_001514d4 = puVar6;\n    if ((puVar6[1] != 0) && (rl_completion_type == 9)) {\nLAB_0008dac4:\n      pcVar3 = (char *)0x0;\n      goto LAB_0008d5c8;\n    }\n    iVar2 = 1;\n  }\n  else {\nLAB_0008d390:\n    pcVar3 = DAT_00151464;\n    uVar8 = DAT_00151450;\n    sVar4 = DAT_00151444;\n    pvVar1 = DAT_00151424;\n    iVar2 = DAT_0015142c;\n    if (DAT_0015145c == 1) {\nLAB_0008d960:\n      do {\n        pcVar5 = (&word_token_alist)[iVar2 * 2];\n        if (pcVar5 == (char *)0x0) {\n          DAT_0015142c = 0;\n          DAT_0015145c = DAT_0015145c + 1;\n          uVar8 = DAT_00151450;\n          pvVar1 = DAT_00151428;\n          goto LAB_0008d840;\n        }\n        iVar2 = iVar2 + 1;\n        DAT_0015142c = iVar2;\n      } while ((sVar4 != 0) &&\n              ((*pcVar5 != *pcVar3 || (iVar9 = strncmp(pcVar5,pcVar3,sVar4), iVar9 != 0))));\nLAB_0008d451:\n      sVar4 = strlen(pcVar5);\n      pcVar3 = (char *)xmalloc(sVar4 + 1);\n      pcVar3 = strcpy(pcVar3,pcVar5);\n      goto LAB_0008d5c8;\n    }\n    if (DAT_0015145c < 2) {\n      if (DAT_0015145c == 0) {\n        do {\n          while( true ) {\n            if ((pvVar1 == (void *)0x0) ||\n               (puVar6 = *(undefined4 **)((int)pvVar1 + DAT_0015142c * 4),\n               puVar6 == (undefined4 *)0x0)) {\n              DAT_0015145c = 1;\n              iVar2 = 0;\n              goto LAB_0008d960;\n            }\n            DAT_0015142c = DAT_0015142c + 1;\n            pcVar5 = (char *)*puVar6;\n            if (uVar8 != 0) break;\n            if ((sVar4 == 0) ||\n               ((*pcVar5 == *pcVar3 && (iVar2 = strncmp(pcVar5,pcVar3,sVar4), iVar2 == 0))))\n            goto LAB_0008d451;\n          }\n          iVar2 = strncasecmp(pcVar5,pcVar3,sVar4);\n        } while (iVar2 != 0);\n        goto LAB_0008d451;\n      }\n    }\n    else {\n      pvVar1 = DAT_00151428;\n      if (DAT_0015145c == 2) {\nLAB_0008d840:\n        do {\n          if ((pvVar1 == (void *)0x0) ||\n             (puVar6 = *(undefined4 **)((int)pvVar1 + DAT_0015142c * 4), puVar6 == (undefined4 *)0x0\n             )) {\n            DAT_0015142c = 0;\n            DAT_0015145c = DAT_0015145c + 1;\n            goto LAB_0008d3bd;\n          }\n          DAT_0015142c = DAT_0015142c + 1;\n          pcVar5 = (char *)*puVar6;\n          if (uVar8 == 0) {\n            if ((sVar4 == 0) ||\n               ((*pcVar5 == *pcVar3 && (iVar2 = strncmp(pcVar5,pcVar3,sVar4), iVar2 == 0)))) break;\n            goto LAB_0008d840;\n          }\n          iVar2 = strncasecmp(pcVar5,pcVar3,sVar4);\n        } while (iVar2 != 0);\n        sVar4 = strlen(pcVar5);\n        pcVar3 = (char *)xmalloc(sVar4 + 1);\n        pcVar3 = strcpy(pcVar3,pcVar5);\n        goto LAB_0008d5c8;\n      }\n      if (DAT_0015145c == 3) {\nLAB_0008d3bd:\n        pcVar3 = DAT_00151464;\n        sVar4 = DAT_00151444;\n        iVar2 = num_shell_builtins;\n        if (DAT_0015142c < num_shell_builtins) {\n          puVar6 = (undefined4 *)(shell_builtins + DAT_0015142c * 0x18);\n          do {\n            iVar9 = DAT_0015142c;\n            if (((puVar6[1] != 0) && ((*(byte *)(puVar6 + 2) & 1) != 0)) &&\n               ((pcVar5 = (char *)*puVar6, sVar4 == 0 ||\n                ((*pcVar5 == *pcVar3 && (iVar7 = strncmp(pcVar5,pcVar3,sVar4), iVar7 == 0)))))) {\n              DAT_0015142c = iVar9 + 1;\n              goto LAB_0008d451;\n            }\n            DAT_0015142c = iVar9 + 1;\n            puVar6 = puVar6 + 6;\n          } while (DAT_0015142c != iVar2);\n        }\n        DAT_0015145c = DAT_0015145c + 1;\n        DAT_0015142c = 0;\n      }\n    }\n    if (DAT_0015144c == 0) {\n      if (DAT_00151458 == 0) goto LAB_0008d5f6;\n      DAT_00151458 = 0;\n      sVar4 = strlen(param_1);\n      pcVar3 = (char *)xmalloc(sVar4 + 1);\n      pcVar3 = strcpy(pcVar3,param_1);\n      goto LAB_0008d5c8;\n    }\n    if (param_2 == 0) goto LAB_0008d218;\n    iVar2 = DAT_0015142c + 1;\n    puVar6 = DAT_001514d4 + DAT_0015142c;\n  }\n  DAT_00151454 = (char *)*puVar6;\n  DAT_0015142c = iVar2;\n  while (DAT_00151454 != (char *)0x0) {\n    iVar2 = executable_or_directory(DAT_00151454);\n    if (iVar2 != 0) {\n      pcVar3 = DAT_00151454;\n      if ((*param_1 == '~') && (DAT_00151448 != (char *)0x0)) {\n        pcVar3 = (char *)FUN_0008a220();\n        free(DAT_00151454);\n        DAT_00151454 = pcVar3;\n      }\n      goto LAB_0008d5c8;\n    }\n    free(DAT_00151454);\n    DAT_00151454 = (char *)DAT_001514d4[DAT_0015142c];\n    DAT_0015142c = DAT_0015142c + 1;\n  }\n  glob_ignore_case = 0;\n  pcVar3 = (char *)0x0;\nLAB_0008d5c8:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_000ecc40();\n  }\n  return pcVar3;\n}\n\n" (function_definition "char * command_word_completion_function(char *param_1,int param_2)\n\n{\n  void *pvVar1;\n  int iVar2;\n  char *pcVar3;\n  size_t sVar4;\n  char *pcVar5;\n  undefined4 *puVar6;\n  int iVar7;\n  uint uVar8;\n  int iVar9;\n  char *pcVar10;\n  char cVar11;\n  int in_GS_OFFSET;\n  char *local_24;\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x8d029;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  if (param_2 == 0) {\n    rl_filename_stat_hook = FUN_0008f310;\n    if (DAT_00151468 == (char *)0x0) {\nLAB_0008d085:\n      if (DAT_00151464 != (char *)0x0) goto LAB_0008d089;\n    }\n    else {\n      if (DAT_00151468 != DAT_00151464) {\n        free(DAT_00151468);\n        goto LAB_0008d085;\n      }\nLAB_0008d089:\n      free(DAT_00151464);\n    }\n    DAT_00151460 = 0;\n    DAT_0015145c = 0;\n    iVar2 = absolute_pathname(param_1);\n    if (((iVar2 == 0) && (iVar2 = absolute_program(param_1), iVar2 == 0)) && (*param_1 != '~')) {\n      iVar2 = FUN_0008ac10(param_1);\n      DAT_00151458 = (uint)(iVar2 != 0);\n    }\n    else {\n      DAT_00151458 = 0;\n    }\n    DAT_00151454 = (char *)0x0;\n    pcVar3 = (char *)rl_variable_value("completion-ignore-case");\n    DAT_00151450 = 0;\n    if ((*pcVar3 == 'o') && (pcVar3[1] == 'n')) {\n      DAT_00151450 = (uint)(pcVar3[2] == '\0');\n    }\n    if (DAT_001514d4 != (undefined4 *)0x0) {\n      free(DAT_001514d4);\n      DAT_001514d4 = (undefined4 *)0x0;\n    }\n    DAT_0015144c = FUN_0008cd10();\n    if ((DAT_0015144c == 0) && (iVar2 = absolute_program(param_1), iVar2 == 0)) {\n      sVar4 = strlen(param_1);\n      pcVar3 = (char *)xmalloc(sVar4 + 1);\n      pcVar3 = strcpy(pcVar3,param_1);\n      DAT_00151464 = pcVar3;\n      DAT_00151468 = pcVar3;\n      DAT_00151444 = strlen(pcVar3);\n      if ((rl_completion_found_quote != 0) && (rl_completion_quote_character == 0)) {\n        DAT_00151468 = (char *)FUN_00089940(pcVar3,0);\n      }\n      DAT_00151434 = get_string_value("PATH");\n      DAT_001514ec = 0;\n      DAT_00151430 = 0;\n      DAT_0015142c = 0;\n      if (DAT_00151428 != (void *)0x0) {\n        free(DAT_00151428);\n      }\n      DAT_00151428 = (void *)all_visible_functions();\n      if (DAT_00151424 != (void *)0x0) {\n        free(DAT_00151424);\n      }\n      DAT_00151424 = (void *)all_aliases();\n      goto LAB_0008d390;\n    }\n    if (*param_1 == '~') {\n      DAT_00151464 = (char *)bash_tilde_expand(param_1,0);\n      sVar4 = strlen(param_1);\n      pcVar3 = (char *)xmalloc(sVar4 + 1);\n      pcVar3 = strcpy(pcVar3,param_1);\n      DAT_00151448 = pcVar3;\n      pcVar5 = strchr(pcVar3,0x2f);\n      if (pcVar5 == (char *)0x0) {\n        free(pcVar3);\n        DAT_00151448 = (char *)0x0;\n      }\n      else {\n        *pcVar5 = '\0';\n      }\n    }\n    else {\n      sVar4 = strlen(param_1);\n      if (dircomplete_expand == 0) {\n        pcVar3 = (char *)xmalloc(sVar4 + 1);\n        DAT_00151464 = strcpy(pcVar3,param_1);\n      }\n      else {\n        pcVar3 = (char *)xmalloc(sVar4 + 1);\n        DAT_00151464 = strcpy(pcVar3,param_1);\n        FUN_0008c7b0(&DAT_00151464);\n      }\n    }\n    DAT_00151468 = DAT_00151464;\n    if ((rl_completion_found_quote != 0) && (rl_completion_quote_character == 0)) {\n      pcVar3 = (char *)FUN_00089940(DAT_00151464,0);\n      DAT_00151468 = pcVar3;\n      free(DAT_00151464);\n      DAT_00151464 = pcVar3;\n    }\n    pcVar3 = DAT_00151464;\n    DAT_00151444 = strlen(DAT_00151464);\n    if (DAT_00151440 != (char *)0x0) {\n      free(DAT_00151440);\n      pcVar3 = DAT_00151464;\n    }\n    sVar4 = strlen(pcVar3);\n    pcVar5 = (char *)xmalloc(sVar4 + 1);\n    DAT_0015143c = strcpy(pcVar5,pcVar3);\n    DAT_00151438 = 0;\n    DAT_00151440 = DAT_0015143c;\n    if (DAT_0015144c == 0) {\n      uVar8 = dircomplete_expand;\n      if ((dircomplete_expand != 0) &&\n         (iVar2 = path_dot_or_dotdot(DAT_0015143c), uVar8 = DAT_00151438, iVar2 != 0)) {\n        dircomplete_expand = 1;\n        rl_directory_rewrite_hook = FUN_0008c7b0;\n        rl_directory_completion_hook = (code *)0x0;\n      }\n      DAT_0015145c = 4;\n      pcVar3 = DAT_0015143c;\n      do {\n        do {\n          while( true ) {\n            DAT_00151454 = (char *)rl_filename_completion_function(pcVar3,uVar8);\n            if ((DAT_0015145c == 4) && (dircomplete_expand != 0)) {\n              rl_directory_completion_hook = FUN_0008c7b0;\n              rl_directory_rewrite_hook = (code *)0x0;\n            }\n            DAT_00151438 = 1;\n            if (DAT_00151454 == (char *)0x0) break;\n            iVar2 = absolute_program(DAT_00151464);\n            pcVar5 = DAT_00151454;\n            if (iVar2 == 0) {\n              pcVar3 = strrchr(DAT_00151454,0x2f);\n              if (pcVar3 != (char *)0x0) {\n                pcVar3 = pcVar3 + 1;\n                if (DAT_00151450 == 0) {\n                  iVar2 = strncmp(pcVar3,DAT_00151464,DAT_00151444);\n                }\n                else {\n                  iVar2 = strncasecmp(pcVar3,DAT_00151464,DAT_00151444);\n                }\n                if (iVar2 == 0) {\n                  sVar4 = strlen(pcVar3);\n                  pcVar5 = (char *)xmalloc(sVar4 + 1);\n                  pcVar3 = strcpy(pcVar5,pcVar3);\n                  goto LAB_0008d6a4;\n                }\n              }\n            }\n            else {\n              if (DAT_00151450 == 0) {\n                iVar2 = strncmp(DAT_00151454,DAT_00151464,DAT_00151444);\n              }\n              else {\n                iVar2 = strncasecmp(DAT_00151454,DAT_00151464,DAT_00151444);\n              }\n              if (*param_1 == '~') {\n                pcVar3 = (char *)FUN_0008a220();\n              }\n              else {\n                sVar4 = strlen(pcVar5);\n                pcVar3 = (char *)xmalloc(sVar4 + 1);\n                pcVar3 = strcpy(pcVar3,pcVar5);\n              }\n              pcVar5 = DAT_00151454;\n              if (iVar2 == 0) {\nLAB_0008d6a4:\n                iVar2 = DAT_00151460;\n                pcVar10 = DAT_00151454;\n                sVar4 = strlen(DAT_00151454);\n                pcVar5 = (char *)xmalloc(sVar4 + 1);\n                local_24 = strcpy(pcVar5,pcVar10);\n                FUN_0008c7b0(&local_24);\n                if (iVar2 == 0) {\n                  iVar2 = executable_or_directory(local_24);\n                }\n                else {\n                  iVar2 = executable_file(local_24);\n                }\n                free(local_24);\n                pcVar5 = DAT_00151454;\n                if (iVar2 != 0) {\n                  if (pcVar10 != DAT_00151454) {\n                    free(pcVar10);\n                  }\n                  free(pcVar5);\n                  DAT_00151454 = "";\n                  goto LAB_0008d5c8;\n                }\n                free(pcVar3);\n                if (pcVar10 != pcVar5) {\n                  free(pcVar10);\n                }\n              }\n              else {\n                free(pcVar3);\n              }\n            }\n            free(pcVar5);\n            uVar8 = DAT_00151438;\n            pcVar3 = DAT_0015143c;\n          }\n          iVar2 = absolute_program(DAT_00151464);\n          if (iVar2 != 0) goto LAB_0008dac4;\nLAB_0008d5f6:\n          uVar8 = (uint)(DAT_00151454 != (char *)0x0);\n          pcVar3 = DAT_0015143c;\n          DAT_00151438 = uVar8;\n        } while (DAT_00151454 != (char *)0x0);\n        if (((DAT_00151434 == 0) || (*(char *)(DAT_00151434 + DAT_00151430) == '\0')) ||\n           (pcVar3 = (char *)extract_colon_unit(DAT_00151434,&DAT_00151430), pcVar3 == (char *)0x0))\n        goto LAB_0008dac4;\n        DAT_00151460 = 1;\n        cVar11 = *pcVar3;\n        if (cVar11 == '\0') {\n          free(pcVar3);\n          pcVar3 = (char *)xmalloc(2);\n          pcVar3[0] = '.';\n          pcVar3[1] = '\0';\n          cVar11 = '.';\n        }\n        pcVar5 = pcVar3;\n        if (cVar11 == '~') {\n          pcVar5 = (char *)bash_tilde_expand(pcVar3,0);\n          free(pcVar3);\n          cVar11 = *pcVar5;\n        }\n        pcVar3 = DAT_00151440;\n        if ((cVar11 == '.') && (pcVar5[1] == '\0')) {\n          DAT_001514ec = 1;\n        }\n        if (DAT_0015143c == (char *)0x0) {\nLAB_0008dbfe:\n          if (pcVar3 != (char *)0x0) goto LAB_0008de5f;\n        }\n        else {\n          if (DAT_0015143c != DAT_00151440) {\n            free(DAT_0015143c);\n            goto LAB_0008dbfe;\n          }\nLAB_0008de5f:\n          free(pcVar3);\n        }\n        pcVar3 = (char *)sh_makepath(pcVar5,DAT_00151464,0);\n        DAT_00151440 = pcVar3;\n        pcVar10 = strpbrk(pcVar3,"\"\'\\");\n        if (pcVar10 != (char *)0x0) {\n          pcVar3 = (char *)sh_backslash_quote(pcVar3,&DAT_00151500,0);\n        }\n        DAT_0015143c = pcVar3;\n        free(pcVar5);\n        uVar8 = DAT_00151438;\n      } while( true );\n    }\n    DAT_0015145c = 5;\nLAB_0008d218:\n    glob_ignore_case = DAT_00151450;\n    puVar6 = (undefined4 *)shell_glob_filename(DAT_00151464);\n    glob_ignore_case = 0;\n    if ((puVar6 == (undefined4 *)PTR_glob_error_return_00149f60) || (puVar6 == (undefined4 *)0x0)) {\n      DAT_001514d4 = (undefined4 *)0x0;\n      pcVar3 = (char *)0x0;\n      goto LAB_0008d5c8;\n    }\n    DAT_0015142c = 0;\n    DAT_001514d4 = puVar6;\n    if ((puVar6[1] != 0) && (rl_completion_type == 9)) {\nLAB_0008dac4:\n      pcVar3 = (char *)0x0;\n      goto LAB_0008d5c8;\n    }\n    iVar2 = 1;\n  }\n  else {\nLAB_0008d390:\n    pcVar3 = DAT_00151464;\n    uVar8 = DAT_00151450;\n    sVar4 = DAT_00151444;\n    pvVar1 = DAT_00151424;\n    iVar2 = DAT_0015142c;\n    if (DAT_0015145c == 1) {\nLAB_0008d960:\n      do {\n        pcVar5 = (&word_token_alist)[iVar2 * 2];\n        if (pcVar5 == (char *)0x0) {\n          DAT_0015142c = 0;\n          DAT_0015145c = DAT_0015145c + 1;\n          uVar8 = DAT_00151450;\n          pvVar1 = DAT_00151428;\n          goto LAB_0008d840;\n        }\n        iVar2 = iVar2 + 1;\n        DAT_0015142c = iVar2;\n      } while ((sVar4 != 0) &&\n              ((*pcVar5 != *pcVar3 || (iVar9 = strncmp(pcVar5,pcVar3,sVar4), iVar9 != 0))));\nLAB_0008d451:\n      sVar4 = strlen(pcVar5);\n      pcVar3 = (char *)xmalloc(sVar4 + 1);\n      pcVar3 = strcpy(pcVar3,pcVar5);\n      goto LAB_0008d5c8;\n    }\n    if (DAT_0015145c < 2) {\n      if (DAT_0015145c == 0) {\n        do {\n          while( true ) {\n            if ((pvVar1 == (void *)0x0) ||\n               (puVar6 = *(undefined4 **)((int)pvVar1 + DAT_0015142c * 4),\n               puVar6 == (undefined4 *)0x0)) {\n              DAT_0015145c = 1;\n              iVar2 = 0;\n              goto LAB_0008d960;\n            }\n            DAT_0015142c = DAT_0015142c + 1;\n            pcVar5 = (char *)*puVar6;\n            if (uVar8 != 0) break;\n            if ((sVar4 == 0) ||\n               ((*pcVar5 == *pcVar3 && (iVar2 = strncmp(pcVar5,pcVar3,sVar4), iVar2 == 0))))\n            goto LAB_0008d451;\n          }\n          iVar2 = strncasecmp(pcVar5,pcVar3,sVar4);\n        } while (iVar2 != 0);\n        goto LAB_0008d451;\n      }\n    }\n    else {\n      pvVar1 = DAT_00151428;\n      if (DAT_0015145c == 2) {\nLAB_0008d840:\n        do {\n          if ((pvVar1 == (void *)0x0) ||\n             (puVar6 = *(undefined4 **)((int)pvVar1 + DAT_0015142c * 4), puVar6 == (undefined4 *)0x0\n             )) {\n            DAT_0015142c = 0;\n            DAT_0015145c = DAT_0015145c + 1;\n            goto LAB_0008d3bd;\n          }\n          DAT_0015142c = DAT_0015142c + 1;\n          pcVar5 = (char *)*puVar6;\n          if (uVar8 == 0) {\n            if ((sVar4 == 0) ||\n               ((*pcVar5 == *pcVar3 && (iVar2 = strncmp(pcVar5,pcVar3,sVar4), iVar2 == 0)))) break;\n            goto LAB_0008d840;\n          }\n          iVar2 = strncasecmp(pcVar5,pcVar3,sVar4);\n        } while (iVar2 != 0);\n        sVar4 = strlen(pcVar5);\n        pcVar3 = (char *)xmalloc(sVar4 + 1);\n        pcVar3 = strcpy(pcVar3,pcVar5);\n        goto LAB_0008d5c8;\n      }\n      if (DAT_0015145c == 3) {\nLAB_0008d3bd:\n        pcVar3 = DAT_00151464;\n        sVar4 = DAT_00151444;\n        iVar2 = num_shell_builtins;\n        if (DAT_0015142c < num_shell_builtins) {\n          puVar6 = (undefined4 *)(shell_builtins + DAT_0015142c * 0x18);\n          do {\n            iVar9 = DAT_0015142c;\n            if (((puVar6[1] != 0) && ((*(byte *)(puVar6 + 2) & 1) != 0)) &&\n               ((pcVar5 = (char *)*puVar6, sVar4 == 0 ||\n                ((*pcVar5 == *pcVar3 && (iVar7 = strncmp(pcVar5,pcVar3,sVar4), iVar7 == 0)))))) {\n              DAT_0015142c = iVar9 + 1;\n              goto LAB_0008d451;\n            }\n            DAT_0015142c = iVar9 + 1;\n            puVar6 = puVar6 + 6;\n          } while (DAT_0015142c != iVar2);\n        }\n        DAT_0015145c = DAT_0015145c + 1;\n        DAT_0015142c = 0;\n      }\n    }\n    if (DAT_0015144c == 0) {\n      if (DAT_00151458 == 0) goto LAB_0008d5f6;\n      DAT_00151458 = 0;\n      sVar4 = strlen(param_1);\n      pcVar3 = (char *)xmalloc(sVar4 + 1);\n      pcVar3 = strcpy(pcVar3,param_1);\n      goto LAB_0008d5c8;\n    }\n    if (param_2 == 0) goto LAB_0008d218;\n    iVar2 = DAT_0015142c + 1;\n    puVar6 = DAT_001514d4 + DAT_0015142c;\n  }\n  DAT_00151454 = (char *)*puVar6;\n  DAT_0015142c = iVar2;\n  while (DAT_00151454 != (char *)0x0) {\n    iVar2 = executable_or_directory(DAT_00151454);\n    if (iVar2 != 0) {\n      pcVar3 = DAT_00151454;\n      if ((*param_1 == '~') && (DAT_00151448 != (char *)0x0)) {\n        pcVar3 = (char *)FUN_0008a220();\n        free(DAT_00151454);\n        DAT_00151454 = pcVar3;\n      }\n      goto LAB_0008d5c8;\n    }\n    free(DAT_00151454);\n    DAT_00151454 = (char *)DAT_001514d4[DAT_0015142c];\n    DAT_0015142c = DAT_0015142c + 1;\n  }\n  glob_ignore_case = 0;\n  pcVar3 = (char *)0x0;\nLAB_0008d5c8:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_000ecc40();\n  }\n  return pcVar3;\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  void *pvVar1;\n  int iVar2;\n  char *pcVar3;\n  size_t sVar4;\n  char *pcVar5;\n  undefined4 *puVar6;\n  int iVar7;\n  uint uVar8;\n  int iVar9;\n  char *pcVar10;\n  char cVar11;\n  int in_GS_OFFSET;\n  char *local_24;\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x8d029;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  if (param_2 == 0) {\n    rl_filename_stat_hook = FUN_0008f310;\n    if (DAT_00151468 == (char *)0x0) {\nLAB_0008d085:\n      if (DAT_00151464 != (char *)0x0) goto LAB_0008d089;\n    }\n    else {\n      if (DAT_00151468 != DAT_00151464) {\n        free(DAT_00151468);\n        goto LAB_0008d085;\n      }\nLAB_0008d089:\n      free(DAT_00151464);\n    }\n    DAT_00151460 = 0;\n    DAT_0015145c = 0;\n    iVar2 = absolute_pathname(param_1);\n    if (((iVar2 == 0) && (iVar2 = absolute_program(param_1), iVar2 == 0)) && (*param_1 != '~')) {\n      iVar2 = FUN_0008ac10(param_1);\n      DAT_00151458 = (uint)(iVar2 != 0);\n    }\n    else {\n      DAT_00151458 = 0;\n    }\n    DAT_00151454 = (char *)0x0;\n    pcVar3 = (char *)rl_variable_value("completion-ignore-case");\n    DAT_00151450 = 0;\n    if ((*pcVar3 == 'o') && (pcVar3[1] == 'n')) {\n      DAT_00151450 = (uint)(pcVar3[2] == '\0');\n    }\n    if (DAT_001514d4 != (undefined4 *)0x0) {\n      free(DAT_001514d4);\n      DAT_001514d4 = (undefined4 *)0x0;\n    }\n    DAT_0015144c = FUN_0008cd10();\n    if ((DAT_0015144c == 0) && (iVar2 = absolute_program(param_1), iVar2 == 0)) {\n      sVar4 = strlen(param_1);\n      pcVar3 = (char *)xmalloc(sVar4 + 1);\n      pcVar3 = strcpy(pcVar3,param_1);\n      DAT_00151464 = pcVar3;\n      DAT_00151468 = pcVar3;\n      DAT_00151444 = strlen(pcVar3);\n      if ((rl_completion_found_quote != 0) && (rl_completion_quote_character == 0)) {\n        DAT_00151468 = (char *)FUN_00089940(pcVar3,0);\n      }\n      DAT_00151434 = get_string_value("PATH");\n      DAT_001514ec = 0;\n      DAT_00151430 = 0;\n      DAT_0015142c = 0;\n      if (DAT_00151428 != (void *)0x0) {\n        free(DAT_00151428);\n      }\n      DAT_00151428 = (void *)all_visible_functions();\n      if (DAT_00151424 != (void *)0x0) {\n        free(DAT_00151424);\n      }\n      DAT_00151424 = (void *)all_aliases();\n      goto LAB_0008d390;\n    }\n    if (*param_1 == '~') {\n      DAT_00151464 = (char *)bash_tilde_expand(param_1,0);\n      sVar4 = strlen(param_1);\n      pcVar3 = (char *)xmalloc(sVar4 + 1);\n      pcVar3 = strcpy(pcVar3,param_1);\n      DAT_00151448 = pcVar3;\n      pcVar5 = strchr(pcVar3,0x2f);\n      if (pcVar5 == (char *)0x0) {\n        free(pcVar3);\n        DAT_00151448 = (char *)0x0;\n      }\n      else {\n        *pcVar5 = '\0';\n      }\n    }\n    else {\n      sVar4 = strlen(param_1);\n      if (dircomplete_expand == 0) {\n        pcVar3 = (char *)xmalloc(sVar4 + 1);\n        DAT_00151464 = strcpy(pcVar3,param_1);\n      }\n      else {\n        pcVar3 = (char *)xmalloc(sVar4 + 1);\n        DAT_00151464 = strcpy(pcVar3,param_1);\n        FUN_0008c7b0(&DAT_00151464);\n      }\n    }\n    DAT_00151468 = DAT_00151464;\n    if ((rl_completion_found_quote != 0) && (rl_completion_quote_character == 0)) {\n      pcVar3 = (char *)FUN_00089940(DAT_00151464,0);\n      DAT_00151468 = pcVar3;\n      free(DAT_00151464);\n      DAT_00151464 = pcVar3;\n    }\n    pcVar3 = DAT_00151464;\n    DAT_00151444 = strlen(DAT_00151464);\n    if (DAT_00151440 != (char *)0x0) {\n      free(DAT_00151440);\n      pcVar3 = DAT_00151464;\n    }\n    sVar4 = strlen(pcVar3);\n    pcVar5 = (char *)xmalloc(sVar4 + 1);\n    DAT_0015143c = strcpy(pcVar5,pcVar3);\n    DAT_00151438 = 0;\n    DAT_00151440 = DAT_0015143c;\n    if (DAT_0015144c == 0) {\n      uVar8 = dircomplete_expand;\n      if ((dircomplete_expand != 0) &&\n         (iVar2 = path_dot_or_dotdot(DAT_0015143c), uVar8 = DAT_00151438, iVar2 != 0)) {\n        dircomplete_expand = 1;\n        rl_directory_rewrite_hook = FUN_0008c7b0;\n        rl_directory_completion_hook = (code *)0x0;\n      }\n      DAT_0015145c = 4;\n      pcVar3 = DAT_0015143c;\n      do {\n        do {\n          while( true ) {\n            DAT_00151454 = (char *)rl_filename_completion_function(pcVar3,uVar8);\n            if ((DAT_0015145c == 4) && (dircomplete_expand != 0)) {\n              rl_directory_completion_hook = FUN_0008c7b0;\n              rl_directory_rewrite_hook = (code *)0x0;\n            }\n            DAT_00151438 = 1;\n            if (DAT_00151454 == (char *)0x0) break;\n            iVar2 = absolute_program(DAT_00151464);\n            pcVar5 = DAT_00151454;\n            if (iVar2 == 0) {\n              pcVar3 = strrchr(DAT_00151454,0x2f);\n              if (pcVar3 != (char *)0x0) {\n                pcVar3 = pcVar3 + 1;\n                if (DAT_00151450 == 0) {\n                  iVar2 = strncmp(pcVar3,DAT_00151464,DAT_00151444);\n                }\n                else {\n                  iVar2 = strncasecmp(pcVar3,DAT_00151464,DAT_00151444);\n                }\n                if (iVar2 == 0) {\n                  sVar4 = strlen(pcVar3);\n                  pcVar5 = (char *)xmalloc(sVar4 + 1);\n                  pcVar3 = strcpy(pcVar5,pcVar3);\n                  goto LAB_0008d6a4;\n                }\n              }\n            }\n            else {\n              if (DAT_00151450 == 0) {\n                iVar2 = strncmp(DAT_00151454,DAT_00151464,DAT_00151444);\n              }\n              else {\n                iVar2 = strncasecmp(DAT_00151454,DAT_00151464,DAT_00151444);\n              }\n              if (*param_1 == '~') {\n                pcVar3 = (char *)FUN_0008a220();\n              }\n              else {\n                sVar4 = strlen(pcVar5);\n                pcVar3 = (char *)xmalloc(sVar4 + 1);\n                pcVar3 = strcpy(pcVar3,pcVar5);\n              }\n              pcVar5 = DAT_00151454;\n              if (iVar2 == 0) {\nLAB_0008d6a4:\n                iVar2 = DAT_00151460;\n                pcVar10 = DAT_00151454;\n                sVar4 = strlen(DAT_00151454);\n                pcVar5 = (char *)xmalloc(sVar4 + 1);\n                local_24 = strcpy(pcVar5,pcVar10);\n                FUN_0008c7b0(&local_24);\n                if (iVar2 == 0) {\n                  iVar2 = executable_or_directory(local_24);\n                }\n                else {\n                  iVar2 = executable_file(local_24);\n                }\n                free(local_24);\n                pcVar5 = DAT_00151454;\n                if (iVar2 != 0) {\n                  if (pcVar10 != DAT_00151454) {\n                    free(pcVar10);\n                  }\n                  free(pcVar5);\n                  DAT_00151454 = "";\n                  goto LAB_0008d5c8;\n                }\n                free(pcVar3);\n                if (pcVar10 != pcVar5) {\n                  free(pcVar10);\n                }\n              }\n              else {\n                free(pcVar3);\n              }\n            }\n            free(pcVar5);\n            uVar8 = DAT_00151438;\n            pcVar3 = DAT_0015143c;\n          }\n          iVar2 = absolute_program(DAT_00151464);\n          if (iVar2 != 0) goto LAB_0008dac4;\nLAB_0008d5f6:\n          uVar8 = (uint)(DAT_00151454 != (char *)0x0);\n          pcVar3 = DAT_0015143c;\n          DAT_00151438 = uVar8;\n        } while (DAT_00151454 != (char *)0x0);\n        if (((DAT_00151434 == 0) || (*(char *)(DAT_00151434 + DAT_00151430) == '\0')) ||\n           (pcVar3 = (char *)extract_colon_unit(DAT_00151434,&DAT_00151430), pcVar3 == (char *)0x0))\n        goto LAB_0008dac4;\n        DAT_00151460 = 1;\n        cVar11 = *pcVar3;\n        if (cVar11 == '\0') {\n          free(pcVar3);\n          pcVar3 = (char *)xmalloc(2);\n          pcVar3[0] = '.';\n          pcVar3[1] = '\0';\n          cVar11 = '.';\n        }\n        pcVar5 = pcVar3;\n        if (cVar11 == '~') {\n          pcVar5 = (char *)bash_tilde_expand(pcVar3,0);\n          free(pcVar3);\n          cVar11 = *pcVar5;\n        }\n        pcVar3 = DAT_00151440;\n        if ((cVar11 == '.') && (pcVar5[1] == '\0')) {\n          DAT_001514ec = 1;\n        }\n        if (DAT_0015143c == (char *)0x0) {\nLAB_0008dbfe:\n          if (pcVar3 != (char *)0x0) goto LAB_0008de5f;\n        }\n        else {\n          if (DAT_0015143c != DAT_00151440) {\n            free(DAT_0015143c);\n            goto LAB_0008dbfe;\n          }\nLAB_0008de5f:\n          free(pcVar3);\n        }\n        pcVar3 = (char *)sh_makepath(pcVar5,DAT_00151464,0);\n        DAT_00151440 = pcVar3;\n        pcVar10 = strpbrk(pcVar3,"\"\'\\");\n        if (pcVar10 != (char *)0x0) {\n          pcVar3 = (char *)sh_backslash_quote(pcVar3,&DAT_00151500,0);\n        }\n        DAT_0015143c = pcVar3;\n        free(pcVar5);\n        uVar8 = DAT_00151438;\n      } while( true );\n    }\n    DAT_0015145c = 5;\nLAB_0008d218:\n    glob_ignore_case = DAT_00151450;\n    puVar6 = (undefined4 *)shell_glob_filename(DAT_00151464);\n    glob_ignore_case = 0;\n    if ((puVar6 == (undefined4 *)PTR_glob_error_return_00149f60) || (puVar6 == (undefined4 *)0x0)) {\n      DAT_001514d4 = (undefined4 *)0x0;\n      pcVar3 = (char *)0x0;\n      goto LAB_0008d5c8;\n    }\n    DAT_0015142c = 0;\n    DAT_001514d4 = puVar6;\n    if ((puVar6[1] != 0) && (rl_completion_type == 9)) {\nLAB_0008dac4:\n      pcVar3 = (char *)0x0;\n      goto LAB_0008d5c8;\n    }\n    iVar2 = 1;\n  }\n  else {\nLAB_0008d390:\n    pcVar3 = DAT_00151464;\n    uVar8 = DAT_00151450;\n    sVar4 = DAT_00151444;\n    pvVar1 = DAT_00151424;\n    iVar2 = DAT_0015142c;\n    if (DAT_0015145c == 1) {\nLAB_0008d960:\n      do {\n        pcVar5 = (&word_token_alist)[iVar2 * 2];\n        if (pcVar5 == (char *)0x0) {\n          DAT_0015142c = 0;\n          DAT_0015145c = DAT_0015145c + 1;\n          uVar8 = DAT_00151450;\n          pvVar1 = DAT_00151428;\n          goto LAB_0008d840;\n        }\n        iVar2 = iVar2 + 1;\n        DAT_0015142c = iVar2;\n      } while ((sVar4 != 0) &&\n              ((*pcVar5 != *pcVar3 || (iVar9 = strncmp(pcVar5,pcVar3,sVar4), iVar9 != 0))));\nLAB_0008d451:\n      sVar4 = strlen(pcVar5);\n      pcVar3 = (char *)xmalloc(sVar4 + 1);\n      pcVar3 = strcpy(pcVar3,pcVar5);\n      goto LAB_0008d5c8;\n    }\n    if (DAT_0015145c < 2) {\n      if (DAT_0015145c == 0) {\n        do {\n          while( true ) {\n            if ((pvVar1 == (void *)0x0) ||\n               (puVar6 = *(undefined4 **)((int)pvVar1 + DAT_0015142c * 4),\n               puVar6 == (undefined4 *)0x0)) {\n              DAT_0015145c = 1;\n              iVar2 = 0;\n              goto LAB_0008d960;\n            }\n            DAT_0015142c = DAT_0015142c + 1;\n            pcVar5 = (char *)*puVar6;\n            if (uVar8 != 0) break;\n            if ((sVar4 == 0) ||\n               ((*pcVar5 == *pcVar3 && (iVar2 = strncmp(pcVar5,pcVar3,sVar4), iVar2 == 0))))\n            goto LAB_0008d451;\n          }\n          iVar2 = strncasecmp(pcVar5,pcVar3,sVar4);\n        } while (iVar2 != 0);\n        goto LAB_0008d451;\n      }\n    }\n    else {\n      pvVar1 = DAT_00151428;\n      if (DAT_0015145c == 2) {\nLAB_0008d840:\n        do {\n          if ((pvVar1 == (void *)0x0) ||\n             (puVar6 = *(undefined4 **)((int)pvVar1 + DAT_0015142c * 4), puVar6 == (undefined4 *)0x0\n             )) {\n            DAT_0015142c = 0;\n            DAT_0015145c = DAT_0015145c + 1;\n            goto LAB_0008d3bd;\n          }\n          DAT_0015142c = DAT_0015142c + 1;\n          pcVar5 = (char *)*puVar6;\n          if (uVar8 == 0) {\n            if ((sVar4 == 0) ||\n               ((*pcVar5 == *pcVar3 && (iVar2 = strncmp(pcVar5,pcVar3,sVar4), iVar2 == 0)))) break;\n            goto LAB_0008d840;\n          }\n          iVar2 = strncasecmp(pcVar5,pcVar3,sVar4);\n        } while (iVar2 != 0);\n        sVar4 = strlen(pcVar5);\n        pcVar3 = (char *)xmalloc(sVar4 + 1);\n        pcVar3 = strcpy(pcVar3,pcVar5);\n        goto LAB_0008d5c8;\n      }\n      if (DAT_0015145c == 3) {\nLAB_0008d3bd:\n        pcVar3 = DAT_00151464;\n        sVar4 = DAT_00151444;\n        iVar2 = num_shell_builtins;\n        if (DAT_0015142c < num_shell_builtins) {\n          puVar6 = (undefined4 *)(shell_builtins + DAT_0015142c * 0x18);\n          do {\n            iVar9 = DAT_0015142c;\n            if (((puVar6[1] != 0) && ((*(byte *)(puVar6 + 2) & 1) != 0)) &&\n               ((pcVar5 = (char *)*puVar6, sVar4 == 0 ||\n                ((*pcVar5 == *pcVar3 && (iVar7 = strncmp(pcVar5,pcVar3,sVar4), iVar7 == 0)))))) {\n              DAT_0015142c = iVar9 + 1;\n              goto LAB_0008d451;\n            }\n            DAT_0015142c = iVar9 + 1;\n            puVar6 = puVar6 + 6;\n          } while (DAT_0015142c != iVar2);\n        }\n        DAT_0015145c = DAT_0015145c + 1;\n        DAT_0015142c = 0;\n      }\n    }\n    if (DAT_0015144c == 0) {\n      if (DAT_00151458 == 0) goto LAB_0008d5f6;\n      DAT_00151458 = 0;\n      sVar4 = strlen(param_1);\n      pcVar3 = (char *)xmalloc(sVar4 + 1);\n      pcVar3 = strcpy(pcVar3,param_1);\n      goto LAB_0008d5c8;\n    }\n    if (param_2 == 0) goto LAB_0008d218;\n    iVar2 = DAT_0015142c + 1;\n    puVar6 = DAT_001514d4 + DAT_0015142c;\n  }\n  DAT_00151454 = (char *)*puVar6;\n  DAT_0015142c = iVar2;\n  while (DAT_00151454 != (char *)0x0) {\n    iVar2 = executable_or_directory(DAT_00151454);\n    if (iVar2 != 0) {\n      pcVar3 = DAT_00151454;\n      if ((*param_1 == '~') && (DAT_00151448 != (char *)0x0)) {\n        pcVar3 = (char *)FUN_0008a220();\n        free(DAT_00151454);\n        DAT_00151454 = pcVar3;\n      }\n      goto LAB_0008d5c8;\n    }\n    free(DAT_00151454);\n    DAT_00151454 = (char *)DAT_001514d4[DAT_0015142c];\n    DAT_0015142c = DAT_0015142c + 1;\n  }\n  glob_ignore_case = 0;\n  pcVar3 = (char *)0x0;\nLAB_0008d5c8:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_000ecc40();\n  }\n  return pcVar3;\n}" { (declaration "void *pvVar1;" primitive_type (pointer_declarator "*pvVar1" * identifier) ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "char *pcVar3;" primitive_type (pointer_declarator "*pcVar3" * identifier) ;) (declaration "size_t sVar4;" primitive_type identifier ;) (declaration "char *pcVar5;" primitive_type (pointer_declarator "*pcVar5" * identifier) ;) (declaration "undefined4 *puVar6;" type_identifier (pointer_declarator "*puVar6" * identifier) ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "int iVar9;" primitive_type identifier ;) (declaration "char *pcVar10;" primitive_type (pointer_declarator "*pcVar10" * identifier) ;) (declaration "char cVar11;" primitive_type identifier ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "char *local_24;" primitive_type (pointer_declarator "*local_24" * identifier) ;) (declaration "int local_20;" primitive_type identifier ;) (declaration "undefined4 uStack_14;" type_identifier identifier ;) (expression_statement "uStack_14 = 0x8d029;" (assignment_expression "uStack_14 = 0x8d029" identifier = number_literal) ;) (expression_statement "local_20 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "local_20 = *(int *)(in_GS_OFFSET + 0x14)" identifier = (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) ;) (if_statement "if (param_2 == 0) {\n    rl_filename_stat_hook = FUN_0008f310;\n    if (DAT_00151468 == (char *)0x0) {\nLAB_0008d085:\n      if (DAT_00151464 != (char *)0x0) goto LAB_0008d089;\n    }\n    else {\n      if (DAT_00151468 != DAT_00151464) {\n        free(DAT_00151468);\n        goto LAB_0008d085;\n      }\nLAB_0008d089:\n      free(DAT_00151464);\n    }\n    DAT_00151460 = 0;\n    DAT_0015145c = 0;\n    iVar2 = absolute_pathname(param_1);\n    if (((iVar2 == 0) && (iVar2 = absolute_program(param_1), iVar2 == 0)) && (*param_1 != '~')) {\n      iVar2 = FUN_0008ac10(param_1);\n      DAT_00151458 = (uint)(iVar2 != 0);\n    }\n    else {\n      DAT_00151458 = 0;\n    }\n    DAT_00151454 = (char *)0x0;\n    pcVar3 = (char *)rl_variable_value("completion-ignore-case");\n    DAT_00151450 = 0;\n    if ((*pcVar3 == 'o') && (pcVar3[1] == 'n')) {\n      DAT_00151450 = (uint)(pcVar3[2] == '\0');\n    }\n    if (DAT_001514d4 != (undefined4 *)0x0) {\n      free(DAT_001514d4);\n      DAT_001514d4 = (undefined4 *)0x0;\n    }\n    DAT_0015144c = FUN_0008cd10();\n    if ((DAT_0015144c == 0) && (iVar2 = absolute_program(param_1), iVar2 == 0)) {\n      sVar4 = strlen(param_1);\n      pcVar3 = (char *)xmalloc(sVar4 + 1);\n      pcVar3 = strcpy(pcVar3,param_1);\n      DAT_00151464 = pcVar3;\n      DAT_00151468 = pcVar3;\n      DAT_00151444 = strlen(pcVar3);\n      if ((rl_completion_found_quote != 0) && (rl_completion_quote_character == 0)) {\n        DAT_00151468 = (char *)FUN_00089940(pcVar3,0);\n      }\n      DAT_00151434 = get_string_value("PATH");\n      DAT_001514ec = 0;\n      DAT_00151430 = 0;\n      DAT_0015142c = 0;\n      if (DAT_00151428 != (void *)0x0) {\n        free(DAT_00151428);\n      }\n      DAT_00151428 = (void *)all_visible_functions();\n      if (DAT_00151424 != (void *)0x0) {\n        free(DAT_00151424);\n      }\n      DAT_00151424 = (void *)all_aliases();\n      goto LAB_0008d390;\n    }\n    if (*param_1 == '~') {\n      DAT_00151464 = (char *)bash_tilde_expand(param_1,0);\n      sVar4 = strlen(param_1);\n      pcVar3 = (char *)xmalloc(sVar4 + 1);\n      pcVar3 = strcpy(pcVar3,param_1);\n      DAT_00151448 = pcVar3;\n      pcVar5 = strchr(pcVar3,0x2f);\n      if (pcVar5 == (char *)0x0) {\n        free(pcVar3);\n        DAT_00151448 = (char *)0x0;\n      }\n      else {\n        *pcVar5 = '\0';\n      }\n    }\n    else {\n      sVar4 = strlen(param_1);\n      if (dircomplete_expand == 0) {\n        pcVar3 = (char *)xmalloc(sVar4 + 1);\n        DAT_00151464 = strcpy(pcVar3,param_1);\n      }\n      else {\n        pcVar3 = (char *)xmalloc(sVar4 + 1);\n        DAT_00151464 = strcpy(pcVar3,param_1);\n        FUN_0008c7b0(&DAT_00151464);\n      }\n    }\n    DAT_00151468 = DAT_00151464;\n    if ((rl_completion_found_quote != 0) && (rl_completion_quote_character == 0)) {\n      pcVar3 = (char *)FUN_00089940(DAT_00151464,0);\n      DAT_00151468 = pcVar3;\n      free(DAT_00151464);\n      DAT_00151464 = pcVar3;\n    }\n    pcVar3 = DAT_00151464;\n    DAT_00151444 = strlen(DAT_00151464);\n    if (DAT_00151440 != (char *)0x0) {\n      free(DAT_00151440);\n      pcVar3 = DAT_00151464;\n    }\n    sVar4 = strlen(pcVar3);\n    pcVar5 = (char *)xmalloc(sVar4 + 1);\n    DAT_0015143c = strcpy(pcVar5,pcVar3);\n    DAT_00151438 = 0;\n    DAT_00151440 = DAT_0015143c;\n    if (DAT_0015144c == 0) {\n      uVar8 = dircomplete_expand;\n      if ((dircomplete_expand != 0) &&\n         (iVar2 = path_dot_or_dotdot(DAT_0015143c), uVar8 = DAT_00151438, iVar2 != 0)) {\n        dircomplete_expand = 1;\n        rl_directory_rewrite_hook = FUN_0008c7b0;\n        rl_directory_completion_hook = (code *)0x0;\n      }\n      DAT_0015145c = 4;\n      pcVar3 = DAT_0015143c;\n      do {\n        do {\n          while( true ) {\n            DAT_00151454 = (char *)rl_filename_completion_function(pcVar3,uVar8);\n            if ((DAT_0015145c == 4) && (dircomplete_expand != 0)) {\n              rl_directory_completion_hook = FUN_0008c7b0;\n              rl_directory_rewrite_hook = (code *)0x0;\n            }\n            DAT_00151438 = 1;\n            if (DAT_00151454 == (char *)0x0) break;\n            iVar2 = absolute_program(DAT_00151464);\n            pcVar5 = DAT_00151454;\n            if (iVar2 == 0) {\n              pcVar3 = strrchr(DAT_00151454,0x2f);\n              if (pcVar3 != (char *)0x0) {\n                pcVar3 = pcVar3 + 1;\n                if (DAT_00151450 == 0) {\n                  iVar2 = strncmp(pcVar3,DAT_00151464,DAT_00151444);\n                }\n                else {\n                  iVar2 = strncasecmp(pcVar3,DAT_00151464,DAT_00151444);\n                }\n                if (iVar2 == 0) {\n                  sVar4 = strlen(pcVar3);\n                  pcVar5 = (char *)xmalloc(sVar4 + 1);\n                  pcVar3 = strcpy(pcVar5,pcVar3);\n                  goto LAB_0008d6a4;\n                }\n              }\n            }\n            else {\n              if (DAT_00151450 == 0) {\n                iVar2 = strncmp(DAT_00151454,DAT_00151464,DAT_00151444);\n              }\n              else {\n                iVar2 = strncasecmp(DAT_00151454,DAT_00151464,DAT_00151444);\n              }\n              if (*param_1 == '~') {\n                pcVar3 = (char *)FUN_0008a220();\n              }\n              else {\n                sVar4 = strlen(pcVar5);\n                pcVar3 = (char *)xmalloc(sVar4 + 1);\n                pcVar3 = strcpy(pcVar3,pcVar5);\n              }\n              pcVar5 = DAT_00151454;\n              if (iVar2 == 0) {\nLAB_0008d6a4:\n                iVar2 = DAT_00151460;\n                pcVar10 = DAT_00151454;\n                sVar4 = strlen(DAT_00151454);\n                pcVar5 = (char *)xmalloc(sVar4 + 1);\n                local_24 = strcpy(pcVar5,pcVar10);\n                FUN_0008c7b0(&local_24);\n                if (iVar2 == 0) {\n                  iVar2 = executable_or_directory(local_24);\n                }\n                else {\n                  iVar2 = executable_file(local_24);\n                }\n                free(local_24);\n                pcVar5 = DAT_00151454;\n                if (iVar2 != 0) {\n                  if (pcVar10 != DAT_00151454) {\n                    free(pcVar10);\n                  }\n                  free(pcVar5);\n                  DAT_00151454 = "";\n                  goto LAB_0008d5c8;\n                }\n                free(pcVar3);\n                if (pcVar10 != pcVar5) {\n                  free(pcVar10);\n                }\n              }\n              else {\n                free(pcVar3);\n              }\n            }\n            free(pcVar5);\n            uVar8 = DAT_00151438;\n            pcVar3 = DAT_0015143c;\n          }\n          iVar2 = absolute_program(DAT_00151464);\n          if (iVar2 != 0) goto LAB_0008dac4;\nLAB_0008d5f6:\n          uVar8 = (uint)(DAT_00151454 != (char *)0x0);\n          pcVar3 = DAT_0015143c;\n          DAT_00151438 = uVar8;\n        } while (DAT_00151454 != (char *)0x0);\n        if (((DAT_00151434 == 0) || (*(char *)(DAT_00151434 + DAT_00151430) == '\0')) ||\n           (pcVar3 = (char *)extract_colon_unit(DAT_00151434,&DAT_00151430), pcVar3 == (char *)0x0))\n        goto LAB_0008dac4;\n        DAT_00151460 = 1;\n        cVar11 = *pcVar3;\n        if (cVar11 == '\0') {\n          free(pcVar3);\n          pcVar3 = (char *)xmalloc(2);\n          pcVar3[0] = '.';\n          pcVar3[1] = '\0';\n          cVar11 = '.';\n        }\n        pcVar5 = pcVar3;\n        if (cVar11 == '~') {\n          pcVar5 = (char *)bash_tilde_expand(pcVar3,0);\n          free(pcVar3);\n          cVar11 = *pcVar5;\n        }\n        pcVar3 = DAT_00151440;\n        if ((cVar11 == '.') && (pcVar5[1] == '\0')) {\n          DAT_001514ec = 1;\n        }\n        if (DAT_0015143c == (char *)0x0) {\nLAB_0008dbfe:\n          if (pcVar3 != (char *)0x0) goto LAB_0008de5f;\n        }\n        else {\n          if (DAT_0015143c != DAT_00151440) {\n            free(DAT_0015143c);\n            goto LAB_0008dbfe;\n          }\nLAB_0008de5f:\n          free(pcVar3);\n        }\n        pcVar3 = (char *)sh_makepath(pcVar5,DAT_00151464,0);\n        DAT_00151440 = pcVar3;\n        pcVar10 = strpbrk(pcVar3,"\"\'\\");\n        if (pcVar10 != (char *)0x0) {\n          pcVar3 = (char *)sh_backslash_quote(pcVar3,&DAT_00151500,0);\n        }\n        DAT_0015143c = pcVar3;\n        free(pcVar5);\n        uVar8 = DAT_00151438;\n      } while( true );\n    }\n    DAT_0015145c = 5;\nLAB_0008d218:\n    glob_ignore_case = DAT_00151450;\n    puVar6 = (undefined4 *)shell_glob_filename(DAT_00151464);\n    glob_ignore_case = 0;\n    if ((puVar6 == (undefined4 *)PTR_glob_error_return_00149f60) || (puVar6 == (undefined4 *)0x0)) {\n      DAT_001514d4 = (undefined4 *)0x0;\n      pcVar3 = (char *)0x0;\n      goto LAB_0008d5c8;\n    }\n    DAT_0015142c = 0;\n    DAT_001514d4 = puVar6;\n    if ((puVar6[1] != 0) && (rl_completion_type == 9)) {\nLAB_0008dac4:\n      pcVar3 = (char *)0x0;\n      goto LAB_0008d5c8;\n    }\n    iVar2 = 1;\n  }\n  else {\nLAB_0008d390:\n    pcVar3 = DAT_00151464;\n    uVar8 = DAT_00151450;\n    sVar4 = DAT_00151444;\n    pvVar1 = DAT_00151424;\n    iVar2 = DAT_0015142c;\n    if (DAT_0015145c == 1) {\nLAB_0008d960:\n      do {\n        pcVar5 = (&word_token_alist)[iVar2 * 2];\n        if (pcVar5 == (char *)0x0) {\n          DAT_0015142c = 0;\n          DAT_0015145c = DAT_0015145c + 1;\n          uVar8 = DAT_00151450;\n          pvVar1 = DAT_00151428;\n          goto LAB_0008d840;\n        }\n        iVar2 = iVar2 + 1;\n        DAT_0015142c = iVar2;\n      } while ((sVar4 != 0) &&\n              ((*pcVar5 != *pcVar3 || (iVar9 = strncmp(pcVar5,pcVar3,sVar4), iVar9 != 0))));\nLAB_0008d451:\n      sVar4 = strlen(pcVar5);\n      pcVar3 = (char *)xmalloc(sVar4 + 1);\n      pcVar3 = strcpy(pcVar3,pcVar5);\n      goto LAB_0008d5c8;\n    }\n    if (DAT_0015145c < 2) {\n      if (DAT_0015145c == 0) {\n        do {\n          while( true ) {\n            if ((pvVar1 == (void *)0x0) ||\n               (puVar6 = *(undefined4 **)((int)pvVar1 + DAT_0015142c * 4),\n               puVar6 == (undefined4 *)0x0)) {\n              DAT_0015145c = 1;\n              iVar2 = 0;\n              goto LAB_0008d960;\n            }\n            DAT_0015142c = DAT_0015142c + 1;\n            pcVar5 = (char *)*puVar6;\n            if (uVar8 != 0) break;\n            if ((sVar4 == 0) ||\n               ((*pcVar5 == *pcVar3 && (iVar2 = strncmp(pcVar5,pcVar3,sVar4), iVar2 == 0))))\n            goto LAB_0008d451;\n          }\n          iVar2 = strncasecmp(pcVar5,pcVar3,sVar4);\n        } while (iVar2 != 0);\n        goto LAB_0008d451;\n      }\n    }\n    else {\n      pvVar1 = DAT_00151428;\n      if (DAT_0015145c == 2) {\nLAB_0008d840:\n        do {\n          if ((pvVar1 == (void *)0x0) ||\n             (puVar6 = *(undefined4 **)((int)pvVar1 + DAT_0015142c * 4), puVar6 == (undefined4 *)0x0\n             )) {\n            DAT_0015142c = 0;\n            DAT_0015145c = DAT_0015145c + 1;\n            goto LAB_0008d3bd;\n          }\n          DAT_0015142c = DAT_0015142c + 1;\n          pcVar5 = (char *)*puVar6;\n          if (uVar8 == 0) {\n            if ((sVar4 == 0) ||\n               ((*pcVar5 == *pcVar3 && (iVar2 = strncmp(pcVar5,pcVar3,sVar4), iVar2 == 0)))) break;\n            goto LAB_0008d840;\n          }\n          iVar2 = strncasecmp(pcVar5,pcVar3,sVar4);\n        } while (iVar2 != 0);\n        sVar4 = strlen(pcVar5);\n        pcVar3 = (char *)xmalloc(sVar4 + 1);\n        pcVar3 = strcpy(pcVar3,pcVar5);\n        goto LAB_0008d5c8;\n      }\n      if (DAT_0015145c == 3) {\nLAB_0008d3bd:\n        pcVar3 = DAT_00151464;\n        sVar4 = DAT_00151444;\n        iVar2 = num_shell_builtins;\n        if (DAT_0015142c < num_shell_builtins) {\n          puVar6 = (undefined4 *)(shell_builtins + DAT_0015142c * 0x18);\n          do {\n            iVar9 = DAT_0015142c;\n            if (((puVar6[1] != 0) && ((*(byte *)(puVar6 + 2) & 1) != 0)) &&\n               ((pcVar5 = (char *)*puVar6, sVar4 == 0 ||\n                ((*pcVar5 == *pcVar3 && (iVar7 = strncmp(pcVar5,pcVar3,sVar4), iVar7 == 0)))))) {\n              DAT_0015142c = iVar9 + 1;\n              goto LAB_0008d451;\n            }\n            DAT_0015142c = iVar9 + 1;\n            puVar6 = puVar6 + 6;\n          } while (DAT_0015142c != iVar2);\n        }\n        DAT_0015145c = DAT_0015145c + 1;\n        DAT_0015142c = 0;\n      }\n    }\n    if (DAT_0015144c == 0) {\n      if (DAT_00151458 == 0) goto LAB_0008d5f6;\n      DAT_00151458 = 0;\n      sVar4 = strlen(param_1);\n      pcVar3 = (char *)xmalloc(sVar4 + 1);\n      pcVar3 = strcpy(pcVar3,param_1);\n      goto LAB_0008d5c8;\n    }\n    if (param_2 == 0) goto LAB_0008d218;\n    iVar2 = DAT_0015142c + 1;\n    puVar6 = DAT_001514d4 + DAT_0015142c;\n  }" if (parenthesized_expression "(param_2 == 0)" ( (binary_expression "param_2 == 0" identifier == number_literal) )) (compound_statement "{\n    rl_filename_stat_hook = FUN_0008f310;\n    if (DAT_00151468 == (char *)0x0) {\nLAB_0008d085:\n      if (DAT_00151464 != (char *)0x0) goto LAB_0008d089;\n    }\n    else {\n      if (DAT_00151468 != DAT_00151464) {\n        free(DAT_00151468);\n        goto LAB_0008d085;\n      }\nLAB_0008d089:\n      free(DAT_00151464);\n    }\n    DAT_00151460 = 0;\n    DAT_0015145c = 0;\n    iVar2 = absolute_pathname(param_1);\n    if (((iVar2 == 0) && (iVar2 = absolute_program(param_1), iVar2 == 0)) && (*param_1 != '~')) {\n      iVar2 = FUN_0008ac10(param_1);\n      DAT_00151458 = (uint)(iVar2 != 0);\n    }\n    else {\n      DAT_00151458 = 0;\n    }\n    DAT_00151454 = (char *)0x0;\n    pcVar3 = (char *)rl_variable_value("completion-ignore-case");\n    DAT_00151450 = 0;\n    if ((*pcVar3 == 'o') && (pcVar3[1] == 'n')) {\n      DAT_00151450 = (uint)(pcVar3[2] == '\0');\n    }\n    if (DAT_001514d4 != (undefined4 *)0x0) {\n      free(DAT_001514d4);\n      DAT_001514d4 = (undefined4 *)0x0;\n    }\n    DAT_0015144c = FUN_0008cd10();\n    if ((DAT_0015144c == 0) && (iVar2 = absolute_program(param_1), iVar2 == 0)) {\n      sVar4 = strlen(param_1);\n      pcVar3 = (char *)xmalloc(sVar4 + 1);\n      pcVar3 = strcpy(pcVar3,param_1);\n      DAT_00151464 = pcVar3;\n      DAT_00151468 = pcVar3;\n      DAT_00151444 = strlen(pcVar3);\n      if ((rl_completion_found_quote != 0) && (rl_completion_quote_character == 0)) {\n        DAT_00151468 = (char *)FUN_00089940(pcVar3,0);\n      }\n      DAT_00151434 = get_string_value("PATH");\n      DAT_001514ec = 0;\n      DAT_00151430 = 0;\n      DAT_0015142c = 0;\n      if (DAT_00151428 != (void *)0x0) {\n        free(DAT_00151428);\n      }\n      DAT_00151428 = (void *)all_visible_functions();\n      if (DAT_00151424 != (void *)0x0) {\n        free(DAT_00151424);\n      }\n      DAT_00151424 = (void *)all_aliases();\n      goto LAB_0008d390;\n    }\n    if (*param_1 == '~') {\n      DAT_00151464 = (char *)bash_tilde_expand(param_1,0);\n      sVar4 = strlen(param_1);\n      pcVar3 = (char *)xmalloc(sVar4 + 1);\n      pcVar3 = strcpy(pcVar3,param_1);\n      DAT_00151448 = pcVar3;\n      pcVar5 = strchr(pcVar3,0x2f);\n      if (pcVar5 == (char *)0x0) {\n        free(pcVar3);\n        DAT_00151448 = (char *)0x0;\n      }\n      else {\n        *pcVar5 = '\0';\n      }\n    }\n    else {\n      sVar4 = strlen(param_1);\n      if (dircomplete_expand == 0) {\n        pcVar3 = (char *)xmalloc(sVar4 + 1);\n        DAT_00151464 = strcpy(pcVar3,param_1);\n      }\n      else {\n        pcVar3 = (char *)xmalloc(sVar4 + 1);\n        DAT_00151464 = strcpy(pcVar3,param_1);\n        FUN_0008c7b0(&DAT_00151464);\n      }\n    }\n    DAT_00151468 = DAT_00151464;\n    if ((rl_completion_found_quote != 0) && (rl_completion_quote_character == 0)) {\n      pcVar3 = (char *)FUN_00089940(DAT_00151464,0);\n      DAT_00151468 = pcVar3;\n      free(DAT_00151464);\n      DAT_00151464 = pcVar3;\n    }\n    pcVar3 = DAT_00151464;\n    DAT_00151444 = strlen(DAT_00151464);\n    if (DAT_00151440 != (char *)0x0) {\n      free(DAT_00151440);\n      pcVar3 = DAT_00151464;\n    }\n    sVar4 = strlen(pcVar3);\n    pcVar5 = (char *)xmalloc(sVar4 + 1);\n    DAT_0015143c = strcpy(pcVar5,pcVar3);\n    DAT_00151438 = 0;\n    DAT_00151440 = DAT_0015143c;\n    if (DAT_0015144c == 0) {\n      uVar8 = dircomplete_expand;\n      if ((dircomplete_expand != 0) &&\n         (iVar2 = path_dot_or_dotdot(DAT_0015143c), uVar8 = DAT_00151438, iVar2 != 0)) {\n        dircomplete_expand = 1;\n        rl_directory_rewrite_hook = FUN_0008c7b0;\n        rl_directory_completion_hook = (code *)0x0;\n      }\n      DAT_0015145c = 4;\n      pcVar3 = DAT_0015143c;\n      do {\n        do {\n          while( true ) {\n            DAT_00151454 = (char *)rl_filename_completion_function(pcVar3,uVar8);\n            if ((DAT_0015145c == 4) && (dircomplete_expand != 0)) {\n              rl_directory_completion_hook = FUN_0008c7b0;\n              rl_directory_rewrite_hook = (code *)0x0;\n            }\n            DAT_00151438 = 1;\n            if (DAT_00151454 == (char *)0x0) break;\n            iVar2 = absolute_program(DAT_00151464);\n            pcVar5 = DAT_00151454;\n            if (iVar2 == 0) {\n              pcVar3 = strrchr(DAT_00151454,0x2f);\n              if (pcVar3 != (char *)0x0) {\n                pcVar3 = pcVar3 + 1;\n                if (DAT_00151450 == 0) {\n                  iVar2 = strncmp(pcVar3,DAT_00151464,DAT_00151444);\n                }\n                else {\n                  iVar2 = strncasecmp(pcVar3,DAT_00151464,DAT_00151444);\n                }\n                if (iVar2 == 0) {\n                  sVar4 = strlen(pcVar3);\n                  pcVar5 = (char *)xmalloc(sVar4 + 1);\n                  pcVar3 = strcpy(pcVar5,pcVar3);\n                  goto LAB_0008d6a4;\n                }\n              }\n            }\n            else {\n              if (DAT_00151450 == 0) {\n                iVar2 = strncmp(DAT_00151454,DAT_00151464,DAT_00151444);\n              }\n              else {\n                iVar2 = strncasecmp(DAT_00151454,DAT_00151464,DAT_00151444);\n              }\n              if (*param_1 == '~') {\n                pcVar3 = (char *)FUN_0008a220();\n              }\n              else {\n                sVar4 = strlen(pcVar5);\n                pcVar3 = (char *)xmalloc(sVar4 + 1);\n                pcVar3 = strcpy(pcVar3,pcVar5);\n              }\n              pcVar5 = DAT_00151454;\n              if (iVar2 == 0) {\nLAB_0008d6a4:\n                iVar2 = DAT_00151460;\n                pcVar10 = DAT_00151454;\n                sVar4 = strlen(DAT_00151454);\n                pcVar5 = (char *)xmalloc(sVar4 + 1);\n                local_24 = strcpy(pcVar5,pcVar10);\n                FUN_0008c7b0(&local_24);\n                if (iVar2 == 0) {\n                  iVar2 = executable_or_directory(local_24);\n                }\n                else {\n                  iVar2 = executable_file(local_24);\n                }\n                free(local_24);\n                pcVar5 = DAT_00151454;\n                if (iVar2 != 0) {\n                  if (pcVar10 != DAT_00151454) {\n                    free(pcVar10);\n                  }\n                  free(pcVar5);\n                  DAT_00151454 = "";\n                  goto LAB_0008d5c8;\n                }\n                free(pcVar3);\n                if (pcVar10 != pcVar5) {\n                  free(pcVar10);\n                }\n              }\n              else {\n                free(pcVar3);\n              }\n            }\n            free(pcVar5);\n            uVar8 = DAT_00151438;\n            pcVar3 = DAT_0015143c;\n          }\n          iVar2 = absolute_program(DAT_00151464);\n          if (iVar2 != 0) goto LAB_0008dac4;\nLAB_0008d5f6:\n          uVar8 = (uint)(DAT_00151454 != (char *)0x0);\n          pcVar3 = DAT_0015143c;\n          DAT_00151438 = uVar8;\n        } while (DAT_00151454 != (char *)0x0);\n        if (((DAT_00151434 == 0) || (*(char *)(DAT_00151434 + DAT_00151430) == '\0')) ||\n           (pcVar3 = (char *)extract_colon_unit(DAT_00151434,&DAT_00151430), pcVar3 == (char *)0x0))\n        goto LAB_0008dac4;\n        DAT_00151460 = 1;\n        cVar11 = *pcVar3;\n        if (cVar11 == '\0') {\n          free(pcVar3);\n          pcVar3 = (char *)xmalloc(2);\n          pcVar3[0] = '.';\n          pcVar3[1] = '\0';\n          cVar11 = '.';\n        }\n        pcVar5 = pcVar3;\n        if (cVar11 == '~') {\n          pcVar5 = (char *)bash_tilde_expand(pcVar3,0);\n          free(pcVar3);\n          cVar11 = *pcVar5;\n        }\n        pcVar3 = DAT_00151440;\n        if ((cVar11 == '.') && (pcVar5[1] == '\0')) {\n          DAT_001514ec = 1;\n        }\n        if (DAT_0015143c == (char *)0x0) {\nLAB_0008dbfe:\n          if (pcVar3 != (char *)0x0) goto LAB_0008de5f;\n        }\n        else {\n          if (DAT_0015143c != DAT_00151440) {\n            free(DAT_0015143c);\n            goto LAB_0008dbfe;\n          }\nLAB_0008de5f:\n          free(pcVar3);\n        }\n        pcVar3 = (char *)sh_makepath(pcVar5,DAT_00151464,0);\n        DAT_00151440 = pcVar3;\n        pcVar10 = strpbrk(pcVar3,"\"\'\\");\n        if (pcVar10 != (char *)0x0) {\n          pcVar3 = (char *)sh_backslash_quote(pcVar3,&DAT_00151500,0);\n        }\n        DAT_0015143c = pcVar3;\n        free(pcVar5);\n        uVar8 = DAT_00151438;\n      } while( true );\n    }\n    DAT_0015145c = 5;\nLAB_0008d218:\n    glob_ignore_case = DAT_00151450;\n    puVar6 = (undefined4 *)shell_glob_filename(DAT_00151464);\n    glob_ignore_case = 0;\n    if ((puVar6 == (undefined4 *)PTR_glob_error_return_00149f60) || (puVar6 == (undefined4 *)0x0)) {\n      DAT_001514d4 = (undefined4 *)0x0;\n      pcVar3 = (char *)0x0;\n      goto LAB_0008d5c8;\n    }\n    DAT_0015142c = 0;\n    DAT_001514d4 = puVar6;\n    if ((puVar6[1] != 0) && (rl_completion_type == 9)) {\nLAB_0008dac4:\n      pcVar3 = (char *)0x0;\n      goto LAB_0008d5c8;\n    }\n    iVar2 = 1;\n  }" { (expression_statement "rl_filename_stat_hook = FUN_0008f310;" (assignment_expression "rl_filename_stat_hook = FUN_0008f310" identifier = identifier) ;) (if_statement "if (DAT_00151468 == (char *)0x0) {\nLAB_0008d085:\n      if (DAT_00151464 != (char *)0x0) goto LAB_0008d089;\n    }\n    else {\n      if (DAT_00151468 != DAT_00151464) {\n        free(DAT_00151468);\n        goto LAB_0008d085;\n      }\nLAB_0008d089:\n      free(DAT_00151464);\n    }" if (parenthesized_expression "(DAT_00151468 == (char *)0x0)" ( (binary_expression "DAT_00151468 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nLAB_0008d085:\n      if (DAT_00151464 != (char *)0x0) goto LAB_0008d089;\n    }" { (labeled_statement "LAB_0008d085:\n      if (DAT_00151464 != (char *)0x0) goto LAB_0008d089;" statement_identifier : (if_statement "if (DAT_00151464 != (char *)0x0) goto LAB_0008d089;" if (parenthesized_expression "(DAT_00151464 != (char *)0x0)" ( (binary_expression "DAT_00151464 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0008d089;" goto statement_identifier ;))) }) (else_clause "else {\n      if (DAT_00151468 != DAT_00151464) {\n        free(DAT_00151468);\n        goto LAB_0008d085;\n      }\nLAB_0008d089:\n      free(DAT_00151464);\n    }" else (compound_statement "{\n      if (DAT_00151468 != DAT_00151464) {\n        free(DAT_00151468);\n        goto LAB_0008d085;\n      }\nLAB_0008d089:\n      free(DAT_00151464);\n    }" { (if_statement "if (DAT_00151468 != DAT_00151464) {\n        free(DAT_00151468);\n        goto LAB_0008d085;\n      }" if (parenthesized_expression "(DAT_00151468 != DAT_00151464)" ( (binary_expression "DAT_00151468 != DAT_00151464" identifier != identifier) )) (compound_statement "{\n        free(DAT_00151468);\n        goto LAB_0008d085;\n      }" { (expression_statement "free(DAT_00151468);" (call_expression "free(DAT_00151468)" identifier (argument_list "(DAT_00151468)" ( identifier ))) ;) (goto_statement "goto LAB_0008d085;" goto statement_identifier ;) })) (labeled_statement "LAB_0008d089:\n      free(DAT_00151464);" statement_identifier : (expression_statement "free(DAT_00151464);" (call_expression "free(DAT_00151464)" identifier (argument_list "(DAT_00151464)" ( identifier ))) ;)) }))) (expression_statement "DAT_00151460 = 0;" (assignment_expression "DAT_00151460 = 0" identifier = number_literal) ;) (expression_statement "DAT_0015145c = 0;" (assignment_expression "DAT_0015145c = 0" identifier = number_literal) ;) (expression_statement "iVar2 = absolute_pathname(param_1);" (assignment_expression "iVar2 = absolute_pathname(param_1)" identifier = (call_expression "absolute_pathname(param_1)" identifier (argument_list "(param_1)" ( identifier )))) ;) (if_statement "if (((iVar2 == 0) && (iVar2 = absolute_program(param_1), iVar2 == 0)) && (*param_1 != '~')) {\n      iVar2 = FUN_0008ac10(param_1);\n      DAT_00151458 = (uint)(iVar2 != 0);\n    }\n    else {\n      DAT_00151458 = 0;\n    }" if (parenthesized_expression "(((iVar2 == 0) && (iVar2 = absolute_program(param_1), iVar2 == 0)) && (*param_1 != '~'))" ( (binary_expression "((iVar2 == 0) && (iVar2 = absolute_program(param_1), iVar2 == 0)) && (*param_1 != '~')" (parenthesized_expression "((iVar2 == 0) && (iVar2 = absolute_program(param_1), iVar2 == 0))" ( (binary_expression "(iVar2 == 0) && (iVar2 = absolute_program(param_1), iVar2 == 0)" (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) && (parenthesized_expression "(iVar2 = absolute_program(param_1), iVar2 == 0)" ( (comma_expression "iVar2 = absolute_program(param_1), iVar2 == 0" (assignment_expression "iVar2 = absolute_program(param_1)" identifier = (call_expression "absolute_program(param_1)" identifier (argument_list "(param_1)" ( identifier )))) , (binary_expression "iVar2 == 0" identifier == number_literal)) ))) )) && (parenthesized_expression "(*param_1 != '~')" ( (binary_expression "*param_1 != '~'" (pointer_expression "*param_1" * identifier) != (char_literal "'~'" ' character ')) ))) )) (compound_statement "{\n      iVar2 = FUN_0008ac10(param_1);\n      DAT_00151458 = (uint)(iVar2 != 0);\n    }" { (expression_statement "iVar2 = FUN_0008ac10(param_1);" (assignment_expression "iVar2 = FUN_0008ac10(param_1)" identifier = (call_expression "FUN_0008ac10(param_1)" identifier (argument_list "(param_1)" ( identifier )))) ;) (expression_statement "DAT_00151458 = (uint)(iVar2 != 0);" (assignment_expression "DAT_00151458 = (uint)(iVar2 != 0)" identifier = (call_expression "(uint)(iVar2 != 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar2 != 0)" ( (binary_expression "iVar2 != 0" identifier != number_literal) )))) ;) }) (else_clause "else {\n      DAT_00151458 = 0;\n    }" else (compound_statement "{\n      DAT_00151458 = 0;\n    }" { (expression_statement "DAT_00151458 = 0;" (assignment_expression "DAT_00151458 = 0" identifier = number_literal) ;) }))) (expression_statement "DAT_00151454 = (char *)0x0;" (assignment_expression "DAT_00151454 = (char *)0x0" identifier = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "pcVar3 = (char *)rl_variable_value("completion-ignore-case");" (assignment_expression "pcVar3 = (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_00151450 = 0;" (assignment_expression "DAT_00151450 = 0" identifier = number_literal) ;) (if_statement "if ((*pcVar3 == 'o') && (pcVar3[1] == 'n')) {\n      DAT_00151450 = (uint)(pcVar3[2] == '\0');\n    }" if (parenthesized_expression "((*pcVar3 == 'o') && (pcVar3[1] == 'n'))" ( (binary_expression "(*pcVar3 == 'o') && (pcVar3[1] == 'n')" (parenthesized_expression "(*pcVar3 == 'o')" ( (binary_expression "*pcVar3 == 'o'" (pointer_expression "*pcVar3" * identifier) == (char_literal "'o'" ' character ')) )) && (parenthesized_expression "(pcVar3[1] == 'n')" ( (binary_expression "pcVar3[1] == 'n'" (subscript_expression "pcVar3[1]" identifier [ number_literal ]) == (char_literal "'n'" ' character ')) ))) )) (compound_statement "{\n      DAT_00151450 = (uint)(pcVar3[2] == '\0');\n    }" { (expression_statement "DAT_00151450 = (uint)(pcVar3[2] == '\0');" (assignment_expression "DAT_00151450 = (uint)(pcVar3[2] == '\0')" identifier = (call_expression "(uint)(pcVar3[2] == '\0')" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(pcVar3[2] == '\0')" ( (binary_expression "pcVar3[2] == '\0'" (subscript_expression "pcVar3[2]" identifier [ number_literal ]) == (char_literal "'\0'" ' escape_sequence ')) )))) ;) })) (if_statement "if (DAT_001514d4 != (undefined4 *)0x0) {\n      free(DAT_001514d4);\n      DAT_001514d4 = (undefined4 *)0x0;\n    }" if (parenthesized_expression "(DAT_001514d4 != (undefined4 *)0x0)" ( (binary_expression "DAT_001514d4 != (undefined4 *)0x0" identifier != (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      free(DAT_001514d4);\n      DAT_001514d4 = (undefined4 *)0x0;\n    }" { (expression_statement "free(DAT_001514d4);" (call_expression "free(DAT_001514d4)" identifier (argument_list "(DAT_001514d4)" ( identifier ))) ;) (expression_statement "DAT_001514d4 = (undefined4 *)0x0;" (assignment_expression "DAT_001514d4 = (undefined4 *)0x0" identifier = (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) })) (expression_statement "DAT_0015144c = FUN_0008cd10();" (assignment_expression "DAT_0015144c = FUN_0008cd10()" identifier = (call_expression "FUN_0008cd10()" identifier (argument_list "()" ( )))) ;) (if_statement "if ((DAT_0015144c == 0) && (iVar2 = absolute_program(param_1), iVar2 == 0)) {\n      sVar4 = strlen(param_1);\n      pcVar3 = (char *)xmalloc(sVar4 + 1);\n      pcVar3 = strcpy(pcVar3,param_1);\n      DAT_00151464 = pcVar3;\n      DAT_00151468 = pcVar3;\n      DAT_00151444 = strlen(pcVar3);\n      if ((rl_completion_found_quote != 0) && (rl_completion_quote_character == 0)) {\n        DAT_00151468 = (char *)FUN_00089940(pcVar3,0);\n      }\n      DAT_00151434 = get_string_value("PATH");\n      DAT_001514ec = 0;\n      DAT_00151430 = 0;\n      DAT_0015142c = 0;\n      if (DAT_00151428 != (void *)0x0) {\n        free(DAT_00151428);\n      }\n      DAT_00151428 = (void *)all_visible_functions();\n      if (DAT_00151424 != (void *)0x0) {\n        free(DAT_00151424);\n      }\n      DAT_00151424 = (void *)all_aliases();\n      goto LAB_0008d390;\n    }" if (parenthesized_expression "((DAT_0015144c == 0) && (iVar2 = absolute_program(param_1), iVar2 == 0))" ( (binary_expression "(DAT_0015144c == 0) && (iVar2 = absolute_program(param_1), iVar2 == 0)" (parenthesized_expression "(DAT_0015144c == 0)" ( (binary_expression "DAT_0015144c == 0" identifier == number_literal) )) && (parenthesized_expression "(iVar2 = absolute_program(param_1), iVar2 == 0)" ( (comma_expression "iVar2 = absolute_program(param_1), iVar2 == 0" (assignment_expression "iVar2 = absolute_program(param_1)" identifier = (call_expression "absolute_program(param_1)" identifier (argument_list "(param_1)" ( identifier )))) , (binary_expression "iVar2 == 0" identifier == number_literal)) ))) )) (compound_statement "{\n      sVar4 = strlen(param_1);\n      pcVar3 = (char *)xmalloc(sVar4 + 1);\n      pcVar3 = strcpy(pcVar3,param_1);\n      DAT_00151464 = pcVar3;\n      DAT_00151468 = pcVar3;\n      DAT_00151444 = strlen(pcVar3);\n      if ((rl_completion_found_quote != 0) && (rl_completion_quote_character == 0)) {\n        DAT_00151468 = (char *)FUN_00089940(pcVar3,0);\n      }\n      DAT_00151434 = get_string_value("PATH");\n      DAT_001514ec = 0;\n      DAT_00151430 = 0;\n      DAT_0015142c = 0;\n      if (DAT_00151428 != (void *)0x0) {\n        free(DAT_00151428);\n      }\n      DAT_00151428 = (void *)all_visible_functions();\n      if (DAT_00151424 != (void *)0x0) {\n        free(DAT_00151424);\n      }\n      DAT_00151424 = (void *)all_aliases();\n      goto LAB_0008d390;\n    }" { (expression_statement "sVar4 = strlen(param_1);" (assignment_expression "sVar4 = strlen(param_1)" identifier = (call_expression "strlen(param_1)" identifier (argument_list "(param_1)" ( identifier )))) ;) (expression_statement "pcVar3 = (char *)xmalloc(sVar4 + 1);" (assignment_expression "pcVar3 = (char *)xmalloc(sVar4 + 1)" identifier = (cast_expression "(char *)xmalloc(sVar4 + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(sVar4 + 1)" identifier (argument_list "(sVar4 + 1)" ( (binary_expression "sVar4 + 1" identifier + number_literal) ))))) ;) (expression_statement "pcVar3 = strcpy(pcVar3,param_1);" (assignment_expression "pcVar3 = strcpy(pcVar3,param_1)" identifier = (call_expression "strcpy(pcVar3,param_1)" identifier (argument_list "(pcVar3,param_1)" ( identifier , identifier )))) ;) (expression_statement "DAT_00151464 = pcVar3;" (assignment_expression "DAT_00151464 = pcVar3" identifier = identifier) ;) (expression_statement "DAT_00151468 = pcVar3;" (assignment_expression "DAT_00151468 = pcVar3" identifier = identifier) ;) (expression_statement "DAT_00151444 = strlen(pcVar3);" (assignment_expression "DAT_00151444 = strlen(pcVar3)" identifier = (call_expression "strlen(pcVar3)" identifier (argument_list "(pcVar3)" ( identifier )))) ;) (if_statement "if ((rl_completion_found_quote != 0) && (rl_completion_quote_character == 0)) {\n        DAT_00151468 = (char *)FUN_00089940(pcVar3,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_00151468 = (char *)FUN_00089940(pcVar3,0);\n      }" { (expression_statement "DAT_00151468 = (char *)FUN_00089940(pcVar3,0);" (assignment_expression "DAT_00151468 = (char *)FUN_00089940(pcVar3,0)" identifier = (cast_expression "(char *)FUN_00089940(pcVar3,0)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00089940(pcVar3,0)" identifier (argument_list "(pcVar3,0)" ( identifier , number_literal ))))) ;) })) (expression_statement "DAT_00151434 = get_string_value("PATH");" (assignment_expression "DAT_00151434 = get_string_value("PATH")" identifier = (call_expression "get_string_value("PATH")" identifier (argument_list "("PATH")" ( (string_literal ""PATH"" " string_content ") )))) ;) (expression_statement "DAT_001514ec = 0;" (assignment_expression "DAT_001514ec = 0" identifier = number_literal) ;) (expression_statement "DAT_00151430 = 0;" (assignment_expression "DAT_00151430 = 0" identifier = number_literal) ;) (expression_statement "DAT_0015142c = 0;" (assignment_expression "DAT_0015142c = 0" identifier = number_literal) ;) (if_statement "if (DAT_00151428 != (void *)0x0) {\n        free(DAT_00151428);\n      }" if (parenthesized_expression "(DAT_00151428 != (void *)0x0)" ( (binary_expression "DAT_00151428 != (void *)0x0" identifier != (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        free(DAT_00151428);\n      }" { (expression_statement "free(DAT_00151428);" (call_expression "free(DAT_00151428)" identifier (argument_list "(DAT_00151428)" ( identifier ))) ;) })) (expression_statement "DAT_00151428 = (void *)all_visible_functions();" (assignment_expression "DAT_00151428 = (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_00151424 != (void *)0x0) {\n        free(DAT_00151424);\n      }" if (parenthesized_expression "(DAT_00151424 != (void *)0x0)" ( (binary_expression "DAT_00151424 != (void *)0x0" identifier != (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        free(DAT_00151424);\n      }" { (expression_statement "free(DAT_00151424);" (call_expression "free(DAT_00151424)" identifier (argument_list "(DAT_00151424)" ( identifier ))) ;) })) (expression_statement "DAT_00151424 = (void *)all_aliases();" (assignment_expression "DAT_00151424 = (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_0008d390;" goto statement_identifier ;) })) (if_statement "if (*param_1 == '~') {\n      DAT_00151464 = (char *)bash_tilde_expand(param_1,0);\n      sVar4 = strlen(param_1);\n      pcVar3 = (char *)xmalloc(sVar4 + 1);\n      pcVar3 = strcpy(pcVar3,param_1);\n      DAT_00151448 = pcVar3;\n      pcVar5 = strchr(pcVar3,0x2f);\n      if (pcVar5 == (char *)0x0) {\n        free(pcVar3);\n        DAT_00151448 = (char *)0x0;\n      }\n      else {\n        *pcVar5 = '\0';\n      }\n    }\n    else {\n      sVar4 = strlen(param_1);\n      if (dircomplete_expand == 0) {\n        pcVar3 = (char *)xmalloc(sVar4 + 1);\n        DAT_00151464 = strcpy(pcVar3,param_1);\n      }\n      else {\n        pcVar3 = (char *)xmalloc(sVar4 + 1);\n        DAT_00151464 = strcpy(pcVar3,param_1);\n        FUN_0008c7b0(&DAT_00151464);\n      }\n    }" if (parenthesized_expression "(*param_1 == '~')" ( (binary_expression "*param_1 == '~'" (pointer_expression "*param_1" * identifier) == (char_literal "'~'" ' character ')) )) (compound_statement "{\n      DAT_00151464 = (char *)bash_tilde_expand(param_1,0);\n      sVar4 = strlen(param_1);\n      pcVar3 = (char *)xmalloc(sVar4 + 1);\n      pcVar3 = strcpy(pcVar3,param_1);\n      DAT_00151448 = pcVar3;\n      pcVar5 = strchr(pcVar3,0x2f);\n      if (pcVar5 == (char *)0x0) {\n        free(pcVar3);\n        DAT_00151448 = (char *)0x0;\n      }\n      else {\n        *pcVar5 = '\0';\n      }\n    }" { (expression_statement "DAT_00151464 = (char *)bash_tilde_expand(param_1,0);" (assignment_expression "DAT_00151464 = (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 "sVar4 = strlen(param_1);" (assignment_expression "sVar4 = strlen(param_1)" identifier = (call_expression "strlen(param_1)" identifier (argument_list "(param_1)" ( identifier )))) ;) (expression_statement "pcVar3 = (char *)xmalloc(sVar4 + 1);" (assignment_expression "pcVar3 = (char *)xmalloc(sVar4 + 1)" identifier = (cast_expression "(char *)xmalloc(sVar4 + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(sVar4 + 1)" identifier (argument_list "(sVar4 + 1)" ( (binary_expression "sVar4 + 1" identifier + number_literal) ))))) ;) (expression_statement "pcVar3 = strcpy(pcVar3,param_1);" (assignment_expression "pcVar3 = strcpy(pcVar3,param_1)" identifier = (call_expression "strcpy(pcVar3,param_1)" identifier (argument_list "(pcVar3,param_1)" ( identifier , identifier )))) ;) (expression_statement "DAT_00151448 = pcVar3;" (assignment_expression "DAT_00151448 = pcVar3" identifier = identifier) ;) (expression_statement "pcVar5 = strchr(pcVar3,0x2f);" (assignment_expression "pcVar5 = strchr(pcVar3,0x2f)" identifier = (call_expression "strchr(pcVar3,0x2f)" identifier (argument_list "(pcVar3,0x2f)" ( identifier , number_literal )))) ;) (if_statement "if (pcVar5 == (char *)0x0) {\n        free(pcVar3);\n        DAT_00151448 = (char *)0x0;\n      }\n      else {\n        *pcVar5 = '\0';\n      }" if (parenthesized_expression "(pcVar5 == (char *)0x0)" ( (binary_expression "pcVar5 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        free(pcVar3);\n        DAT_00151448 = (char *)0x0;\n      }" { (expression_statement "free(pcVar3);" (call_expression "free(pcVar3)" identifier (argument_list "(pcVar3)" ( identifier ))) ;) (expression_statement "DAT_00151448 = (char *)0x0;" (assignment_expression "DAT_00151448 = (char *)0x0" identifier = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }) (else_clause "else {\n        *pcVar5 = '\0';\n      }" else (compound_statement "{\n        *pcVar5 = '\0';\n      }" { (expression_statement "*pcVar5 = '\0';" (assignment_expression "*pcVar5 = '\0'" (pointer_expression "*pcVar5" * identifier) = (char_literal "'\0'" ' escape_sequence ')) ;) }))) }) (else_clause "else {\n      sVar4 = strlen(param_1);\n      if (dircomplete_expand == 0) {\n        pcVar3 = (char *)xmalloc(sVar4 + 1);\n        DAT_00151464 = strcpy(pcVar3,param_1);\n      }\n      else {\n        pcVar3 = (char *)xmalloc(sVar4 + 1);\n        DAT_00151464 = strcpy(pcVar3,param_1);\n        FUN_0008c7b0(&DAT_00151464);\n      }\n    }" else (compound_statement "{\n      sVar4 = strlen(param_1);\n      if (dircomplete_expand == 0) {\n        pcVar3 = (char *)xmalloc(sVar4 + 1);\n        DAT_00151464 = strcpy(pcVar3,param_1);\n      }\n      else {\n        pcVar3 = (char *)xmalloc(sVar4 + 1);\n        DAT_00151464 = strcpy(pcVar3,param_1);\n        FUN_0008c7b0(&DAT_00151464);\n      }\n    }" { (expression_statement "sVar4 = strlen(param_1);" (assignment_expression "sVar4 = strlen(param_1)" identifier = (call_expression "strlen(param_1)" identifier (argument_list "(param_1)" ( identifier )))) ;) (if_statement "if (dircomplete_expand == 0) {\n        pcVar3 = (char *)xmalloc(sVar4 + 1);\n        DAT_00151464 = strcpy(pcVar3,param_1);\n      }\n      else {\n        pcVar3 = (char *)xmalloc(sVar4 + 1);\n        DAT_00151464 = strcpy(pcVar3,param_1);\n        FUN_0008c7b0(&DAT_00151464);\n      }" if (parenthesized_expression "(dircomplete_expand == 0)" ( (binary_expression "dircomplete_expand == 0" identifier == number_literal) )) (compound_statement "{\n        pcVar3 = (char *)xmalloc(sVar4 + 1);\n        DAT_00151464 = strcpy(pcVar3,param_1);\n      }" { (expression_statement "pcVar3 = (char *)xmalloc(sVar4 + 1);" (assignment_expression "pcVar3 = (char *)xmalloc(sVar4 + 1)" identifier = (cast_expression "(char *)xmalloc(sVar4 + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(sVar4 + 1)" identifier (argument_list "(sVar4 + 1)" ( (binary_expression "sVar4 + 1" identifier + number_literal) ))))) ;) (expression_statement "DAT_00151464 = strcpy(pcVar3,param_1);" (assignment_expression "DAT_00151464 = strcpy(pcVar3,param_1)" identifier = (call_expression "strcpy(pcVar3,param_1)" identifier (argument_list "(pcVar3,param_1)" ( identifier , identifier )))) ;) }) (else_clause "else {\n        pcVar3 = (char *)xmalloc(sVar4 + 1);\n        DAT_00151464 = strcpy(pcVar3,param_1);\n        FUN_0008c7b0(&DAT_00151464);\n      }" else (compound_statement "{\n        pcVar3 = (char *)xmalloc(sVar4 + 1);\n        DAT_00151464 = strcpy(pcVar3,param_1);\n        FUN_0008c7b0(&DAT_00151464);\n      }" { (expression_statement "pcVar3 = (char *)xmalloc(sVar4 + 1);" (assignment_expression "pcVar3 = (char *)xmalloc(sVar4 + 1)" identifier = (cast_expression "(char *)xmalloc(sVar4 + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(sVar4 + 1)" identifier (argument_list "(sVar4 + 1)" ( (binary_expression "sVar4 + 1" identifier + number_literal) ))))) ;) (expression_statement "DAT_00151464 = strcpy(pcVar3,param_1);" (assignment_expression "DAT_00151464 = strcpy(pcVar3,param_1)" identifier = (call_expression "strcpy(pcVar3,param_1)" identifier (argument_list "(pcVar3,param_1)" ( identifier , identifier )))) ;) (expression_statement "FUN_0008c7b0(&DAT_00151464);" (call_expression "FUN_0008c7b0(&DAT_00151464)" identifier (argument_list "(&DAT_00151464)" ( (pointer_expression "&DAT_00151464" & identifier) ))) ;) }))) }))) (expression_statement "DAT_00151468 = DAT_00151464;" (assignment_expression "DAT_00151468 = DAT_00151464" identifier = identifier) ;) (if_statement "if ((rl_completion_found_quote != 0) && (rl_completion_quote_character == 0)) {\n      pcVar3 = (char *)FUN_00089940(DAT_00151464,0);\n      DAT_00151468 = pcVar3;\n      free(DAT_00151464);\n      DAT_00151464 = pcVar3;\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      pcVar3 = (char *)FUN_00089940(DAT_00151464,0);\n      DAT_00151468 = pcVar3;\n      free(DAT_00151464);\n      DAT_00151464 = pcVar3;\n    }" { (expression_statement "pcVar3 = (char *)FUN_00089940(DAT_00151464,0);" (assignment_expression "pcVar3 = (char *)FUN_00089940(DAT_00151464,0)" identifier = (cast_expression "(char *)FUN_00089940(DAT_00151464,0)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00089940(DAT_00151464,0)" identifier (argument_list "(DAT_00151464,0)" ( identifier , number_literal ))))) ;) (expression_statement "DAT_00151468 = pcVar3;" (assignment_expression "DAT_00151468 = pcVar3" identifier = identifier) ;) (expression_statement "free(DAT_00151464);" (call_expression "free(DAT_00151464)" identifier (argument_list "(DAT_00151464)" ( identifier ))) ;) (expression_statement "DAT_00151464 = pcVar3;" (assignment_expression "DAT_00151464 = pcVar3" identifier = identifier) ;) })) (expression_statement "pcVar3 = DAT_00151464;" (assignment_expression "pcVar3 = DAT_00151464" identifier = identifier) ;) (expression_statement "DAT_00151444 = strlen(DAT_00151464);" (assignment_expression "DAT_00151444 = strlen(DAT_00151464)" identifier = (call_expression "strlen(DAT_00151464)" identifier (argument_list "(DAT_00151464)" ( identifier )))) ;) (if_statement "if (DAT_00151440 != (char *)0x0) {\n      free(DAT_00151440);\n      pcVar3 = DAT_00151464;\n    }" if (parenthesized_expression "(DAT_00151440 != (char *)0x0)" ( (binary_expression "DAT_00151440 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      free(DAT_00151440);\n      pcVar3 = DAT_00151464;\n    }" { (expression_statement "free(DAT_00151440);" (call_expression "free(DAT_00151440)" identifier (argument_list "(DAT_00151440)" ( identifier ))) ;) (expression_statement "pcVar3 = DAT_00151464;" (assignment_expression "pcVar3 = DAT_00151464" identifier = identifier) ;) })) (expression_statement "sVar4 = strlen(pcVar3);" (assignment_expression "sVar4 = strlen(pcVar3)" identifier = (call_expression "strlen(pcVar3)" identifier (argument_list "(pcVar3)" ( identifier )))) ;) (expression_statement "pcVar5 = (char *)xmalloc(sVar4 + 1);" (assignment_expression "pcVar5 = (char *)xmalloc(sVar4 + 1)" identifier = (cast_expression "(char *)xmalloc(sVar4 + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(sVar4 + 1)" identifier (argument_list "(sVar4 + 1)" ( (binary_expression "sVar4 + 1" identifier + number_literal) ))))) ;) (expression_statement "DAT_0015143c = strcpy(pcVar5,pcVar3);" (assignment_expression "DAT_0015143c = strcpy(pcVar5,pcVar3)" identifier = (call_expression "strcpy(pcVar5,pcVar3)" identifier (argument_list "(pcVar5,pcVar3)" ( identifier , identifier )))) ;) (expression_statement "DAT_00151438 = 0;" (assignment_expression "DAT_00151438 = 0" identifier = number_literal) ;) (expression_statement "DAT_00151440 = DAT_0015143c;" (assignment_expression "DAT_00151440 = DAT_0015143c" identifier = identifier) ;) (if_statement "if (DAT_0015144c == 0) {\n      uVar8 = dircomplete_expand;\n      if ((dircomplete_expand != 0) &&\n         (iVar2 = path_dot_or_dotdot(DAT_0015143c), uVar8 = DAT_00151438, iVar2 != 0)) {\n        dircomplete_expand = 1;\n        rl_directory_rewrite_hook = FUN_0008c7b0;\n        rl_directory_completion_hook = (code *)0x0;\n      }\n      DAT_0015145c = 4;\n      pcVar3 = DAT_0015143c;\n      do {\n        do {\n          while( true ) {\n            DAT_00151454 = (char *)rl_filename_completion_function(pcVar3,uVar8);\n            if ((DAT_0015145c == 4) && (dircomplete_expand != 0)) {\n              rl_directory_completion_hook = FUN_0008c7b0;\n              rl_directory_rewrite_hook = (code *)0x0;\n            }\n            DAT_00151438 = 1;\n            if (DAT_00151454 == (char *)0x0) break;\n            iVar2 = absolute_program(DAT_00151464);\n            pcVar5 = DAT_00151454;\n            if (iVar2 == 0) {\n              pcVar3 = strrchr(DAT_00151454,0x2f);\n              if (pcVar3 != (char *)0x0) {\n                pcVar3 = pcVar3 + 1;\n                if (DAT_00151450 == 0) {\n                  iVar2 = strncmp(pcVar3,DAT_00151464,DAT_00151444);\n                }\n                else {\n                  iVar2 = strncasecmp(pcVar3,DAT_00151464,DAT_00151444);\n                }\n                if (iVar2 == 0) {\n                  sVar4 = strlen(pcVar3);\n                  pcVar5 = (char *)xmalloc(sVar4 + 1);\n                  pcVar3 = strcpy(pcVar5,pcVar3);\n                  goto LAB_0008d6a4;\n                }\n              }\n            }\n            else {\n              if (DAT_00151450 == 0) {\n                iVar2 = strncmp(DAT_00151454,DAT_00151464,DAT_00151444);\n              }\n              else {\n                iVar2 = strncasecmp(DAT_00151454,DAT_00151464,DAT_00151444);\n              }\n              if (*param_1 == '~') {\n                pcVar3 = (char *)FUN_0008a220();\n              }\n              else {\n                sVar4 = strlen(pcVar5);\n                pcVar3 = (char *)xmalloc(sVar4 + 1);\n                pcVar3 = strcpy(pcVar3,pcVar5);\n              }\n              pcVar5 = DAT_00151454;\n              if (iVar2 == 0) {\nLAB_0008d6a4:\n                iVar2 = DAT_00151460;\n                pcVar10 = DAT_00151454;\n                sVar4 = strlen(DAT_00151454);\n                pcVar5 = (char *)xmalloc(sVar4 + 1);\n                local_24 = strcpy(pcVar5,pcVar10);\n                FUN_0008c7b0(&local_24);\n                if (iVar2 == 0) {\n                  iVar2 = executable_or_directory(local_24);\n                }\n                else {\n                  iVar2 = executable_file(local_24);\n                }\n                free(local_24);\n                pcVar5 = DAT_00151454;\n                if (iVar2 != 0) {\n                  if (pcVar10 != DAT_00151454) {\n                    free(pcVar10);\n                  }\n                  free(pcVar5);\n                  DAT_00151454 = "";\n                  goto LAB_0008d5c8;\n                }\n                free(pcVar3);\n                if (pcVar10 != pcVar5) {\n                  free(pcVar10);\n                }\n              }\n              else {\n                free(pcVar3);\n              }\n            }\n            free(pcVar5);\n            uVar8 = DAT_00151438;\n            pcVar3 = DAT_0015143c;\n          }\n          iVar2 = absolute_program(DAT_00151464);\n          if (iVar2 != 0) goto LAB_0008dac4;\nLAB_0008d5f6:\n          uVar8 = (uint)(DAT_00151454 != (char *)0x0);\n          pcVar3 = DAT_0015143c;\n          DAT_00151438 = uVar8;\n        } while (DAT_00151454 != (char *)0x0);\n        if (((DAT_00151434 == 0) || (*(char *)(DAT_00151434 + DAT_00151430) == '\0')) ||\n           (pcVar3 = (char *)extract_colon_unit(DAT_00151434,&DAT_00151430), pcVar3 == (char *)0x0))\n        goto LAB_0008dac4;\n        DAT_00151460 = 1;\n        cVar11 = *pcVar3;\n        if (cVar11 == '\0') {\n          free(pcVar3);\n          pcVar3 = (char *)xmalloc(2);\n          pcVar3[0] = '.';\n          pcVar3[1] = '\0';\n          cVar11 = '.';\n        }\n        pcVar5 = pcVar3;\n        if (cVar11 == '~') {\n          pcVar5 = (char *)bash_tilde_expand(pcVar3,0);\n          free(pcVar3);\n          cVar11 = *pcVar5;\n        }\n        pcVar3 = DAT_00151440;\n        if ((cVar11 == '.') && (pcVar5[1] == '\0')) {\n          DAT_001514ec = 1;\n        }\n        if (DAT_0015143c == (char *)0x0) {\nLAB_0008dbfe:\n          if (pcVar3 != (char *)0x0) goto LAB_0008de5f;\n        }\n        else {\n          if (DAT_0015143c != DAT_00151440) {\n            free(DAT_0015143c);\n            goto LAB_0008dbfe;\n          }\nLAB_0008de5f:\n          free(pcVar3);\n        }\n        pcVar3 = (char *)sh_makepath(pcVar5,DAT_00151464,0);\n        DAT_00151440 = pcVar3;\n        pcVar10 = strpbrk(pcVar3,"\"\'\\");\n        if (pcVar10 != (char *)0x0) {\n          pcVar3 = (char *)sh_backslash_quote(pcVar3,&DAT_00151500,0);\n        }\n        DAT_0015143c = pcVar3;\n        free(pcVar5);\n        uVar8 = DAT_00151438;\n      } while( true );\n    }" if (parenthesized_expression "(DAT_0015144c == 0)" ( (binary_expression "DAT_0015144c == 0" identifier == number_literal) )) (compound_statement "{\n      uVar8 = dircomplete_expand;\n      if ((dircomplete_expand != 0) &&\n         (iVar2 = path_dot_or_dotdot(DAT_0015143c), uVar8 = DAT_00151438, iVar2 != 0)) {\n        dircomplete_expand = 1;\n        rl_directory_rewrite_hook = FUN_0008c7b0;\n        rl_directory_completion_hook = (code *)0x0;\n      }\n      DAT_0015145c = 4;\n      pcVar3 = DAT_0015143c;\n      do {\n        do {\n          while( true ) {\n            DAT_00151454 = (char *)rl_filename_completion_function(pcVar3,uVar8);\n            if ((DAT_0015145c == 4) && (dircomplete_expand != 0)) {\n              rl_directory_completion_hook = FUN_0008c7b0;\n              rl_directory_rewrite_hook = (code *)0x0;\n            }\n            DAT_00151438 = 1;\n            if (DAT_00151454 == (char *)0x0) break;\n            iVar2 = absolute_program(DAT_00151464);\n            pcVar5 = DAT_00151454;\n            if (iVar2 == 0) {\n              pcVar3 = strrchr(DAT_00151454,0x2f);\n              if (pcVar3 != (char *)0x0) {\n                pcVar3 = pcVar3 + 1;\n                if (DAT_00151450 == 0) {\n                  iVar2 = strncmp(pcVar3,DAT_00151464,DAT_00151444);\n                }\n                else {\n                  iVar2 = strncasecmp(pcVar3,DAT_00151464,DAT_00151444);\n                }\n                if (iVar2 == 0) {\n                  sVar4 = strlen(pcVar3);\n                  pcVar5 = (char *)xmalloc(sVar4 + 1);\n                  pcVar3 = strcpy(pcVar5,pcVar3);\n                  goto LAB_0008d6a4;\n                }\n              }\n            }\n            else {\n              if (DAT_00151450 == 0) {\n                iVar2 = strncmp(DAT_00151454,DAT_00151464,DAT_00151444);\n              }\n              else {\n                iVar2 = strncasecmp(DAT_00151454,DAT_00151464,DAT_00151444);\n              }\n              if (*param_1 == '~') {\n                pcVar3 = (char *)FUN_0008a220();\n              }\n              else {\n                sVar4 = strlen(pcVar5);\n                pcVar3 = (char *)xmalloc(sVar4 + 1);\n                pcVar3 = strcpy(pcVar3,pcVar5);\n              }\n              pcVar5 = DAT_00151454;\n              if (iVar2 == 0) {\nLAB_0008d6a4:\n                iVar2 = DAT_00151460;\n                pcVar10 = DAT_00151454;\n                sVar4 = strlen(DAT_00151454);\n                pcVar5 = (char *)xmalloc(sVar4 + 1);\n                local_24 = strcpy(pcVar5,pcVar10);\n                FUN_0008c7b0(&local_24);\n                if (iVar2 == 0) {\n                  iVar2 = executable_or_directory(local_24);\n                }\n                else {\n                  iVar2 = executable_file(local_24);\n                }\n                free(local_24);\n                pcVar5 = DAT_00151454;\n                if (iVar2 != 0) {\n                  if (pcVar10 != DAT_00151454) {\n                    free(pcVar10);\n                  }\n                  free(pcVar5);\n                  DAT_00151454 = "";\n                  goto LAB_0008d5c8;\n                }\n                free(pcVar3);\n                if (pcVar10 != pcVar5) {\n                  free(pcVar10);\n                }\n              }\n              else {\n                free(pcVar3);\n              }\n            }\n            free(pcVar5);\n            uVar8 = DAT_00151438;\n            pcVar3 = DAT_0015143c;\n          }\n          iVar2 = absolute_program(DAT_00151464);\n          if (iVar2 != 0) goto LAB_0008dac4;\nLAB_0008d5f6:\n          uVar8 = (uint)(DAT_00151454 != (char *)0x0);\n          pcVar3 = DAT_0015143c;\n          DAT_00151438 = uVar8;\n        } while (DAT_00151454 != (char *)0x0);\n        if (((DAT_00151434 == 0) || (*(char *)(DAT_00151434 + DAT_00151430) == '\0')) ||\n           (pcVar3 = (char *)extract_colon_unit(DAT_00151434,&DAT_00151430), pcVar3 == (char *)0x0))\n        goto LAB_0008dac4;\n        DAT_00151460 = 1;\n        cVar11 = *pcVar3;\n        if (cVar11 == '\0') {\n          free(pcVar3);\n          pcVar3 = (char *)xmalloc(2);\n          pcVar3[0] = '.';\n          pcVar3[1] = '\0';\n          cVar11 = '.';\n        }\n        pcVar5 = pcVar3;\n        if (cVar11 == '~') {\n          pcVar5 = (char *)bash_tilde_expand(pcVar3,0);\n          free(pcVar3);\n          cVar11 = *pcVar5;\n        }\n        pcVar3 = DAT_00151440;\n        if ((cVar11 == '.') && (pcVar5[1] == '\0')) {\n          DAT_001514ec = 1;\n        }\n        if (DAT_0015143c == (char *)0x0) {\nLAB_0008dbfe:\n          if (pcVar3 != (char *)0x0) goto LAB_0008de5f;\n        }\n        else {\n          if (DAT_0015143c != DAT_00151440) {\n            free(DAT_0015143c);\n            goto LAB_0008dbfe;\n          }\nLAB_0008de5f:\n          free(pcVar3);\n        }\n        pcVar3 = (char *)sh_makepath(pcVar5,DAT_00151464,0);\n        DAT_00151440 = pcVar3;\n        pcVar10 = strpbrk(pcVar3,"\"\'\\");\n        if (pcVar10 != (char *)0x0) {\n          pcVar3 = (char *)sh_backslash_quote(pcVar3,&DAT_00151500,0);\n        }\n        DAT_0015143c = pcVar3;\n        free(pcVar5);\n        uVar8 = DAT_00151438;\n      } while( true );\n    }" { (expression_statement "uVar8 = dircomplete_expand;" (assignment_expression "uVar8 = dircomplete_expand" identifier = identifier) ;) (if_statement "if ((dircomplete_expand != 0) &&\n         (iVar2 = path_dot_or_dotdot(DAT_0015143c), uVar8 = DAT_00151438, iVar2 != 0)) {\n        dircomplete_expand = 1;\n        rl_directory_rewrite_hook = FUN_0008c7b0;\n        rl_directory_completion_hook = (code *)0x0;\n      }" if (parenthesized_expression "((dircomplete_expand != 0) &&\n         (iVar2 = path_dot_or_dotdot(DAT_0015143c), uVar8 = DAT_00151438, iVar2 != 0))" ( (binary_expression "(dircomplete_expand != 0) &&\n         (iVar2 = path_dot_or_dotdot(DAT_0015143c), uVar8 = DAT_00151438, iVar2 != 0)" (parenthesized_expression "(dircomplete_expand != 0)" ( (binary_expression "dircomplete_expand != 0" identifier != number_literal) )) && (parenthesized_expression "(iVar2 = path_dot_or_dotdot(DAT_0015143c), uVar8 = DAT_00151438, iVar2 != 0)" ( (comma_expression "iVar2 = path_dot_or_dotdot(DAT_0015143c), uVar8 = DAT_00151438, iVar2 != 0" (assignment_expression "iVar2 = path_dot_or_dotdot(DAT_0015143c)" identifier = (call_expression "path_dot_or_dotdot(DAT_0015143c)" identifier (argument_list "(DAT_0015143c)" ( identifier )))) , (comma_expression "uVar8 = DAT_00151438, iVar2 != 0" (assignment_expression "uVar8 = DAT_00151438" identifier = identifier) , (binary_expression "iVar2 != 0" identifier != number_literal))) ))) )) (compound_statement "{\n        dircomplete_expand = 1;\n        rl_directory_rewrite_hook = FUN_0008c7b0;\n        rl_directory_completion_hook = (code *)0x0;\n      }" { (expression_statement "dircomplete_expand = 1;" (assignment_expression "dircomplete_expand = 1" identifier = number_literal) ;) (expression_statement "rl_directory_rewrite_hook = FUN_0008c7b0;" (assignment_expression "rl_directory_rewrite_hook = FUN_0008c7b0" identifier = identifier) ;) (expression_statement "rl_directory_completion_hook = (code *)0x0;" (assignment_expression "rl_directory_completion_hook = (code *)0x0" identifier = (cast_expression "(code *)0x0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) })) (expression_statement "DAT_0015145c = 4;" (assignment_expression "DAT_0015145c = 4" identifier = number_literal) ;) (expression_statement "pcVar3 = DAT_0015143c;" (assignment_expression "pcVar3 = DAT_0015143c" identifier = identifier) ;) (do_statement "do {\n        do {\n          while( true ) {\n            DAT_00151454 = (char *)rl_filename_completion_function(pcVar3,uVar8);\n            if ((DAT_0015145c == 4) && (dircomplete_expand != 0)) {\n              rl_directory_completion_hook = FUN_0008c7b0;\n              rl_directory_rewrite_hook = (code *)0x0;\n            }\n            DAT_00151438 = 1;\n            if (DAT_00151454 == (char *)0x0) break;\n            iVar2 = absolute_program(DAT_00151464);\n            pcVar5 = DAT_00151454;\n            if (iVar2 == 0) {\n              pcVar3 = strrchr(DAT_00151454,0x2f);\n              if (pcVar3 != (char *)0x0) {\n                pcVar3 = pcVar3 + 1;\n                if (DAT_00151450 == 0) {\n                  iVar2 = strncmp(pcVar3,DAT_00151464,DAT_00151444);\n                }\n                else {\n                  iVar2 = strncasecmp(pcVar3,DAT_00151464,DAT_00151444);\n                }\n                if (iVar2 == 0) {\n                  sVar4 = strlen(pcVar3);\n                  pcVar5 = (char *)xmalloc(sVar4 + 1);\n                  pcVar3 = strcpy(pcVar5,pcVar3);\n                  goto LAB_0008d6a4;\n                }\n              }\n            }\n            else {\n              if (DAT_00151450 == 0) {\n                iVar2 = strncmp(DAT_00151454,DAT_00151464,DAT_00151444);\n              }\n              else {\n                iVar2 = strncasecmp(DAT_00151454,DAT_00151464,DAT_00151444);\n              }\n              if (*param_1 == '~') {\n                pcVar3 = (char *)FUN_0008a220();\n              }\n              else {\n                sVar4 = strlen(pcVar5);\n                pcVar3 = (char *)xmalloc(sVar4 + 1);\n                pcVar3 = strcpy(pcVar3,pcVar5);\n              }\n              pcVar5 = DAT_00151454;\n              if (iVar2 == 0) {\nLAB_0008d6a4:\n                iVar2 = DAT_00151460;\n                pcVar10 = DAT_00151454;\n                sVar4 = strlen(DAT_00151454);\n                pcVar5 = (char *)xmalloc(sVar4 + 1);\n                local_24 = strcpy(pcVar5,pcVar10);\n                FUN_0008c7b0(&local_24);\n                if (iVar2 == 0) {\n                  iVar2 = executable_or_directory(local_24);\n                }\n                else {\n                  iVar2 = executable_file(local_24);\n                }\n                free(local_24);\n                pcVar5 = DAT_00151454;\n                if (iVar2 != 0) {\n                  if (pcVar10 != DAT_00151454) {\n                    free(pcVar10);\n                  }\n                  free(pcVar5);\n                  DAT_00151454 = "";\n                  goto LAB_0008d5c8;\n                }\n                free(pcVar3);\n                if (pcVar10 != pcVar5) {\n                  free(pcVar10);\n                }\n              }\n              else {\n                free(pcVar3);\n              }\n            }\n            free(pcVar5);\n            uVar8 = DAT_00151438;\n            pcVar3 = DAT_0015143c;\n          }\n          iVar2 = absolute_program(DAT_00151464);\n          if (iVar2 != 0) goto LAB_0008dac4;\nLAB_0008d5f6:\n          uVar8 = (uint)(DAT_00151454 != (char *)0x0);\n          pcVar3 = DAT_0015143c;\n          DAT_00151438 = uVar8;\n        } while (DAT_00151454 != (char *)0x0);\n        if (((DAT_00151434 == 0) || (*(char *)(DAT_00151434 + DAT_00151430) == '\0')) ||\n           (pcVar3 = (char *)extract_colon_unit(DAT_00151434,&DAT_00151430), pcVar3 == (char *)0x0))\n        goto LAB_0008dac4;\n        DAT_00151460 = 1;\n        cVar11 = *pcVar3;\n        if (cVar11 == '\0') {\n          free(pcVar3);\n          pcVar3 = (char *)xmalloc(2);\n          pcVar3[0] = '.';\n          pcVar3[1] = '\0';\n          cVar11 = '.';\n        }\n        pcVar5 = pcVar3;\n        if (cVar11 == '~') {\n          pcVar5 = (char *)bash_tilde_expand(pcVar3,0);\n          free(pcVar3);\n          cVar11 = *pcVar5;\n        }\n        pcVar3 = DAT_00151440;\n        if ((cVar11 == '.') && (pcVar5[1] == '\0')) {\n          DAT_001514ec = 1;\n        }\n        if (DAT_0015143c == (char *)0x0) {\nLAB_0008dbfe:\n          if (pcVar3 != (char *)0x0) goto LAB_0008de5f;\n        }\n        else {\n          if (DAT_0015143c != DAT_00151440) {\n            free(DAT_0015143c);\n            goto LAB_0008dbfe;\n          }\nLAB_0008de5f:\n          free(pcVar3);\n        }\n        pcVar3 = (char *)sh_makepath(pcVar5,DAT_00151464,0);\n        DAT_00151440 = pcVar3;\n        pcVar10 = strpbrk(pcVar3,"\"\'\\");\n        if (pcVar10 != (char *)0x0) {\n          pcVar3 = (char *)sh_backslash_quote(pcVar3,&DAT_00151500,0);\n        }\n        DAT_0015143c = pcVar3;\n        free(pcVar5);\n        uVar8 = DAT_00151438;\n      } while( true );" do (compound_statement "{\n        do {\n          while( true ) {\n            DAT_00151454 = (char *)rl_filename_completion_function(pcVar3,uVar8);\n            if ((DAT_0015145c == 4) && (dircomplete_expand != 0)) {\n              rl_directory_completion_hook = FUN_0008c7b0;\n              rl_directory_rewrite_hook = (code *)0x0;\n            }\n            DAT_00151438 = 1;\n            if (DAT_00151454 == (char *)0x0) break;\n            iVar2 = absolute_program(DAT_00151464);\n            pcVar5 = DAT_00151454;\n            if (iVar2 == 0) {\n              pcVar3 = strrchr(DAT_00151454,0x2f);\n              if (pcVar3 != (char *)0x0) {\n                pcVar3 = pcVar3 + 1;\n                if (DAT_00151450 == 0) {\n                  iVar2 = strncmp(pcVar3,DAT_00151464,DAT_00151444);\n                }\n                else {\n                  iVar2 = strncasecmp(pcVar3,DAT_00151464,DAT_00151444);\n                }\n                if (iVar2 == 0) {\n                  sVar4 = strlen(pcVar3);\n                  pcVar5 = (char *)xmalloc(sVar4 + 1);\n                  pcVar3 = strcpy(pcVar5,pcVar3);\n                  goto LAB_0008d6a4;\n                }\n              }\n            }\n            else {\n              if (DAT_00151450 == 0) {\n                iVar2 = strncmp(DAT_00151454,DAT_00151464,DAT_00151444);\n              }\n              else {\n                iVar2 = strncasecmp(DAT_00151454,DAT_00151464,DAT_00151444);\n              }\n              if (*param_1 == '~') {\n                pcVar3 = (char *)FUN_0008a220();\n              }\n              else {\n                sVar4 = strlen(pcVar5);\n                pcVar3 = (char *)xmalloc(sVar4 + 1);\n                pcVar3 = strcpy(pcVar3,pcVar5);\n              }\n              pcVar5 = DAT_00151454;\n              if (iVar2 == 0) {\nLAB_0008d6a4:\n                iVar2 = DAT_00151460;\n                pcVar10 = DAT_00151454;\n                sVar4 = strlen(DAT_00151454);\n                pcVar5 = (char *)xmalloc(sVar4 + 1);\n                local_24 = strcpy(pcVar5,pcVar10);\n                FUN_0008c7b0(&local_24);\n                if (iVar2 == 0) {\n                  iVar2 = executable_or_directory(local_24);\n                }\n                else {\n                  iVar2 = executable_file(local_24);\n                }\n                free(local_24);\n                pcVar5 = DAT_00151454;\n                if (iVar2 != 0) {\n                  if (pcVar10 != DAT_00151454) {\n                    free(pcVar10);\n                  }\n                  free(pcVar5);\n                  DAT_00151454 = "";\n                  goto LAB_0008d5c8;\n                }\n                free(pcVar3);\n                if (pcVar10 != pcVar5) {\n                  free(pcVar10);\n                }\n              }\n              else {\n                free(pcVar3);\n              }\n            }\n            free(pcVar5);\n            uVar8 = DAT_00151438;\n            pcVar3 = DAT_0015143c;\n          }\n          iVar2 = absolute_program(DAT_00151464);\n          if (iVar2 != 0) goto LAB_0008dac4;\nLAB_0008d5f6:\n          uVar8 = (uint)(DAT_00151454 != (char *)0x0);\n          pcVar3 = DAT_0015143c;\n          DAT_00151438 = uVar8;\n        } while (DAT_00151454 != (char *)0x0);\n        if (((DAT_00151434 == 0) || (*(char *)(DAT_00151434 + DAT_00151430) == '\0')) ||\n           (pcVar3 = (char *)extract_colon_unit(DAT_00151434,&DAT_00151430), pcVar3 == (char *)0x0))\n        goto LAB_0008dac4;\n        DAT_00151460 = 1;\n        cVar11 = *pcVar3;\n        if (cVar11 == '\0') {\n          free(pcVar3);\n          pcVar3 = (char *)xmalloc(2);\n          pcVar3[0] = '.';\n          pcVar3[1] = '\0';\n          cVar11 = '.';\n        }\n        pcVar5 = pcVar3;\n        if (cVar11 == '~') {\n          pcVar5 = (char *)bash_tilde_expand(pcVar3,0);\n          free(pcVar3);\n          cVar11 = *pcVar5;\n        }\n        pcVar3 = DAT_00151440;\n        if ((cVar11 == '.') && (pcVar5[1] == '\0')) {\n          DAT_001514ec = 1;\n        }\n        if (DAT_0015143c == (char *)0x0) {\nLAB_0008dbfe:\n          if (pcVar3 != (char *)0x0) goto LAB_0008de5f;\n        }\n        else {\n          if (DAT_0015143c != DAT_00151440) {\n            free(DAT_0015143c);\n            goto LAB_0008dbfe;\n          }\nLAB_0008de5f:\n          free(pcVar3);\n        }\n        pcVar3 = (char *)sh_makepath(pcVar5,DAT_00151464,0);\n        DAT_00151440 = pcVar3;\n        pcVar10 = strpbrk(pcVar3,"\"\'\\");\n        if (pcVar10 != (char *)0x0) {\n          pcVar3 = (char *)sh_backslash_quote(pcVar3,&DAT_00151500,0);\n        }\n        DAT_0015143c = pcVar3;\n        free(pcVar5);\n        uVar8 = DAT_00151438;\n      }" { (do_statement "do {\n          while( true ) {\n            DAT_00151454 = (char *)rl_filename_completion_function(pcVar3,uVar8);\n            if ((DAT_0015145c == 4) && (dircomplete_expand != 0)) {\n              rl_directory_completion_hook = FUN_0008c7b0;\n              rl_directory_rewrite_hook = (code *)0x0;\n            }\n            DAT_00151438 = 1;\n            if (DAT_00151454 == (char *)0x0) break;\n            iVar2 = absolute_program(DAT_00151464);\n            pcVar5 = DAT_00151454;\n            if (iVar2 == 0) {\n              pcVar3 = strrchr(DAT_00151454,0x2f);\n              if (pcVar3 != (char *)0x0) {\n                pcVar3 = pcVar3 + 1;\n                if (DAT_00151450 == 0) {\n                  iVar2 = strncmp(pcVar3,DAT_00151464,DAT_00151444);\n                }\n                else {\n                  iVar2 = strncasecmp(pcVar3,DAT_00151464,DAT_00151444);\n                }\n                if (iVar2 == 0) {\n                  sVar4 = strlen(pcVar3);\n                  pcVar5 = (char *)xmalloc(sVar4 + 1);\n                  pcVar3 = strcpy(pcVar5,pcVar3);\n                  goto LAB_0008d6a4;\n                }\n              }\n            }\n            else {\n              if (DAT_00151450 == 0) {\n                iVar2 = strncmp(DAT_00151454,DAT_00151464,DAT_00151444);\n              }\n              else {\n                iVar2 = strncasecmp(DAT_00151454,DAT_00151464,DAT_00151444);\n              }\n              if (*param_1 == '~') {\n                pcVar3 = (char *)FUN_0008a220();\n              }\n              else {\n                sVar4 = strlen(pcVar5);\n                pcVar3 = (char *)xmalloc(sVar4 + 1);\n                pcVar3 = strcpy(pcVar3,pcVar5);\n              }\n              pcVar5 = DAT_00151454;\n              if (iVar2 == 0) {\nLAB_0008d6a4:\n                iVar2 = DAT_00151460;\n                pcVar10 = DAT_00151454;\n                sVar4 = strlen(DAT_00151454);\n                pcVar5 = (char *)xmalloc(sVar4 + 1);\n                local_24 = strcpy(pcVar5,pcVar10);\n                FUN_0008c7b0(&local_24);\n                if (iVar2 == 0) {\n                  iVar2 = executable_or_directory(local_24);\n                }\n                else {\n                  iVar2 = executable_file(local_24);\n                }\n                free(local_24);\n                pcVar5 = DAT_00151454;\n                if (iVar2 != 0) {\n                  if (pcVar10 != DAT_00151454) {\n                    free(pcVar10);\n                  }\n                  free(pcVar5);\n                  DAT_00151454 = "";\n                  goto LAB_0008d5c8;\n                }\n                free(pcVar3);\n                if (pcVar10 != pcVar5) {\n                  free(pcVar10);\n                }\n              }\n              else {\n                free(pcVar3);\n              }\n            }\n            free(pcVar5);\n            uVar8 = DAT_00151438;\n            pcVar3 = DAT_0015143c;\n          }\n          iVar2 = absolute_program(DAT_00151464);\n          if (iVar2 != 0) goto LAB_0008dac4;\nLAB_0008d5f6:\n          uVar8 = (uint)(DAT_00151454 != (char *)0x0);\n          pcVar3 = DAT_0015143c;\n          DAT_00151438 = uVar8;\n        } while (DAT_00151454 != (char *)0x0);" do (compound_statement "{\n          while( true ) {\n            DAT_00151454 = (char *)rl_filename_completion_function(pcVar3,uVar8);\n            if ((DAT_0015145c == 4) && (dircomplete_expand != 0)) {\n              rl_directory_completion_hook = FUN_0008c7b0;\n              rl_directory_rewrite_hook = (code *)0x0;\n            }\n            DAT_00151438 = 1;\n            if (DAT_00151454 == (char *)0x0) break;\n            iVar2 = absolute_program(DAT_00151464);\n            pcVar5 = DAT_00151454;\n            if (iVar2 == 0) {\n              pcVar3 = strrchr(DAT_00151454,0x2f);\n              if (pcVar3 != (char *)0x0) {\n                pcVar3 = pcVar3 + 1;\n                if (DAT_00151450 == 0) {\n                  iVar2 = strncmp(pcVar3,DAT_00151464,DAT_00151444);\n                }\n                else {\n                  iVar2 = strncasecmp(pcVar3,DAT_00151464,DAT_00151444);\n                }\n                if (iVar2 == 0) {\n                  sVar4 = strlen(pcVar3);\n                  pcVar5 = (char *)xmalloc(sVar4 + 1);\n                  pcVar3 = strcpy(pcVar5,pcVar3);\n                  goto LAB_0008d6a4;\n                }\n              }\n            }\n            else {\n              if (DAT_00151450 == 0) {\n                iVar2 = strncmp(DAT_00151454,DAT_00151464,DAT_00151444);\n              }\n              else {\n                iVar2 = strncasecmp(DAT_00151454,DAT_00151464,DAT_00151444);\n              }\n              if (*param_1 == '~') {\n                pcVar3 = (char *)FUN_0008a220();\n              }\n              else {\n                sVar4 = strlen(pcVar5);\n                pcVar3 = (char *)xmalloc(sVar4 + 1);\n                pcVar3 = strcpy(pcVar3,pcVar5);\n              }\n              pcVar5 = DAT_00151454;\n              if (iVar2 == 0) {\nLAB_0008d6a4:\n                iVar2 = DAT_00151460;\n                pcVar10 = DAT_00151454;\n                sVar4 = strlen(DAT_00151454);\n                pcVar5 = (char *)xmalloc(sVar4 + 1);\n                local_24 = strcpy(pcVar5,pcVar10);\n                FUN_0008c7b0(&local_24);\n                if (iVar2 == 0) {\n                  iVar2 = executable_or_directory(local_24);\n                }\n                else {\n                  iVar2 = executable_file(local_24);\n                }\n                free(local_24);\n                pcVar5 = DAT_00151454;\n                if (iVar2 != 0) {\n                  if (pcVar10 != DAT_00151454) {\n                    free(pcVar10);\n                  }\n                  free(pcVar5);\n                  DAT_00151454 = "";\n                  goto LAB_0008d5c8;\n                }\n                free(pcVar3);\n                if (pcVar10 != pcVar5) {\n                  free(pcVar10);\n                }\n              }\n              else {\n                free(pcVar3);\n              }\n            }\n            free(pcVar5);\n            uVar8 = DAT_00151438;\n            pcVar3 = DAT_0015143c;\n          }\n          iVar2 = absolute_program(DAT_00151464);\n          if (iVar2 != 0) goto LAB_0008dac4;\nLAB_0008d5f6:\n          uVar8 = (uint)(DAT_00151454 != (char *)0x0);\n          pcVar3 = DAT_0015143c;\n          DAT_00151438 = uVar8;\n        }" { (while_statement "while( true ) {\n            DAT_00151454 = (char *)rl_filename_completion_function(pcVar3,uVar8);\n            if ((DAT_0015145c == 4) && (dircomplete_expand != 0)) {\n              rl_directory_completion_hook = FUN_0008c7b0;\n              rl_directory_rewrite_hook = (code *)0x0;\n            }\n            DAT_00151438 = 1;\n            if (DAT_00151454 == (char *)0x0) break;\n            iVar2 = absolute_program(DAT_00151464);\n            pcVar5 = DAT_00151454;\n            if (iVar2 == 0) {\n              pcVar3 = strrchr(DAT_00151454,0x2f);\n              if (pcVar3 != (char *)0x0) {\n                pcVar3 = pcVar3 + 1;\n                if (DAT_00151450 == 0) {\n                  iVar2 = strncmp(pcVar3,DAT_00151464,DAT_00151444);\n                }\n                else {\n                  iVar2 = strncasecmp(pcVar3,DAT_00151464,DAT_00151444);\n                }\n                if (iVar2 == 0) {\n                  sVar4 = strlen(pcVar3);\n                  pcVar5 = (char *)xmalloc(sVar4 + 1);\n                  pcVar3 = strcpy(pcVar5,pcVar3);\n                  goto LAB_0008d6a4;\n                }\n              }\n            }\n            else {\n              if (DAT_00151450 == 0) {\n                iVar2 = strncmp(DAT_00151454,DAT_00151464,DAT_00151444);\n              }\n              else {\n                iVar2 = strncasecmp(DAT_00151454,DAT_00151464,DAT_00151444);\n              }\n              if (*param_1 == '~') {\n                pcVar3 = (char *)FUN_0008a220();\n              }\n              else {\n                sVar4 = strlen(pcVar5);\n                pcVar3 = (char *)xmalloc(sVar4 + 1);\n                pcVar3 = strcpy(pcVar3,pcVar5);\n              }\n              pcVar5 = DAT_00151454;\n              if (iVar2 == 0) {\nLAB_0008d6a4:\n                iVar2 = DAT_00151460;\n                pcVar10 = DAT_00151454;\n                sVar4 = strlen(DAT_00151454);\n                pcVar5 = (char *)xmalloc(sVar4 + 1);\n                local_24 = strcpy(pcVar5,pcVar10);\n                FUN_0008c7b0(&local_24);\n                if (iVar2 == 0) {\n                  iVar2 = executable_or_directory(local_24);\n                }\n                else {\n                  iVar2 = executable_file(local_24);\n                }\n                free(local_24);\n                pcVar5 = DAT_00151454;\n                if (iVar2 != 0) {\n                  if (pcVar10 != DAT_00151454) {\n                    free(pcVar10);\n                  }\n                  free(pcVar5);\n                  DAT_00151454 = "";\n                  goto LAB_0008d5c8;\n                }\n                free(pcVar3);\n                if (pcVar10 != pcVar5) {\n                  free(pcVar10);\n                }\n              }\n              else {\n                free(pcVar3);\n              }\n            }\n            free(pcVar5);\n            uVar8 = DAT_00151438;\n            pcVar3 = DAT_0015143c;\n          }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n            DAT_00151454 = (char *)rl_filename_completion_function(pcVar3,uVar8);\n            if ((DAT_0015145c == 4) && (dircomplete_expand != 0)) {\n              rl_directory_completion_hook = FUN_0008c7b0;\n              rl_directory_rewrite_hook = (code *)0x0;\n            }\n            DAT_00151438 = 1;\n            if (DAT_00151454 == (char *)0x0) break;\n            iVar2 = absolute_program(DAT_00151464);\n            pcVar5 = DAT_00151454;\n            if (iVar2 == 0) {\n              pcVar3 = strrchr(DAT_00151454,0x2f);\n              if (pcVar3 != (char *)0x0) {\n                pcVar3 = pcVar3 + 1;\n                if (DAT_00151450 == 0) {\n                  iVar2 = strncmp(pcVar3,DAT_00151464,DAT_00151444);\n                }\n                else {\n                  iVar2 = strncasecmp(pcVar3,DAT_00151464,DAT_00151444);\n                }\n                if (iVar2 == 0) {\n                  sVar4 = strlen(pcVar3);\n                  pcVar5 = (char *)xmalloc(sVar4 + 1);\n                  pcVar3 = strcpy(pcVar5,pcVar3);\n                  goto LAB_0008d6a4;\n                }\n              }\n            }\n            else {\n              if (DAT_00151450 == 0) {\n                iVar2 = strncmp(DAT_00151454,DAT_00151464,DAT_00151444);\n              }\n              else {\n                iVar2 = strncasecmp(DAT_00151454,DAT_00151464,DAT_00151444);\n              }\n              if (*param_1 == '~') {\n                pcVar3 = (char *)FUN_0008a220();\n              }\n              else {\n                sVar4 = strlen(pcVar5);\n                pcVar3 = (char *)xmalloc(sVar4 + 1);\n                pcVar3 = strcpy(pcVar3,pcVar5);\n              }\n              pcVar5 = DAT_00151454;\n              if (iVar2 == 0) {\nLAB_0008d6a4:\n                iVar2 = DAT_00151460;\n                pcVar10 = DAT_00151454;\n                sVar4 = strlen(DAT_00151454);\n                pcVar5 = (char *)xmalloc(sVar4 + 1);\n                local_24 = strcpy(pcVar5,pcVar10);\n                FUN_0008c7b0(&local_24);\n                if (iVar2 == 0) {\n                  iVar2 = executable_or_directory(local_24);\n                }\n                else {\n                  iVar2 = executable_file(local_24);\n                }\n                free(local_24);\n                pcVar5 = DAT_00151454;\n                if (iVar2 != 0) {\n                  if (pcVar10 != DAT_00151454) {\n                    free(pcVar10);\n                  }\n                  free(pcVar5);\n                  DAT_00151454 = "";\n                  goto LAB_0008d5c8;\n                }\n                free(pcVar3);\n                if (pcVar10 != pcVar5) {\n                  free(pcVar10);\n                }\n              }\n              else {\n                free(pcVar3);\n              }\n            }\n            free(pcVar5);\n            uVar8 = DAT_00151438;\n            pcVar3 = DAT_0015143c;\n          }" { (expression_statement "DAT_00151454 = (char *)rl_filename_completion_function(pcVar3,uVar8);" (assignment_expression "DAT_00151454 = (char *)rl_filename_completion_function(pcVar3,uVar8)" identifier = (cast_expression "(char *)rl_filename_completion_function(pcVar3,uVar8)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "rl_filename_completion_function(pcVar3,uVar8)" identifier (argument_list "(pcVar3,uVar8)" ( identifier , identifier ))))) ;) (if_statement "if ((DAT_0015145c == 4) && (dircomplete_expand != 0)) {\n              rl_directory_completion_hook = FUN_0008c7b0;\n              rl_directory_rewrite_hook = (code *)0x0;\n            }" if (parenthesized_expression "((DAT_0015145c == 4) && (dircomplete_expand != 0))" ( (binary_expression "(DAT_0015145c == 4) && (dircomplete_expand != 0)" (parenthesized_expression "(DAT_0015145c == 4)" ( (binary_expression "DAT_0015145c == 4" identifier == number_literal) )) && (parenthesized_expression "(dircomplete_expand != 0)" ( (binary_expression "dircomplete_expand != 0" identifier != number_literal) ))) )) (compound_statement "{\n              rl_directory_completion_hook = FUN_0008c7b0;\n              rl_directory_rewrite_hook = (code *)0x0;\n            }" { (expression_statement "rl_directory_completion_hook = FUN_0008c7b0;" (assignment_expression "rl_directory_completion_hook = FUN_0008c7b0" identifier = identifier) ;) (expression_statement "rl_directory_rewrite_hook = (code *)0x0;" (assignment_expression "rl_directory_rewrite_hook = (code *)0x0" identifier = (cast_expression "(code *)0x0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) })) (expression_statement "DAT_00151438 = 1;" (assignment_expression "DAT_00151438 = 1" identifier = number_literal) ;) (if_statement "if (DAT_00151454 == (char *)0x0) break;" if (parenthesized_expression "(DAT_00151454 == (char *)0x0)" ( (binary_expression "DAT_00151454 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (break_statement "break;" break ;)) (expression_statement "iVar2 = absolute_program(DAT_00151464);" (assignment_expression "iVar2 = absolute_program(DAT_00151464)" identifier = (call_expression "absolute_program(DAT_00151464)" identifier (argument_list "(DAT_00151464)" ( identifier )))) ;) (expression_statement "pcVar5 = DAT_00151454;" (assignment_expression "pcVar5 = DAT_00151454" identifier = identifier) ;) (if_statement "if (iVar2 == 0) {\n              pcVar3 = strrchr(DAT_00151454,0x2f);\n              if (pcVar3 != (char *)0x0) {\n                pcVar3 = pcVar3 + 1;\n                if (DAT_00151450 == 0) {\n                  iVar2 = strncmp(pcVar3,DAT_00151464,DAT_00151444);\n                }\n                else {\n                  iVar2 = strncasecmp(pcVar3,DAT_00151464,DAT_00151444);\n                }\n                if (iVar2 == 0) {\n                  sVar4 = strlen(pcVar3);\n                  pcVar5 = (char *)xmalloc(sVar4 + 1);\n                  pcVar3 = strcpy(pcVar5,pcVar3);\n                  goto LAB_0008d6a4;\n                }\n              }\n            }\n            else {\n              if (DAT_00151450 == 0) {\n                iVar2 = strncmp(DAT_00151454,DAT_00151464,DAT_00151444);\n              }\n              else {\n                iVar2 = strncasecmp(DAT_00151454,DAT_00151464,DAT_00151444);\n              }\n              if (*param_1 == '~') {\n                pcVar3 = (char *)FUN_0008a220();\n              }\n              else {\n                sVar4 = strlen(pcVar5);\n                pcVar3 = (char *)xmalloc(sVar4 + 1);\n                pcVar3 = strcpy(pcVar3,pcVar5);\n              }\n              pcVar5 = DAT_00151454;\n              if (iVar2 == 0) {\nLAB_0008d6a4:\n                iVar2 = DAT_00151460;\n                pcVar10 = DAT_00151454;\n                sVar4 = strlen(DAT_00151454);\n                pcVar5 = (char *)xmalloc(sVar4 + 1);\n                local_24 = strcpy(pcVar5,pcVar10);\n                FUN_0008c7b0(&local_24);\n                if (iVar2 == 0) {\n                  iVar2 = executable_or_directory(local_24);\n                }\n                else {\n                  iVar2 = executable_file(local_24);\n                }\n                free(local_24);\n                pcVar5 = DAT_00151454;\n                if (iVar2 != 0) {\n                  if (pcVar10 != DAT_00151454) {\n                    free(pcVar10);\n                  }\n                  free(pcVar5);\n                  DAT_00151454 = "";\n                  goto LAB_0008d5c8;\n                }\n                free(pcVar3);\n                if (pcVar10 != pcVar5) {\n                  free(pcVar10);\n                }\n              }\n              else {\n                free(pcVar3);\n              }\n            }" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (compound_statement "{\n              pcVar3 = strrchr(DAT_00151454,0x2f);\n              if (pcVar3 != (char *)0x0) {\n                pcVar3 = pcVar3 + 1;\n                if (DAT_00151450 == 0) {\n                  iVar2 = strncmp(pcVar3,DAT_00151464,DAT_00151444);\n                }\n                else {\n                  iVar2 = strncasecmp(pcVar3,DAT_00151464,DAT_00151444);\n                }\n                if (iVar2 == 0) {\n                  sVar4 = strlen(pcVar3);\n                  pcVar5 = (char *)xmalloc(sVar4 + 1);\n                  pcVar3 = strcpy(pcVar5,pcVar3);\n                  goto LAB_0008d6a4;\n                }\n              }\n            }" { (expression_statement "pcVar3 = strrchr(DAT_00151454,0x2f);" (assignment_expression "pcVar3 = strrchr(DAT_00151454,0x2f)" identifier = (call_expression "strrchr(DAT_00151454,0x2f)" identifier (argument_list "(DAT_00151454,0x2f)" ( identifier , number_literal )))) ;) (if_statement "if (pcVar3 != (char *)0x0) {\n                pcVar3 = pcVar3 + 1;\n                if (DAT_00151450 == 0) {\n                  iVar2 = strncmp(pcVar3,DAT_00151464,DAT_00151444);\n                }\n                else {\n                  iVar2 = strncasecmp(pcVar3,DAT_00151464,DAT_00151444);\n                }\n                if (iVar2 == 0) {\n                  sVar4 = strlen(pcVar3);\n                  pcVar5 = (char *)xmalloc(sVar4 + 1);\n                  pcVar3 = strcpy(pcVar5,pcVar3);\n                  goto LAB_0008d6a4;\n                }\n              }" if (parenthesized_expression "(pcVar3 != (char *)0x0)" ( (binary_expression "pcVar3 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                pcVar3 = pcVar3 + 1;\n                if (DAT_00151450 == 0) {\n                  iVar2 = strncmp(pcVar3,DAT_00151464,DAT_00151444);\n                }\n                else {\n                  iVar2 = strncasecmp(pcVar3,DAT_00151464,DAT_00151444);\n                }\n                if (iVar2 == 0) {\n                  sVar4 = strlen(pcVar3);\n                  pcVar5 = (char *)xmalloc(sVar4 + 1);\n                  pcVar3 = strcpy(pcVar5,pcVar3);\n                  goto LAB_0008d6a4;\n                }\n              }" { (expression_statement "pcVar3 = pcVar3 + 1;" (assignment_expression "pcVar3 = pcVar3 + 1" identifier = (binary_expression "pcVar3 + 1" identifier + number_literal)) ;) (if_statement "if (DAT_00151450 == 0) {\n                  iVar2 = strncmp(pcVar3,DAT_00151464,DAT_00151444);\n                }\n                else {\n                  iVar2 = strncasecmp(pcVar3,DAT_00151464,DAT_00151444);\n                }" if (parenthesized_expression "(DAT_00151450 == 0)" ( (binary_expression "DAT_00151450 == 0" identifier == number_literal) )) (compound_statement "{\n                  iVar2 = strncmp(pcVar3,DAT_00151464,DAT_00151444);\n                }" { (expression_statement "iVar2 = strncmp(pcVar3,DAT_00151464,DAT_00151444);" (assignment_expression "iVar2 = strncmp(pcVar3,DAT_00151464,DAT_00151444)" identifier = (call_expression "strncmp(pcVar3,DAT_00151464,DAT_00151444)" identifier (argument_list "(pcVar3,DAT_00151464,DAT_00151444)" ( identifier , identifier , identifier )))) ;) }) (else_clause "else {\n                  iVar2 = strncasecmp(pcVar3,DAT_00151464,DAT_00151444);\n                }" else (compound_statement "{\n                  iVar2 = strncasecmp(pcVar3,DAT_00151464,DAT_00151444);\n                }" { (expression_statement "iVar2 = strncasecmp(pcVar3,DAT_00151464,DAT_00151444);" (assignment_expression "iVar2 = strncasecmp(pcVar3,DAT_00151464,DAT_00151444)" identifier = (call_expression "strncasecmp(pcVar3,DAT_00151464,DAT_00151444)" identifier (argument_list "(pcVar3,DAT_00151464,DAT_00151444)" ( identifier , identifier , identifier )))) ;) }))) (if_statement "if (iVar2 == 0) {\n                  sVar4 = strlen(pcVar3);\n                  pcVar5 = (char *)xmalloc(sVar4 + 1);\n                  pcVar3 = strcpy(pcVar5,pcVar3);\n                  goto LAB_0008d6a4;\n                }" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (compound_statement "{\n                  sVar4 = strlen(pcVar3);\n                  pcVar5 = (char *)xmalloc(sVar4 + 1);\n                  pcVar3 = strcpy(pcVar5,pcVar3);\n                  goto LAB_0008d6a4;\n                }" { (expression_statement "sVar4 = strlen(pcVar3);" (assignment_expression "sVar4 = strlen(pcVar3)" identifier = (call_expression "strlen(pcVar3)" identifier (argument_list "(pcVar3)" ( identifier )))) ;) (expression_statement "pcVar5 = (char *)xmalloc(sVar4 + 1);" (assignment_expression "pcVar5 = (char *)xmalloc(sVar4 + 1)" identifier = (cast_expression "(char *)xmalloc(sVar4 + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(sVar4 + 1)" identifier (argument_list "(sVar4 + 1)" ( (binary_expression "sVar4 + 1" identifier + number_literal) ))))) ;) (expression_statement "pcVar3 = strcpy(pcVar5,pcVar3);" (assignment_expression "pcVar3 = strcpy(pcVar5,pcVar3)" identifier = (call_expression "strcpy(pcVar5,pcVar3)" identifier (argument_list "(pcVar5,pcVar3)" ( identifier , identifier )))) ;) (goto_statement "goto LAB_0008d6a4;" goto statement_identifier ;) })) })) }) (else_clause "else {\n              if (DAT_00151450 == 0) {\n                iVar2 = strncmp(DAT_00151454,DAT_00151464,DAT_00151444);\n              }\n              else {\n                iVar2 = strncasecmp(DAT_00151454,DAT_00151464,DAT_00151444);\n              }\n              if (*param_1 == '~') {\n                pcVar3 = (char *)FUN_0008a220();\n              }\n              else {\n                sVar4 = strlen(pcVar5);\n                pcVar3 = (char *)xmalloc(sVar4 + 1);\n                pcVar3 = strcpy(pcVar3,pcVar5);\n              }\n              pcVar5 = DAT_00151454;\n              if (iVar2 == 0) {\nLAB_0008d6a4:\n                iVar2 = DAT_00151460;\n                pcVar10 = DAT_00151454;\n                sVar4 = strlen(DAT_00151454);\n                pcVar5 = (char *)xmalloc(sVar4 + 1);\n                local_24 = strcpy(pcVar5,pcVar10);\n                FUN_0008c7b0(&local_24);\n                if (iVar2 == 0) {\n                  iVar2 = executable_or_directory(local_24);\n                }\n                else {\n                  iVar2 = executable_file(local_24);\n                }\n                free(local_24);\n                pcVar5 = DAT_00151454;\n                if (iVar2 != 0) {\n                  if (pcVar10 != DAT_00151454) {\n                    free(pcVar10);\n                  }\n                  free(pcVar5);\n                  DAT_00151454 = "";\n                  goto LAB_0008d5c8;\n                }\n                free(pcVar3);\n                if (pcVar10 != pcVar5) {\n                  free(pcVar10);\n                }\n              }\n              else {\n                free(pcVar3);\n              }\n            }" else (compound_statement "{\n              if (DAT_00151450 == 0) {\n                iVar2 = strncmp(DAT_00151454,DAT_00151464,DAT_00151444);\n              }\n              else {\n                iVar2 = strncasecmp(DAT_00151454,DAT_00151464,DAT_00151444);\n              }\n              if (*param_1 == '~') {\n                pcVar3 = (char *)FUN_0008a220();\n              }\n              else {\n                sVar4 = strlen(pcVar5);\n                pcVar3 = (char *)xmalloc(sVar4 + 1);\n                pcVar3 = strcpy(pcVar3,pcVar5);\n              }\n              pcVar5 = DAT_00151454;\n              if (iVar2 == 0) {\nLAB_0008d6a4:\n                iVar2 = DAT_00151460;\n                pcVar10 = DAT_00151454;\n                sVar4 = strlen(DAT_00151454);\n                pcVar5 = (char *)xmalloc(sVar4 + 1);\n                local_24 = strcpy(pcVar5,pcVar10);\n                FUN_0008c7b0(&local_24);\n                if (iVar2 == 0) {\n                  iVar2 = executable_or_directory(local_24);\n                }\n                else {\n                  iVar2 = executable_file(local_24);\n                }\n                free(local_24);\n                pcVar5 = DAT_00151454;\n                if (iVar2 != 0) {\n                  if (pcVar10 != DAT_00151454) {\n                    free(pcVar10);\n                  }\n                  free(pcVar5);\n                  DAT_00151454 = "";\n                  goto LAB_0008d5c8;\n                }\n                free(pcVar3);\n                if (pcVar10 != pcVar5) {\n                  free(pcVar10);\n                }\n              }\n              else {\n                free(pcVar3);\n              }\n            }" { (if_statement "if (DAT_00151450 == 0) {\n                iVar2 = strncmp(DAT_00151454,DAT_00151464,DAT_00151444);\n              }\n              else {\n                iVar2 = strncasecmp(DAT_00151454,DAT_00151464,DAT_00151444);\n              }" if (parenthesized_expression "(DAT_00151450 == 0)" ( (binary_expression "DAT_00151450 == 0" identifier == number_literal) )) (compound_statement "{\n                iVar2 = strncmp(DAT_00151454,DAT_00151464,DAT_00151444);\n              }" { (expression_statement "iVar2 = strncmp(DAT_00151454,DAT_00151464,DAT_00151444);" (assignment_expression "iVar2 = strncmp(DAT_00151454,DAT_00151464,DAT_00151444)" identifier = (call_expression "strncmp(DAT_00151454,DAT_00151464,DAT_00151444)" identifier (argument_list "(DAT_00151454,DAT_00151464,DAT_00151444)" ( identifier , identifier , identifier )))) ;) }) (else_clause "else {\n                iVar2 = strncasecmp(DAT_00151454,DAT_00151464,DAT_00151444);\n              }" else (compound_statement "{\n                iVar2 = strncasecmp(DAT_00151454,DAT_00151464,DAT_00151444);\n              }" { (expression_statement "iVar2 = strncasecmp(DAT_00151454,DAT_00151464,DAT_00151444);" (assignment_expression "iVar2 = strncasecmp(DAT_00151454,DAT_00151464,DAT_00151444)" identifier = (call_expression "strncasecmp(DAT_00151454,DAT_00151464,DAT_00151444)" identifier (argument_list "(DAT_00151454,DAT_00151464,DAT_00151444)" ( identifier , identifier , identifier )))) ;) }))) (if_statement "if (*param_1 == '~') {\n                pcVar3 = (char *)FUN_0008a220();\n              }\n              else {\n                sVar4 = strlen(pcVar5);\n                pcVar3 = (char *)xmalloc(sVar4 + 1);\n                pcVar3 = strcpy(pcVar3,pcVar5);\n              }" if (parenthesized_expression "(*param_1 == '~')" ( (binary_expression "*param_1 == '~'" (pointer_expression "*param_1" * identifier) == (char_literal "'~'" ' character ')) )) (compound_statement "{\n                pcVar3 = (char *)FUN_0008a220();\n              }" { (expression_statement "pcVar3 = (char *)FUN_0008a220();" (assignment_expression "pcVar3 = (char *)FUN_0008a220()" identifier = (cast_expression "(char *)FUN_0008a220()" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0008a220()" identifier (argument_list "()" ( ))))) ;) }) (else_clause "else {\n                sVar4 = strlen(pcVar5);\n                pcVar3 = (char *)xmalloc(sVar4 + 1);\n                pcVar3 = strcpy(pcVar3,pcVar5);\n              }" else (compound_statement "{\n                sVar4 = strlen(pcVar5);\n                pcVar3 = (char *)xmalloc(sVar4 + 1);\n                pcVar3 = strcpy(pcVar3,pcVar5);\n              }" { (expression_statement "sVar4 = strlen(pcVar5);" (assignment_expression "sVar4 = strlen(pcVar5)" identifier = (call_expression "strlen(pcVar5)" identifier (argument_list "(pcVar5)" ( identifier )))) ;) (expression_statement "pcVar3 = (char *)xmalloc(sVar4 + 1);" (assignment_expression "pcVar3 = (char *)xmalloc(sVar4 + 1)" identifier = (cast_expression "(char *)xmalloc(sVar4 + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(sVar4 + 1)" identifier (argument_list "(sVar4 + 1)" ( (binary_expression "sVar4 + 1" identifier + number_literal) ))))) ;) (expression_statement "pcVar3 = strcpy(pcVar3,pcVar5);" (assignment_expression "pcVar3 = strcpy(pcVar3,pcVar5)" identifier = (call_expression "strcpy(pcVar3,pcVar5)" identifier (argument_list "(pcVar3,pcVar5)" ( identifier , identifier )))) ;) }))) (expression_statement "pcVar5 = DAT_00151454;" (assignment_expression "pcVar5 = DAT_00151454" identifier = identifier) ;) (if_statement "if (iVar2 == 0) {\nLAB_0008d6a4:\n                iVar2 = DAT_00151460;\n                pcVar10 = DAT_00151454;\n                sVar4 = strlen(DAT_00151454);\n                pcVar5 = (char *)xmalloc(sVar4 + 1);\n                local_24 = strcpy(pcVar5,pcVar10);\n                FUN_0008c7b0(&local_24);\n                if (iVar2 == 0) {\n                  iVar2 = executable_or_directory(local_24);\n                }\n                else {\n                  iVar2 = executable_file(local_24);\n                }\n                free(local_24);\n                pcVar5 = DAT_00151454;\n                if (iVar2 != 0) {\n                  if (pcVar10 != DAT_00151454) {\n                    free(pcVar10);\n                  }\n                  free(pcVar5);\n                  DAT_00151454 = "";\n                  goto LAB_0008d5c8;\n                }\n                free(pcVar3);\n                if (pcVar10 != pcVar5) {\n                  free(pcVar10);\n                }\n              }\n              else {\n                free(pcVar3);\n              }" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (compound_statement "{\nLAB_0008d6a4:\n                iVar2 = DAT_00151460;\n                pcVar10 = DAT_00151454;\n                sVar4 = strlen(DAT_00151454);\n                pcVar5 = (char *)xmalloc(sVar4 + 1);\n                local_24 = strcpy(pcVar5,pcVar10);\n                FUN_0008c7b0(&local_24);\n                if (iVar2 == 0) {\n                  iVar2 = executable_or_directory(local_24);\n                }\n                else {\n                  iVar2 = executable_file(local_24);\n                }\n                free(local_24);\n                pcVar5 = DAT_00151454;\n                if (iVar2 != 0) {\n                  if (pcVar10 != DAT_00151454) {\n                    free(pcVar10);\n                  }\n                  free(pcVar5);\n                  DAT_00151454 = "";\n                  goto LAB_0008d5c8;\n                }\n                free(pcVar3);\n                if (pcVar10 != pcVar5) {\n                  free(pcVar10);\n                }\n              }" { (labeled_statement "LAB_0008d6a4:\n                iVar2 = DAT_00151460;" statement_identifier : (expression_statement "iVar2 = DAT_00151460;" (assignment_expression "iVar2 = DAT_00151460" identifier = identifier) ;)) (expression_statement "pcVar10 = DAT_00151454;" (assignment_expression "pcVar10 = DAT_00151454" identifier = identifier) ;) (expression_statement "sVar4 = strlen(DAT_00151454);" (assignment_expression "sVar4 = strlen(DAT_00151454)" identifier = (call_expression "strlen(DAT_00151454)" identifier (argument_list "(DAT_00151454)" ( identifier )))) ;) (expression_statement "pcVar5 = (char *)xmalloc(sVar4 + 1);" (assignment_expression "pcVar5 = (char *)xmalloc(sVar4 + 1)" identifier = (cast_expression "(char *)xmalloc(sVar4 + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(sVar4 + 1)" identifier (argument_list "(sVar4 + 1)" ( (binary_expression "sVar4 + 1" identifier + number_literal) ))))) ;) (expression_statement "local_24 = strcpy(pcVar5,pcVar10);" (assignment_expression "local_24 = strcpy(pcVar5,pcVar10)" identifier = (call_expression "strcpy(pcVar5,pcVar10)" identifier (argument_list "(pcVar5,pcVar10)" ( identifier , identifier )))) ;) (expression_statement "FUN_0008c7b0(&local_24);" (call_expression "FUN_0008c7b0(&local_24)" identifier (argument_list "(&local_24)" ( (pointer_expression "&local_24" & identifier) ))) ;) (if_statement "if (iVar2 == 0) {\n                  iVar2 = executable_or_directory(local_24);\n                }\n                else {\n                  iVar2 = executable_file(local_24);\n                }" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (compound_statement "{\n                  iVar2 = executable_or_directory(local_24);\n                }" { (expression_statement "iVar2 = executable_or_directory(local_24);" (assignment_expression "iVar2 = executable_or_directory(local_24)" identifier = (call_expression "executable_or_directory(local_24)" identifier (argument_list "(local_24)" ( identifier )))) ;) }) (else_clause "else {\n                  iVar2 = executable_file(local_24);\n                }" else (compound_statement "{\n                  iVar2 = executable_file(local_24);\n                }" { (expression_statement "iVar2 = executable_file(local_24);" (assignment_expression "iVar2 = executable_file(local_24)" identifier = (call_expression "executable_file(local_24)" identifier (argument_list "(local_24)" ( identifier )))) ;) }))) (expression_statement "free(local_24);" (call_expression "free(local_24)" identifier (argument_list "(local_24)" ( identifier ))) ;) (expression_statement "pcVar5 = DAT_00151454;" (assignment_expression "pcVar5 = DAT_00151454" identifier = identifier) ;) (if_statement "if (iVar2 != 0) {\n                  if (pcVar10 != DAT_00151454) {\n                    free(pcVar10);\n                  }\n                  free(pcVar5);\n                  DAT_00151454 = "";\n                  goto LAB_0008d5c8;\n                }" if (parenthesized_expression "(iVar2 != 0)" ( (binary_expression "iVar2 != 0" identifier != number_literal) )) (compound_statement "{\n                  if (pcVar10 != DAT_00151454) {\n                    free(pcVar10);\n                  }\n                  free(pcVar5);\n                  DAT_00151454 = "";\n                  goto LAB_0008d5c8;\n                }" { (if_statement "if (pcVar10 != DAT_00151454) {\n                    free(pcVar10);\n                  }" if (parenthesized_expression "(pcVar10 != DAT_00151454)" ( (binary_expression "pcVar10 != DAT_00151454" identifier != identifier) )) (compound_statement "{\n                    free(pcVar10);\n                  }" { (expression_statement "free(pcVar10);" (call_expression "free(pcVar10)" identifier (argument_list "(pcVar10)" ( identifier ))) ;) })) (expression_statement "free(pcVar5);" (call_expression "free(pcVar5)" identifier (argument_list "(pcVar5)" ( identifier ))) ;) (expression_statement "DAT_00151454 = "";" (assignment_expression "DAT_00151454 = """ identifier = (string_literal """" " ")) ;) (goto_statement "goto LAB_0008d5c8;" goto statement_identifier ;) })) (expression_statement "free(pcVar3);" (call_expression "free(pcVar3)" identifier (argument_list "(pcVar3)" ( identifier ))) ;) (if_statement "if (pcVar10 != pcVar5) {\n                  free(pcVar10);\n                }" if (parenthesized_expression "(pcVar10 != pcVar5)" ( (binary_expression "pcVar10 != pcVar5" identifier != identifier) )) (compound_statement "{\n                  free(pcVar10);\n                }" { (expression_statement "free(pcVar10);" (call_expression "free(pcVar10)" identifier (argument_list "(pcVar10)" ( identifier ))) ;) })) }) (else_clause "else {\n                free(pcVar3);\n              }" else (compound_statement "{\n                free(pcVar3);\n              }" { (expression_statement "free(pcVar3);" (call_expression "free(pcVar3)" identifier (argument_list "(pcVar3)" ( identifier ))) ;) }))) }))) (expression_statement "free(pcVar5);" (call_expression "free(pcVar5)" identifier (argument_list "(pcVar5)" ( identifier ))) ;) (expression_statement "uVar8 = DAT_00151438;" (assignment_expression "uVar8 = DAT_00151438" identifier = identifier) ;) (expression_statement "pcVar3 = DAT_0015143c;" (assignment_expression "pcVar3 = DAT_0015143c" identifier = identifier) ;) })) (expression_statement "iVar2 = absolute_program(DAT_00151464);" (assignment_expression "iVar2 = absolute_program(DAT_00151464)" identifier = (call_expression "absolute_program(DAT_00151464)" identifier (argument_list "(DAT_00151464)" ( identifier )))) ;) (if_statement "if (iVar2 != 0) goto LAB_0008dac4;" if (parenthesized_expression "(iVar2 != 0)" ( (binary_expression "iVar2 != 0" identifier != number_literal) )) (goto_statement "goto LAB_0008dac4;" goto statement_identifier ;)) (labeled_statement "LAB_0008d5f6:\n          uVar8 = (uint)(DAT_00151454 != (char *)0x0);" statement_identifier : (expression_statement "uVar8 = (uint)(DAT_00151454 != (char *)0x0);" (assignment_expression "uVar8 = (uint)(DAT_00151454 != (char *)0x0)" identifier = (call_expression "(uint)(DAT_00151454 != (char *)0x0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(DAT_00151454 != (char *)0x0)" ( (binary_expression "DAT_00151454 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )))) ;)) (expression_statement "pcVar3 = DAT_0015143c;" (assignment_expression "pcVar3 = DAT_0015143c" identifier = identifier) ;) (expression_statement "DAT_00151438 = uVar8;" (assignment_expression "DAT_00151438 = uVar8" identifier = identifier) ;) }) while (parenthesized_expression "(DAT_00151454 != (char *)0x0)" ( (binary_expression "DAT_00151454 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) (if_statement "if (((DAT_00151434 == 0) || (*(char *)(DAT_00151434 + DAT_00151430) == '\0')) ||\n           (pcVar3 = (char *)extract_colon_unit(DAT_00151434,&DAT_00151430), pcVar3 == (char *)0x0))\n        goto LAB_0008dac4;" if (parenthesized_expression "(((DAT_00151434 == 0) || (*(char *)(DAT_00151434 + DAT_00151430) == '\0')) ||\n           (pcVar3 = (char *)extract_colon_unit(DAT_00151434,&DAT_00151430), pcVar3 == (char *)0x0))" ( (binary_expression "((DAT_00151434 == 0) || (*(char *)(DAT_00151434 + DAT_00151430) == '\0')) ||\n           (pcVar3 = (char *)extract_colon_unit(DAT_00151434,&DAT_00151430), pcVar3 == (char *)0x0)" (parenthesized_expression "((DAT_00151434 == 0) || (*(char *)(DAT_00151434 + DAT_00151430) == '\0'))" ( (binary_expression "(DAT_00151434 == 0) || (*(char *)(DAT_00151434 + DAT_00151430) == '\0')" (parenthesized_expression "(DAT_00151434 == 0)" ( (binary_expression "DAT_00151434 == 0" identifier == number_literal) )) || (parenthesized_expression "(*(char *)(DAT_00151434 + DAT_00151430) == '\0')" ( (binary_expression "*(char *)(DAT_00151434 + DAT_00151430) == '\0'" (pointer_expression "*(char *)(DAT_00151434 + DAT_00151430)" * (cast_expression "(char *)(DAT_00151434 + DAT_00151430)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_00151434 + DAT_00151430)" ( (binary_expression "DAT_00151434 + DAT_00151430" identifier + identifier) )))) == (char_literal "'\0'" ' escape_sequence ')) ))) )) || (parenthesized_expression "(pcVar3 = (char *)extract_colon_unit(DAT_00151434,&DAT_00151430), pcVar3 == (char *)0x0)" ( (comma_expression "pcVar3 = (char *)extract_colon_unit(DAT_00151434,&DAT_00151430), pcVar3 == (char *)0x0" (assignment_expression "pcVar3 = (char *)extract_colon_unit(DAT_00151434,&DAT_00151430)" identifier = (cast_expression "(char *)extract_colon_unit(DAT_00151434,&DAT_00151430)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "extract_colon_unit(DAT_00151434,&DAT_00151430)" identifier (argument_list "(DAT_00151434,&DAT_00151430)" ( identifier , (pointer_expression "&DAT_00151430" & identifier) ))))) , (binary_expression "pcVar3 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) (goto_statement "goto LAB_0008dac4;" goto statement_identifier ;)) (expression_statement "DAT_00151460 = 1;" (assignment_expression "DAT_00151460 = 1" identifier = number_literal) ;) (expression_statement "cVar11 = *pcVar3;" (assignment_expression "cVar11 = *pcVar3" identifier = (pointer_expression "*pcVar3" * identifier)) ;) (if_statement "if (cVar11 == '\0') {\n          free(pcVar3);\n          pcVar3 = (char *)xmalloc(2);\n          pcVar3[0] = '.';\n          pcVar3[1] = '\0';\n          cVar11 = '.';\n        }" if (parenthesized_expression "(cVar11 == '\0')" ( (binary_expression "cVar11 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n          free(pcVar3);\n          pcVar3 = (char *)xmalloc(2);\n          pcVar3[0] = '.';\n          pcVar3[1] = '\0';\n          cVar11 = '.';\n        }" { (expression_statement "free(pcVar3);" (call_expression "free(pcVar3)" identifier (argument_list "(pcVar3)" ( identifier ))) ;) (expression_statement "pcVar3 = (char *)xmalloc(2);" (assignment_expression "pcVar3 = (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 "pcVar3[0] = '.';" (assignment_expression "pcVar3[0] = '.'" (subscript_expression "pcVar3[0]" identifier [ number_literal ]) = (char_literal "'.'" ' character ')) ;) (expression_statement "pcVar3[1] = '\0';" (assignment_expression "pcVar3[1] = '\0'" (subscript_expression "pcVar3[1]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "cVar11 = '.';" (assignment_expression "cVar11 = '.'" identifier = (char_literal "'.'" ' character ')) ;) })) (expression_statement "pcVar5 = pcVar3;" (assignment_expression "pcVar5 = pcVar3" identifier = identifier) ;) (if_statement "if (cVar11 == '~') {\n          pcVar5 = (char *)bash_tilde_expand(pcVar3,0);\n          free(pcVar3);\n          cVar11 = *pcVar5;\n        }" if (parenthesized_expression "(cVar11 == '~')" ( (binary_expression "cVar11 == '~'" identifier == (char_literal "'~'" ' character ')) )) (compound_statement "{\n          pcVar5 = (char *)bash_tilde_expand(pcVar3,0);\n          free(pcVar3);\n          cVar11 = *pcVar5;\n        }" { (expression_statement "pcVar5 = (char *)bash_tilde_expand(pcVar3,0);" (assignment_expression "pcVar5 = (char *)bash_tilde_expand(pcVar3,0)" identifier = (cast_expression "(char *)bash_tilde_expand(pcVar3,0)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "bash_tilde_expand(pcVar3,0)" identifier (argument_list "(pcVar3,0)" ( identifier , number_literal ))))) ;) (expression_statement "free(pcVar3);" (call_expression "free(pcVar3)" identifier (argument_list "(pcVar3)" ( identifier ))) ;) (expression_statement "cVar11 = *pcVar5;" (assignment_expression "cVar11 = *pcVar5" identifier = (pointer_expression "*pcVar5" * identifier)) ;) })) (expression_statement "pcVar3 = DAT_00151440;" (assignment_expression "pcVar3 = DAT_00151440" identifier = identifier) ;) (if_statement "if ((cVar11 == '.') && (pcVar5[1] == '\0')) {\n          DAT_001514ec = 1;\n        }" if (parenthesized_expression "((cVar11 == '.') && (pcVar5[1] == '\0'))" ( (binary_expression "(cVar11 == '.') && (pcVar5[1] == '\0')" (parenthesized_expression "(cVar11 == '.')" ( (binary_expression "cVar11 == '.'" identifier == (char_literal "'.'" ' character ')) )) && (parenthesized_expression "(pcVar5[1] == '\0')" ( (binary_expression "pcVar5[1] == '\0'" (subscript_expression "pcVar5[1]" identifier [ number_literal ]) == (char_literal "'\0'" ' escape_sequence ')) ))) )) (compound_statement "{\n          DAT_001514ec = 1;\n        }" { (expression_statement "DAT_001514ec = 1;" (assignment_expression "DAT_001514ec = 1" identifier = number_literal) ;) })) (if_statement "if (DAT_0015143c == (char *)0x0) {\nLAB_0008dbfe:\n          if (pcVar3 != (char *)0x0) goto LAB_0008de5f;\n        }\n        else {\n          if (DAT_0015143c != DAT_00151440) {\n            free(DAT_0015143c);\n            goto LAB_0008dbfe;\n          }\nLAB_0008de5f:\n          free(pcVar3);\n        }" if (parenthesized_expression "(DAT_0015143c == (char *)0x0)" ( (binary_expression "DAT_0015143c == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nLAB_0008dbfe:\n          if (pcVar3 != (char *)0x0) goto LAB_0008de5f;\n        }" { (labeled_statement "LAB_0008dbfe:\n          if (pcVar3 != (char *)0x0) goto LAB_0008de5f;" statement_identifier : (if_statement "if (pcVar3 != (char *)0x0) goto LAB_0008de5f;" if (parenthesized_expression "(pcVar3 != (char *)0x0)" ( (binary_expression "pcVar3 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0008de5f;" goto statement_identifier ;))) }) (else_clause "else {\n          if (DAT_0015143c != DAT_00151440) {\n            free(DAT_0015143c);\n            goto LAB_0008dbfe;\n          }\nLAB_0008de5f:\n          free(pcVar3);\n        }" else (compound_statement "{\n          if (DAT_0015143c != DAT_00151440) {\n            free(DAT_0015143c);\n            goto LAB_0008dbfe;\n          }\nLAB_0008de5f:\n          free(pcVar3);\n        }" { (if_statement "if (DAT_0015143c != DAT_00151440) {\n            free(DAT_0015143c);\n            goto LAB_0008dbfe;\n          }" if (parenthesized_expression "(DAT_0015143c != DAT_00151440)" ( (binary_expression "DAT_0015143c != DAT_00151440" identifier != identifier) )) (compound_statement "{\n            free(DAT_0015143c);\n            goto LAB_0008dbfe;\n          }" { (expression_statement "free(DAT_0015143c);" (call_expression "free(DAT_0015143c)" identifier (argument_list "(DAT_0015143c)" ( identifier ))) ;) (goto_statement "goto LAB_0008dbfe;" goto statement_identifier ;) })) (labeled_statement "LAB_0008de5f:\n          free(pcVar3);" statement_identifier : (expression_statement "free(pcVar3);" (call_expression "free(pcVar3)" identifier (argument_list "(pcVar3)" ( identifier ))) ;)) }))) (expression_statement "pcVar3 = (char *)sh_makepath(pcVar5,DAT_00151464,0);" (assignment_expression "pcVar3 = (char *)sh_makepath(pcVar5,DAT_00151464,0)" identifier = (cast_expression "(char *)sh_makepath(pcVar5,DAT_00151464,0)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "sh_makepath(pcVar5,DAT_00151464,0)" identifier (argument_list "(pcVar5,DAT_00151464,0)" ( identifier , identifier , number_literal ))))) ;) (expression_statement "DAT_00151440 = pcVar3;" (assignment_expression "DAT_00151440 = pcVar3" identifier = identifier) ;) (expression_statement "pcVar10 = strpbrk(pcVar3,"\"\'\\");" (assignment_expression "pcVar10 = strpbrk(pcVar3,"\"\'\\")" identifier = (call_expression "strpbrk(pcVar3,"\"\'\\")" identifier (argument_list "(pcVar3,"\"\'\\")" ( identifier , (string_literal ""\"\'\\"" " escape_sequence escape_sequence escape_sequence ") )))) ;) (if_statement "if (pcVar10 != (char *)0x0) {\n          pcVar3 = (char *)sh_backslash_quote(pcVar3,&DAT_00151500,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          pcVar3 = (char *)sh_backslash_quote(pcVar3,&DAT_00151500,0);\n        }" { (expression_statement "pcVar3 = (char *)sh_backslash_quote(pcVar3,&DAT_00151500,0);" (assignment_expression "pcVar3 = (char *)sh_backslash_quote(pcVar3,&DAT_00151500,0)" identifier = (cast_expression "(char *)sh_backslash_quote(pcVar3,&DAT_00151500,0)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "sh_backslash_quote(pcVar3,&DAT_00151500,0)" identifier (argument_list "(pcVar3,&DAT_00151500,0)" ( identifier , (pointer_expression "&DAT_00151500" & identifier) , number_literal ))))) ;) })) (expression_statement "DAT_0015143c = pcVar3;" (assignment_expression "DAT_0015143c = pcVar3" identifier = identifier) ;) (expression_statement "free(pcVar5);" (call_expression "free(pcVar5)" identifier (argument_list "(pcVar5)" ( identifier ))) ;) (expression_statement "uVar8 = DAT_00151438;" (assignment_expression "uVar8 = DAT_00151438" identifier = identifier) ;) }) while (parenthesized_expression "( true )" ( true )) ;) })) (expression_statement "DAT_0015145c = 5;" (assignment_expression "DAT_0015145c = 5" identifier = number_literal) ;) (labeled_statement "LAB_0008d218:\n    glob_ignore_case = DAT_00151450;" statement_identifier : (expression_statement "glob_ignore_case = DAT_00151450;" (assignment_expression "glob_ignore_case = DAT_00151450" identifier = identifier) ;)) (expression_statement "puVar6 = (undefined4 *)shell_glob_filename(DAT_00151464);" (assignment_expression "puVar6 = (undefined4 *)shell_glob_filename(DAT_00151464)" identifier = (cast_expression "(undefined4 *)shell_glob_filename(DAT_00151464)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "shell_glob_filename(DAT_00151464)" identifier (argument_list "(DAT_00151464)" ( identifier ))))) ;) (expression_statement "glob_ignore_case = 0;" (assignment_expression "glob_ignore_case = 0" identifier = number_literal) ;) (if_statement "if ((puVar6 == (undefined4 *)PTR_glob_error_return_00149f60) || (puVar6 == (undefined4 *)0x0)) {\n      DAT_001514d4 = (undefined4 *)0x0;\n      pcVar3 = (char *)0x0;\n      goto LAB_0008d5c8;\n    }" if (parenthesized_expression "((puVar6 == (undefined4 *)PTR_glob_error_return_00149f60) || (puVar6 == (undefined4 *)0x0))" ( (binary_expression "(puVar6 == (undefined4 *)PTR_glob_error_return_00149f60) || (puVar6 == (undefined4 *)0x0)" (parenthesized_expression "(puVar6 == (undefined4 *)PTR_glob_error_return_00149f60)" ( (binary_expression "puVar6 == (undefined4 *)PTR_glob_error_return_00149f60" identifier == (cast_expression "(undefined4 *)PTR_glob_error_return_00149f60" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) || (parenthesized_expression "(puVar6 == (undefined4 *)0x0)" ( (binary_expression "puVar6 == (undefined4 *)0x0" identifier == (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) (compound_statement "{\n      DAT_001514d4 = (undefined4 *)0x0;\n      pcVar3 = (char *)0x0;\n      goto LAB_0008d5c8;\n    }" { (expression_statement "DAT_001514d4 = (undefined4 *)0x0;" (assignment_expression "DAT_001514d4 = (undefined4 *)0x0" identifier = (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "pcVar3 = (char *)0x0;" (assignment_expression "pcVar3 = (char *)0x0" identifier = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (goto_statement "goto LAB_0008d5c8;" goto statement_identifier ;) })) (expression_statement "DAT_0015142c = 0;" (assignment_expression "DAT_0015142c = 0" identifier = number_literal) ;) (expression_statement "DAT_001514d4 = puVar6;" (assignment_expression "DAT_001514d4 = puVar6" identifier = identifier) ;) (if_statement "if ((puVar6[1] != 0) && (rl_completion_type == 9)) {\nLAB_0008dac4:\n      pcVar3 = (char *)0x0;\n      goto LAB_0008d5c8;\n    }" if (parenthesized_expression "((puVar6[1] != 0) && (rl_completion_type == 9))" ( (binary_expression "(puVar6[1] != 0) && (rl_completion_type == 9)" (parenthesized_expression "(puVar6[1] != 0)" ( (binary_expression "puVar6[1] != 0" (subscript_expression "puVar6[1]" identifier [ number_literal ]) != number_literal) )) && (parenthesized_expression "(rl_completion_type == 9)" ( (binary_expression "rl_completion_type == 9" identifier == number_literal) ))) )) (compound_statement "{\nLAB_0008dac4:\n      pcVar3 = (char *)0x0;\n      goto LAB_0008d5c8;\n    }" { (labeled_statement "LAB_0008dac4:\n      pcVar3 = (char *)0x0;" statement_identifier : (expression_statement "pcVar3 = (char *)0x0;" (assignment_expression "pcVar3 = (char *)0x0" identifier = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;)) (goto_statement "goto LAB_0008d5c8;" goto statement_identifier ;) })) (expression_statement "iVar2 = 1;" (assignment_expression "iVar2 = 1" identifier = number_literal) ;) }) (else_clause "else {\nLAB_0008d390:\n    pcVar3 = DAT_00151464;\n    uVar8 = DAT_00151450;\n    sVar4 = DAT_00151444;\n    pvVar1 = DAT_00151424;\n    iVar2 = DAT_0015142c;\n    if (DAT_0015145c == 1) {\nLAB_0008d960:\n      do {\n        pcVar5 = (&word_token_alist)[iVar2 * 2];\n        if (pcVar5 == (char *)0x0) {\n          DAT_0015142c = 0;\n          DAT_0015145c = DAT_0015145c + 1;\n          uVar8 = DAT_00151450;\n          pvVar1 = DAT_00151428;\n          goto LAB_0008d840;\n        }\n        iVar2 = iVar2 + 1;\n        DAT_0015142c = iVar2;\n      } while ((sVar4 != 0) &&\n              ((*pcVar5 != *pcVar3 || (iVar9 = strncmp(pcVar5,pcVar3,sVar4), iVar9 != 0))));\nLAB_0008d451:\n      sVar4 = strlen(pcVar5);\n      pcVar3 = (char *)xmalloc(sVar4 + 1);\n      pcVar3 = strcpy(pcVar3,pcVar5);\n      goto LAB_0008d5c8;\n    }\n    if (DAT_0015145c < 2) {\n      if (DAT_0015145c == 0) {\n        do {\n          while( true ) {\n            if ((pvVar1 == (void *)0x0) ||\n               (puVar6 = *(undefined4 **)((int)pvVar1 + DAT_0015142c * 4),\n               puVar6 == (undefined4 *)0x0)) {\n              DAT_0015145c = 1;\n              iVar2 = 0;\n              goto LAB_0008d960;\n            }\n            DAT_0015142c = DAT_0015142c + 1;\n            pcVar5 = (char *)*puVar6;\n            if (uVar8 != 0) break;\n            if ((sVar4 == 0) ||\n               ((*pcVar5 == *pcVar3 && (iVar2 = strncmp(pcVar5,pcVar3,sVar4), iVar2 == 0))))\n            goto LAB_0008d451;\n          }\n          iVar2 = strncasecmp(pcVar5,pcVar3,sVar4);\n        } while (iVar2 != 0);\n        goto LAB_0008d451;\n      }\n    }\n    else {\n      pvVar1 = DAT_00151428;\n      if (DAT_0015145c == 2) {\nLAB_0008d840:\n        do {\n          if ((pvVar1 == (void *)0x0) ||\n             (puVar6 = *(undefined4 **)((int)pvVar1 + DAT_0015142c * 4), puVar6 == (undefined4 *)0x0\n             )) {\n            DAT_0015142c = 0;\n            DAT_0015145c = DAT_0015145c + 1;\n            goto LAB_0008d3bd;\n          }\n          DAT_0015142c = DAT_0015142c + 1;\n          pcVar5 = (char *)*puVar6;\n          if (uVar8 == 0) {\n            if ((sVar4 == 0) ||\n               ((*pcVar5 == *pcVar3 && (iVar2 = strncmp(pcVar5,pcVar3,sVar4), iVar2 == 0)))) break;\n            goto LAB_0008d840;\n          }\n          iVar2 = strncasecmp(pcVar5,pcVar3,sVar4);\n        } while (iVar2 != 0);\n        sVar4 = strlen(pcVar5);\n        pcVar3 = (char *)xmalloc(sVar4 + 1);\n        pcVar3 = strcpy(pcVar3,pcVar5);\n        goto LAB_0008d5c8;\n      }\n      if (DAT_0015145c == 3) {\nLAB_0008d3bd:\n        pcVar3 = DAT_00151464;\n        sVar4 = DAT_00151444;\n        iVar2 = num_shell_builtins;\n        if (DAT_0015142c < num_shell_builtins) {\n          puVar6 = (undefined4 *)(shell_builtins + DAT_0015142c * 0x18);\n          do {\n            iVar9 = DAT_0015142c;\n            if (((puVar6[1] != 0) && ((*(byte *)(puVar6 + 2) & 1) != 0)) &&\n               ((pcVar5 = (char *)*puVar6, sVar4 == 0 ||\n                ((*pcVar5 == *pcVar3 && (iVar7 = strncmp(pcVar5,pcVar3,sVar4), iVar7 == 0)))))) {\n              DAT_0015142c = iVar9 + 1;\n              goto LAB_0008d451;\n            }\n            DAT_0015142c = iVar9 + 1;\n            puVar6 = puVar6 + 6;\n          } while (DAT_0015142c != iVar2);\n        }\n        DAT_0015145c = DAT_0015145c + 1;\n        DAT_0015142c = 0;\n      }\n    }\n    if (DAT_0015144c == 0) {\n      if (DAT_00151458 == 0) goto LAB_0008d5f6;\n      DAT_00151458 = 0;\n      sVar4 = strlen(param_1);\n      pcVar3 = (char *)xmalloc(sVar4 + 1);\n      pcVar3 = strcpy(pcVar3,param_1);\n      goto LAB_0008d5c8;\n    }\n    if (param_2 == 0) goto LAB_0008d218;\n    iVar2 = DAT_0015142c + 1;\n    puVar6 = DAT_001514d4 + DAT_0015142c;\n  }" else (compound_statement "{\nLAB_0008d390:\n    pcVar3 = DAT_00151464;\n    uVar8 = DAT_00151450;\n    sVar4 = DAT_00151444;\n    pvVar1 = DAT_00151424;\n    iVar2 = DAT_0015142c;\n    if (DAT_0015145c == 1) {\nLAB_0008d960:\n      do {\n        pcVar5 = (&word_token_alist)[iVar2 * 2];\n        if (pcVar5 == (char *)0x0) {\n          DAT_0015142c = 0;\n          DAT_0015145c = DAT_0015145c + 1;\n          uVar8 = DAT_00151450;\n          pvVar1 = DAT_00151428;\n          goto LAB_0008d840;\n        }\n        iVar2 = iVar2 + 1;\n        DAT_0015142c = iVar2;\n      } while ((sVar4 != 0) &&\n              ((*pcVar5 != *pcVar3 || (iVar9 = strncmp(pcVar5,pcVar3,sVar4), iVar9 != 0))));\nLAB_0008d451:\n      sVar4 = strlen(pcVar5);\n      pcVar3 = (char *)xmalloc(sVar4 + 1);\n      pcVar3 = strcpy(pcVar3,pcVar5);\n      goto LAB_0008d5c8;\n    }\n    if (DAT_0015145c < 2) {\n      if (DAT_0015145c == 0) {\n        do {\n          while( true ) {\n            if ((pvVar1 == (void *)0x0) ||\n               (puVar6 = *(undefined4 **)((int)pvVar1 + DAT_0015142c * 4),\n               puVar6 == (undefined4 *)0x0)) {\n              DAT_0015145c = 1;\n              iVar2 = 0;\n              goto LAB_0008d960;\n            }\n            DAT_0015142c = DAT_0015142c + 1;\n            pcVar5 = (char *)*puVar6;\n            if (uVar8 != 0) break;\n            if ((sVar4 == 0) ||\n               ((*pcVar5 == *pcVar3 && (iVar2 = strncmp(pcVar5,pcVar3,sVar4), iVar2 == 0))))\n            goto LAB_0008d451;\n          }\n          iVar2 = strncasecmp(pcVar5,pcVar3,sVar4);\n        } while (iVar2 != 0);\n        goto LAB_0008d451;\n      }\n    }\n    else {\n      pvVar1 = DAT_00151428;\n      if (DAT_0015145c == 2) {\nLAB_0008d840:\n        do {\n          if ((pvVar1 == (void *)0x0) ||\n             (puVar6 = *(undefined4 **)((int)pvVar1 + DAT_0015142c * 4), puVar6 == (undefined4 *)0x0\n             )) {\n            DAT_0015142c = 0;\n            DAT_0015145c = DAT_0015145c + 1;\n            goto LAB_0008d3bd;\n          }\n          DAT_0015142c = DAT_0015142c + 1;\n          pcVar5 = (char *)*puVar6;\n          if (uVar8 == 0) {\n            if ((sVar4 == 0) ||\n               ((*pcVar5 == *pcVar3 && (iVar2 = strncmp(pcVar5,pcVar3,sVar4), iVar2 == 0)))) break;\n            goto LAB_0008d840;\n          }\n          iVar2 = strncasecmp(pcVar5,pcVar3,sVar4);\n        } while (iVar2 != 0);\n        sVar4 = strlen(pcVar5);\n        pcVar3 = (char *)xmalloc(sVar4 + 1);\n        pcVar3 = strcpy(pcVar3,pcVar5);\n        goto LAB_0008d5c8;\n      }\n      if (DAT_0015145c == 3) {\nLAB_0008d3bd:\n        pcVar3 = DAT_00151464;\n        sVar4 = DAT_00151444;\n        iVar2 = num_shell_builtins;\n        if (DAT_0015142c < num_shell_builtins) {\n          puVar6 = (undefined4 *)(shell_builtins + DAT_0015142c * 0x18);\n          do {\n            iVar9 = DAT_0015142c;\n            if (((puVar6[1] != 0) && ((*(byte *)(puVar6 + 2) & 1) != 0)) &&\n               ((pcVar5 = (char *)*puVar6, sVar4 == 0 ||\n                ((*pcVar5 == *pcVar3 && (iVar7 = strncmp(pcVar5,pcVar3,sVar4), iVar7 == 0)))))) {\n              DAT_0015142c = iVar9 + 1;\n              goto LAB_0008d451;\n            }\n            DAT_0015142c = iVar9 + 1;\n            puVar6 = puVar6 + 6;\n          } while (DAT_0015142c != iVar2);\n        }\n        DAT_0015145c = DAT_0015145c + 1;\n        DAT_0015142c = 0;\n      }\n    }\n    if (DAT_0015144c == 0) {\n      if (DAT_00151458 == 0) goto LAB_0008d5f6;\n      DAT_00151458 = 0;\n      sVar4 = strlen(param_1);\n      pcVar3 = (char *)xmalloc(sVar4 + 1);\n      pcVar3 = strcpy(pcVar3,param_1);\n      goto LAB_0008d5c8;\n    }\n    if (param_2 == 0) goto LAB_0008d218;\n    iVar2 = DAT_0015142c + 1;\n    puVar6 = DAT_001514d4 + DAT_0015142c;\n  }" { (labeled_statement "LAB_0008d390:\n    pcVar3 = DAT_00151464;" statement_identifier : (expression_statement "pcVar3 = DAT_00151464;" (assignment_expression "pcVar3 = DAT_00151464" identifier = identifier) ;)) (expression_statement "uVar8 = DAT_00151450;" (assignment_expression "uVar8 = DAT_00151450" identifier = identifier) ;) (expression_statement "sVar4 = DAT_00151444;" (assignment_expression "sVar4 = DAT_00151444" identifier = identifier) ;) (expression_statement "pvVar1 = DAT_00151424;" (assignment_expression "pvVar1 = DAT_00151424" identifier = identifier) ;) (expression_statement "iVar2 = DAT_0015142c;" (assignment_expression "iVar2 = DAT_0015142c" identifier = identifier) ;) (if_statement "if (DAT_0015145c == 1) {\nLAB_0008d960:\n      do {\n        pcVar5 = (&word_token_alist)[iVar2 * 2];\n        if (pcVar5 == (char *)0x0) {\n          DAT_0015142c = 0;\n          DAT_0015145c = DAT_0015145c + 1;\n          uVar8 = DAT_00151450;\n          pvVar1 = DAT_00151428;\n          goto LAB_0008d840;\n        }\n        iVar2 = iVar2 + 1;\n        DAT_0015142c = iVar2;\n      } while ((sVar4 != 0) &&\n              ((*pcVar5 != *pcVar3 || (iVar9 = strncmp(pcVar5,pcVar3,sVar4), iVar9 != 0))));\nLAB_0008d451:\n      sVar4 = strlen(pcVar5);\n      pcVar3 = (char *)xmalloc(sVar4 + 1);\n      pcVar3 = strcpy(pcVar3,pcVar5);\n      goto LAB_0008d5c8;\n    }" if (parenthesized_expression "(DAT_0015145c == 1)" ( (binary_expression "DAT_0015145c == 1" identifier == number_literal) )) (compound_statement "{\nLAB_0008d960:\n      do {\n        pcVar5 = (&word_token_alist)[iVar2 * 2];\n        if (pcVar5 == (char *)0x0) {\n          DAT_0015142c = 0;\n          DAT_0015145c = DAT_0015145c + 1;\n          uVar8 = DAT_00151450;\n          pvVar1 = DAT_00151428;\n          goto LAB_0008d840;\n        }\n        iVar2 = iVar2 + 1;\n        DAT_0015142c = iVar2;\n      } while ((sVar4 != 0) &&\n              ((*pcVar5 != *pcVar3 || (iVar9 = strncmp(pcVar5,pcVar3,sVar4), iVar9 != 0))));\nLAB_0008d451:\n      sVar4 = strlen(pcVar5);\n      pcVar3 = (char *)xmalloc(sVar4 + 1);\n      pcVar3 = strcpy(pcVar3,pcVar5);\n      goto LAB_0008d5c8;\n    }" { (labeled_statement "LAB_0008d960:\n      do {\n        pcVar5 = (&word_token_alist)[iVar2 * 2];\n        if (pcVar5 == (char *)0x0) {\n          DAT_0015142c = 0;\n          DAT_0015145c = DAT_0015145c + 1;\n          uVar8 = DAT_00151450;\n          pvVar1 = DAT_00151428;\n          goto LAB_0008d840;\n        }\n        iVar2 = iVar2 + 1;\n        DAT_0015142c = iVar2;\n      } while ((sVar4 != 0) &&\n              ((*pcVar5 != *pcVar3 || (iVar9 = strncmp(pcVar5,pcVar3,sVar4), iVar9 != 0))));" statement_identifier : (do_statement "do {\n        pcVar5 = (&word_token_alist)[iVar2 * 2];\n        if (pcVar5 == (char *)0x0) {\n          DAT_0015142c = 0;\n          DAT_0015145c = DAT_0015145c + 1;\n          uVar8 = DAT_00151450;\n          pvVar1 = DAT_00151428;\n          goto LAB_0008d840;\n        }\n        iVar2 = iVar2 + 1;\n        DAT_0015142c = iVar2;\n      } while ((sVar4 != 0) &&\n              ((*pcVar5 != *pcVar3 || (iVar9 = strncmp(pcVar5,pcVar3,sVar4), iVar9 != 0))));" do (compound_statement "{\n        pcVar5 = (&word_token_alist)[iVar2 * 2];\n        if (pcVar5 == (char *)0x0) {\n          DAT_0015142c = 0;\n          DAT_0015145c = DAT_0015145c + 1;\n          uVar8 = DAT_00151450;\n          pvVar1 = DAT_00151428;\n          goto LAB_0008d840;\n        }\n        iVar2 = iVar2 + 1;\n        DAT_0015142c = iVar2;\n      }" { (expression_statement "pcVar5 = (&word_token_alist)[iVar2 * 2];" (assignment_expression "pcVar5 = (&word_token_alist)[iVar2 * 2]" identifier = (subscript_expression "(&word_token_alist)[iVar2 * 2]" (parenthesized_expression "(&word_token_alist)" ( (pointer_expression "&word_token_alist" & identifier) )) [ (binary_expression "iVar2 * 2" identifier * number_literal) ])) ;) (if_statement "if (pcVar5 == (char *)0x0) {\n          DAT_0015142c = 0;\n          DAT_0015145c = DAT_0015145c + 1;\n          uVar8 = DAT_00151450;\n          pvVar1 = DAT_00151428;\n          goto LAB_0008d840;\n        }" if (parenthesized_expression "(pcVar5 == (char *)0x0)" ( (binary_expression "pcVar5 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          DAT_0015142c = 0;\n          DAT_0015145c = DAT_0015145c + 1;\n          uVar8 = DAT_00151450;\n          pvVar1 = DAT_00151428;\n          goto LAB_0008d840;\n        }" { (expression_statement "DAT_0015142c = 0;" (assignment_expression "DAT_0015142c = 0" identifier = number_literal) ;) (expression_statement "DAT_0015145c = DAT_0015145c + 1;" (assignment_expression "DAT_0015145c = DAT_0015145c + 1" identifier = (binary_expression "DAT_0015145c + 1" identifier + number_literal)) ;) (expression_statement "uVar8 = DAT_00151450;" (assignment_expression "uVar8 = DAT_00151450" identifier = identifier) ;) (expression_statement "pvVar1 = DAT_00151428;" (assignment_expression "pvVar1 = DAT_00151428" identifier = identifier) ;) (goto_statement "goto LAB_0008d840;" goto statement_identifier ;) })) (expression_statement "iVar2 = iVar2 + 1;" (assignment_expression "iVar2 = iVar2 + 1" identifier = (binary_expression "iVar2 + 1" identifier + number_literal)) ;) (expression_statement "DAT_0015142c = iVar2;" (assignment_expression "DAT_0015142c = iVar2" identifier = identifier) ;) }) while (parenthesized_expression "((sVar4 != 0) &&\n              ((*pcVar5 != *pcVar3 || (iVar9 = strncmp(pcVar5,pcVar3,sVar4), iVar9 != 0))))" ( (binary_expression "(sVar4 != 0) &&\n              ((*pcVar5 != *pcVar3 || (iVar9 = strncmp(pcVar5,pcVar3,sVar4), iVar9 != 0)))" (parenthesized_expression "(sVar4 != 0)" ( (binary_expression "sVar4 != 0" identifier != number_literal) )) && (parenthesized_expression "((*pcVar5 != *pcVar3 || (iVar9 = strncmp(pcVar5,pcVar3,sVar4), iVar9 != 0)))" ( (parenthesized_expression "(*pcVar5 != *pcVar3 || (iVar9 = strncmp(pcVar5,pcVar3,sVar4), iVar9 != 0))" ( (binary_expression "*pcVar5 != *pcVar3 || (iVar9 = strncmp(pcVar5,pcVar3,sVar4), iVar9 != 0)" (binary_expression "*pcVar5 != *pcVar3" (pointer_expression "*pcVar5" * identifier) != (pointer_expression "*pcVar3" * identifier)) || (parenthesized_expression "(iVar9 = strncmp(pcVar5,pcVar3,sVar4), iVar9 != 0)" ( (comma_expression "iVar9 = strncmp(pcVar5,pcVar3,sVar4), iVar9 != 0" (assignment_expression "iVar9 = strncmp(pcVar5,pcVar3,sVar4)" identifier = (call_expression "strncmp(pcVar5,pcVar3,sVar4)" identifier (argument_list "(pcVar5,pcVar3,sVar4)" ( identifier , identifier , identifier )))) , (binary_expression "iVar9 != 0" identifier != number_literal)) ))) )) ))) )) ;)) (labeled_statement "LAB_0008d451:\n      sVar4 = strlen(pcVar5);" statement_identifier : (expression_statement "sVar4 = strlen(pcVar5);" (assignment_expression "sVar4 = strlen(pcVar5)" identifier = (call_expression "strlen(pcVar5)" identifier (argument_list "(pcVar5)" ( identifier )))) ;)) (expression_statement "pcVar3 = (char *)xmalloc(sVar4 + 1);" (assignment_expression "pcVar3 = (char *)xmalloc(sVar4 + 1)" identifier = (cast_expression "(char *)xmalloc(sVar4 + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(sVar4 + 1)" identifier (argument_list "(sVar4 + 1)" ( (binary_expression "sVar4 + 1" identifier + number_literal) ))))) ;) (expression_statement "pcVar3 = strcpy(pcVar3,pcVar5);" (assignment_expression "pcVar3 = strcpy(pcVar3,pcVar5)" identifier = (call_expression "strcpy(pcVar3,pcVar5)" identifier (argument_list "(pcVar3,pcVar5)" ( identifier , identifier )))) ;) (goto_statement "goto LAB_0008d5c8;" goto statement_identifier ;) })) (if_statement "if (DAT_0015145c < 2) {\n      if (DAT_0015145c == 0) {\n        do {\n          while( true ) {\n            if ((pvVar1 == (void *)0x0) ||\n               (puVar6 = *(undefined4 **)((int)pvVar1 + DAT_0015142c * 4),\n               puVar6 == (undefined4 *)0x0)) {\n              DAT_0015145c = 1;\n              iVar2 = 0;\n              goto LAB_0008d960;\n            }\n            DAT_0015142c = DAT_0015142c + 1;\n            pcVar5 = (char *)*puVar6;\n            if (uVar8 != 0) break;\n            if ((sVar4 == 0) ||\n               ((*pcVar5 == *pcVar3 && (iVar2 = strncmp(pcVar5,pcVar3,sVar4), iVar2 == 0))))\n            goto LAB_0008d451;\n          }\n          iVar2 = strncasecmp(pcVar5,pcVar3,sVar4);\n        } while (iVar2 != 0);\n        goto LAB_0008d451;\n      }\n    }\n    else {\n      pvVar1 = DAT_00151428;\n      if (DAT_0015145c == 2) {\nLAB_0008d840:\n        do {\n          if ((pvVar1 == (void *)0x0) ||\n             (puVar6 = *(undefined4 **)((int)pvVar1 + DAT_0015142c * 4), puVar6 == (undefined4 *)0x0\n             )) {\n            DAT_0015142c = 0;\n            DAT_0015145c = DAT_0015145c + 1;\n            goto LAB_0008d3bd;\n          }\n          DAT_0015142c = DAT_0015142c + 1;\n          pcVar5 = (char *)*puVar6;\n          if (uVar8 == 0) {\n            if ((sVar4 == 0) ||\n               ((*pcVar5 == *pcVar3 && (iVar2 = strncmp(pcVar5,pcVar3,sVar4), iVar2 == 0)))) break;\n            goto LAB_0008d840;\n          }\n          iVar2 = strncasecmp(pcVar5,pcVar3,sVar4);\n        } while (iVar2 != 0);\n        sVar4 = strlen(pcVar5);\n        pcVar3 = (char *)xmalloc(sVar4 + 1);\n        pcVar3 = strcpy(pcVar3,pcVar5);\n        goto LAB_0008d5c8;\n      }\n      if (DAT_0015145c == 3) {\nLAB_0008d3bd:\n        pcVar3 = DAT_00151464;\n        sVar4 = DAT_00151444;\n        iVar2 = num_shell_builtins;\n        if (DAT_0015142c < num_shell_builtins) {\n          puVar6 = (undefined4 *)(shell_builtins + DAT_0015142c * 0x18);\n          do {\n            iVar9 = DAT_0015142c;\n            if (((puVar6[1] != 0) && ((*(byte *)(puVar6 + 2) & 1) != 0)) &&\n               ((pcVar5 = (char *)*puVar6, sVar4 == 0 ||\n                ((*pcVar5 == *pcVar3 && (iVar7 = strncmp(pcVar5,pcVar3,sVar4), iVar7 == 0)))))) {\n              DAT_0015142c = iVar9 + 1;\n              goto LAB_0008d451;\n            }\n            DAT_0015142c = iVar9 + 1;\n            puVar6 = puVar6 + 6;\n          } while (DAT_0015142c != iVar2);\n        }\n        DAT_0015145c = DAT_0015145c + 1;\n        DAT_0015142c = 0;\n      }\n    }" if (parenthesized_expression "(DAT_0015145c < 2)" ( (binary_expression "DAT_0015145c < 2" identifier < number_literal) )) (compound_statement "{\n      if (DAT_0015145c == 0) {\n        do {\n          while( true ) {\n            if ((pvVar1 == (void *)0x0) ||\n               (puVar6 = *(undefined4 **)((int)pvVar1 + DAT_0015142c * 4),\n               puVar6 == (undefined4 *)0x0)) {\n              DAT_0015145c = 1;\n              iVar2 = 0;\n              goto LAB_0008d960;\n            }\n            DAT_0015142c = DAT_0015142c + 1;\n            pcVar5 = (char *)*puVar6;\n            if (uVar8 != 0) break;\n            if ((sVar4 == 0) ||\n               ((*pcVar5 == *pcVar3 && (iVar2 = strncmp(pcVar5,pcVar3,sVar4), iVar2 == 0))))\n            goto LAB_0008d451;\n          }\n          iVar2 = strncasecmp(pcVar5,pcVar3,sVar4);\n        } while (iVar2 != 0);\n        goto LAB_0008d451;\n      }\n    }" { (if_statement "if (DAT_0015145c == 0) {\n        do {\n          while( true ) {\n            if ((pvVar1 == (void *)0x0) ||\n               (puVar6 = *(undefined4 **)((int)pvVar1 + DAT_0015142c * 4),\n               puVar6 == (undefined4 *)0x0)) {\n              DAT_0015145c = 1;\n              iVar2 = 0;\n              goto LAB_0008d960;\n            }\n            DAT_0015142c = DAT_0015142c + 1;\n            pcVar5 = (char *)*puVar6;\n            if (uVar8 != 0) break;\n            if ((sVar4 == 0) ||\n               ((*pcVar5 == *pcVar3 && (iVar2 = strncmp(pcVar5,pcVar3,sVar4), iVar2 == 0))))\n            goto LAB_0008d451;\n          }\n          iVar2 = strncasecmp(pcVar5,pcVar3,sVar4);\n        } while (iVar2 != 0);\n        goto LAB_0008d451;\n      }" if (parenthesized_expression "(DAT_0015145c == 0)" ( (binary_expression "DAT_0015145c == 0" identifier == number_literal) )) (compound_statement "{\n        do {\n          while( true ) {\n            if ((pvVar1 == (void *)0x0) ||\n               (puVar6 = *(undefined4 **)((int)pvVar1 + DAT_0015142c * 4),\n               puVar6 == (undefined4 *)0x0)) {\n              DAT_0015145c = 1;\n              iVar2 = 0;\n              goto LAB_0008d960;\n            }\n            DAT_0015142c = DAT_0015142c + 1;\n            pcVar5 = (char *)*puVar6;\n            if (uVar8 != 0) break;\n            if ((sVar4 == 0) ||\n               ((*pcVar5 == *pcVar3 && (iVar2 = strncmp(pcVar5,pcVar3,sVar4), iVar2 == 0))))\n            goto LAB_0008d451;\n          }\n          iVar2 = strncasecmp(pcVar5,pcVar3,sVar4);\n        } while (iVar2 != 0);\n        goto LAB_0008d451;\n      }" { (do_statement "do {\n          while( true ) {\n            if ((pvVar1 == (void *)0x0) ||\n               (puVar6 = *(undefined4 **)((int)pvVar1 + DAT_0015142c * 4),\n               puVar6 == (undefined4 *)0x0)) {\n              DAT_0015145c = 1;\n              iVar2 = 0;\n              goto LAB_0008d960;\n            }\n            DAT_0015142c = DAT_0015142c + 1;\n            pcVar5 = (char *)*puVar6;\n            if (uVar8 != 0) break;\n            if ((sVar4 == 0) ||\n               ((*pcVar5 == *pcVar3 && (iVar2 = strncmp(pcVar5,pcVar3,sVar4), iVar2 == 0))))\n            goto LAB_0008d451;\n          }\n          iVar2 = strncasecmp(pcVar5,pcVar3,sVar4);\n        } while (iVar2 != 0);" do (compound_statement "{\n          while( true ) {\n            if ((pvVar1 == (void *)0x0) ||\n               (puVar6 = *(undefined4 **)((int)pvVar1 + DAT_0015142c * 4),\n               puVar6 == (undefined4 *)0x0)) {\n              DAT_0015145c = 1;\n              iVar2 = 0;\n              goto LAB_0008d960;\n            }\n            DAT_0015142c = DAT_0015142c + 1;\n            pcVar5 = (char *)*puVar6;\n            if (uVar8 != 0) break;\n            if ((sVar4 == 0) ||\n               ((*pcVar5 == *pcVar3 && (iVar2 = strncmp(pcVar5,pcVar3,sVar4), iVar2 == 0))))\n            goto LAB_0008d451;\n          }\n          iVar2 = strncasecmp(pcVar5,pcVar3,sVar4);\n        }" { (while_statement "while( true ) {\n            if ((pvVar1 == (void *)0x0) ||\n               (puVar6 = *(undefined4 **)((int)pvVar1 + DAT_0015142c * 4),\n               puVar6 == (undefined4 *)0x0)) {\n              DAT_0015145c = 1;\n              iVar2 = 0;\n              goto LAB_0008d960;\n            }\n            DAT_0015142c = DAT_0015142c + 1;\n            pcVar5 = (char *)*puVar6;\n            if (uVar8 != 0) break;\n            if ((sVar4 == 0) ||\n               ((*pcVar5 == *pcVar3 && (iVar2 = strncmp(pcVar5,pcVar3,sVar4), iVar2 == 0))))\n            goto LAB_0008d451;\n          }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n            if ((pvVar1 == (void *)0x0) ||\n               (puVar6 = *(undefined4 **)((int)pvVar1 + DAT_0015142c * 4),\n               puVar6 == (undefined4 *)0x0)) {\n              DAT_0015145c = 1;\n              iVar2 = 0;\n              goto LAB_0008d960;\n            }\n            DAT_0015142c = DAT_0015142c + 1;\n            pcVar5 = (char *)*puVar6;\n            if (uVar8 != 0) break;\n            if ((sVar4 == 0) ||\n               ((*pcVar5 == *pcVar3 && (iVar2 = strncmp(pcVar5,pcVar3,sVar4), iVar2 == 0))))\n            goto LAB_0008d451;\n          }" { (if_statement "if ((pvVar1 == (void *)0x0) ||\n               (puVar6 = *(undefined4 **)((int)pvVar1 + DAT_0015142c * 4),\n               puVar6 == (undefined4 *)0x0)) {\n              DAT_0015145c = 1;\n              iVar2 = 0;\n              goto LAB_0008d960;\n            }" if (parenthesized_expression "((pvVar1 == (void *)0x0) ||\n               (puVar6 = *(undefined4 **)((int)pvVar1 + DAT_0015142c * 4),\n               puVar6 == (undefined4 *)0x0))" ( (binary_expression "(pvVar1 == (void *)0x0) ||\n               (puVar6 = *(undefined4 **)((int)pvVar1 + DAT_0015142c * 4),\n               puVar6 == (undefined4 *)0x0)" (parenthesized_expression "(pvVar1 == (void *)0x0)" ( (binary_expression "pvVar1 == (void *)0x0" identifier == (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "(puVar6 = *(undefined4 **)((int)pvVar1 + DAT_0015142c * 4),\n               puVar6 == (undefined4 *)0x0)" ( (comma_expression "puVar6 = *(undefined4 **)((int)pvVar1 + DAT_0015142c * 4),\n               puVar6 == (undefined4 *)0x0" (assignment_expression "puVar6 = *(undefined4 **)((int)pvVar1 + DAT_0015142c * 4)" identifier = (pointer_expression "*(undefined4 **)((int)pvVar1 + DAT_0015142c * 4)" * (cast_expression "(undefined4 **)((int)pvVar1 + DAT_0015142c * 4)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)pvVar1 + DAT_0015142c * 4)" ( (binary_expression "(int)pvVar1 + DAT_0015142c * 4" (cast_expression "(int)pvVar1" ( (type_descriptor "int" primitive_type) ) identifier) + (binary_expression "DAT_0015142c * 4" identifier * number_literal)) ))))) , (binary_expression "puVar6 == (undefined4 *)0x0" identifier == (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) (compound_statement "{\n              DAT_0015145c = 1;\n              iVar2 = 0;\n              goto LAB_0008d960;\n            }" { (expression_statement "DAT_0015145c = 1;" (assignment_expression "DAT_0015145c = 1" identifier = number_literal) ;) (expression_statement "iVar2 = 0;" (assignment_expression "iVar2 = 0" identifier = number_literal) ;) (goto_statement "goto LAB_0008d960;" goto statement_identifier ;) })) (expression_statement "DAT_0015142c = DAT_0015142c + 1;" (assignment_expression "DAT_0015142c = DAT_0015142c + 1" identifier = (binary_expression "DAT_0015142c + 1" identifier + number_literal)) ;) (expression_statement "pcVar5 = (char *)*puVar6;" (assignment_expression "pcVar5 = (char *)*puVar6" identifier = (cast_expression "(char *)*puVar6" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar6" * identifier))) ;) (if_statement "if (uVar8 != 0) break;" if (parenthesized_expression "(uVar8 != 0)" ( (binary_expression "uVar8 != 0" identifier != number_literal) )) (break_statement "break;" break ;)) (if_statement "if ((sVar4 == 0) ||\n               ((*pcVar5 == *pcVar3 && (iVar2 = strncmp(pcVar5,pcVar3,sVar4), iVar2 == 0))))\n            goto LAB_0008d451;" if (parenthesized_expression "((sVar4 == 0) ||\n               ((*pcVar5 == *pcVar3 && (iVar2 = strncmp(pcVar5,pcVar3,sVar4), iVar2 == 0))))" ( (binary_expression "(sVar4 == 0) ||\n               ((*pcVar5 == *pcVar3 && (iVar2 = strncmp(pcVar5,pcVar3,sVar4), iVar2 == 0)))" (parenthesized_expression "(sVar4 == 0)" ( (binary_expression "sVar4 == 0" identifier == number_literal) )) || (parenthesized_expression "((*pcVar5 == *pcVar3 && (iVar2 = strncmp(pcVar5,pcVar3,sVar4), iVar2 == 0)))" ( (parenthesized_expression "(*pcVar5 == *pcVar3 && (iVar2 = strncmp(pcVar5,pcVar3,sVar4), iVar2 == 0))" ( (binary_expression "*pcVar5 == *pcVar3 && (iVar2 = strncmp(pcVar5,pcVar3,sVar4), iVar2 == 0)" (binary_expression "*pcVar5 == *pcVar3" (pointer_expression "*pcVar5" * identifier) == (pointer_expression "*pcVar3" * identifier)) && (parenthesized_expression "(iVar2 = strncmp(pcVar5,pcVar3,sVar4), iVar2 == 0)" ( (comma_expression "iVar2 = strncmp(pcVar5,pcVar3,sVar4), iVar2 == 0" (assignment_expression "iVar2 = strncmp(pcVar5,pcVar3,sVar4)" identifier = (call_expression "strncmp(pcVar5,pcVar3,sVar4)" identifier (argument_list "(pcVar5,pcVar3,sVar4)" ( identifier , identifier , identifier )))) , (binary_expression "iVar2 == 0" identifier == number_literal)) ))) )) ))) )) (goto_statement "goto LAB_0008d451;" goto statement_identifier ;)) })) (expression_statement "iVar2 = strncasecmp(pcVar5,pcVar3,sVar4);" (assignment_expression "iVar2 = strncasecmp(pcVar5,pcVar3,sVar4)" identifier = (call_expression "strncasecmp(pcVar5,pcVar3,sVar4)" identifier (argument_list "(pcVar5,pcVar3,sVar4)" ( identifier , identifier , identifier )))) ;) }) while (parenthesized_expression "(iVar2 != 0)" ( (binary_expression "iVar2 != 0" identifier != number_literal) )) ;) (goto_statement "goto LAB_0008d451;" goto statement_identifier ;) })) }) (else_clause "else {\n      pvVar1 = DAT_00151428;\n      if (DAT_0015145c == 2) {\nLAB_0008d840:\n        do {\n          if ((pvVar1 == (void *)0x0) ||\n             (puVar6 = *(undefined4 **)((int)pvVar1 + DAT_0015142c * 4), puVar6 == (undefined4 *)0x0\n             )) {\n            DAT_0015142c = 0;\n            DAT_0015145c = DAT_0015145c + 1;\n            goto LAB_0008d3bd;\n          }\n          DAT_0015142c = DAT_0015142c + 1;\n          pcVar5 = (char *)*puVar6;\n          if (uVar8 == 0) {\n            if ((sVar4 == 0) ||\n               ((*pcVar5 == *pcVar3 && (iVar2 = strncmp(pcVar5,pcVar3,sVar4), iVar2 == 0)))) break;\n            goto LAB_0008d840;\n          }\n          iVar2 = strncasecmp(pcVar5,pcVar3,sVar4);\n        } while (iVar2 != 0);\n        sVar4 = strlen(pcVar5);\n        pcVar3 = (char *)xmalloc(sVar4 + 1);\n        pcVar3 = strcpy(pcVar3,pcVar5);\n        goto LAB_0008d5c8;\n      }\n      if (DAT_0015145c == 3) {\nLAB_0008d3bd:\n        pcVar3 = DAT_00151464;\n        sVar4 = DAT_00151444;\n        iVar2 = num_shell_builtins;\n        if (DAT_0015142c < num_shell_builtins) {\n          puVar6 = (undefined4 *)(shell_builtins + DAT_0015142c * 0x18);\n          do {\n            iVar9 = DAT_0015142c;\n            if (((puVar6[1] != 0) && ((*(byte *)(puVar6 + 2) & 1) != 0)) &&\n               ((pcVar5 = (char *)*puVar6, sVar4 == 0 ||\n                ((*pcVar5 == *pcVar3 && (iVar7 = strncmp(pcVar5,pcVar3,sVar4), iVar7 == 0)))))) {\n              DAT_0015142c = iVar9 + 1;\n              goto LAB_0008d451;\n            }\n            DAT_0015142c = iVar9 + 1;\n            puVar6 = puVar6 + 6;\n          } while (DAT_0015142c != iVar2);\n        }\n        DAT_0015145c = DAT_0015145c + 1;\n        DAT_0015142c = 0;\n      }\n    }" else (compound_statement "{\n      pvVar1 = DAT_00151428;\n      if (DAT_0015145c == 2) {\nLAB_0008d840:\n        do {\n          if ((pvVar1 == (void *)0x0) ||\n             (puVar6 = *(undefined4 **)((int)pvVar1 + DAT_0015142c * 4), puVar6 == (undefined4 *)0x0\n             )) {\n            DAT_0015142c = 0;\n            DAT_0015145c = DAT_0015145c + 1;\n            goto LAB_0008d3bd;\n          }\n          DAT_0015142c = DAT_0015142c + 1;\n          pcVar5 = (char *)*puVar6;\n          if (uVar8 == 0) {\n            if ((sVar4 == 0) ||\n               ((*pcVar5 == *pcVar3 && (iVar2 = strncmp(pcVar5,pcVar3,sVar4), iVar2 == 0)))) break;\n            goto LAB_0008d840;\n          }\n          iVar2 = strncasecmp(pcVar5,pcVar3,sVar4);\n        } while (iVar2 != 0);\n        sVar4 = strlen(pcVar5);\n        pcVar3 = (char *)xmalloc(sVar4 + 1);\n        pcVar3 = strcpy(pcVar3,pcVar5);\n        goto LAB_0008d5c8;\n      }\n      if (DAT_0015145c == 3) {\nLAB_0008d3bd:\n        pcVar3 = DAT_00151464;\n        sVar4 = DAT_00151444;\n        iVar2 = num_shell_builtins;\n        if (DAT_0015142c < num_shell_builtins) {\n          puVar6 = (undefined4 *)(shell_builtins + DAT_0015142c * 0x18);\n          do {\n            iVar9 = DAT_0015142c;\n            if (((puVar6[1] != 0) && ((*(byte *)(puVar6 + 2) & 1) != 0)) &&\n               ((pcVar5 = (char *)*puVar6, sVar4 == 0 ||\n                ((*pcVar5 == *pcVar3 && (iVar7 = strncmp(pcVar5,pcVar3,sVar4), iVar7 == 0)))))) {\n              DAT_0015142c = iVar9 + 1;\n              goto LAB_0008d451;\n            }\n            DAT_0015142c = iVar9 + 1;\n            puVar6 = puVar6 + 6;\n          } while (DAT_0015142c != iVar2);\n        }\n        DAT_0015145c = DAT_0015145c + 1;\n        DAT_0015142c = 0;\n      }\n    }" { (expression_statement "pvVar1 = DAT_00151428;" (assignment_expression "pvVar1 = DAT_00151428" identifier = identifier) ;) (if_statement "if (DAT_0015145c == 2) {\nLAB_0008d840:\n        do {\n          if ((pvVar1 == (void *)0x0) ||\n             (puVar6 = *(undefined4 **)((int)pvVar1 + DAT_0015142c * 4), puVar6 == (undefined4 *)0x0\n             )) {\n            DAT_0015142c = 0;\n            DAT_0015145c = DAT_0015145c + 1;\n            goto LAB_0008d3bd;\n          }\n          DAT_0015142c = DAT_0015142c + 1;\n          pcVar5 = (char *)*puVar6;\n          if (uVar8 == 0) {\n            if ((sVar4 == 0) ||\n               ((*pcVar5 == *pcVar3 && (iVar2 = strncmp(pcVar5,pcVar3,sVar4), iVar2 == 0)))) break;\n            goto LAB_0008d840;\n          }\n          iVar2 = strncasecmp(pcVar5,pcVar3,sVar4);\n        } while (iVar2 != 0);\n        sVar4 = strlen(pcVar5);\n        pcVar3 = (char *)xmalloc(sVar4 + 1);\n        pcVar3 = strcpy(pcVar3,pcVar5);\n        goto LAB_0008d5c8;\n      }" if (parenthesized_expression "(DAT_0015145c == 2)" ( (binary_expression "DAT_0015145c == 2" identifier == number_literal) )) (compound_statement "{\nLAB_0008d840:\n        do {\n          if ((pvVar1 == (void *)0x0) ||\n             (puVar6 = *(undefined4 **)((int)pvVar1 + DAT_0015142c * 4), puVar6 == (undefined4 *)0x0\n             )) {\n            DAT_0015142c = 0;\n            DAT_0015145c = DAT_0015145c + 1;\n            goto LAB_0008d3bd;\n          }\n          DAT_0015142c = DAT_0015142c + 1;\n          pcVar5 = (char *)*puVar6;\n          if (uVar8 == 0) {\n            if ((sVar4 == 0) ||\n               ((*pcVar5 == *pcVar3 && (iVar2 = strncmp(pcVar5,pcVar3,sVar4), iVar2 == 0)))) break;\n            goto LAB_0008d840;\n          }\n          iVar2 = strncasecmp(pcVar5,pcVar3,sVar4);\n        } while (iVar2 != 0);\n        sVar4 = strlen(pcVar5);\n        pcVar3 = (char *)xmalloc(sVar4 + 1);\n        pcVar3 = strcpy(pcVar3,pcVar5);\n        goto LAB_0008d5c8;\n      }" { (labeled_statement "LAB_0008d840:\n        do {\n          if ((pvVar1 == (void *)0x0) ||\n             (puVar6 = *(undefined4 **)((int)pvVar1 + DAT_0015142c * 4), puVar6 == (undefined4 *)0x0\n             )) {\n            DAT_0015142c = 0;\n            DAT_0015145c = DAT_0015145c + 1;\n            goto LAB_0008d3bd;\n          }\n          DAT_0015142c = DAT_0015142c + 1;\n          pcVar5 = (char *)*puVar6;\n          if (uVar8 == 0) {\n            if ((sVar4 == 0) ||\n               ((*pcVar5 == *pcVar3 && (iVar2 = strncmp(pcVar5,pcVar3,sVar4), iVar2 == 0)))) break;\n            goto LAB_0008d840;\n          }\n          iVar2 = strncasecmp(pcVar5,pcVar3,sVar4);\n        } while (iVar2 != 0);" statement_identifier : (do_statement "do {\n          if ((pvVar1 == (void *)0x0) ||\n             (puVar6 = *(undefined4 **)((int)pvVar1 + DAT_0015142c * 4), puVar6 == (undefined4 *)0x0\n             )) {\n            DAT_0015142c = 0;\n            DAT_0015145c = DAT_0015145c + 1;\n            goto LAB_0008d3bd;\n          }\n          DAT_0015142c = DAT_0015142c + 1;\n          pcVar5 = (char *)*puVar6;\n          if (uVar8 == 0) {\n            if ((sVar4 == 0) ||\n               ((*pcVar5 == *pcVar3 && (iVar2 = strncmp(pcVar5,pcVar3,sVar4), iVar2 == 0)))) break;\n            goto LAB_0008d840;\n          }\n          iVar2 = strncasecmp(pcVar5,pcVar3,sVar4);\n        } while (iVar2 != 0);" do (compound_statement "{\n          if ((pvVar1 == (void *)0x0) ||\n             (puVar6 = *(undefined4 **)((int)pvVar1 + DAT_0015142c * 4), puVar6 == (undefined4 *)0x0\n             )) {\n            DAT_0015142c = 0;\n            DAT_0015145c = DAT_0015145c + 1;\n            goto LAB_0008d3bd;\n          }\n          DAT_0015142c = DAT_0015142c + 1;\n          pcVar5 = (char *)*puVar6;\n          if (uVar8 == 0) {\n            if ((sVar4 == 0) ||\n               ((*pcVar5 == *pcVar3 && (iVar2 = strncmp(pcVar5,pcVar3,sVar4), iVar2 == 0)))) break;\n            goto LAB_0008d840;\n          }\n          iVar2 = strncasecmp(pcVar5,pcVar3,sVar4);\n        }" { (if_statement "if ((pvVar1 == (void *)0x0) ||\n             (puVar6 = *(undefined4 **)((int)pvVar1 + DAT_0015142c * 4), puVar6 == (undefined4 *)0x0\n             )) {\n            DAT_0015142c = 0;\n            DAT_0015145c = DAT_0015145c + 1;\n            goto LAB_0008d3bd;\n          }" if (parenthesized_expression "((pvVar1 == (void *)0x0) ||\n             (puVar6 = *(undefined4 **)((int)pvVar1 + DAT_0015142c * 4), puVar6 == (undefined4 *)0x0\n             ))" ( (binary_expression "(pvVar1 == (void *)0x0) ||\n             (puVar6 = *(undefined4 **)((int)pvVar1 + DAT_0015142c * 4), puVar6 == (undefined4 *)0x0\n             )" (parenthesized_expression "(pvVar1 == (void *)0x0)" ( (binary_expression "pvVar1 == (void *)0x0" identifier == (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "(puVar6 = *(undefined4 **)((int)pvVar1 + DAT_0015142c * 4), puVar6 == (undefined4 *)0x0\n             )" ( (comma_expression "puVar6 = *(undefined4 **)((int)pvVar1 + DAT_0015142c * 4), puVar6 == (undefined4 *)0x0" (assignment_expression "puVar6 = *(undefined4 **)((int)pvVar1 + DAT_0015142c * 4)" identifier = (pointer_expression "*(undefined4 **)((int)pvVar1 + DAT_0015142c * 4)" * (cast_expression "(undefined4 **)((int)pvVar1 + DAT_0015142c * 4)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)pvVar1 + DAT_0015142c * 4)" ( (binary_expression "(int)pvVar1 + DAT_0015142c * 4" (cast_expression "(int)pvVar1" ( (type_descriptor "int" primitive_type) ) identifier) + (binary_expression "DAT_0015142c * 4" identifier * number_literal)) ))))) , (binary_expression "puVar6 == (undefined4 *)0x0" identifier == (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) (compound_statement "{\n            DAT_0015142c = 0;\n            DAT_0015145c = DAT_0015145c + 1;\n            goto LAB_0008d3bd;\n          }" { (expression_statement "DAT_0015142c = 0;" (assignment_expression "DAT_0015142c = 0" identifier = number_literal) ;) (expression_statement "DAT_0015145c = DAT_0015145c + 1;" (assignment_expression "DAT_0015145c = DAT_0015145c + 1" identifier = (binary_expression "DAT_0015145c + 1" identifier + number_literal)) ;) (goto_statement "goto LAB_0008d3bd;" goto statement_identifier ;) })) (expression_statement "DAT_0015142c = DAT_0015142c + 1;" (assignment_expression "DAT_0015142c = DAT_0015142c + 1" identifier = (binary_expression "DAT_0015142c + 1" identifier + number_literal)) ;) (expression_statement "pcVar5 = (char *)*puVar6;" (assignment_expression "pcVar5 = (char *)*puVar6" identifier = (cast_expression "(char *)*puVar6" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar6" * identifier))) ;) (if_statement "if (uVar8 == 0) {\n            if ((sVar4 == 0) ||\n               ((*pcVar5 == *pcVar3 && (iVar2 = strncmp(pcVar5,pcVar3,sVar4), iVar2 == 0)))) break;\n            goto LAB_0008d840;\n          }" if (parenthesized_expression "(uVar8 == 0)" ( (binary_expression "uVar8 == 0" identifier == number_literal) )) (compound_statement "{\n            if ((sVar4 == 0) ||\n               ((*pcVar5 == *pcVar3 && (iVar2 = strncmp(pcVar5,pcVar3,sVar4), iVar2 == 0)))) break;\n            goto LAB_0008d840;\n          }" { (if_statement "if ((sVar4 == 0) ||\n               ((*pcVar5 == *pcVar3 && (iVar2 = strncmp(pcVar5,pcVar3,sVar4), iVar2 == 0)))) break;" if (parenthesized_expression "((sVar4 == 0) ||\n               ((*pcVar5 == *pcVar3 && (iVar2 = strncmp(pcVar5,pcVar3,sVar4), iVar2 == 0))))" ( (binary_expression "(sVar4 == 0) ||\n               ((*pcVar5 == *pcVar3 && (iVar2 = strncmp(pcVar5,pcVar3,sVar4), iVar2 == 0)))" (parenthesized_expression "(sVar4 == 0)" ( (binary_expression "sVar4 == 0" identifier == number_literal) )) || (parenthesized_expression "((*pcVar5 == *pcVar3 && (iVar2 = strncmp(pcVar5,pcVar3,sVar4), iVar2 == 0)))" ( (parenthesized_expression "(*pcVar5 == *pcVar3 && (iVar2 = strncmp(pcVar5,pcVar3,sVar4), iVar2 == 0))" ( (binary_expression "*pcVar5 == *pcVar3 && (iVar2 = strncmp(pcVar5,pcVar3,sVar4), iVar2 == 0)" (binary_expression "*pcVar5 == *pcVar3" (pointer_expression "*pcVar5" * identifier) == (pointer_expression "*pcVar3" * identifier)) && (parenthesized_expression "(iVar2 = strncmp(pcVar5,pcVar3,sVar4), iVar2 == 0)" ( (comma_expression "iVar2 = strncmp(pcVar5,pcVar3,sVar4), iVar2 == 0" (assignment_expression "iVar2 = strncmp(pcVar5,pcVar3,sVar4)" identifier = (call_expression "strncmp(pcVar5,pcVar3,sVar4)" identifier (argument_list "(pcVar5,pcVar3,sVar4)" ( identifier , identifier , identifier )))) , (binary_expression "iVar2 == 0" identifier == number_literal)) ))) )) ))) )) (break_statement "break;" break ;)) (goto_statement "goto LAB_0008d840;" goto statement_identifier ;) })) (expression_statement "iVar2 = strncasecmp(pcVar5,pcVar3,sVar4);" (assignment_expression "iVar2 = strncasecmp(pcVar5,pcVar3,sVar4)" identifier = (call_expression "strncasecmp(pcVar5,pcVar3,sVar4)" identifier (argument_list "(pcVar5,pcVar3,sVar4)" ( identifier , identifier , identifier )))) ;) }) while (parenthesized_expression "(iVar2 != 0)" ( (binary_expression "iVar2 != 0" identifier != number_literal) )) ;)) (expression_statement "sVar4 = strlen(pcVar5);" (assignment_expression "sVar4 = strlen(pcVar5)" identifier = (call_expression "strlen(pcVar5)" identifier (argument_list "(pcVar5)" ( identifier )))) ;) (expression_statement "pcVar3 = (char *)xmalloc(sVar4 + 1);" (assignment_expression "pcVar3 = (char *)xmalloc(sVar4 + 1)" identifier = (cast_expression "(char *)xmalloc(sVar4 + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(sVar4 + 1)" identifier (argument_list "(sVar4 + 1)" ( (binary_expression "sVar4 + 1" identifier + number_literal) ))))) ;) (expression_statement "pcVar3 = strcpy(pcVar3,pcVar5);" (assignment_expression "pcVar3 = strcpy(pcVar3,pcVar5)" identifier = (call_expression "strcpy(pcVar3,pcVar5)" identifier (argument_list "(pcVar3,pcVar5)" ( identifier , identifier )))) ;) (goto_statement "goto LAB_0008d5c8;" goto statement_identifier ;) })) (if_statement "if (DAT_0015145c == 3) {\nLAB_0008d3bd:\n        pcVar3 = DAT_00151464;\n        sVar4 = DAT_00151444;\n        iVar2 = num_shell_builtins;\n        if (DAT_0015142c < num_shell_builtins) {\n          puVar6 = (undefined4 *)(shell_builtins + DAT_0015142c * 0x18);\n          do {\n            iVar9 = DAT_0015142c;\n            if (((puVar6[1] != 0) && ((*(byte *)(puVar6 + 2) & 1) != 0)) &&\n               ((pcVar5 = (char *)*puVar6, sVar4 == 0 ||\n                ((*pcVar5 == *pcVar3 && (iVar7 = strncmp(pcVar5,pcVar3,sVar4), iVar7 == 0)))))) {\n              DAT_0015142c = iVar9 + 1;\n              goto LAB_0008d451;\n            }\n            DAT_0015142c = iVar9 + 1;\n            puVar6 = puVar6 + 6;\n          } while (DAT_0015142c != iVar2);\n        }\n        DAT_0015145c = DAT_0015145c + 1;\n        DAT_0015142c = 0;\n      }" if (parenthesized_expression "(DAT_0015145c == 3)" ( (binary_expression "DAT_0015145c == 3" identifier == number_literal) )) (compound_statement "{\nLAB_0008d3bd:\n        pcVar3 = DAT_00151464;\n        sVar4 = DAT_00151444;\n        iVar2 = num_shell_builtins;\n        if (DAT_0015142c < num_shell_builtins) {\n          puVar6 = (undefined4 *)(shell_builtins + DAT_0015142c * 0x18);\n          do {\n            iVar9 = DAT_0015142c;\n            if (((puVar6[1] != 0) && ((*(byte *)(puVar6 + 2) & 1) != 0)) &&\n               ((pcVar5 = (char *)*puVar6, sVar4 == 0 ||\n                ((*pcVar5 == *pcVar3 && (iVar7 = strncmp(pcVar5,pcVar3,sVar4), iVar7 == 0)))))) {\n              DAT_0015142c = iVar9 + 1;\n              goto LAB_0008d451;\n            }\n            DAT_0015142c = iVar9 + 1;\n            puVar6 = puVar6 + 6;\n          } while (DAT_0015142c != iVar2);\n        }\n        DAT_0015145c = DAT_0015145c + 1;\n        DAT_0015142c = 0;\n      }" { (labeled_statement "LAB_0008d3bd:\n        pcVar3 = DAT_00151464;" statement_identifier : (expression_statement "pcVar3 = DAT_00151464;" (assignment_expression "pcVar3 = DAT_00151464" identifier = identifier) ;)) (expression_statement "sVar4 = DAT_00151444;" (assignment_expression "sVar4 = DAT_00151444" identifier = identifier) ;) (expression_statement "iVar2 = num_shell_builtins;" (assignment_expression "iVar2 = num_shell_builtins" identifier = identifier) ;) (if_statement "if (DAT_0015142c < num_shell_builtins) {\n          puVar6 = (undefined4 *)(shell_builtins + DAT_0015142c * 0x18);\n          do {\n            iVar9 = DAT_0015142c;\n            if (((puVar6[1] != 0) && ((*(byte *)(puVar6 + 2) & 1) != 0)) &&\n               ((pcVar5 = (char *)*puVar6, sVar4 == 0 ||\n                ((*pcVar5 == *pcVar3 && (iVar7 = strncmp(pcVar5,pcVar3,sVar4), iVar7 == 0)))))) {\n              DAT_0015142c = iVar9 + 1;\n              goto LAB_0008d451;\n            }\n            DAT_0015142c = iVar9 + 1;\n            puVar6 = puVar6 + 6;\n          } while (DAT_0015142c != iVar2);\n        }" if (parenthesized_expression "(DAT_0015142c < num_shell_builtins)" ( (binary_expression "DAT_0015142c < num_shell_builtins" identifier < identifier) )) (compound_statement "{\n          puVar6 = (undefined4 *)(shell_builtins + DAT_0015142c * 0x18);\n          do {\n            iVar9 = DAT_0015142c;\n            if (((puVar6[1] != 0) && ((*(byte *)(puVar6 + 2) & 1) != 0)) &&\n               ((pcVar5 = (char *)*puVar6, sVar4 == 0 ||\n                ((*pcVar5 == *pcVar3 && (iVar7 = strncmp(pcVar5,pcVar3,sVar4), iVar7 == 0)))))) {\n              DAT_0015142c = iVar9 + 1;\n              goto LAB_0008d451;\n            }\n            DAT_0015142c = iVar9 + 1;\n            puVar6 = puVar6 + 6;\n          } while (DAT_0015142c != iVar2);\n        }" { (expression_statement "puVar6 = (undefined4 *)(shell_builtins + DAT_0015142c * 0x18);" (assignment_expression "puVar6 = (undefined4 *)(shell_builtins + DAT_0015142c * 0x18)" identifier = (cast_expression "(undefined4 *)(shell_builtins + DAT_0015142c * 0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(shell_builtins + DAT_0015142c * 0x18)" ( (binary_expression "shell_builtins + DAT_0015142c * 0x18" identifier + (binary_expression "DAT_0015142c * 0x18" identifier * number_literal)) )))) ;) (do_statement "do {\n            iVar9 = DAT_0015142c;\n            if (((puVar6[1] != 0) && ((*(byte *)(puVar6 + 2) & 1) != 0)) &&\n               ((pcVar5 = (char *)*puVar6, sVar4 == 0 ||\n                ((*pcVar5 == *pcVar3 && (iVar7 = strncmp(pcVar5,pcVar3,sVar4), iVar7 == 0)))))) {\n              DAT_0015142c = iVar9 + 1;\n              goto LAB_0008d451;\n            }\n            DAT_0015142c = iVar9 + 1;\n            puVar6 = puVar6 + 6;\n          } while (DAT_0015142c != iVar2);" do (compound_statement "{\n            iVar9 = DAT_0015142c;\n            if (((puVar6[1] != 0) && ((*(byte *)(puVar6 + 2) & 1) != 0)) &&\n               ((pcVar5 = (char *)*puVar6, sVar4 == 0 ||\n                ((*pcVar5 == *pcVar3 && (iVar7 = strncmp(pcVar5,pcVar3,sVar4), iVar7 == 0)))))) {\n              DAT_0015142c = iVar9 + 1;\n              goto LAB_0008d451;\n            }\n            DAT_0015142c = iVar9 + 1;\n            puVar6 = puVar6 + 6;\n          }" { (expression_statement "iVar9 = DAT_0015142c;" (assignment_expression "iVar9 = DAT_0015142c" identifier = identifier) ;) (if_statement "if (((puVar6[1] != 0) && ((*(byte *)(puVar6 + 2) & 1) != 0)) &&\n               ((pcVar5 = (char *)*puVar6, sVar4 == 0 ||\n                ((*pcVar5 == *pcVar3 && (iVar7 = strncmp(pcVar5,pcVar3,sVar4), iVar7 == 0)))))) {\n              DAT_0015142c = iVar9 + 1;\n              goto LAB_0008d451;\n            }" if (parenthesized_expression "(((puVar6[1] != 0) && ((*(byte *)(puVar6 + 2) & 1) != 0)) &&\n               ((pcVar5 = (char *)*puVar6, sVar4 == 0 ||\n                ((*pcVar5 == *pcVar3 && (iVar7 = strncmp(pcVar5,pcVar3,sVar4), iVar7 == 0))))))" ( (binary_expression "((puVar6[1] != 0) && ((*(byte *)(puVar6 + 2) & 1) != 0)) &&\n               ((pcVar5 = (char *)*puVar6, sVar4 == 0 ||\n                ((*pcVar5 == *pcVar3 && (iVar7 = strncmp(pcVar5,pcVar3,sVar4), iVar7 == 0)))))" (parenthesized_expression "((puVar6[1] != 0) && ((*(byte *)(puVar6 + 2) & 1) != 0))" ( (binary_expression "(puVar6[1] != 0) && ((*(byte *)(puVar6 + 2) & 1) != 0)" (parenthesized_expression "(puVar6[1] != 0)" ( (binary_expression "puVar6[1] != 0" (subscript_expression "puVar6[1]" identifier [ number_literal ]) != number_literal) )) && (parenthesized_expression "((*(byte *)(puVar6 + 2) & 1) != 0)" ( (binary_expression "(*(byte *)(puVar6 + 2) & 1) != 0" (parenthesized_expression "(*(byte *)(puVar6 + 2) & 1)" ( (binary_expression "*(byte *)(puVar6 + 2) & 1" (pointer_expression "*(byte *)(puVar6 + 2)" * (cast_expression "(byte *)(puVar6 + 2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar6 + 2)" ( (binary_expression "puVar6 + 2" identifier + number_literal) )))) & number_literal) )) != number_literal) ))) )) && (parenthesized_expression "((pcVar5 = (char *)*puVar6, sVar4 == 0 ||\n                ((*pcVar5 == *pcVar3 && (iVar7 = strncmp(pcVar5,pcVar3,sVar4), iVar7 == 0)))))" ( (parenthesized_expression "(pcVar5 = (char *)*puVar6, sVar4 == 0 ||\n                ((*pcVar5 == *pcVar3 && (iVar7 = strncmp(pcVar5,pcVar3,sVar4), iVar7 == 0))))" ( (comma_expression "pcVar5 = (char *)*puVar6, sVar4 == 0 ||\n                ((*pcVar5 == *pcVar3 && (iVar7 = strncmp(pcVar5,pcVar3,sVar4), iVar7 == 0)))" (assignment_expression "pcVar5 = (char *)*puVar6" identifier = (cast_expression "(char *)*puVar6" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar6" * identifier))) , (binary_expression "sVar4 == 0 ||\n                ((*pcVar5 == *pcVar3 && (iVar7 = strncmp(pcVar5,pcVar3,sVar4), iVar7 == 0)))" (binary_expression "sVar4 == 0" identifier == number_literal) || (parenthesized_expression "((*pcVar5 == *pcVar3 && (iVar7 = strncmp(pcVar5,pcVar3,sVar4), iVar7 == 0)))" ( (parenthesized_expression "(*pcVar5 == *pcVar3 && (iVar7 = strncmp(pcVar5,pcVar3,sVar4), iVar7 == 0))" ( (binary_expression "*pcVar5 == *pcVar3 && (iVar7 = strncmp(pcVar5,pcVar3,sVar4), iVar7 == 0)" (binary_expression "*pcVar5 == *pcVar3" (pointer_expression "*pcVar5" * identifier) == (pointer_expression "*pcVar3" * identifier)) && (parenthesized_expression "(iVar7 = strncmp(pcVar5,pcVar3,sVar4), iVar7 == 0)" ( (comma_expression "iVar7 = strncmp(pcVar5,pcVar3,sVar4), iVar7 == 0" (assignment_expression "iVar7 = strncmp(pcVar5,pcVar3,sVar4)" identifier = (call_expression "strncmp(pcVar5,pcVar3,sVar4)" identifier (argument_list "(pcVar5,pcVar3,sVar4)" ( identifier , identifier , identifier )))) , (binary_expression "iVar7 == 0" identifier == number_literal)) ))) )) )))) )) ))) )) (compound_statement "{\n              DAT_0015142c = iVar9 + 1;\n              goto LAB_0008d451;\n            }" { (expression_statement "DAT_0015142c = iVar9 + 1;" (assignment_expression "DAT_0015142c = iVar9 + 1" identifier = (binary_expression "iVar9 + 1" identifier + number_literal)) ;) (goto_statement "goto LAB_0008d451;" goto statement_identifier ;) })) (expression_statement "DAT_0015142c = iVar9 + 1;" (assignment_expression "DAT_0015142c = iVar9 + 1" identifier = (binary_expression "iVar9 + 1" identifier + number_literal)) ;) (expression_statement "puVar6 = puVar6 + 6;" (assignment_expression "puVar6 = puVar6 + 6" identifier = (binary_expression "puVar6 + 6" identifier + number_literal)) ;) }) while (parenthesized_expression "(DAT_0015142c != iVar2)" ( (binary_expression "DAT_0015142c != iVar2" identifier != identifier) )) ;) })) (expression_statement "DAT_0015145c = DAT_0015145c + 1;" (assignment_expression "DAT_0015145c = DAT_0015145c + 1" identifier = (binary_expression "DAT_0015145c + 1" identifier + number_literal)) ;) (expression_statement "DAT_0015142c = 0;" (assignment_expression "DAT_0015142c = 0" identifier = number_literal) ;) })) }))) (if_statement "if (DAT_0015144c == 0) {\n      if (DAT_00151458 == 0) goto LAB_0008d5f6;\n      DAT_00151458 = 0;\n      sVar4 = strlen(param_1);\n      pcVar3 = (char *)xmalloc(sVar4 + 1);\n      pcVar3 = strcpy(pcVar3,param_1);\n      goto LAB_0008d5c8;\n    }" if (parenthesized_expression "(DAT_0015144c == 0)" ( (binary_expression "DAT_0015144c == 0" identifier == number_literal) )) (compound_statement "{\n      if (DAT_00151458 == 0) goto LAB_0008d5f6;\n      DAT_00151458 = 0;\n      sVar4 = strlen(param_1);\n      pcVar3 = (char *)xmalloc(sVar4 + 1);\n      pcVar3 = strcpy(pcVar3,param_1);\n      goto LAB_0008d5c8;\n    }" { (if_statement "if (DAT_00151458 == 0) goto LAB_0008d5f6;" if (parenthesized_expression "(DAT_00151458 == 0)" ( (binary_expression "DAT_00151458 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0008d5f6;" goto statement_identifier ;)) (expression_statement "DAT_00151458 = 0;" (assignment_expression "DAT_00151458 = 0" identifier = number_literal) ;) (expression_statement "sVar4 = strlen(param_1);" (assignment_expression "sVar4 = strlen(param_1)" identifier = (call_expression "strlen(param_1)" identifier (argument_list "(param_1)" ( identifier )))) ;) (expression_statement "pcVar3 = (char *)xmalloc(sVar4 + 1);" (assignment_expression "pcVar3 = (char *)xmalloc(sVar4 + 1)" identifier = (cast_expression "(char *)xmalloc(sVar4 + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(sVar4 + 1)" identifier (argument_list "(sVar4 + 1)" ( (binary_expression "sVar4 + 1" identifier + number_literal) ))))) ;) (expression_statement "pcVar3 = strcpy(pcVar3,param_1);" (assignment_expression "pcVar3 = strcpy(pcVar3,param_1)" identifier = (call_expression "strcpy(pcVar3,param_1)" identifier (argument_list "(pcVar3,param_1)" ( identifier , identifier )))) ;) (goto_statement "goto LAB_0008d5c8;" goto statement_identifier ;) })) (if_statement "if (param_2 == 0) goto LAB_0008d218;" if (parenthesized_expression "(param_2 == 0)" ( (binary_expression "param_2 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0008d218;" goto statement_identifier ;)) (expression_statement "iVar2 = DAT_0015142c + 1;" (assignment_expression "iVar2 = DAT_0015142c + 1" identifier = (binary_expression "DAT_0015142c + 1" identifier + number_literal)) ;) (expression_statement "puVar6 = DAT_001514d4 + DAT_0015142c;" (assignment_expression "puVar6 = DAT_001514d4 + DAT_0015142c" identifier = (binary_expression "DAT_001514d4 + DAT_0015142c" identifier + identifier)) ;) }))) (expression_statement "DAT_00151454 = (char *)*puVar6;" (assignment_expression "DAT_00151454 = (char *)*puVar6" identifier = (cast_expression "(char *)*puVar6" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar6" * identifier))) ;) (expression_statement "DAT_0015142c = iVar2;" (assignment_expression "DAT_0015142c = iVar2" identifier = identifier) ;) (while_statement "while (DAT_00151454 != (char *)0x0) {\n    iVar2 = executable_or_directory(DAT_00151454);\n    if (iVar2 != 0) {\n      pcVar3 = DAT_00151454;\n      if ((*param_1 == '~') && (DAT_00151448 != (char *)0x0)) {\n        pcVar3 = (char *)FUN_0008a220();\n        free(DAT_00151454);\n        DAT_00151454 = pcVar3;\n      }\n      goto LAB_0008d5c8;\n    }\n    free(DAT_00151454);\n    DAT_00151454 = (char *)DAT_001514d4[DAT_0015142c];\n    DAT_0015142c = DAT_0015142c + 1;\n  }" while (parenthesized_expression "(DAT_00151454 != (char *)0x0)" ( (binary_expression "DAT_00151454 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    iVar2 = executable_or_directory(DAT_00151454);\n    if (iVar2 != 0) {\n      pcVar3 = DAT_00151454;\n      if ((*param_1 == '~') && (DAT_00151448 != (char *)0x0)) {\n        pcVar3 = (char *)FUN_0008a220();\n        free(DAT_00151454);\n        DAT_00151454 = pcVar3;\n      }\n      goto LAB_0008d5c8;\n    }\n    free(DAT_00151454);\n    DAT_00151454 = (char *)DAT_001514d4[DAT_0015142c];\n    DAT_0015142c = DAT_0015142c + 1;\n  }" { (expression_statement "iVar2 = executable_or_directory(DAT_00151454);" (assignment_expression "iVar2 = executable_or_directory(DAT_00151454)" identifier = (call_expression "executable_or_directory(DAT_00151454)" identifier (argument_list "(DAT_00151454)" ( identifier )))) ;) (if_statement "if (iVar2 != 0) {\n      pcVar3 = DAT_00151454;\n      if ((*param_1 == '~') && (DAT_00151448 != (char *)0x0)) {\n        pcVar3 = (char *)FUN_0008a220();\n        free(DAT_00151454);\n        DAT_00151454 = pcVar3;\n      }\n      goto LAB_0008d5c8;\n    }" if (parenthesized_expression "(iVar2 != 0)" ( (binary_expression "iVar2 != 0" identifier != number_literal) )) (compound_statement "{\n      pcVar3 = DAT_00151454;\n      if ((*param_1 == '~') && (DAT_00151448 != (char *)0x0)) {\n        pcVar3 = (char *)FUN_0008a220();\n        free(DAT_00151454);\n        DAT_00151454 = pcVar3;\n      }\n      goto LAB_0008d5c8;\n    }" { (expression_statement "pcVar3 = DAT_00151454;" (assignment_expression "pcVar3 = DAT_00151454" identifier = identifier) ;) (if_statement "if ((*param_1 == '~') && (DAT_00151448 != (char *)0x0)) {\n        pcVar3 = (char *)FUN_0008a220();\n        free(DAT_00151454);\n        DAT_00151454 = pcVar3;\n      }" if (parenthesized_expression "((*param_1 == '~') && (DAT_00151448 != (char *)0x0))" ( (binary_expression "(*param_1 == '~') && (DAT_00151448 != (char *)0x0)" (parenthesized_expression "(*param_1 == '~')" ( (binary_expression "*param_1 == '~'" (pointer_expression "*param_1" * identifier) == (char_literal "'~'" ' character ')) )) && (parenthesized_expression "(DAT_00151448 != (char *)0x0)" ( (binary_expression "DAT_00151448 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) (compound_statement "{\n        pcVar3 = (char *)FUN_0008a220();\n        free(DAT_00151454);\n        DAT_00151454 = pcVar3;\n      }" { (expression_statement "pcVar3 = (char *)FUN_0008a220();" (assignment_expression "pcVar3 = (char *)FUN_0008a220()" identifier = (cast_expression "(char *)FUN_0008a220()" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0008a220()" identifier (argument_list "()" ( ))))) ;) (expression_statement "free(DAT_00151454);" (call_expression "free(DAT_00151454)" identifier (argument_list "(DAT_00151454)" ( identifier ))) ;) (expression_statement "DAT_00151454 = pcVar3;" (assignment_expression "DAT_00151454 = pcVar3" identifier = identifier) ;) })) (goto_statement "goto LAB_0008d5c8;" goto statement_identifier ;) })) (expression_statement "free(DAT_00151454);" (call_expression "free(DAT_00151454)" identifier (argument_list "(DAT_00151454)" ( identifier ))) ;) (expression_statement "DAT_00151454 = (char *)DAT_001514d4[DAT_0015142c];" (assignment_expression "DAT_00151454 = (char *)DAT_001514d4[DAT_0015142c]" identifier = (cast_expression "(char *)DAT_001514d4[DAT_0015142c]" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "DAT_001514d4[DAT_0015142c]" identifier [ identifier ]))) ;) (expression_statement "DAT_0015142c = DAT_0015142c + 1;" (assignment_expression "DAT_0015142c = DAT_0015142c + 1" identifier = (binary_expression "DAT_0015142c + 1" identifier + number_literal)) ;) })) (expression_statement "glob_ignore_case = 0;" (assignment_expression "glob_ignore_case = 0" identifier = number_literal) ;) (expression_statement "pcVar3 = (char *)0x0;" (assignment_expression "pcVar3 = (char *)0x0" identifier = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (labeled_statement "LAB_0008d5c8:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_000ecc40();\n  }" statement_identifier : (if_statement "if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_000ecc40();\n  }" if (parenthesized_expression "(local_20 != *(int *)(in_GS_OFFSET + 0x14))" ( (binary_expression "local_20 != *(int *)(in_GS_OFFSET + 0x14)" identifier != (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) )) (compound_statement "{\n                    \n    FUN_000ecc40();\n  }" { (expression_statement "FUN_000ecc40();" (call_expression "FUN_000ecc40()" identifier (argument_list "()" ( ))) ;) }))) (return_statement "return pcVar3;" return identifier ;) })))
(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 (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (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 IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (goto_statement goto statement_identifier ;))) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (goto_statement goto statement_identifier ;) })) (labeled_statement statement_identifier : (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 (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)) ))) )) && (parenthesized_expression ( (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 = (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 ( )))) ;) (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 = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (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 ( (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 = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) ))))) ;) (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 (compound_statement { (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 = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) ))))) ;) (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 = IDENT) ;) (expression_statement (assignment_expression IDENT = (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 = IDENT) ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) ))))) ;) (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 { (expression_statement (assignment_expression IDENT = 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 )))) , (comma_expression (assignment_expression IDENT = IDENT) , (binary_expression IDENT != LIT))) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (do_statement do (compound_statement { (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 ))))) ;) (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 = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) })) (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 )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (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 (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 , IDENT )))) ;) }) (else_clause else (compound_statement { (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 = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) ))))) ;) (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 , IDENT )))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , 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 ( ))))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) ))))) ;) (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 = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) ))))) ;) (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 ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) })) }) (else_clause else (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) }))) }))) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (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)) )))) ;)) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) || (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) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_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 = (char_literal ' character ')) ;) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_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 ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_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 IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (goto_statement goto statement_identifier ;))) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (goto_statement goto statement_identifier ;) })) (labeled_statement statement_identifier : (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 ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( BOOL )) ;) })) (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 == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) 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) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != LIT) )) && (parenthesized_expression ( (binary_expression IDENT == LIT) ))) )) (compound_statement { (labeled_statement 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) ;) }) (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) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (labeled_statement statement_identifier : (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression (parenthesized_expression ( (pointer_expression & IDENT) )) [ (binary_expression 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)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (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 = IDENT) ;) }) 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)) ))) )) ))) )) ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) ))))) ;) (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 { (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 TYPE) ) IDENT) + (binary_expression 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 ;)) (if_statement if (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)) ))) )) ))) )) (goto_statement goto statement_identifier ;)) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT )))) ;) }) while (parenthesized_expression ( (binary_expression IDENT != LIT) )) ;) (goto_statement goto statement_identifier ;) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (labeled_statement statement_identifier : (do_statement do (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 TYPE) ) IDENT) + (binary_expression 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) )) (compound_statement { (if_statement if (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)) ))) )) ))) )) (break_statement break ;)) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT )))) ;) }) while (parenthesized_expression ( (binary_expression IDENT != LIT) )) ;)) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) ))))) ;) (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 (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression 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 ( (comma_expression (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) , (binary_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)) ))) )) )))) )) ))) )) (compound_statement { (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 = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_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 = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) ))))) ;) (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 = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) }))) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (while_statement while (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (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 = 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 ( ))))) ;) (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 = (binary_expression IDENT + LIT)) ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT != (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) }))) (return_statement return IDENT ;) })))
(function_definition "char * command_word_completion_function(char *param_1,int param_2)\n\n{\n  void *pvVar1;\n  int iVar2;\n  char *pcVar3;\n  size_t sVar4;\n  char *pcVar5;\n  undefined4 *puVar6;\n  int iVar7;\n  uint uVar8;\n  int iVar9;\n  char *pcVar10;\n  char cVar11;\n  int in_GS_OFFSET;\n  char *local_24;\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x8d029;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  if (param_2 == 0) {\n    rl_filename_stat_hook = FUN_0008f310;\n    if (DAT_00151468 == (char *)0x0) {\nLAB_0008d085:\n      if (DAT_00151464 != (char *)0x0) goto LAB_0008d089;\n    }\n    else {\n      if (DAT_00151468 != DAT_00151464) {\n        free(DAT_00151468);\n        goto LAB_0008d085;\n      }\nLAB_0008d089:\n      free(DAT_00151464);\n    }\n    DAT_00151460 = 0;\n    DAT_0015145c = 0;\n    iVar2 = absolute_pathname(param_1);\n    if (((iVar2 == 0) && (iVar2 = absolute_program(param_1), iVar2 == 0)) && (*param_1 != '~')) {\n      iVar2 = FUN_0008ac10(param_1);\n      DAT_00151458 = (uint)(iVar2 != 0);\n    }\n    else {\n      DAT_00151458 = 0;\n    }\n    DAT_00151454 = (char *)0x0;\n    pcVar3 = (char *)rl_variable_value("completion-ignore-case");\n    DAT_00151450 = 0;\n    if ((*pcVar3 == 'o') && (pcVar3[1] == 'n')) {\n      DAT_00151450 = (uint)(pcVar3[2] == '\0');\n    }\n    if (DAT_001514d4 != (undefined4 *)0x0) {\n      free(DAT_001514d4);\n      DAT_001514d4 = (undefined4 *)0x0;\n    }\n    DAT_0015144c = FUN_0008cd10();\n    if ((DAT_0015144c == 0) && (iVar2 = absolute_program(param_1), iVar2 == 0)) {\n      sVar4 = strlen(param_1);\n      pcVar3 = (char *)xmalloc(sVar4 + 1);\n      pcVar3 = strcpy(pcVar3,param_1);\n      DAT_00151464 = pcVar3;\n      DAT_00151468 = pcVar3;\n      DAT_00151444 = strlen(pcVar3);\n      if ((rl_completion_found_quote != 0) && (rl_completion_quote_character == 0)) {\n        DAT_00151468 = (char *)FUN_00089940(pcVar3,0);\n      }\n      DAT_00151434 = get_string_value("PATH");\n      DAT_001514ec = 0;\n      DAT_00151430 = 0;\n      DAT_0015142c = 0;\n      if (DAT_00151428 != (void *)0x0) {\n        free(DAT_00151428);\n      }\n      DAT_00151428 = (void *)all_visible_functions();\n      if (DAT_00151424 != (void *)0x0) {\n        free(DAT_00151424);\n      }\n      DAT_00151424 = (void *)all_aliases();\n      goto LAB_0008d390;\n    }\n    if (*param_1 == '~') {\n      DAT_00151464 = (char *)bash_tilde_expand(param_1,0);\n      sVar4 = strlen(param_1);\n      pcVar3 = (char *)xmalloc(sVar4 + 1);\n      pcVar3 = strcpy(pcVar3,param_1);\n      DAT_00151448 = pcVar3;\n      pcVar5 = strchr(pcVar3,0x2f);\n      if (pcVar5 == (char *)0x0) {\n        free(pcVar3);\n        DAT_00151448 = (char *)0x0;\n      }\n      else {\n        *pcVar5 = '\0';\n      }\n    }\n    else {\n      sVar4 = strlen(param_1);\n      if (dircomplete_expand == 0) {\n        pcVar3 = (char *)xmalloc(sVar4 + 1);\n        DAT_00151464 = strcpy(pcVar3,param_1);\n      }\n      else {\n        pcVar3 = (char *)xmalloc(sVar4 + 1);\n        DAT_00151464 = strcpy(pcVar3,param_1);\n        FUN_0008c7b0(&DAT_00151464);\n      }\n    }\n    DAT_00151468 = DAT_00151464;\n    if ((rl_completion_found_quote != 0) && (rl_completion_quote_character == 0)) {\n      pcVar3 = (char *)FUN_00089940(DAT_00151464,0);\n      DAT_00151468 = pcVar3;\n      free(DAT_00151464);\n      DAT_00151464 = pcVar3;\n    }\n    pcVar3 = DAT_00151464;\n    DAT_00151444 = strlen(DAT_00151464);\n    if (DAT_00151440 != (char *)0x0) {\n      free(DAT_00151440);\n      pcVar3 = DAT_00151464;\n    }\n    sVar4 = strlen(pcVar3);\n    pcVar5 = (char *)xmalloc(sVar4 + 1);\n    DAT_0015143c = strcpy(pcVar5,pcVar3);\n    DAT_00151438 = 0;\n    DAT_00151440 = DAT_0015143c;\n    if (DAT_0015144c == 0) {\n      uVar8 = dircomplete_expand;\n      if ((dircomplete_expand != 0) &&\n         (iVar2 = path_dot_or_dotdot(DAT_0015143c), uVar8 = DAT_00151438, iVar2 != 0)) {\n        dircomplete_expand = 1;\n        rl_directory_rewrite_hook = FUN_0008c7b0;\n        rl_directory_completion_hook = (code *)0x0;\n      }\n      DAT_0015145c = 4;\n      pcVar3 = DAT_0015143c;\n      do {\n        do {\n          while( true ) {\n            DAT_00151454 = (char *)rl_filename_completion_function(pcVar3,uVar8);\n            if ((DAT_0015145c == 4) && (dircomplete_expand != 0)) {\n              rl_directory_completion_hook = FUN_0008c7b0;\n              rl_directory_rewrite_hook = (code *)0x0;\n            }\n            DAT_00151438 = 1;\n            if (DAT_00151454 == (char *)0x0) break;\n            iVar2 = absolute_program(DAT_00151464);\n            pcVar5 = DAT_00151454;\n            if (iVar2 == 0) {\n              pcVar3 = strrchr(DAT_00151454,0x2f);\n              if (pcVar3 != (char *)0x0) {\n                pcVar3 = pcVar3 + 1;\n                if (DAT_00151450 == 0) {\n                  iVar2 = strncmp(pcVar3,DAT_00151464,DAT_00151444);\n                }\n                else {\n                  iVar2 = strncasecmp(pcVar3,DAT_00151464,DAT_00151444);\n                }\n                if (iVar2 == 0) {\n                  sVar4 = strlen(pcVar3);\n                  pcVar5 = (char *)xmalloc(sVar4 + 1);\n                  pcVar3 = strcpy(pcVar5,pcVar3);\n                  goto LAB_0008d6a4;\n                }\n              }\n            }\n            else {\n              if (DAT_00151450 == 0) {\n                iVar2 = strncmp(DAT_00151454,DAT_00151464,DAT_00151444);\n              }\n              else {\n                iVar2 = strncasecmp(DAT_00151454,DAT_00151464,DAT_00151444);\n              }\n              if (*param_1 == '~') {\n                pcVar3 = (char *)FUN_0008a220();\n              }\n              else {\n                sVar4 = strlen(pcVar5);\n                pcVar3 = (char *)xmalloc(sVar4 + 1);\n                pcVar3 = strcpy(pcVar3,pcVar5);\n              }\n              pcVar5 = DAT_00151454;\n              if (iVar2 == 0) {\nLAB_0008d6a4:\n                iVar2 = DAT_00151460;\n                pcVar10 = DAT_00151454;\n                sVar4 = strlen(DAT_00151454);\n                pcVar5 = (char *)xmalloc(sVar4 + 1);\n                local_24 = strcpy(pcVar5,pcVar10);\n                FUN_0008c7b0(&local_24);\n                if (iVar2 == 0) {\n                  iVar2 = executable_or_directory(local_24);\n                }\n                else {\n                  iVar2 = executable_file(local_24);\n                }\n                free(local_24);\n                pcVar5 = DAT_00151454;\n                if (iVar2 != 0) {\n                  if (pcVar10 != DAT_00151454) {\n                    free(pcVar10);\n                  }\n                  free(pcVar5);\n                  DAT_00151454 = "";\n                  goto LAB_0008d5c8;\n                }\n                free(pcVar3);\n                if (pcVar10 != pcVar5) {\n                  free(pcVar10);\n                }\n              }\n              else {\n                free(pcVar3);\n              }\n            }\n            free(pcVar5);\n            uVar8 = DAT_00151438;\n            pcVar3 = DAT_0015143c;\n          }\n          iVar2 = absolute_program(DAT_00151464);\n          if (iVar2 != 0) goto LAB_0008dac4;\nLAB_0008d5f6:\n          uVar8 = (uint)(DAT_00151454 != (char *)0x0);\n          pcVar3 = DAT_0015143c;\n          DAT_00151438 = uVar8;\n        } while (DAT_00151454 != (char *)0x0);\n        if (((DAT_00151434 == 0) || (*(char *)(DAT_00151434 + DAT_00151430) == '\0')) ||\n           (pcVar3 = (char *)extract_colon_unit(DAT_00151434,&DAT_00151430), pcVar3 == (char *)0x0))\n        goto LAB_0008dac4;\n        DAT_00151460 = 1;\n        cVar11 = *pcVar3;\n        if (cVar11 == '\0') {\n          free(pcVar3);\n          pcVar3 = (char *)xmalloc(2);\n          pcVar3[0] = '.';\n          pcVar3[1] = '\0';\n          cVar11 = '.';\n        }\n        pcVar5 = pcVar3;\n        if (cVar11 == '~') {\n          pcVar5 = (char *)bash_tilde_expand(pcVar3,0);\n          free(pcVar3);\n          cVar11 = *pcVar5;\n        }\n        pcVar3 = DAT_00151440;\n        if ((cVar11 == '.') && (pcVar5[1] == '\0')) {\n          DAT_001514ec = 1;\n        }\n        if (DAT_0015143c == (char *)0x0) {\nLAB_0008dbfe:\n          if (pcVar3 != (char *)0x0) goto LAB_0008de5f;\n        }\n        else {\n          if (DAT_0015143c != DAT_00151440) {\n            free(DAT_0015143c);\n            goto LAB_0008dbfe;\n          }\nLAB_0008de5f:\n          free(pcVar3);\n        }\n        pcVar3 = (char *)sh_makepath(pcVar5,DAT_00151464,0);\n        DAT_00151440 = pcVar3;\n        pcVar10 = strpbrk(pcVar3,"\"\'\\");\n        if (pcVar10 != (char *)0x0) {\n          pcVar3 = (char *)sh_backslash_quote(pcVar3,&DAT_00151500,0);\n        }\n        DAT_0015143c = pcVar3;\n        free(pcVar5);\n        uVar8 = DAT_00151438;\n      } while( true );\n    }\n    DAT_0015145c = 5;\nLAB_0008d218:\n    glob_ignore_case = DAT_00151450;\n    puVar6 = (undefined4 *)shell_glob_filename(DAT_00151464);\n    glob_ignore_case = 0;\n    if ((puVar6 == (undefined4 *)PTR_glob_error_return_00149f60) || (puVar6 == (undefined4 *)0x0)) {\n      DAT_001514d4 = (undefined4 *)0x0;\n      pcVar3 = (char *)0x0;\n      goto LAB_0008d5c8;\n    }\n    DAT_0015142c = 0;\n    DAT_001514d4 = puVar6;\n    if ((puVar6[1] != 0) && (rl_completion_type == 9)) {\nLAB_0008dac4:\n      pcVar3 = (char *)0x0;\n      goto LAB_0008d5c8;\n    }\n    iVar2 = 1;\n  }\n  else {\nLAB_0008d390:\n    pcVar3 = DAT_00151464;\n    uVar8 = DAT_00151450;\n    sVar4 = DAT_00151444;\n    pvVar1 = DAT_00151424;\n    iVar2 = DAT_0015142c;\n    if (DAT_0015145c == 1) {\nLAB_0008d960:\n      do {\n        pcVar5 = (&word_token_alist)[iVar2 * 2];\n        if (pcVar5 == (char *)0x0) {\n          DAT_0015142c = 0;\n          DAT_0015145c = DAT_0015145c + 1;\n          uVar8 = DAT_00151450;\n          pvVar1 = DAT_00151428;\n          goto LAB_0008d840;\n        }\n        iVar2 = iVar2 + 1;\n        DAT_0015142c = iVar2;\n      } while ((sVar4 != 0) &&\n              ((*pcVar5 != *pcVar3 || (iVar9 = strncmp(pcVar5,pcVar3,sVar4), iVar9 != 0))));\nLAB_0008d451:\n      sVar4 = strlen(pcVar5);\n      pcVar3 = (char *)xmalloc(sVar4 + 1);\n      pcVar3 = strcpy(pcVar3,pcVar5);\n      goto LAB_0008d5c8;\n    }\n    if (DAT_0015145c < 2) {\n      if (DAT_0015145c == 0) {\n        do {\n          while( true ) {\n            if ((pvVar1 == (void *)0x0) ||\n               (puVar6 = *(undefined4 **)((int)pvVar1 + DAT_0015142c * 4),\n               puVar6 == (undefined4 *)0x0)) {\n              DAT_0015145c = 1;\n              iVar2 = 0;\n              goto LAB_0008d960;\n            }\n            DAT_0015142c = DAT_0015142c + 1;\n            pcVar5 = (char *)*puVar6;\n            if (uVar8 != 0) break;\n            if ((sVar4 == 0) ||\n               ((*pcVar5 == *pcVar3 && (iVar2 = strncmp(pcVar5,pcVar3,sVar4), iVar2 == 0))))\n            goto LAB_0008d451;\n          }\n          iVar2 = strncasecmp(pcVar5,pcVar3,sVar4);\n        } while (iVar2 != 0);\n        goto LAB_0008d451;\n      }\n    }\n    else {\n      pvVar1 = DAT_00151428;\n      if (DAT_0015145c == 2) {\nLAB_0008d840:\n        do {\n          if ((pvVar1 == (void *)0x0) ||\n             (puVar6 = *(undefined4 **)((int)pvVar1 + DAT_0015142c * 4), puVar6 == (undefined4 *)0x0\n             )) {\n            DAT_0015142c = 0;\n            DAT_0015145c = DAT_0015145c + 1;\n            goto LAB_0008d3bd;\n          }\n          DAT_0015142c = DAT_0015142c + 1;\n          pcVar5 = (char *)*puVar6;\n          if (uVar8 == 0) {\n            if ((sVar4 == 0) ||\n               ((*pcVar5 == *pcVar3 && (iVar2 = strncmp(pcVar5,pcVar3,sVar4), iVar2 == 0)))) break;\n            goto LAB_0008d840;\n          }\n          iVar2 = strncasecmp(pcVar5,pcVar3,sVar4);\n        } while (iVar2 != 0);\n        sVar4 = strlen(pcVar5);\n        pcVar3 = (char *)xmalloc(sVar4 + 1);\n        pcVar3 = strcpy(pcVar3,pcVar5);\n        goto LAB_0008d5c8;\n      }\n      if (DAT_0015145c == 3) {\nLAB_0008d3bd:\n        pcVar3 = DAT_00151464;\n        sVar4 = DAT_00151444;\n        iVar2 = num_shell_builtins;\n        if (DAT_0015142c < num_shell_builtins) {\n          puVar6 = (undefined4 *)(shell_builtins + DAT_0015142c * 0x18);\n          do {\n            iVar9 = DAT_0015142c;\n            if (((puVar6[1] != 0) && ((*(byte *)(puVar6 + 2) & 1) != 0)) &&\n               ((pcVar5 = (char *)*puVar6, sVar4 == 0 ||\n                ((*pcVar5 == *pcVar3 && (iVar7 = strncmp(pcVar5,pcVar3,sVar4), iVar7 == 0)))))) {\n              DAT_0015142c = iVar9 + 1;\n              goto LAB_0008d451;\n            }\n            DAT_0015142c = iVar9 + 1;\n            puVar6 = puVar6 + 6;\n          } while (DAT_0015142c != iVar2);\n        }\n        DAT_0015145c = DAT_0015145c + 1;\n        DAT_0015142c = 0;\n      }\n    }\n    if (DAT_0015144c == 0) {\n      if (DAT_00151458 == 0) goto LAB_0008d5f6;\n      DAT_00151458 = 0;\n      sVar4 = strlen(param_1);\n      pcVar3 = (char *)xmalloc(sVar4 + 1);\n      pcVar3 = strcpy(pcVar3,param_1);\n      goto LAB_0008d5c8;\n    }\n    if (param_2 == 0) goto LAB_0008d218;\n    iVar2 = DAT_0015142c + 1;\n    puVar6 = DAT_001514d4 + DAT_0015142c;\n  }\n  DAT_00151454 = (char *)*puVar6;\n  DAT_0015142c = iVar2;\n  while (DAT_00151454 != (char *)0x0) {\n    iVar2 = executable_or_directory(DAT_00151454);\n    if (iVar2 != 0) {\n      pcVar3 = DAT_00151454;\n      if ((*param_1 == '~') && (DAT_00151448 != (char *)0x0)) {\n        pcVar3 = (char *)FUN_0008a220();\n        free(DAT_00151454);\n        DAT_00151454 = pcVar3;\n      }\n      goto LAB_0008d5c8;\n    }\n    free(DAT_00151454);\n    DAT_00151454 = (char *)DAT_001514d4[DAT_0015142c];\n    DAT_0015142c = DAT_0015142c + 1;\n  }\n  glob_ignore_case = 0;\n  pcVar3 = (char *)0x0;\nLAB_0008d5c8:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_000ecc40();\n  }\n  return pcVar3;\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  void *pvVar1;\n  int iVar2;\n  char *pcVar3;\n  size_t sVar4;\n  char *pcVar5;\n  undefined4 *puVar6;\n  int iVar7;\n  uint uVar8;\n  int iVar9;\n  char *pcVar10;\n  char cVar11;\n  int in_GS_OFFSET;\n  char *local_24;\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x8d029;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  if (param_2 == 0) {\n    rl_filename_stat_hook = FUN_0008f310;\n    if (DAT_00151468 == (char *)0x0) {\nLAB_0008d085:\n      if (DAT_00151464 != (char *)0x0) goto LAB_0008d089;\n    }\n    else {\n      if (DAT_00151468 != DAT_00151464) {\n        free(DAT_00151468);\n        goto LAB_0008d085;\n      }\nLAB_0008d089:\n      free(DAT_00151464);\n    }\n    DAT_00151460 = 0;\n    DAT_0015145c = 0;\n    iVar2 = absolute_pathname(param_1);\n    if (((iVar2 == 0) && (iVar2 = absolute_program(param_1), iVar2 == 0)) && (*param_1 != '~')) {\n      iVar2 = FUN_0008ac10(param_1);\n      DAT_00151458 = (uint)(iVar2 != 0);\n    }\n    else {\n      DAT_00151458 = 0;\n    }\n    DAT_00151454 = (char *)0x0;\n    pcVar3 = (char *)rl_variable_value("completion-ignore-case");\n    DAT_00151450 = 0;\n    if ((*pcVar3 == 'o') && (pcVar3[1] == 'n')) {\n      DAT_00151450 = (uint)(pcVar3[2] == '\0');\n    }\n    if (DAT_001514d4 != (undefined4 *)0x0) {\n      free(DAT_001514d4);\n      DAT_001514d4 = (undefined4 *)0x0;\n    }\n    DAT_0015144c = FUN_0008cd10();\n    if ((DAT_0015144c == 0) && (iVar2 = absolute_program(param_1), iVar2 == 0)) {\n      sVar4 = strlen(param_1);\n      pcVar3 = (char *)xmalloc(sVar4 + 1);\n      pcVar3 = strcpy(pcVar3,param_1);\n      DAT_00151464 = pcVar3;\n      DAT_00151468 = pcVar3;\n      DAT_00151444 = strlen(pcVar3);\n      if ((rl_completion_found_quote != 0) && (rl_completion_quote_character == 0)) {\n        DAT_00151468 = (char *)FUN_00089940(pcVar3,0);\n      }\n      DAT_00151434 = get_string_value("PATH");\n      DAT_001514ec = 0;\n      DAT_00151430 = 0;\n      DAT_0015142c = 0;\n      if (DAT_00151428 != (void *)0x0) {\n        free(DAT_00151428);\n      }\n      DAT_00151428 = (void *)all_visible_functions();\n      if (DAT_00151424 != (void *)0x0) {\n        free(DAT_00151424);\n      }\n      DAT_00151424 = (void *)all_aliases();\n      goto LAB_0008d390;\n    }\n    if (*param_1 == '~') {\n      DAT_00151464 = (char *)bash_tilde_expand(param_1,0);\n      sVar4 = strlen(param_1);\n      pcVar3 = (char *)xmalloc(sVar4 + 1);\n      pcVar3 = strcpy(pcVar3,param_1);\n      DAT_00151448 = pcVar3;\n      pcVar5 = strchr(pcVar3,0x2f);\n      if (pcVar5 == (char *)0x0) {\n        free(pcVar3);\n        DAT_00151448 = (char *)0x0;\n      }\n      else {\n        *pcVar5 = '\0';\n      }\n    }\n    else {\n      sVar4 = strlen(param_1);\n      if (dircomplete_expand == 0) {\n        pcVar3 = (char *)xmalloc(sVar4 + 1);\n        DAT_00151464 = strcpy(pcVar3,param_1);\n      }\n      else {\n        pcVar3 = (char *)xmalloc(sVar4 + 1);\n        DAT_00151464 = strcpy(pcVar3,param_1);\n        FUN_0008c7b0(&DAT_00151464);\n      }\n    }\n    DAT_00151468 = DAT_00151464;\n    if ((rl_completion_found_quote != 0) && (rl_completion_quote_character == 0)) {\n      pcVar3 = (char *)FUN_00089940(DAT_00151464,0);\n      DAT_00151468 = pcVar3;\n      free(DAT_00151464);\n      DAT_00151464 = pcVar3;\n    }\n    pcVar3 = DAT_00151464;\n    DAT_00151444 = strlen(DAT_00151464);\n    if (DAT_00151440 != (char *)0x0) {\n      free(DAT_00151440);\n      pcVar3 = DAT_00151464;\n    }\n    sVar4 = strlen(pcVar3);\n    pcVar5 = (char *)xmalloc(sVar4 + 1);\n    DAT_0015143c = strcpy(pcVar5,pcVar3);\n    DAT_00151438 = 0;\n    DAT_00151440 = DAT_0015143c;\n    if (DAT_0015144c == 0) {\n      uVar8 = dircomplete_expand;\n      if ((dircomplete_expand != 0) &&\n         (iVar2 = path_dot_or_dotdot(DAT_0015143c), uVar8 = DAT_00151438, iVar2 != 0)) {\n        dircomplete_expand = 1;\n        rl_directory_rewrite_hook = FUN_0008c7b0;\n        rl_directory_completion_hook = (code *)0x0;\n      }\n      DAT_0015145c = 4;\n      pcVar3 = DAT_0015143c;\n      do {\n        do {\n          while( true ) {\n            DAT_00151454 = (char *)rl_filename_completion_function(pcVar3,uVar8);\n            if ((DAT_0015145c == 4) && (dircomplete_expand != 0)) {\n              rl_directory_completion_hook = FUN_0008c7b0;\n              rl_directory_rewrite_hook = (code *)0x0;\n            }\n            DAT_00151438 = 1;\n            if (DAT_00151454 == (char *)0x0) break;\n            iVar2 = absolute_program(DAT_00151464);\n            pcVar5 = DAT_00151454;\n            if (iVar2 == 0) {\n              pcVar3 = strrchr(DAT_00151454,0x2f);\n              if (pcVar3 != (char *)0x0) {\n                pcVar3 = pcVar3 + 1;\n                if (DAT_00151450 == 0) {\n                  iVar2 = strncmp(pcVar3,DAT_00151464,DAT_00151444);\n                }\n                else {\n                  iVar2 = strncasecmp(pcVar3,DAT_00151464,DAT_00151444);\n                }\n                if (iVar2 == 0) {\n                  sVar4 = strlen(pcVar3);\n                  pcVar5 = (char *)xmalloc(sVar4 + 1);\n                  pcVar3 = strcpy(pcVar5,pcVar3);\n                  goto LAB_0008d6a4;\n                }\n              }\n            }\n            else {\n              if (DAT_00151450 == 0) {\n                iVar2 = strncmp(DAT_00151454,DAT_00151464,DAT_00151444);\n              }\n              else {\n                iVar2 = strncasecmp(DAT_00151454,DAT_00151464,DAT_00151444);\n              }\n              if (*param_1 == '~') {\n                pcVar3 = (char *)FUN_0008a220();\n              }\n              else {\n                sVar4 = strlen(pcVar5);\n                pcVar3 = (char *)xmalloc(sVar4 + 1);\n                pcVar3 = strcpy(pcVar3,pcVar5);\n              }\n              pcVar5 = DAT_00151454;\n              if (iVar2 == 0) {\nLAB_0008d6a4:\n                iVar2 = DAT_00151460;\n                pcVar10 = DAT_00151454;\n                sVar4 = strlen(DAT_00151454);\n                pcVar5 = (char *)xmalloc(sVar4 + 1);\n                local_24 = strcpy(pcVar5,pcVar10);\n                FUN_0008c7b0(&local_24);\n                if (iVar2 == 0) {\n                  iVar2 = executable_or_directory(local_24);\n                }\n                else {\n                  iVar2 = executable_file(local_24);\n                }\n                free(local_24);\n                pcVar5 = DAT_00151454;\n                if (iVar2 != 0) {\n                  if (pcVar10 != DAT_00151454) {\n                    free(pcVar10);\n                  }\n                  free(pcVar5);\n                  DAT_00151454 = "";\n                  goto LAB_0008d5c8;\n                }\n                free(pcVar3);\n                if (pcVar10 != pcVar5) {\n                  free(pcVar10);\n                }\n              }\n              else {\n                free(pcVar3);\n              }\n            }\n            free(pcVar5);\n            uVar8 = DAT_00151438;\n            pcVar3 = DAT_0015143c;\n          }\n          iVar2 = absolute_program(DAT_00151464);\n          if (iVar2 != 0) goto LAB_0008dac4;\nLAB_0008d5f6:\n          uVar8 = (uint)(DAT_00151454 != (char *)0x0);\n          pcVar3 = DAT_0015143c;\n          DAT_00151438 = uVar8;\n        } while (DAT_00151454 != (char *)0x0);\n        if (((DAT_00151434 == 0) || (*(char *)(DAT_00151434 + DAT_00151430) == '\0')) ||\n           (pcVar3 = (char *)extract_colon_unit(DAT_00151434,&DAT_00151430), pcVar3 == (char *)0x0))\n        goto LAB_0008dac4;\n        DAT_00151460 = 1;\n        cVar11 = *pcVar3;\n        if (cVar11 == '\0') {\n          free(pcVar3);\n          pcVar3 = (char *)xmalloc(2);\n          pcVar3[0] = '.';\n          pcVar3[1] = '\0';\n          cVar11 = '.';\n        }\n        pcVar5 = pcVar3;\n        if (cVar11 == '~') {\n          pcVar5 = (char *)bash_tilde_expand(pcVar3,0);\n          free(pcVar3);\n          cVar11 = *pcVar5;\n        }\n        pcVar3 = DAT_00151440;\n        if ((cVar11 == '.') && (pcVar5[1] == '\0')) {\n          DAT_001514ec = 1;\n        }\n        if (DAT_0015143c == (char *)0x0) {\nLAB_0008dbfe:\n          if (pcVar3 != (char *)0x0) goto LAB_0008de5f;\n        }\n        else {\n          if (DAT_0015143c != DAT_00151440) {\n            free(DAT_0015143c);\n            goto LAB_0008dbfe;\n          }\nLAB_0008de5f:\n          free(pcVar3);\n        }\n        pcVar3 = (char *)sh_makepath(pcVar5,DAT_00151464,0);\n        DAT_00151440 = pcVar3;\n        pcVar10 = strpbrk(pcVar3,"\"\'\\");\n        if (pcVar10 != (char *)0x0) {\n          pcVar3 = (char *)sh_backslash_quote(pcVar3,&DAT_00151500,0);\n        }\n        DAT_0015143c = pcVar3;\n        free(pcVar5);\n        uVar8 = DAT_00151438;\n      } while( true );\n    }\n    DAT_0015145c = 5;\nLAB_0008d218:\n    glob_ignore_case = DAT_00151450;\n    puVar6 = (undefined4 *)shell_glob_filename(DAT_00151464);\n    glob_ignore_case = 0;\n    if ((puVar6 == (undefined4 *)PTR_glob_error_return_00149f60) || (puVar6 == (undefined4 *)0x0)) {\n      DAT_001514d4 = (undefined4 *)0x0;\n      pcVar3 = (char *)0x0;\n      goto LAB_0008d5c8;\n    }\n    DAT_0015142c = 0;\n    DAT_001514d4 = puVar6;\n    if ((puVar6[1] != 0) && (rl_completion_type == 9)) {\nLAB_0008dac4:\n      pcVar3 = (char *)0x0;\n      goto LAB_0008d5c8;\n    }\n    iVar2 = 1;\n  }\n  else {\nLAB_0008d390:\n    pcVar3 = DAT_00151464;\n    uVar8 = DAT_00151450;\n    sVar4 = DAT_00151444;\n    pvVar1 = DAT_00151424;\n    iVar2 = DAT_0015142c;\n    if (DAT_0015145c == 1) {\nLAB_0008d960:\n      do {\n        pcVar5 = (&word_token_alist)[iVar2 * 2];\n        if (pcVar5 == (char *)0x0) {\n          DAT_0015142c = 0;\n          DAT_0015145c = DAT_0015145c + 1;\n          uVar8 = DAT_00151450;\n          pvVar1 = DAT_00151428;\n          goto LAB_0008d840;\n        }\n        iVar2 = iVar2 + 1;\n        DAT_0015142c = iVar2;\n      } while ((sVar4 != 0) &&\n              ((*pcVar5 != *pcVar3 || (iVar9 = strncmp(pcVar5,pcVar3,sVar4), iVar9 != 0))));\nLAB_0008d451:\n      sVar4 = strlen(pcVar5);\n      pcVar3 = (char *)xmalloc(sVar4 + 1);\n      pcVar3 = strcpy(pcVar3,pcVar5);\n      goto LAB_0008d5c8;\n    }\n    if (DAT_0015145c < 2) {\n      if (DAT_0015145c == 0) {\n        do {\n          while( true ) {\n            if ((pvVar1 == (void *)0x0) ||\n               (puVar6 = *(undefined4 **)((int)pvVar1 + DAT_0015142c * 4),\n               puVar6 == (undefined4 *)0x0)) {\n              DAT_0015145c = 1;\n              iVar2 = 0;\n              goto LAB_0008d960;\n            }\n            DAT_0015142c = DAT_0015142c + 1;\n            pcVar5 = (char *)*puVar6;\n            if (uVar8 != 0) break;\n            if ((sVar4 == 0) ||\n               ((*pcVar5 == *pcVar3 && (iVar2 = strncmp(pcVar5,pcVar3,sVar4), iVar2 == 0))))\n            goto LAB_0008d451;\n          }\n          iVar2 = strncasecmp(pcVar5,pcVar3,sVar4);\n        } while (iVar2 != 0);\n        goto LAB_0008d451;\n      }\n    }\n    else {\n      pvVar1 = DAT_00151428;\n      if (DAT_0015145c == 2) {\nLAB_0008d840:\n        do {\n          if ((pvVar1 == (void *)0x0) ||\n             (puVar6 = *(undefined4 **)((int)pvVar1 + DAT_0015142c * 4), puVar6 == (undefined4 *)0x0\n             )) {\n            DAT_0015142c = 0;\n            DAT_0015145c = DAT_0015145c + 1;\n            goto LAB_0008d3bd;\n          }\n          DAT_0015142c = DAT_0015142c + 1;\n          pcVar5 = (char *)*puVar6;\n          if (uVar8 == 0) {\n            if ((sVar4 == 0) ||\n               ((*pcVar5 == *pcVar3 && (iVar2 = strncmp(pcVar5,pcVar3,sVar4), iVar2 == 0)))) break;\n            goto LAB_0008d840;\n          }\n          iVar2 = strncasecmp(pcVar5,pcVar3,sVar4);\n        } while (iVar2 != 0);\n        sVar4 = strlen(pcVar5);\n        pcVar3 = (char *)xmalloc(sVar4 + 1);\n        pcVar3 = strcpy(pcVar3,pcVar5);\n        goto LAB_0008d5c8;\n      }\n      if (DAT_0015145c == 3) {\nLAB_0008d3bd:\n        pcVar3 = DAT_00151464;\n        sVar4 = DAT_00151444;\n        iVar2 = num_shell_builtins;\n        if (DAT_0015142c < num_shell_builtins) {\n          puVar6 = (undefined4 *)(shell_builtins + DAT_0015142c * 0x18);\n          do {\n            iVar9 = DAT_0015142c;\n            if (((puVar6[1] != 0) && ((*(byte *)(puVar6 + 2) & 1) != 0)) &&\n               ((pcVar5 = (char *)*puVar6, sVar4 == 0 ||\n                ((*pcVar5 == *pcVar3 && (iVar7 = strncmp(pcVar5,pcVar3,sVar4), iVar7 == 0)))))) {\n              DAT_0015142c = iVar9 + 1;\n              goto LAB_0008d451;\n            }\n            DAT_0015142c = iVar9 + 1;\n            puVar6 = puVar6 + 6;\n          } while (DAT_0015142c != iVar2);\n        }\n        DAT_0015145c = DAT_0015145c + 1;\n        DAT_0015142c = 0;\n      }\n    }\n    if (DAT_0015144c == 0) {\n      if (DAT_00151458 == 0) goto LAB_0008d5f6;\n      DAT_00151458 = 0;\n      sVar4 = strlen(param_1);\n      pcVar3 = (char *)xmalloc(sVar4 + 1);\n      pcVar3 = strcpy(pcVar3,param_1);\n      goto LAB_0008d5c8;\n    }\n    if (param_2 == 0) goto LAB_0008d218;\n    iVar2 = DAT_0015142c + 1;\n    puVar6 = DAT_001514d4 + DAT_0015142c;\n  }\n  DAT_00151454 = (char *)*puVar6;\n  DAT_0015142c = iVar2;\n  while (DAT_00151454 != (char *)0x0) {\n    iVar2 = executable_or_directory(DAT_00151454);\n    if (iVar2 != 0) {\n      pcVar3 = DAT_00151454;\n      if ((*param_1 == '~') && (DAT_00151448 != (char *)0x0)) {\n        pcVar3 = (char *)FUN_0008a220();\n        free(DAT_00151454);\n        DAT_00151454 = pcVar3;\n      }\n      goto LAB_0008d5c8;\n    }\n    free(DAT_00151454);\n    DAT_00151454 = (char *)DAT_001514d4[DAT_0015142c];\n    DAT_0015142c = DAT_0015142c + 1;\n  }\n  glob_ignore_case = 0;\n  pcVar3 = (char *)0x0;\nLAB_0008d5c8:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_000ecc40();\n  }\n  return pcVar3;\n}" ({ "{") (declaration "void *pvVar1;" (primitive_type "void") (pointer_declarator "*pvVar1" (* "*") (identifier "pvVar1")) (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (declaration "char *pcVar3;" (primitive_type "char") (pointer_declarator "*pcVar3" (* "*") (identifier "pcVar3")) (; ";")) (declaration "size_t sVar4;" (primitive_type "size_t") (identifier "sVar4") (; ";")) (declaration "char *pcVar5;" (primitive_type "char") (pointer_declarator "*pcVar5" (* "*") (identifier "pcVar5")) (; ";")) (declaration "undefined4 *puVar6;" (type_identifier "undefined4") (pointer_declarator "*puVar6" (* "*") (identifier "puVar6")) (; ";")) (declaration "int iVar7;" (primitive_type "int") (identifier "iVar7") (; ";")) (declaration "uint uVar8;" (type_identifier "uint") (identifier "uVar8") (; ";")) (declaration "int iVar9;" (primitive_type "int") (identifier "iVar9") (; ";")) (declaration "char *pcVar10;" (primitive_type "char") (pointer_declarator "*pcVar10" (* "*") (identifier "pcVar10")) (; ";")) (declaration "char cVar11;" (primitive_type "char") (identifier "cVar11") (; ";")) (declaration "int in_GS_OFFSET;" (primitive_type "int") (identifier "in_GS_OFFSET") (; ";")) (declaration "char *local_24;" (primitive_type "char") (pointer_declarator "*local_24" (* "*") (identifier "local_24")) (; ";")) (declaration "int local_20;" (primitive_type "int") (identifier "local_20") (; ";")) (declaration "undefined4 uStack_14;" (type_identifier "undefined4") (identifier "uStack_14") (; ";")) (expression_statement "uStack_14 = 0x8d029;" (assignment_expression "uStack_14 = 0x8d029" (identifier "uStack_14") (= "=") (number_literal "0x8d029")) (; ";")) (expression_statement "local_20 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "local_20 = *(int *)(in_GS_OFFSET + 0x14)" (identifier "local_20") (= "=") (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" (* "*") (cast_expression "(int *)(in_GS_OFFSET + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(in_GS_OFFSET + 0x14)" (( "(") (binary_expression "in_GS_OFFSET + 0x14" (identifier "in_GS_OFFSET") (+ "+") (number_literal "0x14")) () ")"))))) (; ";")) (if_statement "if (param_2 == 0) {\n    rl_filename_stat_hook = FUN_0008f310;\n    if (DAT_00151468 == (char *)0x0) {\nLAB_0008d085:\n      if (DAT_00151464 != (char *)0x0) goto LAB_0008d089;\n    }\n    else {\n      if (DAT_00151468 != DAT_00151464) {\n        free(DAT_00151468);\n        goto LAB_0008d085;\n      }\nLAB_0008d089:\n      free(DAT_00151464);\n    }\n    DAT_00151460 = 0;\n    DAT_0015145c = 0;\n    iVar2 = absolute_pathname(param_1);\n    if (((iVar2 == 0) && (iVar2 = absolute_program(param_1), iVar2 == 0)) && (*param_1 != '~')) {\n      iVar2 = FUN_0008ac10(param_1);\n      DAT_00151458 = (uint)(iVar2 != 0);\n    }\n    else {\n      DAT_00151458 = 0;\n    }\n    DAT_00151454 = (char *)0x0;\n    pcVar3 = (char *)rl_variable_value("completion-ignore-case");\n    DAT_00151450 = 0;\n    if ((*pcVar3 == 'o') && (pcVar3[1] == 'n')) {\n      DAT_00151450 = (uint)(pcVar3[2] == '\0');\n    }\n    if (DAT_001514d4 != (undefined4 *)0x0) {\n      free(DAT_001514d4);\n      DAT_001514d4 = (undefined4 *)0x0;\n    }\n    DAT_0015144c = FUN_0008cd10();\n    if ((DAT_0015144c == 0) && (iVar2 = absolute_program(param_1), iVar2 == 0)) {\n      sVar4 = strlen(param_1);\n      pcVar3 = (char *)xmalloc(sVar4 + 1);\n      pcVar3 = strcpy(pcVar3,param_1);\n      DAT_00151464 = pcVar3;\n      DAT_00151468 = pcVar3;\n      DAT_00151444 = strlen(pcVar3);\n      if ((rl_completion_found_quote != 0) && (rl_completion_quote_character == 0)) {\n        DAT_00151468 = (char *)FUN_00089940(pcVar3,0);\n      }\n      DAT_00151434 = get_string_value("PATH");\n      DAT_001514ec = 0;\n      DAT_00151430 = 0;\n      DAT_0015142c = 0;\n      if (DAT_00151428 != (void *)0x0) {\n        free(DAT_00151428);\n      }\n      DAT_00151428 = (void *)all_visible_functions();\n      if (DAT_00151424 != (void *)0x0) {\n        free(DAT_00151424);\n      }\n      DAT_00151424 = (void *)all_aliases();\n      goto LAB_0008d390;\n    }\n    if (*param_1 == '~') {\n      DAT_00151464 = (char *)bash_tilde_expand(param_1,0);\n      sVar4 = strlen(param_1);\n      pcVar3 = (char *)xmalloc(sVar4 + 1);\n      pcVar3 = strcpy(pcVar3,param_1);\n      DAT_00151448 = pcVar3;\n      pcVar5 = strchr(pcVar3,0x2f);\n      if (pcVar5 == (char *)0x0) {\n        free(pcVar3);\n        DAT_00151448 = (char *)0x0;\n      }\n      else {\n        *pcVar5 = '\0';\n      }\n    }\n    else {\n      sVar4 = strlen(param_1);\n      if (dircomplete_expand == 0) {\n        pcVar3 = (char *)xmalloc(sVar4 + 1);\n        DAT_00151464 = strcpy(pcVar3,param_1);\n      }\n      else {\n        pcVar3 = (char *)xmalloc(sVar4 + 1);\n        DAT_00151464 = strcpy(pcVar3,param_1);\n        FUN_0008c7b0(&DAT_00151464);\n      }\n    }\n    DAT_00151468 = DAT_00151464;\n    if ((rl_completion_found_quote != 0) && (rl_completion_quote_character == 0)) {\n      pcVar3 = (char *)FUN_00089940(DAT_00151464,0);\n      DAT_00151468 = pcVar3;\n      free(DAT_00151464);\n      DAT_00151464 = pcVar3;\n    }\n    pcVar3 = DAT_00151464;\n    DAT_00151444 = strlen(DAT_00151464);\n    if (DAT_00151440 != (char *)0x0) {\n      free(DAT_00151440);\n      pcVar3 = DAT_00151464;\n    }\n    sVar4 = strlen(pcVar3);\n    pcVar5 = (char *)xmalloc(sVar4 + 1);\n    DAT_0015143c = strcpy(pcVar5,pcVar3);\n    DAT_00151438 = 0;\n    DAT_00151440 = DAT_0015143c;\n    if (DAT_0015144c == 0) {\n      uVar8 = dircomplete_expand;\n      if ((dircomplete_expand != 0) &&\n         (iVar2 = path_dot_or_dotdot(DAT_0015143c), uVar8 = DAT_00151438, iVar2 != 0)) {\n        dircomplete_expand = 1;\n        rl_directory_rewrite_hook = FUN_0008c7b0;\n        rl_directory_completion_hook = (code *)0x0;\n      }\n      DAT_0015145c = 4;\n      pcVar3 = DAT_0015143c;\n      do {\n        do {\n          while( true ) {\n            DAT_00151454 = (char *)rl_filename_completion_function(pcVar3,uVar8);\n            if ((DAT_0015145c == 4) && (dircomplete_expand != 0)) {\n              rl_directory_completion_hook = FUN_0008c7b0;\n              rl_directory_rewrite_hook = (code *)0x0;\n            }\n            DAT_00151438 = 1;\n            if (DAT_00151454 == (char *)0x0) break;\n            iVar2 = absolute_program(DAT_00151464);\n            pcVar5 = DAT_00151454;\n            if (iVar2 == 0) {\n              pcVar3 = strrchr(DAT_00151454,0x2f);\n              if (pcVar3 != (char *)0x0) {\n                pcVar3 = pcVar3 + 1;\n                if (DAT_00151450 == 0) {\n                  iVar2 = strncmp(pcVar3,DAT_00151464,DAT_00151444);\n                }\n                else {\n                  iVar2 = strncasecmp(pcVar3,DAT_00151464,DAT_00151444);\n                }\n                if (iVar2 == 0) {\n                  sVar4 = strlen(pcVar3);\n                  pcVar5 = (char *)xmalloc(sVar4 + 1);\n                  pcVar3 = strcpy(pcVar5,pcVar3);\n                  goto LAB_0008d6a4;\n                }\n              }\n            }\n            else {\n              if (DAT_00151450 == 0) {\n                iVar2 = strncmp(DAT_00151454,DAT_00151464,DAT_00151444);\n              }\n              else {\n                iVar2 = strncasecmp(DAT_00151454,DAT_00151464,DAT_00151444);\n              }\n              if (*param_1 == '~') {\n                pcVar3 = (char *)FUN_0008a220();\n              }\n              else {\n                sVar4 = strlen(pcVar5);\n                pcVar3 = (char *)xmalloc(sVar4 + 1);\n                pcVar3 = strcpy(pcVar3,pcVar5);\n              }\n              pcVar5 = DAT_00151454;\n              if (iVar2 == 0) {\nLAB_0008d6a4:\n                iVar2 = DAT_00151460;\n                pcVar10 = DAT_00151454;\n                sVar4 = strlen(DAT_00151454);\n                pcVar5 = (char *)xmalloc(sVar4 + 1);\n                local_24 = strcpy(pcVar5,pcVar10);\n                FUN_0008c7b0(&local_24);\n                if (iVar2 == 0) {\n                  iVar2 = executable_or_directory(local_24);\n                }\n                else {\n                  iVar2 = executable_file(local_24);\n                }\n                free(local_24);\n                pcVar5 = DAT_00151454;\n                if (iVar2 != 0) {\n                  if (pcVar10 != DAT_00151454) {\n                    free(pcVar10);\n                  }\n                  free(pcVar5);\n                  DAT_00151454 = "";\n                  goto LAB_0008d5c8;\n                }\n                free(pcVar3);\n                if (pcVar10 != pcVar5) {\n                  free(pcVar10);\n                }\n              }\n              else {\n                free(pcVar3);\n              }\n            }\n            free(pcVar5);\n            uVar8 = DAT_00151438;\n            pcVar3 = DAT_0015143c;\n          }\n          iVar2 = absolute_program(DAT_00151464);\n          if (iVar2 != 0) goto LAB_0008dac4;\nLAB_0008d5f6:\n          uVar8 = (uint)(DAT_00151454 != (char *)0x0);\n          pcVar3 = DAT_0015143c;\n          DAT_00151438 = uVar8;\n        } while (DAT_00151454 != (char *)0x0);\n        if (((DAT_00151434 == 0) || (*(char *)(DAT_00151434 + DAT_00151430) == '\0')) ||\n           (pcVar3 = (char *)extract_colon_unit(DAT_00151434,&DAT_00151430), pcVar3 == (char *)0x0))\n        goto LAB_0008dac4;\n        DAT_00151460 = 1;\n        cVar11 = *pcVar3;\n        if (cVar11 == '\0') {\n          free(pcVar3);\n          pcVar3 = (char *)xmalloc(2);\n          pcVar3[0] = '.';\n          pcVar3[1] = '\0';\n          cVar11 = '.';\n        }\n        pcVar5 = pcVar3;\n        if (cVar11 == '~') {\n          pcVar5 = (char *)bash_tilde_expand(pcVar3,0);\n          free(pcVar3);\n          cVar11 = *pcVar5;\n        }\n        pcVar3 = DAT_00151440;\n        if ((cVar11 == '.') && (pcVar5[1] == '\0')) {\n          DAT_001514ec = 1;\n        }\n        if (DAT_0015143c == (char *)0x0) {\nLAB_0008dbfe:\n          if (pcVar3 != (char *)0x0) goto LAB_0008de5f;\n        }\n        else {\n          if (DAT_0015143c != DAT_00151440) {\n            free(DAT_0015143c);\n            goto LAB_0008dbfe;\n          }\nLAB_0008de5f:\n          free(pcVar3);\n        }\n        pcVar3 = (char *)sh_makepath(pcVar5,DAT_00151464,0);\n        DAT_00151440 = pcVar3;\n        pcVar10 = strpbrk(pcVar3,"\"\'\\");\n        if (pcVar10 != (char *)0x0) {\n          pcVar3 = (char *)sh_backslash_quote(pcVar3,&DAT_00151500,0);\n        }\n        DAT_0015143c = pcVar3;\n        free(pcVar5);\n        uVar8 = DAT_00151438;\n      } while( true );\n    }\n    DAT_0015145c = 5;\nLAB_0008d218:\n    glob_ignore_case = DAT_00151450;\n    puVar6 = (undefined4 *)shell_glob_filename(DAT_00151464);\n    glob_ignore_case = 0;\n    if ((puVar6 == (undefined4 *)PTR_glob_error_return_00149f60) || (puVar6 == (undefined4 *)0x0)) {\n      DAT_001514d4 = (undefined4 *)0x0;\n      pcVar3 = (char *)0x0;\n      goto LAB_0008d5c8;\n    }\n    DAT_0015142c = 0;\n    DAT_001514d4 = puVar6;\n    if ((puVar6[1] != 0) && (rl_completion_type == 9)) {\nLAB_0008dac4:\n      pcVar3 = (char *)0x0;\n      goto LAB_0008d5c8;\n    }\n    iVar2 = 1;\n  }\n  else {\nLAB_0008d390:\n    pcVar3 = DAT_00151464;\n    uVar8 = DAT_00151450;\n    sVar4 = DAT_00151444;\n    pvVar1 = DAT_00151424;\n    iVar2 = DAT_0015142c;\n    if (DAT_0015145c == 1) {\nLAB_0008d960:\n      do {\n        pcVar5 = (&word_token_alist)[iVar2 * 2];\n        if (pcVar5 == (char *)0x0) {\n          DAT_0015142c = 0;\n          DAT_0015145c = DAT_0015145c + 1;\n          uVar8 = DAT_00151450;\n          pvVar1 = DAT_00151428;\n          goto LAB_0008d840;\n        }\n        iVar2 = iVar2 + 1;\n        DAT_0015142c = iVar2;\n      } while ((sVar4 != 0) &&\n              ((*pcVar5 != *pcVar3 || (iVar9 = strncmp(pcVar5,pcVar3,sVar4), iVar9 != 0))));\nLAB_0008d451:\n      sVar4 = strlen(pcVar5);\n      pcVar3 = (char *)xmalloc(sVar4 + 1);\n      pcVar3 = strcpy(pcVar3,pcVar5);\n      goto LAB_0008d5c8;\n    }\n    if (DAT_0015145c < 2) {\n      if (DAT_0015145c == 0) {\n        do {\n          while( true ) {\n            if ((pvVar1 == (void *)0x0) ||\n               (puVar6 = *(undefined4 **)((int)pvVar1 + DAT_0015142c * 4),\n               puVar6 == (undefined4 *)0x0)) {\n              DAT_0015145c = 1;\n              iVar2 = 0;\n              goto LAB_0008d960;\n            }\n            DAT_0015142c = DAT_0015142c + 1;\n            pcVar5 = (char *)*puVar6;\n            if (uVar8 != 0) break;\n            if ((sVar4 == 0) ||\n               ((*pcVar5 == *pcVar3 && (iVar2 = strncmp(pcVar5,pcVar3,sVar4), iVar2 == 0))))\n            goto LAB_0008d451;\n          }\n          iVar2 = strncasecmp(pcVar5,pcVar3,sVar4);\n        } while (iVar2 != 0);\n        goto LAB_0008d451;\n      }\n    }\n    else {\n      pvVar1 = DAT_00151428;\n      if (DAT_0015145c == 2) {\nLAB_0008d840:\n        do {\n          if ((pvVar1 == (void *)0x0) ||\n             (puVar6 = *(undefined4 **)((int)pvVar1 + DAT_0015142c * 4), puVar6 == (undefined4 *)0x0\n             )) {\n            DAT_0015142c = 0;\n            DAT_0015145c = DAT_0015145c + 1;\n            goto LAB_0008d3bd;\n          }\n          DAT_0015142c = DAT_0015142c + 1;\n          pcVar5 = (char *)*puVar6;\n          if (uVar8 == 0) {\n            if ((sVar4 == 0) ||\n               ((*pcVar5 == *pcVar3 && (iVar2 = strncmp(pcVar5,pcVar3,sVar4), iVar2 == 0)))) break;\n            goto LAB_0008d840;\n          }\n          iVar2 = strncasecmp(pcVar5,pcVar3,sVar4);\n        } while (iVar2 != 0);\n        sVar4 = strlen(pcVar5);\n        pcVar3 = (char *)xmalloc(sVar4 + 1);\n        pcVar3 = strcpy(pcVar3,pcVar5);\n        goto LAB_0008d5c8;\n      }\n      if (DAT_0015145c == 3) {\nLAB_0008d3bd:\n        pcVar3 = DAT_00151464;\n        sVar4 = DAT_00151444;\n        iVar2 = num_shell_builtins;\n        if (DAT_0015142c < num_shell_builtins) {\n          puVar6 = (undefined4 *)(shell_builtins + DAT_0015142c * 0x18);\n          do {\n            iVar9 = DAT_0015142c;\n            if (((puVar6[1] != 0) && ((*(byte *)(puVar6 + 2) & 1) != 0)) &&\n               ((pcVar5 = (char *)*puVar6, sVar4 == 0 ||\n                ((*pcVar5 == *pcVar3 && (iVar7 = strncmp(pcVar5,pcVar3,sVar4), iVar7 == 0)))))) {\n              DAT_0015142c = iVar9 + 1;\n              goto LAB_0008d451;\n            }\n            DAT_0015142c = iVar9 + 1;\n            puVar6 = puVar6 + 6;\n          } while (DAT_0015142c != iVar2);\n        }\n        DAT_0015145c = DAT_0015145c + 1;\n        DAT_0015142c = 0;\n      }\n    }\n    if (DAT_0015144c == 0) {\n      if (DAT_00151458 == 0) goto LAB_0008d5f6;\n      DAT_00151458 = 0;\n      sVar4 = strlen(param_1);\n      pcVar3 = (char *)xmalloc(sVar4 + 1);\n      pcVar3 = strcpy(pcVar3,param_1);\n      goto LAB_0008d5c8;\n    }\n    if (param_2 == 0) goto LAB_0008d218;\n    iVar2 = DAT_0015142c + 1;\n    puVar6 = DAT_001514d4 + DAT_0015142c;\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_0008f310;\n    if (DAT_00151468 == (char *)0x0) {\nLAB_0008d085:\n      if (DAT_00151464 != (char *)0x0) goto LAB_0008d089;\n    }\n    else {\n      if (DAT_00151468 != DAT_00151464) {\n        free(DAT_00151468);\n        goto LAB_0008d085;\n      }\nLAB_0008d089:\n      free(DAT_00151464);\n    }\n    DAT_00151460 = 0;\n    DAT_0015145c = 0;\n    iVar2 = absolute_pathname(param_1);\n    if (((iVar2 == 0) && (iVar2 = absolute_program(param_1), iVar2 == 0)) && (*param_1 != '~')) {\n      iVar2 = FUN_0008ac10(param_1);\n      DAT_00151458 = (uint)(iVar2 != 0);\n    }\n    else {\n      DAT_00151458 = 0;\n    }\n    DAT_00151454 = (char *)0x0;\n    pcVar3 = (char *)rl_variable_value("completion-ignore-case");\n    DAT_00151450 = 0;\n    if ((*pcVar3 == 'o') && (pcVar3[1] == 'n')) {\n      DAT_00151450 = (uint)(pcVar3[2] == '\0');\n    }\n    if (DAT_001514d4 != (undefined4 *)0x0) {\n      free(DAT_001514d4);\n      DAT_001514d4 = (undefined4 *)0x0;\n    }\n    DAT_0015144c = FUN_0008cd10();\n    if ((DAT_0015144c == 0) && (iVar2 = absolute_program(param_1), iVar2 == 0)) {\n      sVar4 = strlen(param_1);\n      pcVar3 = (char *)xmalloc(sVar4 + 1);\n      pcVar3 = strcpy(pcVar3,param_1);\n      DAT_00151464 = pcVar3;\n      DAT_00151468 = pcVar3;\n      DAT_00151444 = strlen(pcVar3);\n      if ((rl_completion_found_quote != 0) && (rl_completion_quote_character == 0)) {\n        DAT_00151468 = (char *)FUN_00089940(pcVar3,0);\n      }\n      DAT_00151434 = get_string_value("PATH");\n      DAT_001514ec = 0;\n      DAT_00151430 = 0;\n      DAT_0015142c = 0;\n      if (DAT_00151428 != (void *)0x0) {\n        free(DAT_00151428);\n      }\n      DAT_00151428 = (void *)all_visible_functions();\n      if (DAT_00151424 != (void *)0x0) {\n        free(DAT_00151424);\n      }\n      DAT_00151424 = (void *)all_aliases();\n      goto LAB_0008d390;\n    }\n    if (*param_1 == '~') {\n      DAT_00151464 = (char *)bash_tilde_expand(param_1,0);\n      sVar4 = strlen(param_1);\n      pcVar3 = (char *)xmalloc(sVar4 + 1);\n      pcVar3 = strcpy(pcVar3,param_1);\n      DAT_00151448 = pcVar3;\n      pcVar5 = strchr(pcVar3,0x2f);\n      if (pcVar5 == (char *)0x0) {\n        free(pcVar3);\n        DAT_00151448 = (char *)0x0;\n      }\n      else {\n        *pcVar5 = '\0';\n      }\n    }\n    else {\n      sVar4 = strlen(param_1);\n      if (dircomplete_expand == 0) {\n        pcVar3 = (char *)xmalloc(sVar4 + 1);\n        DAT_00151464 = strcpy(pcVar3,param_1);\n      }\n      else {\n        pcVar3 = (char *)xmalloc(sVar4 + 1);\n        DAT_00151464 = strcpy(pcVar3,param_1);\n        FUN_0008c7b0(&DAT_00151464);\n      }\n    }\n    DAT_00151468 = DAT_00151464;\n    if ((rl_completion_found_quote != 0) && (rl_completion_quote_character == 0)) {\n      pcVar3 = (char *)FUN_00089940(DAT_00151464,0);\n      DAT_00151468 = pcVar3;\n      free(DAT_00151464);\n      DAT_00151464 = pcVar3;\n    }\n    pcVar3 = DAT_00151464;\n    DAT_00151444 = strlen(DAT_00151464);\n    if (DAT_00151440 != (char *)0x0) {\n      free(DAT_00151440);\n      pcVar3 = DAT_00151464;\n    }\n    sVar4 = strlen(pcVar3);\n    pcVar5 = (char *)xmalloc(sVar4 + 1);\n    DAT_0015143c = strcpy(pcVar5,pcVar3);\n    DAT_00151438 = 0;\n    DAT_00151440 = DAT_0015143c;\n    if (DAT_0015144c == 0) {\n      uVar8 = dircomplete_expand;\n      if ((dircomplete_expand != 0) &&\n         (iVar2 = path_dot_or_dotdot(DAT_0015143c), uVar8 = DAT_00151438, iVar2 != 0)) {\n        dircomplete_expand = 1;\n        rl_directory_rewrite_hook = FUN_0008c7b0;\n        rl_directory_completion_hook = (code *)0x0;\n      }\n      DAT_0015145c = 4;\n      pcVar3 = DAT_0015143c;\n      do {\n        do {\n          while( true ) {\n            DAT_00151454 = (char *)rl_filename_completion_function(pcVar3,uVar8);\n            if ((DAT_0015145c == 4) && (dircomplete_expand != 0)) {\n              rl_directory_completion_hook = FUN_0008c7b0;\n              rl_directory_rewrite_hook = (code *)0x0;\n            }\n            DAT_00151438 = 1;\n            if (DAT_00151454 == (char *)0x0) break;\n            iVar2 = absolute_program(DAT_00151464);\n            pcVar5 = DAT_00151454;\n            if (iVar2 == 0) {\n              pcVar3 = strrchr(DAT_00151454,0x2f);\n              if (pcVar3 != (char *)0x0) {\n                pcVar3 = pcVar3 + 1;\n                if (DAT_00151450 == 0) {\n                  iVar2 = strncmp(pcVar3,DAT_00151464,DAT_00151444);\n                }\n                else {\n                  iVar2 = strncasecmp(pcVar3,DAT_00151464,DAT_00151444);\n                }\n                if (iVar2 == 0) {\n                  sVar4 = strlen(pcVar3);\n                  pcVar5 = (char *)xmalloc(sVar4 + 1);\n                  pcVar3 = strcpy(pcVar5,pcVar3);\n                  goto LAB_0008d6a4;\n                }\n              }\n            }\n            else {\n              if (DAT_00151450 == 0) {\n                iVar2 = strncmp(DAT_00151454,DAT_00151464,DAT_00151444);\n              }\n              else {\n                iVar2 = strncasecmp(DAT_00151454,DAT_00151464,DAT_00151444);\n              }\n              if (*param_1 == '~') {\n                pcVar3 = (char *)FUN_0008a220();\n              }\n              else {\n                sVar4 = strlen(pcVar5);\n                pcVar3 = (char *)xmalloc(sVar4 + 1);\n                pcVar3 = strcpy(pcVar3,pcVar5);\n              }\n              pcVar5 = DAT_00151454;\n              if (iVar2 == 0) {\nLAB_0008d6a4:\n                iVar2 = DAT_00151460;\n                pcVar10 = DAT_00151454;\n                sVar4 = strlen(DAT_00151454);\n                pcVar5 = (char *)xmalloc(sVar4 + 1);\n                local_24 = strcpy(pcVar5,pcVar10);\n                FUN_0008c7b0(&local_24);\n                if (iVar2 == 0) {\n                  iVar2 = executable_or_directory(local_24);\n                }\n                else {\n                  iVar2 = executable_file(local_24);\n                }\n                free(local_24);\n                pcVar5 = DAT_00151454;\n                if (iVar2 != 0) {\n                  if (pcVar10 != DAT_00151454) {\n                    free(pcVar10);\n                  }\n                  free(pcVar5);\n                  DAT_00151454 = "";\n                  goto LAB_0008d5c8;\n                }\n                free(pcVar3);\n                if (pcVar10 != pcVar5) {\n                  free(pcVar10);\n                }\n              }\n              else {\n                free(pcVar3);\n              }\n            }\n            free(pcVar5);\n            uVar8 = DAT_00151438;\n            pcVar3 = DAT_0015143c;\n          }\n          iVar2 = absolute_program(DAT_00151464);\n          if (iVar2 != 0) goto LAB_0008dac4;\nLAB_0008d5f6:\n          uVar8 = (uint)(DAT_00151454 != (char *)0x0);\n          pcVar3 = DAT_0015143c;\n          DAT_00151438 = uVar8;\n        } while (DAT_00151454 != (char *)0x0);\n        if (((DAT_00151434 == 0) || (*(char *)(DAT_00151434 + DAT_00151430) == '\0')) ||\n           (pcVar3 = (char *)extract_colon_unit(DAT_00151434,&DAT_00151430), pcVar3 == (char *)0x0))\n        goto LAB_0008dac4;\n        DAT_00151460 = 1;\n        cVar11 = *pcVar3;\n        if (cVar11 == '\0') {\n          free(pcVar3);\n          pcVar3 = (char *)xmalloc(2);\n          pcVar3[0] = '.';\n          pcVar3[1] = '\0';\n          cVar11 = '.';\n        }\n        pcVar5 = pcVar3;\n        if (cVar11 == '~') {\n          pcVar5 = (char *)bash_tilde_expand(pcVar3,0);\n          free(pcVar3);\n          cVar11 = *pcVar5;\n        }\n        pcVar3 = DAT_00151440;\n        if ((cVar11 == '.') && (pcVar5[1] == '\0')) {\n          DAT_001514ec = 1;\n        }\n        if (DAT_0015143c == (char *)0x0) {\nLAB_0008dbfe:\n          if (pcVar3 != (char *)0x0) goto LAB_0008de5f;\n        }\n        else {\n          if (DAT_0015143c != DAT_00151440) {\n            free(DAT_0015143c);\n            goto LAB_0008dbfe;\n          }\nLAB_0008de5f:\n          free(pcVar3);\n        }\n        pcVar3 = (char *)sh_makepath(pcVar5,DAT_00151464,0);\n        DAT_00151440 = pcVar3;\n        pcVar10 = strpbrk(pcVar3,"\"\'\\");\n        if (pcVar10 != (char *)0x0) {\n          pcVar3 = (char *)sh_backslash_quote(pcVar3,&DAT_00151500,0);\n        }\n        DAT_0015143c = pcVar3;\n        free(pcVar5);\n        uVar8 = DAT_00151438;\n      } while( true );\n    }\n    DAT_0015145c = 5;\nLAB_0008d218:\n    glob_ignore_case = DAT_00151450;\n    puVar6 = (undefined4 *)shell_glob_filename(DAT_00151464);\n    glob_ignore_case = 0;\n    if ((puVar6 == (undefined4 *)PTR_glob_error_return_00149f60) || (puVar6 == (undefined4 *)0x0)) {\n      DAT_001514d4 = (undefined4 *)0x0;\n      pcVar3 = (char *)0x0;\n      goto LAB_0008d5c8;\n    }\n    DAT_0015142c = 0;\n    DAT_001514d4 = puVar6;\n    if ((puVar6[1] != 0) && (rl_completion_type == 9)) {\nLAB_0008dac4:\n      pcVar3 = (char *)0x0;\n      goto LAB_0008d5c8;\n    }\n    iVar2 = 1;\n  }" ({ "{") (expression_statement "rl_filename_stat_hook = FUN_0008f310;" (assignment_expression "rl_filename_stat_hook = FUN_0008f310" (identifier "rl_filename_stat_hook") (= "=") (identifier "FUN_0008f310")) (; ";")) (if_statement "if (DAT_00151468 == (char *)0x0) {\nLAB_0008d085:\n      if (DAT_00151464 != (char *)0x0) goto LAB_0008d089;\n    }\n    else {\n      if (DAT_00151468 != DAT_00151464) {\n        free(DAT_00151468);\n        goto LAB_0008d085;\n      }\nLAB_0008d089:\n      free(DAT_00151464);\n    }" (if "if") (parenthesized_expression "(DAT_00151468 == (char *)0x0)" (( "(") (binary_expression "DAT_00151468 == (char *)0x0" (identifier "DAT_00151468") (== "==") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\nLAB_0008d085:\n      if (DAT_00151464 != (char *)0x0) goto LAB_0008d089;\n    }" ({ "{") (labeled_statement "LAB_0008d085:\n      if (DAT_00151464 != (char *)0x0) goto LAB_0008d089;" (statement_identifier "LAB_0008d085") (: ":") (if_statement "if (DAT_00151464 != (char *)0x0) goto LAB_0008d089;" (if "if") (parenthesized_expression "(DAT_00151464 != (char *)0x0)" (( "(") (binary_expression "DAT_00151464 != (char *)0x0" (identifier "DAT_00151464") (!= "!=") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (goto_statement "goto LAB_0008d089;" (goto "goto") (statement_identifier "LAB_0008d089") (; ";")))) (} "}")) (else_clause "else {\n      if (DAT_00151468 != DAT_00151464) {\n        free(DAT_00151468);\n        goto LAB_0008d085;\n      }\nLAB_0008d089:\n      free(DAT_00151464);\n    }" (else "else") (compound_statement "{\n      if (DAT_00151468 != DAT_00151464) {\n        free(DAT_00151468);\n        goto LAB_0008d085;\n      }\nLAB_0008d089:\n      free(DAT_00151464);\n    }" ({ "{") (if_statement "if (DAT_00151468 != DAT_00151464) {\n        free(DAT_00151468);\n        goto LAB_0008d085;\n      }" (if "if") (parenthesized_expression "(DAT_00151468 != DAT_00151464)" (( "(") (binary_expression "DAT_00151468 != DAT_00151464" (identifier "DAT_00151468") (!= "!=") (identifier "DAT_00151464")) () ")")) (compound_statement "{\n        free(DAT_00151468);\n        goto LAB_0008d085;\n      }" ({ "{") (expression_statement "free(DAT_00151468);" (call_expression "free(DAT_00151468)" (identifier "free") (argument_list "(DAT_00151468)" (( "(") (identifier "DAT_00151468") () ")"))) (; ";")) (goto_statement "goto LAB_0008d085;" (goto "goto") (statement_identifier "LAB_0008d085") (; ";")) (} "}"))) (labeled_statement "LAB_0008d089:\n      free(DAT_00151464);" (statement_identifier "LAB_0008d089") (: ":") (expression_statement "free(DAT_00151464);" (call_expression "free(DAT_00151464)" (identifier "free") (argument_list "(DAT_00151464)" (( "(") (identifier "DAT_00151464") () ")"))) (; ";"))) (} "}")))) (expression_statement "DAT_00151460 = 0;" (assignment_expression "DAT_00151460 = 0" (identifier "DAT_00151460") (= "=") (number_literal "0")) (; ";")) (expression_statement "DAT_0015145c = 0;" (assignment_expression "DAT_0015145c = 0" (identifier "DAT_0015145c") (= "=") (number_literal "0")) (; ";")) (expression_statement "iVar2 = absolute_pathname(param_1);" (assignment_expression "iVar2 = absolute_pathname(param_1)" (identifier "iVar2") (= "=") (call_expression "absolute_pathname(param_1)" (identifier "absolute_pathname") (argument_list "(param_1)" (( "(") (identifier "param_1") () ")")))) (; ";")) (if_statement "if (((iVar2 == 0) && (iVar2 = absolute_program(param_1), iVar2 == 0)) && (*param_1 != '~')) {\n      iVar2 = FUN_0008ac10(param_1);\n      DAT_00151458 = (uint)(iVar2 != 0);\n    }\n    else {\n      DAT_00151458 = 0;\n    }" (if "if") (parenthesized_expression "(((iVar2 == 0) && (iVar2 = absolute_program(param_1), iVar2 == 0)) && (*param_1 != '~'))" (( "(") (binary_expression "((iVar2 == 0) && (iVar2 = absolute_program(param_1), iVar2 == 0)) && (*param_1 != '~')" (parenthesized_expression "((iVar2 == 0) && (iVar2 = absolute_program(param_1), iVar2 == 0))" (( "(") (binary_expression "(iVar2 == 0) && (iVar2 = absolute_program(param_1), iVar2 == 0)" (parenthesized_expression "(iVar2 == 0)" (( "(") (binary_expression "iVar2 == 0" (identifier "iVar2") (== "==") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(iVar2 = absolute_program(param_1), iVar2 == 0)" (( "(") (comma_expression "iVar2 = absolute_program(param_1), iVar2 == 0" (assignment_expression "iVar2 = absolute_program(param_1)" (identifier "iVar2") (= "=") (call_expression "absolute_program(param_1)" (identifier "absolute_program") (argument_list "(param_1)" (( "(") (identifier "param_1") () ")")))) (, ",") (binary_expression "iVar2 == 0" (identifier "iVar2") (== "==") (number_literal "0"))) () ")"))) () ")")) (&& "&&") (parenthesized_expression "(*param_1 != '~')" (( "(") (binary_expression "*param_1 != '~'" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (!= "!=") (char_literal "'~'" (' "'") (character "~") (' "'"))) () ")"))) () ")")) (compound_statement "{\n      iVar2 = FUN_0008ac10(param_1);\n      DAT_00151458 = (uint)(iVar2 != 0);\n    }" ({ "{") (expression_statement "iVar2 = FUN_0008ac10(param_1);" (assignment_expression "iVar2 = FUN_0008ac10(param_1)" (identifier "iVar2") (= "=") (call_expression "FUN_0008ac10(param_1)" (identifier "FUN_0008ac10") (argument_list "(param_1)" (( "(") (identifier "param_1") () ")")))) (; ";")) (expression_statement "DAT_00151458 = (uint)(iVar2 != 0);" (assignment_expression "DAT_00151458 = (uint)(iVar2 != 0)" (identifier "DAT_00151458") (= "=") (call_expression "(uint)(iVar2 != 0)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(iVar2 != 0)" (( "(") (binary_expression "iVar2 != 0" (identifier "iVar2") (!= "!=") (number_literal "0")) () ")")))) (; ";")) (} "}")) (else_clause "else {\n      DAT_00151458 = 0;\n    }" (else "else") (compound_statement "{\n      DAT_00151458 = 0;\n    }" ({ "{") (expression_statement "DAT_00151458 = 0;" (assignment_expression "DAT_00151458 = 0" (identifier "DAT_00151458") (= "=") (number_literal "0")) (; ";")) (} "}")))) (expression_statement "DAT_00151454 = (char *)0x0;" (assignment_expression "DAT_00151454 = (char *)0x0" (identifier "DAT_00151454") (= "=") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "pcVar3 = (char *)rl_variable_value("completion-ignore-case");" (assignment_expression "pcVar3 = (char *)rl_variable_value("completion-ignore-case")" (identifier "pcVar3") (= "=") (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_00151450 = 0;" (assignment_expression "DAT_00151450 = 0" (identifier "DAT_00151450") (= "=") (number_literal "0")) (; ";")) (if_statement "if ((*pcVar3 == 'o') && (pcVar3[1] == 'n')) {\n      DAT_00151450 = (uint)(pcVar3[2] == '\0');\n    }" (if "if") (parenthesized_expression "((*pcVar3 == 'o') && (pcVar3[1] == 'n'))" (( "(") (binary_expression "(*pcVar3 == 'o') && (pcVar3[1] == 'n')" (parenthesized_expression "(*pcVar3 == 'o')" (( "(") (binary_expression "*pcVar3 == 'o'" (pointer_expression "*pcVar3" (* "*") (identifier "pcVar3")) (== "==") (char_literal "'o'" (' "'") (character "o") (' "'"))) () ")")) (&& "&&") (parenthesized_expression "(pcVar3[1] == 'n')" (( "(") (binary_expression "pcVar3[1] == 'n'" (subscript_expression "pcVar3[1]" (identifier "pcVar3") ([ "[") (number_literal "1") (] "]")) (== "==") (char_literal "'n'" (' "'") (character "n") (' "'"))) () ")"))) () ")")) (compound_statement "{\n      DAT_00151450 = (uint)(pcVar3[2] == '\0');\n    }" ({ "{") (expression_statement "DAT_00151450 = (uint)(pcVar3[2] == '\0');" (assignment_expression "DAT_00151450 = (uint)(pcVar3[2] == '\0')" (identifier "DAT_00151450") (= "=") (call_expression "(uint)(pcVar3[2] == '\0')" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(pcVar3[2] == '\0')" (( "(") (binary_expression "pcVar3[2] == '\0'" (subscript_expression "pcVar3[2]" (identifier "pcVar3") ([ "[") (number_literal "2") (] "]")) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")))) (; ";")) (} "}"))) (if_statement "if (DAT_001514d4 != (undefined4 *)0x0) {\n      free(DAT_001514d4);\n      DAT_001514d4 = (undefined4 *)0x0;\n    }" (if "if") (parenthesized_expression "(DAT_001514d4 != (undefined4 *)0x0)" (( "(") (binary_expression "DAT_001514d4 != (undefined4 *)0x0" (identifier "DAT_001514d4") (!= "!=") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n      free(DAT_001514d4);\n      DAT_001514d4 = (undefined4 *)0x0;\n    }" ({ "{") (expression_statement "free(DAT_001514d4);" (call_expression "free(DAT_001514d4)" (identifier "free") (argument_list "(DAT_001514d4)" (( "(") (identifier "DAT_001514d4") () ")"))) (; ";")) (expression_statement "DAT_001514d4 = (undefined4 *)0x0;" (assignment_expression "DAT_001514d4 = (undefined4 *)0x0" (identifier "DAT_001514d4") (= "=") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (} "}"))) (expression_statement "DAT_0015144c = FUN_0008cd10();" (assignment_expression "DAT_0015144c = FUN_0008cd10()" (identifier "DAT_0015144c") (= "=") (call_expression "FUN_0008cd10()" (identifier "FUN_0008cd10") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if ((DAT_0015144c == 0) && (iVar2 = absolute_program(param_1), iVar2 == 0)) {\n      sVar4 = strlen(param_1);\n      pcVar3 = (char *)xmalloc(sVar4 + 1);\n      pcVar3 = strcpy(pcVar3,param_1);\n      DAT_00151464 = pcVar3;\n      DAT_00151468 = pcVar3;\n      DAT_00151444 = strlen(pcVar3);\n      if ((rl_completion_found_quote != 0) && (rl_completion_quote_character == 0)) {\n        DAT_00151468 = (char *)FUN_00089940(pcVar3,0);\n      }\n      DAT_00151434 = get_string_value("PATH");\n      DAT_001514ec = 0;\n      DAT_00151430 = 0;\n      DAT_0015142c = 0;\n      if (DAT_00151428 != (void *)0x0) {\n        free(DAT_00151428);\n      }\n      DAT_00151428 = (void *)all_visible_functions();\n      if (DAT_00151424 != (void *)0x0) {\n        free(DAT_00151424);\n      }\n      DAT_00151424 = (void *)all_aliases();\n      goto LAB_0008d390;\n    }" (if "if") (parenthesized_expression "((DAT_0015144c == 0) && (iVar2 = absolute_program(param_1), iVar2 == 0))" (( "(") (binary_expression "(DAT_0015144c == 0) && (iVar2 = absolute_program(param_1), iVar2 == 0)" (parenthesized_expression "(DAT_0015144c == 0)" (( "(") (binary_expression "DAT_0015144c == 0" (identifier "DAT_0015144c") (== "==") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(iVar2 = absolute_program(param_1), iVar2 == 0)" (( "(") (comma_expression "iVar2 = absolute_program(param_1), iVar2 == 0" (assignment_expression "iVar2 = absolute_program(param_1)" (identifier "iVar2") (= "=") (call_expression "absolute_program(param_1)" (identifier "absolute_program") (argument_list "(param_1)" (( "(") (identifier "param_1") () ")")))) (, ",") (binary_expression "iVar2 == 0" (identifier "iVar2") (== "==") (number_literal "0"))) () ")"))) () ")")) (compound_statement "{\n      sVar4 = strlen(param_1);\n      pcVar3 = (char *)xmalloc(sVar4 + 1);\n      pcVar3 = strcpy(pcVar3,param_1);\n      DAT_00151464 = pcVar3;\n      DAT_00151468 = pcVar3;\n      DAT_00151444 = strlen(pcVar3);\n      if ((rl_completion_found_quote != 0) && (rl_completion_quote_character == 0)) {\n        DAT_00151468 = (char *)FUN_00089940(pcVar3,0);\n      }\n      DAT_00151434 = get_string_value("PATH");\n      DAT_001514ec = 0;\n      DAT_00151430 = 0;\n      DAT_0015142c = 0;\n      if (DAT_00151428 != (void *)0x0) {\n        free(DAT_00151428);\n      }\n      DAT_00151428 = (void *)all_visible_functions();\n      if (DAT_00151424 != (void *)0x0) {\n        free(DAT_00151424);\n      }\n      DAT_00151424 = (void *)all_aliases();\n      goto LAB_0008d390;\n    }" ({ "{") (expression_statement "sVar4 = strlen(param_1);" (assignment_expression "sVar4 = strlen(param_1)" (identifier "sVar4") (= "=") (call_expression "strlen(param_1)" (identifier "strlen") (argument_list "(param_1)" (( "(") (identifier "param_1") () ")")))) (; ";")) (expression_statement "pcVar3 = (char *)xmalloc(sVar4 + 1);" (assignment_expression "pcVar3 = (char *)xmalloc(sVar4 + 1)" (identifier "pcVar3") (= "=") (cast_expression "(char *)xmalloc(sVar4 + 1)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "xmalloc(sVar4 + 1)" (identifier "xmalloc") (argument_list "(sVar4 + 1)" (( "(") (binary_expression "sVar4 + 1" (identifier "sVar4") (+ "+") (number_literal "1")) () ")"))))) (; ";")) (expression_statement "pcVar3 = strcpy(pcVar3,param_1);" (assignment_expression "pcVar3 = strcpy(pcVar3,param_1)" (identifier "pcVar3") (= "=") (call_expression "strcpy(pcVar3,param_1)" (identifier "strcpy") (argument_list "(pcVar3,param_1)" (( "(") (identifier "pcVar3") (, ",") (identifier "param_1") () ")")))) (; ";")) (expression_statement "DAT_00151464 = pcVar3;" (assignment_expression "DAT_00151464 = pcVar3" (identifier "DAT_00151464") (= "=") (identifier "pcVar3")) (; ";")) (expression_statement "DAT_00151468 = pcVar3;" (assignment_expression "DAT_00151468 = pcVar3" (identifier "DAT_00151468") (= "=") (identifier "pcVar3")) (; ";")) (expression_statement "DAT_00151444 = strlen(pcVar3);" (assignment_expression "DAT_00151444 = strlen(pcVar3)" (identifier "DAT_00151444") (= "=") (call_expression "strlen(pcVar3)" (identifier "strlen") (argument_list "(pcVar3)" (( "(") (identifier "pcVar3") () ")")))) (; ";")) (if_statement "if ((rl_completion_found_quote != 0) && (rl_completion_quote_character == 0)) {\n        DAT_00151468 = (char *)FUN_00089940(pcVar3,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_00151468 = (char *)FUN_00089940(pcVar3,0);\n      }" ({ "{") (expression_statement "DAT_00151468 = (char *)FUN_00089940(pcVar3,0);" (assignment_expression "DAT_00151468 = (char *)FUN_00089940(pcVar3,0)" (identifier "DAT_00151468") (= "=") (cast_expression "(char *)FUN_00089940(pcVar3,0)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00089940(pcVar3,0)" (identifier "FUN_00089940") (argument_list "(pcVar3,0)" (( "(") (identifier "pcVar3") (, ",") (number_literal "0") () ")"))))) (; ";")) (} "}"))) (expression_statement "DAT_00151434 = get_string_value("PATH");" (assignment_expression "DAT_00151434 = get_string_value("PATH")" (identifier "DAT_00151434") (= "=") (call_expression "get_string_value("PATH")" (identifier "get_string_value") (argument_list "("PATH")" (( "(") (string_literal ""PATH"" (" """) (string_content "PATH") (" """)) () ")")))) (; ";")) (expression_statement "DAT_001514ec = 0;" (assignment_expression "DAT_001514ec = 0" (identifier "DAT_001514ec") (= "=") (number_literal "0")) (; ";")) (expression_statement "DAT_00151430 = 0;" (assignment_expression "DAT_00151430 = 0" (identifier "DAT_00151430") (= "=") (number_literal "0")) (; ";")) (expression_statement "DAT_0015142c = 0;" (assignment_expression "DAT_0015142c = 0" (identifier "DAT_0015142c") (= "=") (number_literal "0")) (; ";")) (if_statement "if (DAT_00151428 != (void *)0x0) {\n        free(DAT_00151428);\n      }" (if "if") (parenthesized_expression "(DAT_00151428 != (void *)0x0)" (( "(") (binary_expression "DAT_00151428 != (void *)0x0" (identifier "DAT_00151428") (!= "!=") (cast_expression "(void *)0x0" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n        free(DAT_00151428);\n      }" ({ "{") (expression_statement "free(DAT_00151428);" (call_expression "free(DAT_00151428)" (identifier "free") (argument_list "(DAT_00151428)" (( "(") (identifier "DAT_00151428") () ")"))) (; ";")) (} "}"))) (expression_statement "DAT_00151428 = (void *)all_visible_functions();" (assignment_expression "DAT_00151428 = (void *)all_visible_functions()" (identifier "DAT_00151428") (= "=") (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_00151424 != (void *)0x0) {\n        free(DAT_00151424);\n      }" (if "if") (parenthesized_expression "(DAT_00151424 != (void *)0x0)" (( "(") (binary_expression "DAT_00151424 != (void *)0x0" (identifier "DAT_00151424") (!= "!=") (cast_expression "(void *)0x0" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n        free(DAT_00151424);\n      }" ({ "{") (expression_statement "free(DAT_00151424);" (call_expression "free(DAT_00151424)" (identifier "free") (argument_list "(DAT_00151424)" (( "(") (identifier "DAT_00151424") () ")"))) (; ";")) (} "}"))) (expression_statement "DAT_00151424 = (void *)all_aliases();" (assignment_expression "DAT_00151424 = (void *)all_aliases()" (identifier "DAT_00151424") (= "=") (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_0008d390;" (goto "goto") (statement_identifier "LAB_0008d390") (; ";")) (} "}"))) (if_statement "if (*param_1 == '~') {\n      DAT_00151464 = (char *)bash_tilde_expand(param_1,0);\n      sVar4 = strlen(param_1);\n      pcVar3 = (char *)xmalloc(sVar4 + 1);\n      pcVar3 = strcpy(pcVar3,param_1);\n      DAT_00151448 = pcVar3;\n      pcVar5 = strchr(pcVar3,0x2f);\n      if (pcVar5 == (char *)0x0) {\n        free(pcVar3);\n        DAT_00151448 = (char *)0x0;\n      }\n      else {\n        *pcVar5 = '\0';\n      }\n    }\n    else {\n      sVar4 = strlen(param_1);\n      if (dircomplete_expand == 0) {\n        pcVar3 = (char *)xmalloc(sVar4 + 1);\n        DAT_00151464 = strcpy(pcVar3,param_1);\n      }\n      else {\n        pcVar3 = (char *)xmalloc(sVar4 + 1);\n        DAT_00151464 = strcpy(pcVar3,param_1);\n        FUN_0008c7b0(&DAT_00151464);\n      }\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_00151464 = (char *)bash_tilde_expand(param_1,0);\n      sVar4 = strlen(param_1);\n      pcVar3 = (char *)xmalloc(sVar4 + 1);\n      pcVar3 = strcpy(pcVar3,param_1);\n      DAT_00151448 = pcVar3;\n      pcVar5 = strchr(pcVar3,0x2f);\n      if (pcVar5 == (char *)0x0) {\n        free(pcVar3);\n        DAT_00151448 = (char *)0x0;\n      }\n      else {\n        *pcVar5 = '\0';\n      }\n    }" ({ "{") (expression_statement "DAT_00151464 = (char *)bash_tilde_expand(param_1,0);" (assignment_expression "DAT_00151464 = (char *)bash_tilde_expand(param_1,0)" (identifier "DAT_00151464") (= "=") (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 "sVar4 = strlen(param_1);" (assignment_expression "sVar4 = strlen(param_1)" (identifier "sVar4") (= "=") (call_expression "strlen(param_1)" (identifier "strlen") (argument_list "(param_1)" (( "(") (identifier "param_1") () ")")))) (; ";")) (expression_statement "pcVar3 = (char *)xmalloc(sVar4 + 1);" (assignment_expression "pcVar3 = (char *)xmalloc(sVar4 + 1)" (identifier "pcVar3") (= "=") (cast_expression "(char *)xmalloc(sVar4 + 1)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "xmalloc(sVar4 + 1)" (identifier "xmalloc") (argument_list "(sVar4 + 1)" (( "(") (binary_expression "sVar4 + 1" (identifier "sVar4") (+ "+") (number_literal "1")) () ")"))))) (; ";")) (expression_statement "pcVar3 = strcpy(pcVar3,param_1);" (assignment_expression "pcVar3 = strcpy(pcVar3,param_1)" (identifier "pcVar3") (= "=") (call_expression "strcpy(pcVar3,param_1)" (identifier "strcpy") (argument_list "(pcVar3,param_1)" (( "(") (identifier "pcVar3") (, ",") (identifier "param_1") () ")")))) (; ";")) (expression_statement "DAT_00151448 = pcVar3;" (assignment_expression "DAT_00151448 = pcVar3" (identifier "DAT_00151448") (= "=") (identifier "pcVar3")) (; ";")) (expression_statement "pcVar5 = strchr(pcVar3,0x2f);" (assignment_expression "pcVar5 = strchr(pcVar3,0x2f)" (identifier "pcVar5") (= "=") (call_expression "strchr(pcVar3,0x2f)" (identifier "strchr") (argument_list "(pcVar3,0x2f)" (( "(") (identifier "pcVar3") (, ",") (number_literal "0x2f") () ")")))) (; ";")) (if_statement "if (pcVar5 == (char *)0x0) {\n        free(pcVar3);\n        DAT_00151448 = (char *)0x0;\n      }\n      else {\n        *pcVar5 = '\0';\n      }" (if "if") (parenthesized_expression "(pcVar5 == (char *)0x0)" (( "(") (binary_expression "pcVar5 == (char *)0x0" (identifier "pcVar5") (== "==") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n        free(pcVar3);\n        DAT_00151448 = (char *)0x0;\n      }" ({ "{") (expression_statement "free(pcVar3);" (call_expression "free(pcVar3)" (identifier "free") (argument_list "(pcVar3)" (( "(") (identifier "pcVar3") () ")"))) (; ";")) (expression_statement "DAT_00151448 = (char *)0x0;" (assignment_expression "DAT_00151448 = (char *)0x0" (identifier "DAT_00151448") (= "=") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (} "}")) (else_clause "else {\n        *pcVar5 = '\0';\n      }" (else "else") (compound_statement "{\n        *pcVar5 = '\0';\n      }" ({ "{") (expression_statement "*pcVar5 = '\0';" (assignment_expression "*pcVar5 = '\0'" (pointer_expression "*pcVar5" (* "*") (identifier "pcVar5")) (= "=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) (; ";")) (} "}")))) (} "}")) (else_clause "else {\n      sVar4 = strlen(param_1);\n      if (dircomplete_expand == 0) {\n        pcVar3 = (char *)xmalloc(sVar4 + 1);\n        DAT_00151464 = strcpy(pcVar3,param_1);\n      }\n      else {\n        pcVar3 = (char *)xmalloc(sVar4 + 1);\n        DAT_00151464 = strcpy(pcVar3,param_1);\n        FUN_0008c7b0(&DAT_00151464);\n      }\n    }" (else "else") (compound_statement "{\n      sVar4 = strlen(param_1);\n      if (dircomplete_expand == 0) {\n        pcVar3 = (char *)xmalloc(sVar4 + 1);\n        DAT_00151464 = strcpy(pcVar3,param_1);\n      }\n      else {\n        pcVar3 = (char *)xmalloc(sVar4 + 1);\n        DAT_00151464 = strcpy(pcVar3,param_1);\n        FUN_0008c7b0(&DAT_00151464);\n      }\n    }" ({ "{") (expression_statement "sVar4 = strlen(param_1);" (assignment_expression "sVar4 = strlen(param_1)" (identifier "sVar4") (= "=") (call_expression "strlen(param_1)" (identifier "strlen") (argument_list "(param_1)" (( "(") (identifier "param_1") () ")")))) (; ";")) (if_statement "if (dircomplete_expand == 0) {\n        pcVar3 = (char *)xmalloc(sVar4 + 1);\n        DAT_00151464 = strcpy(pcVar3,param_1);\n      }\n      else {\n        pcVar3 = (char *)xmalloc(sVar4 + 1);\n        DAT_00151464 = strcpy(pcVar3,param_1);\n        FUN_0008c7b0(&DAT_00151464);\n      }" (if "if") (parenthesized_expression "(dircomplete_expand == 0)" (( "(") (binary_expression "dircomplete_expand == 0" (identifier "dircomplete_expand") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        pcVar3 = (char *)xmalloc(sVar4 + 1);\n        DAT_00151464 = strcpy(pcVar3,param_1);\n      }" ({ "{") (expression_statement "pcVar3 = (char *)xmalloc(sVar4 + 1);" (assignment_expression "pcVar3 = (char *)xmalloc(sVar4 + 1)" (identifier "pcVar3") (= "=") (cast_expression "(char *)xmalloc(sVar4 + 1)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "xmalloc(sVar4 + 1)" (identifier "xmalloc") (argument_list "(sVar4 + 1)" (( "(") (binary_expression "sVar4 + 1" (identifier "sVar4") (+ "+") (number_literal "1")) () ")"))))) (; ";")) (expression_statement "DAT_00151464 = strcpy(pcVar3,param_1);" (assignment_expression "DAT_00151464 = strcpy(pcVar3,param_1)" (identifier "DAT_00151464") (= "=") (call_expression "strcpy(pcVar3,param_1)" (identifier "strcpy") (argument_list "(pcVar3,param_1)" (( "(") (identifier "pcVar3") (, ",") (identifier "param_1") () ")")))) (; ";")) (} "}")) (else_clause "else {\n        pcVar3 = (char *)xmalloc(sVar4 + 1);\n        DAT_00151464 = strcpy(pcVar3,param_1);\n        FUN_0008c7b0(&DAT_00151464);\n      }" (else "else") (compound_statement "{\n        pcVar3 = (char *)xmalloc(sVar4 + 1);\n        DAT_00151464 = strcpy(pcVar3,param_1);\n        FUN_0008c7b0(&DAT_00151464);\n      }" ({ "{") (expression_statement "pcVar3 = (char *)xmalloc(sVar4 + 1);" (assignment_expression "pcVar3 = (char *)xmalloc(sVar4 + 1)" (identifier "pcVar3") (= "=") (cast_expression "(char *)xmalloc(sVar4 + 1)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "xmalloc(sVar4 + 1)" (identifier "xmalloc") (argument_list "(sVar4 + 1)" (( "(") (binary_expression "sVar4 + 1" (identifier "sVar4") (+ "+") (number_literal "1")) () ")"))))) (; ";")) (expression_statement "DAT_00151464 = strcpy(pcVar3,param_1);" (assignment_expression "DAT_00151464 = strcpy(pcVar3,param_1)" (identifier "DAT_00151464") (= "=") (call_expression "strcpy(pcVar3,param_1)" (identifier "strcpy") (argument_list "(pcVar3,param_1)" (( "(") (identifier "pcVar3") (, ",") (identifier "param_1") () ")")))) (; ";")) (expression_statement "FUN_0008c7b0(&DAT_00151464);" (call_expression "FUN_0008c7b0(&DAT_00151464)" (identifier "FUN_0008c7b0") (argument_list "(&DAT_00151464)" (( "(") (pointer_expression "&DAT_00151464" (& "&") (identifier "DAT_00151464")) () ")"))) (; ";")) (} "}")))) (} "}")))) (expression_statement "DAT_00151468 = DAT_00151464;" (assignment_expression "DAT_00151468 = DAT_00151464" (identifier "DAT_00151468") (= "=") (identifier "DAT_00151464")) (; ";")) (if_statement "if ((rl_completion_found_quote != 0) && (rl_completion_quote_character == 0)) {\n      pcVar3 = (char *)FUN_00089940(DAT_00151464,0);\n      DAT_00151468 = pcVar3;\n      free(DAT_00151464);\n      DAT_00151464 = pcVar3;\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      pcVar3 = (char *)FUN_00089940(DAT_00151464,0);\n      DAT_00151468 = pcVar3;\n      free(DAT_00151464);\n      DAT_00151464 = pcVar3;\n    }" ({ "{") (expression_statement "pcVar3 = (char *)FUN_00089940(DAT_00151464,0);" (assignment_expression "pcVar3 = (char *)FUN_00089940(DAT_00151464,0)" (identifier "pcVar3") (= "=") (cast_expression "(char *)FUN_00089940(DAT_00151464,0)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00089940(DAT_00151464,0)" (identifier "FUN_00089940") (argument_list "(DAT_00151464,0)" (( "(") (identifier "DAT_00151464") (, ",") (number_literal "0") () ")"))))) (; ";")) (expression_statement "DAT_00151468 = pcVar3;" (assignment_expression "DAT_00151468 = pcVar3" (identifier "DAT_00151468") (= "=") (identifier "pcVar3")) (; ";")) (expression_statement "free(DAT_00151464);" (call_expression "free(DAT_00151464)" (identifier "free") (argument_list "(DAT_00151464)" (( "(") (identifier "DAT_00151464") () ")"))) (; ";")) (expression_statement "DAT_00151464 = pcVar3;" (assignment_expression "DAT_00151464 = pcVar3" (identifier "DAT_00151464") (= "=") (identifier "pcVar3")) (; ";")) (} "}"))) (expression_statement "pcVar3 = DAT_00151464;" (assignment_expression "pcVar3 = DAT_00151464" (identifier "pcVar3") (= "=") (identifier "DAT_00151464")) (; ";")) (expression_statement "DAT_00151444 = strlen(DAT_00151464);" (assignment_expression "DAT_00151444 = strlen(DAT_00151464)" (identifier "DAT_00151444") (= "=") (call_expression "strlen(DAT_00151464)" (identifier "strlen") (argument_list "(DAT_00151464)" (( "(") (identifier "DAT_00151464") () ")")))) (; ";")) (if_statement "if (DAT_00151440 != (char *)0x0) {\n      free(DAT_00151440);\n      pcVar3 = DAT_00151464;\n    }" (if "if") (parenthesized_expression "(DAT_00151440 != (char *)0x0)" (( "(") (binary_expression "DAT_00151440 != (char *)0x0" (identifier "DAT_00151440") (!= "!=") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n      free(DAT_00151440);\n      pcVar3 = DAT_00151464;\n    }" ({ "{") (expression_statement "free(DAT_00151440);" (call_expression "free(DAT_00151440)" (identifier "free") (argument_list "(DAT_00151440)" (( "(") (identifier "DAT_00151440") () ")"))) (; ";")) (expression_statement "pcVar3 = DAT_00151464;" (assignment_expression "pcVar3 = DAT_00151464" (identifier "pcVar3") (= "=") (identifier "DAT_00151464")) (; ";")) (} "}"))) (expression_statement "sVar4 = strlen(pcVar3);" (assignment_expression "sVar4 = strlen(pcVar3)" (identifier "sVar4") (= "=") (call_expression "strlen(pcVar3)" (identifier "strlen") (argument_list "(pcVar3)" (( "(") (identifier "pcVar3") () ")")))) (; ";")) (expression_statement "pcVar5 = (char *)xmalloc(sVar4 + 1);" (assignment_expression "pcVar5 = (char *)xmalloc(sVar4 + 1)" (identifier "pcVar5") (= "=") (cast_expression "(char *)xmalloc(sVar4 + 1)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "xmalloc(sVar4 + 1)" (identifier "xmalloc") (argument_list "(sVar4 + 1)" (( "(") (binary_expression "sVar4 + 1" (identifier "sVar4") (+ "+") (number_literal "1")) () ")"))))) (; ";")) (expression_statement "DAT_0015143c = strcpy(pcVar5,pcVar3);" (assignment_expression "DAT_0015143c = strcpy(pcVar5,pcVar3)" (identifier "DAT_0015143c") (= "=") (call_expression "strcpy(pcVar5,pcVar3)" (identifier "strcpy") (argument_list "(pcVar5,pcVar3)" (( "(") (identifier "pcVar5") (, ",") (identifier "pcVar3") () ")")))) (; ";")) (expression_statement "DAT_00151438 = 0;" (assignment_expression "DAT_00151438 = 0" (identifier "DAT_00151438") (= "=") (number_literal "0")) (; ";")) (expression_statement "DAT_00151440 = DAT_0015143c;" (assignment_expression "DAT_00151440 = DAT_0015143c" (identifier "DAT_00151440") (= "=") (identifier "DAT_0015143c")) (; ";")) (if_statement "if (DAT_0015144c == 0) {\n      uVar8 = dircomplete_expand;\n      if ((dircomplete_expand != 0) &&\n         (iVar2 = path_dot_or_dotdot(DAT_0015143c), uVar8 = DAT_00151438, iVar2 != 0)) {\n        dircomplete_expand = 1;\n        rl_directory_rewrite_hook = FUN_0008c7b0;\n        rl_directory_completion_hook = (code *)0x0;\n      }\n      DAT_0015145c = 4;\n      pcVar3 = DAT_0015143c;\n      do {\n        do {\n          while( true ) {\n            DAT_00151454 = (char *)rl_filename_completion_function(pcVar3,uVar8);\n            if ((DAT_0015145c == 4) && (dircomplete_expand != 0)) {\n              rl_directory_completion_hook = FUN_0008c7b0;\n              rl_directory_rewrite_hook = (code *)0x0;\n            }\n            DAT_00151438 = 1;\n            if (DAT_00151454 == (char *)0x0) break;\n            iVar2 = absolute_program(DAT_00151464);\n            pcVar5 = DAT_00151454;\n            if (iVar2 == 0) {\n              pcVar3 = strrchr(DAT_00151454,0x2f);\n              if (pcVar3 != (char *)0x0) {\n                pcVar3 = pcVar3 + 1;\n                if (DAT_00151450 == 0) {\n                  iVar2 = strncmp(pcVar3,DAT_00151464,DAT_00151444);\n                }\n                else {\n                  iVar2 = strncasecmp(pcVar3,DAT_00151464,DAT_00151444);\n                }\n                if (iVar2 == 0) {\n                  sVar4 = strlen(pcVar3);\n                  pcVar5 = (char *)xmalloc(sVar4 + 1);\n                  pcVar3 = strcpy(pcVar5,pcVar3);\n                  goto LAB_0008d6a4;\n                }\n              }\n            }\n            else {\n              if (DAT_00151450 == 0) {\n                iVar2 = strncmp(DAT_00151454,DAT_00151464,DAT_00151444);\n              }\n              else {\n                iVar2 = strncasecmp(DAT_00151454,DAT_00151464,DAT_00151444);\n              }\n              if (*param_1 == '~') {\n                pcVar3 = (char *)FUN_0008a220();\n              }\n              else {\n                sVar4 = strlen(pcVar5);\n                pcVar3 = (char *)xmalloc(sVar4 + 1);\n                pcVar3 = strcpy(pcVar3,pcVar5);\n              }\n              pcVar5 = DAT_00151454;\n              if (iVar2 == 0) {\nLAB_0008d6a4:\n                iVar2 = DAT_00151460;\n                pcVar10 = DAT_00151454;\n                sVar4 = strlen(DAT_00151454);\n                pcVar5 = (char *)xmalloc(sVar4 + 1);\n                local_24 = strcpy(pcVar5,pcVar10);\n                FUN_0008c7b0(&local_24);\n                if (iVar2 == 0) {\n                  iVar2 = executable_or_directory(local_24);\n                }\n                else {\n                  iVar2 = executable_file(local_24);\n                }\n                free(local_24);\n                pcVar5 = DAT_00151454;\n                if (iVar2 != 0) {\n                  if (pcVar10 != DAT_00151454) {\n                    free(pcVar10);\n                  }\n                  free(pcVar5);\n                  DAT_00151454 = "";\n                  goto LAB_0008d5c8;\n                }\n                free(pcVar3);\n                if (pcVar10 != pcVar5) {\n                  free(pcVar10);\n                }\n              }\n              else {\n                free(pcVar3);\n              }\n            }\n            free(pcVar5);\n            uVar8 = DAT_00151438;\n            pcVar3 = DAT_0015143c;\n          }\n          iVar2 = absolute_program(DAT_00151464);\n          if (iVar2 != 0) goto LAB_0008dac4;\nLAB_0008d5f6:\n          uVar8 = (uint)(DAT_00151454 != (char *)0x0);\n          pcVar3 = DAT_0015143c;\n          DAT_00151438 = uVar8;\n        } while (DAT_00151454 != (char *)0x0);\n        if (((DAT_00151434 == 0) || (*(char *)(DAT_00151434 + DAT_00151430) == '\0')) ||\n           (pcVar3 = (char *)extract_colon_unit(DAT_00151434,&DAT_00151430), pcVar3 == (char *)0x0))\n        goto LAB_0008dac4;\n        DAT_00151460 = 1;\n        cVar11 = *pcVar3;\n        if (cVar11 == '\0') {\n          free(pcVar3);\n          pcVar3 = (char *)xmalloc(2);\n          pcVar3[0] = '.';\n          pcVar3[1] = '\0';\n          cVar11 = '.';\n        }\n        pcVar5 = pcVar3;\n        if (cVar11 == '~') {\n          pcVar5 = (char *)bash_tilde_expand(pcVar3,0);\n          free(pcVar3);\n          cVar11 = *pcVar5;\n        }\n        pcVar3 = DAT_00151440;\n        if ((cVar11 == '.') && (pcVar5[1] == '\0')) {\n          DAT_001514ec = 1;\n        }\n        if (DAT_0015143c == (char *)0x0) {\nLAB_0008dbfe:\n          if (pcVar3 != (char *)0x0) goto LAB_0008de5f;\n        }\n        else {\n          if (DAT_0015143c != DAT_00151440) {\n            free(DAT_0015143c);\n            goto LAB_0008dbfe;\n          }\nLAB_0008de5f:\n          free(pcVar3);\n        }\n        pcVar3 = (char *)sh_makepath(pcVar5,DAT_00151464,0);\n        DAT_00151440 = pcVar3;\n        pcVar10 = strpbrk(pcVar3,"\"\'\\");\n        if (pcVar10 != (char *)0x0) {\n          pcVar3 = (char *)sh_backslash_quote(pcVar3,&DAT_00151500,0);\n        }\n        DAT_0015143c = pcVar3;\n        free(pcVar5);\n        uVar8 = DAT_00151438;\n      } while( true );\n    }" (if "if") (parenthesized_expression "(DAT_0015144c == 0)" (( "(") (binary_expression "DAT_0015144c == 0" (identifier "DAT_0015144c") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      uVar8 = dircomplete_expand;\n      if ((dircomplete_expand != 0) &&\n         (iVar2 = path_dot_or_dotdot(DAT_0015143c), uVar8 = DAT_00151438, iVar2 != 0)) {\n        dircomplete_expand = 1;\n        rl_directory_rewrite_hook = FUN_0008c7b0;\n        rl_directory_completion_hook = (code *)0x0;\n      }\n      DAT_0015145c = 4;\n      pcVar3 = DAT_0015143c;\n      do {\n        do {\n          while( true ) {\n            DAT_00151454 = (char *)rl_filename_completion_function(pcVar3,uVar8);\n            if ((DAT_0015145c == 4) && (dircomplete_expand != 0)) {\n              rl_directory_completion_hook = FUN_0008c7b0;\n              rl_directory_rewrite_hook = (code *)0x0;\n            }\n            DAT_00151438 = 1;\n            if (DAT_00151454 == (char *)0x0) break;\n            iVar2 = absolute_program(DAT_00151464);\n            pcVar5 = DAT_00151454;\n            if (iVar2 == 0) {\n              pcVar3 = strrchr(DAT_00151454,0x2f);\n              if (pcVar3 != (char *)0x0) {\n                pcVar3 = pcVar3 + 1;\n                if (DAT_00151450 == 0) {\n                  iVar2 = strncmp(pcVar3,DAT_00151464,DAT_00151444);\n                }\n                else {\n                  iVar2 = strncasecmp(pcVar3,DAT_00151464,DAT_00151444);\n                }\n                if (iVar2 == 0) {\n                  sVar4 = strlen(pcVar3);\n                  pcVar5 = (char *)xmalloc(sVar4 + 1);\n                  pcVar3 = strcpy(pcVar5,pcVar3);\n                  goto LAB_0008d6a4;\n                }\n              }\n            }\n            else {\n              if (DAT_00151450 == 0) {\n                iVar2 = strncmp(DAT_00151454,DAT_00151464,DAT_00151444);\n              }\n              else {\n                iVar2 = strncasecmp(DAT_00151454,DAT_00151464,DAT_00151444);\n              }\n              if (*param_1 == '~') {\n                pcVar3 = (char *)FUN_0008a220();\n              }\n              else {\n                sVar4 = strlen(pcVar5);\n                pcVar3 = (char *)xmalloc(sVar4 + 1);\n                pcVar3 = strcpy(pcVar3,pcVar5);\n              }\n              pcVar5 = DAT_00151454;\n              if (iVar2 == 0) {\nLAB_0008d6a4:\n                iVar2 = DAT_00151460;\n                pcVar10 = DAT_00151454;\n                sVar4 = strlen(DAT_00151454);\n                pcVar5 = (char *)xmalloc(sVar4 + 1);\n                local_24 = strcpy(pcVar5,pcVar10);\n                FUN_0008c7b0(&local_24);\n                if (iVar2 == 0) {\n                  iVar2 = executable_or_directory(local_24);\n                }\n                else {\n                  iVar2 = executable_file(local_24);\n                }\n                free(local_24);\n                pcVar5 = DAT_00151454;\n                if (iVar2 != 0) {\n                  if (pcVar10 != DAT_00151454) {\n                    free(pcVar10);\n                  }\n                  free(pcVar5);\n                  DAT_00151454 = "";\n                  goto LAB_0008d5c8;\n                }\n                free(pcVar3);\n                if (pcVar10 != pcVar5) {\n                  free(pcVar10);\n                }\n              }\n              else {\n                free(pcVar3);\n              }\n            }\n            free(pcVar5);\n            uVar8 = DAT_00151438;\n            pcVar3 = DAT_0015143c;\n          }\n          iVar2 = absolute_program(DAT_00151464);\n          if (iVar2 != 0) goto LAB_0008dac4;\nLAB_0008d5f6:\n          uVar8 = (uint)(DAT_00151454 != (char *)0x0);\n          pcVar3 = DAT_0015143c;\n          DAT_00151438 = uVar8;\n        } while (DAT_00151454 != (char *)0x0);\n        if (((DAT_00151434 == 0) || (*(char *)(DAT_00151434 + DAT_00151430) == '\0')) ||\n           (pcVar3 = (char *)extract_colon_unit(DAT_00151434,&DAT_00151430), pcVar3 == (char *)0x0))\n        goto LAB_0008dac4;\n        DAT_00151460 = 1;\n        cVar11 = *pcVar3;\n        if (cVar11 == '\0') {\n          free(pcVar3);\n          pcVar3 = (char *)xmalloc(2);\n          pcVar3[0] = '.';\n          pcVar3[1] = '\0';\n          cVar11 = '.';\n        }\n        pcVar5 = pcVar3;\n        if (cVar11 == '~') {\n          pcVar5 = (char *)bash_tilde_expand(pcVar3,0);\n          free(pcVar3);\n          cVar11 = *pcVar5;\n        }\n        pcVar3 = DAT_00151440;\n        if ((cVar11 == '.') && (pcVar5[1] == '\0')) {\n          DAT_001514ec = 1;\n        }\n        if (DAT_0015143c == (char *)0x0) {\nLAB_0008dbfe:\n          if (pcVar3 != (char *)0x0) goto LAB_0008de5f;\n        }\n        else {\n          if (DAT_0015143c != DAT_00151440) {\n            free(DAT_0015143c);\n            goto LAB_0008dbfe;\n          }\nLAB_0008de5f:\n          free(pcVar3);\n        }\n        pcVar3 = (char *)sh_makepath(pcVar5,DAT_00151464,0);\n        DAT_00151440 = pcVar3;\n        pcVar10 = strpbrk(pcVar3,"\"\'\\");\n        if (pcVar10 != (char *)0x0) {\n          pcVar3 = (char *)sh_backslash_quote(pcVar3,&DAT_00151500,0);\n        }\n        DAT_0015143c = pcVar3;\n        free(pcVar5);\n        uVar8 = DAT_00151438;\n      } while( true );\n    }" ({ "{") (expression_statement "uVar8 = dircomplete_expand;" (assignment_expression "uVar8 = dircomplete_expand" (identifier "uVar8") (= "=") (identifier "dircomplete_expand")) (; ";")) (if_statement "if ((dircomplete_expand != 0) &&\n         (iVar2 = path_dot_or_dotdot(DAT_0015143c), uVar8 = DAT_00151438, iVar2 != 0)) {\n        dircomplete_expand = 1;\n        rl_directory_rewrite_hook = FUN_0008c7b0;\n        rl_directory_completion_hook = (code *)0x0;\n      }" (if "if") (parenthesized_expression "((dircomplete_expand != 0) &&\n         (iVar2 = path_dot_or_dotdot(DAT_0015143c), uVar8 = DAT_00151438, iVar2 != 0))" (( "(") (binary_expression "(dircomplete_expand != 0) &&\n         (iVar2 = path_dot_or_dotdot(DAT_0015143c), uVar8 = DAT_00151438, iVar2 != 0)" (parenthesized_expression "(dircomplete_expand != 0)" (( "(") (binary_expression "dircomplete_expand != 0" (identifier "dircomplete_expand") (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(iVar2 = path_dot_or_dotdot(DAT_0015143c), uVar8 = DAT_00151438, iVar2 != 0)" (( "(") (comma_expression "iVar2 = path_dot_or_dotdot(DAT_0015143c), uVar8 = DAT_00151438, iVar2 != 0" (assignment_expression "iVar2 = path_dot_or_dotdot(DAT_0015143c)" (identifier "iVar2") (= "=") (call_expression "path_dot_or_dotdot(DAT_0015143c)" (identifier "path_dot_or_dotdot") (argument_list "(DAT_0015143c)" (( "(") (identifier "DAT_0015143c") () ")")))) (, ",") (comma_expression "uVar8 = DAT_00151438, iVar2 != 0" (assignment_expression "uVar8 = DAT_00151438" (identifier "uVar8") (= "=") (identifier "DAT_00151438")) (, ",") (binary_expression "iVar2 != 0" (identifier "iVar2") (!= "!=") (number_literal "0")))) () ")"))) () ")")) (compound_statement "{\n        dircomplete_expand = 1;\n        rl_directory_rewrite_hook = FUN_0008c7b0;\n        rl_directory_completion_hook = (code *)0x0;\n      }" ({ "{") (expression_statement "dircomplete_expand = 1;" (assignment_expression "dircomplete_expand = 1" (identifier "dircomplete_expand") (= "=") (number_literal "1")) (; ";")) (expression_statement "rl_directory_rewrite_hook = FUN_0008c7b0;" (assignment_expression "rl_directory_rewrite_hook = FUN_0008c7b0" (identifier "rl_directory_rewrite_hook") (= "=") (identifier "FUN_0008c7b0")) (; ";")) (expression_statement "rl_directory_completion_hook = (code *)0x0;" (assignment_expression "rl_directory_completion_hook = (code *)0x0" (identifier "rl_directory_completion_hook") (= "=") (cast_expression "(code *)0x0" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (} "}"))) (expression_statement "DAT_0015145c = 4;" (assignment_expression "DAT_0015145c = 4" (identifier "DAT_0015145c") (= "=") (number_literal "4")) (; ";")) (expression_statement "pcVar3 = DAT_0015143c;" (assignment_expression "pcVar3 = DAT_0015143c" (identifier "pcVar3") (= "=") (identifier "DAT_0015143c")) (; ";")) (do_statement "do {\n        do {\n          while( true ) {\n            DAT_00151454 = (char *)rl_filename_completion_function(pcVar3,uVar8);\n            if ((DAT_0015145c == 4) && (dircomplete_expand != 0)) {\n              rl_directory_completion_hook = FUN_0008c7b0;\n              rl_directory_rewrite_hook = (code *)0x0;\n            }\n            DAT_00151438 = 1;\n            if (DAT_00151454 == (char *)0x0) break;\n            iVar2 = absolute_program(DAT_00151464);\n            pcVar5 = DAT_00151454;\n            if (iVar2 == 0) {\n              pcVar3 = strrchr(DAT_00151454,0x2f);\n              if (pcVar3 != (char *)0x0) {\n                pcVar3 = pcVar3 + 1;\n                if (DAT_00151450 == 0) {\n                  iVar2 = strncmp(pcVar3,DAT_00151464,DAT_00151444);\n                }\n                else {\n                  iVar2 = strncasecmp(pcVar3,DAT_00151464,DAT_00151444);\n                }\n                if (iVar2 == 0) {\n                  sVar4 = strlen(pcVar3);\n                  pcVar5 = (char *)xmalloc(sVar4 + 1);\n                  pcVar3 = strcpy(pcVar5,pcVar3);\n                  goto LAB_0008d6a4;\n                }\n              }\n            }\n            else {\n              if (DAT_00151450 == 0) {\n                iVar2 = strncmp(DAT_00151454,DAT_00151464,DAT_00151444);\n              }\n              else {\n                iVar2 = strncasecmp(DAT_00151454,DAT_00151464,DAT_00151444);\n              }\n              if (*param_1 == '~') {\n                pcVar3 = (char *)FUN_0008a220();\n              }\n              else {\n                sVar4 = strlen(pcVar5);\n                pcVar3 = (char *)xmalloc(sVar4 + 1);\n                pcVar3 = strcpy(pcVar3,pcVar5);\n              }\n              pcVar5 = DAT_00151454;\n              if (iVar2 == 0) {\nLAB_0008d6a4:\n                iVar2 = DAT_00151460;\n                pcVar10 = DAT_00151454;\n                sVar4 = strlen(DAT_00151454);\n                pcVar5 = (char *)xmalloc(sVar4 + 1);\n                local_24 = strcpy(pcVar5,pcVar10);\n                FUN_0008c7b0(&local_24);\n                if (iVar2 == 0) {\n                  iVar2 = executable_or_directory(local_24);\n                }\n                else {\n                  iVar2 = executable_file(local_24);\n                }\n                free(local_24);\n                pcVar5 = DAT_00151454;\n                if (iVar2 != 0) {\n                  if (pcVar10 != DAT_00151454) {\n                    free(pcVar10);\n                  }\n                  free(pcVar5);\n                  DAT_00151454 = "";\n                  goto LAB_0008d5c8;\n                }\n                free(pcVar3);\n                if (pcVar10 != pcVar5) {\n                  free(pcVar10);\n                }\n              }\n              else {\n                free(pcVar3);\n              }\n            }\n            free(pcVar5);\n            uVar8 = DAT_00151438;\n            pcVar3 = DAT_0015143c;\n          }\n          iVar2 = absolute_program(DAT_00151464);\n          if (iVar2 != 0) goto LAB_0008dac4;\nLAB_0008d5f6:\n          uVar8 = (uint)(DAT_00151454 != (char *)0x0);\n          pcVar3 = DAT_0015143c;\n          DAT_00151438 = uVar8;\n        } while (DAT_00151454 != (char *)0x0);\n        if (((DAT_00151434 == 0) || (*(char *)(DAT_00151434 + DAT_00151430) == '\0')) ||\n           (pcVar3 = (char *)extract_colon_unit(DAT_00151434,&DAT_00151430), pcVar3 == (char *)0x0))\n        goto LAB_0008dac4;\n        DAT_00151460 = 1;\n        cVar11 = *pcVar3;\n        if (cVar11 == '\0') {\n          free(pcVar3);\n          pcVar3 = (char *)xmalloc(2);\n          pcVar3[0] = '.';\n          pcVar3[1] = '\0';\n          cVar11 = '.';\n        }\n        pcVar5 = pcVar3;\n        if (cVar11 == '~') {\n          pcVar5 = (char *)bash_tilde_expand(pcVar3,0);\n          free(pcVar3);\n          cVar11 = *pcVar5;\n        }\n        pcVar3 = DAT_00151440;\n        if ((cVar11 == '.') && (pcVar5[1] == '\0')) {\n          DAT_001514ec = 1;\n        }\n        if (DAT_0015143c == (char *)0x0) {\nLAB_0008dbfe:\n          if (pcVar3 != (char *)0x0) goto LAB_0008de5f;\n        }\n        else {\n          if (DAT_0015143c != DAT_00151440) {\n            free(DAT_0015143c);\n            goto LAB_0008dbfe;\n          }\nLAB_0008de5f:\n          free(pcVar3);\n        }\n        pcVar3 = (char *)sh_makepath(pcVar5,DAT_00151464,0);\n        DAT_00151440 = pcVar3;\n        pcVar10 = strpbrk(pcVar3,"\"\'\\");\n        if (pcVar10 != (char *)0x0) {\n          pcVar3 = (char *)sh_backslash_quote(pcVar3,&DAT_00151500,0);\n        }\n        DAT_0015143c = pcVar3;\n        free(pcVar5);\n        uVar8 = DAT_00151438;\n      } while( true );" (do "do") (compound_statement "{\n        do {\n          while( true ) {\n            DAT_00151454 = (char *)rl_filename_completion_function(pcVar3,uVar8);\n            if ((DAT_0015145c == 4) && (dircomplete_expand != 0)) {\n              rl_directory_completion_hook = FUN_0008c7b0;\n              rl_directory_rewrite_hook = (code *)0x0;\n            }\n            DAT_00151438 = 1;\n            if (DAT_00151454 == (char *)0x0) break;\n            iVar2 = absolute_program(DAT_00151464);\n            pcVar5 = DAT_00151454;\n            if (iVar2 == 0) {\n              pcVar3 = strrchr(DAT_00151454,0x2f);\n              if (pcVar3 != (char *)0x0) {\n                pcVar3 = pcVar3 + 1;\n                if (DAT_00151450 == 0) {\n                  iVar2 = strncmp(pcVar3,DAT_00151464,DAT_00151444);\n                }\n                else {\n                  iVar2 = strncasecmp(pcVar3,DAT_00151464,DAT_00151444);\n                }\n                if (iVar2 == 0) {\n                  sVar4 = strlen(pcVar3);\n                  pcVar5 = (char *)xmalloc(sVar4 + 1);\n                  pcVar3 = strcpy(pcVar5,pcVar3);\n                  goto LAB_0008d6a4;\n                }\n              }\n            }\n            else {\n              if (DAT_00151450 == 0) {\n                iVar2 = strncmp(DAT_00151454,DAT_00151464,DAT_00151444);\n              }\n              else {\n                iVar2 = strncasecmp(DAT_00151454,DAT_00151464,DAT_00151444);\n              }\n              if (*param_1 == '~') {\n                pcVar3 = (char *)FUN_0008a220();\n              }\n              else {\n                sVar4 = strlen(pcVar5);\n                pcVar3 = (char *)xmalloc(sVar4 + 1);\n                pcVar3 = strcpy(pcVar3,pcVar5);\n              }\n              pcVar5 = DAT_00151454;\n              if (iVar2 == 0) {\nLAB_0008d6a4:\n                iVar2 = DAT_00151460;\n                pcVar10 = DAT_00151454;\n                sVar4 = strlen(DAT_00151454);\n                pcVar5 = (char *)xmalloc(sVar4 + 1);\n                local_24 = strcpy(pcVar5,pcVar10);\n                FUN_0008c7b0(&local_24);\n                if (iVar2 == 0) {\n                  iVar2 = executable_or_directory(local_24);\n                }\n                else {\n                  iVar2 = executable_file(local_24);\n                }\n                free(local_24);\n                pcVar5 = DAT_00151454;\n                if (iVar2 != 0) {\n                  if (pcVar10 != DAT_00151454) {\n                    free(pcVar10);\n                  }\n                  free(pcVar5);\n                  DAT_00151454 = "";\n                  goto LAB_0008d5c8;\n                }\n                free(pcVar3);\n                if (pcVar10 != pcVar5) {\n                  free(pcVar10);\n                }\n              }\n              else {\n                free(pcVar3);\n              }\n            }\n            free(pcVar5);\n            uVar8 = DAT_00151438;\n            pcVar3 = DAT_0015143c;\n          }\n          iVar2 = absolute_program(DAT_00151464);\n          if (iVar2 != 0) goto LAB_0008dac4;\nLAB_0008d5f6:\n          uVar8 = (uint)(DAT_00151454 != (char *)0x0);\n          pcVar3 = DAT_0015143c;\n          DAT_00151438 = uVar8;\n        } while (DAT_00151454 != (char *)0x0);\n        if (((DAT_00151434 == 0) || (*(char *)(DAT_00151434 + DAT_00151430) == '\0')) ||\n           (pcVar3 = (char *)extract_colon_unit(DAT_00151434,&DAT_00151430), pcVar3 == (char *)0x0))\n        goto LAB_0008dac4;\n        DAT_00151460 = 1;\n        cVar11 = *pcVar3;\n        if (cVar11 == '\0') {\n          free(pcVar3);\n          pcVar3 = (char *)xmalloc(2);\n          pcVar3[0] = '.';\n          pcVar3[1] = '\0';\n          cVar11 = '.';\n        }\n        pcVar5 = pcVar3;\n        if (cVar11 == '~') {\n          pcVar5 = (char *)bash_tilde_expand(pcVar3,0);\n          free(pcVar3);\n          cVar11 = *pcVar5;\n        }\n        pcVar3 = DAT_00151440;\n        if ((cVar11 == '.') && (pcVar5[1] == '\0')) {\n          DAT_001514ec = 1;\n        }\n        if (DAT_0015143c == (char *)0x0) {\nLAB_0008dbfe:\n          if (pcVar3 != (char *)0x0) goto LAB_0008de5f;\n        }\n        else {\n          if (DAT_0015143c != DAT_00151440) {\n            free(DAT_0015143c);\n            goto LAB_0008dbfe;\n          }\nLAB_0008de5f:\n          free(pcVar3);\n        }\n        pcVar3 = (char *)sh_makepath(pcVar5,DAT_00151464,0);\n        DAT_00151440 = pcVar3;\n        pcVar10 = strpbrk(pcVar3,"\"\'\\");\n        if (pcVar10 != (char *)0x0) {\n          pcVar3 = (char *)sh_backslash_quote(pcVar3,&DAT_00151500,0);\n        }\n        DAT_0015143c = pcVar3;\n        free(pcVar5);\n        uVar8 = DAT_00151438;\n      }" ({ "{") (do_statement "do {\n          while( true ) {\n            DAT_00151454 = (char *)rl_filename_completion_function(pcVar3,uVar8);\n            if ((DAT_0015145c == 4) && (dircomplete_expand != 0)) {\n              rl_directory_completion_hook = FUN_0008c7b0;\n              rl_directory_rewrite_hook = (code *)0x0;\n            }\n            DAT_00151438 = 1;\n            if (DAT_00151454 == (char *)0x0) break;\n            iVar2 = absolute_program(DAT_00151464);\n            pcVar5 = DAT_00151454;\n            if (iVar2 == 0) {\n              pcVar3 = strrchr(DAT_00151454,0x2f);\n              if (pcVar3 != (char *)0x0) {\n                pcVar3 = pcVar3 + 1;\n                if (DAT_00151450 == 0) {\n                  iVar2 = strncmp(pcVar3,DAT_00151464,DAT_00151444);\n                }\n                else {\n                  iVar2 = strncasecmp(pcVar3,DAT_00151464,DAT_00151444);\n                }\n                if (iVar2 == 0) {\n                  sVar4 = strlen(pcVar3);\n                  pcVar5 = (char *)xmalloc(sVar4 + 1);\n                  pcVar3 = strcpy(pcVar5,pcVar3);\n                  goto LAB_0008d6a4;\n                }\n              }\n            }\n            else {\n              if (DAT_00151450 == 0) {\n                iVar2 = strncmp(DAT_00151454,DAT_00151464,DAT_00151444);\n              }\n              else {\n                iVar2 = strncasecmp(DAT_00151454,DAT_00151464,DAT_00151444);\n              }\n              if (*param_1 == '~') {\n                pcVar3 = (char *)FUN_0008a220();\n              }\n              else {\n                sVar4 = strlen(pcVar5);\n                pcVar3 = (char *)xmalloc(sVar4 + 1);\n                pcVar3 = strcpy(pcVar3,pcVar5);\n              }\n              pcVar5 = DAT_00151454;\n              if (iVar2 == 0) {\nLAB_0008d6a4:\n                iVar2 = DAT_00151460;\n                pcVar10 = DAT_00151454;\n                sVar4 = strlen(DAT_00151454);\n                pcVar5 = (char *)xmalloc(sVar4 + 1);\n                local_24 = strcpy(pcVar5,pcVar10);\n                FUN_0008c7b0(&local_24);\n                if (iVar2 == 0) {\n                  iVar2 = executable_or_directory(local_24);\n                }\n                else {\n                  iVar2 = executable_file(local_24);\n                }\n                free(local_24);\n                pcVar5 = DAT_00151454;\n                if (iVar2 != 0) {\n                  if (pcVar10 != DAT_00151454) {\n                    free(pcVar10);\n                  }\n                  free(pcVar5);\n                  DAT_00151454 = "";\n                  goto LAB_0008d5c8;\n                }\n                free(pcVar3);\n                if (pcVar10 != pcVar5) {\n                  free(pcVar10);\n                }\n              }\n              else {\n                free(pcVar3);\n              }\n            }\n            free(pcVar5);\n            uVar8 = DAT_00151438;\n            pcVar3 = DAT_0015143c;\n          }\n          iVar2 = absolute_program(DAT_00151464);\n          if (iVar2 != 0) goto LAB_0008dac4;\nLAB_0008d5f6:\n          uVar8 = (uint)(DAT_00151454 != (char *)0x0);\n          pcVar3 = DAT_0015143c;\n          DAT_00151438 = uVar8;\n        } while (DAT_00151454 != (char *)0x0);" (do "do") (compound_statement "{\n          while( true ) {\n            DAT_00151454 = (char *)rl_filename_completion_function(pcVar3,uVar8);\n            if ((DAT_0015145c == 4) && (dircomplete_expand != 0)) {\n              rl_directory_completion_hook = FUN_0008c7b0;\n              rl_directory_rewrite_hook = (code *)0x0;\n            }\n            DAT_00151438 = 1;\n            if (DAT_00151454 == (char *)0x0) break;\n            iVar2 = absolute_program(DAT_00151464);\n            pcVar5 = DAT_00151454;\n            if (iVar2 == 0) {\n              pcVar3 = strrchr(DAT_00151454,0x2f);\n              if (pcVar3 != (char *)0x0) {\n                pcVar3 = pcVar3 + 1;\n                if (DAT_00151450 == 0) {\n                  iVar2 = strncmp(pcVar3,DAT_00151464,DAT_00151444);\n                }\n                else {\n                  iVar2 = strncasecmp(pcVar3,DAT_00151464,DAT_00151444);\n                }\n                if (iVar2 == 0) {\n                  sVar4 = strlen(pcVar3);\n                  pcVar5 = (char *)xmalloc(sVar4 + 1);\n                  pcVar3 = strcpy(pcVar5,pcVar3);\n                  goto LAB_0008d6a4;\n                }\n              }\n            }\n            else {\n              if (DAT_00151450 == 0) {\n                iVar2 = strncmp(DAT_00151454,DAT_00151464,DAT_00151444);\n              }\n              else {\n                iVar2 = strncasecmp(DAT_00151454,DAT_00151464,DAT_00151444);\n              }\n              if (*param_1 == '~') {\n                pcVar3 = (char *)FUN_0008a220();\n              }\n              else {\n                sVar4 = strlen(pcVar5);\n                pcVar3 = (char *)xmalloc(sVar4 + 1);\n                pcVar3 = strcpy(pcVar3,pcVar5);\n              }\n              pcVar5 = DAT_00151454;\n              if (iVar2 == 0) {\nLAB_0008d6a4:\n                iVar2 = DAT_00151460;\n                pcVar10 = DAT_00151454;\n                sVar4 = strlen(DAT_00151454);\n                pcVar5 = (char *)xmalloc(sVar4 + 1);\n                local_24 = strcpy(pcVar5,pcVar10);\n                FUN_0008c7b0(&local_24);\n                if (iVar2 == 0) {\n                  iVar2 = executable_or_directory(local_24);\n                }\n                else {\n                  iVar2 = executable_file(local_24);\n                }\n                free(local_24);\n                pcVar5 = DAT_00151454;\n                if (iVar2 != 0) {\n                  if (pcVar10 != DAT_00151454) {\n                    free(pcVar10);\n                  }\n                  free(pcVar5);\n                  DAT_00151454 = "";\n                  goto LAB_0008d5c8;\n                }\n                free(pcVar3);\n                if (pcVar10 != pcVar5) {\n                  free(pcVar10);\n                }\n              }\n              else {\n                free(pcVar3);\n              }\n            }\n            free(pcVar5);\n            uVar8 = DAT_00151438;\n            pcVar3 = DAT_0015143c;\n          }\n          iVar2 = absolute_program(DAT_00151464);\n          if (iVar2 != 0) goto LAB_0008dac4;\nLAB_0008d5f6:\n          uVar8 = (uint)(DAT_00151454 != (char *)0x0);\n          pcVar3 = DAT_0015143c;\n          DAT_00151438 = uVar8;\n        }" ({ "{") (while_statement "while( true ) {\n            DAT_00151454 = (char *)rl_filename_completion_function(pcVar3,uVar8);\n            if ((DAT_0015145c == 4) && (dircomplete_expand != 0)) {\n              rl_directory_completion_hook = FUN_0008c7b0;\n              rl_directory_rewrite_hook = (code *)0x0;\n            }\n            DAT_00151438 = 1;\n            if (DAT_00151454 == (char *)0x0) break;\n            iVar2 = absolute_program(DAT_00151464);\n            pcVar5 = DAT_00151454;\n            if (iVar2 == 0) {\n              pcVar3 = strrchr(DAT_00151454,0x2f);\n              if (pcVar3 != (char *)0x0) {\n                pcVar3 = pcVar3 + 1;\n                if (DAT_00151450 == 0) {\n                  iVar2 = strncmp(pcVar3,DAT_00151464,DAT_00151444);\n                }\n                else {\n                  iVar2 = strncasecmp(pcVar3,DAT_00151464,DAT_00151444);\n                }\n                if (iVar2 == 0) {\n                  sVar4 = strlen(pcVar3);\n                  pcVar5 = (char *)xmalloc(sVar4 + 1);\n                  pcVar3 = strcpy(pcVar5,pcVar3);\n                  goto LAB_0008d6a4;\n                }\n              }\n            }\n            else {\n              if (DAT_00151450 == 0) {\n                iVar2 = strncmp(DAT_00151454,DAT_00151464,DAT_00151444);\n              }\n              else {\n                iVar2 = strncasecmp(DAT_00151454,DAT_00151464,DAT_00151444);\n              }\n              if (*param_1 == '~') {\n                pcVar3 = (char *)FUN_0008a220();\n              }\n              else {\n                sVar4 = strlen(pcVar5);\n                pcVar3 = (char *)xmalloc(sVar4 + 1);\n                pcVar3 = strcpy(pcVar3,pcVar5);\n              }\n              pcVar5 = DAT_00151454;\n              if (iVar2 == 0) {\nLAB_0008d6a4:\n                iVar2 = DAT_00151460;\n                pcVar10 = DAT_00151454;\n                sVar4 = strlen(DAT_00151454);\n                pcVar5 = (char *)xmalloc(sVar4 + 1);\n                local_24 = strcpy(pcVar5,pcVar10);\n                FUN_0008c7b0(&local_24);\n                if (iVar2 == 0) {\n                  iVar2 = executable_or_directory(local_24);\n                }\n                else {\n                  iVar2 = executable_file(local_24);\n                }\n                free(local_24);\n                pcVar5 = DAT_00151454;\n                if (iVar2 != 0) {\n                  if (pcVar10 != DAT_00151454) {\n                    free(pcVar10);\n                  }\n                  free(pcVar5);\n                  DAT_00151454 = "";\n                  goto LAB_0008d5c8;\n                }\n                free(pcVar3);\n                if (pcVar10 != pcVar5) {\n                  free(pcVar10);\n                }\n              }\n              else {\n                free(pcVar3);\n              }\n            }\n            free(pcVar5);\n            uVar8 = DAT_00151438;\n            pcVar3 = DAT_0015143c;\n          }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n            DAT_00151454 = (char *)rl_filename_completion_function(pcVar3,uVar8);\n            if ((DAT_0015145c == 4) && (dircomplete_expand != 0)) {\n              rl_directory_completion_hook = FUN_0008c7b0;\n              rl_directory_rewrite_hook = (code *)0x0;\n            }\n            DAT_00151438 = 1;\n            if (DAT_00151454 == (char *)0x0) break;\n            iVar2 = absolute_program(DAT_00151464);\n            pcVar5 = DAT_00151454;\n            if (iVar2 == 0) {\n              pcVar3 = strrchr(DAT_00151454,0x2f);\n              if (pcVar3 != (char *)0x0) {\n                pcVar3 = pcVar3 + 1;\n                if (DAT_00151450 == 0) {\n                  iVar2 = strncmp(pcVar3,DAT_00151464,DAT_00151444);\n                }\n                else {\n                  iVar2 = strncasecmp(pcVar3,DAT_00151464,DAT_00151444);\n                }\n                if (iVar2 == 0) {\n                  sVar4 = strlen(pcVar3);\n                  pcVar5 = (char *)xmalloc(sVar4 + 1);\n                  pcVar3 = strcpy(pcVar5,pcVar3);\n                  goto LAB_0008d6a4;\n                }\n              }\n            }\n            else {\n              if (DAT_00151450 == 0) {\n                iVar2 = strncmp(DAT_00151454,DAT_00151464,DAT_00151444);\n              }\n              else {\n                iVar2 = strncasecmp(DAT_00151454,DAT_00151464,DAT_00151444);\n              }\n              if (*param_1 == '~') {\n                pcVar3 = (char *)FUN_0008a220();\n              }\n              else {\n                sVar4 = strlen(pcVar5);\n                pcVar3 = (char *)xmalloc(sVar4 + 1);\n                pcVar3 = strcpy(pcVar3,pcVar5);\n              }\n              pcVar5 = DAT_00151454;\n              if (iVar2 == 0) {\nLAB_0008d6a4:\n                iVar2 = DAT_00151460;\n                pcVar10 = DAT_00151454;\n                sVar4 = strlen(DAT_00151454);\n                pcVar5 = (char *)xmalloc(sVar4 + 1);\n                local_24 = strcpy(pcVar5,pcVar10);\n                FUN_0008c7b0(&local_24);\n                if (iVar2 == 0) {\n                  iVar2 = executable_or_directory(local_24);\n                }\n                else {\n                  iVar2 = executable_file(local_24);\n                }\n                free(local_24);\n                pcVar5 = DAT_00151454;\n                if (iVar2 != 0) {\n                  if (pcVar10 != DAT_00151454) {\n                    free(pcVar10);\n                  }\n                  free(pcVar5);\n                  DAT_00151454 = "";\n                  goto LAB_0008d5c8;\n                }\n                free(pcVar3);\n                if (pcVar10 != pcVar5) {\n                  free(pcVar10);\n                }\n              }\n              else {\n                free(pcVar3);\n              }\n            }\n            free(pcVar5);\n            uVar8 = DAT_00151438;\n            pcVar3 = DAT_0015143c;\n          }" ({ "{") (expression_statement "DAT_00151454 = (char *)rl_filename_completion_function(pcVar3,uVar8);" (assignment_expression "DAT_00151454 = (char *)rl_filename_completion_function(pcVar3,uVar8)" (identifier "DAT_00151454") (= "=") (cast_expression "(char *)rl_filename_completion_function(pcVar3,uVar8)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "rl_filename_completion_function(pcVar3,uVar8)" (identifier "rl_filename_completion_function") (argument_list "(pcVar3,uVar8)" (( "(") (identifier "pcVar3") (, ",") (identifier "uVar8") () ")"))))) (; ";")) (if_statement "if ((DAT_0015145c == 4) && (dircomplete_expand != 0)) {\n              rl_directory_completion_hook = FUN_0008c7b0;\n              rl_directory_rewrite_hook = (code *)0x0;\n            }" (if "if") (parenthesized_expression "((DAT_0015145c == 4) && (dircomplete_expand != 0))" (( "(") (binary_expression "(DAT_0015145c == 4) && (dircomplete_expand != 0)" (parenthesized_expression "(DAT_0015145c == 4)" (( "(") (binary_expression "DAT_0015145c == 4" (identifier "DAT_0015145c") (== "==") (number_literal "4")) () ")")) (&& "&&") (parenthesized_expression "(dircomplete_expand != 0)" (( "(") (binary_expression "dircomplete_expand != 0" (identifier "dircomplete_expand") (!= "!=") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n              rl_directory_completion_hook = FUN_0008c7b0;\n              rl_directory_rewrite_hook = (code *)0x0;\n            }" ({ "{") (expression_statement "rl_directory_completion_hook = FUN_0008c7b0;" (assignment_expression "rl_directory_completion_hook = FUN_0008c7b0" (identifier "rl_directory_completion_hook") (= "=") (identifier "FUN_0008c7b0")) (; ";")) (expression_statement "rl_directory_rewrite_hook = (code *)0x0;" (assignment_expression "rl_directory_rewrite_hook = (code *)0x0" (identifier "rl_directory_rewrite_hook") (= "=") (cast_expression "(code *)0x0" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (} "}"))) (expression_statement "DAT_00151438 = 1;" (assignment_expression "DAT_00151438 = 1" (identifier "DAT_00151438") (= "=") (number_literal "1")) (; ";")) (if_statement "if (DAT_00151454 == (char *)0x0) break;" (if "if") (parenthesized_expression "(DAT_00151454 == (char *)0x0)" (( "(") (binary_expression "DAT_00151454 == (char *)0x0" (identifier "DAT_00151454") (== "==") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "iVar2 = absolute_program(DAT_00151464);" (assignment_expression "iVar2 = absolute_program(DAT_00151464)" (identifier "iVar2") (= "=") (call_expression "absolute_program(DAT_00151464)" (identifier "absolute_program") (argument_list "(DAT_00151464)" (( "(") (identifier "DAT_00151464") () ")")))) (; ";")) (expression_statement "pcVar5 = DAT_00151454;" (assignment_expression "pcVar5 = DAT_00151454" (identifier "pcVar5") (= "=") (identifier "DAT_00151454")) (; ";")) (if_statement "if (iVar2 == 0) {\n              pcVar3 = strrchr(DAT_00151454,0x2f);\n              if (pcVar3 != (char *)0x0) {\n                pcVar3 = pcVar3 + 1;\n                if (DAT_00151450 == 0) {\n                  iVar2 = strncmp(pcVar3,DAT_00151464,DAT_00151444);\n                }\n                else {\n                  iVar2 = strncasecmp(pcVar3,DAT_00151464,DAT_00151444);\n                }\n                if (iVar2 == 0) {\n                  sVar4 = strlen(pcVar3);\n                  pcVar5 = (char *)xmalloc(sVar4 + 1);\n                  pcVar3 = strcpy(pcVar5,pcVar3);\n                  goto LAB_0008d6a4;\n                }\n              }\n            }\n            else {\n              if (DAT_00151450 == 0) {\n                iVar2 = strncmp(DAT_00151454,DAT_00151464,DAT_00151444);\n              }\n              else {\n                iVar2 = strncasecmp(DAT_00151454,DAT_00151464,DAT_00151444);\n              }\n              if (*param_1 == '~') {\n                pcVar3 = (char *)FUN_0008a220();\n              }\n              else {\n                sVar4 = strlen(pcVar5);\n                pcVar3 = (char *)xmalloc(sVar4 + 1);\n                pcVar3 = strcpy(pcVar3,pcVar5);\n              }\n              pcVar5 = DAT_00151454;\n              if (iVar2 == 0) {\nLAB_0008d6a4:\n                iVar2 = DAT_00151460;\n                pcVar10 = DAT_00151454;\n                sVar4 = strlen(DAT_00151454);\n                pcVar5 = (char *)xmalloc(sVar4 + 1);\n                local_24 = strcpy(pcVar5,pcVar10);\n                FUN_0008c7b0(&local_24);\n                if (iVar2 == 0) {\n                  iVar2 = executable_or_directory(local_24);\n                }\n                else {\n                  iVar2 = executable_file(local_24);\n                }\n                free(local_24);\n                pcVar5 = DAT_00151454;\n                if (iVar2 != 0) {\n                  if (pcVar10 != DAT_00151454) {\n                    free(pcVar10);\n                  }\n                  free(pcVar5);\n                  DAT_00151454 = "";\n                  goto LAB_0008d5c8;\n                }\n                free(pcVar3);\n                if (pcVar10 != pcVar5) {\n                  free(pcVar10);\n                }\n              }\n              else {\n                free(pcVar3);\n              }\n            }" (if "if") (parenthesized_expression "(iVar2 == 0)" (( "(") (binary_expression "iVar2 == 0" (identifier "iVar2") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n              pcVar3 = strrchr(DAT_00151454,0x2f);\n              if (pcVar3 != (char *)0x0) {\n                pcVar3 = pcVar3 + 1;\n                if (DAT_00151450 == 0) {\n                  iVar2 = strncmp(pcVar3,DAT_00151464,DAT_00151444);\n                }\n                else {\n                  iVar2 = strncasecmp(pcVar3,DAT_00151464,DAT_00151444);\n                }\n                if (iVar2 == 0) {\n                  sVar4 = strlen(pcVar3);\n                  pcVar5 = (char *)xmalloc(sVar4 + 1);\n                  pcVar3 = strcpy(pcVar5,pcVar3);\n                  goto LAB_0008d6a4;\n                }\n              }\n            }" ({ "{") (expression_statement "pcVar3 = strrchr(DAT_00151454,0x2f);" (assignment_expression "pcVar3 = strrchr(DAT_00151454,0x2f)" (identifier "pcVar3") (= "=") (call_expression "strrchr(DAT_00151454,0x2f)" (identifier "strrchr") (argument_list "(DAT_00151454,0x2f)" (( "(") (identifier "DAT_00151454") (, ",") (number_literal "0x2f") () ")")))) (; ";")) (if_statement "if (pcVar3 != (char *)0x0) {\n                pcVar3 = pcVar3 + 1;\n                if (DAT_00151450 == 0) {\n                  iVar2 = strncmp(pcVar3,DAT_00151464,DAT_00151444);\n                }\n                else {\n                  iVar2 = strncasecmp(pcVar3,DAT_00151464,DAT_00151444);\n                }\n                if (iVar2 == 0) {\n                  sVar4 = strlen(pcVar3);\n                  pcVar5 = (char *)xmalloc(sVar4 + 1);\n                  pcVar3 = strcpy(pcVar5,pcVar3);\n                  goto LAB_0008d6a4;\n                }\n              }" (if "if") (parenthesized_expression "(pcVar3 != (char *)0x0)" (( "(") (binary_expression "pcVar3 != (char *)0x0" (identifier "pcVar3") (!= "!=") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n                pcVar3 = pcVar3 + 1;\n                if (DAT_00151450 == 0) {\n                  iVar2 = strncmp(pcVar3,DAT_00151464,DAT_00151444);\n                }\n                else {\n                  iVar2 = strncasecmp(pcVar3,DAT_00151464,DAT_00151444);\n                }\n                if (iVar2 == 0) {\n                  sVar4 = strlen(pcVar3);\n                  pcVar5 = (char *)xmalloc(sVar4 + 1);\n                  pcVar3 = strcpy(pcVar5,pcVar3);\n                  goto LAB_0008d6a4;\n                }\n              }" ({ "{") (expression_statement "pcVar3 = pcVar3 + 1;" (assignment_expression "pcVar3 = pcVar3 + 1" (identifier "pcVar3") (= "=") (binary_expression "pcVar3 + 1" (identifier "pcVar3") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (DAT_00151450 == 0) {\n                  iVar2 = strncmp(pcVar3,DAT_00151464,DAT_00151444);\n                }\n                else {\n                  iVar2 = strncasecmp(pcVar3,DAT_00151464,DAT_00151444);\n                }" (if "if") (parenthesized_expression "(DAT_00151450 == 0)" (( "(") (binary_expression "DAT_00151450 == 0" (identifier "DAT_00151450") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                  iVar2 = strncmp(pcVar3,DAT_00151464,DAT_00151444);\n                }" ({ "{") (expression_statement "iVar2 = strncmp(pcVar3,DAT_00151464,DAT_00151444);" (assignment_expression "iVar2 = strncmp(pcVar3,DAT_00151464,DAT_00151444)" (identifier "iVar2") (= "=") (call_expression "strncmp(pcVar3,DAT_00151464,DAT_00151444)" (identifier "strncmp") (argument_list "(pcVar3,DAT_00151464,DAT_00151444)" (( "(") (identifier "pcVar3") (, ",") (identifier "DAT_00151464") (, ",") (identifier "DAT_00151444") () ")")))) (; ";")) (} "}")) (else_clause "else {\n                  iVar2 = strncasecmp(pcVar3,DAT_00151464,DAT_00151444);\n                }" (else "else") (compound_statement "{\n                  iVar2 = strncasecmp(pcVar3,DAT_00151464,DAT_00151444);\n                }" ({ "{") (expression_statement "iVar2 = strncasecmp(pcVar3,DAT_00151464,DAT_00151444);" (assignment_expression "iVar2 = strncasecmp(pcVar3,DAT_00151464,DAT_00151444)" (identifier "iVar2") (= "=") (call_expression "strncasecmp(pcVar3,DAT_00151464,DAT_00151444)" (identifier "strncasecmp") (argument_list "(pcVar3,DAT_00151464,DAT_00151444)" (( "(") (identifier "pcVar3") (, ",") (identifier "DAT_00151464") (, ",") (identifier "DAT_00151444") () ")")))) (; ";")) (} "}")))) (if_statement "if (iVar2 == 0) {\n                  sVar4 = strlen(pcVar3);\n                  pcVar5 = (char *)xmalloc(sVar4 + 1);\n                  pcVar3 = strcpy(pcVar5,pcVar3);\n                  goto LAB_0008d6a4;\n                }" (if "if") (parenthesized_expression "(iVar2 == 0)" (( "(") (binary_expression "iVar2 == 0" (identifier "iVar2") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                  sVar4 = strlen(pcVar3);\n                  pcVar5 = (char *)xmalloc(sVar4 + 1);\n                  pcVar3 = strcpy(pcVar5,pcVar3);\n                  goto LAB_0008d6a4;\n                }" ({ "{") (expression_statement "sVar4 = strlen(pcVar3);" (assignment_expression "sVar4 = strlen(pcVar3)" (identifier "sVar4") (= "=") (call_expression "strlen(pcVar3)" (identifier "strlen") (argument_list "(pcVar3)" (( "(") (identifier "pcVar3") () ")")))) (; ";")) (expression_statement "pcVar5 = (char *)xmalloc(sVar4 + 1);" (assignment_expression "pcVar5 = (char *)xmalloc(sVar4 + 1)" (identifier "pcVar5") (= "=") (cast_expression "(char *)xmalloc(sVar4 + 1)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "xmalloc(sVar4 + 1)" (identifier "xmalloc") (argument_list "(sVar4 + 1)" (( "(") (binary_expression "sVar4 + 1" (identifier "sVar4") (+ "+") (number_literal "1")) () ")"))))) (; ";")) (expression_statement "pcVar3 = strcpy(pcVar5,pcVar3);" (assignment_expression "pcVar3 = strcpy(pcVar5,pcVar3)" (identifier "pcVar3") (= "=") (call_expression "strcpy(pcVar5,pcVar3)" (identifier "strcpy") (argument_list "(pcVar5,pcVar3)" (( "(") (identifier "pcVar5") (, ",") (identifier "pcVar3") () ")")))) (; ";")) (goto_statement "goto LAB_0008d6a4;" (goto "goto") (statement_identifier "LAB_0008d6a4") (; ";")) (} "}"))) (} "}"))) (} "}")) (else_clause "else {\n              if (DAT_00151450 == 0) {\n                iVar2 = strncmp(DAT_00151454,DAT_00151464,DAT_00151444);\n              }\n              else {\n                iVar2 = strncasecmp(DAT_00151454,DAT_00151464,DAT_00151444);\n              }\n              if (*param_1 == '~') {\n                pcVar3 = (char *)FUN_0008a220();\n              }\n              else {\n                sVar4 = strlen(pcVar5);\n                pcVar3 = (char *)xmalloc(sVar4 + 1);\n                pcVar3 = strcpy(pcVar3,pcVar5);\n              }\n              pcVar5 = DAT_00151454;\n              if (iVar2 == 0) {\nLAB_0008d6a4:\n                iVar2 = DAT_00151460;\n                pcVar10 = DAT_00151454;\n                sVar4 = strlen(DAT_00151454);\n                pcVar5 = (char *)xmalloc(sVar4 + 1);\n                local_24 = strcpy(pcVar5,pcVar10);\n                FUN_0008c7b0(&local_24);\n                if (iVar2 == 0) {\n                  iVar2 = executable_or_directory(local_24);\n                }\n                else {\n                  iVar2 = executable_file(local_24);\n                }\n                free(local_24);\n                pcVar5 = DAT_00151454;\n                if (iVar2 != 0) {\n                  if (pcVar10 != DAT_00151454) {\n                    free(pcVar10);\n                  }\n                  free(pcVar5);\n                  DAT_00151454 = "";\n                  goto LAB_0008d5c8;\n                }\n                free(pcVar3);\n                if (pcVar10 != pcVar5) {\n                  free(pcVar10);\n                }\n              }\n              else {\n                free(pcVar3);\n              }\n            }" (else "else") (compound_statement "{\n              if (DAT_00151450 == 0) {\n                iVar2 = strncmp(DAT_00151454,DAT_00151464,DAT_00151444);\n              }\n              else {\n                iVar2 = strncasecmp(DAT_00151454,DAT_00151464,DAT_00151444);\n              }\n              if (*param_1 == '~') {\n                pcVar3 = (char *)FUN_0008a220();\n              }\n              else {\n                sVar4 = strlen(pcVar5);\n                pcVar3 = (char *)xmalloc(sVar4 + 1);\n                pcVar3 = strcpy(pcVar3,pcVar5);\n              }\n              pcVar5 = DAT_00151454;\n              if (iVar2 == 0) {\nLAB_0008d6a4:\n                iVar2 = DAT_00151460;\n                pcVar10 = DAT_00151454;\n                sVar4 = strlen(DAT_00151454);\n                pcVar5 = (char *)xmalloc(sVar4 + 1);\n                local_24 = strcpy(pcVar5,pcVar10);\n                FUN_0008c7b0(&local_24);\n                if (iVar2 == 0) {\n                  iVar2 = executable_or_directory(local_24);\n                }\n                else {\n                  iVar2 = executable_file(local_24);\n                }\n                free(local_24);\n                pcVar5 = DAT_00151454;\n                if (iVar2 != 0) {\n                  if (pcVar10 != DAT_00151454) {\n                    free(pcVar10);\n                  }\n                  free(pcVar5);\n                  DAT_00151454 = "";\n                  goto LAB_0008d5c8;\n                }\n                free(pcVar3);\n                if (pcVar10 != pcVar5) {\n                  free(pcVar10);\n                }\n              }\n              else {\n                free(pcVar3);\n              }\n            }" ({ "{") (if_statement "if (DAT_00151450 == 0) {\n                iVar2 = strncmp(DAT_00151454,DAT_00151464,DAT_00151444);\n              }\n              else {\n                iVar2 = strncasecmp(DAT_00151454,DAT_00151464,DAT_00151444);\n              }" (if "if") (parenthesized_expression "(DAT_00151450 == 0)" (( "(") (binary_expression "DAT_00151450 == 0" (identifier "DAT_00151450") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                iVar2 = strncmp(DAT_00151454,DAT_00151464,DAT_00151444);\n              }" ({ "{") (expression_statement "iVar2 = strncmp(DAT_00151454,DAT_00151464,DAT_00151444);" (assignment_expression "iVar2 = strncmp(DAT_00151454,DAT_00151464,DAT_00151444)" (identifier "iVar2") (= "=") (call_expression "strncmp(DAT_00151454,DAT_00151464,DAT_00151444)" (identifier "strncmp") (argument_list "(DAT_00151454,DAT_00151464,DAT_00151444)" (( "(") (identifier "DAT_00151454") (, ",") (identifier "DAT_00151464") (, ",") (identifier "DAT_00151444") () ")")))) (; ";")) (} "}")) (else_clause "else {\n                iVar2 = strncasecmp(DAT_00151454,DAT_00151464,DAT_00151444);\n              }" (else "else") (compound_statement "{\n                iVar2 = strncasecmp(DAT_00151454,DAT_00151464,DAT_00151444);\n              }" ({ "{") (expression_statement "iVar2 = strncasecmp(DAT_00151454,DAT_00151464,DAT_00151444);" (assignment_expression "iVar2 = strncasecmp(DAT_00151454,DAT_00151464,DAT_00151444)" (identifier "iVar2") (= "=") (call_expression "strncasecmp(DAT_00151454,DAT_00151464,DAT_00151444)" (identifier "strncasecmp") (argument_list "(DAT_00151454,DAT_00151464,DAT_00151444)" (( "(") (identifier "DAT_00151454") (, ",") (identifier "DAT_00151464") (, ",") (identifier "DAT_00151444") () ")")))) (; ";")) (} "}")))) (if_statement "if (*param_1 == '~') {\n                pcVar3 = (char *)FUN_0008a220();\n              }\n              else {\n                sVar4 = strlen(pcVar5);\n                pcVar3 = (char *)xmalloc(sVar4 + 1);\n                pcVar3 = strcpy(pcVar3,pcVar5);\n              }" (if "if") (parenthesized_expression "(*param_1 == '~')" (( "(") (binary_expression "*param_1 == '~'" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (== "==") (char_literal "'~'" (' "'") (character "~") (' "'"))) () ")")) (compound_statement "{\n                pcVar3 = (char *)FUN_0008a220();\n              }" ({ "{") (expression_statement "pcVar3 = (char *)FUN_0008a220();" (assignment_expression "pcVar3 = (char *)FUN_0008a220()" (identifier "pcVar3") (= "=") (cast_expression "(char *)FUN_0008a220()" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_0008a220()" (identifier "FUN_0008a220") (argument_list "()" (( "(") () ")"))))) (; ";")) (} "}")) (else_clause "else {\n                sVar4 = strlen(pcVar5);\n                pcVar3 = (char *)xmalloc(sVar4 + 1);\n                pcVar3 = strcpy(pcVar3,pcVar5);\n              }" (else "else") (compound_statement "{\n                sVar4 = strlen(pcVar5);\n                pcVar3 = (char *)xmalloc(sVar4 + 1);\n                pcVar3 = strcpy(pcVar3,pcVar5);\n              }" ({ "{") (expression_statement "sVar4 = strlen(pcVar5);" (assignment_expression "sVar4 = strlen(pcVar5)" (identifier "sVar4") (= "=") (call_expression "strlen(pcVar5)" (identifier "strlen") (argument_list "(pcVar5)" (( "(") (identifier "pcVar5") () ")")))) (; ";")) (expression_statement "pcVar3 = (char *)xmalloc(sVar4 + 1);" (assignment_expression "pcVar3 = (char *)xmalloc(sVar4 + 1)" (identifier "pcVar3") (= "=") (cast_expression "(char *)xmalloc(sVar4 + 1)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "xmalloc(sVar4 + 1)" (identifier "xmalloc") (argument_list "(sVar4 + 1)" (( "(") (binary_expression "sVar4 + 1" (identifier "sVar4") (+ "+") (number_literal "1")) () ")"))))) (; ";")) (expression_statement "pcVar3 = strcpy(pcVar3,pcVar5);" (assignment_expression "pcVar3 = strcpy(pcVar3,pcVar5)" (identifier "pcVar3") (= "=") (call_expression "strcpy(pcVar3,pcVar5)" (identifier "strcpy") (argument_list "(pcVar3,pcVar5)" (( "(") (identifier "pcVar3") (, ",") (identifier "pcVar5") () ")")))) (; ";")) (} "}")))) (expression_statement "pcVar5 = DAT_00151454;" (assignment_expression "pcVar5 = DAT_00151454" (identifier "pcVar5") (= "=") (identifier "DAT_00151454")) (; ";")) (if_statement "if (iVar2 == 0) {\nLAB_0008d6a4:\n                iVar2 = DAT_00151460;\n                pcVar10 = DAT_00151454;\n                sVar4 = strlen(DAT_00151454);\n                pcVar5 = (char *)xmalloc(sVar4 + 1);\n                local_24 = strcpy(pcVar5,pcVar10);\n                FUN_0008c7b0(&local_24);\n                if (iVar2 == 0) {\n                  iVar2 = executable_or_directory(local_24);\n                }\n                else {\n                  iVar2 = executable_file(local_24);\n                }\n                free(local_24);\n                pcVar5 = DAT_00151454;\n                if (iVar2 != 0) {\n                  if (pcVar10 != DAT_00151454) {\n                    free(pcVar10);\n                  }\n                  free(pcVar5);\n                  DAT_00151454 = "";\n                  goto LAB_0008d5c8;\n                }\n                free(pcVar3);\n                if (pcVar10 != pcVar5) {\n                  free(pcVar10);\n                }\n              }\n              else {\n                free(pcVar3);\n              }" (if "if") (parenthesized_expression "(iVar2 == 0)" (( "(") (binary_expression "iVar2 == 0" (identifier "iVar2") (== "==") (number_literal "0")) () ")")) (compound_statement "{\nLAB_0008d6a4:\n                iVar2 = DAT_00151460;\n                pcVar10 = DAT_00151454;\n                sVar4 = strlen(DAT_00151454);\n                pcVar5 = (char *)xmalloc(sVar4 + 1);\n                local_24 = strcpy(pcVar5,pcVar10);\n                FUN_0008c7b0(&local_24);\n                if (iVar2 == 0) {\n                  iVar2 = executable_or_directory(local_24);\n                }\n                else {\n                  iVar2 = executable_file(local_24);\n                }\n                free(local_24);\n                pcVar5 = DAT_00151454;\n                if (iVar2 != 0) {\n                  if (pcVar10 != DAT_00151454) {\n                    free(pcVar10);\n                  }\n                  free(pcVar5);\n                  DAT_00151454 = "";\n                  goto LAB_0008d5c8;\n                }\n                free(pcVar3);\n                if (pcVar10 != pcVar5) {\n                  free(pcVar10);\n                }\n              }" ({ "{") (labeled_statement "LAB_0008d6a4:\n                iVar2 = DAT_00151460;" (statement_identifier "LAB_0008d6a4") (: ":") (expression_statement "iVar2 = DAT_00151460;" (assignment_expression "iVar2 = DAT_00151460" (identifier "iVar2") (= "=") (identifier "DAT_00151460")) (; ";"))) (expression_statement "pcVar10 = DAT_00151454;" (assignment_expression "pcVar10 = DAT_00151454" (identifier "pcVar10") (= "=") (identifier "DAT_00151454")) (; ";")) (expression_statement "sVar4 = strlen(DAT_00151454);" (assignment_expression "sVar4 = strlen(DAT_00151454)" (identifier "sVar4") (= "=") (call_expression "strlen(DAT_00151454)" (identifier "strlen") (argument_list "(DAT_00151454)" (( "(") (identifier "DAT_00151454") () ")")))) (; ";")) (expression_statement "pcVar5 = (char *)xmalloc(sVar4 + 1);" (assignment_expression "pcVar5 = (char *)xmalloc(sVar4 + 1)" (identifier "pcVar5") (= "=") (cast_expression "(char *)xmalloc(sVar4 + 1)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "xmalloc(sVar4 + 1)" (identifier "xmalloc") (argument_list "(sVar4 + 1)" (( "(") (binary_expression "sVar4 + 1" (identifier "sVar4") (+ "+") (number_literal "1")) () ")"))))) (; ";")) (expression_statement "local_24 = strcpy(pcVar5,pcVar10);" (assignment_expression "local_24 = strcpy(pcVar5,pcVar10)" (identifier "local_24") (= "=") (call_expression "strcpy(pcVar5,pcVar10)" (identifier "strcpy") (argument_list "(pcVar5,pcVar10)" (( "(") (identifier "pcVar5") (, ",") (identifier "pcVar10") () ")")))) (; ";")) (expression_statement "FUN_0008c7b0(&local_24);" (call_expression "FUN_0008c7b0(&local_24)" (identifier "FUN_0008c7b0") (argument_list "(&local_24)" (( "(") (pointer_expression "&local_24" (& "&") (identifier "local_24")) () ")"))) (; ";")) (if_statement "if (iVar2 == 0) {\n                  iVar2 = executable_or_directory(local_24);\n                }\n                else {\n                  iVar2 = executable_file(local_24);\n                }" (if "if") (parenthesized_expression "(iVar2 == 0)" (( "(") (binary_expression "iVar2 == 0" (identifier "iVar2") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                  iVar2 = executable_or_directory(local_24);\n                }" ({ "{") (expression_statement "iVar2 = executable_or_directory(local_24);" (assignment_expression "iVar2 = executable_or_directory(local_24)" (identifier "iVar2") (= "=") (call_expression "executable_or_directory(local_24)" (identifier "executable_or_directory") (argument_list "(local_24)" (( "(") (identifier "local_24") () ")")))) (; ";")) (} "}")) (else_clause "else {\n                  iVar2 = executable_file(local_24);\n                }" (else "else") (compound_statement "{\n                  iVar2 = executable_file(local_24);\n                }" ({ "{") (expression_statement "iVar2 = executable_file(local_24);" (assignment_expression "iVar2 = executable_file(local_24)" (identifier "iVar2") (= "=") (call_expression "executable_file(local_24)" (identifier "executable_file") (argument_list "(local_24)" (( "(") (identifier "local_24") () ")")))) (; ";")) (} "}")))) (expression_statement "free(local_24);" (call_expression "free(local_24)" (identifier "free") (argument_list "(local_24)" (( "(") (identifier "local_24") () ")"))) (; ";")) (expression_statement "pcVar5 = DAT_00151454;" (assignment_expression "pcVar5 = DAT_00151454" (identifier "pcVar5") (= "=") (identifier "DAT_00151454")) (; ";")) (if_statement "if (iVar2 != 0) {\n                  if (pcVar10 != DAT_00151454) {\n                    free(pcVar10);\n                  }\n                  free(pcVar5);\n                  DAT_00151454 = "";\n                  goto LAB_0008d5c8;\n                }" (if "if") (parenthesized_expression "(iVar2 != 0)" (( "(") (binary_expression "iVar2 != 0" (identifier "iVar2") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                  if (pcVar10 != DAT_00151454) {\n                    free(pcVar10);\n                  }\n                  free(pcVar5);\n                  DAT_00151454 = "";\n                  goto LAB_0008d5c8;\n                }" ({ "{") (if_statement "if (pcVar10 != DAT_00151454) {\n                    free(pcVar10);\n                  }" (if "if") (parenthesized_expression "(pcVar10 != DAT_00151454)" (( "(") (binary_expression "pcVar10 != DAT_00151454" (identifier "pcVar10") (!= "!=") (identifier "DAT_00151454")) () ")")) (compound_statement "{\n                    free(pcVar10);\n                  }" ({ "{") (expression_statement "free(pcVar10);" (call_expression "free(pcVar10)" (identifier "free") (argument_list "(pcVar10)" (( "(") (identifier "pcVar10") () ")"))) (; ";")) (} "}"))) (expression_statement "free(pcVar5);" (call_expression "free(pcVar5)" (identifier "free") (argument_list "(pcVar5)" (( "(") (identifier "pcVar5") () ")"))) (; ";")) (expression_statement "DAT_00151454 = "";" (assignment_expression "DAT_00151454 = """ (identifier "DAT_00151454") (= "=") (string_literal """" (" """) (" """))) (; ";")) (goto_statement "goto LAB_0008d5c8;" (goto "goto") (statement_identifier "LAB_0008d5c8") (; ";")) (} "}"))) (expression_statement "free(pcVar3);" (call_expression "free(pcVar3)" (identifier "free") (argument_list "(pcVar3)" (( "(") (identifier "pcVar3") () ")"))) (; ";")) (if_statement "if (pcVar10 != pcVar5) {\n                  free(pcVar10);\n                }" (if "if") (parenthesized_expression "(pcVar10 != pcVar5)" (( "(") (binary_expression "pcVar10 != pcVar5" (identifier "pcVar10") (!= "!=") (identifier "pcVar5")) () ")")) (compound_statement "{\n                  free(pcVar10);\n                }" ({ "{") (expression_statement "free(pcVar10);" (call_expression "free(pcVar10)" (identifier "free") (argument_list "(pcVar10)" (( "(") (identifier "pcVar10") () ")"))) (; ";")) (} "}"))) (} "}")) (else_clause "else {\n                free(pcVar3);\n              }" (else "else") (compound_statement "{\n                free(pcVar3);\n              }" ({ "{") (expression_statement "free(pcVar3);" (call_expression "free(pcVar3)" (identifier "free") (argument_list "(pcVar3)" (( "(") (identifier "pcVar3") () ")"))) (; ";")) (} "}")))) (} "}")))) (expression_statement "free(pcVar5);" (call_expression "free(pcVar5)" (identifier "free") (argument_list "(pcVar5)" (( "(") (identifier "pcVar5") () ")"))) (; ";")) (expression_statement "uVar8 = DAT_00151438;" (assignment_expression "uVar8 = DAT_00151438" (identifier "uVar8") (= "=") (identifier "DAT_00151438")) (; ";")) (expression_statement "pcVar3 = DAT_0015143c;" (assignment_expression "pcVar3 = DAT_0015143c" (identifier "pcVar3") (= "=") (identifier "DAT_0015143c")) (; ";")) (} "}"))) (expression_statement "iVar2 = absolute_program(DAT_00151464);" (assignment_expression "iVar2 = absolute_program(DAT_00151464)" (identifier "iVar2") (= "=") (call_expression "absolute_program(DAT_00151464)" (identifier "absolute_program") (argument_list "(DAT_00151464)" (( "(") (identifier "DAT_00151464") () ")")))) (; ";")) (if_statement "if (iVar2 != 0) goto LAB_0008dac4;" (if "if") (parenthesized_expression "(iVar2 != 0)" (( "(") (binary_expression "iVar2 != 0" (identifier "iVar2") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_0008dac4;" (goto "goto") (statement_identifier "LAB_0008dac4") (; ";"))) (labeled_statement "LAB_0008d5f6:\n          uVar8 = (uint)(DAT_00151454 != (char *)0x0);" (statement_identifier "LAB_0008d5f6") (: ":") (expression_statement "uVar8 = (uint)(DAT_00151454 != (char *)0x0);" (assignment_expression "uVar8 = (uint)(DAT_00151454 != (char *)0x0)" (identifier "uVar8") (= "=") (call_expression "(uint)(DAT_00151454 != (char *)0x0)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(DAT_00151454 != (char *)0x0)" (( "(") (binary_expression "DAT_00151454 != (char *)0x0" (identifier "DAT_00151454") (!= "!=") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")))) (; ";"))) (expression_statement "pcVar3 = DAT_0015143c;" (assignment_expression "pcVar3 = DAT_0015143c" (identifier "pcVar3") (= "=") (identifier "DAT_0015143c")) (; ";")) (expression_statement "DAT_00151438 = uVar8;" (assignment_expression "DAT_00151438 = uVar8" (identifier "DAT_00151438") (= "=") (identifier "uVar8")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(DAT_00151454 != (char *)0x0)" (( "(") (binary_expression "DAT_00151454 != (char *)0x0" (identifier "DAT_00151454") (!= "!=") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (; ";")) (if_statement "if (((DAT_00151434 == 0) || (*(char *)(DAT_00151434 + DAT_00151430) == '\0')) ||\n           (pcVar3 = (char *)extract_colon_unit(DAT_00151434,&DAT_00151430), pcVar3 == (char *)0x0))\n        goto LAB_0008dac4;" (if "if") (parenthesized_expression "(((DAT_00151434 == 0) || (*(char *)(DAT_00151434 + DAT_00151430) == '\0')) ||\n           (pcVar3 = (char *)extract_colon_unit(DAT_00151434,&DAT_00151430), pcVar3 == (char *)0x0))" (( "(") (binary_expression "((DAT_00151434 == 0) || (*(char *)(DAT_00151434 + DAT_00151430) == '\0')) ||\n           (pcVar3 = (char *)extract_colon_unit(DAT_00151434,&DAT_00151430), pcVar3 == (char *)0x0)" (parenthesized_expression "((DAT_00151434 == 0) || (*(char *)(DAT_00151434 + DAT_00151430) == '\0'))" (( "(") (binary_expression "(DAT_00151434 == 0) || (*(char *)(DAT_00151434 + DAT_00151430) == '\0')" (parenthesized_expression "(DAT_00151434 == 0)" (( "(") (binary_expression "DAT_00151434 == 0" (identifier "DAT_00151434") (== "==") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(*(char *)(DAT_00151434 + DAT_00151430) == '\0')" (( "(") (binary_expression "*(char *)(DAT_00151434 + DAT_00151430) == '\0'" (pointer_expression "*(char *)(DAT_00151434 + DAT_00151430)" (* "*") (cast_expression "(char *)(DAT_00151434 + DAT_00151430)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(DAT_00151434 + DAT_00151430)" (( "(") (binary_expression "DAT_00151434 + DAT_00151430" (identifier "DAT_00151434") (+ "+") (identifier "DAT_00151430")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")"))) () ")")) (|| "||") (parenthesized_expression "(pcVar3 = (char *)extract_colon_unit(DAT_00151434,&DAT_00151430), pcVar3 == (char *)0x0)" (( "(") (comma_expression "pcVar3 = (char *)extract_colon_unit(DAT_00151434,&DAT_00151430), pcVar3 == (char *)0x0" (assignment_expression "pcVar3 = (char *)extract_colon_unit(DAT_00151434,&DAT_00151430)" (identifier "pcVar3") (= "=") (cast_expression "(char *)extract_colon_unit(DAT_00151434,&DAT_00151430)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "extract_colon_unit(DAT_00151434,&DAT_00151430)" (identifier "extract_colon_unit") (argument_list "(DAT_00151434,&DAT_00151430)" (( "(") (identifier "DAT_00151434") (, ",") (pointer_expression "&DAT_00151430" (& "&") (identifier "DAT_00151430")) () ")"))))) (, ",") (binary_expression "pcVar3 == (char *)0x0" (identifier "pcVar3") (== "==") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")))) () ")"))) () ")")) (goto_statement "goto LAB_0008dac4;" (goto "goto") (statement_identifier "LAB_0008dac4") (; ";"))) (expression_statement "DAT_00151460 = 1;" (assignment_expression "DAT_00151460 = 1" (identifier "DAT_00151460") (= "=") (number_literal "1")) (; ";")) (expression_statement "cVar11 = *pcVar3;" (assignment_expression "cVar11 = *pcVar3" (identifier "cVar11") (= "=") (pointer_expression "*pcVar3" (* "*") (identifier "pcVar3"))) (; ";")) (if_statement "if (cVar11 == '\0') {\n          free(pcVar3);\n          pcVar3 = (char *)xmalloc(2);\n          pcVar3[0] = '.';\n          pcVar3[1] = '\0';\n          cVar11 = '.';\n        }" (if "if") (parenthesized_expression "(cVar11 == '\0')" (( "(") (binary_expression "cVar11 == '\0'" (identifier "cVar11") (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n          free(pcVar3);\n          pcVar3 = (char *)xmalloc(2);\n          pcVar3[0] = '.';\n          pcVar3[1] = '\0';\n          cVar11 = '.';\n        }" ({ "{") (expression_statement "free(pcVar3);" (call_expression "free(pcVar3)" (identifier "free") (argument_list "(pcVar3)" (( "(") (identifier "pcVar3") () ")"))) (; ";")) (expression_statement "pcVar3 = (char *)xmalloc(2);" (assignment_expression "pcVar3 = (char *)xmalloc(2)" (identifier "pcVar3") (= "=") (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 "pcVar3[0] = '.';" (assignment_expression "pcVar3[0] = '.'" (subscript_expression "pcVar3[0]" (identifier "pcVar3") ([ "[") (number_literal "0") (] "]")) (= "=") (char_literal "'.'" (' "'") (character ".") (' "'"))) (; ";")) (expression_statement "pcVar3[1] = '\0';" (assignment_expression "pcVar3[1] = '\0'" (subscript_expression "pcVar3[1]" (identifier "pcVar3") ([ "[") (number_literal "1") (] "]")) (= "=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) (; ";")) (expression_statement "cVar11 = '.';" (assignment_expression "cVar11 = '.'" (identifier "cVar11") (= "=") (char_literal "'.'" (' "'") (character ".") (' "'"))) (; ";")) (} "}"))) (expression_statement "pcVar5 = pcVar3;" (assignment_expression "pcVar5 = pcVar3" (identifier "pcVar5") (= "=") (identifier "pcVar3")) (; ";")) (if_statement "if (cVar11 == '~') {\n          pcVar5 = (char *)bash_tilde_expand(pcVar3,0);\n          free(pcVar3);\n          cVar11 = *pcVar5;\n        }" (if "if") (parenthesized_expression "(cVar11 == '~')" (( "(") (binary_expression "cVar11 == '~'" (identifier "cVar11") (== "==") (char_literal "'~'" (' "'") (character "~") (' "'"))) () ")")) (compound_statement "{\n          pcVar5 = (char *)bash_tilde_expand(pcVar3,0);\n          free(pcVar3);\n          cVar11 = *pcVar5;\n        }" ({ "{") (expression_statement "pcVar5 = (char *)bash_tilde_expand(pcVar3,0);" (assignment_expression "pcVar5 = (char *)bash_tilde_expand(pcVar3,0)" (identifier "pcVar5") (= "=") (cast_expression "(char *)bash_tilde_expand(pcVar3,0)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "bash_tilde_expand(pcVar3,0)" (identifier "bash_tilde_expand") (argument_list "(pcVar3,0)" (( "(") (identifier "pcVar3") (, ",") (number_literal "0") () ")"))))) (; ";")) (expression_statement "free(pcVar3);" (call_expression "free(pcVar3)" (identifier "free") (argument_list "(pcVar3)" (( "(") (identifier "pcVar3") () ")"))) (; ";")) (expression_statement "cVar11 = *pcVar5;" (assignment_expression "cVar11 = *pcVar5" (identifier "cVar11") (= "=") (pointer_expression "*pcVar5" (* "*") (identifier "pcVar5"))) (; ";")) (} "}"))) (expression_statement "pcVar3 = DAT_00151440;" (assignment_expression "pcVar3 = DAT_00151440" (identifier "pcVar3") (= "=") (identifier "DAT_00151440")) (; ";")) (if_statement "if ((cVar11 == '.') && (pcVar5[1] == '\0')) {\n          DAT_001514ec = 1;\n        }" (if "if") (parenthesized_expression "((cVar11 == '.') && (pcVar5[1] == '\0'))" (( "(") (binary_expression "(cVar11 == '.') && (pcVar5[1] == '\0')" (parenthesized_expression "(cVar11 == '.')" (( "(") (binary_expression "cVar11 == '.'" (identifier "cVar11") (== "==") (char_literal "'.'" (' "'") (character ".") (' "'"))) () ")")) (&& "&&") (parenthesized_expression "(pcVar5[1] == '\0')" (( "(") (binary_expression "pcVar5[1] == '\0'" (subscript_expression "pcVar5[1]" (identifier "pcVar5") ([ "[") (number_literal "1") (] "]")) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")"))) () ")")) (compound_statement "{\n          DAT_001514ec = 1;\n        }" ({ "{") (expression_statement "DAT_001514ec = 1;" (assignment_expression "DAT_001514ec = 1" (identifier "DAT_001514ec") (= "=") (number_literal "1")) (; ";")) (} "}"))) (if_statement "if (DAT_0015143c == (char *)0x0) {\nLAB_0008dbfe:\n          if (pcVar3 != (char *)0x0) goto LAB_0008de5f;\n        }\n        else {\n          if (DAT_0015143c != DAT_00151440) {\n            free(DAT_0015143c);\n            goto LAB_0008dbfe;\n          }\nLAB_0008de5f:\n          free(pcVar3);\n        }" (if "if") (parenthesized_expression "(DAT_0015143c == (char *)0x0)" (( "(") (binary_expression "DAT_0015143c == (char *)0x0" (identifier "DAT_0015143c") (== "==") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\nLAB_0008dbfe:\n          if (pcVar3 != (char *)0x0) goto LAB_0008de5f;\n        }" ({ "{") (labeled_statement "LAB_0008dbfe:\n          if (pcVar3 != (char *)0x0) goto LAB_0008de5f;" (statement_identifier "LAB_0008dbfe") (: ":") (if_statement "if (pcVar3 != (char *)0x0) goto LAB_0008de5f;" (if "if") (parenthesized_expression "(pcVar3 != (char *)0x0)" (( "(") (binary_expression "pcVar3 != (char *)0x0" (identifier "pcVar3") (!= "!=") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (goto_statement "goto LAB_0008de5f;" (goto "goto") (statement_identifier "LAB_0008de5f") (; ";")))) (} "}")) (else_clause "else {\n          if (DAT_0015143c != DAT_00151440) {\n            free(DAT_0015143c);\n            goto LAB_0008dbfe;\n          }\nLAB_0008de5f:\n          free(pcVar3);\n        }" (else "else") (compound_statement "{\n          if (DAT_0015143c != DAT_00151440) {\n            free(DAT_0015143c);\n            goto LAB_0008dbfe;\n          }\nLAB_0008de5f:\n          free(pcVar3);\n        }" ({ "{") (if_statement "if (DAT_0015143c != DAT_00151440) {\n            free(DAT_0015143c);\n            goto LAB_0008dbfe;\n          }" (if "if") (parenthesized_expression "(DAT_0015143c != DAT_00151440)" (( "(") (binary_expression "DAT_0015143c != DAT_00151440" (identifier "DAT_0015143c") (!= "!=") (identifier "DAT_00151440")) () ")")) (compound_statement "{\n            free(DAT_0015143c);\n            goto LAB_0008dbfe;\n          }" ({ "{") (expression_statement "free(DAT_0015143c);" (call_expression "free(DAT_0015143c)" (identifier "free") (argument_list "(DAT_0015143c)" (( "(") (identifier "DAT_0015143c") () ")"))) (; ";")) (goto_statement "goto LAB_0008dbfe;" (goto "goto") (statement_identifier "LAB_0008dbfe") (; ";")) (} "}"))) (labeled_statement "LAB_0008de5f:\n          free(pcVar3);" (statement_identifier "LAB_0008de5f") (: ":") (expression_statement "free(pcVar3);" (call_expression "free(pcVar3)" (identifier "free") (argument_list "(pcVar3)" (( "(") (identifier "pcVar3") () ")"))) (; ";"))) (} "}")))) (expression_statement "pcVar3 = (char *)sh_makepath(pcVar5,DAT_00151464,0);" (assignment_expression "pcVar3 = (char *)sh_makepath(pcVar5,DAT_00151464,0)" (identifier "pcVar3") (= "=") (cast_expression "(char *)sh_makepath(pcVar5,DAT_00151464,0)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "sh_makepath(pcVar5,DAT_00151464,0)" (identifier "sh_makepath") (argument_list "(pcVar5,DAT_00151464,0)" (( "(") (identifier "pcVar5") (, ",") (identifier "DAT_00151464") (, ",") (number_literal "0") () ")"))))) (; ";")) (expression_statement "DAT_00151440 = pcVar3;" (assignment_expression "DAT_00151440 = pcVar3" (identifier "DAT_00151440") (= "=") (identifier "pcVar3")) (; ";")) (expression_statement "pcVar10 = strpbrk(pcVar3,"\"\'\\");" (assignment_expression "pcVar10 = strpbrk(pcVar3,"\"\'\\")" (identifier "pcVar10") (= "=") (call_expression "strpbrk(pcVar3,"\"\'\\")" (identifier "strpbrk") (argument_list "(pcVar3,"\"\'\\")" (( "(") (identifier "pcVar3") (, ",") (string_literal ""\"\'\\"" (" """) (escape_sequence "\"") (escape_sequence "\'") (escape_sequence "\\") (" """)) () ")")))) (; ";")) (if_statement "if (pcVar10 != (char *)0x0) {\n          pcVar3 = (char *)sh_backslash_quote(pcVar3,&DAT_00151500,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          pcVar3 = (char *)sh_backslash_quote(pcVar3,&DAT_00151500,0);\n        }" ({ "{") (expression_statement "pcVar3 = (char *)sh_backslash_quote(pcVar3,&DAT_00151500,0);" (assignment_expression "pcVar3 = (char *)sh_backslash_quote(pcVar3,&DAT_00151500,0)" (identifier "pcVar3") (= "=") (cast_expression "(char *)sh_backslash_quote(pcVar3,&DAT_00151500,0)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "sh_backslash_quote(pcVar3,&DAT_00151500,0)" (identifier "sh_backslash_quote") (argument_list "(pcVar3,&DAT_00151500,0)" (( "(") (identifier "pcVar3") (, ",") (pointer_expression "&DAT_00151500" (& "&") (identifier "DAT_00151500")) (, ",") (number_literal "0") () ")"))))) (; ";")) (} "}"))) (expression_statement "DAT_0015143c = pcVar3;" (assignment_expression "DAT_0015143c = pcVar3" (identifier "DAT_0015143c") (= "=") (identifier "pcVar3")) (; ";")) (expression_statement "free(pcVar5);" (call_expression "free(pcVar5)" (identifier "free") (argument_list "(pcVar5)" (( "(") (identifier "pcVar5") () ")"))) (; ";")) (expression_statement "uVar8 = DAT_00151438;" (assignment_expression "uVar8 = DAT_00151438" (identifier "uVar8") (= "=") (identifier "DAT_00151438")) (; ";")) (} "}")) (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (; ";")) (} "}"))) (expression_statement "DAT_0015145c = 5;" (assignment_expression "DAT_0015145c = 5" (identifier "DAT_0015145c") (= "=") (number_literal "5")) (; ";")) (labeled_statement "LAB_0008d218:\n    glob_ignore_case = DAT_00151450;" (statement_identifier "LAB_0008d218") (: ":") (expression_statement "glob_ignore_case = DAT_00151450;" (assignment_expression "glob_ignore_case = DAT_00151450" (identifier "glob_ignore_case") (= "=") (identifier "DAT_00151450")) (; ";"))) (expression_statement "puVar6 = (undefined4 *)shell_glob_filename(DAT_00151464);" (assignment_expression "puVar6 = (undefined4 *)shell_glob_filename(DAT_00151464)" (identifier "puVar6") (= "=") (cast_expression "(undefined4 *)shell_glob_filename(DAT_00151464)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "shell_glob_filename(DAT_00151464)" (identifier "shell_glob_filename") (argument_list "(DAT_00151464)" (( "(") (identifier "DAT_00151464") () ")"))))) (; ";")) (expression_statement "glob_ignore_case = 0;" (assignment_expression "glob_ignore_case = 0" (identifier "glob_ignore_case") (= "=") (number_literal "0")) (; ";")) (if_statement "if ((puVar6 == (undefined4 *)PTR_glob_error_return_00149f60) || (puVar6 == (undefined4 *)0x0)) {\n      DAT_001514d4 = (undefined4 *)0x0;\n      pcVar3 = (char *)0x0;\n      goto LAB_0008d5c8;\n    }" (if "if") (parenthesized_expression "((puVar6 == (undefined4 *)PTR_glob_error_return_00149f60) || (puVar6 == (undefined4 *)0x0))" (( "(") (binary_expression "(puVar6 == (undefined4 *)PTR_glob_error_return_00149f60) || (puVar6 == (undefined4 *)0x0)" (parenthesized_expression "(puVar6 == (undefined4 *)PTR_glob_error_return_00149f60)" (( "(") (binary_expression "puVar6 == (undefined4 *)PTR_glob_error_return_00149f60" (identifier "puVar6") (== "==") (cast_expression "(undefined4 *)PTR_glob_error_return_00149f60" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_glob_error_return_00149f60"))) () ")")) (|| "||") (parenthesized_expression "(puVar6 == (undefined4 *)0x0)" (( "(") (binary_expression "puVar6 == (undefined4 *)0x0" (identifier "puVar6") (== "==") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")"))) () ")")) (compound_statement "{\n      DAT_001514d4 = (undefined4 *)0x0;\n      pcVar3 = (char *)0x0;\n      goto LAB_0008d5c8;\n    }" ({ "{") (expression_statement "DAT_001514d4 = (undefined4 *)0x0;" (assignment_expression "DAT_001514d4 = (undefined4 *)0x0" (identifier "DAT_001514d4") (= "=") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "pcVar3 = (char *)0x0;" (assignment_expression "pcVar3 = (char *)0x0" (identifier "pcVar3") (= "=") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (goto_statement "goto LAB_0008d5c8;" (goto "goto") (statement_identifier "LAB_0008d5c8") (; ";")) (} "}"))) (expression_statement "DAT_0015142c = 0;" (assignment_expression "DAT_0015142c = 0" (identifier "DAT_0015142c") (= "=") (number_literal "0")) (; ";")) (expression_statement "DAT_001514d4 = puVar6;" (assignment_expression "DAT_001514d4 = puVar6" (identifier "DAT_001514d4") (= "=") (identifier "puVar6")) (; ";")) (if_statement "if ((puVar6[1] != 0) && (rl_completion_type == 9)) {\nLAB_0008dac4:\n      pcVar3 = (char *)0x0;\n      goto LAB_0008d5c8;\n    }" (if "if") (parenthesized_expression "((puVar6[1] != 0) && (rl_completion_type == 9))" (( "(") (binary_expression "(puVar6[1] != 0) && (rl_completion_type == 9)" (parenthesized_expression "(puVar6[1] != 0)" (( "(") (binary_expression "puVar6[1] != 0" (subscript_expression "puVar6[1]" (identifier "puVar6") ([ "[") (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 "{\nLAB_0008dac4:\n      pcVar3 = (char *)0x0;\n      goto LAB_0008d5c8;\n    }" ({ "{") (labeled_statement "LAB_0008dac4:\n      pcVar3 = (char *)0x0;" (statement_identifier "LAB_0008dac4") (: ":") (expression_statement "pcVar3 = (char *)0x0;" (assignment_expression "pcVar3 = (char *)0x0" (identifier "pcVar3") (= "=") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";"))) (goto_statement "goto LAB_0008d5c8;" (goto "goto") (statement_identifier "LAB_0008d5c8") (; ";")) (} "}"))) (expression_statement "iVar2 = 1;" (assignment_expression "iVar2 = 1" (identifier "iVar2") (= "=") (number_literal "1")) (; ";")) (} "}")) (else_clause "else {\nLAB_0008d390:\n    pcVar3 = DAT_00151464;\n    uVar8 = DAT_00151450;\n    sVar4 = DAT_00151444;\n    pvVar1 = DAT_00151424;\n    iVar2 = DAT_0015142c;\n    if (DAT_0015145c == 1) {\nLAB_0008d960:\n      do {\n        pcVar5 = (&word_token_alist)[iVar2 * 2];\n        if (pcVar5 == (char *)0x0) {\n          DAT_0015142c = 0;\n          DAT_0015145c = DAT_0015145c + 1;\n          uVar8 = DAT_00151450;\n          pvVar1 = DAT_00151428;\n          goto LAB_0008d840;\n        }\n        iVar2 = iVar2 + 1;\n        DAT_0015142c = iVar2;\n      } while ((sVar4 != 0) &&\n              ((*pcVar5 != *pcVar3 || (iVar9 = strncmp(pcVar5,pcVar3,sVar4), iVar9 != 0))));\nLAB_0008d451:\n      sVar4 = strlen(pcVar5);\n      pcVar3 = (char *)xmalloc(sVar4 + 1);\n      pcVar3 = strcpy(pcVar3,pcVar5);\n      goto LAB_0008d5c8;\n    }\n    if (DAT_0015145c < 2) {\n      if (DAT_0015145c == 0) {\n        do {\n          while( true ) {\n            if ((pvVar1 == (void *)0x0) ||\n               (puVar6 = *(undefined4 **)((int)pvVar1 + DAT_0015142c * 4),\n               puVar6 == (undefined4 *)0x0)) {\n              DAT_0015145c = 1;\n              iVar2 = 0;\n              goto LAB_0008d960;\n            }\n            DAT_0015142c = DAT_0015142c + 1;\n            pcVar5 = (char *)*puVar6;\n            if (uVar8 != 0) break;\n            if ((sVar4 == 0) ||\n               ((*pcVar5 == *pcVar3 && (iVar2 = strncmp(pcVar5,pcVar3,sVar4), iVar2 == 0))))\n            goto LAB_0008d451;\n          }\n          iVar2 = strncasecmp(pcVar5,pcVar3,sVar4);\n        } while (iVar2 != 0);\n        goto LAB_0008d451;\n      }\n    }\n    else {\n      pvVar1 = DAT_00151428;\n      if (DAT_0015145c == 2) {\nLAB_0008d840:\n        do {\n          if ((pvVar1 == (void *)0x0) ||\n             (puVar6 = *(undefined4 **)((int)pvVar1 + DAT_0015142c * 4), puVar6 == (undefined4 *)0x0\n             )) {\n            DAT_0015142c = 0;\n            DAT_0015145c = DAT_0015145c + 1;\n            goto LAB_0008d3bd;\n          }\n          DAT_0015142c = DAT_0015142c + 1;\n          pcVar5 = (char *)*puVar6;\n          if (uVar8 == 0) {\n            if ((sVar4 == 0) ||\n               ((*pcVar5 == *pcVar3 && (iVar2 = strncmp(pcVar5,pcVar3,sVar4), iVar2 == 0)))) break;\n            goto LAB_0008d840;\n          }\n          iVar2 = strncasecmp(pcVar5,pcVar3,sVar4);\n        } while (iVar2 != 0);\n        sVar4 = strlen(pcVar5);\n        pcVar3 = (char *)xmalloc(sVar4 + 1);\n        pcVar3 = strcpy(pcVar3,pcVar5);\n        goto LAB_0008d5c8;\n      }\n      if (DAT_0015145c == 3) {\nLAB_0008d3bd:\n        pcVar3 = DAT_00151464;\n        sVar4 = DAT_00151444;\n        iVar2 = num_shell_builtins;\n        if (DAT_0015142c < num_shell_builtins) {\n          puVar6 = (undefined4 *)(shell_builtins + DAT_0015142c * 0x18);\n          do {\n            iVar9 = DAT_0015142c;\n            if (((puVar6[1] != 0) && ((*(byte *)(puVar6 + 2) & 1) != 0)) &&\n               ((pcVar5 = (char *)*puVar6, sVar4 == 0 ||\n                ((*pcVar5 == *pcVar3 && (iVar7 = strncmp(pcVar5,pcVar3,sVar4), iVar7 == 0)))))) {\n              DAT_0015142c = iVar9 + 1;\n              goto LAB_0008d451;\n            }\n            DAT_0015142c = iVar9 + 1;\n            puVar6 = puVar6 + 6;\n          } while (DAT_0015142c != iVar2);\n        }\n        DAT_0015145c = DAT_0015145c + 1;\n        DAT_0015142c = 0;\n      }\n    }\n    if (DAT_0015144c == 0) {\n      if (DAT_00151458 == 0) goto LAB_0008d5f6;\n      DAT_00151458 = 0;\n      sVar4 = strlen(param_1);\n      pcVar3 = (char *)xmalloc(sVar4 + 1);\n      pcVar3 = strcpy(pcVar3,param_1);\n      goto LAB_0008d5c8;\n    }\n    if (param_2 == 0) goto LAB_0008d218;\n    iVar2 = DAT_0015142c + 1;\n    puVar6 = DAT_001514d4 + DAT_0015142c;\n  }" (else "else") (compound_statement "{\nLAB_0008d390:\n    pcVar3 = DAT_00151464;\n    uVar8 = DAT_00151450;\n    sVar4 = DAT_00151444;\n    pvVar1 = DAT_00151424;\n    iVar2 = DAT_0015142c;\n    if (DAT_0015145c == 1) {\nLAB_0008d960:\n      do {\n        pcVar5 = (&word_token_alist)[iVar2 * 2];\n        if (pcVar5 == (char *)0x0) {\n          DAT_0015142c = 0;\n          DAT_0015145c = DAT_0015145c + 1;\n          uVar8 = DAT_00151450;\n          pvVar1 = DAT_00151428;\n          goto LAB_0008d840;\n        }\n        iVar2 = iVar2 + 1;\n        DAT_0015142c = iVar2;\n      } while ((sVar4 != 0) &&\n              ((*pcVar5 != *pcVar3 || (iVar9 = strncmp(pcVar5,pcVar3,sVar4), iVar9 != 0))));\nLAB_0008d451:\n      sVar4 = strlen(pcVar5);\n      pcVar3 = (char *)xmalloc(sVar4 + 1);\n      pcVar3 = strcpy(pcVar3,pcVar5);\n      goto LAB_0008d5c8;\n    }\n    if (DAT_0015145c < 2) {\n      if (DAT_0015145c == 0) {\n        do {\n          while( true ) {\n            if ((pvVar1 == (void *)0x0) ||\n               (puVar6 = *(undefined4 **)((int)pvVar1 + DAT_0015142c * 4),\n               puVar6 == (undefined4 *)0x0)) {\n              DAT_0015145c = 1;\n              iVar2 = 0;\n              goto LAB_0008d960;\n            }\n            DAT_0015142c = DAT_0015142c + 1;\n            pcVar5 = (char *)*puVar6;\n            if (uVar8 != 0) break;\n            if ((sVar4 == 0) ||\n               ((*pcVar5 == *pcVar3 && (iVar2 = strncmp(pcVar5,pcVar3,sVar4), iVar2 == 0))))\n            goto LAB_0008d451;\n          }\n          iVar2 = strncasecmp(pcVar5,pcVar3,sVar4);\n        } while (iVar2 != 0);\n        goto LAB_0008d451;\n      }\n    }\n    else {\n      pvVar1 = DAT_00151428;\n      if (DAT_0015145c == 2) {\nLAB_0008d840:\n        do {\n          if ((pvVar1 == (void *)0x0) ||\n             (puVar6 = *(undefined4 **)((int)pvVar1 + DAT_0015142c * 4), puVar6 == (undefined4 *)0x0\n             )) {\n            DAT_0015142c = 0;\n            DAT_0015145c = DAT_0015145c + 1;\n            goto LAB_0008d3bd;\n          }\n          DAT_0015142c = DAT_0015142c + 1;\n          pcVar5 = (char *)*puVar6;\n          if (uVar8 == 0) {\n            if ((sVar4 == 0) ||\n               ((*pcVar5 == *pcVar3 && (iVar2 = strncmp(pcVar5,pcVar3,sVar4), iVar2 == 0)))) break;\n            goto LAB_0008d840;\n          }\n          iVar2 = strncasecmp(pcVar5,pcVar3,sVar4);\n        } while (iVar2 != 0);\n        sVar4 = strlen(pcVar5);\n        pcVar3 = (char *)xmalloc(sVar4 + 1);\n        pcVar3 = strcpy(pcVar3,pcVar5);\n        goto LAB_0008d5c8;\n      }\n      if (DAT_0015145c == 3) {\nLAB_0008d3bd:\n        pcVar3 = DAT_00151464;\n        sVar4 = DAT_00151444;\n        iVar2 = num_shell_builtins;\n        if (DAT_0015142c < num_shell_builtins) {\n          puVar6 = (undefined4 *)(shell_builtins + DAT_0015142c * 0x18);\n          do {\n            iVar9 = DAT_0015142c;\n            if (((puVar6[1] != 0) && ((*(byte *)(puVar6 + 2) & 1) != 0)) &&\n               ((pcVar5 = (char *)*puVar6, sVar4 == 0 ||\n                ((*pcVar5 == *pcVar3 && (iVar7 = strncmp(pcVar5,pcVar3,sVar4), iVar7 == 0)))))) {\n              DAT_0015142c = iVar9 + 1;\n              goto LAB_0008d451;\n            }\n            DAT_0015142c = iVar9 + 1;\n            puVar6 = puVar6 + 6;\n          } while (DAT_0015142c != iVar2);\n        }\n        DAT_0015145c = DAT_0015145c + 1;\n        DAT_0015142c = 0;\n      }\n    }\n    if (DAT_0015144c == 0) {\n      if (DAT_00151458 == 0) goto LAB_0008d5f6;\n      DAT_00151458 = 0;\n      sVar4 = strlen(param_1);\n      pcVar3 = (char *)xmalloc(sVar4 + 1);\n      pcVar3 = strcpy(pcVar3,param_1);\n      goto LAB_0008d5c8;\n    }\n    if (param_2 == 0) goto LAB_0008d218;\n    iVar2 = DAT_0015142c + 1;\n    puVar6 = DAT_001514d4 + DAT_0015142c;\n  }" ({ "{") (labeled_statement "LAB_0008d390:\n    pcVar3 = DAT_00151464;" (statement_identifier "LAB_0008d390") (: ":") (expression_statement "pcVar3 = DAT_00151464;" (assignment_expression "pcVar3 = DAT_00151464" (identifier "pcVar3") (= "=") (identifier "DAT_00151464")) (; ";"))) (expression_statement "uVar8 = DAT_00151450;" (assignment_expression "uVar8 = DAT_00151450" (identifier "uVar8") (= "=") (identifier "DAT_00151450")) (; ";")) (expression_statement "sVar4 = DAT_00151444;" (assignment_expression "sVar4 = DAT_00151444" (identifier "sVar4") (= "=") (identifier "DAT_00151444")) (; ";")) (expression_statement "pvVar1 = DAT_00151424;" (assignment_expression "pvVar1 = DAT_00151424" (identifier "pvVar1") (= "=") (identifier "DAT_00151424")) (; ";")) (expression_statement "iVar2 = DAT_0015142c;" (assignment_expression "iVar2 = DAT_0015142c" (identifier "iVar2") (= "=") (identifier "DAT_0015142c")) (; ";")) (if_statement "if (DAT_0015145c == 1) {\nLAB_0008d960:\n      do {\n        pcVar5 = (&word_token_alist)[iVar2 * 2];\n        if (pcVar5 == (char *)0x0) {\n          DAT_0015142c = 0;\n          DAT_0015145c = DAT_0015145c + 1;\n          uVar8 = DAT_00151450;\n          pvVar1 = DAT_00151428;\n          goto LAB_0008d840;\n        }\n        iVar2 = iVar2 + 1;\n        DAT_0015142c = iVar2;\n      } while ((sVar4 != 0) &&\n              ((*pcVar5 != *pcVar3 || (iVar9 = strncmp(pcVar5,pcVar3,sVar4), iVar9 != 0))));\nLAB_0008d451:\n      sVar4 = strlen(pcVar5);\n      pcVar3 = (char *)xmalloc(sVar4 + 1);\n      pcVar3 = strcpy(pcVar3,pcVar5);\n      goto LAB_0008d5c8;\n    }" (if "if") (parenthesized_expression "(DAT_0015145c == 1)" (( "(") (binary_expression "DAT_0015145c == 1" (identifier "DAT_0015145c") (== "==") (number_literal "1")) () ")")) (compound_statement "{\nLAB_0008d960:\n      do {\n        pcVar5 = (&word_token_alist)[iVar2 * 2];\n        if (pcVar5 == (char *)0x0) {\n          DAT_0015142c = 0;\n          DAT_0015145c = DAT_0015145c + 1;\n          uVar8 = DAT_00151450;\n          pvVar1 = DAT_00151428;\n          goto LAB_0008d840;\n        }\n        iVar2 = iVar2 + 1;\n        DAT_0015142c = iVar2;\n      } while ((sVar4 != 0) &&\n              ((*pcVar5 != *pcVar3 || (iVar9 = strncmp(pcVar5,pcVar3,sVar4), iVar9 != 0))));\nLAB_0008d451:\n      sVar4 = strlen(pcVar5);\n      pcVar3 = (char *)xmalloc(sVar4 + 1);\n      pcVar3 = strcpy(pcVar3,pcVar5);\n      goto LAB_0008d5c8;\n    }" ({ "{") (labeled_statement "LAB_0008d960:\n      do {\n        pcVar5 = (&word_token_alist)[iVar2 * 2];\n        if (pcVar5 == (char *)0x0) {\n          DAT_0015142c = 0;\n          DAT_0015145c = DAT_0015145c + 1;\n          uVar8 = DAT_00151450;\n          pvVar1 = DAT_00151428;\n          goto LAB_0008d840;\n        }\n        iVar2 = iVar2 + 1;\n        DAT_0015142c = iVar2;\n      } while ((sVar4 != 0) &&\n              ((*pcVar5 != *pcVar3 || (iVar9 = strncmp(pcVar5,pcVar3,sVar4), iVar9 != 0))));" (statement_identifier "LAB_0008d960") (: ":") (do_statement "do {\n        pcVar5 = (&word_token_alist)[iVar2 * 2];\n        if (pcVar5 == (char *)0x0) {\n          DAT_0015142c = 0;\n          DAT_0015145c = DAT_0015145c + 1;\n          uVar8 = DAT_00151450;\n          pvVar1 = DAT_00151428;\n          goto LAB_0008d840;\n        }\n        iVar2 = iVar2 + 1;\n        DAT_0015142c = iVar2;\n      } while ((sVar4 != 0) &&\n              ((*pcVar5 != *pcVar3 || (iVar9 = strncmp(pcVar5,pcVar3,sVar4), iVar9 != 0))));" (do "do") (compound_statement "{\n        pcVar5 = (&word_token_alist)[iVar2 * 2];\n        if (pcVar5 == (char *)0x0) {\n          DAT_0015142c = 0;\n          DAT_0015145c = DAT_0015145c + 1;\n          uVar8 = DAT_00151450;\n          pvVar1 = DAT_00151428;\n          goto LAB_0008d840;\n        }\n        iVar2 = iVar2 + 1;\n        DAT_0015142c = iVar2;\n      }" ({ "{") (expression_statement "pcVar5 = (&word_token_alist)[iVar2 * 2];" (assignment_expression "pcVar5 = (&word_token_alist)[iVar2 * 2]" (identifier "pcVar5") (= "=") (subscript_expression "(&word_token_alist)[iVar2 * 2]" (parenthesized_expression "(&word_token_alist)" (( "(") (pointer_expression "&word_token_alist" (& "&") (identifier "word_token_alist")) () ")")) ([ "[") (binary_expression "iVar2 * 2" (identifier "iVar2") (* "*") (number_literal "2")) (] "]"))) (; ";")) (if_statement "if (pcVar5 == (char *)0x0) {\n          DAT_0015142c = 0;\n          DAT_0015145c = DAT_0015145c + 1;\n          uVar8 = DAT_00151450;\n          pvVar1 = DAT_00151428;\n          goto LAB_0008d840;\n        }" (if "if") (parenthesized_expression "(pcVar5 == (char *)0x0)" (( "(") (binary_expression "pcVar5 == (char *)0x0" (identifier "pcVar5") (== "==") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n          DAT_0015142c = 0;\n          DAT_0015145c = DAT_0015145c + 1;\n          uVar8 = DAT_00151450;\n          pvVar1 = DAT_00151428;\n          goto LAB_0008d840;\n        }" ({ "{") (expression_statement "DAT_0015142c = 0;" (assignment_expression "DAT_0015142c = 0" (identifier "DAT_0015142c") (= "=") (number_literal "0")) (; ";")) (expression_statement "DAT_0015145c = DAT_0015145c + 1;" (assignment_expression "DAT_0015145c = DAT_0015145c + 1" (identifier "DAT_0015145c") (= "=") (binary_expression "DAT_0015145c + 1" (identifier "DAT_0015145c") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "uVar8 = DAT_00151450;" (assignment_expression "uVar8 = DAT_00151450" (identifier "uVar8") (= "=") (identifier "DAT_00151450")) (; ";")) (expression_statement "pvVar1 = DAT_00151428;" (assignment_expression "pvVar1 = DAT_00151428" (identifier "pvVar1") (= "=") (identifier "DAT_00151428")) (; ";")) (goto_statement "goto LAB_0008d840;" (goto "goto") (statement_identifier "LAB_0008d840") (; ";")) (} "}"))) (expression_statement "iVar2 = iVar2 + 1;" (assignment_expression "iVar2 = iVar2 + 1" (identifier "iVar2") (= "=") (binary_expression "iVar2 + 1" (identifier "iVar2") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "DAT_0015142c = iVar2;" (assignment_expression "DAT_0015142c = iVar2" (identifier "DAT_0015142c") (= "=") (identifier "iVar2")) (; ";")) (} "}")) (while "while") (parenthesized_expression "((sVar4 != 0) &&\n              ((*pcVar5 != *pcVar3 || (iVar9 = strncmp(pcVar5,pcVar3,sVar4), iVar9 != 0))))" (( "(") (binary_expression "(sVar4 != 0) &&\n              ((*pcVar5 != *pcVar3 || (iVar9 = strncmp(pcVar5,pcVar3,sVar4), iVar9 != 0)))" (parenthesized_expression "(sVar4 != 0)" (( "(") (binary_expression "sVar4 != 0" (identifier "sVar4") (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "((*pcVar5 != *pcVar3 || (iVar9 = strncmp(pcVar5,pcVar3,sVar4), iVar9 != 0)))" (( "(") (parenthesized_expression "(*pcVar5 != *pcVar3 || (iVar9 = strncmp(pcVar5,pcVar3,sVar4), iVar9 != 0))" (( "(") (binary_expression "*pcVar5 != *pcVar3 || (iVar9 = strncmp(pcVar5,pcVar3,sVar4), iVar9 != 0)" (binary_expression "*pcVar5 != *pcVar3" (pointer_expression "*pcVar5" (* "*") (identifier "pcVar5")) (!= "!=") (pointer_expression "*pcVar3" (* "*") (identifier "pcVar3"))) (|| "||") (parenthesized_expression "(iVar9 = strncmp(pcVar5,pcVar3,sVar4), iVar9 != 0)" (( "(") (comma_expression "iVar9 = strncmp(pcVar5,pcVar3,sVar4), iVar9 != 0" (assignment_expression "iVar9 = strncmp(pcVar5,pcVar3,sVar4)" (identifier "iVar9") (= "=") (call_expression "strncmp(pcVar5,pcVar3,sVar4)" (identifier "strncmp") (argument_list "(pcVar5,pcVar3,sVar4)" (( "(") (identifier "pcVar5") (, ",") (identifier "pcVar3") (, ",") (identifier "sVar4") () ")")))) (, ",") (binary_expression "iVar9 != 0" (identifier "iVar9") (!= "!=") (number_literal "0"))) () ")"))) () ")")) () ")"))) () ")")) (; ";"))) (labeled_statement "LAB_0008d451:\n      sVar4 = strlen(pcVar5);" (statement_identifier "LAB_0008d451") (: ":") (expression_statement "sVar4 = strlen(pcVar5);" (assignment_expression "sVar4 = strlen(pcVar5)" (identifier "sVar4") (= "=") (call_expression "strlen(pcVar5)" (identifier "strlen") (argument_list "(pcVar5)" (( "(") (identifier "pcVar5") () ")")))) (; ";"))) (expression_statement "pcVar3 = (char *)xmalloc(sVar4 + 1);" (assignment_expression "pcVar3 = (char *)xmalloc(sVar4 + 1)" (identifier "pcVar3") (= "=") (cast_expression "(char *)xmalloc(sVar4 + 1)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "xmalloc(sVar4 + 1)" (identifier "xmalloc") (argument_list "(sVar4 + 1)" (( "(") (binary_expression "sVar4 + 1" (identifier "sVar4") (+ "+") (number_literal "1")) () ")"))))) (; ";")) (expression_statement "pcVar3 = strcpy(pcVar3,pcVar5);" (assignment_expression "pcVar3 = strcpy(pcVar3,pcVar5)" (identifier "pcVar3") (= "=") (call_expression "strcpy(pcVar3,pcVar5)" (identifier "strcpy") (argument_list "(pcVar3,pcVar5)" (( "(") (identifier "pcVar3") (, ",") (identifier "pcVar5") () ")")))) (; ";")) (goto_statement "goto LAB_0008d5c8;" (goto "goto") (statement_identifier "LAB_0008d5c8") (; ";")) (} "}"))) (if_statement "if (DAT_0015145c < 2) {\n      if (DAT_0015145c == 0) {\n        do {\n          while( true ) {\n            if ((pvVar1 == (void *)0x0) ||\n               (puVar6 = *(undefined4 **)((int)pvVar1 + DAT_0015142c * 4),\n               puVar6 == (undefined4 *)0x0)) {\n              DAT_0015145c = 1;\n              iVar2 = 0;\n              goto LAB_0008d960;\n            }\n            DAT_0015142c = DAT_0015142c + 1;\n            pcVar5 = (char *)*puVar6;\n            if (uVar8 != 0) break;\n            if ((sVar4 == 0) ||\n               ((*pcVar5 == *pcVar3 && (iVar2 = strncmp(pcVar5,pcVar3,sVar4), iVar2 == 0))))\n            goto LAB_0008d451;\n          }\n          iVar2 = strncasecmp(pcVar5,pcVar3,sVar4);\n        } while (iVar2 != 0);\n        goto LAB_0008d451;\n      }\n    }\n    else {\n      pvVar1 = DAT_00151428;\n      if (DAT_0015145c == 2) {\nLAB_0008d840:\n        do {\n          if ((pvVar1 == (void *)0x0) ||\n             (puVar6 = *(undefined4 **)((int)pvVar1 + DAT_0015142c * 4), puVar6 == (undefined4 *)0x0\n             )) {\n            DAT_0015142c = 0;\n            DAT_0015145c = DAT_0015145c + 1;\n            goto LAB_0008d3bd;\n          }\n          DAT_0015142c = DAT_0015142c + 1;\n          pcVar5 = (char *)*puVar6;\n          if (uVar8 == 0) {\n            if ((sVar4 == 0) ||\n               ((*pcVar5 == *pcVar3 && (iVar2 = strncmp(pcVar5,pcVar3,sVar4), iVar2 == 0)))) break;\n            goto LAB_0008d840;\n          }\n          iVar2 = strncasecmp(pcVar5,pcVar3,sVar4);\n        } while (iVar2 != 0);\n        sVar4 = strlen(pcVar5);\n        pcVar3 = (char *)xmalloc(sVar4 + 1);\n        pcVar3 = strcpy(pcVar3,pcVar5);\n        goto LAB_0008d5c8;\n      }\n      if (DAT_0015145c == 3) {\nLAB_0008d3bd:\n        pcVar3 = DAT_00151464;\n        sVar4 = DAT_00151444;\n        iVar2 = num_shell_builtins;\n        if (DAT_0015142c < num_shell_builtins) {\n          puVar6 = (undefined4 *)(shell_builtins + DAT_0015142c * 0x18);\n          do {\n            iVar9 = DAT_0015142c;\n            if (((puVar6[1] != 0) && ((*(byte *)(puVar6 + 2) & 1) != 0)) &&\n               ((pcVar5 = (char *)*puVar6, sVar4 == 0 ||\n                ((*pcVar5 == *pcVar3 && (iVar7 = strncmp(pcVar5,pcVar3,sVar4), iVar7 == 0)))))) {\n              DAT_0015142c = iVar9 + 1;\n              goto LAB_0008d451;\n            }\n            DAT_0015142c = iVar9 + 1;\n            puVar6 = puVar6 + 6;\n          } while (DAT_0015142c != iVar2);\n        }\n        DAT_0015145c = DAT_0015145c + 1;\n        DAT_0015142c = 0;\n      }\n    }" (if "if") (parenthesized_expression "(DAT_0015145c < 2)" (( "(") (binary_expression "DAT_0015145c < 2" (identifier "DAT_0015145c") (< "<") (number_literal "2")) () ")")) (compound_statement "{\n      if (DAT_0015145c == 0) {\n        do {\n          while( true ) {\n            if ((pvVar1 == (void *)0x0) ||\n               (puVar6 = *(undefined4 **)((int)pvVar1 + DAT_0015142c * 4),\n               puVar6 == (undefined4 *)0x0)) {\n              DAT_0015145c = 1;\n              iVar2 = 0;\n              goto LAB_0008d960;\n            }\n            DAT_0015142c = DAT_0015142c + 1;\n            pcVar5 = (char *)*puVar6;\n            if (uVar8 != 0) break;\n            if ((sVar4 == 0) ||\n               ((*pcVar5 == *pcVar3 && (iVar2 = strncmp(pcVar5,pcVar3,sVar4), iVar2 == 0))))\n            goto LAB_0008d451;\n          }\n          iVar2 = strncasecmp(pcVar5,pcVar3,sVar4);\n        } while (iVar2 != 0);\n        goto LAB_0008d451;\n      }\n    }" ({ "{") (if_statement "if (DAT_0015145c == 0) {\n        do {\n          while( true ) {\n            if ((pvVar1 == (void *)0x0) ||\n               (puVar6 = *(undefined4 **)((int)pvVar1 + DAT_0015142c * 4),\n               puVar6 == (undefined4 *)0x0)) {\n              DAT_0015145c = 1;\n              iVar2 = 0;\n              goto LAB_0008d960;\n            }\n            DAT_0015142c = DAT_0015142c + 1;\n            pcVar5 = (char *)*puVar6;\n            if (uVar8 != 0) break;\n            if ((sVar4 == 0) ||\n               ((*pcVar5 == *pcVar3 && (iVar2 = strncmp(pcVar5,pcVar3,sVar4), iVar2 == 0))))\n            goto LAB_0008d451;\n          }\n          iVar2 = strncasecmp(pcVar5,pcVar3,sVar4);\n        } while (iVar2 != 0);\n        goto LAB_0008d451;\n      }" (if "if") (parenthesized_expression "(DAT_0015145c == 0)" (( "(") (binary_expression "DAT_0015145c == 0" (identifier "DAT_0015145c") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        do {\n          while( true ) {\n            if ((pvVar1 == (void *)0x0) ||\n               (puVar6 = *(undefined4 **)((int)pvVar1 + DAT_0015142c * 4),\n               puVar6 == (undefined4 *)0x0)) {\n              DAT_0015145c = 1;\n              iVar2 = 0;\n              goto LAB_0008d960;\n            }\n            DAT_0015142c = DAT_0015142c + 1;\n            pcVar5 = (char *)*puVar6;\n            if (uVar8 != 0) break;\n            if ((sVar4 == 0) ||\n               ((*pcVar5 == *pcVar3 && (iVar2 = strncmp(pcVar5,pcVar3,sVar4), iVar2 == 0))))\n            goto LAB_0008d451;\n          }\n          iVar2 = strncasecmp(pcVar5,pcVar3,sVar4);\n        } while (iVar2 != 0);\n        goto LAB_0008d451;\n      }" ({ "{") (do_statement "do {\n          while( true ) {\n            if ((pvVar1 == (void *)0x0) ||\n               (puVar6 = *(undefined4 **)((int)pvVar1 + DAT_0015142c * 4),\n               puVar6 == (undefined4 *)0x0)) {\n              DAT_0015145c = 1;\n              iVar2 = 0;\n              goto LAB_0008d960;\n            }\n            DAT_0015142c = DAT_0015142c + 1;\n            pcVar5 = (char *)*puVar6;\n            if (uVar8 != 0) break;\n            if ((sVar4 == 0) ||\n               ((*pcVar5 == *pcVar3 && (iVar2 = strncmp(pcVar5,pcVar3,sVar4), iVar2 == 0))))\n            goto LAB_0008d451;\n          }\n          iVar2 = strncasecmp(pcVar5,pcVar3,sVar4);\n        } while (iVar2 != 0);" (do "do") (compound_statement "{\n          while( true ) {\n            if ((pvVar1 == (void *)0x0) ||\n               (puVar6 = *(undefined4 **)((int)pvVar1 + DAT_0015142c * 4),\n               puVar6 == (undefined4 *)0x0)) {\n              DAT_0015145c = 1;\n              iVar2 = 0;\n              goto LAB_0008d960;\n            }\n            DAT_0015142c = DAT_0015142c + 1;\n            pcVar5 = (char *)*puVar6;\n            if (uVar8 != 0) break;\n            if ((sVar4 == 0) ||\n               ((*pcVar5 == *pcVar3 && (iVar2 = strncmp(pcVar5,pcVar3,sVar4), iVar2 == 0))))\n            goto LAB_0008d451;\n          }\n          iVar2 = strncasecmp(pcVar5,pcVar3,sVar4);\n        }" ({ "{") (while_statement "while( true ) {\n            if ((pvVar1 == (void *)0x0) ||\n               (puVar6 = *(undefined4 **)((int)pvVar1 + DAT_0015142c * 4),\n               puVar6 == (undefined4 *)0x0)) {\n              DAT_0015145c = 1;\n              iVar2 = 0;\n              goto LAB_0008d960;\n            }\n            DAT_0015142c = DAT_0015142c + 1;\n            pcVar5 = (char *)*puVar6;\n            if (uVar8 != 0) break;\n            if ((sVar4 == 0) ||\n               ((*pcVar5 == *pcVar3 && (iVar2 = strncmp(pcVar5,pcVar3,sVar4), iVar2 == 0))))\n            goto LAB_0008d451;\n          }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n            if ((pvVar1 == (void *)0x0) ||\n               (puVar6 = *(undefined4 **)((int)pvVar1 + DAT_0015142c * 4),\n               puVar6 == (undefined4 *)0x0)) {\n              DAT_0015145c = 1;\n              iVar2 = 0;\n              goto LAB_0008d960;\n            }\n            DAT_0015142c = DAT_0015142c + 1;\n            pcVar5 = (char *)*puVar6;\n            if (uVar8 != 0) break;\n            if ((sVar4 == 0) ||\n               ((*pcVar5 == *pcVar3 && (iVar2 = strncmp(pcVar5,pcVar3,sVar4), iVar2 == 0))))\n            goto LAB_0008d451;\n          }" ({ "{") (if_statement "if ((pvVar1 == (void *)0x0) ||\n               (puVar6 = *(undefined4 **)((int)pvVar1 + DAT_0015142c * 4),\n               puVar6 == (undefined4 *)0x0)) {\n              DAT_0015145c = 1;\n              iVar2 = 0;\n              goto LAB_0008d960;\n            }" (if "if") (parenthesized_expression "((pvVar1 == (void *)0x0) ||\n               (puVar6 = *(undefined4 **)((int)pvVar1 + DAT_0015142c * 4),\n               puVar6 == (undefined4 *)0x0))" (( "(") (binary_expression "(pvVar1 == (void *)0x0) ||\n               (puVar6 = *(undefined4 **)((int)pvVar1 + DAT_0015142c * 4),\n               puVar6 == (undefined4 *)0x0)" (parenthesized_expression "(pvVar1 == (void *)0x0)" (( "(") (binary_expression "pvVar1 == (void *)0x0" (identifier "pvVar1") (== "==") (cast_expression "(void *)0x0" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (|| "||") (parenthesized_expression "(puVar6 = *(undefined4 **)((int)pvVar1 + DAT_0015142c * 4),\n               puVar6 == (undefined4 *)0x0)" (( "(") (comma_expression "puVar6 = *(undefined4 **)((int)pvVar1 + DAT_0015142c * 4),\n               puVar6 == (undefined4 *)0x0" (assignment_expression "puVar6 = *(undefined4 **)((int)pvVar1 + DAT_0015142c * 4)" (identifier "puVar6") (= "=") (pointer_expression "*(undefined4 **)((int)pvVar1 + DAT_0015142c * 4)" (* "*") (cast_expression "(undefined4 **)((int)pvVar1 + DAT_0015142c * 4)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "((int)pvVar1 + DAT_0015142c * 4)" (( "(") (binary_expression "(int)pvVar1 + DAT_0015142c * 4" (cast_expression "(int)pvVar1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pvVar1")) (+ "+") (binary_expression "DAT_0015142c * 4" (identifier "DAT_0015142c") (* "*") (number_literal "4"))) () ")"))))) (, ",") (binary_expression "puVar6 == (undefined4 *)0x0" (identifier "puVar6") (== "==") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")))) () ")"))) () ")")) (compound_statement "{\n              DAT_0015145c = 1;\n              iVar2 = 0;\n              goto LAB_0008d960;\n            }" ({ "{") (expression_statement "DAT_0015145c = 1;" (assignment_expression "DAT_0015145c = 1" (identifier "DAT_0015145c") (= "=") (number_literal "1")) (; ";")) (expression_statement "iVar2 = 0;" (assignment_expression "iVar2 = 0" (identifier "iVar2") (= "=") (number_literal "0")) (; ";")) (goto_statement "goto LAB_0008d960;" (goto "goto") (statement_identifier "LAB_0008d960") (; ";")) (} "}"))) (expression_statement "DAT_0015142c = DAT_0015142c + 1;" (assignment_expression "DAT_0015142c = DAT_0015142c + 1" (identifier "DAT_0015142c") (= "=") (binary_expression "DAT_0015142c + 1" (identifier "DAT_0015142c") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "pcVar5 = (char *)*puVar6;" (assignment_expression "pcVar5 = (char *)*puVar6" (identifier "pcVar5") (= "=") (cast_expression "(char *)*puVar6" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar6" (* "*") (identifier "puVar6")))) (; ";")) (if_statement "if (uVar8 != 0) break;" (if "if") (parenthesized_expression "(uVar8 != 0)" (( "(") (binary_expression "uVar8 != 0" (identifier "uVar8") (!= "!=") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (if_statement "if ((sVar4 == 0) ||\n               ((*pcVar5 == *pcVar3 && (iVar2 = strncmp(pcVar5,pcVar3,sVar4), iVar2 == 0))))\n            goto LAB_0008d451;" (if "if") (parenthesized_expression "((sVar4 == 0) ||\n               ((*pcVar5 == *pcVar3 && (iVar2 = strncmp(pcVar5,pcVar3,sVar4), iVar2 == 0))))" (( "(") (binary_expression "(sVar4 == 0) ||\n               ((*pcVar5 == *pcVar3 && (iVar2 = strncmp(pcVar5,pcVar3,sVar4), iVar2 == 0)))" (parenthesized_expression "(sVar4 == 0)" (( "(") (binary_expression "sVar4 == 0" (identifier "sVar4") (== "==") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "((*pcVar5 == *pcVar3 && (iVar2 = strncmp(pcVar5,pcVar3,sVar4), iVar2 == 0)))" (( "(") (parenthesized_expression "(*pcVar5 == *pcVar3 && (iVar2 = strncmp(pcVar5,pcVar3,sVar4), iVar2 == 0))" (( "(") (binary_expression "*pcVar5 == *pcVar3 && (iVar2 = strncmp(pcVar5,pcVar3,sVar4), iVar2 == 0)" (binary_expression "*pcVar5 == *pcVar3" (pointer_expression "*pcVar5" (* "*") (identifier "pcVar5")) (== "==") (pointer_expression "*pcVar3" (* "*") (identifier "pcVar3"))) (&& "&&") (parenthesized_expression "(iVar2 = strncmp(pcVar5,pcVar3,sVar4), iVar2 == 0)" (( "(") (comma_expression "iVar2 = strncmp(pcVar5,pcVar3,sVar4), iVar2 == 0" (assignment_expression "iVar2 = strncmp(pcVar5,pcVar3,sVar4)" (identifier "iVar2") (= "=") (call_expression "strncmp(pcVar5,pcVar3,sVar4)" (identifier "strncmp") (argument_list "(pcVar5,pcVar3,sVar4)" (( "(") (identifier "pcVar5") (, ",") (identifier "pcVar3") (, ",") (identifier "sVar4") () ")")))) (, ",") (binary_expression "iVar2 == 0" (identifier "iVar2") (== "==") (number_literal "0"))) () ")"))) () ")")) () ")"))) () ")")) (goto_statement "goto LAB_0008d451;" (goto "goto") (statement_identifier "LAB_0008d451") (; ";"))) (} "}"))) (expression_statement "iVar2 = strncasecmp(pcVar5,pcVar3,sVar4);" (assignment_expression "iVar2 = strncasecmp(pcVar5,pcVar3,sVar4)" (identifier "iVar2") (= "=") (call_expression "strncasecmp(pcVar5,pcVar3,sVar4)" (identifier "strncasecmp") (argument_list "(pcVar5,pcVar3,sVar4)" (( "(") (identifier "pcVar5") (, ",") (identifier "pcVar3") (, ",") (identifier "sVar4") () ")")))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar2 != 0)" (( "(") (binary_expression "iVar2 != 0" (identifier "iVar2") (!= "!=") (number_literal "0")) () ")")) (; ";")) (goto_statement "goto LAB_0008d451;" (goto "goto") (statement_identifier "LAB_0008d451") (; ";")) (} "}"))) (} "}")) (else_clause "else {\n      pvVar1 = DAT_00151428;\n      if (DAT_0015145c == 2) {\nLAB_0008d840:\n        do {\n          if ((pvVar1 == (void *)0x0) ||\n             (puVar6 = *(undefined4 **)((int)pvVar1 + DAT_0015142c * 4), puVar6 == (undefined4 *)0x0\n             )) {\n            DAT_0015142c = 0;\n            DAT_0015145c = DAT_0015145c + 1;\n            goto LAB_0008d3bd;\n          }\n          DAT_0015142c = DAT_0015142c + 1;\n          pcVar5 = (char *)*puVar6;\n          if (uVar8 == 0) {\n            if ((sVar4 == 0) ||\n               ((*pcVar5 == *pcVar3 && (iVar2 = strncmp(pcVar5,pcVar3,sVar4), iVar2 == 0)))) break;\n            goto LAB_0008d840;\n          }\n          iVar2 = strncasecmp(pcVar5,pcVar3,sVar4);\n        } while (iVar2 != 0);\n        sVar4 = strlen(pcVar5);\n        pcVar3 = (char *)xmalloc(sVar4 + 1);\n        pcVar3 = strcpy(pcVar3,pcVar5);\n        goto LAB_0008d5c8;\n      }\n      if (DAT_0015145c == 3) {\nLAB_0008d3bd:\n        pcVar3 = DAT_00151464;\n        sVar4 = DAT_00151444;\n        iVar2 = num_shell_builtins;\n        if (DAT_0015142c < num_shell_builtins) {\n          puVar6 = (undefined4 *)(shell_builtins + DAT_0015142c * 0x18);\n          do {\n            iVar9 = DAT_0015142c;\n            if (((puVar6[1] != 0) && ((*(byte *)(puVar6 + 2) & 1) != 0)) &&\n               ((pcVar5 = (char *)*puVar6, sVar4 == 0 ||\n                ((*pcVar5 == *pcVar3 && (iVar7 = strncmp(pcVar5,pcVar3,sVar4), iVar7 == 0)))))) {\n              DAT_0015142c = iVar9 + 1;\n              goto LAB_0008d451;\n            }\n            DAT_0015142c = iVar9 + 1;\n            puVar6 = puVar6 + 6;\n          } while (DAT_0015142c != iVar2);\n        }\n        DAT_0015145c = DAT_0015145c + 1;\n        DAT_0015142c = 0;\n      }\n    }" (else "else") (compound_statement "{\n      pvVar1 = DAT_00151428;\n      if (DAT_0015145c == 2) {\nLAB_0008d840:\n        do {\n          if ((pvVar1 == (void *)0x0) ||\n             (puVar6 = *(undefined4 **)((int)pvVar1 + DAT_0015142c * 4), puVar6 == (undefined4 *)0x0\n             )) {\n            DAT_0015142c = 0;\n            DAT_0015145c = DAT_0015145c + 1;\n            goto LAB_0008d3bd;\n          }\n          DAT_0015142c = DAT_0015142c + 1;\n          pcVar5 = (char *)*puVar6;\n          if (uVar8 == 0) {\n            if ((sVar4 == 0) ||\n               ((*pcVar5 == *pcVar3 && (iVar2 = strncmp(pcVar5,pcVar3,sVar4), iVar2 == 0)))) break;\n            goto LAB_0008d840;\n          }\n          iVar2 = strncasecmp(pcVar5,pcVar3,sVar4);\n        } while (iVar2 != 0);\n        sVar4 = strlen(pcVar5);\n        pcVar3 = (char *)xmalloc(sVar4 + 1);\n        pcVar3 = strcpy(pcVar3,pcVar5);\n        goto LAB_0008d5c8;\n      }\n      if (DAT_0015145c == 3) {\nLAB_0008d3bd:\n        pcVar3 = DAT_00151464;\n        sVar4 = DAT_00151444;\n        iVar2 = num_shell_builtins;\n        if (DAT_0015142c < num_shell_builtins) {\n          puVar6 = (undefined4 *)(shell_builtins + DAT_0015142c * 0x18);\n          do {\n            iVar9 = DAT_0015142c;\n            if (((puVar6[1] != 0) && ((*(byte *)(puVar6 + 2) & 1) != 0)) &&\n               ((pcVar5 = (char *)*puVar6, sVar4 == 0 ||\n                ((*pcVar5 == *pcVar3 && (iVar7 = strncmp(pcVar5,pcVar3,sVar4), iVar7 == 0)))))) {\n              DAT_0015142c = iVar9 + 1;\n              goto LAB_0008d451;\n            }\n            DAT_0015142c = iVar9 + 1;\n            puVar6 = puVar6 + 6;\n          } while (DAT_0015142c != iVar2);\n        }\n        DAT_0015145c = DAT_0015145c + 1;\n        DAT_0015142c = 0;\n      }\n    }" ({ "{") (expression_statement "pvVar1 = DAT_00151428;" (assignment_expression "pvVar1 = DAT_00151428" (identifier "pvVar1") (= "=") (identifier "DAT_00151428")) (; ";")) (if_statement "if (DAT_0015145c == 2) {\nLAB_0008d840:\n        do {\n          if ((pvVar1 == (void *)0x0) ||\n             (puVar6 = *(undefined4 **)((int)pvVar1 + DAT_0015142c * 4), puVar6 == (undefined4 *)0x0\n             )) {\n            DAT_0015142c = 0;\n            DAT_0015145c = DAT_0015145c + 1;\n            goto LAB_0008d3bd;\n          }\n          DAT_0015142c = DAT_0015142c + 1;\n          pcVar5 = (char *)*puVar6;\n          if (uVar8 == 0) {\n            if ((sVar4 == 0) ||\n               ((*pcVar5 == *pcVar3 && (iVar2 = strncmp(pcVar5,pcVar3,sVar4), iVar2 == 0)))) break;\n            goto LAB_0008d840;\n          }\n          iVar2 = strncasecmp(pcVar5,pcVar3,sVar4);\n        } while (iVar2 != 0);\n        sVar4 = strlen(pcVar5);\n        pcVar3 = (char *)xmalloc(sVar4 + 1);\n        pcVar3 = strcpy(pcVar3,pcVar5);\n        goto LAB_0008d5c8;\n      }" (if "if") (parenthesized_expression "(DAT_0015145c == 2)" (( "(") (binary_expression "DAT_0015145c == 2" (identifier "DAT_0015145c") (== "==") (number_literal "2")) () ")")) (compound_statement "{\nLAB_0008d840:\n        do {\n          if ((pvVar1 == (void *)0x0) ||\n             (puVar6 = *(undefined4 **)((int)pvVar1 + DAT_0015142c * 4), puVar6 == (undefined4 *)0x0\n             )) {\n            DAT_0015142c = 0;\n            DAT_0015145c = DAT_0015145c + 1;\n            goto LAB_0008d3bd;\n          }\n          DAT_0015142c = DAT_0015142c + 1;\n          pcVar5 = (char *)*puVar6;\n          if (uVar8 == 0) {\n            if ((sVar4 == 0) ||\n               ((*pcVar5 == *pcVar3 && (iVar2 = strncmp(pcVar5,pcVar3,sVar4), iVar2 == 0)))) break;\n            goto LAB_0008d840;\n          }\n          iVar2 = strncasecmp(pcVar5,pcVar3,sVar4);\n        } while (iVar2 != 0);\n        sVar4 = strlen(pcVar5);\n        pcVar3 = (char *)xmalloc(sVar4 + 1);\n        pcVar3 = strcpy(pcVar3,pcVar5);\n        goto LAB_0008d5c8;\n      }" ({ "{") (labeled_statement "LAB_0008d840:\n        do {\n          if ((pvVar1 == (void *)0x0) ||\n             (puVar6 = *(undefined4 **)((int)pvVar1 + DAT_0015142c * 4), puVar6 == (undefined4 *)0x0\n             )) {\n            DAT_0015142c = 0;\n            DAT_0015145c = DAT_0015145c + 1;\n            goto LAB_0008d3bd;\n          }\n          DAT_0015142c = DAT_0015142c + 1;\n          pcVar5 = (char *)*puVar6;\n          if (uVar8 == 0) {\n            if ((sVar4 == 0) ||\n               ((*pcVar5 == *pcVar3 && (iVar2 = strncmp(pcVar5,pcVar3,sVar4), iVar2 == 0)))) break;\n            goto LAB_0008d840;\n          }\n          iVar2 = strncasecmp(pcVar5,pcVar3,sVar4);\n        } while (iVar2 != 0);" (statement_identifier "LAB_0008d840") (: ":") (do_statement "do {\n          if ((pvVar1 == (void *)0x0) ||\n             (puVar6 = *(undefined4 **)((int)pvVar1 + DAT_0015142c * 4), puVar6 == (undefined4 *)0x0\n             )) {\n            DAT_0015142c = 0;\n            DAT_0015145c = DAT_0015145c + 1;\n            goto LAB_0008d3bd;\n          }\n          DAT_0015142c = DAT_0015142c + 1;\n          pcVar5 = (char *)*puVar6;\n          if (uVar8 == 0) {\n            if ((sVar4 == 0) ||\n               ((*pcVar5 == *pcVar3 && (iVar2 = strncmp(pcVar5,pcVar3,sVar4), iVar2 == 0)))) break;\n            goto LAB_0008d840;\n          }\n          iVar2 = strncasecmp(pcVar5,pcVar3,sVar4);\n        } while (iVar2 != 0);" (do "do") (compound_statement "{\n          if ((pvVar1 == (void *)0x0) ||\n             (puVar6 = *(undefined4 **)((int)pvVar1 + DAT_0015142c * 4), puVar6 == (undefined4 *)0x0\n             )) {\n            DAT_0015142c = 0;\n            DAT_0015145c = DAT_0015145c + 1;\n            goto LAB_0008d3bd;\n          }\n          DAT_0015142c = DAT_0015142c + 1;\n          pcVar5 = (char *)*puVar6;\n          if (uVar8 == 0) {\n            if ((sVar4 == 0) ||\n               ((*pcVar5 == *pcVar3 && (iVar2 = strncmp(pcVar5,pcVar3,sVar4), iVar2 == 0)))) break;\n            goto LAB_0008d840;\n          }\n          iVar2 = strncasecmp(pcVar5,pcVar3,sVar4);\n        }" ({ "{") (if_statement "if ((pvVar1 == (void *)0x0) ||\n             (puVar6 = *(undefined4 **)((int)pvVar1 + DAT_0015142c * 4), puVar6 == (undefined4 *)0x0\n             )) {\n            DAT_0015142c = 0;\n            DAT_0015145c = DAT_0015145c + 1;\n            goto LAB_0008d3bd;\n          }" (if "if") (parenthesized_expression "((pvVar1 == (void *)0x0) ||\n             (puVar6 = *(undefined4 **)((int)pvVar1 + DAT_0015142c * 4), puVar6 == (undefined4 *)0x0\n             ))" (( "(") (binary_expression "(pvVar1 == (void *)0x0) ||\n             (puVar6 = *(undefined4 **)((int)pvVar1 + DAT_0015142c * 4), puVar6 == (undefined4 *)0x0\n             )" (parenthesized_expression "(pvVar1 == (void *)0x0)" (( "(") (binary_expression "pvVar1 == (void *)0x0" (identifier "pvVar1") (== "==") (cast_expression "(void *)0x0" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (|| "||") (parenthesized_expression "(puVar6 = *(undefined4 **)((int)pvVar1 + DAT_0015142c * 4), puVar6 == (undefined4 *)0x0\n             )" (( "(") (comma_expression "puVar6 = *(undefined4 **)((int)pvVar1 + DAT_0015142c * 4), puVar6 == (undefined4 *)0x0" (assignment_expression "puVar6 = *(undefined4 **)((int)pvVar1 + DAT_0015142c * 4)" (identifier "puVar6") (= "=") (pointer_expression "*(undefined4 **)((int)pvVar1 + DAT_0015142c * 4)" (* "*") (cast_expression "(undefined4 **)((int)pvVar1 + DAT_0015142c * 4)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "((int)pvVar1 + DAT_0015142c * 4)" (( "(") (binary_expression "(int)pvVar1 + DAT_0015142c * 4" (cast_expression "(int)pvVar1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pvVar1")) (+ "+") (binary_expression "DAT_0015142c * 4" (identifier "DAT_0015142c") (* "*") (number_literal "4"))) () ")"))))) (, ",") (binary_expression "puVar6 == (undefined4 *)0x0" (identifier "puVar6") (== "==") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")))) () ")"))) () ")")) (compound_statement "{\n            DAT_0015142c = 0;\n            DAT_0015145c = DAT_0015145c + 1;\n            goto LAB_0008d3bd;\n          }" ({ "{") (expression_statement "DAT_0015142c = 0;" (assignment_expression "DAT_0015142c = 0" (identifier "DAT_0015142c") (= "=") (number_literal "0")) (; ";")) (expression_statement "DAT_0015145c = DAT_0015145c + 1;" (assignment_expression "DAT_0015145c = DAT_0015145c + 1" (identifier "DAT_0015145c") (= "=") (binary_expression "DAT_0015145c + 1" (identifier "DAT_0015145c") (+ "+") (number_literal "1"))) (; ";")) (goto_statement "goto LAB_0008d3bd;" (goto "goto") (statement_identifier "LAB_0008d3bd") (; ";")) (} "}"))) (expression_statement "DAT_0015142c = DAT_0015142c + 1;" (assignment_expression "DAT_0015142c = DAT_0015142c + 1" (identifier "DAT_0015142c") (= "=") (binary_expression "DAT_0015142c + 1" (identifier "DAT_0015142c") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "pcVar5 = (char *)*puVar6;" (assignment_expression "pcVar5 = (char *)*puVar6" (identifier "pcVar5") (= "=") (cast_expression "(char *)*puVar6" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar6" (* "*") (identifier "puVar6")))) (; ";")) (if_statement "if (uVar8 == 0) {\n            if ((sVar4 == 0) ||\n               ((*pcVar5 == *pcVar3 && (iVar2 = strncmp(pcVar5,pcVar3,sVar4), iVar2 == 0)))) break;\n            goto LAB_0008d840;\n          }" (if "if") (parenthesized_expression "(uVar8 == 0)" (( "(") (binary_expression "uVar8 == 0" (identifier "uVar8") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n            if ((sVar4 == 0) ||\n               ((*pcVar5 == *pcVar3 && (iVar2 = strncmp(pcVar5,pcVar3,sVar4), iVar2 == 0)))) break;\n            goto LAB_0008d840;\n          }" ({ "{") (if_statement "if ((sVar4 == 0) ||\n               ((*pcVar5 == *pcVar3 && (iVar2 = strncmp(pcVar5,pcVar3,sVar4), iVar2 == 0)))) break;" (if "if") (parenthesized_expression "((sVar4 == 0) ||\n               ((*pcVar5 == *pcVar3 && (iVar2 = strncmp(pcVar5,pcVar3,sVar4), iVar2 == 0))))" (( "(") (binary_expression "(sVar4 == 0) ||\n               ((*pcVar5 == *pcVar3 && (iVar2 = strncmp(pcVar5,pcVar3,sVar4), iVar2 == 0)))" (parenthesized_expression "(sVar4 == 0)" (( "(") (binary_expression "sVar4 == 0" (identifier "sVar4") (== "==") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "((*pcVar5 == *pcVar3 && (iVar2 = strncmp(pcVar5,pcVar3,sVar4), iVar2 == 0)))" (( "(") (parenthesized_expression "(*pcVar5 == *pcVar3 && (iVar2 = strncmp(pcVar5,pcVar3,sVar4), iVar2 == 0))" (( "(") (binary_expression "*pcVar5 == *pcVar3 && (iVar2 = strncmp(pcVar5,pcVar3,sVar4), iVar2 == 0)" (binary_expression "*pcVar5 == *pcVar3" (pointer_expression "*pcVar5" (* "*") (identifier "pcVar5")) (== "==") (pointer_expression "*pcVar3" (* "*") (identifier "pcVar3"))) (&& "&&") (parenthesized_expression "(iVar2 = strncmp(pcVar5,pcVar3,sVar4), iVar2 == 0)" (( "(") (comma_expression "iVar2 = strncmp(pcVar5,pcVar3,sVar4), iVar2 == 0" (assignment_expression "iVar2 = strncmp(pcVar5,pcVar3,sVar4)" (identifier "iVar2") (= "=") (call_expression "strncmp(pcVar5,pcVar3,sVar4)" (identifier "strncmp") (argument_list "(pcVar5,pcVar3,sVar4)" (( "(") (identifier "pcVar5") (, ",") (identifier "pcVar3") (, ",") (identifier "sVar4") () ")")))) (, ",") (binary_expression "iVar2 == 0" (identifier "iVar2") (== "==") (number_literal "0"))) () ")"))) () ")")) () ")"))) () ")")) (break_statement "break;" (break "break") (; ";"))) (goto_statement "goto LAB_0008d840;" (goto "goto") (statement_identifier "LAB_0008d840") (; ";")) (} "}"))) (expression_statement "iVar2 = strncasecmp(pcVar5,pcVar3,sVar4);" (assignment_expression "iVar2 = strncasecmp(pcVar5,pcVar3,sVar4)" (identifier "iVar2") (= "=") (call_expression "strncasecmp(pcVar5,pcVar3,sVar4)" (identifier "strncasecmp") (argument_list "(pcVar5,pcVar3,sVar4)" (( "(") (identifier "pcVar5") (, ",") (identifier "pcVar3") (, ",") (identifier "sVar4") () ")")))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar2 != 0)" (( "(") (binary_expression "iVar2 != 0" (identifier "iVar2") (!= "!=") (number_literal "0")) () ")")) (; ";"))) (expression_statement "sVar4 = strlen(pcVar5);" (assignment_expression "sVar4 = strlen(pcVar5)" (identifier "sVar4") (= "=") (call_expression "strlen(pcVar5)" (identifier "strlen") (argument_list "(pcVar5)" (( "(") (identifier "pcVar5") () ")")))) (; ";")) (expression_statement "pcVar3 = (char *)xmalloc(sVar4 + 1);" (assignment_expression "pcVar3 = (char *)xmalloc(sVar4 + 1)" (identifier "pcVar3") (= "=") (cast_expression "(char *)xmalloc(sVar4 + 1)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "xmalloc(sVar4 + 1)" (identifier "xmalloc") (argument_list "(sVar4 + 1)" (( "(") (binary_expression "sVar4 + 1" (identifier "sVar4") (+ "+") (number_literal "1")) () ")"))))) (; ";")) (expression_statement "pcVar3 = strcpy(pcVar3,pcVar5);" (assignment_expression "pcVar3 = strcpy(pcVar3,pcVar5)" (identifier "pcVar3") (= "=") (call_expression "strcpy(pcVar3,pcVar5)" (identifier "strcpy") (argument_list "(pcVar3,pcVar5)" (( "(") (identifier "pcVar3") (, ",") (identifier "pcVar5") () ")")))) (; ";")) (goto_statement "goto LAB_0008d5c8;" (goto "goto") (statement_identifier "LAB_0008d5c8") (; ";")) (} "}"))) (if_statement "if (DAT_0015145c == 3) {\nLAB_0008d3bd:\n        pcVar3 = DAT_00151464;\n        sVar4 = DAT_00151444;\n        iVar2 = num_shell_builtins;\n        if (DAT_0015142c < num_shell_builtins) {\n          puVar6 = (undefined4 *)(shell_builtins + DAT_0015142c * 0x18);\n          do {\n            iVar9 = DAT_0015142c;\n            if (((puVar6[1] != 0) && ((*(byte *)(puVar6 + 2) & 1) != 0)) &&\n               ((pcVar5 = (char *)*puVar6, sVar4 == 0 ||\n                ((*pcVar5 == *pcVar3 && (iVar7 = strncmp(pcVar5,pcVar3,sVar4), iVar7 == 0)))))) {\n              DAT_0015142c = iVar9 + 1;\n              goto LAB_0008d451;\n            }\n            DAT_0015142c = iVar9 + 1;\n            puVar6 = puVar6 + 6;\n          } while (DAT_0015142c != iVar2);\n        }\n        DAT_0015145c = DAT_0015145c + 1;\n        DAT_0015142c = 0;\n      }" (if "if") (parenthesized_expression "(DAT_0015145c == 3)" (( "(") (binary_expression "DAT_0015145c == 3" (identifier "DAT_0015145c") (== "==") (number_literal "3")) () ")")) (compound_statement "{\nLAB_0008d3bd:\n        pcVar3 = DAT_00151464;\n        sVar4 = DAT_00151444;\n        iVar2 = num_shell_builtins;\n        if (DAT_0015142c < num_shell_builtins) {\n          puVar6 = (undefined4 *)(shell_builtins + DAT_0015142c * 0x18);\n          do {\n            iVar9 = DAT_0015142c;\n            if (((puVar6[1] != 0) && ((*(byte *)(puVar6 + 2) & 1) != 0)) &&\n               ((pcVar5 = (char *)*puVar6, sVar4 == 0 ||\n                ((*pcVar5 == *pcVar3 && (iVar7 = strncmp(pcVar5,pcVar3,sVar4), iVar7 == 0)))))) {\n              DAT_0015142c = iVar9 + 1;\n              goto LAB_0008d451;\n            }\n            DAT_0015142c = iVar9 + 1;\n            puVar6 = puVar6 + 6;\n          } while (DAT_0015142c != iVar2);\n        }\n        DAT_0015145c = DAT_0015145c + 1;\n        DAT_0015142c = 0;\n      }" ({ "{") (labeled_statement "LAB_0008d3bd:\n        pcVar3 = DAT_00151464;" (statement_identifier "LAB_0008d3bd") (: ":") (expression_statement "pcVar3 = DAT_00151464;" (assignment_expression "pcVar3 = DAT_00151464" (identifier "pcVar3") (= "=") (identifier "DAT_00151464")) (; ";"))) (expression_statement "sVar4 = DAT_00151444;" (assignment_expression "sVar4 = DAT_00151444" (identifier "sVar4") (= "=") (identifier "DAT_00151444")) (; ";")) (expression_statement "iVar2 = num_shell_builtins;" (assignment_expression "iVar2 = num_shell_builtins" (identifier "iVar2") (= "=") (identifier "num_shell_builtins")) (; ";")) (if_statement "if (DAT_0015142c < num_shell_builtins) {\n          puVar6 = (undefined4 *)(shell_builtins + DAT_0015142c * 0x18);\n          do {\n            iVar9 = DAT_0015142c;\n            if (((puVar6[1] != 0) && ((*(byte *)(puVar6 + 2) & 1) != 0)) &&\n               ((pcVar5 = (char *)*puVar6, sVar4 == 0 ||\n                ((*pcVar5 == *pcVar3 && (iVar7 = strncmp(pcVar5,pcVar3,sVar4), iVar7 == 0)))))) {\n              DAT_0015142c = iVar9 + 1;\n              goto LAB_0008d451;\n            }\n            DAT_0015142c = iVar9 + 1;\n            puVar6 = puVar6 + 6;\n          } while (DAT_0015142c != iVar2);\n        }" (if "if") (parenthesized_expression "(DAT_0015142c < num_shell_builtins)" (( "(") (binary_expression "DAT_0015142c < num_shell_builtins" (identifier "DAT_0015142c") (< "<") (identifier "num_shell_builtins")) () ")")) (compound_statement "{\n          puVar6 = (undefined4 *)(shell_builtins + DAT_0015142c * 0x18);\n          do {\n            iVar9 = DAT_0015142c;\n            if (((puVar6[1] != 0) && ((*(byte *)(puVar6 + 2) & 1) != 0)) &&\n               ((pcVar5 = (char *)*puVar6, sVar4 == 0 ||\n                ((*pcVar5 == *pcVar3 && (iVar7 = strncmp(pcVar5,pcVar3,sVar4), iVar7 == 0)))))) {\n              DAT_0015142c = iVar9 + 1;\n              goto LAB_0008d451;\n            }\n            DAT_0015142c = iVar9 + 1;\n            puVar6 = puVar6 + 6;\n          } while (DAT_0015142c != iVar2);\n        }" ({ "{") (expression_statement "puVar6 = (undefined4 *)(shell_builtins + DAT_0015142c * 0x18);" (assignment_expression "puVar6 = (undefined4 *)(shell_builtins + DAT_0015142c * 0x18)" (identifier "puVar6") (= "=") (cast_expression "(undefined4 *)(shell_builtins + DAT_0015142c * 0x18)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(shell_builtins + DAT_0015142c * 0x18)" (( "(") (binary_expression "shell_builtins + DAT_0015142c * 0x18" (identifier "shell_builtins") (+ "+") (binary_expression "DAT_0015142c * 0x18" (identifier "DAT_0015142c") (* "*") (number_literal "0x18"))) () ")")))) (; ";")) (do_statement "do {\n            iVar9 = DAT_0015142c;\n            if (((puVar6[1] != 0) && ((*(byte *)(puVar6 + 2) & 1) != 0)) &&\n               ((pcVar5 = (char *)*puVar6, sVar4 == 0 ||\n                ((*pcVar5 == *pcVar3 && (iVar7 = strncmp(pcVar5,pcVar3,sVar4), iVar7 == 0)))))) {\n              DAT_0015142c = iVar9 + 1;\n              goto LAB_0008d451;\n            }\n            DAT_0015142c = iVar9 + 1;\n            puVar6 = puVar6 + 6;\n          } while (DAT_0015142c != iVar2);" (do "do") (compound_statement "{\n            iVar9 = DAT_0015142c;\n            if (((puVar6[1] != 0) && ((*(byte *)(puVar6 + 2) & 1) != 0)) &&\n               ((pcVar5 = (char *)*puVar6, sVar4 == 0 ||\n                ((*pcVar5 == *pcVar3 && (iVar7 = strncmp(pcVar5,pcVar3,sVar4), iVar7 == 0)))))) {\n              DAT_0015142c = iVar9 + 1;\n              goto LAB_0008d451;\n            }\n            DAT_0015142c = iVar9 + 1;\n            puVar6 = puVar6 + 6;\n          }" ({ "{") (expression_statement "iVar9 = DAT_0015142c;" (assignment_expression "iVar9 = DAT_0015142c" (identifier "iVar9") (= "=") (identifier "DAT_0015142c")) (; ";")) (if_statement "if (((puVar6[1] != 0) && ((*(byte *)(puVar6 + 2) & 1) != 0)) &&\n               ((pcVar5 = (char *)*puVar6, sVar4 == 0 ||\n                ((*pcVar5 == *pcVar3 && (iVar7 = strncmp(pcVar5,pcVar3,sVar4), iVar7 == 0)))))) {\n              DAT_0015142c = iVar9 + 1;\n              goto LAB_0008d451;\n            }" (if "if") (parenthesized_expression "(((puVar6[1] != 0) && ((*(byte *)(puVar6 + 2) & 1) != 0)) &&\n               ((pcVar5 = (char *)*puVar6, sVar4 == 0 ||\n                ((*pcVar5 == *pcVar3 && (iVar7 = strncmp(pcVar5,pcVar3,sVar4), iVar7 == 0))))))" (( "(") (binary_expression "((puVar6[1] != 0) && ((*(byte *)(puVar6 + 2) & 1) != 0)) &&\n               ((pcVar5 = (char *)*puVar6, sVar4 == 0 ||\n                ((*pcVar5 == *pcVar3 && (iVar7 = strncmp(pcVar5,pcVar3,sVar4), iVar7 == 0)))))" (parenthesized_expression "((puVar6[1] != 0) && ((*(byte *)(puVar6 + 2) & 1) != 0))" (( "(") (binary_expression "(puVar6[1] != 0) && ((*(byte *)(puVar6 + 2) & 1) != 0)" (parenthesized_expression "(puVar6[1] != 0)" (( "(") (binary_expression "puVar6[1] != 0" (subscript_expression "puVar6[1]" (identifier "puVar6") ([ "[") (number_literal "1") (] "]")) (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "((*(byte *)(puVar6 + 2) & 1) != 0)" (( "(") (binary_expression "(*(byte *)(puVar6 + 2) & 1) != 0" (parenthesized_expression "(*(byte *)(puVar6 + 2) & 1)" (( "(") (binary_expression "*(byte *)(puVar6 + 2) & 1" (pointer_expression "*(byte *)(puVar6 + 2)" (* "*") (cast_expression "(byte *)(puVar6 + 2)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar6 + 2)" (( "(") (binary_expression "puVar6 + 2" (identifier "puVar6") (+ "+") (number_literal "2")) () ")")))) (& "&") (number_literal "1")) () ")")) (!= "!=") (number_literal "0")) () ")"))) () ")")) (&& "&&") (parenthesized_expression "((pcVar5 = (char *)*puVar6, sVar4 == 0 ||\n                ((*pcVar5 == *pcVar3 && (iVar7 = strncmp(pcVar5,pcVar3,sVar4), iVar7 == 0)))))" (( "(") (parenthesized_expression "(pcVar5 = (char *)*puVar6, sVar4 == 0 ||\n                ((*pcVar5 == *pcVar3 && (iVar7 = strncmp(pcVar5,pcVar3,sVar4), iVar7 == 0))))" (( "(") (comma_expression "pcVar5 = (char *)*puVar6, sVar4 == 0 ||\n                ((*pcVar5 == *pcVar3 && (iVar7 = strncmp(pcVar5,pcVar3,sVar4), iVar7 == 0)))" (assignment_expression "pcVar5 = (char *)*puVar6" (identifier "pcVar5") (= "=") (cast_expression "(char *)*puVar6" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar6" (* "*") (identifier "puVar6")))) (, ",") (binary_expression "sVar4 == 0 ||\n                ((*pcVar5 == *pcVar3 && (iVar7 = strncmp(pcVar5,pcVar3,sVar4), iVar7 == 0)))" (binary_expression "sVar4 == 0" (identifier "sVar4") (== "==") (number_literal "0")) (|| "||") (parenthesized_expression "((*pcVar5 == *pcVar3 && (iVar7 = strncmp(pcVar5,pcVar3,sVar4), iVar7 == 0)))" (( "(") (parenthesized_expression "(*pcVar5 == *pcVar3 && (iVar7 = strncmp(pcVar5,pcVar3,sVar4), iVar7 == 0))" (( "(") (binary_expression "*pcVar5 == *pcVar3 && (iVar7 = strncmp(pcVar5,pcVar3,sVar4), iVar7 == 0)" (binary_expression "*pcVar5 == *pcVar3" (pointer_expression "*pcVar5" (* "*") (identifier "pcVar5")) (== "==") (pointer_expression "*pcVar3" (* "*") (identifier "pcVar3"))) (&& "&&") (parenthesized_expression "(iVar7 = strncmp(pcVar5,pcVar3,sVar4), iVar7 == 0)" (( "(") (comma_expression "iVar7 = strncmp(pcVar5,pcVar3,sVar4), iVar7 == 0" (assignment_expression "iVar7 = strncmp(pcVar5,pcVar3,sVar4)" (identifier "iVar7") (= "=") (call_expression "strncmp(pcVar5,pcVar3,sVar4)" (identifier "strncmp") (argument_list "(pcVar5,pcVar3,sVar4)" (( "(") (identifier "pcVar5") (, ",") (identifier "pcVar3") (, ",") (identifier "sVar4") () ")")))) (, ",") (binary_expression "iVar7 == 0" (identifier "iVar7") (== "==") (number_literal "0"))) () ")"))) () ")")) () ")")))) () ")")) () ")"))) () ")")) (compound_statement "{\n              DAT_0015142c = iVar9 + 1;\n              goto LAB_0008d451;\n            }" ({ "{") (expression_statement "DAT_0015142c = iVar9 + 1;" (assignment_expression "DAT_0015142c = iVar9 + 1" (identifier "DAT_0015142c") (= "=") (binary_expression "iVar9 + 1" (identifier "iVar9") (+ "+") (number_literal "1"))) (; ";")) (goto_statement "goto LAB_0008d451;" (goto "goto") (statement_identifier "LAB_0008d451") (; ";")) (} "}"))) (expression_statement "DAT_0015142c = iVar9 + 1;" (assignment_expression "DAT_0015142c = iVar9 + 1" (identifier "DAT_0015142c") (= "=") (binary_expression "iVar9 + 1" (identifier "iVar9") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "puVar6 = puVar6 + 6;" (assignment_expression "puVar6 = puVar6 + 6" (identifier "puVar6") (= "=") (binary_expression "puVar6 + 6" (identifier "puVar6") (+ "+") (number_literal "6"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(DAT_0015142c != iVar2)" (( "(") (binary_expression "DAT_0015142c != iVar2" (identifier "DAT_0015142c") (!= "!=") (identifier "iVar2")) () ")")) (; ";")) (} "}"))) (expression_statement "DAT_0015145c = DAT_0015145c + 1;" (assignment_expression "DAT_0015145c = DAT_0015145c + 1" (identifier "DAT_0015145c") (= "=") (binary_expression "DAT_0015145c + 1" (identifier "DAT_0015145c") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "DAT_0015142c = 0;" (assignment_expression "DAT_0015142c = 0" (identifier "DAT_0015142c") (= "=") (number_literal "0")) (; ";")) (} "}"))) (} "}")))) (if_statement "if (DAT_0015144c == 0) {\n      if (DAT_00151458 == 0) goto LAB_0008d5f6;\n      DAT_00151458 = 0;\n      sVar4 = strlen(param_1);\n      pcVar3 = (char *)xmalloc(sVar4 + 1);\n      pcVar3 = strcpy(pcVar3,param_1);\n      goto LAB_0008d5c8;\n    }" (if "if") (parenthesized_expression "(DAT_0015144c == 0)" (( "(") (binary_expression "DAT_0015144c == 0" (identifier "DAT_0015144c") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      if (DAT_00151458 == 0) goto LAB_0008d5f6;\n      DAT_00151458 = 0;\n      sVar4 = strlen(param_1);\n      pcVar3 = (char *)xmalloc(sVar4 + 1);\n      pcVar3 = strcpy(pcVar3,param_1);\n      goto LAB_0008d5c8;\n    }" ({ "{") (if_statement "if (DAT_00151458 == 0) goto LAB_0008d5f6;" (if "if") (parenthesized_expression "(DAT_00151458 == 0)" (( "(") (binary_expression "DAT_00151458 == 0" (identifier "DAT_00151458") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_0008d5f6;" (goto "goto") (statement_identifier "LAB_0008d5f6") (; ";"))) (expression_statement "DAT_00151458 = 0;" (assignment_expression "DAT_00151458 = 0" (identifier "DAT_00151458") (= "=") (number_literal "0")) (; ";")) (expression_statement "sVar4 = strlen(param_1);" (assignment_expression "sVar4 = strlen(param_1)" (identifier "sVar4") (= "=") (call_expression "strlen(param_1)" (identifier "strlen") (argument_list "(param_1)" (( "(") (identifier "param_1") () ")")))) (; ";")) (expression_statement "pcVar3 = (char *)xmalloc(sVar4 + 1);" (assignment_expression "pcVar3 = (char *)xmalloc(sVar4 + 1)" (identifier "pcVar3") (= "=") (cast_expression "(char *)xmalloc(sVar4 + 1)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "xmalloc(sVar4 + 1)" (identifier "xmalloc") (argument_list "(sVar4 + 1)" (( "(") (binary_expression "sVar4 + 1" (identifier "sVar4") (+ "+") (number_literal "1")) () ")"))))) (; ";")) (expression_statement "pcVar3 = strcpy(pcVar3,param_1);" (assignment_expression "pcVar3 = strcpy(pcVar3,param_1)" (identifier "pcVar3") (= "=") (call_expression "strcpy(pcVar3,param_1)" (identifier "strcpy") (argument_list "(pcVar3,param_1)" (( "(") (identifier "pcVar3") (, ",") (identifier "param_1") () ")")))) (; ";")) (goto_statement "goto LAB_0008d5c8;" (goto "goto") (statement_identifier "LAB_0008d5c8") (; ";")) (} "}"))) (if_statement "if (param_2 == 0) goto LAB_0008d218;" (if "if") (parenthesized_expression "(param_2 == 0)" (( "(") (binary_expression "param_2 == 0" (identifier "param_2") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_0008d218;" (goto "goto") (statement_identifier "LAB_0008d218") (; ";"))) (expression_statement "iVar2 = DAT_0015142c + 1;" (assignment_expression "iVar2 = DAT_0015142c + 1" (identifier "iVar2") (= "=") (binary_expression "DAT_0015142c + 1" (identifier "DAT_0015142c") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "puVar6 = DAT_001514d4 + DAT_0015142c;" (assignment_expression "puVar6 = DAT_001514d4 + DAT_0015142c" (identifier "puVar6") (= "=") (binary_expression "DAT_001514d4 + DAT_0015142c" (identifier "DAT_001514d4") (+ "+") (identifier "DAT_0015142c"))) (; ";")) (} "}")))) (expression_statement "DAT_00151454 = (char *)*puVar6;" (assignment_expression "DAT_00151454 = (char *)*puVar6" (identifier "DAT_00151454") (= "=") (cast_expression "(char *)*puVar6" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar6" (* "*") (identifier "puVar6")))) (; ";")) (expression_statement "DAT_0015142c = iVar2;" (assignment_expression "DAT_0015142c = iVar2" (identifier "DAT_0015142c") (= "=") (identifier "iVar2")) (; ";")) (while_statement "while (DAT_00151454 != (char *)0x0) {\n    iVar2 = executable_or_directory(DAT_00151454);\n    if (iVar2 != 0) {\n      pcVar3 = DAT_00151454;\n      if ((*param_1 == '~') && (DAT_00151448 != (char *)0x0)) {\n        pcVar3 = (char *)FUN_0008a220();\n        free(DAT_00151454);\n        DAT_00151454 = pcVar3;\n      }\n      goto LAB_0008d5c8;\n    }\n    free(DAT_00151454);\n    DAT_00151454 = (char *)DAT_001514d4[DAT_0015142c];\n    DAT_0015142c = DAT_0015142c + 1;\n  }" (while "while") (parenthesized_expression "(DAT_00151454 != (char *)0x0)" (( "(") (binary_expression "DAT_00151454 != (char *)0x0" (identifier "DAT_00151454") (!= "!=") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    iVar2 = executable_or_directory(DAT_00151454);\n    if (iVar2 != 0) {\n      pcVar3 = DAT_00151454;\n      if ((*param_1 == '~') && (DAT_00151448 != (char *)0x0)) {\n        pcVar3 = (char *)FUN_0008a220();\n        free(DAT_00151454);\n        DAT_00151454 = pcVar3;\n      }\n      goto LAB_0008d5c8;\n    }\n    free(DAT_00151454);\n    DAT_00151454 = (char *)DAT_001514d4[DAT_0015142c];\n    DAT_0015142c = DAT_0015142c + 1;\n  }" ({ "{") (expression_statement "iVar2 = executable_or_directory(DAT_00151454);" (assignment_expression "iVar2 = executable_or_directory(DAT_00151454)" (identifier "iVar2") (= "=") (call_expression "executable_or_directory(DAT_00151454)" (identifier "executable_or_directory") (argument_list "(DAT_00151454)" (( "(") (identifier "DAT_00151454") () ")")))) (; ";")) (if_statement "if (iVar2 != 0) {\n      pcVar3 = DAT_00151454;\n      if ((*param_1 == '~') && (DAT_00151448 != (char *)0x0)) {\n        pcVar3 = (char *)FUN_0008a220();\n        free(DAT_00151454);\n        DAT_00151454 = pcVar3;\n      }\n      goto LAB_0008d5c8;\n    }" (if "if") (parenthesized_expression "(iVar2 != 0)" (( "(") (binary_expression "iVar2 != 0" (identifier "iVar2") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      pcVar3 = DAT_00151454;\n      if ((*param_1 == '~') && (DAT_00151448 != (char *)0x0)) {\n        pcVar3 = (char *)FUN_0008a220();\n        free(DAT_00151454);\n        DAT_00151454 = pcVar3;\n      }\n      goto LAB_0008d5c8;\n    }" ({ "{") (expression_statement "pcVar3 = DAT_00151454;" (assignment_expression "pcVar3 = DAT_00151454" (identifier "pcVar3") (= "=") (identifier "DAT_00151454")) (; ";")) (if_statement "if ((*param_1 == '~') && (DAT_00151448 != (char *)0x0)) {\n        pcVar3 = (char *)FUN_0008a220();\n        free(DAT_00151454);\n        DAT_00151454 = pcVar3;\n      }" (if "if") (parenthesized_expression "((*param_1 == '~') && (DAT_00151448 != (char *)0x0))" (( "(") (binary_expression "(*param_1 == '~') && (DAT_00151448 != (char *)0x0)" (parenthesized_expression "(*param_1 == '~')" (( "(") (binary_expression "*param_1 == '~'" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (== "==") (char_literal "'~'" (' "'") (character "~") (' "'"))) () ")")) (&& "&&") (parenthesized_expression "(DAT_00151448 != (char *)0x0)" (( "(") (binary_expression "DAT_00151448 != (char *)0x0" (identifier "DAT_00151448") (!= "!=") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")"))) () ")")) (compound_statement "{\n        pcVar3 = (char *)FUN_0008a220();\n        free(DAT_00151454);\n        DAT_00151454 = pcVar3;\n      }" ({ "{") (expression_statement "pcVar3 = (char *)FUN_0008a220();" (assignment_expression "pcVar3 = (char *)FUN_0008a220()" (identifier "pcVar3") (= "=") (cast_expression "(char *)FUN_0008a220()" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_0008a220()" (identifier "FUN_0008a220") (argument_list "()" (( "(") () ")"))))) (; ";")) (expression_statement "free(DAT_00151454);" (call_expression "free(DAT_00151454)" (identifier "free") (argument_list "(DAT_00151454)" (( "(") (identifier "DAT_00151454") () ")"))) (; ";")) (expression_statement "DAT_00151454 = pcVar3;" (assignment_expression "DAT_00151454 = pcVar3" (identifier "DAT_00151454") (= "=") (identifier "pcVar3")) (; ";")) (} "}"))) (goto_statement "goto LAB_0008d5c8;" (goto "goto") (statement_identifier "LAB_0008d5c8") (; ";")) (} "}"))) (expression_statement "free(DAT_00151454);" (call_expression "free(DAT_00151454)" (identifier "free") (argument_list "(DAT_00151454)" (( "(") (identifier "DAT_00151454") () ")"))) (; ";")) (expression_statement "DAT_00151454 = (char *)DAT_001514d4[DAT_0015142c];" (assignment_expression "DAT_00151454 = (char *)DAT_001514d4[DAT_0015142c]" (identifier "DAT_00151454") (= "=") (cast_expression "(char *)DAT_001514d4[DAT_0015142c]" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "DAT_001514d4[DAT_0015142c]" (identifier "DAT_001514d4") ([ "[") (identifier "DAT_0015142c") (] "]")))) (; ";")) (expression_statement "DAT_0015142c = DAT_0015142c + 1;" (assignment_expression "DAT_0015142c = DAT_0015142c + 1" (identifier "DAT_0015142c") (= "=") (binary_expression "DAT_0015142c + 1" (identifier "DAT_0015142c") (+ "+") (number_literal "1"))) (; ";")) (} "}"))) (expression_statement "glob_ignore_case = 0;" (assignment_expression "glob_ignore_case = 0" (identifier "glob_ignore_case") (= "=") (number_literal "0")) (; ";")) (expression_statement "pcVar3 = (char *)0x0;" (assignment_expression "pcVar3 = (char *)0x0" (identifier "pcVar3") (= "=") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (labeled_statement "LAB_0008d5c8:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_000ecc40();\n  }" (statement_identifier "LAB_0008d5c8") (: ":") (if_statement "if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_000ecc40();\n  }" (if "if") (parenthesized_expression "(local_20 != *(int *)(in_GS_OFFSET + 0x14))" (( "(") (binary_expression "local_20 != *(int *)(in_GS_OFFSET + 0x14)" (identifier "local_20") (!= "!=") (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" (* "*") (cast_expression "(int *)(in_GS_OFFSET + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(in_GS_OFFSET + 0x14)" (( "(") (binary_expression "in_GS_OFFSET + 0x14" (identifier "in_GS_OFFSET") (+ "+") (number_literal "0x14")) () ")"))))) () ")")) (compound_statement "{\n                    \n    FUN_000ecc40();\n  }" ({ "{") (expression_statement "FUN_000ecc40();" (call_expression "FUN_000ecc40()" (identifier "FUN_000ecc40") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")))) (return_statement "return pcVar3;" (return "return") (identifier "pcVar3") (; ";")) (} "}")))

/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */
/* WARNING: Unknown calling convention */

char * function_1(char *hint_text,int var_2)

{
  type_1 **ppSVar1;
  type_2 *var_45;
  type_1 **var_47;
  type_2 **var_44;
  int var_4;
  char *var_26;
  size_t var_11;
  char *var_21;
  char **var_39;
  int var_50;
  type_3 state_00;
  int var_42;
  int var_43;
  char *var_32;
  char var_34;
  type_4 *var_51;
  int var_1;
  char *f;
  int var_52;
  type_5 uStack_14;
  
  uStack_14 = 0x8d029;
  var_52 = *(int *)(var_1 + 0x14);
  if (var_2 == 0) {
    rl_filename_stat_hook = bash_command_name_stat_hook;
    if (function_1::dequoted_hint == (char *)0x0) {
LAB_0008d085:
      if (function_1::hint != (char *)0x0) goto LAB_0008d089;
    }
    else {
      if (function_1::dequoted_hint != function_1::hint)
      {
        free(function_1::dequoted_hint);
        goto LAB_0008d085;
      }
LAB_0008d089:
      type_6(function_1::hint);
    }
    command_word_completion_function::searching_path = 0;
    command_word_completion_function::var_41 = 0;
    var_4 = var_3(hint_text);
    if (((var_4 == 0) && (var_4 = var_5(hint_text), var_4 == 0)) && (*hint_text != '~'))
    {
      var_4 = var_6(hint_text);
      command_word_completion_function::hint_is_dir = (int)(var_4 != 0);
    }
    else {
      command_word_completion_function::hint_is_dir = 0;
    }
    command_word_completion_function::val = (char *)0x0;
    var_26 = var_7("completion-ignore-case");
    command_word_completion_function::igncase = 0;
    if ((*var_26 == 'o') && (var_26[1] == 'n')) {
      command_word_completion_function::igncase = (int)(var_26[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_11 = var_9(hint_text);
      var_26 = (char *)var_10(var_11 + 1);
      var_26 = var_12(var_26,hint_text);
      command_word_completion_function::hint = var_26;
      command_word_completion_function::dequoted_hint = var_26;
      command_word_completion_function::hint_len = var_9(var_26);
      if ((var_13 != 0) && (var_14 == 0)) {
        command_word_completion_function::dequoted_hint = var_15(var_26,0);
      }
      command_word_completion_function::path = var_16("PATH");
      dot_in_path = 0;
      command_word_completion_function::path_index = 0;
      command_word_completion_function::var_46 = 0;
      if (function_1::varlist != (type_1 **)0x0) {
        free(function_1::varlist);
      }
      command_word_completion_function::varlist = var_17();
      if (function_1::alias_list != (type_2 **)0x0) {
        free(function_1::alias_list);
      }
      command_word_completion_function::alias_list = var_18();
      goto LAB_0008d390;
    }
    if (*hint_text == '~') {
      command_word_completion_function::hint = var_19(hint_text,0);
      var_11 = var_9(hint_text);
      var_26 = (char *)var_10(var_11 + 1);
      var_26 = var_12(var_26,hint_text);
      command_word_completion_function::directory_part = var_26;
      var_21 = var_20(var_26,0x2f);
      if (var_21 == (char *)0x0) {
        type_6(var_26);
        command_word_completion_function::directory_part = (char *)0x0;
      }
      else {
        *var_21 = '\0';
      }
    }
    else {
      var_11 = var_9(hint_text);
      if (var_22 == 0) {
        var_26 = (char *)var_10(var_11 + 1);
        command_word_completion_function::hint = var_12(var_26,hint_text);
      }
      else {
        var_26 = (char *)var_10(var_11 + 1);
        command_word_completion_function::hint = var_12(var_26,hint_text);
        var_23(&function_1::hint);
      }
    }
    command_word_completion_function::dequoted_hint = function_1::hint;
    if ((var_13 != 0) && (var_14 == 0)) {
      var_26 = var_15(function_1::hint,0);
      command_word_completion_function::dequoted_hint = var_26;
      type_6(function_1::hint);
      command_word_completion_function::hint = var_26;
    }
    var_26 = function_1::hint;
    command_word_completion_function::hint_len = var_9(function_1::hint);
    if (function_1::filename_hint != (char *)0x0) {
      free(function_1::filename_hint);
      var_26 = function_1::hint;
    }
    var_11 = var_9(var_26);
    var_21 = (char *)var_10(var_11 + 1);
    command_word_completion_function::fnhint = var_12(var_21,var_26);
    command_word_completion_function::istate = 0;
    command_word_completion_function::filename_hint = function_1::fnhint;
    if (function_1::globpat == 0) {
      state_00 = var_22;
      if ((var_22 != 0) &&
         (var_4 = path_dot_or_dotdot(function_1::fnhint),
         state_00 = function_1::istate, var_4 != 0)) {
        var_22 = 1;
        rl_directory_rewrite_hook = var_23;
        rl_directory_completion_hook = (type_7 *)0x0;
      }
      command_word_completion_function::var_41 = 4;
      var_26 = function_1::fnhint;
      do {
        do {
          while( true ) {
            command_word_completion_function::val = var_24(var_26,state_00)
            ;
            if ((function_1::var_41 == 4) && (var_22 != 0))
            {
              rl_directory_completion_hook = var_23;
              rl_directory_rewrite_hook = (type_7 *)0x0;
            }
            command_word_completion_function::istate = 1;
            if (function_1::val == (char *)0x0) break;
            var_4 = var_5(function_1::hint);
            var_21 = function_1::val;
            if (var_4 == 0) {
              var_26 = var_25(function_1::val,0x2f);
              if (var_26 != (char *)0x0) {
                var_26 = var_26 + 1;
                if (function_1::igncase == 0) {
                  var_4 = var_27(var_26,function_1::hint,
                                  function_1::hint_len);
                }
                else {
                  var_4 = var_28(var_26,function_1::hint,
                                      function_1::hint_len);
                }
                if (var_4 == 0) {
                  var_11 = var_9(var_26);
                  var_21 = (char *)var_10(var_11 + 1);
                  var_26 = var_12(var_21,var_26);
                  goto LAB_0008d6a4;
                }
              }
            }
            else {
              if (function_1::igncase == 0) {
                var_4 = var_27(function_1::val,
                                function_1::hint,
                                function_1::hint_len);
              }
              else {
                var_4 = var_28(function_1::val,
                                    function_1::hint,
                                    function_1::hint_len);
              }
              if (*hint_text == '~') {
                var_26 = var_29(var_21,function_1::directory_part
                                            );
              }
              else {
                var_11 = var_9(var_21);
                var_26 = (char *)var_10(var_11 + 1);
                var_26 = var_12(var_26,var_21);
              }
              var_21 = function_1::val;
              if (var_4 == 0) {
LAB_0008d6a4:
                var_4 = function_1::searching_path;
                var_32 = function_1::val;
                var_11 = var_9(function_1::val);
                var_21 = (char *)var_10(var_11 + 1);
                f = var_12(var_21,var_32);
                var_23(&f);
                if (var_4 == 0) {
                  var_4 = var_30(f);
                }
                else {
                  var_4 = var_31(f);
                }
                type_6(f);
                var_21 = function_1::val;
                if (var_4 != 0) {
                  if (var_32 != function_1::val) {
                    type_6(var_32);
                  }
                  type_6(var_21);
                  command_word_completion_function::val = "";
                  goto LAB_0008d5c8;
                }
                type_6(var_26);
                if (var_32 != var_21) {
                  type_6(var_32);
                }
              }
              else {
                type_6(var_26);
              }
            }
            type_6(var_21);
            state_00 = function_1::istate;
            var_26 = function_1::fnhint;
          }
          var_4 = var_5(function_1::hint);
          if (var_4 != 0) goto LAB_0008dac4;
LAB_0008d5f6:
          state_00 = (type_3)(function_1::val != (char *)0x0);
          var_26 = function_1::fnhint;
          command_word_completion_function::istate = state_00;
        } while (function_1::val != (char *)0x0);
        if (((function_1::path == (char *)0x0) ||
            (function_1::path[function_1::path_index] ==
             '\0')) ||
           (var_26 = var_33(function_1::path,
                                        &function_1::path_index),
           var_26 == (char *)0x0)) goto LAB_0008dac4;
        command_word_completion_function::searching_path = 1;
        var_34 = *var_26;
        if (var_34 == '\0') {
          type_6(var_26);
          var_26 = (char *)var_10(2);
          var_26[0] = '.';
          var_26[1] = '\0';
          var_34 = '.';
        }
        var_21 = var_26;
        if (var_34 == '~') {
          var_21 = var_19(var_26,0);
          type_6(var_26);
          var_34 = *var_21;
        }
        var_26 = function_1::filename_hint;
        if ((var_34 == '.') && (var_21[1] == '\0')) {
          dot_in_path = 1;
        }
        if (function_1::fnhint == (char *)0x0) {
LAB_0008dbfe:
          if (var_26 != (char *)0x0) goto LAB_0008de5f;
        }
        else {
          if (function_1::fnhint !=
              function_1::filename_hint) {
            free(function_1::fnhint);
            goto LAB_0008dbfe;
          }
LAB_0008de5f:
          type_6(var_26);
        }
        var_26 = var_35(var_21,function_1::hint,0);
        command_word_completion_function::filename_hint = var_26;
        var_32 = var_36(var_26,"\"\'\\");
        if (var_32 != (char *)0x0) {
          var_26 = var_37(var_26,filename_bstab,0);
        }
        command_word_completion_function::fnhint = var_26;
        type_6(var_21);
        state_00 = function_1::istate;
      } while( true );
    }
    command_word_completion_function::var_41 = 5;
LAB_0008d218:
    glob_ignore_case = function_1::igncase;
    var_39 = var_38(function_1::hint);
    glob_ignore_case = 0;
    if ((var_39 == (char **)PTR_glob_error_return_00149f60) || (var_39 == (char **)0x0)) {
      command_word_completion_function::glob_matches = (char **)0x0;
      var_26 = (char *)0x0;
      goto LAB_0008d5c8;
    }
    command_word_completion_function::var_46 = 0;
    command_word_completion_function::glob_matches = var_39;
    if ((var_39[1] != (char *)0x0) && (var_40 == 9)) {
LAB_0008dac4:
      var_26 = (char *)0x0;
      goto LAB_0008d5c8;
    }
    var_4 = 1;
  }
  else {
LAB_0008d390:
    var_26 = function_1::hint;
    var_43 = function_1::igncase;
    var_4 = function_1::hint_len;
    var_44 = function_1::alias_list;
    var_42 = function_1::var_46;
    if (function_1::var_41 == 1) {
LAB_0008d960:
      do {
        var_21 = word_token_alist[var_42].word;
        if (var_21 == (char *)0x0) {
          command_word_completion_function::var_46 = 0;
          command_word_completion_function::var_41 =
               function_1::var_41 + 1;
          var_43 = function_1::igncase;
          var_47 = function_1::varlist;
          goto LAB_0008d840;
        }
        var_42 = var_42 + 1;
        command_word_completion_function::var_46 = var_42;
      } while ((var_4 != 0) &&
              ((*var_21 != *var_26 || (var_43 = var_27(var_21,var_26,var_4), var_43 != 0))));
LAB_0008d451:
      var_11 = var_9(var_21);
      var_26 = (char *)var_10(var_11 + 1);
      var_26 = var_12(var_26,var_21);
      goto LAB_0008d5c8;
    }
    if (function_1::var_41 < 2) {
      if (function_1::var_41 == 0) {
        do {
          while( true ) {
            if ((var_44 == (type_2 **)0x0) ||
               (var_45 = var_44[function_1::var_46],
               var_45 == (type_2 *)0x0)) {
              command_word_completion_function::var_41 = 1;
              var_42 = 0;
              goto LAB_0008d960;
            }
            command_word_completion_function::var_46 =
                 function_1::var_46 + 1;
            var_21 = var_45->name;
            if (var_43 != 0) break;
            if ((var_4 == 0) ||
               ((*var_21 == *var_26 && (var_42 = var_27(var_21,var_26,var_4), var_42 == 0))))
            goto LAB_0008d451;
          }
          var_42 = var_28(var_21,var_26,var_4);
        } while (var_42 != 0);
        goto LAB_0008d451;
      }
    }
    else {
      var_47 = function_1::varlist;
      if (function_1::var_41 == 2) {
LAB_0008d840:
        do {
          if ((var_47 == (type_1 **)0x0) ||
             (ppSVar1 = var_47 + function_1::var_46,
             *ppSVar1 == (type_1 *)0x0)) {
            command_word_completion_function::var_46 = 0;
            command_word_completion_function::var_41 =
                 function_1::var_41 + 1;
            goto LAB_0008d3bd;
          }
          command_word_completion_function::var_46 =
               function_1::var_46 + 1;
          var_21 = (*ppSVar1)->name;
          if (var_43 == 0) {
            if ((var_4 == 0) ||
               ((*var_21 == *var_26 && (var_42 = var_27(var_21,var_26,var_4), var_42 == 0))))
            break;
            goto LAB_0008d840;
          }
          var_42 = var_28(var_21,var_26,var_4);
        } while (var_42 != 0);
        var_11 = var_9(var_21);
        var_26 = (char *)var_10(var_11 + 1);
        var_26 = var_12(var_26,var_21);
        goto LAB_0008d5c8;
      }
      if (function_1::var_41 == 3) {
LAB_0008d3bd:
        var_26 = function_1::hint;
        var_43 = function_1::hint_len;
        var_4 = var_48;
        if (function_1::var_46 < var_48) {
          var_51 = var_49 + function_1::var_46;
          do {
            var_42 = function_1::var_46;
            if (((var_51->function != (type_8 *)0x0) && ((var_51->flags & 1) != 0)) &&
               ((var_21 = var_51->name, var_43 == 0 ||
                ((*var_21 == *var_26 && (var_50 = var_27(var_21,var_26,var_43), var_50 == 0)))))) {
              command_word_completion_function::var_46 = var_42 + 1;
              goto LAB_0008d451;
            }
            command_word_completion_function::var_46 = var_42 + 1;
            var_51 = var_51 + 1;
          } while (function_1::var_46 != var_4);
        }
        command_word_completion_function::var_41 =
             function_1::var_41 + 1;
        command_word_completion_function::var_46 = 0;
      }
    }
    if (function_1::globpat == 0) {
      if (function_1::hint_is_dir == 0) goto LAB_0008d5f6;
      command_word_completion_function::hint_is_dir = 0;
      var_11 = var_9(hint_text);
      var_26 = (char *)var_10(var_11 + 1);
      var_26 = var_12(var_26,hint_text);
      goto LAB_0008d5c8;
    }
    if (var_2 == 0) goto LAB_0008d218;
    var_4 = function_1::var_46 + 1;
    var_39 = function_1::glob_matches +
              function_1::var_46;
  }
  command_word_completion_function::val = *var_39;
  command_word_completion_function::var_46 = var_4;
  while (function_1::val != (char *)0x0) {
    var_4 = var_30(function_1::val);
    if (var_4 != 0) {
      var_26 = function_1::val;
      if ((*hint_text == '~') && (function_1::directory_part != (char *)0x0))
      {
        var_26 = var_29(function_1::val,
                                     function_1::directory_part);
        free(function_1::val);
        command_word_completion_function::val = var_26;
      }
      goto LAB_0008d5c8;
    }
    type_6(function_1::val);
    command_word_completion_function::val =
         function_1::glob_matches
         [function_1::var_46];
    command_word_completion_function::var_46 =
         function_1::var_46 + 1;
  }
  glob_ignore_case = 0;
  var_26 = (char *)0x0;
LAB_0008d5c8:
  if (var_52 != *(int *)(var_1 + 0x14)) {
                    /* WARNING: Subroutine does not return */
    var_53();
  }
  return var_26;
}


(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: (pointer_declarator declarator: (identifier))) (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: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (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: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) 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: (primitive_type) 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: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (labeled_statement label: (statement_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: (goto_statement label: (statement_identifier))))) alternative: (else_clause (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)))) (goto_statement label: (statement_identifier)))) (labeled_statement label: (statement_identifier) (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: (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)))))) right: (parenthesized_expression (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: (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)))) (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: (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 (binary_expression left: (identifier) right: (number_literal))))))) (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: (identifier))) (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 (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: (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 (binary_expression left: (identifier) right: (number_literal))))))) (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 (compound_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: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal))))))) (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: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal))))))) (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: (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: (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: (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 (binary_expression left: (identifier) right: (number_literal))))))) (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 (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 (comma_expression left: (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier)))) right: (comma_expression left: (assignment_expression left: (identifier) right: (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))) (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: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (do_statement body: (compound_statement (do_statement body: (compound_statement (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)))))) (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: (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: (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))))) (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: (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 (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) (identifier)))))) alternative: (else_clause (compound_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: (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 (binary_expression left: (identifier) right: (number_literal))))))) (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) (identifier)))))) alternative: (else_clause (compound_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: (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)))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (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 (binary_expression left: (identifier) right: (number_literal))))))) (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: (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 (binary_expression left: (identifier) right: (number_literal))))))) (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)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier))))))) alternative: (else_clause (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: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (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: (goto_statement label: (statement_identifier))) (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)))))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) condition: (parenthesized_expression (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: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (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))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (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: (char_literal (character)))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (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)))) (expression_statement (assignment_expression left: (identifier) right: (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: (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: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (labeled_statement label: (statement_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: (goto_statement label: (statement_identifier))))) alternative: (else_clause (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)))) (goto_statement label: (statement_identifier)))) (labeled_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: (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)))) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) condition: (parenthesized_expression (true))))) (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: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (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))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (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 (labeled_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)))) 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))) (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) (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: (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)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (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: (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))))))))))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (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 (binary_expression left: (identifier) right: (number_literal))))))) (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 (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: (primitive_type)) value: (identifier)) right: (binary_expression left: (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)) (if_statement 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))))))))) consequence: (goto_statement label: (statement_identifier))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (identifier)))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))) (goto_statement label: (statement_identifier))))) alternative: (else_clause (compound_statement (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) (do_statement 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: (primitive_type)) value: (identifier)) right: (binary_expression left: (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: (compound_statement (if_statement 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))))))))) consequence: (break_statement)) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (identifier)))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (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 (binary_expression left: (identifier) right: (number_literal))))))) (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: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (binary_expression left: (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 (comma_expression left: (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier)))) right: (binary_expression left: (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))))))))))))) consequence: (compound_statement (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: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_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: (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: (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 (binary_expression left: (identifier) right: (number_literal))))))) (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: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_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: (pointer_expression argument: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (while_statement condition: (parenthesized_expression (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 (identifier))))) (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))))) (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: (binary_expression left: (identifier) right: (number_literal)))))) (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)))) (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list)))))) (return_statement (identifier)))))

/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */

char * MASKED(char *param_1,int param_2)

{
  void *pvVar1;
  int iVar2;
  char *pcVar3;
  size_t sVar4;
  char *pcVar5;
  undefined4 *puVar6;
  int iVar7;
  uint uVar8;
  int iVar9;
  char *pcVar10;
  char cVar11;
  int in_GS_OFFSET;
  char *local_24;
  int local_20;
  undefined4 uStack_14;
  
  uStack_14 = 0x8d029;
  local_20 = *(int *)(in_GS_OFFSET + 0x14);
  if (param_2 == 0) {
    rl_filename_stat_hook = FUN_0008f310;
    if (DAT_00151468 == (char *)0x0) {
LAB_0008d085:
      if (DAT_00151464 != (char *)0x0) goto LAB_0008d089;
    }
    else {
      if (DAT_00151468 != DAT_00151464) {
        free(DAT_00151468);
        goto LAB_0008d085;
      }
LAB_0008d089:
      free(DAT_00151464);
    }
    DAT_00151460 = 0;
    DAT_0015145c = 0;
    iVar2 = absolute_pathname(param_1);
    if (((iVar2 == 0) && (iVar2 = absolute_program(param_1), iVar2 == 0)) && (*param_1 != '~')) {
      iVar2 = FUN_0008ac10(param_1);
      DAT_00151458 = (uint)(iVar2 != 0);
    }
    else {
      DAT_00151458 = 0;
    }
    DAT_00151454 = (char *)0x0;
    pcVar3 = (char *)rl_variable_value("completion-ignore-case");
    DAT_00151450 = 0;
    if ((*pcVar3 == 'o') && (pcVar3[1] == 'n')) {
      DAT_00151450 = (uint)(pcVar3[2] == '\0');
    }
    if (DAT_001514d4 != (undefined4 *)0x0) {
      free(DAT_001514d4);
      DAT_001514d4 = (undefined4 *)0x0;
    }
    DAT_0015144c = FUN_0008cd10();
    if ((DAT_0015144c == 0) && (iVar2 = absolute_program(param_1), iVar2 == 0)) {
      sVar4 = strlen(param_1);
      pcVar3 = (char *)xmalloc(sVar4 + 1);
      pcVar3 = strcpy(pcVar3,param_1);
      DAT_00151464 = pcVar3;
      DAT_00151468 = pcVar3;
      DAT_00151444 = strlen(pcVar3);
      if ((rl_completion_found_quote != 0) && (rl_completion_quote_character == 0)) {
        DAT_00151468 = (char *)FUN_00089940(pcVar3,0);
      }
      DAT_00151434 = get_string_value("PATH");
      DAT_001514ec = 0;
      DAT_00151430 = 0;
      DAT_0015142c = 0;
      if (DAT_00151428 != (void *)0x0) {
        free(DAT_00151428);
      }
      DAT_00151428 = (void *)all_visible_functions();
      if (DAT_00151424 != (void *)0x0) {
        free(DAT_00151424);
      }
      DAT_00151424 = (void *)all_aliases();
      goto LAB_0008d390;
    }
    if (*param_1 == '~') {
      DAT_00151464 = (char *)bash_tilde_expand(param_1,0);
      sVar4 = strlen(param_1);
      pcVar3 = (char *)xmalloc(sVar4 + 1);
      pcVar3 = strcpy(pcVar3,param_1);
      DAT_00151448 = pcVar3;
      pcVar5 = strchr(pcVar3,0x2f);
      if (pcVar5 == (char *)0x0) {
        free(pcVar3);
        DAT_00151448 = (char *)0x0;
      }
      else {
        *pcVar5 = '\0';
      }
    }
    else {
      sVar4 = strlen(param_1);
      if (dircomplete_expand == 0) {
        pcVar3 = (char *)xmalloc(sVar4 + 1);
        DAT_00151464 = strcpy(pcVar3,param_1);
      }
      else {
        pcVar3 = (char *)xmalloc(sVar4 + 1);
        DAT_00151464 = strcpy(pcVar3,param_1);
        FUN_0008c7b0(&DAT_00151464);
      }
    }
    DAT_00151468 = DAT_00151464;
    if ((rl_completion_found_quote != 0) && (rl_completion_quote_character == 0)) {
      pcVar3 = (char *)FUN_00089940(DAT_00151464,0);
      DAT_00151468 = pcVar3;
      free(DAT_00151464);
      DAT_00151464 = pcVar3;
    }
    pcVar3 = DAT_00151464;
    DAT_00151444 = strlen(DAT_00151464);
    if (DAT_00151440 != (char *)0x0) {
      free(DAT_00151440);
      pcVar3 = DAT_00151464;
    }
    sVar4 = strlen(pcVar3);
    pcVar5 = (char *)xmalloc(sVar4 + 1);
    DAT_0015143c = strcpy(pcVar5,pcVar3);
    DAT_00151438 = 0;
    DAT_00151440 = DAT_0015143c;
    if (DAT_0015144c == 0) {
      uVar8 = dircomplete_expand;
      if ((dircomplete_expand != 0) &&
         (iVar2 = path_dot_or_dotdot(DAT_0015143c), uVar8 = DAT_00151438, iVar2 != 0)) {
        dircomplete_expand = 1;
        rl_directory_rewrite_hook = FUN_0008c7b0;
        rl_directory_completion_hook = (code *)0x0;
      }
      DAT_0015145c = 4;
      pcVar3 = DAT_0015143c;
      do {
        do {
          while( true ) {
            DAT_00151454 = (char *)rl_filename_completion_function(pcVar3,uVar8);
            if ((DAT_0015145c == 4) && (dircomplete_expand != 0)) {
              rl_directory_completion_hook = FUN_0008c7b0;
              rl_directory_rewrite_hook = (code *)0x0;
            }
            DAT_00151438 = 1;
            if (DAT_00151454 == (char *)0x0) break;
            iVar2 = absolute_program(DAT_00151464);
            pcVar5 = DAT_00151454;
            if (iVar2 == 0) {
              pcVar3 = strrchr(DAT_00151454,0x2f);
              if (pcVar3 != (char *)0x0) {
                pcVar3 = pcVar3 + 1;
                if (DAT_00151450 == 0) {
                  iVar2 = strncmp(pcVar3,DAT_00151464,DAT_00151444);
                }
                else {
                  iVar2 = strncasecmp(pcVar3,DAT_00151464,DAT_00151444);
                }
                if (iVar2 == 0) {
                  sVar4 = strlen(pcVar3);
                  pcVar5 = (char *)xmalloc(sVar4 + 1);
                  pcVar3 = strcpy(pcVar5,pcVar3);
                  goto LAB_0008d6a4;
                }
              }
            }
            else {
              if (DAT_00151450 == 0) {
                iVar2 = strncmp(DAT_00151454,DAT_00151464,DAT_00151444);
              }
              else {
                iVar2 = strncasecmp(DAT_00151454,DAT_00151464,DAT_00151444);
              }
              if (*param_1 == '~') {
                pcVar3 = (char *)FUN_0008a220();
              }
              else {
                sVar4 = strlen(pcVar5);
                pcVar3 = (char *)xmalloc(sVar4 + 1);
                pcVar3 = strcpy(pcVar3,pcVar5);
              }
              pcVar5 = DAT_00151454;
              if (iVar2 == 0) {
LAB_0008d6a4:
                iVar2 = DAT_00151460;
                pcVar10 = DAT_00151454;
                sVar4 = strlen(DAT_00151454);
                pcVar5 = (char *)xmalloc(sVar4 + 1);
                local_24 = strcpy(pcVar5,pcVar10);
                FUN_0008c7b0(&local_24);
                if (iVar2 == 0) {
                  iVar2 = executable_or_directory(local_24);
                }
                else {
                  iVar2 = executable_file(local_24);
                }
                free(local_24);
                pcVar5 = DAT_00151454;
                if (iVar2 != 0) {
                  if (pcVar10 != DAT_00151454) {
                    free(pcVar10);
                  }
                  free(pcVar5);
                  DAT_00151454 = "";
                  goto LAB_0008d5c8;
                }
                free(pcVar3);
                if (pcVar10 != pcVar5) {
                  free(pcVar10);
                }
              }
              else {
                free(pcVar3);
              }
            }
            free(pcVar5);
            uVar8 = DAT_00151438;
            pcVar3 = DAT_0015143c;
          }
          iVar2 = absolute_program(DAT_00151464);
          if (iVar2 != 0) goto LAB_0008dac4;
LAB_0008d5f6:
          uVar8 = (uint)(DAT_00151454 != (char *)0x0);
          pcVar3 = DAT_0015143c;
          DAT_00151438 = uVar8;
        } while (DAT_00151454 != (char *)0x0);
        if (((DAT_00151434 == 0) || (*(char *)(DAT_00151434 + DAT_00151430) == '\0')) ||
           (pcVar3 = (char *)extract_colon_unit(DAT_00151434,&DAT_00151430), pcVar3 == (char *)0x0))
        goto LAB_0008dac4;
        DAT_00151460 = 1;
        cVar11 = *pcVar3;
        if (cVar11 == '\0') {
          free(pcVar3);
          pcVar3 = (char *)xmalloc(2);
          pcVar3[0] = '.';
          pcVar3[1] = '\0';
          cVar11 = '.';
        }
        pcVar5 = pcVar3;
        if (cVar11 == '~') {
          pcVar5 = (char *)bash_tilde_expand(pcVar3,0);
          free(pcVar3);
          cVar11 = *pcVar5;
        }
        pcVar3 = DAT_00151440;
        if ((cVar11 == '.') && (pcVar5[1] == '\0')) {
          DAT_001514ec = 1;
        }
        if (DAT_0015143c == (char *)0x0) {
LAB_0008dbfe:
          if (pcVar3 != (char *)0x0) goto LAB_0008de5f;
        }
        else {
          if (DAT_0015143c != DAT_00151440) {
            free(DAT_0015143c);
            goto LAB_0008dbfe;
          }
LAB_0008de5f:
          free(pcVar3);
        }
        pcVar3 = (char *)sh_makepath(pcVar5,DAT_00151464,0);
        DAT_00151440 = pcVar3;
        pcVar10 = strpbrk(pcVar3,"\"\'\\");
        if (pcVar10 != (char *)0x0) {
          pcVar3 = (char *)sh_backslash_quote(pcVar3,&DAT_00151500,0);
        }
        DAT_0015143c = pcVar3;
        free(pcVar5);
        uVar8 = DAT_00151438;
      } while( true );
    }
    DAT_0015145c = 5;
LAB_0008d218:
    glob_ignore_case = DAT_00151450;
    puVar6 = (undefined4 *)shell_glob_filename(DAT_00151464);
    glob_ignore_case = 0;
    if ((puVar6 == (undefined4 *)PTR_glob_error_return_00149f60) || (puVar6 == (undefined4 *)0x0)) {
      DAT_001514d4 = (undefined4 *)0x0;
      pcVar3 = (char *)0x0;
      goto LAB_0008d5c8;
    }
    DAT_0015142c = 0;
    DAT_001514d4 = puVar6;
    if ((puVar6[1] != 0) && (rl_completion_type == 9)) {
LAB_0008dac4:
      pcVar3 = (char *)0x0;
      goto LAB_0008d5c8;
    }
    iVar2 = 1;
  }
  else {
LAB_0008d390:
    pcVar3 = DAT_00151464;
    uVar8 = DAT_00151450;
    sVar4 = DAT_00151444;
    pvVar1 = DAT_00151424;
    iVar2 = DAT_0015142c;
    if (DAT_0015145c == 1) {
LAB_0008d960:
      do {
        pcVar5 = (&word_token_alist)[iVar2 * 2];
        if (pcVar5 == (char *)0x0) {
          DAT_0015142c = 0;
          DAT_0015145c = DAT_0015145c + 1;
          uVar8 = DAT_00151450;
          pvVar1 = DAT_00151428;
          goto LAB_0008d840;
        }
        iVar2 = iVar2 + 1;
        DAT_0015142c = iVar2;
      } while ((sVar4 != 0) &&
              ((*pcVar5 != *pcVar3 || (iVar9 = strncmp(pcVar5,pcVar3,sVar4), iVar9 != 0))));
LAB_0008d451:
      sVar4 = strlen(pcVar5);
      pcVar3 = (char *)xmalloc(sVar4 + 1);
      pcVar3 = strcpy(pcVar3,pcVar5);
      goto LAB_0008d5c8;
    }
    if (DAT_0015145c < 2) {
      if (DAT_0015145c == 0) {
        do {
          while( true ) {
            if ((pvVar1 == (void *)0x0) ||
               (puVar6 = *(undefined4 **)((int)pvVar1 + DAT_0015142c * 4),
               puVar6 == (undefined4 *)0x0)) {
              DAT_0015145c = 1;
              iVar2 = 0;
              goto LAB_0008d960;
            }
            DAT_0015142c = DAT_0015142c + 1;
            pcVar5 = (char *)*puVar6;
            if (uVar8 != 0) break;
            if ((sVar4 == 0) ||
               ((*pcVar5 == *pcVar3 && (iVar2 = strncmp(pcVar5,pcVar3,sVar4), iVar2 == 0))))
            goto LAB_0008d451;
          }
          iVar2 = strncasecmp(pcVar5,pcVar3,sVar4);
        } while (iVar2 != 0);
        goto LAB_0008d451;
      }
    }
    else {
      pvVar1 = DAT_00151428;
      if (DAT_0015145c == 2) {
LAB_0008d840:
        do {
          if ((pvVar1 == (void *)0x0) ||
             (puVar6 = *(undefined4 **)((int)pvVar1 + DAT_0015142c * 4), puVar6 == (undefined4 *)0x0
             )) {
            DAT_0015142c = 0;
            DAT_0015145c = DAT_0015145c + 1;
            goto LAB_0008d3bd;
          }
          DAT_0015142c = DAT_0015142c + 1;
          pcVar5 = (char *)*puVar6;
          if (uVar8 == 0) {
            if ((sVar4 == 0) ||
               ((*pcVar5 == *pcVar3 && (iVar2 = strncmp(pcVar5,pcVar3,sVar4), iVar2 == 0)))) break;
            goto LAB_0008d840;
          }
          iVar2 = strncasecmp(pcVar5,pcVar3,sVar4);
        } while (iVar2 != 0);
        sVar4 = strlen(pcVar5);
        pcVar3 = (char *)xmalloc(sVar4 + 1);
        pcVar3 = strcpy(pcVar3,pcVar5);
        goto LAB_0008d5c8;
      }
      if (DAT_0015145c == 3) {
LAB_0008d3bd:
        pcVar3 = DAT_00151464;
        sVar4 = DAT_00151444;
        iVar2 = num_shell_builtins;
        if (DAT_0015142c < num_shell_builtins) {
          puVar6 = (undefined4 *)(shell_builtins + DAT_0015142c * 0x18);
          do {
            iVar9 = DAT_0015142c;
            if (((puVar6[1] != 0) && ((*(byte *)(puVar6 + 2) & 1) != 0)) &&
               ((pcVar5 = (char *)*puVar6, sVar4 == 0 ||
                ((*pcVar5 == *pcVar3 && (iVar7 = strncmp(pcVar5,pcVar3,sVar4), iVar7 == 0)))))) {
              DAT_0015142c = iVar9 + 1;
              goto LAB_0008d451;
            }
            DAT_0015142c = iVar9 + 1;
            puVar6 = puVar6 + 6;
          } while (DAT_0015142c != iVar2);
        }
        DAT_0015145c = DAT_0015145c + 1;
        DAT_0015142c = 0;
      }
    }
    if (DAT_0015144c == 0) {
      if (DAT_00151458 == 0) goto LAB_0008d5f6;
      DAT_00151458 = 0;
      sVar4 = strlen(param_1);
      pcVar3 = (char *)xmalloc(sVar4 + 1);
      pcVar3 = strcpy(pcVar3,param_1);
      goto LAB_0008d5c8;
    }
    if (param_2 == 0) goto LAB_0008d218;
    iVar2 = DAT_0015142c + 1;
    puVar6 = DAT_001514d4 + DAT_0015142c;
  }
  DAT_00151454 = (char *)*puVar6;
  DAT_0015142c = iVar2;
  while (DAT_00151454 != (char *)0x0) {
    iVar2 = executable_or_directory(DAT_00151454);
    if (iVar2 != 0) {
      pcVar3 = DAT_00151454;
      if ((*param_1 == '~') && (DAT_00151448 != (char *)0x0)) {
        pcVar3 = (char *)FUN_0008a220();
        free(DAT_00151454);
        DAT_00151454 = pcVar3;
      }
      goto LAB_0008d5c8;
    }
    free(DAT_00151454);
    DAT_00151454 = (char *)DAT_001514d4[DAT_0015142c];
    DAT_0015142c = DAT_0015142c + 1;
  }
  glob_ignore_case = 0;
  pcVar3 = (char *)0x0;
LAB_0008d5c8:
  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {
                    /* WARNING: Subroutine does not return */
    FUN_000ecc40();
  }
  return pcVar3;
}

