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

FTSENT * __regparm3 fts_build(FTS *sp,int type)

{
  DIR *__dirp;
  size_t sVar1;
  _ftsent *p_Var2;
  char *pcVar3;
  bool bVar4;
  __ino64_t _Var5;
  _ftsent *p_Var6;
  FTSENT *pFVar7;
  char *pcVar8;
  _Bool _Var9;
  ushort uVar10;
  int *piVar11;
  dirent64 *pdVar12;
  size_t namelen;
  FTSENT *pFVar13;
  undefined4 uVar14;
  int iVar15;
  FTSENT *pFVar16;
  DIR *pDVar17;
  uint uVar18;
  fsword fVar19;
  leaf_optimization lVar20;
  uint uVar21;
  DIR *__dirp_00;
  bool bVar22;
  uint local_5c;
  FTSENT *local_54;
  uint local_4c;
  FTSENT *local_48;
  uint local_44;
  char *local_38;
  uint local_34;
  size_t local_30;
  int local_2c;
  _Bool local_1f;
  
  pFVar16 = sp->fts_cur;
  __dirp = (DIR *)pFVar16->fts_dirp;
  if (__dirp == (DIR *)0x0) {
    uVar18 = sp->fts_options;
    uVar21 = uVar18 & 0x10;
    if (((uVar21 != 0) && (uVar21 = 0x20000, (uVar18 & 1) != 0)) &&
       (uVar21 = pFVar16->fts_level, uVar21 != 0)) {
      uVar21 = 0x20000;
    }
    iVar15 = -100;
    if ((uVar18 & 0x204) == 0x200) {
      iVar15 = sp->fts_cwd_fd;
    }
    local_2c = openat_safer(iVar15,pFVar16->fts_accpath,(uVar18 & 0x800) << 7 | uVar21 | 0x90900);
    if (local_2c < 0) {
      pFVar16->fts_dirp = (DIR *)0x0;
joined_r0x00019b00:
      if (type == 3) {
        pFVar16->fts_info = 4;
        piVar11 = __errno_location();
        pFVar16->fts_errno = *piVar11;
      }
      return (FTSENT *)0x0;
    }
    pDVar17 = fdopendir(local_2c);
    if (pDVar17 == (DIR *)0x0) {
      piVar11 = __errno_location();
      iVar15 = *piVar11;
      close(local_2c);
      *piVar11 = iVar15;
      pFVar16->fts_dirp = (DIR *)0x0;
      goto joined_r0x00019b00;
    }
    pFVar16->fts_dirp = (DIR *)pDVar17;
    if (pFVar16->fts_info == 0xb) {
      uVar10 = fts_stat(sp,pFVar16,false);
      pFVar16->fts_info = uVar10;
    }
    else if (((uint)sp->fts_options & 0x100) != 0) {
      leave_dir((FTS *)sp->fts_options,(FTSENT *)&sp->fts_cycle,(FTS *)pFVar16);
      fts_stat(sp,pFVar16,false);
      _Var9 = enter_dir((FTS *)sp->fts_options,(FTSENT *)&sp->fts_cycle,(FTS *)pFVar16);
      if (!_Var9) {
        piVar11 = __errno_location();
        *piVar11 = 0xc;
        return (FTSENT *)0x0;
      }
    }
    local_34 = (-(uint)(sp->fts_compar == (_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *)0x0) &
               0x186a1) - 1;
    if (type == 2) {
LAB_00019a90:
      bVar22 = false;
      uVar18 = sp->fts_options;
      goto LAB_000192d4;
    }
    if ((((sp->fts_options & 0x38U) == 0x18) && (pFVar16->fts_statp[0].st_nlink == 2)) &&
       (lVar20 = leaf_optimization(pFVar16,local_2c), lVar20 != NO_LEAF_OPTIMIZATION)) {
      if (type != 3) goto LAB_00019a90;
      bVar4 = false;
      bVar22 = true;
    }
    else {
      bVar22 = type == 3;
      bVar4 = true;
    }
    if (((sp->fts_options & 0x200) == 0) || (local_2c = rpl_fcntl(local_2c,0x406,3), -1 < local_2c))
    {
      iVar15 = fts_safe_changedir(sp,pFVar16,local_2c,(char *)0x0);
      if (iVar15 == 0) goto LAB_000192cc;
      __dirp_00 = pFVar16->fts_dirp;
      uVar10 = pFVar16->fts_flags | 1;
      if ((bVar22) && (bVar4)) goto LAB_0001980f;
LAB_0001982f:
      pFVar16->fts_flags = uVar10;
      closedir((DIR *)__dirp_00);
      uVar18 = sp->fts_options;
      pFVar16->fts_dirp = (DIR *)0x0;
      if (((uVar18 & 0x200) != 0) && (-1 < local_2c)) {
        close(local_2c);
        uVar18 = sp->fts_options;
      }
    }
    else {
      __dirp_00 = pFVar16->fts_dirp;
      uVar10 = pFVar16->fts_flags | 1;
      if ((bVar22) && (bVar4)) {
LAB_0001980f:
        piVar11 = __errno_location();
        pFVar16->fts_errno = *piVar11;
        goto LAB_0001982f;
      }
      pFVar16->fts_flags = uVar10;
      closedir((DIR *)__dirp_00);
      uVar18 = sp->fts_options;
    }
    bVar22 = false;
    pFVar16->fts_dirp = (DIR *)0x0;
  }
  else {
    local_2c = dirfd(__dirp);
    if (local_2c < 0) {
      closedir((DIR *)pFVar16->fts_dirp);
      pFVar16->fts_dirp = (DIR *)0x0;
      goto joined_r0x00019b00;
    }
    if (sp->fts_compar == (_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *)0x0) {
      local_34 = 100000;
      uVar18 = sp->fts_options;
      bVar22 = true;
    }
    else {
      local_34 = 0xffffffff;
LAB_000192cc:
      bVar22 = true;
      uVar18 = sp->fts_options;
    }
  }
LAB_000192d4:
  sVar1 = pFVar16->fts_pathlen;
  local_4c = sVar1;
  local_30 = sVar1 - 1;
  if (pFVar16->fts_path[sVar1 - 1] != '/') {
    local_4c = sVar1 + 1;
    local_30 = sVar1;
  }
  local_38 = (char *)0x0;
  if ((uVar18 & 4) != 0) {
    local_38 = sp->fts_path + local_30 + 1;
    sp->fts_path[local_30] = '/';
  }
  local_44 = sp->fts_pathlen - local_4c;
  bVar4 = false;
  local_1f = false;
  iVar15 = pFVar16->fts_level;
  local_54 = (FTSENT *)0x0;
  local_5c = 0;
  local_48 = (FTSENT *)0x0;
LAB_000193a8:
  do {
    do {
      pDVar17 = (DIR *)pFVar16->fts_dirp;
      if (pDVar17 == (DIR *)0x0) goto LAB_00019641;
      piVar11 = __errno_location();
      *piVar11 = 0;
      pdVar12 = readdir64(pDVar17);
      if (pdVar12 == (dirent64 *)0x0) {
        if (*piVar11 != 0) {
          pFVar16->fts_errno = *piVar11;
          pFVar16->fts_info = (-(ushort)(__dirp == (DIR *)0x0 && local_5c == 0) & 0xfffd) + 7;
        }
        if ((DIR *)pFVar16->fts_dirp != (DIR *)0x0) {
          closedir((DIR *)pFVar16->fts_dirp);
          pFVar16->fts_dirp = (DIR *)0x0;
        }
        goto LAB_00019641;
      }
    } while ((((sp->fts_options & 0x20) == 0) && (pdVar12->d_name[0] == '.')) &&
            ((pdVar12->d_name[1] == '\0' || (*(short *)(pdVar12->d_name + 1) == 0x2e))));
    namelen = strlen(pdVar12->d_name);
    pFVar13 = fts_alloc(sp,pdVar12->d_name,namelen);
    if (pFVar13 == (FTSENT *)0x0) {
LAB_00019910:
      iVar15 = *piVar11;
      free(pFVar13);
      fts_lfree(local_48);
      closedir((DIR *)pFVar16->fts_dirp);
      pFVar16->fts_dirp = (DIR *)0x0;
      pFVar16->fts_info = 7;
      sp->fts_options = sp->fts_options | 0x4000;
      *piVar11 = iVar15;
      return (FTSENT *)0x0;
    }
    if (local_44 <= namelen) {
      pcVar3 = sp->fts_path;
      _Var9 = fts_palloc((FTS *)&sp->fts_path,(size_t)&sp->fts_pathlen,
                         (FTS *)(local_30 + 2 + namelen));
      if (!_Var9) goto LAB_00019910;
      pcVar8 = local_38;
      if ((sp->fts_path != pcVar3) &&
         (local_1f = _Var9, pcVar8 = sp->fts_path + local_4c, (sp->fts_options & 4) == 0)) {
        pcVar8 = local_38;
      }
      local_38 = pcVar8;
      local_44 = sp->fts_pathlen - local_4c;
    }
    if (CARRY4(namelen,local_4c)) {
      free(pFVar13);
      fts_lfree(local_48);
      closedir((DIR *)pFVar16->fts_dirp);
      pFVar16->fts_dirp = (DIR *)0x0;
      pFVar16->fts_info = 7;
      sp->fts_options = sp->fts_options | 0x4000;
      *piVar11 = 0x24;
      return (FTSENT *)0x0;
    }
    uVar14 = *(undefined4 *)((int)&pdVar12->d_ino + 4);
    pFVar13->fts_level = iVar15 + 1;
    p_Var2 = sp->fts_cur;
    pFVar13->fts_pathlen = namelen + local_4c;
    pFVar13->fts_parent = p_Var2;
    _Var5 = pdVar12->d_ino;
    *(undefined4 *)((int)&pFVar13->fts_statp[0].st_ino + 4) = uVar14;
    *(int *)&pFVar13->fts_statp[0].st_ino = (int)_Var5;
    uVar18 = sp->fts_options;
    if ((uVar18 & 4) == 0) {
      pFVar13->fts_accpath = (char *)(pFVar13 + 1);
    }
    else {
      pFVar13->fts_accpath = pFVar13->fts_path;
      memmove(local_38,pFVar13 + 1,pFVar13->fts_namelen + 1);
      uVar18 = sp->fts_options;
    }
    if ((sp->fts_compar == (_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *)0x0) ||
       ((uVar18 & 0x400) != 0)) {
      uVar21 = pdVar12->d_type - 1;
      if (((uVar18 & 0x18) == 0x18) && ((pdVar12->d_type & 0xfb) != 0)) {
        pFVar13->fts_info = 0xb;
        if (uVar21 < 0xc) {
          pFVar13->fts_statp[0].st_mode = *(__mode_t *)(CSWTCH_40 + uVar21 * 4);
          uVar14 = 1;
        }
        else {
          pFVar13->fts_statp[0].st_mode = 0;
          uVar14 = 1;
        }
      }
      else {
        pFVar13->fts_info = 0xb;
        if (uVar21 < 0xc) {
          pFVar13->fts_statp[0].st_mode = *(__mode_t *)(CSWTCH_40 + uVar21 * 4);
          uVar14 = 2;
        }
        else {
          pFVar13->fts_statp[0].st_mode = 0;
          uVar14 = 2;
        }
      }
      *(undefined4 *)&pFVar13->fts_statp[0].st_size = uVar14;
      *(undefined4 *)((int)&pFVar13->fts_statp[0].st_size + 4) = 0;
    }
    else {
      uVar10 = fts_stat(sp,pFVar13,false);
      pFVar13->fts_info = uVar10;
    }
    pFVar13->fts_link = (_ftsent *)0x0;
    pFVar7 = pFVar13;
    if (local_48 != (FTSENT *)0x0) {
      local_54->fts_link = pFVar13;
      pFVar7 = local_48;
    }
    local_48 = pFVar7;
    local_54 = pFVar13;
    if (local_5c == 10000) {
      if ((sp->fts_compar != (_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *)0x0) ||
         (((fVar19 = filesystem_type(pFVar16,local_2c), fVar19 != 0x6969 && (fVar19 != 0x1021994))
          && (bVar4 = true, fVar19 != -0xacb2be)))) {
        local_5c = 0x2711;
        goto LAB_000193a8;
      }
      bVar4 = false;
    }
    local_5c = local_5c + 1;
  } while (local_5c < local_34);
LAB_00019641:
  if (local_1f != false) {
    pcVar3 = sp->fts_path;
    for (p_Var2 = sp->fts_child; p_Var6 = local_48, p_Var2 != (_ftsent *)0x0;
        p_Var2 = p_Var2->fts_link) {
      if ((_ftsent *)p_Var2->fts_accpath != p_Var2 + 1) {
        p_Var2->fts_accpath = pcVar3 + ((int)p_Var2->fts_accpath - (int)p_Var2->fts_path);
      }
      p_Var2->fts_path = pcVar3;
    }
    while (pFVar13 = p_Var6, -1 < pFVar13->fts_level) {
      if ((FTSENT *)pFVar13->fts_accpath != pFVar13 + 1) {
        pFVar13->fts_accpath = pcVar3 + ((int)pFVar13->fts_accpath - (int)pFVar13->fts_path);
      }
      pFVar13->fts_path = pcVar3;
      p_Var6 = pFVar13->fts_link;
      if (pFVar13->fts_link == (_ftsent *)0x0) {
        p_Var6 = pFVar13->fts_parent;
      }
    }
  }
  if ((sp->fts_options & 4) != 0) {
    if ((sp->fts_pathlen == local_4c) || (local_5c == 0)) {
      local_38 = local_38 + -1;
    }
    *local_38 = '\0';
  }
  if ((__dirp == (DIR *)0x0) && (bVar22)) {
    if ((type != 1) && (local_5c != 0)) goto LAB_000196b9;
    if (pFVar16->fts_level == 0) {
      iVar15 = restore_initial_cwd(sp);
    }
    else {
      iVar15 = fts_safe_changedir(sp,pFVar16->fts_parent,-1,"..");
    }
    if (iVar15 != 0) {
      pFVar16->fts_info = 7;
      sp->fts_options = sp->fts_options | 0x4000;
      fts_lfree(local_48);
      return (FTSENT *)0x0;
    }
  }
  if (local_5c == 0) {
    if (((type == 3) && (pFVar16->fts_info != 4)) && (pFVar16->fts_info != 7)) {
      pFVar16->fts_info = 6;
    }
    fts_lfree(local_48);
    return (FTSENT *)0x0;
  }
LAB_000196b9:
  if (bVar4) {
    sp->fts_compar = fts_compare_ino;
    pFVar16 = fts_sort(sp,local_48,local_5c);
    sp->fts_compar = (_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *)0x0;
    return pFVar16;
  }
  if ((sp->fts_compar != (_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *)0x0) && (local_5c != 1)) {
    pFVar16 = fts_sort(sp,local_48,local_5c);
    return pFVar16;
  }
  return local_48;
}



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

void * __regparm3 FUN_00019270(int *param_1,int param_2)

{
  int iVar1;
  DIR *__dirp;
  bool bVar2;
  __ino64_t _Var3;
  undefined1 *puVar4;
  char cVar5;
  undefined2 uVar6;
  int iVar7;
  int *piVar8;
  dirent64 *pdVar9;
  size_t sVar10;
  void *pvVar11;
  undefined4 uVar12;
  DIR *pDVar13;
  uint uVar14;
  int iVar15;
  void *pvVar16;
  ushort uVar17;
  uint uVar18;
  bool bVar19;
  uint local_5c;
  void *local_54;
  uint local_4c;
  void *local_48;
  uint local_44;
  undefined1 *local_38;
  uint local_34;
  uint local_30;
  int local_2c;
  char local_1f;
  
  iVar1 = *param_1;
  __dirp = *(DIR **)(iVar1 + 0xc);
  if (__dirp == (DIR *)0x0) {
    uVar14 = param_1[0xb];
    uVar18 = uVar14 & 0x10;
    if (((uVar18 != 0) && (uVar18 = 0x20000, (uVar14 & 1) != 0)) &&
       (uVar18 = *(uint *)(iVar1 + 0x30), uVar18 != 0)) {
      uVar18 = 0x20000;
    }
    iVar7 = -100;
    if ((uVar14 & 0x204) == 0x200) {
      iVar7 = param_1[7];
    }
    local_2c = FUN_0001c620(iVar7,*(undefined4 *)(iVar1 + 0x18),
                            (uVar14 & 0x800) << 7 | uVar18 | 0x90900);
    if (local_2c < 0) {
      *(undefined4 *)(iVar1 + 0xc) = 0;
joined_r0x00019b00:
      if (param_2 == 3) {
        *(undefined2 *)(iVar1 + 0x3c) = 4;
        piVar8 = __errno_location();
        *(int *)(iVar1 + 0x20) = *piVar8;
      }
      return (void *)0x0;
    }
    pDVar13 = fdopendir(local_2c);
    if (pDVar13 == (DIR *)0x0) {
      piVar8 = __errno_location();
      iVar7 = *piVar8;
      close(local_2c);
      *piVar8 = iVar7;
      *(undefined4 *)(iVar1 + 0xc) = 0;
      goto joined_r0x00019b00;
    }
    *(DIR **)(iVar1 + 0xc) = pDVar13;
    if (*(short *)(iVar1 + 0x3c) == 0xb) {
      uVar6 = FUN_00018640();
      *(undefined2 *)(iVar1 + 0x3c) = uVar6;
    }
    else if ((param_1[0xb] & 0x100U) != 0) {
      FUN_00019160();
      FUN_00018640();
      cVar5 = FUN_00019090();
      if (cVar5 == '\0') {
        piVar8 = __errno_location();
        *piVar8 = 0xc;
        return (void *)0x0;
      }
    }
    local_34 = (-(uint)(param_1[10] == 0) & 0x186a1) - 1;
    if (param_2 == 2) {
LAB_00019a90:
      bVar19 = false;
      uVar14 = param_1[0xb];
      goto LAB_000192d4;
    }
    if ((((param_1[0xb] & 0x38U) == 0x18) && (*(int *)(iVar1 + 0x58) == 2)) &&
       (iVar7 = FUN_00018b60(), iVar7 != 0)) {
      if (param_2 != 3) goto LAB_00019a90;
      bVar2 = false;
      bVar19 = true;
    }
    else {
      bVar19 = param_2 == 3;
      bVar2 = true;
    }
    if (((*(byte *)((int)param_1 + 0x2d) & 2) == 0) ||
       (local_2c = FUN_0001c780(local_2c,0x406,3), -1 < local_2c)) {
      iVar7 = FUN_00018e20(0);
      if (iVar7 == 0) goto LAB_000192cc;
      pDVar13 = *(DIR **)(iVar1 + 0xc);
      uVar17 = *(ushort *)(iVar1 + 0x3e) | 1;
      if ((bVar19) && (bVar2)) goto LAB_0001980f;
LAB_0001982f:
      *(ushort *)(iVar1 + 0x3e) = uVar17;
      closedir(pDVar13);
      uVar14 = param_1[0xb];
      *(undefined4 *)(iVar1 + 0xc) = 0;
      if (((uVar14 & 0x200) != 0) && (-1 < local_2c)) {
        close(local_2c);
        uVar14 = param_1[0xb];
      }
    }
    else {
      pDVar13 = *(DIR **)(iVar1 + 0xc);
      uVar17 = *(ushort *)(iVar1 + 0x3e) | 1;
      if ((bVar19) && (bVar2)) {
LAB_0001980f:
        piVar8 = __errno_location();
        *(int *)(iVar1 + 0x20) = *piVar8;
        goto LAB_0001982f;
      }
      *(ushort *)(iVar1 + 0x3e) = uVar17;
      closedir(pDVar13);
      uVar14 = param_1[0xb];
    }
    bVar19 = false;
    *(undefined4 *)(iVar1 + 0xc) = 0;
  }
  else {
    iVar7 = dirfd(__dirp);
    if (iVar7 < 0) {
      closedir(*(DIR **)(iVar1 + 0xc));
      *(undefined4 *)(iVar1 + 0xc) = 0;
      goto joined_r0x00019b00;
    }
    if (param_1[10] == 0) {
      local_34 = 100000;
      uVar14 = param_1[0xb];
      bVar19 = true;
    }
    else {
      local_34 = 0xffffffff;
LAB_000192cc:
      bVar19 = true;
      uVar14 = param_1[0xb];
    }
  }
LAB_000192d4:
  uVar18 = *(uint *)(iVar1 + 0x28);
  local_4c = uVar18;
  local_30 = uVar18 - 1;
  if (*(char *)(*(int *)(iVar1 + 0x1c) + -1 + uVar18) != '/') {
    local_4c = uVar18 + 1;
    local_30 = uVar18;
  }
  local_38 = (undefined1 *)0x0;
  if ((uVar14 & 4) != 0) {
    local_38 = (undefined1 *)(local_30 + param_1[5]) + 1;
    *(undefined1 *)(local_30 + param_1[5]) = 0x2f;
  }
  local_44 = param_1[8] - local_4c;
  bVar2 = false;
  local_1f = '\0';
  iVar7 = *(int *)(iVar1 + 0x30);
  local_54 = (void *)0x0;
  local_5c = 0;
  local_48 = (void *)0x0;
LAB_000193a8:
  do {
    do {
      pDVar13 = *(DIR **)(iVar1 + 0xc);
      if (pDVar13 == (DIR *)0x0) goto LAB_00019641;
      piVar8 = __errno_location();
      *piVar8 = 0;
      pdVar9 = readdir64(pDVar13);
      if (pdVar9 == (dirent64 *)0x0) {
        if (*piVar8 != 0) {
          *(int *)(iVar1 + 0x20) = *piVar8;
          *(ushort *)(iVar1 + 0x3c) =
               (-(ushort)(__dirp == (DIR *)0x0 && local_5c == 0) & 0xfffd) + 7;
        }
        if (*(DIR **)(iVar1 + 0xc) != (DIR *)0x0) {
          closedir(*(DIR **)(iVar1 + 0xc));
          *(undefined4 *)(iVar1 + 0xc) = 0;
        }
        goto LAB_00019641;
      }
    } while ((((*(byte *)(param_1 + 0xb) & 0x20) == 0) && (pdVar9->d_name[0] == '.')) &&
            ((pdVar9->d_name[1] == '\0' || (*(short *)(pdVar9->d_name + 1) == 0x2e))));
    sVar10 = strlen(pdVar9->d_name);
    pvVar11 = (void *)FUN_000188d0();
    if (pvVar11 == (void *)0x0) {
LAB_00019910:
      iVar7 = *piVar8;
      free(pvVar11);
      FUN_00018960();
      closedir(*(DIR **)(iVar1 + 0xc));
      *(undefined4 *)(iVar1 + 0xc) = 0;
      *(undefined2 *)(iVar1 + 0x3c) = 7;
      param_1[0xb] = param_1[0xb] | 0x4000;
      *piVar8 = iVar7;
      return (void *)0x0;
    }
    if (local_44 <= sVar10) {
      iVar15 = param_1[5];
      cVar5 = FUN_00018cc0();
      if (cVar5 == '\0') goto LAB_00019910;
      puVar4 = local_38;
      if ((param_1[5] != iVar15) &&
         (local_1f = cVar5, puVar4 = (undefined1 *)(param_1[5] + local_4c),
         (*(byte *)(param_1 + 0xb) & 4) == 0)) {
        puVar4 = local_38;
      }
      local_38 = puVar4;
      local_44 = param_1[8] - local_4c;
    }
    if (CARRY4(sVar10,local_4c)) {
      free(pvVar11);
      FUN_00018960();
      closedir(*(DIR **)(iVar1 + 0xc));
      *(undefined4 *)(iVar1 + 0xc) = 0;
      *(undefined2 *)(iVar1 + 0x3c) = 7;
      param_1[0xb] = param_1[0xb] | 0x4000;
      *piVar8 = 0x24;
      return (void *)0x0;
    }
    uVar12 = *(undefined4 *)((int)&pdVar9->d_ino + 4);
    *(int *)((int)pvVar11 + 0x30) = iVar7 + 1;
    iVar15 = *param_1;
    *(size_t *)((int)pvVar11 + 0x28) = sVar10 + local_4c;
    *(int *)((int)pvVar11 + 4) = iVar15;
    _Var3 = pdVar9->d_ino;
    *(undefined4 *)((int)pvVar11 + 0xa0) = uVar12;
    *(int *)((int)pvVar11 + 0x9c) = (int)_Var3;
    uVar14 = param_1[0xb];
    if ((uVar14 & 4) == 0) {
      *(void **)((int)pvVar11 + 0x18) = (void *)((int)pvVar11 + 0xa4);
    }
    else {
      *(undefined4 *)((int)pvVar11 + 0x18) = *(undefined4 *)((int)pvVar11 + 0x1c);
      memmove(local_38,(void *)((int)pvVar11 + 0xa4),*(int *)((int)pvVar11 + 0x34) + 1);
      uVar14 = param_1[0xb];
    }
    if ((param_1[10] == 0) || ((uVar14 & 0x400) != 0)) {
      uVar18 = pdVar9->d_type - 1;
      if (((uVar14 & 0x18) == 0x18) && ((pdVar9->d_type & 0xfb) != 0)) {
        *(undefined2 *)((int)pvVar11 + 0x3c) = 0xb;
        if (uVar18 < 0xc) {
          *(undefined4 *)((int)pvVar11 + 0x54) = *(undefined4 *)(&DAT_0001e180 + uVar18 * 4);
          uVar12 = 1;
        }
        else {
          *(undefined4 *)((int)pvVar11 + 0x54) = 0;
          uVar12 = 1;
        }
      }
      else {
        *(undefined2 *)((int)pvVar11 + 0x3c) = 0xb;
        if (uVar18 < 0xc) {
          *(undefined4 *)((int)pvVar11 + 0x54) = *(undefined4 *)(&DAT_0001e180 + uVar18 * 4);
          uVar12 = 2;
        }
        else {
          *(undefined4 *)((int)pvVar11 + 0x54) = 0;
          uVar12 = 2;
        }
      }
      *(undefined4 *)((int)pvVar11 + 0x70) = uVar12;
      *(undefined4 *)((int)pvVar11 + 0x74) = 0;
    }
    else {
      uVar6 = FUN_00018640();
      *(undefined2 *)((int)pvVar11 + 0x3c) = uVar6;
    }
    *(undefined4 *)((int)pvVar11 + 8) = 0;
    pvVar16 = pvVar11;
    if (local_48 != (void *)0x0) {
      *(void **)((int)local_54 + 8) = pvVar11;
      pvVar16 = local_48;
    }
    local_48 = pvVar16;
    local_54 = pvVar11;
    if (local_5c == 10000) {
      if ((param_1[10] != 0) ||
         (((iVar15 = FUN_00018a00(), iVar15 != 0x6969 && (iVar15 != 0x1021994)) &&
          (bVar2 = true, iVar15 != -0xacb2be)))) {
        local_5c = 0x2711;
        goto LAB_000193a8;
      }
      bVar2 = false;
    }
    local_5c = local_5c + 1;
  } while (local_5c < local_34);
LAB_00019641:
  if (local_1f != '\0') {
    iVar15 = param_1[5];
    for (iVar7 = param_1[1]; pvVar11 = local_48, iVar7 != 0; iVar7 = *(int *)(iVar7 + 8)) {
      if (*(int *)(iVar7 + 0x18) != iVar7 + 0xa4) {
        *(int *)(iVar7 + 0x18) = (*(int *)(iVar7 + 0x18) - *(int *)(iVar7 + 0x1c)) + iVar15;
      }
      *(int *)(iVar7 + 0x1c) = iVar15;
    }
    while (pvVar16 = pvVar11, -1 < *(int *)((int)pvVar16 + 0x30)) {
      if (*(int *)((int)pvVar16 + 0x18) != (int)pvVar16 + 0xa4) {
        *(int *)((int)pvVar16 + 0x18) =
             (*(int *)((int)pvVar16 + 0x18) - *(int *)((int)pvVar16 + 0x1c)) + iVar15;
      }
      *(int *)((int)pvVar16 + 0x1c) = iVar15;
      pvVar11 = *(void **)((int)pvVar16 + 8);
      if (*(void **)((int)pvVar16 + 8) == (void *)0x0) {
        pvVar11 = *(void **)((int)pvVar16 + 4);
      }
    }
  }
  if ((*(byte *)(param_1 + 0xb) & 4) != 0) {
    if ((param_1[8] == local_4c) || (local_5c == 0)) {
      local_38 = local_38 + -1;
    }
    *local_38 = 0;
  }
  if ((__dirp == (DIR *)0x0) && (bVar19)) {
    if ((param_2 != 1) && (local_5c != 0)) goto LAB_000196b9;
    if (*(int *)(iVar1 + 0x30) == 0) {
      iVar7 = FUN_00018c40();
    }
    else {
      iVar7 = FUN_00018e20(&DAT_0001e166);
    }
    if (iVar7 != 0) {
      *(undefined2 *)(iVar1 + 0x3c) = 7;
      param_1[0xb] = param_1[0xb] | 0x4000;
      FUN_00018960();
      return (void *)0x0;
    }
  }
  if (local_5c == 0) {
    if (((param_2 == 3) && (*(short *)(iVar1 + 0x3c) != 4)) && (*(short *)(iVar1 + 0x3c) != 7)) {
      *(undefined2 *)(iVar1 + 0x3c) = 6;
    }
    FUN_00018960();
    return (void *)0x0;
  }
LAB_000196b9:
  if (bVar2) {
    param_1[10] = (int)FUN_00018600;
    pvVar11 = (void *)FUN_000187e0();
    param_1[10] = 0;
    return pvVar11;
  }
  if ((param_1[10] != 0) && (local_5c != 1)) {
    pvVar11 = (void *)FUN_000187e0();
    return pvVar11;
  }
  return local_48;
}


PUSH EBP
MOV EBP,EAX
PUSH EDI
PUSH ESI
PUSH EBX
CALL 0x00012a00
ADD EBX,0xad85
SUB ESP,0x4c
MOV EAX,dword ptr [EAX]
MOV dword ptr [ESP + 0x34],EDX
MOV dword ptr [ESP + 0xc],EAX
MOV EAX,dword ptr [EAX + 0xc]
MOV dword ptr [ESP + 0x4],EBX
MOV dword ptr [ESP + 0x38],EAX
TEST EAX,EAX
JZ 0x000196f0
SUB ESP,0xc
PUSH EAX
CALL 0x000120b0
MOV dword ptr [ESP + 0x40],EAX
ADD ESP,0x10
TEST EAX,EAX
JS 0x00019bf3
MOV EAX,dword ptr [EBP + 0x28]
TEST EAX,EAX
JZ 0x00019a78
MOV dword ptr [ESP + 0x28],0xffffffff
MOV byte ptr [ESP + 0x3f],0x1
MOV EAX,dword ptr [EBP + 0x2c]
MOV EDI,dword ptr [ESP + 0xc]
MOV ECX,dword ptr [EDI + 0x28]
MOV EDX,dword ptr [EDI + 0x1c]
LEA EBX,[ECX + -0x1]
CMP byte ptr [EDX + ECX*0x1 + -0x1],0x2f
MOV dword ptr [ESP + 0x10],ECX
MOV dword ptr [ESP + 0x2c],EBX
JZ 0x000192fb
LEA EDI,[ECX + 0x1]
MOV dword ptr [ESP + 0x2c],ECX
MOV dword ptr [ESP + 0x10],EDI
MOV dword ptr [ESP + 0x24],0x0
TEST AL,0x4
JZ 0x00019318
MOV EAX,dword ptr [ESP + 0x2c]
ADD EAX,dword ptr [EBP + 0x14]
LEA EDI,[EAX + 0x1]
MOV byte ptr [EAX],0x2f
MOV dword ptr [ESP + 0x24],EDI
MOV EAX,dword ptr [EBP + 0x20]
SUB EAX,dword ptr [ESP + 0x10]
MOV byte ptr [ESP + 0x3e],0x0
MOV dword ptr [ESP + 0x18],EAX
MOV EAX,dword ptr [ESP + 0xc]
MOV byte ptr [ESP + 0x3d],0x0
MOV EAX,dword ptr [EAX + 0x30]
MOV dword ptr [ESP + 0x8],0x0
MOV dword ptr [ESP],0x0
ADD EAX,0x1
MOV dword ptr [ESP + 0x14],0x0
MOV dword ptr [ESP + 0x20],EAX
JMP 0x000193a8
MOV dword ptr [ESI + 0x54],0x0
MOV EAX,0x2
XOR EDX,EDX
MOV dword ptr [ESI + 0x70],EAX
MOV dword ptr [ESI + 0x74],EDX
MOV EBX,dword ptr [ESP + 0x14]
MOV dword ptr [ESI + 0x8],0x0
TEST EBX,EBX
JZ 0x00019568
MOV EAX,dword ptr [ESP + 0x8]
MOV dword ptr [EAX + 0x8],ESI
CMP dword ptr [ESP],0x2710
JZ 0x000194c0
ADD dword ptr [ESP],0x1
MOV EAX,dword ptr [ESP]
CMP EAX,dword ptr [ESP + 0x28]
JNC 0x00019641
MOV dword ptr [ESP + 0x8],ESI
MOV EAX,dword ptr [ESP + 0xc]
MOV ESI,dword ptr [EAX + 0xc]
TEST ESI,ESI
JZ 0x00019641
MOV EDI,dword ptr [ESP + 0x4]
MOV EBX,EDI
CALL 0x00012350
SUB ESP,0xc
MOV dword ptr [ESP + 0x28],EAX
MOV dword ptr [EAX],0x0
PUSH ESI
CALL 0x00012440
ADD ESP,0x10
MOV EDI,EAX
TEST EAX,EAX
JZ 0x000195f8
TEST byte ptr [EBP + 0x2c],0x20
JNZ 0x000193f2
CMP byte ptr [EAX + 0x13],0x2e
JZ 0x00019578
SUB ESP,0xc
LEA ESI,[EDI + 0x13]
PUSH ESI
MOV EBX,dword ptr [ESP + 0x14]
CALL 0x000122f0
MOV EDX,ESI
ADD ESP,0x10
MOV ECX,EAX
MOV EBX,EAX
MOV EAX,EBP
CALL 0x000188d0
MOV ESI,EAX
TEST EAX,EAX
JZ 0x00019910
CMP dword ptr [ESP + 0x18],EBX
JBE 0x000194e0
ADD EBX,dword ptr [ESP + 0x10]
JC 0x00019c8f
MOV EAX,dword ptr [ESP + 0x20]
MOV EDX,dword ptr [EDI + 0x4]
MOV dword ptr [ESI + 0x30],EAX
MOV EAX,dword ptr [EBP]
MOV dword ptr [ESI + 0x28],EBX
MOV dword ptr [ESI + 0x4],EAX
MOV EAX,dword ptr [EDI]
MOV dword ptr [ESI + 0xa0],EDX
LEA EDX,[ESI + 0xa4]
MOV dword ptr [ESI + 0x9c],EAX
MOV EAX,dword ptr [EBP + 0x2c]
TEST AL,0x4
JNZ 0x00019538
MOV dword ptr [ESI + 0x18],EDX
MOV EDX,dword ptr [EBP + 0x28]
TEST EDX,EDX
JZ 0x00019475
TEST AH,0x4
JZ 0x000195d0
MOVZX EDX,byte ptr [EDI + 0x12]
AND EAX,0x18
MOV ECX,EDX
SUB EDX,0x1
CMP EAX,0x18
JZ 0x00019598
MOV ECX,0xb
MOV word ptr [ESI + 0x3c],CX
CMP EDX,0xb
JA 0x00019358
MOV EAX,dword ptr [ESP + 0x4]
MOV EAX,dword ptr [EAX + EDX*0x4 + 0xffffa180]
XOR EDX,EDX
MOV dword ptr [ESI + 0x54],EAX
MOV EAX,0x2
JMP 0x00019366
MOV ECX,dword ptr [EBP + 0x28]
TEST ECX,ECX
JZ 0x00019890
MOV dword ptr [ESP],0x2711
JMP 0x000193a4
MOV EAX,dword ptr [EBP + 0x14]
LEA EDX,[EBP + 0x20]
MOV dword ptr [ESP + 0x18],EAX
MOV EAX,dword ptr [ESP + 0x2c]
LEA ECX,[EAX + EBX*0x1 + 0x2]
LEA EAX,[EBP + 0x14]
CALL 0x00018cc0
TEST AL,AL
JZ 0x00019910
MOV EDX,dword ptr [EBP + 0x14]
CMP EDX,dword ptr [ESP + 0x18]
JZ 0x000195e8
ADD EDX,dword ptr [ESP + 0x10]
TEST byte ptr [EBP + 0x2c],0x4
CMOVZ EDX,dword ptr [ESP + 0x24]
MOV dword ptr [ESP + 0x24],EDX
MOV ECX,dword ptr [EBP + 0x20]
SUB ECX,dword ptr [ESP + 0x10]
MOV byte ptr [ESP + 0x3d],AL
MOV dword ptr [ESP + 0x18],ECX
JMP 0x00019426
MOV EAX,dword ptr [ESI + 0x1c]
SUB ESP,0x4
MOV dword ptr [ESI + 0x18],EAX
MOV EAX,dword ptr [ESI + 0x34]
ADD EAX,0x1
PUSH EAX
PUSH EDX
PUSH dword ptr [ESP + 0x30]
MOV EBX,dword ptr [ESP + 0x14]
CALL 0x000120c0
MOV EAX,dword ptr [EBP + 0x2c]
ADD ESP,0x10
JMP 0x00019465
MOV dword ptr [ESP + 0x14],ESI
JMP 0x00019386
CMP byte ptr [EAX + 0x14],0x0
JZ 0x00019589
CMP word ptr [EAX + 0x14],0x2e
JNZ 0x000193f2
MOV ESI,dword ptr [ESP + 0x8]
JMP 0x000193a4
AND ECX,0xfb
JZ 0x0001948a
MOV EBX,0xb
MOV word ptr [ESI + 0x3c],BX
CMP EDX,0xb
JBE 0x000198f0
MOV dword ptr [ESI + 0x54],0x0
MOV EAX,0x1
XOR EDX,EDX
JMP 0x00019366
XOR ECX,ECX
MOV EDX,ESI
MOV EAX,EBP
CALL 0x00018640
MOV word ptr [ESI + 0x3c],AX
JMP 0x0001936c
MOVZX EAX,byte ptr [ESP + 0x3d]
JMP 0x00019520
MOV EAX,dword ptr [ESP + 0x1c]
MOV EAX,dword ptr [EAX]
TEST EAX,EAX
JZ 0x0001961f
MOV EDI,dword ptr [ESP + 0xc]
MOV dword ptr [EDI + 0x20],EAX
MOV EAX,dword ptr [ESP + 0x38]
OR EAX,dword ptr [ESP]
CMP EAX,0x1
SBB EAX,EAX
AND EAX,0xfffffffd
ADD EAX,0x7
MOV word ptr [EDI + 0x3c],AX
MOV EDI,dword ptr [ESP + 0xc]
MOV EAX,dword ptr [EDI + 0xc]
TEST EAX,EAX
JZ 0x00019641
SUB ESP,0xc
PUSH EAX
MOV EBX,dword ptr [ESP + 0x14]
CALL 0x00012520
MOV dword ptr [EDI + 0xc],0x0
ADD ESP,0x10
CMP byte ptr [ESP + 0x3d],0x0
JNZ 0x000199c8
TEST byte ptr [EBP + 0x2c],0x4
JZ 0x0001966e
MOV EAX,dword ptr [ESP + 0x10]
CMP dword ptr [EBP + 0x20],EAX
JZ 0x00019662
MOV EDI,dword ptr [ESP]
TEST EDI,EDI
JNZ 0x00019667
SUB dword ptr [ESP + 0x24],0x1
MOV EAX,dword ptr [ESP + 0x24]
MOV byte ptr [EAX],0x0
MOV ESI,dword ptr [ESP + 0x38]
TEST ESI,ESI
JNZ 0x000196ae
CMP byte ptr [ESP + 0x3f],0x0
JZ 0x000196ae
CMP dword ptr [ESP + 0x34],0x1
JZ 0x0001968b
MOV EBX,dword ptr [ESP]
TEST EBX,EBX
JNZ 0x000196b9
MOV EAX,dword ptr [ESP + 0xc]
MOV ECX,dword ptr [EAX + 0x30]
TEST ECX,ECX
JNZ 0x00019b95
MOV EAX,EBP
CALL 0x00018c40
TEST EAX,EAX
SETNZ AL
TEST AL,AL
JNZ 0x00019c3b
MOV EAX,dword ptr [ESP]
TEST EAX,EAX
JZ 0x000198c5
CMP byte ptr [ESP + 0x3e],0x0
JNZ 0x00019a40
MOV ESI,dword ptr [EBP + 0x28]
TEST ESI,ESI
JZ 0x000198e1
MOV EAX,dword ptr [ESP]
CMP EAX,0x1
JZ 0x000198e1
MOV EDX,dword ptr [ESP + 0x14]
ADD ESP,0x4c
MOV ECX,EAX
MOV EAX,EBP
POP EBX
POP ESI
POP EDI
POP EBP
JMP 0x000187e0
MOV EDX,dword ptr [EBP + 0x2c]
MOV ECX,EDX
AND ECX,0x10
JZ 0x00019708
MOV ECX,0x20000
TEST DL,0x1
JNZ 0x00019978
MOV EAX,EDX
MOV EDI,dword ptr [ESP + 0xc]
AND EDX,0x204
SHL EAX,0x7
AND EAX,0x40000
MOV EBX,dword ptr [EDI + 0x18]
OR EAX,ECX
MOV ECX,0xffffff9c
CMP EDX,0x200
JNZ 0x00019731
MOV ECX,dword ptr [EBP + 0x1c]
SUB ESP,0x4
OR EAX,0x90900
PUSH EAX
PUSH EBX
PUSH ECX
MOV EBX,dword ptr [ESP + 0x14]
CALL 0x0001c620
MOV dword ptr [ESP + 0x40],EAX
ADD ESP,0x10
TEST EAX,EAX
JS 0x00019af0
SUB ESP,0xc
PUSH dword ptr [ESP + 0x3c]
MOV EBX,dword ptr [ESP + 0x14]
CALL 0x000123e0
ADD ESP,0x10
TEST EAX,EAX
JZ 0x00019bc3
MOV EDI,dword ptr [ESP + 0xc]
CMP word ptr [EDI + 0x3c],0xb
MOV dword ptr [EDI + 0xc],EAX
JZ 0x00019b13
MOV EAX,dword ptr [EBP + 0x2c]
TEST AH,0x1
JNZ 0x00019aa0
CMP dword ptr [EBP + 0x28],0x1
SBB EAX,EAX
AND EAX,0x186a1
SUB EAX,0x1
CMP dword ptr [ESP + 0x34],0x2
MOV dword ptr [ESP + 0x28],EAX
JZ 0x00019a90
MOV EAX,dword ptr [EBP + 0x2c]
AND EAX,0x38
CMP EAX,0x18
JZ 0x0001998e
CMP dword ptr [ESP + 0x34],0x3
MOV ESI,0x1
SETZ AL
MOV EDI,EAX
TEST byte ptr [EBP + 0x2d],0x2
JNZ 0x00019b2b
SUB ESP,0xc
MOV EAX,EBP
PUSH 0x0
MOV EBX,dword ptr [ESP + 0x1c]
MOV ECX,dword ptr [ESP + 0x40]
MOV EDX,EBX
CALL 0x00018e20
ADD ESP,0x10
TEST EAX,EAX
JZ 0x000192cc
MOVZX EAX,word ptr [EBX + 0x3e]
MOV EDX,dword ptr [EBX + 0xc]
MOV ECX,EAX
MOV word ptr [ESP],AX
MOV EAX,EDI
OR ECX,0x1
TEST AL,AL
JZ 0x0001982f
MOV EAX,ESI
TEST AL,AL
JZ 0x0001982f
MOV EBX,dword ptr [ESP + 0x4]
MOV dword ptr [ESP + 0x8],EDX
MOV dword ptr [ESP],ECX
CALL 0x00012350
MOV EBX,dword ptr [ESP + 0xc]
MOV EDX,dword ptr [ESP + 0x8]
MOV EAX,dword ptr [EAX]
MOV ECX,dword ptr [ESP]
MOV dword ptr [EBX + 0x20],EAX
MOV EDI,dword ptr [ESP + 0xc]
SUB ESP,0xc
MOV word ptr [EDI + 0x3e],CX
PUSH EDX
MOV ESI,dword ptr [ESP + 0x14]
MOV EBX,ESI
CALL 0x00012520
MOV EAX,dword ptr [EBP + 0x2c]
MOV dword ptr [EDI + 0xc],0x0
ADD ESP,0x10
TEST AH,0x2
JZ 0x00019871
MOV EBX,dword ptr [ESP + 0x30]
TEST EBX,EBX
JS 0x00019871
SUB ESP,0xc
PUSH EBX
MOV EBX,ESI
CALL 0x00012510
MOV EAX,dword ptr [EBP + 0x2c]
ADD ESP,0x10
MOV EBX,dword ptr [ESP + 0xc]
MOV byte ptr [ESP + 0x3f],0x0
MOV dword ptr [EBX + 0xc],0x0
JMP 0x000192d4
MOV EDX,dword ptr [ESP + 0x30]
MOV EAX,dword ptr [ESP + 0xc]
CALL 0x00018a00
CMP EAX,0x6969
JZ 0x000198bb
CMP EAX,0x1021994
JZ 0x000198bb
MOV byte ptr [ESP + 0x3e],0x1
CMP EAX,0xff534d42
JNZ 0x000194cb
MOV byte ptr [ESP + 0x3e],0x0
JMP 0x00019393
CMP dword ptr [ESP + 0x34],0x3
JZ 0x00019c65
MOV EAX,dword ptr [ESP + 0x14]
CALL 0x00018960
MOV dword ptr [ESP + 0x14],0x0
MOV EAX,dword ptr [ESP + 0x14]
ADD ESP,0x4c
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOV EAX,dword ptr [ESP + 0x4]
MOV EAX,dword ptr [EAX + EDX*0x4 + 0xffffa180]
XOR EDX,EDX
MOV dword ptr [ESI + 0x54],EAX
MOV EAX,0x1
JMP 0x00019366
MOV EAX,dword ptr [ESP + 0x1c]
SUB ESP,0xc
MOV EDI,dword ptr [EAX]
PUSH ESI
MOV EBX,dword ptr [ESP + 0x14]
CALL 0x00012590
MOV EAX,dword ptr [ESP + 0x24]
CALL 0x00018960
POP ESI
MOV ESI,dword ptr [ESP + 0x18]
PUSH dword ptr [ESI + 0xc]
MOV EBX,dword ptr [ESP + 0x14]
CALL 0x00012520
MOV EAX,dword ptr [ESP + 0x2c]
ADD ESP,0x10
MOV EDX,0x7
MOV dword ptr [ESI + 0xc],0x0
MOV word ptr [ESI + 0x3c],DX
MOV dword ptr [ESP + 0x14],0x0
OR dword ptr [EBP + 0x2c],0x4000
MOV dword ptr [EAX],EDI
MOV EAX,dword ptr [ESP + 0x14]
ADD ESP,0x4c
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOV EAX,dword ptr [ESP + 0xc]
MOV ECX,dword ptr [EAX + 0x30]
MOV EAX,0x20000
TEST ECX,ECX
CMOVNZ ECX,EAX
JMP 0x00019708
MOV EAX,dword ptr [ESP + 0xc]
CMP dword ptr [EAX + 0x58],0x2
JNZ 0x000197b9
MOV EDX,dword ptr [ESP + 0x30]
CALL 0x00018b60
TEST EAX,EAX
JZ 0x000197b9
CMP dword ptr [ESP + 0x34],0x3
JNZ 0x00019a90
XOR ESI,ESI
MOV EDI,0x1
JMP 0x000197c8
MOV EAX,dword ptr [EBP + 0x4]
MOV ECX,dword ptr [EBP + 0x14]
TEST EAX,EAX
JZ 0x000199f7
LEA ESI,[ESI]
MOV EDX,dword ptr [EAX + 0x18]
LEA EBX,[EAX + 0xa4]
CMP EDX,EBX
JZ 0x000199ed
SUB EDX,dword ptr [EAX + 0x1c]
ADD EDX,ECX
MOV dword ptr [EAX + 0x18],EDX
MOV dword ptr [EAX + 0x1c],ECX
MOV EAX,dword ptr [EAX + 0x8]
TEST EAX,EAX
JNZ 0x000199d8
MOV EAX,dword ptr [ESP + 0x14]
LEA ESI,[ESI]
NOP
MOV EDX,dword ptr [EAX + 0x30]
TEST EDX,EDX
JS 0x0001964c
MOV EDX,dword ptr [EAX + 0x18]
LEA EBX,[EAX + 0xa4]
CMP EDX,EBX
JZ 0x00019a20
SUB EDX,dword ptr [EAX + 0x1c]
ADD EDX,ECX
MOV dword ptr [EAX + 0x18],EDX
MOV EDX,dword ptr [EAX + 0x8]
MOV dword ptr [EAX + 0x1c],ECX
TEST EDX,EDX
JZ 0x00019a30
MOV EAX,EDX
JMP 0x00019a00
MOV EDX,dword ptr [EAX + 0x4]
MOV EAX,EDX
JMP 0x00019a00
MOV EAX,dword ptr [ESP + 0x4]
MOV ECX,dword ptr [ESP]
MOV EDX,dword ptr [ESP + 0x14]
LEA EAX,[EAX + 0xffff4600]
MOV dword ptr [EBP + 0x28],EAX
MOV EAX,EBP
CALL 0x000187e0
MOV dword ptr [EBP + 0x28],0x0
MOV dword ptr [ESP + 0x14],EAX
MOV EAX,dword ptr [ESP + 0x14]
ADD ESP,0x4c
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOV dword ptr [ESP + 0x28],0x186a0
MOV EAX,dword ptr [EBP + 0x2c]
MOV byte ptr [ESP + 0x3f],0x1
JMP 0x000192d4
MOV byte ptr [ESP + 0x3f],0x0
MOV EAX,dword ptr [EBP + 0x2c]
JMP 0x000192d4
MOV EDI,dword ptr [ESP + 0xc]
LEA EBX,[EBP + 0x34]
MOV EDX,EBX
MOV ECX,EDI
CALL 0x00019160
XOR ECX,ECX
MOV EDX,EDI
MOV EAX,EBP
CALL 0x00018640
MOV EAX,dword ptr [EBP + 0x2c]
MOV ECX,EDI
MOV EDX,EBX
CALL 0x00019090
TEST AL,AL
JNZ 0x0001978d
MOV EBX,dword ptr [ESP + 0x4]
CALL 0x00012350
MOV dword ptr [ESP + 0x14],0x0
MOV dword ptr [EAX],0xc
JMP 0x000198e1
MOV EAX,dword ptr [ESP + 0xc]
MOV dword ptr [EAX + 0xc],0x0
CMP dword ptr [ESP + 0x34],0x3
JZ 0x00019c1b
MOV dword ptr [ESP + 0x14],0x0
JMP 0x000198e1
MOV EDI,dword ptr [ESP + 0xc]
XOR ECX,ECX
MOV EAX,EBP
MOV EDX,EDI
CALL 0x00018640
MOV word ptr [EDI + 0x3c],AX
JMP 0x0001978d
SUB ESP,0x4
PUSH 0x3
PUSH 0x406
PUSH dword ptr [ESP + 0x3c]
MOV EBX,dword ptr [ESP + 0x14]
CALL 0x0001c780
MOV dword ptr [ESP + 0x40],EAX
ADD ESP,0x10
TEST EAX,EAX
JNS 0x000197d2
MOV EAX,dword ptr [ESP + 0xc]
MOV EDX,dword ptr [EAX + 0xc]
MOVZX EAX,word ptr [EAX + 0x3e]
MOV ECX,EAX
MOV word ptr [ESP],AX
MOV EAX,EDI
OR ECX,0x1
TEST AL,AL
JZ 0x00019b75
MOV EAX,ESI
TEST AL,AL
JNZ 0x0001980f
MOV EAX,dword ptr [ESP + 0xc]
SUB ESP,0xc
MOV word ptr [EAX + 0x3e],CX
PUSH EDX
MOV EBX,dword ptr [ESP + 0x14]
CALL 0x00012520
ADD ESP,0x10
MOV EAX,dword ptr [EBP + 0x2c]
JMP 0x00019871
MOV EAX,dword ptr [ESP + 0xc]
SUB ESP,0xc
MOV ECX,0xffffffff
MOV EDX,dword ptr [EAX + 0x4]
MOV EAX,dword ptr [ESP + 0x10]
LEA EAX,[EAX + 0xffffa166]
PUSH EAX
MOV EAX,EBP
CALL 0x00018e20
ADD ESP,0x10
TEST EAX,EAX
SETNZ AL
JMP 0x000196a6
MOV EBP,dword ptr [ESP + 0x4]
MOV EBX,EBP
CALL 0x00012350
SUB ESP,0xc
MOV EDI,dword ptr [EAX]
PUSH dword ptr [ESP + 0x3c]
MOV ESI,EAX
CALL 0x00012510
MOV EAX,dword ptr [ESP + 0x1c]
MOV dword ptr [ESI],EDI
ADD ESP,0x10
MOV dword ptr [EAX + 0xc],0x0
JMP 0x00019afb
SUB ESP,0xc
MOV EDI,dword ptr [ESP + 0x18]
PUSH dword ptr [EDI + 0xc]
MOV EBX,dword ptr [ESP + 0x14]
CALL 0x00012520
ADD ESP,0x10
MOV dword ptr [EDI + 0xc],0x0
CMP dword ptr [ESP + 0x34],0x3
JNZ 0x00019b06
MOV EDI,dword ptr [ESP + 0xc]
MOV ECX,0x4
MOV EBX,dword ptr [ESP + 0x4]
MOV word ptr [EDI + 0x3c],CX
CALL 0x00012350
MOV EAX,dword ptr [EAX]
MOV dword ptr [EDI + 0x20],EAX
JMP 0x00019b06
MOV EAX,dword ptr [ESP + 0xc]
MOV EDX,0x7
MOV word ptr [EAX + 0x3c],DX
MOV EAX,dword ptr [ESP + 0x14]
OR dword ptr [EBP + 0x2c],0x4000
CALL 0x00018960
MOV dword ptr [ESP + 0x14],0x0
JMP 0x000198e1
MOV EBX,dword ptr [ESP + 0xc]
MOVZX EAX,word ptr [EBX + 0x3c]
CMP AX,0x4
JZ 0x000198d0
CMP AX,0x7
JZ 0x000198d0
MOV EDI,0x6
MOV word ptr [EBX + 0x3c],DI
JMP 0x000198d0
SUB ESP,0xc
PUSH ESI
MOV ESI,dword ptr [ESP + 0x14]
MOV EBX,ESI
CALL 0x00012590
MOV EAX,dword ptr [ESP + 0x24]
CALL 0x00018960
POP ECX
MOV EDI,dword ptr [ESP + 0x18]
PUSH dword ptr [EDI + 0xc]
CALL 0x00012520
MOV EAX,dword ptr [ESP + 0x2c]
ADD ESP,0x10
MOV EBX,0x7
MOV dword ptr [EDI + 0xc],0x0
MOV word ptr [EDI + 0x3c],BX
MOV dword ptr [ESP + 0x14],0x0
OR dword ptr [EBP + 0x2c],0x4000
MOV dword ptr [EAX],0x24
JMP 0x000198e1
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nvoid * __regparm3 FUN_00019270(int *param_1,int param_2)\n\n{\n  int iVar1;\n  DIR *__dirp;\n  bool bVar2;\n  __ino64_t _Var3;\n  undefined1 *puVar4;\n  char cVar5;\n  undefined2 uVar6;\n  int iVar7;\n  int *piVar8;\n  dirent64 *pdVar9;\n  size_t sVar10;\n  void *pvVar11;\n  undefined4 uVar12;\n  DIR *pDVar13;\n  uint uVar14;\n  int iVar15;\n  void *pvVar16;\n  ushort uVar17;\n  uint uVar18;\n  bool bVar19;\n  uint local_5c;\n  void *local_54;\n  uint local_4c;\n  void *local_48;\n  uint local_44;\n  undefined1 *local_38;\n  uint local_34;\n  uint local_30;\n  int local_2c;\n  char local_1f;\n  \n  iVar1 = *param_1;\n  __dirp = *(DIR **)(iVar1 + 0xc);\n  if (__dirp == (DIR *)0x0) {\n    uVar14 = param_1[0xb];\n    uVar18 = uVar14 & 0x10;\n    if (((uVar18 != 0) && (uVar18 = 0x20000, (uVar14 & 1) != 0)) &&\n       (uVar18 = *(uint *)(iVar1 + 0x30), uVar18 != 0)) {\n      uVar18 = 0x20000;\n    }\n    iVar7 = -100;\n    if ((uVar14 & 0x204) == 0x200) {\n      iVar7 = param_1[7];\n    }\n    local_2c = FUN_0001c620(iVar7,*(undefined4 *)(iVar1 + 0x18),\n                            (uVar14 & 0x800) << 7 | uVar18 | 0x90900);\n    if (local_2c < 0) {\n      *(undefined4 *)(iVar1 + 0xc) = 0;\njoined_r0x00019b00:\n      if (param_2 == 3) {\n        *(undefined2 *)(iVar1 + 0x3c) = 4;\n        piVar8 = __errno_location();\n        *(int *)(iVar1 + 0x20) = *piVar8;\n      }\n      return (void *)0x0;\n    }\n    pDVar13 = fdopendir(local_2c);\n    if (pDVar13 == (DIR *)0x0) {\n      piVar8 = __errno_location();\n      iVar7 = *piVar8;\n      close(local_2c);\n      *piVar8 = iVar7;\n      *(undefined4 *)(iVar1 + 0xc) = 0;\n      goto joined_r0x00019b00;\n    }\n    *(DIR **)(iVar1 + 0xc) = pDVar13;\n    if (*(short *)(iVar1 + 0x3c) == 0xb) {\n      uVar6 = FUN_00018640();\n      *(undefined2 *)(iVar1 + 0x3c) = uVar6;\n    }\n    else if ((param_1[0xb] & 0x100U) != 0) {\n      FUN_00019160();\n      FUN_00018640();\n      cVar5 = FUN_00019090();\n      if (cVar5 == '\0') {\n        piVar8 = __errno_location();\n        *piVar8 = 0xc;\n        return (void *)0x0;\n      }\n    }\n    local_34 = (-(uint)(param_1[10] == 0) & 0x186a1) - 1;\n    if (param_2 == 2) {\nLAB_00019a90:\n      bVar19 = false;\n      uVar14 = param_1[0xb];\n      goto LAB_000192d4;\n    }\n    if ((((param_1[0xb] & 0x38U) == 0x18) && (*(int *)(iVar1 + 0x58) == 2)) &&\n       (iVar7 = FUN_00018b60(), iVar7 != 0)) {\n      if (param_2 != 3) goto LAB_00019a90;\n      bVar2 = false;\n      bVar19 = true;\n    }\n    else {\n      bVar19 = param_2 == 3;\n      bVar2 = true;\n    }\n    if (((*(byte *)((int)param_1 + 0x2d) & 2) == 0) ||\n       (local_2c = FUN_0001c780(local_2c,0x406,3), -1 < local_2c)) {\n      iVar7 = FUN_00018e20(0);\n      if (iVar7 == 0) goto LAB_000192cc;\n      pDVar13 = *(DIR **)(iVar1 + 0xc);\n      uVar17 = *(ushort *)(iVar1 + 0x3e) | 1;\n      if ((bVar19) && (bVar2)) goto LAB_0001980f;\nLAB_0001982f:\n      *(ushort *)(iVar1 + 0x3e) = uVar17;\n      closedir(pDVar13);\n      uVar14 = param_1[0xb];\n      *(undefined4 *)(iVar1 + 0xc) = 0;\n      if (((uVar14 & 0x200) != 0) && (-1 < local_2c)) {\n        close(local_2c);\n        uVar14 = param_1[0xb];\n      }\n    }\n    else {\n      pDVar13 = *(DIR **)(iVar1 + 0xc);\n      uVar17 = *(ushort *)(iVar1 + 0x3e) | 1;\n      if ((bVar19) && (bVar2)) {\nLAB_0001980f:\n        piVar8 = __errno_location();\n        *(int *)(iVar1 + 0x20) = *piVar8;\n        goto LAB_0001982f;\n      }\n      *(ushort *)(iVar1 + 0x3e) = uVar17;\n      closedir(pDVar13);\n      uVar14 = param_1[0xb];\n    }\n    bVar19 = false;\n    *(undefined4 *)(iVar1 + 0xc) = 0;\n  }\n  else {\n    iVar7 = dirfd(__dirp);\n    if (iVar7 < 0) {\n      closedir(*(DIR **)(iVar1 + 0xc));\n      *(undefined4 *)(iVar1 + 0xc) = 0;\n      goto joined_r0x00019b00;\n    }\n    if (param_1[10] == 0) {\n      local_34 = 100000;\n      uVar14 = param_1[0xb];\n      bVar19 = true;\n    }\n    else {\n      local_34 = 0xffffffff;\nLAB_000192cc:\n      bVar19 = true;\n      uVar14 = param_1[0xb];\n    }\n  }\nLAB_000192d4:\n  uVar18 = *(uint *)(iVar1 + 0x28);\n  local_4c = uVar18;\n  local_30 = uVar18 - 1;\n  if (*(char *)(*(int *)(iVar1 + 0x1c) + -1 + uVar18) != '/') {\n    local_4c = uVar18 + 1;\n    local_30 = uVar18;\n  }\n  local_38 = (undefined1 *)0x0;\n  if ((uVar14 & 4) != 0) {\n    local_38 = (undefined1 *)(local_30 + param_1[5]) + 1;\n    *(undefined1 *)(local_30 + param_1[5]) = 0x2f;\n  }\n  local_44 = param_1[8] - local_4c;\n  bVar2 = false;\n  local_1f = '\0';\n  iVar7 = *(int *)(iVar1 + 0x30);\n  local_54 = (void *)0x0;\n  local_5c = 0;\n  local_48 = (void *)0x0;\nLAB_000193a8:\n  do {\n    do {\n      pDVar13 = *(DIR **)(iVar1 + 0xc);\n      if (pDVar13 == (DIR *)0x0) goto LAB_00019641;\n      piVar8 = __errno_location();\n      *piVar8 = 0;\n      pdVar9 = readdir64(pDVar13);\n      if (pdVar9 == (dirent64 *)0x0) {\n        if (*piVar8 != 0) {\n          *(int *)(iVar1 + 0x20) = *piVar8;\n          *(ushort *)(iVar1 + 0x3c) =\n               (-(ushort)(__dirp == (DIR *)0x0 && local_5c == 0) & 0xfffd) + 7;\n        }\n        if (*(DIR **)(iVar1 + 0xc) != (DIR *)0x0) {\n          closedir(*(DIR **)(iVar1 + 0xc));\n          *(undefined4 *)(iVar1 + 0xc) = 0;\n        }\n        goto LAB_00019641;\n      }\n    } while ((((*(byte *)(param_1 + 0xb) & 0x20) == 0) && (pdVar9->d_name[0] == '.')) &&\n            ((pdVar9->d_name[1] == '\0' || (*(short *)(pdVar9->d_name + 1) == 0x2e))));\n    sVar10 = strlen(pdVar9->d_name);\n    pvVar11 = (void *)FUN_000188d0();\n    if (pvVar11 == (void *)0x0) {\nLAB_00019910:\n      iVar7 = *piVar8;\n      free(pvVar11);\n      FUN_00018960();\n      closedir(*(DIR **)(iVar1 + 0xc));\n      *(undefined4 *)(iVar1 + 0xc) = 0;\n      *(undefined2 *)(iVar1 + 0x3c) = 7;\n      param_1[0xb] = param_1[0xb] | 0x4000;\n      *piVar8 = iVar7;\n      return (void *)0x0;\n    }\n    if (local_44 <= sVar10) {\n      iVar15 = param_1[5];\n      cVar5 = FUN_00018cc0();\n      if (cVar5 == '\0') goto LAB_00019910;\n      puVar4 = local_38;\n      if ((param_1[5] != iVar15) &&\n         (local_1f = cVar5, puVar4 = (undefined1 *)(param_1[5] + local_4c),\n         (*(byte *)(param_1 + 0xb) & 4) == 0)) {\n        puVar4 = local_38;\n      }\n      local_38 = puVar4;\n      local_44 = param_1[8] - local_4c;\n    }\n    if (CARRY4(sVar10,local_4c)) {\n      free(pvVar11);\n      FUN_00018960();\n      closedir(*(DIR **)(iVar1 + 0xc));\n      *(undefined4 *)(iVar1 + 0xc) = 0;\n      *(undefined2 *)(iVar1 + 0x3c) = 7;\n      param_1[0xb] = param_1[0xb] | 0x4000;\n      *piVar8 = 0x24;\n      return (void *)0x0;\n    }\n    uVar12 = *(undefined4 *)((int)&pdVar9->d_ino + 4);\n    *(int *)((int)pvVar11 + 0x30) = iVar7 + 1;\n    iVar15 = *param_1;\n    *(size_t *)((int)pvVar11 + 0x28) = sVar10 + local_4c;\n    *(int *)((int)pvVar11 + 4) = iVar15;\n    _Var3 = pdVar9->d_ino;\n    *(undefined4 *)((int)pvVar11 + 0xa0) = uVar12;\n    *(int *)((int)pvVar11 + 0x9c) = (int)_Var3;\n    uVar14 = param_1[0xb];\n    if ((uVar14 & 4) == 0) {\n      *(void **)((int)pvVar11 + 0x18) = (void *)((int)pvVar11 + 0xa4);\n    }\n    else {\n      *(undefined4 *)((int)pvVar11 + 0x18) = *(undefined4 *)((int)pvVar11 + 0x1c);\n      memmove(local_38,(void *)((int)pvVar11 + 0xa4),*(int *)((int)pvVar11 + 0x34) + 1);\n      uVar14 = param_1[0xb];\n    }\n    if ((param_1[10] == 0) || ((uVar14 & 0x400) != 0)) {\n      uVar18 = pdVar9->d_type - 1;\n      if (((uVar14 & 0x18) == 0x18) && ((pdVar9->d_type & 0xfb) != 0)) {\n        *(undefined2 *)((int)pvVar11 + 0x3c) = 0xb;\n        if (uVar18 < 0xc) {\n          *(undefined4 *)((int)pvVar11 + 0x54) = *(undefined4 *)(&DAT_0001e180 + uVar18 * 4);\n          uVar12 = 1;\n        }\n        else {\n          *(undefined4 *)((int)pvVar11 + 0x54) = 0;\n          uVar12 = 1;\n        }\n      }\n      else {\n        *(undefined2 *)((int)pvVar11 + 0x3c) = 0xb;\n        if (uVar18 < 0xc) {\n          *(undefined4 *)((int)pvVar11 + 0x54) = *(undefined4 *)(&DAT_0001e180 + uVar18 * 4);\n          uVar12 = 2;\n        }\n        else {\n          *(undefined4 *)((int)pvVar11 + 0x54) = 0;\n          uVar12 = 2;\n        }\n      }\n      *(undefined4 *)((int)pvVar11 + 0x70) = uVar12;\n      *(undefined4 *)((int)pvVar11 + 0x74) = 0;\n    }\n    else {\n      uVar6 = FUN_00018640();\n      *(undefined2 *)((int)pvVar11 + 0x3c) = uVar6;\n    }\n    *(undefined4 *)((int)pvVar11 + 8) = 0;\n    pvVar16 = pvVar11;\n    if (local_48 != (void *)0x0) {\n      *(void **)((int)local_54 + 8) = pvVar11;\n      pvVar16 = local_48;\n    }\n    local_48 = pvVar16;\n    local_54 = pvVar11;\n    if (local_5c == 10000) {\n      if ((param_1[10] != 0) ||\n         (((iVar15 = FUN_00018a00(), iVar15 != 0x6969 && (iVar15 != 0x1021994)) &&\n          (bVar2 = true, iVar15 != -0xacb2be)))) {\n        local_5c = 0x2711;\n        goto LAB_000193a8;\n      }\n      bVar2 = false;\n    }\n    local_5c = local_5c + 1;\n  } while (local_5c < local_34);\nLAB_00019641:\n  if (local_1f != '\0') {\n    iVar15 = param_1[5];\n    for (iVar7 = param_1[1]; pvVar11 = local_48, iVar7 != 0; iVar7 = *(int *)(iVar7 + 8)) {\n      if (*(int *)(iVar7 + 0x18) != iVar7 + 0xa4) {\n        *(int *)(iVar7 + 0x18) = (*(int *)(iVar7 + 0x18) - *(int *)(iVar7 + 0x1c)) + iVar15;\n      }\n      *(int *)(iVar7 + 0x1c) = iVar15;\n    }\n    while (pvVar16 = pvVar11, -1 < *(int *)((int)pvVar16 + 0x30)) {\n      if (*(int *)((int)pvVar16 + 0x18) != (int)pvVar16 + 0xa4) {\n        *(int *)((int)pvVar16 + 0x18) =\n             (*(int *)((int)pvVar16 + 0x18) - *(int *)((int)pvVar16 + 0x1c)) + iVar15;\n      }\n      *(int *)((int)pvVar16 + 0x1c) = iVar15;\n      pvVar11 = *(void **)((int)pvVar16 + 8);\n      if (*(void **)((int)pvVar16 + 8) == (void *)0x0) {\n        pvVar11 = *(void **)((int)pvVar16 + 4);\n      }\n    }\n  }\n  if ((*(byte *)(param_1 + 0xb) & 4) != 0) {\n    if ((param_1[8] == local_4c) || (local_5c == 0)) {\n      local_38 = local_38 + -1;\n    }\n    *local_38 = 0;\n  }\n  if ((__dirp == (DIR *)0x0) && (bVar19)) {\n    if ((param_2 != 1) && (local_5c != 0)) goto LAB_000196b9;\n    if (*(int *)(iVar1 + 0x30) == 0) {\n      iVar7 = FUN_00018c40();\n    }\n    else {\n      iVar7 = FUN_00018e20(&DAT_0001e166);\n    }\n    if (iVar7 != 0) {\n      *(undefined2 *)(iVar1 + 0x3c) = 7;\n      param_1[0xb] = param_1[0xb] | 0x4000;\n      FUN_00018960();\n      return (void *)0x0;\n    }\n  }\n  if (local_5c == 0) {\n    if (((param_2 == 3) && (*(short *)(iVar1 + 0x3c) != 4)) && (*(short *)(iVar1 + 0x3c) != 7)) {\n      *(undefined2 *)(iVar1 + 0x3c) = 6;\n    }\n    FUN_00018960();\n    return (void *)0x0;\n  }\nLAB_000196b9:\n  if (bVar2) {\n    param_1[10] = (int)FUN_00018600;\n    pvVar11 = (void *)FUN_000187e0();\n    param_1[10] = 0;\n    return pvVar11;\n  }\n  if ((param_1[10] != 0) && (local_5c != 1)) {\n    pvVar11 = (void *)FUN_000187e0();\n    return pvVar11;\n  }\n  return local_48;\n}\n\n" comment (function_definition "void * __regparm3 FUN_00019270(int *param_1,int param_2)\n\n{\n  int iVar1;\n  DIR *__dirp;\n  bool bVar2;\n  __ino64_t _Var3;\n  undefined1 *puVar4;\n  char cVar5;\n  undefined2 uVar6;\n  int iVar7;\n  int *piVar8;\n  dirent64 *pdVar9;\n  size_t sVar10;\n  void *pvVar11;\n  undefined4 uVar12;\n  DIR *pDVar13;\n  uint uVar14;\n  int iVar15;\n  void *pvVar16;\n  ushort uVar17;\n  uint uVar18;\n  bool bVar19;\n  uint local_5c;\n  void *local_54;\n  uint local_4c;\n  void *local_48;\n  uint local_44;\n  undefined1 *local_38;\n  uint local_34;\n  uint local_30;\n  int local_2c;\n  char local_1f;\n  \n  iVar1 = *param_1;\n  __dirp = *(DIR **)(iVar1 + 0xc);\n  if (__dirp == (DIR *)0x0) {\n    uVar14 = param_1[0xb];\n    uVar18 = uVar14 & 0x10;\n    if (((uVar18 != 0) && (uVar18 = 0x20000, (uVar14 & 1) != 0)) &&\n       (uVar18 = *(uint *)(iVar1 + 0x30), uVar18 != 0)) {\n      uVar18 = 0x20000;\n    }\n    iVar7 = -100;\n    if ((uVar14 & 0x204) == 0x200) {\n      iVar7 = param_1[7];\n    }\n    local_2c = FUN_0001c620(iVar7,*(undefined4 *)(iVar1 + 0x18),\n                            (uVar14 & 0x800) << 7 | uVar18 | 0x90900);\n    if (local_2c < 0) {\n      *(undefined4 *)(iVar1 + 0xc) = 0;\njoined_r0x00019b00:\n      if (param_2 == 3) {\n        *(undefined2 *)(iVar1 + 0x3c) = 4;\n        piVar8 = __errno_location();\n        *(int *)(iVar1 + 0x20) = *piVar8;\n      }\n      return (void *)0x0;\n    }\n    pDVar13 = fdopendir(local_2c);\n    if (pDVar13 == (DIR *)0x0) {\n      piVar8 = __errno_location();\n      iVar7 = *piVar8;\n      close(local_2c);\n      *piVar8 = iVar7;\n      *(undefined4 *)(iVar1 + 0xc) = 0;\n      goto joined_r0x00019b00;\n    }\n    *(DIR **)(iVar1 + 0xc) = pDVar13;\n    if (*(short *)(iVar1 + 0x3c) == 0xb) {\n      uVar6 = FUN_00018640();\n      *(undefined2 *)(iVar1 + 0x3c) = uVar6;\n    }\n    else if ((param_1[0xb] & 0x100U) != 0) {\n      FUN_00019160();\n      FUN_00018640();\n      cVar5 = FUN_00019090();\n      if (cVar5 == '\0') {\n        piVar8 = __errno_location();\n        *piVar8 = 0xc;\n        return (void *)0x0;\n      }\n    }\n    local_34 = (-(uint)(param_1[10] == 0) & 0x186a1) - 1;\n    if (param_2 == 2) {\nLAB_00019a90:\n      bVar19 = false;\n      uVar14 = param_1[0xb];\n      goto LAB_000192d4;\n    }\n    if ((((param_1[0xb] & 0x38U) == 0x18) && (*(int *)(iVar1 + 0x58) == 2)) &&\n       (iVar7 = FUN_00018b60(), iVar7 != 0)) {\n      if (param_2 != 3) goto LAB_00019a90;\n      bVar2 = false;\n      bVar19 = true;\n    }\n    else {\n      bVar19 = param_2 == 3;\n      bVar2 = true;\n    }\n    if (((*(byte *)((int)param_1 + 0x2d) & 2) == 0) ||\n       (local_2c = FUN_0001c780(local_2c,0x406,3), -1 < local_2c)) {\n      iVar7 = FUN_00018e20(0);\n      if (iVar7 == 0) goto LAB_000192cc;\n      pDVar13 = *(DIR **)(iVar1 + 0xc);\n      uVar17 = *(ushort *)(iVar1 + 0x3e) | 1;\n      if ((bVar19) && (bVar2)) goto LAB_0001980f;\nLAB_0001982f:\n      *(ushort *)(iVar1 + 0x3e) = uVar17;\n      closedir(pDVar13);\n      uVar14 = param_1[0xb];\n      *(undefined4 *)(iVar1 + 0xc) = 0;\n      if (((uVar14 & 0x200) != 0) && (-1 < local_2c)) {\n        close(local_2c);\n        uVar14 = param_1[0xb];\n      }\n    }\n    else {\n      pDVar13 = *(DIR **)(iVar1 + 0xc);\n      uVar17 = *(ushort *)(iVar1 + 0x3e) | 1;\n      if ((bVar19) && (bVar2)) {\nLAB_0001980f:\n        piVar8 = __errno_location();\n        *(int *)(iVar1 + 0x20) = *piVar8;\n        goto LAB_0001982f;\n      }\n      *(ushort *)(iVar1 + 0x3e) = uVar17;\n      closedir(pDVar13);\n      uVar14 = param_1[0xb];\n    }\n    bVar19 = false;\n    *(undefined4 *)(iVar1 + 0xc) = 0;\n  }\n  else {\n    iVar7 = dirfd(__dirp);\n    if (iVar7 < 0) {\n      closedir(*(DIR **)(iVar1 + 0xc));\n      *(undefined4 *)(iVar1 + 0xc) = 0;\n      goto joined_r0x00019b00;\n    }\n    if (param_1[10] == 0) {\n      local_34 = 100000;\n      uVar14 = param_1[0xb];\n      bVar19 = true;\n    }\n    else {\n      local_34 = 0xffffffff;\nLAB_000192cc:\n      bVar19 = true;\n      uVar14 = param_1[0xb];\n    }\n  }\nLAB_000192d4:\n  uVar18 = *(uint *)(iVar1 + 0x28);\n  local_4c = uVar18;\n  local_30 = uVar18 - 1;\n  if (*(char *)(*(int *)(iVar1 + 0x1c) + -1 + uVar18) != '/') {\n    local_4c = uVar18 + 1;\n    local_30 = uVar18;\n  }\n  local_38 = (undefined1 *)0x0;\n  if ((uVar14 & 4) != 0) {\n    local_38 = (undefined1 *)(local_30 + param_1[5]) + 1;\n    *(undefined1 *)(local_30 + param_1[5]) = 0x2f;\n  }\n  local_44 = param_1[8] - local_4c;\n  bVar2 = false;\n  local_1f = '\0';\n  iVar7 = *(int *)(iVar1 + 0x30);\n  local_54 = (void *)0x0;\n  local_5c = 0;\n  local_48 = (void *)0x0;\nLAB_000193a8:\n  do {\n    do {\n      pDVar13 = *(DIR **)(iVar1 + 0xc);\n      if (pDVar13 == (DIR *)0x0) goto LAB_00019641;\n      piVar8 = __errno_location();\n      *piVar8 = 0;\n      pdVar9 = readdir64(pDVar13);\n      if (pdVar9 == (dirent64 *)0x0) {\n        if (*piVar8 != 0) {\n          *(int *)(iVar1 + 0x20) = *piVar8;\n          *(ushort *)(iVar1 + 0x3c) =\n               (-(ushort)(__dirp == (DIR *)0x0 && local_5c == 0) & 0xfffd) + 7;\n        }\n        if (*(DIR **)(iVar1 + 0xc) != (DIR *)0x0) {\n          closedir(*(DIR **)(iVar1 + 0xc));\n          *(undefined4 *)(iVar1 + 0xc) = 0;\n        }\n        goto LAB_00019641;\n      }\n    } while ((((*(byte *)(param_1 + 0xb) & 0x20) == 0) && (pdVar9->d_name[0] == '.')) &&\n            ((pdVar9->d_name[1] == '\0' || (*(short *)(pdVar9->d_name + 1) == 0x2e))));\n    sVar10 = strlen(pdVar9->d_name);\n    pvVar11 = (void *)FUN_000188d0();\n    if (pvVar11 == (void *)0x0) {\nLAB_00019910:\n      iVar7 = *piVar8;\n      free(pvVar11);\n      FUN_00018960();\n      closedir(*(DIR **)(iVar1 + 0xc));\n      *(undefined4 *)(iVar1 + 0xc) = 0;\n      *(undefined2 *)(iVar1 + 0x3c) = 7;\n      param_1[0xb] = param_1[0xb] | 0x4000;\n      *piVar8 = iVar7;\n      return (void *)0x0;\n    }\n    if (local_44 <= sVar10) {\n      iVar15 = param_1[5];\n      cVar5 = FUN_00018cc0();\n      if (cVar5 == '\0') goto LAB_00019910;\n      puVar4 = local_38;\n      if ((param_1[5] != iVar15) &&\n         (local_1f = cVar5, puVar4 = (undefined1 *)(param_1[5] + local_4c),\n         (*(byte *)(param_1 + 0xb) & 4) == 0)) {\n        puVar4 = local_38;\n      }\n      local_38 = puVar4;\n      local_44 = param_1[8] - local_4c;\n    }\n    if (CARRY4(sVar10,local_4c)) {\n      free(pvVar11);\n      FUN_00018960();\n      closedir(*(DIR **)(iVar1 + 0xc));\n      *(undefined4 *)(iVar1 + 0xc) = 0;\n      *(undefined2 *)(iVar1 + 0x3c) = 7;\n      param_1[0xb] = param_1[0xb] | 0x4000;\n      *piVar8 = 0x24;\n      return (void *)0x0;\n    }\n    uVar12 = *(undefined4 *)((int)&pdVar9->d_ino + 4);\n    *(int *)((int)pvVar11 + 0x30) = iVar7 + 1;\n    iVar15 = *param_1;\n    *(size_t *)((int)pvVar11 + 0x28) = sVar10 + local_4c;\n    *(int *)((int)pvVar11 + 4) = iVar15;\n    _Var3 = pdVar9->d_ino;\n    *(undefined4 *)((int)pvVar11 + 0xa0) = uVar12;\n    *(int *)((int)pvVar11 + 0x9c) = (int)_Var3;\n    uVar14 = param_1[0xb];\n    if ((uVar14 & 4) == 0) {\n      *(void **)((int)pvVar11 + 0x18) = (void *)((int)pvVar11 + 0xa4);\n    }\n    else {\n      *(undefined4 *)((int)pvVar11 + 0x18) = *(undefined4 *)((int)pvVar11 + 0x1c);\n      memmove(local_38,(void *)((int)pvVar11 + 0xa4),*(int *)((int)pvVar11 + 0x34) + 1);\n      uVar14 = param_1[0xb];\n    }\n    if ((param_1[10] == 0) || ((uVar14 & 0x400) != 0)) {\n      uVar18 = pdVar9->d_type - 1;\n      if (((uVar14 & 0x18) == 0x18) && ((pdVar9->d_type & 0xfb) != 0)) {\n        *(undefined2 *)((int)pvVar11 + 0x3c) = 0xb;\n        if (uVar18 < 0xc) {\n          *(undefined4 *)((int)pvVar11 + 0x54) = *(undefined4 *)(&DAT_0001e180 + uVar18 * 4);\n          uVar12 = 1;\n        }\n        else {\n          *(undefined4 *)((int)pvVar11 + 0x54) = 0;\n          uVar12 = 1;\n        }\n      }\n      else {\n        *(undefined2 *)((int)pvVar11 + 0x3c) = 0xb;\n        if (uVar18 < 0xc) {\n          *(undefined4 *)((int)pvVar11 + 0x54) = *(undefined4 *)(&DAT_0001e180 + uVar18 * 4);\n          uVar12 = 2;\n        }\n        else {\n          *(undefined4 *)((int)pvVar11 + 0x54) = 0;\n          uVar12 = 2;\n        }\n      }\n      *(undefined4 *)((int)pvVar11 + 0x70) = uVar12;\n      *(undefined4 *)((int)pvVar11 + 0x74) = 0;\n    }\n    else {\n      uVar6 = FUN_00018640();\n      *(undefined2 *)((int)pvVar11 + 0x3c) = uVar6;\n    }\n    *(undefined4 *)((int)pvVar11 + 8) = 0;\n    pvVar16 = pvVar11;\n    if (local_48 != (void *)0x0) {\n      *(void **)((int)local_54 + 8) = pvVar11;\n      pvVar16 = local_48;\n    }\n    local_48 = pvVar16;\n    local_54 = pvVar11;\n    if (local_5c == 10000) {\n      if ((param_1[10] != 0) ||\n         (((iVar15 = FUN_00018a00(), iVar15 != 0x6969 && (iVar15 != 0x1021994)) &&\n          (bVar2 = true, iVar15 != -0xacb2be)))) {\n        local_5c = 0x2711;\n        goto LAB_000193a8;\n      }\n      bVar2 = false;\n    }\n    local_5c = local_5c + 1;\n  } while (local_5c < local_34);\nLAB_00019641:\n  if (local_1f != '\0') {\n    iVar15 = param_1[5];\n    for (iVar7 = param_1[1]; pvVar11 = local_48, iVar7 != 0; iVar7 = *(int *)(iVar7 + 8)) {\n      if (*(int *)(iVar7 + 0x18) != iVar7 + 0xa4) {\n        *(int *)(iVar7 + 0x18) = (*(int *)(iVar7 + 0x18) - *(int *)(iVar7 + 0x1c)) + iVar15;\n      }\n      *(int *)(iVar7 + 0x1c) = iVar15;\n    }\n    while (pvVar16 = pvVar11, -1 < *(int *)((int)pvVar16 + 0x30)) {\n      if (*(int *)((int)pvVar16 + 0x18) != (int)pvVar16 + 0xa4) {\n        *(int *)((int)pvVar16 + 0x18) =\n             (*(int *)((int)pvVar16 + 0x18) - *(int *)((int)pvVar16 + 0x1c)) + iVar15;\n      }\n      *(int *)((int)pvVar16 + 0x1c) = iVar15;\n      pvVar11 = *(void **)((int)pvVar16 + 8);\n      if (*(void **)((int)pvVar16 + 8) == (void *)0x0) {\n        pvVar11 = *(void **)((int)pvVar16 + 4);\n      }\n    }\n  }\n  if ((*(byte *)(param_1 + 0xb) & 4) != 0) {\n    if ((param_1[8] == local_4c) || (local_5c == 0)) {\n      local_38 = local_38 + -1;\n    }\n    *local_38 = 0;\n  }\n  if ((__dirp == (DIR *)0x0) && (bVar19)) {\n    if ((param_2 != 1) && (local_5c != 0)) goto LAB_000196b9;\n    if (*(int *)(iVar1 + 0x30) == 0) {\n      iVar7 = FUN_00018c40();\n    }\n    else {\n      iVar7 = FUN_00018e20(&DAT_0001e166);\n    }\n    if (iVar7 != 0) {\n      *(undefined2 *)(iVar1 + 0x3c) = 7;\n      param_1[0xb] = param_1[0xb] | 0x4000;\n      FUN_00018960();\n      return (void *)0x0;\n    }\n  }\n  if (local_5c == 0) {\n    if (((param_2 == 3) && (*(short *)(iVar1 + 0x3c) != 4)) && (*(short *)(iVar1 + 0x3c) != 7)) {\n      *(undefined2 *)(iVar1 + 0x3c) = 6;\n    }\n    FUN_00018960();\n    return (void *)0x0;\n  }\nLAB_000196b9:\n  if (bVar2) {\n    param_1[10] = (int)FUN_00018600;\n    pvVar11 = (void *)FUN_000187e0();\n    param_1[10] = 0;\n    return pvVar11;\n  }\n  if ((param_1[10] != 0) && (local_5c != 1)) {\n    pvVar11 = (void *)FUN_000187e0();\n    return pvVar11;\n  }\n  return local_48;\n}" primitive_type (pointer_declarator "* __regparm3 FUN_00019270(int *param_1,int param_2)" * (ERROR "__regparm3" identifier) (function_declarator "FUN_00019270(int *param_1,int param_2)" identifier (parameter_list "(int *param_1,int param_2)" ( (parameter_declaration "int *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "int param_2" primitive_type identifier) )))) (compound_statement "{\n  int iVar1;\n  DIR *__dirp;\n  bool bVar2;\n  __ino64_t _Var3;\n  undefined1 *puVar4;\n  char cVar5;\n  undefined2 uVar6;\n  int iVar7;\n  int *piVar8;\n  dirent64 *pdVar9;\n  size_t sVar10;\n  void *pvVar11;\n  undefined4 uVar12;\n  DIR *pDVar13;\n  uint uVar14;\n  int iVar15;\n  void *pvVar16;\n  ushort uVar17;\n  uint uVar18;\n  bool bVar19;\n  uint local_5c;\n  void *local_54;\n  uint local_4c;\n  void *local_48;\n  uint local_44;\n  undefined1 *local_38;\n  uint local_34;\n  uint local_30;\n  int local_2c;\n  char local_1f;\n  \n  iVar1 = *param_1;\n  __dirp = *(DIR **)(iVar1 + 0xc);\n  if (__dirp == (DIR *)0x0) {\n    uVar14 = param_1[0xb];\n    uVar18 = uVar14 & 0x10;\n    if (((uVar18 != 0) && (uVar18 = 0x20000, (uVar14 & 1) != 0)) &&\n       (uVar18 = *(uint *)(iVar1 + 0x30), uVar18 != 0)) {\n      uVar18 = 0x20000;\n    }\n    iVar7 = -100;\n    if ((uVar14 & 0x204) == 0x200) {\n      iVar7 = param_1[7];\n    }\n    local_2c = FUN_0001c620(iVar7,*(undefined4 *)(iVar1 + 0x18),\n                            (uVar14 & 0x800) << 7 | uVar18 | 0x90900);\n    if (local_2c < 0) {\n      *(undefined4 *)(iVar1 + 0xc) = 0;\njoined_r0x00019b00:\n      if (param_2 == 3) {\n        *(undefined2 *)(iVar1 + 0x3c) = 4;\n        piVar8 = __errno_location();\n        *(int *)(iVar1 + 0x20) = *piVar8;\n      }\n      return (void *)0x0;\n    }\n    pDVar13 = fdopendir(local_2c);\n    if (pDVar13 == (DIR *)0x0) {\n      piVar8 = __errno_location();\n      iVar7 = *piVar8;\n      close(local_2c);\n      *piVar8 = iVar7;\n      *(undefined4 *)(iVar1 + 0xc) = 0;\n      goto joined_r0x00019b00;\n    }\n    *(DIR **)(iVar1 + 0xc) = pDVar13;\n    if (*(short *)(iVar1 + 0x3c) == 0xb) {\n      uVar6 = FUN_00018640();\n      *(undefined2 *)(iVar1 + 0x3c) = uVar6;\n    }\n    else if ((param_1[0xb] & 0x100U) != 0) {\n      FUN_00019160();\n      FUN_00018640();\n      cVar5 = FUN_00019090();\n      if (cVar5 == '\0') {\n        piVar8 = __errno_location();\n        *piVar8 = 0xc;\n        return (void *)0x0;\n      }\n    }\n    local_34 = (-(uint)(param_1[10] == 0) & 0x186a1) - 1;\n    if (param_2 == 2) {\nLAB_00019a90:\n      bVar19 = false;\n      uVar14 = param_1[0xb];\n      goto LAB_000192d4;\n    }\n    if ((((param_1[0xb] & 0x38U) == 0x18) && (*(int *)(iVar1 + 0x58) == 2)) &&\n       (iVar7 = FUN_00018b60(), iVar7 != 0)) {\n      if (param_2 != 3) goto LAB_00019a90;\n      bVar2 = false;\n      bVar19 = true;\n    }\n    else {\n      bVar19 = param_2 == 3;\n      bVar2 = true;\n    }\n    if (((*(byte *)((int)param_1 + 0x2d) & 2) == 0) ||\n       (local_2c = FUN_0001c780(local_2c,0x406,3), -1 < local_2c)) {\n      iVar7 = FUN_00018e20(0);\n      if (iVar7 == 0) goto LAB_000192cc;\n      pDVar13 = *(DIR **)(iVar1 + 0xc);\n      uVar17 = *(ushort *)(iVar1 + 0x3e) | 1;\n      if ((bVar19) && (bVar2)) goto LAB_0001980f;\nLAB_0001982f:\n      *(ushort *)(iVar1 + 0x3e) = uVar17;\n      closedir(pDVar13);\n      uVar14 = param_1[0xb];\n      *(undefined4 *)(iVar1 + 0xc) = 0;\n      if (((uVar14 & 0x200) != 0) && (-1 < local_2c)) {\n        close(local_2c);\n        uVar14 = param_1[0xb];\n      }\n    }\n    else {\n      pDVar13 = *(DIR **)(iVar1 + 0xc);\n      uVar17 = *(ushort *)(iVar1 + 0x3e) | 1;\n      if ((bVar19) && (bVar2)) {\nLAB_0001980f:\n        piVar8 = __errno_location();\n        *(int *)(iVar1 + 0x20) = *piVar8;\n        goto LAB_0001982f;\n      }\n      *(ushort *)(iVar1 + 0x3e) = uVar17;\n      closedir(pDVar13);\n      uVar14 = param_1[0xb];\n    }\n    bVar19 = false;\n    *(undefined4 *)(iVar1 + 0xc) = 0;\n  }\n  else {\n    iVar7 = dirfd(__dirp);\n    if (iVar7 < 0) {\n      closedir(*(DIR **)(iVar1 + 0xc));\n      *(undefined4 *)(iVar1 + 0xc) = 0;\n      goto joined_r0x00019b00;\n    }\n    if (param_1[10] == 0) {\n      local_34 = 100000;\n      uVar14 = param_1[0xb];\n      bVar19 = true;\n    }\n    else {\n      local_34 = 0xffffffff;\nLAB_000192cc:\n      bVar19 = true;\n      uVar14 = param_1[0xb];\n    }\n  }\nLAB_000192d4:\n  uVar18 = *(uint *)(iVar1 + 0x28);\n  local_4c = uVar18;\n  local_30 = uVar18 - 1;\n  if (*(char *)(*(int *)(iVar1 + 0x1c) + -1 + uVar18) != '/') {\n    local_4c = uVar18 + 1;\n    local_30 = uVar18;\n  }\n  local_38 = (undefined1 *)0x0;\n  if ((uVar14 & 4) != 0) {\n    local_38 = (undefined1 *)(local_30 + param_1[5]) + 1;\n    *(undefined1 *)(local_30 + param_1[5]) = 0x2f;\n  }\n  local_44 = param_1[8] - local_4c;\n  bVar2 = false;\n  local_1f = '\0';\n  iVar7 = *(int *)(iVar1 + 0x30);\n  local_54 = (void *)0x0;\n  local_5c = 0;\n  local_48 = (void *)0x0;\nLAB_000193a8:\n  do {\n    do {\n      pDVar13 = *(DIR **)(iVar1 + 0xc);\n      if (pDVar13 == (DIR *)0x0) goto LAB_00019641;\n      piVar8 = __errno_location();\n      *piVar8 = 0;\n      pdVar9 = readdir64(pDVar13);\n      if (pdVar9 == (dirent64 *)0x0) {\n        if (*piVar8 != 0) {\n          *(int *)(iVar1 + 0x20) = *piVar8;\n          *(ushort *)(iVar1 + 0x3c) =\n               (-(ushort)(__dirp == (DIR *)0x0 && local_5c == 0) & 0xfffd) + 7;\n        }\n        if (*(DIR **)(iVar1 + 0xc) != (DIR *)0x0) {\n          closedir(*(DIR **)(iVar1 + 0xc));\n          *(undefined4 *)(iVar1 + 0xc) = 0;\n        }\n        goto LAB_00019641;\n      }\n    } while ((((*(byte *)(param_1 + 0xb) & 0x20) == 0) && (pdVar9->d_name[0] == '.')) &&\n            ((pdVar9->d_name[1] == '\0' || (*(short *)(pdVar9->d_name + 1) == 0x2e))));\n    sVar10 = strlen(pdVar9->d_name);\n    pvVar11 = (void *)FUN_000188d0();\n    if (pvVar11 == (void *)0x0) {\nLAB_00019910:\n      iVar7 = *piVar8;\n      free(pvVar11);\n      FUN_00018960();\n      closedir(*(DIR **)(iVar1 + 0xc));\n      *(undefined4 *)(iVar1 + 0xc) = 0;\n      *(undefined2 *)(iVar1 + 0x3c) = 7;\n      param_1[0xb] = param_1[0xb] | 0x4000;\n      *piVar8 = iVar7;\n      return (void *)0x0;\n    }\n    if (local_44 <= sVar10) {\n      iVar15 = param_1[5];\n      cVar5 = FUN_00018cc0();\n      if (cVar5 == '\0') goto LAB_00019910;\n      puVar4 = local_38;\n      if ((param_1[5] != iVar15) &&\n         (local_1f = cVar5, puVar4 = (undefined1 *)(param_1[5] + local_4c),\n         (*(byte *)(param_1 + 0xb) & 4) == 0)) {\n        puVar4 = local_38;\n      }\n      local_38 = puVar4;\n      local_44 = param_1[8] - local_4c;\n    }\n    if (CARRY4(sVar10,local_4c)) {\n      free(pvVar11);\n      FUN_00018960();\n      closedir(*(DIR **)(iVar1 + 0xc));\n      *(undefined4 *)(iVar1 + 0xc) = 0;\n      *(undefined2 *)(iVar1 + 0x3c) = 7;\n      param_1[0xb] = param_1[0xb] | 0x4000;\n      *piVar8 = 0x24;\n      return (void *)0x0;\n    }\n    uVar12 = *(undefined4 *)((int)&pdVar9->d_ino + 4);\n    *(int *)((int)pvVar11 + 0x30) = iVar7 + 1;\n    iVar15 = *param_1;\n    *(size_t *)((int)pvVar11 + 0x28) = sVar10 + local_4c;\n    *(int *)((int)pvVar11 + 4) = iVar15;\n    _Var3 = pdVar9->d_ino;\n    *(undefined4 *)((int)pvVar11 + 0xa0) = uVar12;\n    *(int *)((int)pvVar11 + 0x9c) = (int)_Var3;\n    uVar14 = param_1[0xb];\n    if ((uVar14 & 4) == 0) {\n      *(void **)((int)pvVar11 + 0x18) = (void *)((int)pvVar11 + 0xa4);\n    }\n    else {\n      *(undefined4 *)((int)pvVar11 + 0x18) = *(undefined4 *)((int)pvVar11 + 0x1c);\n      memmove(local_38,(void *)((int)pvVar11 + 0xa4),*(int *)((int)pvVar11 + 0x34) + 1);\n      uVar14 = param_1[0xb];\n    }\n    if ((param_1[10] == 0) || ((uVar14 & 0x400) != 0)) {\n      uVar18 = pdVar9->d_type - 1;\n      if (((uVar14 & 0x18) == 0x18) && ((pdVar9->d_type & 0xfb) != 0)) {\n        *(undefined2 *)((int)pvVar11 + 0x3c) = 0xb;\n        if (uVar18 < 0xc) {\n          *(undefined4 *)((int)pvVar11 + 0x54) = *(undefined4 *)(&DAT_0001e180 + uVar18 * 4);\n          uVar12 = 1;\n        }\n        else {\n          *(undefined4 *)((int)pvVar11 + 0x54) = 0;\n          uVar12 = 1;\n        }\n      }\n      else {\n        *(undefined2 *)((int)pvVar11 + 0x3c) = 0xb;\n        if (uVar18 < 0xc) {\n          *(undefined4 *)((int)pvVar11 + 0x54) = *(undefined4 *)(&DAT_0001e180 + uVar18 * 4);\n          uVar12 = 2;\n        }\n        else {\n          *(undefined4 *)((int)pvVar11 + 0x54) = 0;\n          uVar12 = 2;\n        }\n      }\n      *(undefined4 *)((int)pvVar11 + 0x70) = uVar12;\n      *(undefined4 *)((int)pvVar11 + 0x74) = 0;\n    }\n    else {\n      uVar6 = FUN_00018640();\n      *(undefined2 *)((int)pvVar11 + 0x3c) = uVar6;\n    }\n    *(undefined4 *)((int)pvVar11 + 8) = 0;\n    pvVar16 = pvVar11;\n    if (local_48 != (void *)0x0) {\n      *(void **)((int)local_54 + 8) = pvVar11;\n      pvVar16 = local_48;\n    }\n    local_48 = pvVar16;\n    local_54 = pvVar11;\n    if (local_5c == 10000) {\n      if ((param_1[10] != 0) ||\n         (((iVar15 = FUN_00018a00(), iVar15 != 0x6969 && (iVar15 != 0x1021994)) &&\n          (bVar2 = true, iVar15 != -0xacb2be)))) {\n        local_5c = 0x2711;\n        goto LAB_000193a8;\n      }\n      bVar2 = false;\n    }\n    local_5c = local_5c + 1;\n  } while (local_5c < local_34);\nLAB_00019641:\n  if (local_1f != '\0') {\n    iVar15 = param_1[5];\n    for (iVar7 = param_1[1]; pvVar11 = local_48, iVar7 != 0; iVar7 = *(int *)(iVar7 + 8)) {\n      if (*(int *)(iVar7 + 0x18) != iVar7 + 0xa4) {\n        *(int *)(iVar7 + 0x18) = (*(int *)(iVar7 + 0x18) - *(int *)(iVar7 + 0x1c)) + iVar15;\n      }\n      *(int *)(iVar7 + 0x1c) = iVar15;\n    }\n    while (pvVar16 = pvVar11, -1 < *(int *)((int)pvVar16 + 0x30)) {\n      if (*(int *)((int)pvVar16 + 0x18) != (int)pvVar16 + 0xa4) {\n        *(int *)((int)pvVar16 + 0x18) =\n             (*(int *)((int)pvVar16 + 0x18) - *(int *)((int)pvVar16 + 0x1c)) + iVar15;\n      }\n      *(int *)((int)pvVar16 + 0x1c) = iVar15;\n      pvVar11 = *(void **)((int)pvVar16 + 8);\n      if (*(void **)((int)pvVar16 + 8) == (void *)0x0) {\n        pvVar11 = *(void **)((int)pvVar16 + 4);\n      }\n    }\n  }\n  if ((*(byte *)(param_1 + 0xb) & 4) != 0) {\n    if ((param_1[8] == local_4c) || (local_5c == 0)) {\n      local_38 = local_38 + -1;\n    }\n    *local_38 = 0;\n  }\n  if ((__dirp == (DIR *)0x0) && (bVar19)) {\n    if ((param_2 != 1) && (local_5c != 0)) goto LAB_000196b9;\n    if (*(int *)(iVar1 + 0x30) == 0) {\n      iVar7 = FUN_00018c40();\n    }\n    else {\n      iVar7 = FUN_00018e20(&DAT_0001e166);\n    }\n    if (iVar7 != 0) {\n      *(undefined2 *)(iVar1 + 0x3c) = 7;\n      param_1[0xb] = param_1[0xb] | 0x4000;\n      FUN_00018960();\n      return (void *)0x0;\n    }\n  }\n  if (local_5c == 0) {\n    if (((param_2 == 3) && (*(short *)(iVar1 + 0x3c) != 4)) && (*(short *)(iVar1 + 0x3c) != 7)) {\n      *(undefined2 *)(iVar1 + 0x3c) = 6;\n    }\n    FUN_00018960();\n    return (void *)0x0;\n  }\nLAB_000196b9:\n  if (bVar2) {\n    param_1[10] = (int)FUN_00018600;\n    pvVar11 = (void *)FUN_000187e0();\n    param_1[10] = 0;\n    return pvVar11;\n  }\n  if ((param_1[10] != 0) && (local_5c != 1)) {\n    pvVar11 = (void *)FUN_000187e0();\n    return pvVar11;\n  }\n  return local_48;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "DIR *__dirp;" type_identifier (pointer_declarator "*__dirp" * identifier) ;) (declaration "bool bVar2;" primitive_type identifier ;) (declaration "__ino64_t _Var3;" type_identifier identifier ;) (declaration "undefined1 *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "char cVar5;" primitive_type identifier ;) (declaration "undefined2 uVar6;" type_identifier identifier ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "int *piVar8;" primitive_type (pointer_declarator "*piVar8" * identifier) ;) (declaration "dirent64 *pdVar9;" type_identifier (pointer_declarator "*pdVar9" * identifier) ;) (declaration "size_t sVar10;" primitive_type identifier ;) (declaration "void *pvVar11;" primitive_type (pointer_declarator "*pvVar11" * identifier) ;) (declaration "undefined4 uVar12;" type_identifier identifier ;) (declaration "DIR *pDVar13;" type_identifier (pointer_declarator "*pDVar13" * identifier) ;) (declaration "uint uVar14;" type_identifier identifier ;) (declaration "int iVar15;" primitive_type identifier ;) (declaration "void *pvVar16;" primitive_type (pointer_declarator "*pvVar16" * identifier) ;) (declaration "ushort uVar17;" type_identifier identifier ;) (declaration "uint uVar18;" type_identifier identifier ;) (declaration "bool bVar19;" primitive_type identifier ;) (declaration "uint local_5c;" type_identifier identifier ;) (declaration "void *local_54;" primitive_type (pointer_declarator "*local_54" * identifier) ;) (declaration "uint local_4c;" type_identifier identifier ;) (declaration "void *local_48;" primitive_type (pointer_declarator "*local_48" * identifier) ;) (declaration "uint local_44;" type_identifier identifier ;) (declaration "undefined1 *local_38;" type_identifier (pointer_declarator "*local_38" * identifier) ;) (declaration "uint local_34;" type_identifier identifier ;) (declaration "uint local_30;" type_identifier identifier ;) (declaration "int local_2c;" primitive_type identifier ;) (declaration "char local_1f;" primitive_type identifier ;) (expression_statement "iVar1 = *param_1;" (assignment_expression "iVar1 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "__dirp = *(DIR **)(iVar1 + 0xc);" (assignment_expression "__dirp = *(DIR **)(iVar1 + 0xc)" identifier = (pointer_expression "*(DIR **)(iVar1 + 0xc)" * (cast_expression "(DIR **)(iVar1 + 0xc)" ( (type_descriptor "DIR **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar1 + 0xc)" ( (binary_expression "iVar1 + 0xc" identifier + number_literal) ))))) ;) (if_statement "if (__dirp == (DIR *)0x0) {\n    uVar14 = param_1[0xb];\n    uVar18 = uVar14 & 0x10;\n    if (((uVar18 != 0) && (uVar18 = 0x20000, (uVar14 & 1) != 0)) &&\n       (uVar18 = *(uint *)(iVar1 + 0x30), uVar18 != 0)) {\n      uVar18 = 0x20000;\n    }\n    iVar7 = -100;\n    if ((uVar14 & 0x204) == 0x200) {\n      iVar7 = param_1[7];\n    }\n    local_2c = FUN_0001c620(iVar7,*(undefined4 *)(iVar1 + 0x18),\n                            (uVar14 & 0x800) << 7 | uVar18 | 0x90900);\n    if (local_2c < 0) {\n      *(undefined4 *)(iVar1 + 0xc) = 0;\njoined_r0x00019b00:\n      if (param_2 == 3) {\n        *(undefined2 *)(iVar1 + 0x3c) = 4;\n        piVar8 = __errno_location();\n        *(int *)(iVar1 + 0x20) = *piVar8;\n      }\n      return (void *)0x0;\n    }\n    pDVar13 = fdopendir(local_2c);\n    if (pDVar13 == (DIR *)0x0) {\n      piVar8 = __errno_location();\n      iVar7 = *piVar8;\n      close(local_2c);\n      *piVar8 = iVar7;\n      *(undefined4 *)(iVar1 + 0xc) = 0;\n      goto joined_r0x00019b00;\n    }\n    *(DIR **)(iVar1 + 0xc) = pDVar13;\n    if (*(short *)(iVar1 + 0x3c) == 0xb) {\n      uVar6 = FUN_00018640();\n      *(undefined2 *)(iVar1 + 0x3c) = uVar6;\n    }\n    else if ((param_1[0xb] & 0x100U) != 0) {\n      FUN_00019160();\n      FUN_00018640();\n      cVar5 = FUN_00019090();\n      if (cVar5 == '\0') {\n        piVar8 = __errno_location();\n        *piVar8 = 0xc;\n        return (void *)0x0;\n      }\n    }\n    local_34 = (-(uint)(param_1[10] == 0) & 0x186a1) - 1;\n    if (param_2 == 2) {\nLAB_00019a90:\n      bVar19 = false;\n      uVar14 = param_1[0xb];\n      goto LAB_000192d4;\n    }\n    if ((((param_1[0xb] & 0x38U) == 0x18) && (*(int *)(iVar1 + 0x58) == 2)) &&\n       (iVar7 = FUN_00018b60(), iVar7 != 0)) {\n      if (param_2 != 3) goto LAB_00019a90;\n      bVar2 = false;\n      bVar19 = true;\n    }\n    else {\n      bVar19 = param_2 == 3;\n      bVar2 = true;\n    }\n    if (((*(byte *)((int)param_1 + 0x2d) & 2) == 0) ||\n       (local_2c = FUN_0001c780(local_2c,0x406,3), -1 < local_2c)) {\n      iVar7 = FUN_00018e20(0);\n      if (iVar7 == 0) goto LAB_000192cc;\n      pDVar13 = *(DIR **)(iVar1 + 0xc);\n      uVar17 = *(ushort *)(iVar1 + 0x3e) | 1;\n      if ((bVar19) && (bVar2)) goto LAB_0001980f;\nLAB_0001982f:\n      *(ushort *)(iVar1 + 0x3e) = uVar17;\n      closedir(pDVar13);\n      uVar14 = param_1[0xb];\n      *(undefined4 *)(iVar1 + 0xc) = 0;\n      if (((uVar14 & 0x200) != 0) && (-1 < local_2c)) {\n        close(local_2c);\n        uVar14 = param_1[0xb];\n      }\n    }\n    else {\n      pDVar13 = *(DIR **)(iVar1 + 0xc);\n      uVar17 = *(ushort *)(iVar1 + 0x3e) | 1;\n      if ((bVar19) && (bVar2)) {\nLAB_0001980f:\n        piVar8 = __errno_location();\n        *(int *)(iVar1 + 0x20) = *piVar8;\n        goto LAB_0001982f;\n      }\n      *(ushort *)(iVar1 + 0x3e) = uVar17;\n      closedir(pDVar13);\n      uVar14 = param_1[0xb];\n    }\n    bVar19 = false;\n    *(undefined4 *)(iVar1 + 0xc) = 0;\n  }\n  else {\n    iVar7 = dirfd(__dirp);\n    if (iVar7 < 0) {\n      closedir(*(DIR **)(iVar1 + 0xc));\n      *(undefined4 *)(iVar1 + 0xc) = 0;\n      goto joined_r0x00019b00;\n    }\n    if (param_1[10] == 0) {\n      local_34 = 100000;\n      uVar14 = param_1[0xb];\n      bVar19 = true;\n    }\n    else {\n      local_34 = 0xffffffff;\nLAB_000192cc:\n      bVar19 = true;\n      uVar14 = param_1[0xb];\n    }\n  }" if (parenthesized_expression "(__dirp == (DIR *)0x0)" ( (binary_expression "__dirp == (DIR *)0x0" identifier == (cast_expression "(DIR *)0x0" ( (type_descriptor "DIR *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    uVar14 = param_1[0xb];\n    uVar18 = uVar14 & 0x10;\n    if (((uVar18 != 0) && (uVar18 = 0x20000, (uVar14 & 1) != 0)) &&\n       (uVar18 = *(uint *)(iVar1 + 0x30), uVar18 != 0)) {\n      uVar18 = 0x20000;\n    }\n    iVar7 = -100;\n    if ((uVar14 & 0x204) == 0x200) {\n      iVar7 = param_1[7];\n    }\n    local_2c = FUN_0001c620(iVar7,*(undefined4 *)(iVar1 + 0x18),\n                            (uVar14 & 0x800) << 7 | uVar18 | 0x90900);\n    if (local_2c < 0) {\n      *(undefined4 *)(iVar1 + 0xc) = 0;\njoined_r0x00019b00:\n      if (param_2 == 3) {\n        *(undefined2 *)(iVar1 + 0x3c) = 4;\n        piVar8 = __errno_location();\n        *(int *)(iVar1 + 0x20) = *piVar8;\n      }\n      return (void *)0x0;\n    }\n    pDVar13 = fdopendir(local_2c);\n    if (pDVar13 == (DIR *)0x0) {\n      piVar8 = __errno_location();\n      iVar7 = *piVar8;\n      close(local_2c);\n      *piVar8 = iVar7;\n      *(undefined4 *)(iVar1 + 0xc) = 0;\n      goto joined_r0x00019b00;\n    }\n    *(DIR **)(iVar1 + 0xc) = pDVar13;\n    if (*(short *)(iVar1 + 0x3c) == 0xb) {\n      uVar6 = FUN_00018640();\n      *(undefined2 *)(iVar1 + 0x3c) = uVar6;\n    }\n    else if ((param_1[0xb] & 0x100U) != 0) {\n      FUN_00019160();\n      FUN_00018640();\n      cVar5 = FUN_00019090();\n      if (cVar5 == '\0') {\n        piVar8 = __errno_location();\n        *piVar8 = 0xc;\n        return (void *)0x0;\n      }\n    }\n    local_34 = (-(uint)(param_1[10] == 0) & 0x186a1) - 1;\n    if (param_2 == 2) {\nLAB_00019a90:\n      bVar19 = false;\n      uVar14 = param_1[0xb];\n      goto LAB_000192d4;\n    }\n    if ((((param_1[0xb] & 0x38U) == 0x18) && (*(int *)(iVar1 + 0x58) == 2)) &&\n       (iVar7 = FUN_00018b60(), iVar7 != 0)) {\n      if (param_2 != 3) goto LAB_00019a90;\n      bVar2 = false;\n      bVar19 = true;\n    }\n    else {\n      bVar19 = param_2 == 3;\n      bVar2 = true;\n    }\n    if (((*(byte *)((int)param_1 + 0x2d) & 2) == 0) ||\n       (local_2c = FUN_0001c780(local_2c,0x406,3), -1 < local_2c)) {\n      iVar7 = FUN_00018e20(0);\n      if (iVar7 == 0) goto LAB_000192cc;\n      pDVar13 = *(DIR **)(iVar1 + 0xc);\n      uVar17 = *(ushort *)(iVar1 + 0x3e) | 1;\n      if ((bVar19) && (bVar2)) goto LAB_0001980f;\nLAB_0001982f:\n      *(ushort *)(iVar1 + 0x3e) = uVar17;\n      closedir(pDVar13);\n      uVar14 = param_1[0xb];\n      *(undefined4 *)(iVar1 + 0xc) = 0;\n      if (((uVar14 & 0x200) != 0) && (-1 < local_2c)) {\n        close(local_2c);\n        uVar14 = param_1[0xb];\n      }\n    }\n    else {\n      pDVar13 = *(DIR **)(iVar1 + 0xc);\n      uVar17 = *(ushort *)(iVar1 + 0x3e) | 1;\n      if ((bVar19) && (bVar2)) {\nLAB_0001980f:\n        piVar8 = __errno_location();\n        *(int *)(iVar1 + 0x20) = *piVar8;\n        goto LAB_0001982f;\n      }\n      *(ushort *)(iVar1 + 0x3e) = uVar17;\n      closedir(pDVar13);\n      uVar14 = param_1[0xb];\n    }\n    bVar19 = false;\n    *(undefined4 *)(iVar1 + 0xc) = 0;\n  }" { (expression_statement "uVar14 = param_1[0xb];" (assignment_expression "uVar14 = param_1[0xb]" identifier = (subscript_expression "param_1[0xb]" identifier [ number_literal ])) ;) (expression_statement "uVar18 = uVar14 & 0x10;" (assignment_expression "uVar18 = uVar14 & 0x10" identifier = (binary_expression "uVar14 & 0x10" identifier & number_literal)) ;) (if_statement "if (((uVar18 != 0) && (uVar18 = 0x20000, (uVar14 & 1) != 0)) &&\n       (uVar18 = *(uint *)(iVar1 + 0x30), uVar18 != 0)) {\n      uVar18 = 0x20000;\n    }" if (parenthesized_expression "(((uVar18 != 0) && (uVar18 = 0x20000, (uVar14 & 1) != 0)) &&\n       (uVar18 = *(uint *)(iVar1 + 0x30), uVar18 != 0))" ( (binary_expression "((uVar18 != 0) && (uVar18 = 0x20000, (uVar14 & 1) != 0)) &&\n       (uVar18 = *(uint *)(iVar1 + 0x30), uVar18 != 0)" (parenthesized_expression "((uVar18 != 0) && (uVar18 = 0x20000, (uVar14 & 1) != 0))" ( (binary_expression "(uVar18 != 0) && (uVar18 = 0x20000, (uVar14 & 1) != 0)" (parenthesized_expression "(uVar18 != 0)" ( (binary_expression "uVar18 != 0" identifier != number_literal) )) && (parenthesized_expression "(uVar18 = 0x20000, (uVar14 & 1) != 0)" ( (comma_expression "uVar18 = 0x20000, (uVar14 & 1) != 0" (assignment_expression "uVar18 = 0x20000" identifier = number_literal) , (binary_expression "(uVar14 & 1) != 0" (parenthesized_expression "(uVar14 & 1)" ( (binary_expression "uVar14 & 1" identifier & number_literal) )) != number_literal)) ))) )) && (parenthesized_expression "(uVar18 = *(uint *)(iVar1 + 0x30), uVar18 != 0)" ( (comma_expression "uVar18 = *(uint *)(iVar1 + 0x30), uVar18 != 0" (assignment_expression "uVar18 = *(uint *)(iVar1 + 0x30)" identifier = (pointer_expression "*(uint *)(iVar1 + 0x30)" * (cast_expression "(uint *)(iVar1 + 0x30)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x30)" ( (binary_expression "iVar1 + 0x30" identifier + number_literal) ))))) , (binary_expression "uVar18 != 0" identifier != number_literal)) ))) )) (compound_statement "{\n      uVar18 = 0x20000;\n    }" { (expression_statement "uVar18 = 0x20000;" (assignment_expression "uVar18 = 0x20000" identifier = number_literal) ;) })) (expression_statement "iVar7 = -100;" (assignment_expression "iVar7 = -100" identifier = number_literal) ;) (if_statement "if ((uVar14 & 0x204) == 0x200) {\n      iVar7 = param_1[7];\n    }" if (parenthesized_expression "((uVar14 & 0x204) == 0x200)" ( (binary_expression "(uVar14 & 0x204) == 0x200" (parenthesized_expression "(uVar14 & 0x204)" ( (binary_expression "uVar14 & 0x204" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n      iVar7 = param_1[7];\n    }" { (expression_statement "iVar7 = param_1[7];" (assignment_expression "iVar7 = param_1[7]" identifier = (subscript_expression "param_1[7]" identifier [ number_literal ])) ;) })) (expression_statement "local_2c = FUN_0001c620(iVar7,*(undefined4 *)(iVar1 + 0x18),\n                            (uVar14 & 0x800) << 7 | uVar18 | 0x90900);" (assignment_expression "local_2c = FUN_0001c620(iVar7,*(undefined4 *)(iVar1 + 0x18),\n                            (uVar14 & 0x800) << 7 | uVar18 | 0x90900)" identifier = (call_expression "FUN_0001c620(iVar7,*(undefined4 *)(iVar1 + 0x18),\n                            (uVar14 & 0x800) << 7 | uVar18 | 0x90900)" identifier (argument_list "(iVar7,*(undefined4 *)(iVar1 + 0x18),\n                            (uVar14 & 0x800) << 7 | uVar18 | 0x90900)" ( identifier , (pointer_expression "*(undefined4 *)(iVar1 + 0x18)" * (cast_expression "(undefined4 *)(iVar1 + 0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x18)" ( (binary_expression "iVar1 + 0x18" identifier + number_literal) )))) , (binary_expression "(uVar14 & 0x800) << 7 | uVar18 | 0x90900" (binary_expression "(uVar14 & 0x800) << 7 | uVar18" (binary_expression "(uVar14 & 0x800) << 7" (parenthesized_expression "(uVar14 & 0x800)" ( (binary_expression "uVar14 & 0x800" identifier & number_literal) )) << number_literal) | identifier) | number_literal) )))) ;) (if_statement "if (local_2c < 0) {\n      *(undefined4 *)(iVar1 + 0xc) = 0;\njoined_r0x00019b00:\n      if (param_2 == 3) {\n        *(undefined2 *)(iVar1 + 0x3c) = 4;\n        piVar8 = __errno_location();\n        *(int *)(iVar1 + 0x20) = *piVar8;\n      }\n      return (void *)0x0;\n    }" if (parenthesized_expression "(local_2c < 0)" ( (binary_expression "local_2c < 0" identifier < number_literal) )) (compound_statement "{\n      *(undefined4 *)(iVar1 + 0xc) = 0;\njoined_r0x00019b00:\n      if (param_2 == 3) {\n        *(undefined2 *)(iVar1 + 0x3c) = 4;\n        piVar8 = __errno_location();\n        *(int *)(iVar1 + 0x20) = *piVar8;\n      }\n      return (void *)0x0;\n    }" { (expression_statement "*(undefined4 *)(iVar1 + 0xc) = 0;" (assignment_expression "*(undefined4 *)(iVar1 + 0xc) = 0" (pointer_expression "*(undefined4 *)(iVar1 + 0xc)" * (cast_expression "(undefined4 *)(iVar1 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0xc)" ( (binary_expression "iVar1 + 0xc" identifier + number_literal) )))) = number_literal) ;) (labeled_statement "joined_r0x00019b00:\n      if (param_2 == 3) {\n        *(undefined2 *)(iVar1 + 0x3c) = 4;\n        piVar8 = __errno_location();\n        *(int *)(iVar1 + 0x20) = *piVar8;\n      }" statement_identifier : (if_statement "if (param_2 == 3) {\n        *(undefined2 *)(iVar1 + 0x3c) = 4;\n        piVar8 = __errno_location();\n        *(int *)(iVar1 + 0x20) = *piVar8;\n      }" if (parenthesized_expression "(param_2 == 3)" ( (binary_expression "param_2 == 3" identifier == number_literal) )) (compound_statement "{\n        *(undefined2 *)(iVar1 + 0x3c) = 4;\n        piVar8 = __errno_location();\n        *(int *)(iVar1 + 0x20) = *piVar8;\n      }" { (expression_statement "*(undefined2 *)(iVar1 + 0x3c) = 4;" (assignment_expression "*(undefined2 *)(iVar1 + 0x3c) = 4" (pointer_expression "*(undefined2 *)(iVar1 + 0x3c)" * (cast_expression "(undefined2 *)(iVar1 + 0x3c)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x3c)" ( (binary_expression "iVar1 + 0x3c" identifier + number_literal) )))) = number_literal) ;) (expression_statement "piVar8 = __errno_location();" (assignment_expression "piVar8 = __errno_location()" identifier = (call_expression "__errno_location()" identifier (argument_list "()" ( )))) ;) (expression_statement "*(int *)(iVar1 + 0x20) = *piVar8;" (assignment_expression "*(int *)(iVar1 + 0x20) = *piVar8" (pointer_expression "*(int *)(iVar1 + 0x20)" * (cast_expression "(int *)(iVar1 + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x20)" ( (binary_expression "iVar1 + 0x20" identifier + number_literal) )))) = (pointer_expression "*piVar8" * identifier)) ;) }))) (return_statement "return (void *)0x0;" return (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (expression_statement "pDVar13 = fdopendir(local_2c);" (assignment_expression "pDVar13 = fdopendir(local_2c)" identifier = (call_expression "fdopendir(local_2c)" identifier (argument_list "(local_2c)" ( identifier )))) ;) (if_statement "if (pDVar13 == (DIR *)0x0) {\n      piVar8 = __errno_location();\n      iVar7 = *piVar8;\n      close(local_2c);\n      *piVar8 = iVar7;\n      *(undefined4 *)(iVar1 + 0xc) = 0;\n      goto joined_r0x00019b00;\n    }" if (parenthesized_expression "(pDVar13 == (DIR *)0x0)" ( (binary_expression "pDVar13 == (DIR *)0x0" identifier == (cast_expression "(DIR *)0x0" ( (type_descriptor "DIR *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      piVar8 = __errno_location();\n      iVar7 = *piVar8;\n      close(local_2c);\n      *piVar8 = iVar7;\n      *(undefined4 *)(iVar1 + 0xc) = 0;\n      goto joined_r0x00019b00;\n    }" { (expression_statement "piVar8 = __errno_location();" (assignment_expression "piVar8 = __errno_location()" identifier = (call_expression "__errno_location()" identifier (argument_list "()" ( )))) ;) (expression_statement "iVar7 = *piVar8;" (assignment_expression "iVar7 = *piVar8" identifier = (pointer_expression "*piVar8" * identifier)) ;) (expression_statement "close(local_2c);" (call_expression "close(local_2c)" identifier (argument_list "(local_2c)" ( identifier ))) ;) (expression_statement "*piVar8 = iVar7;" (assignment_expression "*piVar8 = iVar7" (pointer_expression "*piVar8" * identifier) = identifier) ;) (expression_statement "*(undefined4 *)(iVar1 + 0xc) = 0;" (assignment_expression "*(undefined4 *)(iVar1 + 0xc) = 0" (pointer_expression "*(undefined4 *)(iVar1 + 0xc)" * (cast_expression "(undefined4 *)(iVar1 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0xc)" ( (binary_expression "iVar1 + 0xc" identifier + number_literal) )))) = number_literal) ;) (goto_statement "goto joined_r0x00019b00;" goto statement_identifier ;) })) (expression_statement "*(DIR **)(iVar1 + 0xc) = pDVar13;" (assignment_expression "*(DIR **)(iVar1 + 0xc) = pDVar13" (pointer_expression "*(DIR **)(iVar1 + 0xc)" * (cast_expression "(DIR **)(iVar1 + 0xc)" ( (type_descriptor "DIR **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar1 + 0xc)" ( (binary_expression "iVar1 + 0xc" identifier + number_literal) )))) = identifier) ;) (if_statement "if (*(short *)(iVar1 + 0x3c) == 0xb) {\n      uVar6 = FUN_00018640();\n      *(undefined2 *)(iVar1 + 0x3c) = uVar6;\n    }\n    else if ((param_1[0xb] & 0x100U) != 0) {\n      FUN_00019160();\n      FUN_00018640();\n      cVar5 = FUN_00019090();\n      if (cVar5 == '\0') {\n        piVar8 = __errno_location();\n        *piVar8 = 0xc;\n        return (void *)0x0;\n      }\n    }" if (parenthesized_expression "(*(short *)(iVar1 + 0x3c) == 0xb)" ( (binary_expression "*(short *)(iVar1 + 0x3c) == 0xb" (pointer_expression "*(short *)(iVar1 + 0x3c)" * (cast_expression "(short *)(iVar1 + 0x3c)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x3c)" ( (binary_expression "iVar1 + 0x3c" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n      uVar6 = FUN_00018640();\n      *(undefined2 *)(iVar1 + 0x3c) = uVar6;\n    }" { (expression_statement "uVar6 = FUN_00018640();" (assignment_expression "uVar6 = FUN_00018640()" identifier = (call_expression "FUN_00018640()" identifier (argument_list "()" ( )))) ;) (expression_statement "*(undefined2 *)(iVar1 + 0x3c) = uVar6;" (assignment_expression "*(undefined2 *)(iVar1 + 0x3c) = uVar6" (pointer_expression "*(undefined2 *)(iVar1 + 0x3c)" * (cast_expression "(undefined2 *)(iVar1 + 0x3c)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x3c)" ( (binary_expression "iVar1 + 0x3c" identifier + number_literal) )))) = identifier) ;) }) (else_clause "else if ((param_1[0xb] & 0x100U) != 0) {\n      FUN_00019160();\n      FUN_00018640();\n      cVar5 = FUN_00019090();\n      if (cVar5 == '\0') {\n        piVar8 = __errno_location();\n        *piVar8 = 0xc;\n        return (void *)0x0;\n      }\n    }" else (if_statement "if ((param_1[0xb] & 0x100U) != 0) {\n      FUN_00019160();\n      FUN_00018640();\n      cVar5 = FUN_00019090();\n      if (cVar5 == '\0') {\n        piVar8 = __errno_location();\n        *piVar8 = 0xc;\n        return (void *)0x0;\n      }\n    }" if (parenthesized_expression "((param_1[0xb] & 0x100U) != 0)" ( (binary_expression "(param_1[0xb] & 0x100U) != 0" (parenthesized_expression "(param_1[0xb] & 0x100U)" ( (binary_expression "param_1[0xb] & 0x100U" (subscript_expression "param_1[0xb]" identifier [ number_literal ]) & number_literal) )) != number_literal) )) (compound_statement "{\n      FUN_00019160();\n      FUN_00018640();\n      cVar5 = FUN_00019090();\n      if (cVar5 == '\0') {\n        piVar8 = __errno_location();\n        *piVar8 = 0xc;\n        return (void *)0x0;\n      }\n    }" { (expression_statement "FUN_00019160();" (call_expression "FUN_00019160()" identifier (argument_list "()" ( ))) ;) (expression_statement "FUN_00018640();" (call_expression "FUN_00018640()" identifier (argument_list "()" ( ))) ;) (expression_statement "cVar5 = FUN_00019090();" (assignment_expression "cVar5 = FUN_00019090()" identifier = (call_expression "FUN_00019090()" identifier (argument_list "()" ( )))) ;) (if_statement "if (cVar5 == '\0') {\n        piVar8 = __errno_location();\n        *piVar8 = 0xc;\n        return (void *)0x0;\n      }" if (parenthesized_expression "(cVar5 == '\0')" ( (binary_expression "cVar5 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n        piVar8 = __errno_location();\n        *piVar8 = 0xc;\n        return (void *)0x0;\n      }" { (expression_statement "piVar8 = __errno_location();" (assignment_expression "piVar8 = __errno_location()" identifier = (call_expression "__errno_location()" identifier (argument_list "()" ( )))) ;) (expression_statement "*piVar8 = 0xc;" (assignment_expression "*piVar8 = 0xc" (pointer_expression "*piVar8" * identifier) = number_literal) ;) (return_statement "return (void *)0x0;" return (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) })))) (expression_statement "local_34 = (-(uint)(param_1[10] == 0) & 0x186a1) - 1;" (assignment_expression "local_34 = (-(uint)(param_1[10] == 0) & 0x186a1) - 1" identifier = (binary_expression "(-(uint)(param_1[10] == 0) & 0x186a1) - 1" (parenthesized_expression "(-(uint)(param_1[10] == 0) & 0x186a1)" ( (binary_expression "-(uint)(param_1[10] == 0) & 0x186a1" (unary_expression "-(uint)(param_1[10] == 0)" - (call_expression "(uint)(param_1[10] == 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(param_1[10] == 0)" ( (binary_expression "param_1[10] == 0" (subscript_expression "param_1[10]" identifier [ number_literal ]) == number_literal) )))) & number_literal) )) - number_literal)) ;) (if_statement "if (param_2 == 2) {\nLAB_00019a90:\n      bVar19 = false;\n      uVar14 = param_1[0xb];\n      goto LAB_000192d4;\n    }" if (parenthesized_expression "(param_2 == 2)" ( (binary_expression "param_2 == 2" identifier == number_literal) )) (compound_statement "{\nLAB_00019a90:\n      bVar19 = false;\n      uVar14 = param_1[0xb];\n      goto LAB_000192d4;\n    }" { (labeled_statement "LAB_00019a90:\n      bVar19 = false;" statement_identifier : (expression_statement "bVar19 = false;" (assignment_expression "bVar19 = false" identifier = false) ;)) (expression_statement "uVar14 = param_1[0xb];" (assignment_expression "uVar14 = param_1[0xb]" identifier = (subscript_expression "param_1[0xb]" identifier [ number_literal ])) ;) (goto_statement "goto LAB_000192d4;" goto statement_identifier ;) })) (if_statement "if ((((param_1[0xb] & 0x38U) == 0x18) && (*(int *)(iVar1 + 0x58) == 2)) &&\n       (iVar7 = FUN_00018b60(), iVar7 != 0)) {\n      if (param_2 != 3) goto LAB_00019a90;\n      bVar2 = false;\n      bVar19 = true;\n    }\n    else {\n      bVar19 = param_2 == 3;\n      bVar2 = true;\n    }" if (parenthesized_expression "((((param_1[0xb] & 0x38U) == 0x18) && (*(int *)(iVar1 + 0x58) == 2)) &&\n       (iVar7 = FUN_00018b60(), iVar7 != 0))" ( (binary_expression "(((param_1[0xb] & 0x38U) == 0x18) && (*(int *)(iVar1 + 0x58) == 2)) &&\n       (iVar7 = FUN_00018b60(), iVar7 != 0)" (parenthesized_expression "(((param_1[0xb] & 0x38U) == 0x18) && (*(int *)(iVar1 + 0x58) == 2))" ( (binary_expression "((param_1[0xb] & 0x38U) == 0x18) && (*(int *)(iVar1 + 0x58) == 2)" (parenthesized_expression "((param_1[0xb] & 0x38U) == 0x18)" ( (binary_expression "(param_1[0xb] & 0x38U) == 0x18" (parenthesized_expression "(param_1[0xb] & 0x38U)" ( (binary_expression "param_1[0xb] & 0x38U" (subscript_expression "param_1[0xb]" identifier [ number_literal ]) & number_literal) )) == number_literal) )) && (parenthesized_expression "(*(int *)(iVar1 + 0x58) == 2)" ( (binary_expression "*(int *)(iVar1 + 0x58) == 2" (pointer_expression "*(int *)(iVar1 + 0x58)" * (cast_expression "(int *)(iVar1 + 0x58)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x58)" ( (binary_expression "iVar1 + 0x58" identifier + number_literal) )))) == number_literal) ))) )) && (parenthesized_expression "(iVar7 = FUN_00018b60(), iVar7 != 0)" ( (comma_expression "iVar7 = FUN_00018b60(), iVar7 != 0" (assignment_expression "iVar7 = FUN_00018b60()" identifier = (call_expression "FUN_00018b60()" identifier (argument_list "()" ( )))) , (binary_expression "iVar7 != 0" identifier != number_literal)) ))) )) (compound_statement "{\n      if (param_2 != 3) goto LAB_00019a90;\n      bVar2 = false;\n      bVar19 = true;\n    }" { (if_statement "if (param_2 != 3) goto LAB_00019a90;" if (parenthesized_expression "(param_2 != 3)" ( (binary_expression "param_2 != 3" identifier != number_literal) )) (goto_statement "goto LAB_00019a90;" goto statement_identifier ;)) (expression_statement "bVar2 = false;" (assignment_expression "bVar2 = false" identifier = false) ;) (expression_statement "bVar19 = true;" (assignment_expression "bVar19 = true" identifier = true) ;) }) (else_clause "else {\n      bVar19 = param_2 == 3;\n      bVar2 = true;\n    }" else (compound_statement "{\n      bVar19 = param_2 == 3;\n      bVar2 = true;\n    }" { (expression_statement "bVar19 = param_2 == 3;" (assignment_expression "bVar19 = param_2 == 3" identifier = (binary_expression "param_2 == 3" identifier == number_literal)) ;) (expression_statement "bVar2 = true;" (assignment_expression "bVar2 = true" identifier = true) ;) }))) (if_statement "if (((*(byte *)((int)param_1 + 0x2d) & 2) == 0) ||\n       (local_2c = FUN_0001c780(local_2c,0x406,3), -1 < local_2c)) {\n      iVar7 = FUN_00018e20(0);\n      if (iVar7 == 0) goto LAB_000192cc;\n      pDVar13 = *(DIR **)(iVar1 + 0xc);\n      uVar17 = *(ushort *)(iVar1 + 0x3e) | 1;\n      if ((bVar19) && (bVar2)) goto LAB_0001980f;\nLAB_0001982f:\n      *(ushort *)(iVar1 + 0x3e) = uVar17;\n      closedir(pDVar13);\n      uVar14 = param_1[0xb];\n      *(undefined4 *)(iVar1 + 0xc) = 0;\n      if (((uVar14 & 0x200) != 0) && (-1 < local_2c)) {\n        close(local_2c);\n        uVar14 = param_1[0xb];\n      }\n    }\n    else {\n      pDVar13 = *(DIR **)(iVar1 + 0xc);\n      uVar17 = *(ushort *)(iVar1 + 0x3e) | 1;\n      if ((bVar19) && (bVar2)) {\nLAB_0001980f:\n        piVar8 = __errno_location();\n        *(int *)(iVar1 + 0x20) = *piVar8;\n        goto LAB_0001982f;\n      }\n      *(ushort *)(iVar1 + 0x3e) = uVar17;\n      closedir(pDVar13);\n      uVar14 = param_1[0xb];\n    }" if (parenthesized_expression "(((*(byte *)((int)param_1 + 0x2d) & 2) == 0) ||\n       (local_2c = FUN_0001c780(local_2c,0x406,3), -1 < local_2c))" ( (binary_expression "((*(byte *)((int)param_1 + 0x2d) & 2) == 0) ||\n       (local_2c = FUN_0001c780(local_2c,0x406,3), -1 < local_2c)" (parenthesized_expression "((*(byte *)((int)param_1 + 0x2d) & 2) == 0)" ( (binary_expression "(*(byte *)((int)param_1 + 0x2d) & 2) == 0" (parenthesized_expression "(*(byte *)((int)param_1 + 0x2d) & 2)" ( (binary_expression "*(byte *)((int)param_1 + 0x2d) & 2" (pointer_expression "*(byte *)((int)param_1 + 0x2d)" * (cast_expression "(byte *)((int)param_1 + 0x2d)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + 0x2d)" ( (binary_expression "(int)param_1 + 0x2d" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) & number_literal) )) == number_literal) )) || (parenthesized_expression "(local_2c = FUN_0001c780(local_2c,0x406,3), -1 < local_2c)" ( (comma_expression "local_2c = FUN_0001c780(local_2c,0x406,3), -1 < local_2c" (assignment_expression "local_2c = FUN_0001c780(local_2c,0x406,3)" identifier = (call_expression "FUN_0001c780(local_2c,0x406,3)" identifier (argument_list "(local_2c,0x406,3)" ( identifier , number_literal , number_literal )))) , (binary_expression "-1 < local_2c" number_literal < identifier)) ))) )) (compound_statement "{\n      iVar7 = FUN_00018e20(0);\n      if (iVar7 == 0) goto LAB_000192cc;\n      pDVar13 = *(DIR **)(iVar1 + 0xc);\n      uVar17 = *(ushort *)(iVar1 + 0x3e) | 1;\n      if ((bVar19) && (bVar2)) goto LAB_0001980f;\nLAB_0001982f:\n      *(ushort *)(iVar1 + 0x3e) = uVar17;\n      closedir(pDVar13);\n      uVar14 = param_1[0xb];\n      *(undefined4 *)(iVar1 + 0xc) = 0;\n      if (((uVar14 & 0x200) != 0) && (-1 < local_2c)) {\n        close(local_2c);\n        uVar14 = param_1[0xb];\n      }\n    }" { (expression_statement "iVar7 = FUN_00018e20(0);" (assignment_expression "iVar7 = FUN_00018e20(0)" identifier = (call_expression "FUN_00018e20(0)" identifier (argument_list "(0)" ( number_literal )))) ;) (if_statement "if (iVar7 == 0) goto LAB_000192cc;" if (parenthesized_expression "(iVar7 == 0)" ( (binary_expression "iVar7 == 0" identifier == number_literal) )) (goto_statement "goto LAB_000192cc;" goto statement_identifier ;)) (expression_statement "pDVar13 = *(DIR **)(iVar1 + 0xc);" (assignment_expression "pDVar13 = *(DIR **)(iVar1 + 0xc)" identifier = (pointer_expression "*(DIR **)(iVar1 + 0xc)" * (cast_expression "(DIR **)(iVar1 + 0xc)" ( (type_descriptor "DIR **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar1 + 0xc)" ( (binary_expression "iVar1 + 0xc" identifier + number_literal) ))))) ;) (expression_statement "uVar17 = *(ushort *)(iVar1 + 0x3e) | 1;" (assignment_expression "uVar17 = *(ushort *)(iVar1 + 0x3e) | 1" identifier = (binary_expression "*(ushort *)(iVar1 + 0x3e) | 1" (pointer_expression "*(ushort *)(iVar1 + 0x3e)" * (cast_expression "(ushort *)(iVar1 + 0x3e)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x3e)" ( (binary_expression "iVar1 + 0x3e" identifier + number_literal) )))) | number_literal)) ;) (if_statement "if ((bVar19) && (bVar2)) goto LAB_0001980f;" if (parenthesized_expression "((bVar19) && (bVar2))" ( (binary_expression "(bVar19) && (bVar2)" (parenthesized_expression "(bVar19)" ( identifier )) && (parenthesized_expression "(bVar2)" ( identifier ))) )) (goto_statement "goto LAB_0001980f;" goto statement_identifier ;)) (labeled_statement "LAB_0001982f:\n      *(ushort *)(iVar1 + 0x3e) = uVar17;" statement_identifier : (expression_statement "*(ushort *)(iVar1 + 0x3e) = uVar17;" (assignment_expression "*(ushort *)(iVar1 + 0x3e) = uVar17" (pointer_expression "*(ushort *)(iVar1 + 0x3e)" * (cast_expression "(ushort *)(iVar1 + 0x3e)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x3e)" ( (binary_expression "iVar1 + 0x3e" identifier + number_literal) )))) = identifier) ;)) (expression_statement "closedir(pDVar13);" (call_expression "closedir(pDVar13)" identifier (argument_list "(pDVar13)" ( identifier ))) ;) (expression_statement "uVar14 = param_1[0xb];" (assignment_expression "uVar14 = param_1[0xb]" identifier = (subscript_expression "param_1[0xb]" identifier [ number_literal ])) ;) (expression_statement "*(undefined4 *)(iVar1 + 0xc) = 0;" (assignment_expression "*(undefined4 *)(iVar1 + 0xc) = 0" (pointer_expression "*(undefined4 *)(iVar1 + 0xc)" * (cast_expression "(undefined4 *)(iVar1 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0xc)" ( (binary_expression "iVar1 + 0xc" identifier + number_literal) )))) = number_literal) ;) (if_statement "if (((uVar14 & 0x200) != 0) && (-1 < local_2c)) {\n        close(local_2c);\n        uVar14 = param_1[0xb];\n      }" if (parenthesized_expression "(((uVar14 & 0x200) != 0) && (-1 < local_2c))" ( (binary_expression "((uVar14 & 0x200) != 0) && (-1 < local_2c)" (parenthesized_expression "((uVar14 & 0x200) != 0)" ( (binary_expression "(uVar14 & 0x200) != 0" (parenthesized_expression "(uVar14 & 0x200)" ( (binary_expression "uVar14 & 0x200" identifier & number_literal) )) != number_literal) )) && (parenthesized_expression "(-1 < local_2c)" ( (binary_expression "-1 < local_2c" number_literal < identifier) ))) )) (compound_statement "{\n        close(local_2c);\n        uVar14 = param_1[0xb];\n      }" { (expression_statement "close(local_2c);" (call_expression "close(local_2c)" identifier (argument_list "(local_2c)" ( identifier ))) ;) (expression_statement "uVar14 = param_1[0xb];" (assignment_expression "uVar14 = param_1[0xb]" identifier = (subscript_expression "param_1[0xb]" identifier [ number_literal ])) ;) })) }) (else_clause "else {\n      pDVar13 = *(DIR **)(iVar1 + 0xc);\n      uVar17 = *(ushort *)(iVar1 + 0x3e) | 1;\n      if ((bVar19) && (bVar2)) {\nLAB_0001980f:\n        piVar8 = __errno_location();\n        *(int *)(iVar1 + 0x20) = *piVar8;\n        goto LAB_0001982f;\n      }\n      *(ushort *)(iVar1 + 0x3e) = uVar17;\n      closedir(pDVar13);\n      uVar14 = param_1[0xb];\n    }" else (compound_statement "{\n      pDVar13 = *(DIR **)(iVar1 + 0xc);\n      uVar17 = *(ushort *)(iVar1 + 0x3e) | 1;\n      if ((bVar19) && (bVar2)) {\nLAB_0001980f:\n        piVar8 = __errno_location();\n        *(int *)(iVar1 + 0x20) = *piVar8;\n        goto LAB_0001982f;\n      }\n      *(ushort *)(iVar1 + 0x3e) = uVar17;\n      closedir(pDVar13);\n      uVar14 = param_1[0xb];\n    }" { (expression_statement "pDVar13 = *(DIR **)(iVar1 + 0xc);" (assignment_expression "pDVar13 = *(DIR **)(iVar1 + 0xc)" identifier = (pointer_expression "*(DIR **)(iVar1 + 0xc)" * (cast_expression "(DIR **)(iVar1 + 0xc)" ( (type_descriptor "DIR **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar1 + 0xc)" ( (binary_expression "iVar1 + 0xc" identifier + number_literal) ))))) ;) (expression_statement "uVar17 = *(ushort *)(iVar1 + 0x3e) | 1;" (assignment_expression "uVar17 = *(ushort *)(iVar1 + 0x3e) | 1" identifier = (binary_expression "*(ushort *)(iVar1 + 0x3e) | 1" (pointer_expression "*(ushort *)(iVar1 + 0x3e)" * (cast_expression "(ushort *)(iVar1 + 0x3e)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x3e)" ( (binary_expression "iVar1 + 0x3e" identifier + number_literal) )))) | number_literal)) ;) (if_statement "if ((bVar19) && (bVar2)) {\nLAB_0001980f:\n        piVar8 = __errno_location();\n        *(int *)(iVar1 + 0x20) = *piVar8;\n        goto LAB_0001982f;\n      }" if (parenthesized_expression "((bVar19) && (bVar2))" ( (binary_expression "(bVar19) && (bVar2)" (parenthesized_expression "(bVar19)" ( identifier )) && (parenthesized_expression "(bVar2)" ( identifier ))) )) (compound_statement "{\nLAB_0001980f:\n        piVar8 = __errno_location();\n        *(int *)(iVar1 + 0x20) = *piVar8;\n        goto LAB_0001982f;\n      }" { (labeled_statement "LAB_0001980f:\n        piVar8 = __errno_location();" statement_identifier : (expression_statement "piVar8 = __errno_location();" (assignment_expression "piVar8 = __errno_location()" identifier = (call_expression "__errno_location()" identifier (argument_list "()" ( )))) ;)) (expression_statement "*(int *)(iVar1 + 0x20) = *piVar8;" (assignment_expression "*(int *)(iVar1 + 0x20) = *piVar8" (pointer_expression "*(int *)(iVar1 + 0x20)" * (cast_expression "(int *)(iVar1 + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x20)" ( (binary_expression "iVar1 + 0x20" identifier + number_literal) )))) = (pointer_expression "*piVar8" * identifier)) ;) (goto_statement "goto LAB_0001982f;" goto statement_identifier ;) })) (expression_statement "*(ushort *)(iVar1 + 0x3e) = uVar17;" (assignment_expression "*(ushort *)(iVar1 + 0x3e) = uVar17" (pointer_expression "*(ushort *)(iVar1 + 0x3e)" * (cast_expression "(ushort *)(iVar1 + 0x3e)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x3e)" ( (binary_expression "iVar1 + 0x3e" identifier + number_literal) )))) = identifier) ;) (expression_statement "closedir(pDVar13);" (call_expression "closedir(pDVar13)" identifier (argument_list "(pDVar13)" ( identifier ))) ;) (expression_statement "uVar14 = param_1[0xb];" (assignment_expression "uVar14 = param_1[0xb]" identifier = (subscript_expression "param_1[0xb]" identifier [ number_literal ])) ;) }))) (expression_statement "bVar19 = false;" (assignment_expression "bVar19 = false" identifier = false) ;) (expression_statement "*(undefined4 *)(iVar1 + 0xc) = 0;" (assignment_expression "*(undefined4 *)(iVar1 + 0xc) = 0" (pointer_expression "*(undefined4 *)(iVar1 + 0xc)" * (cast_expression "(undefined4 *)(iVar1 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0xc)" ( (binary_expression "iVar1 + 0xc" identifier + number_literal) )))) = number_literal) ;) }) (else_clause "else {\n    iVar7 = dirfd(__dirp);\n    if (iVar7 < 0) {\n      closedir(*(DIR **)(iVar1 + 0xc));\n      *(undefined4 *)(iVar1 + 0xc) = 0;\n      goto joined_r0x00019b00;\n    }\n    if (param_1[10] == 0) {\n      local_34 = 100000;\n      uVar14 = param_1[0xb];\n      bVar19 = true;\n    }\n    else {\n      local_34 = 0xffffffff;\nLAB_000192cc:\n      bVar19 = true;\n      uVar14 = param_1[0xb];\n    }\n  }" else (compound_statement "{\n    iVar7 = dirfd(__dirp);\n    if (iVar7 < 0) {\n      closedir(*(DIR **)(iVar1 + 0xc));\n      *(undefined4 *)(iVar1 + 0xc) = 0;\n      goto joined_r0x00019b00;\n    }\n    if (param_1[10] == 0) {\n      local_34 = 100000;\n      uVar14 = param_1[0xb];\n      bVar19 = true;\n    }\n    else {\n      local_34 = 0xffffffff;\nLAB_000192cc:\n      bVar19 = true;\n      uVar14 = param_1[0xb];\n    }\n  }" { (expression_statement "iVar7 = dirfd(__dirp);" (assignment_expression "iVar7 = dirfd(__dirp)" identifier = (call_expression "dirfd(__dirp)" identifier (argument_list "(__dirp)" ( identifier )))) ;) (if_statement "if (iVar7 < 0) {\n      closedir(*(DIR **)(iVar1 + 0xc));\n      *(undefined4 *)(iVar1 + 0xc) = 0;\n      goto joined_r0x00019b00;\n    }" if (parenthesized_expression "(iVar7 < 0)" ( (binary_expression "iVar7 < 0" identifier < number_literal) )) (compound_statement "{\n      closedir(*(DIR **)(iVar1 + 0xc));\n      *(undefined4 *)(iVar1 + 0xc) = 0;\n      goto joined_r0x00019b00;\n    }" { (expression_statement "closedir(*(DIR **)(iVar1 + 0xc));" (call_expression "closedir(*(DIR **)(iVar1 + 0xc))" identifier (argument_list "(*(DIR **)(iVar1 + 0xc))" ( (pointer_expression "*(DIR **)(iVar1 + 0xc)" * (cast_expression "(DIR **)(iVar1 + 0xc)" ( (type_descriptor "DIR **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar1 + 0xc)" ( (binary_expression "iVar1 + 0xc" identifier + number_literal) )))) ))) ;) (expression_statement "*(undefined4 *)(iVar1 + 0xc) = 0;" (assignment_expression "*(undefined4 *)(iVar1 + 0xc) = 0" (pointer_expression "*(undefined4 *)(iVar1 + 0xc)" * (cast_expression "(undefined4 *)(iVar1 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0xc)" ( (binary_expression "iVar1 + 0xc" identifier + number_literal) )))) = number_literal) ;) (goto_statement "goto joined_r0x00019b00;" goto statement_identifier ;) })) (if_statement "if (param_1[10] == 0) {\n      local_34 = 100000;\n      uVar14 = param_1[0xb];\n      bVar19 = true;\n    }\n    else {\n      local_34 = 0xffffffff;\nLAB_000192cc:\n      bVar19 = true;\n      uVar14 = param_1[0xb];\n    }" if (parenthesized_expression "(param_1[10] == 0)" ( (binary_expression "param_1[10] == 0" (subscript_expression "param_1[10]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n      local_34 = 100000;\n      uVar14 = param_1[0xb];\n      bVar19 = true;\n    }" { (expression_statement "local_34 = 100000;" (assignment_expression "local_34 = 100000" identifier = number_literal) ;) (expression_statement "uVar14 = param_1[0xb];" (assignment_expression "uVar14 = param_1[0xb]" identifier = (subscript_expression "param_1[0xb]" identifier [ number_literal ])) ;) (expression_statement "bVar19 = true;" (assignment_expression "bVar19 = true" identifier = true) ;) }) (else_clause "else {\n      local_34 = 0xffffffff;\nLAB_000192cc:\n      bVar19 = true;\n      uVar14 = param_1[0xb];\n    }" else (compound_statement "{\n      local_34 = 0xffffffff;\nLAB_000192cc:\n      bVar19 = true;\n      uVar14 = param_1[0xb];\n    }" { (expression_statement "local_34 = 0xffffffff;" (assignment_expression "local_34 = 0xffffffff" identifier = number_literal) ;) (labeled_statement "LAB_000192cc:\n      bVar19 = true;" statement_identifier : (expression_statement "bVar19 = true;" (assignment_expression "bVar19 = true" identifier = true) ;)) (expression_statement "uVar14 = param_1[0xb];" (assignment_expression "uVar14 = param_1[0xb]" identifier = (subscript_expression "param_1[0xb]" identifier [ number_literal ])) ;) }))) }))) (labeled_statement "LAB_000192d4:\n  uVar18 = *(uint *)(iVar1 + 0x28);" statement_identifier : (expression_statement "uVar18 = *(uint *)(iVar1 + 0x28);" (assignment_expression "uVar18 = *(uint *)(iVar1 + 0x28)" identifier = (pointer_expression "*(uint *)(iVar1 + 0x28)" * (cast_expression "(uint *)(iVar1 + 0x28)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x28)" ( (binary_expression "iVar1 + 0x28" identifier + number_literal) ))))) ;)) (expression_statement "local_4c = uVar18;" (assignment_expression "local_4c = uVar18" identifier = identifier) ;) (expression_statement "local_30 = uVar18 - 1;" (assignment_expression "local_30 = uVar18 - 1" identifier = (binary_expression "uVar18 - 1" identifier - number_literal)) ;) (if_statement "if (*(char *)(*(int *)(iVar1 + 0x1c) + -1 + uVar18) != '/') {\n    local_4c = uVar18 + 1;\n    local_30 = uVar18;\n  }" if (parenthesized_expression "(*(char *)(*(int *)(iVar1 + 0x1c) + -1 + uVar18) != '/')" ( (binary_expression "*(char *)(*(int *)(iVar1 + 0x1c) + -1 + uVar18) != '/'" (pointer_expression "*(char *)(*(int *)(iVar1 + 0x1c) + -1 + uVar18)" * (cast_expression "(char *)(*(int *)(iVar1 + 0x1c) + -1 + uVar18)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar1 + 0x1c) + -1 + uVar18)" ( (binary_expression "*(int *)(iVar1 + 0x1c) + -1 + uVar18" (binary_expression "*(int *)(iVar1 + 0x1c) + -1" (pointer_expression "*(int *)(iVar1 + 0x1c)" * (cast_expression "(int *)(iVar1 + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x1c)" ( (binary_expression "iVar1 + 0x1c" identifier + number_literal) )))) + number_literal) + identifier) )))) != (char_literal "'/'" ' character ')) )) (compound_statement "{\n    local_4c = uVar18 + 1;\n    local_30 = uVar18;\n  }" { (expression_statement "local_4c = uVar18 + 1;" (assignment_expression "local_4c = uVar18 + 1" identifier = (binary_expression "uVar18 + 1" identifier + number_literal)) ;) (expression_statement "local_30 = uVar18;" (assignment_expression "local_30 = uVar18" identifier = identifier) ;) })) (expression_statement "local_38 = (undefined1 *)0x0;" (assignment_expression "local_38 = (undefined1 *)0x0" identifier = (cast_expression "(undefined1 *)0x0" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if ((uVar14 & 4) != 0) {\n    local_38 = (undefined1 *)(local_30 + param_1[5]) + 1;\n    *(undefined1 *)(local_30 + param_1[5]) = 0x2f;\n  }" if (parenthesized_expression "((uVar14 & 4) != 0)" ( (binary_expression "(uVar14 & 4) != 0" (parenthesized_expression "(uVar14 & 4)" ( (binary_expression "uVar14 & 4" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n    local_38 = (undefined1 *)(local_30 + param_1[5]) + 1;\n    *(undefined1 *)(local_30 + param_1[5]) = 0x2f;\n  }" { (expression_statement "local_38 = (undefined1 *)(local_30 + param_1[5]) + 1;" (assignment_expression "local_38 = (undefined1 *)(local_30 + param_1[5]) + 1" identifier = (binary_expression "(undefined1 *)(local_30 + param_1[5]) + 1" (cast_expression "(undefined1 *)(local_30 + param_1[5])" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_30 + param_1[5])" ( (binary_expression "local_30 + param_1[5]" identifier + (subscript_expression "param_1[5]" identifier [ number_literal ])) ))) + number_literal)) ;) (expression_statement "*(undefined1 *)(local_30 + param_1[5]) = 0x2f;" (assignment_expression "*(undefined1 *)(local_30 + param_1[5]) = 0x2f" (pointer_expression "*(undefined1 *)(local_30 + param_1[5])" * (cast_expression "(undefined1 *)(local_30 + param_1[5])" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_30 + param_1[5])" ( (binary_expression "local_30 + param_1[5]" identifier + (subscript_expression "param_1[5]" identifier [ number_literal ])) )))) = number_literal) ;) })) (expression_statement "local_44 = param_1[8] - local_4c;" (assignment_expression "local_44 = param_1[8] - local_4c" identifier = (binary_expression "param_1[8] - local_4c" (subscript_expression "param_1[8]" identifier [ number_literal ]) - identifier)) ;) (expression_statement "bVar2 = false;" (assignment_expression "bVar2 = false" identifier = false) ;) (expression_statement "local_1f = '\0';" (assignment_expression "local_1f = '\0'" identifier = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "iVar7 = *(int *)(iVar1 + 0x30);" (assignment_expression "iVar7 = *(int *)(iVar1 + 0x30)" identifier = (pointer_expression "*(int *)(iVar1 + 0x30)" * (cast_expression "(int *)(iVar1 + 0x30)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x30)" ( (binary_expression "iVar1 + 0x30" identifier + number_literal) ))))) ;) (expression_statement "local_54 = (void *)0x0;" (assignment_expression "local_54 = (void *)0x0" identifier = (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_5c = 0;" (assignment_expression "local_5c = 0" identifier = number_literal) ;) (expression_statement "local_48 = (void *)0x0;" (assignment_expression "local_48 = (void *)0x0" identifier = (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (labeled_statement "LAB_000193a8:\n  do {\n    do {\n      pDVar13 = *(DIR **)(iVar1 + 0xc);\n      if (pDVar13 == (DIR *)0x0) goto LAB_00019641;\n      piVar8 = __errno_location();\n      *piVar8 = 0;\n      pdVar9 = readdir64(pDVar13);\n      if (pdVar9 == (dirent64 *)0x0) {\n        if (*piVar8 != 0) {\n          *(int *)(iVar1 + 0x20) = *piVar8;\n          *(ushort *)(iVar1 + 0x3c) =\n               (-(ushort)(__dirp == (DIR *)0x0 && local_5c == 0) & 0xfffd) + 7;\n        }\n        if (*(DIR **)(iVar1 + 0xc) != (DIR *)0x0) {\n          closedir(*(DIR **)(iVar1 + 0xc));\n          *(undefined4 *)(iVar1 + 0xc) = 0;\n        }\n        goto LAB_00019641;\n      }\n    } while ((((*(byte *)(param_1 + 0xb) & 0x20) == 0) && (pdVar9->d_name[0] == '.')) &&\n            ((pdVar9->d_name[1] == '\0' || (*(short *)(pdVar9->d_name + 1) == 0x2e))));\n    sVar10 = strlen(pdVar9->d_name);\n    pvVar11 = (void *)FUN_000188d0();\n    if (pvVar11 == (void *)0x0) {\nLAB_00019910:\n      iVar7 = *piVar8;\n      free(pvVar11);\n      FUN_00018960();\n      closedir(*(DIR **)(iVar1 + 0xc));\n      *(undefined4 *)(iVar1 + 0xc) = 0;\n      *(undefined2 *)(iVar1 + 0x3c) = 7;\n      param_1[0xb] = param_1[0xb] | 0x4000;\n      *piVar8 = iVar7;\n      return (void *)0x0;\n    }\n    if (local_44 <= sVar10) {\n      iVar15 = param_1[5];\n      cVar5 = FUN_00018cc0();\n      if (cVar5 == '\0') goto LAB_00019910;\n      puVar4 = local_38;\n      if ((param_1[5] != iVar15) &&\n         (local_1f = cVar5, puVar4 = (undefined1 *)(param_1[5] + local_4c),\n         (*(byte *)(param_1 + 0xb) & 4) == 0)) {\n        puVar4 = local_38;\n      }\n      local_38 = puVar4;\n      local_44 = param_1[8] - local_4c;\n    }\n    if (CARRY4(sVar10,local_4c)) {\n      free(pvVar11);\n      FUN_00018960();\n      closedir(*(DIR **)(iVar1 + 0xc));\n      *(undefined4 *)(iVar1 + 0xc) = 0;\n      *(undefined2 *)(iVar1 + 0x3c) = 7;\n      param_1[0xb] = param_1[0xb] | 0x4000;\n      *piVar8 = 0x24;\n      return (void *)0x0;\n    }\n    uVar12 = *(undefined4 *)((int)&pdVar9->d_ino + 4);\n    *(int *)((int)pvVar11 + 0x30) = iVar7 + 1;\n    iVar15 = *param_1;\n    *(size_t *)((int)pvVar11 + 0x28) = sVar10 + local_4c;\n    *(int *)((int)pvVar11 + 4) = iVar15;\n    _Var3 = pdVar9->d_ino;\n    *(undefined4 *)((int)pvVar11 + 0xa0) = uVar12;\n    *(int *)((int)pvVar11 + 0x9c) = (int)_Var3;\n    uVar14 = param_1[0xb];\n    if ((uVar14 & 4) == 0) {\n      *(void **)((int)pvVar11 + 0x18) = (void *)((int)pvVar11 + 0xa4);\n    }\n    else {\n      *(undefined4 *)((int)pvVar11 + 0x18) = *(undefined4 *)((int)pvVar11 + 0x1c);\n      memmove(local_38,(void *)((int)pvVar11 + 0xa4),*(int *)((int)pvVar11 + 0x34) + 1);\n      uVar14 = param_1[0xb];\n    }\n    if ((param_1[10] == 0) || ((uVar14 & 0x400) != 0)) {\n      uVar18 = pdVar9->d_type - 1;\n      if (((uVar14 & 0x18) == 0x18) && ((pdVar9->d_type & 0xfb) != 0)) {\n        *(undefined2 *)((int)pvVar11 + 0x3c) = 0xb;\n        if (uVar18 < 0xc) {\n          *(undefined4 *)((int)pvVar11 + 0x54) = *(undefined4 *)(&DAT_0001e180 + uVar18 * 4);\n          uVar12 = 1;\n        }\n        else {\n          *(undefined4 *)((int)pvVar11 + 0x54) = 0;\n          uVar12 = 1;\n        }\n      }\n      else {\n        *(undefined2 *)((int)pvVar11 + 0x3c) = 0xb;\n        if (uVar18 < 0xc) {\n          *(undefined4 *)((int)pvVar11 + 0x54) = *(undefined4 *)(&DAT_0001e180 + uVar18 * 4);\n          uVar12 = 2;\n        }\n        else {\n          *(undefined4 *)((int)pvVar11 + 0x54) = 0;\n          uVar12 = 2;\n        }\n      }\n      *(undefined4 *)((int)pvVar11 + 0x70) = uVar12;\n      *(undefined4 *)((int)pvVar11 + 0x74) = 0;\n    }\n    else {\n      uVar6 = FUN_00018640();\n      *(undefined2 *)((int)pvVar11 + 0x3c) = uVar6;\n    }\n    *(undefined4 *)((int)pvVar11 + 8) = 0;\n    pvVar16 = pvVar11;\n    if (local_48 != (void *)0x0) {\n      *(void **)((int)local_54 + 8) = pvVar11;\n      pvVar16 = local_48;\n    }\n    local_48 = pvVar16;\n    local_54 = pvVar11;\n    if (local_5c == 10000) {\n      if ((param_1[10] != 0) ||\n         (((iVar15 = FUN_00018a00(), iVar15 != 0x6969 && (iVar15 != 0x1021994)) &&\n          (bVar2 = true, iVar15 != -0xacb2be)))) {\n        local_5c = 0x2711;\n        goto LAB_000193a8;\n      }\n      bVar2 = false;\n    }\n    local_5c = local_5c + 1;\n  } while (local_5c < local_34);" statement_identifier : (do_statement "do {\n    do {\n      pDVar13 = *(DIR **)(iVar1 + 0xc);\n      if (pDVar13 == (DIR *)0x0) goto LAB_00019641;\n      piVar8 = __errno_location();\n      *piVar8 = 0;\n      pdVar9 = readdir64(pDVar13);\n      if (pdVar9 == (dirent64 *)0x0) {\n        if (*piVar8 != 0) {\n          *(int *)(iVar1 + 0x20) = *piVar8;\n          *(ushort *)(iVar1 + 0x3c) =\n               (-(ushort)(__dirp == (DIR *)0x0 && local_5c == 0) & 0xfffd) + 7;\n        }\n        if (*(DIR **)(iVar1 + 0xc) != (DIR *)0x0) {\n          closedir(*(DIR **)(iVar1 + 0xc));\n          *(undefined4 *)(iVar1 + 0xc) = 0;\n        }\n        goto LAB_00019641;\n      }\n    } while ((((*(byte *)(param_1 + 0xb) & 0x20) == 0) && (pdVar9->d_name[0] == '.')) &&\n            ((pdVar9->d_name[1] == '\0' || (*(short *)(pdVar9->d_name + 1) == 0x2e))));\n    sVar10 = strlen(pdVar9->d_name);\n    pvVar11 = (void *)FUN_000188d0();\n    if (pvVar11 == (void *)0x0) {\nLAB_00019910:\n      iVar7 = *piVar8;\n      free(pvVar11);\n      FUN_00018960();\n      closedir(*(DIR **)(iVar1 + 0xc));\n      *(undefined4 *)(iVar1 + 0xc) = 0;\n      *(undefined2 *)(iVar1 + 0x3c) = 7;\n      param_1[0xb] = param_1[0xb] | 0x4000;\n      *piVar8 = iVar7;\n      return (void *)0x0;\n    }\n    if (local_44 <= sVar10) {\n      iVar15 = param_1[5];\n      cVar5 = FUN_00018cc0();\n      if (cVar5 == '\0') goto LAB_00019910;\n      puVar4 = local_38;\n      if ((param_1[5] != iVar15) &&\n         (local_1f = cVar5, puVar4 = (undefined1 *)(param_1[5] + local_4c),\n         (*(byte *)(param_1 + 0xb) & 4) == 0)) {\n        puVar4 = local_38;\n      }\n      local_38 = puVar4;\n      local_44 = param_1[8] - local_4c;\n    }\n    if (CARRY4(sVar10,local_4c)) {\n      free(pvVar11);\n      FUN_00018960();\n      closedir(*(DIR **)(iVar1 + 0xc));\n      *(undefined4 *)(iVar1 + 0xc) = 0;\n      *(undefined2 *)(iVar1 + 0x3c) = 7;\n      param_1[0xb] = param_1[0xb] | 0x4000;\n      *piVar8 = 0x24;\n      return (void *)0x0;\n    }\n    uVar12 = *(undefined4 *)((int)&pdVar9->d_ino + 4);\n    *(int *)((int)pvVar11 + 0x30) = iVar7 + 1;\n    iVar15 = *param_1;\n    *(size_t *)((int)pvVar11 + 0x28) = sVar10 + local_4c;\n    *(int *)((int)pvVar11 + 4) = iVar15;\n    _Var3 = pdVar9->d_ino;\n    *(undefined4 *)((int)pvVar11 + 0xa0) = uVar12;\n    *(int *)((int)pvVar11 + 0x9c) = (int)_Var3;\n    uVar14 = param_1[0xb];\n    if ((uVar14 & 4) == 0) {\n      *(void **)((int)pvVar11 + 0x18) = (void *)((int)pvVar11 + 0xa4);\n    }\n    else {\n      *(undefined4 *)((int)pvVar11 + 0x18) = *(undefined4 *)((int)pvVar11 + 0x1c);\n      memmove(local_38,(void *)((int)pvVar11 + 0xa4),*(int *)((int)pvVar11 + 0x34) + 1);\n      uVar14 = param_1[0xb];\n    }\n    if ((param_1[10] == 0) || ((uVar14 & 0x400) != 0)) {\n      uVar18 = pdVar9->d_type - 1;\n      if (((uVar14 & 0x18) == 0x18) && ((pdVar9->d_type & 0xfb) != 0)) {\n        *(undefined2 *)((int)pvVar11 + 0x3c) = 0xb;\n        if (uVar18 < 0xc) {\n          *(undefined4 *)((int)pvVar11 + 0x54) = *(undefined4 *)(&DAT_0001e180 + uVar18 * 4);\n          uVar12 = 1;\n        }\n        else {\n          *(undefined4 *)((int)pvVar11 + 0x54) = 0;\n          uVar12 = 1;\n        }\n      }\n      else {\n        *(undefined2 *)((int)pvVar11 + 0x3c) = 0xb;\n        if (uVar18 < 0xc) {\n          *(undefined4 *)((int)pvVar11 + 0x54) = *(undefined4 *)(&DAT_0001e180 + uVar18 * 4);\n          uVar12 = 2;\n        }\n        else {\n          *(undefined4 *)((int)pvVar11 + 0x54) = 0;\n          uVar12 = 2;\n        }\n      }\n      *(undefined4 *)((int)pvVar11 + 0x70) = uVar12;\n      *(undefined4 *)((int)pvVar11 + 0x74) = 0;\n    }\n    else {\n      uVar6 = FUN_00018640();\n      *(undefined2 *)((int)pvVar11 + 0x3c) = uVar6;\n    }\n    *(undefined4 *)((int)pvVar11 + 8) = 0;\n    pvVar16 = pvVar11;\n    if (local_48 != (void *)0x0) {\n      *(void **)((int)local_54 + 8) = pvVar11;\n      pvVar16 = local_48;\n    }\n    local_48 = pvVar16;\n    local_54 = pvVar11;\n    if (local_5c == 10000) {\n      if ((param_1[10] != 0) ||\n         (((iVar15 = FUN_00018a00(), iVar15 != 0x6969 && (iVar15 != 0x1021994)) &&\n          (bVar2 = true, iVar15 != -0xacb2be)))) {\n        local_5c = 0x2711;\n        goto LAB_000193a8;\n      }\n      bVar2 = false;\n    }\n    local_5c = local_5c + 1;\n  } while (local_5c < local_34);" do (compound_statement "{\n    do {\n      pDVar13 = *(DIR **)(iVar1 + 0xc);\n      if (pDVar13 == (DIR *)0x0) goto LAB_00019641;\n      piVar8 = __errno_location();\n      *piVar8 = 0;\n      pdVar9 = readdir64(pDVar13);\n      if (pdVar9 == (dirent64 *)0x0) {\n        if (*piVar8 != 0) {\n          *(int *)(iVar1 + 0x20) = *piVar8;\n          *(ushort *)(iVar1 + 0x3c) =\n               (-(ushort)(__dirp == (DIR *)0x0 && local_5c == 0) & 0xfffd) + 7;\n        }\n        if (*(DIR **)(iVar1 + 0xc) != (DIR *)0x0) {\n          closedir(*(DIR **)(iVar1 + 0xc));\n          *(undefined4 *)(iVar1 + 0xc) = 0;\n        }\n        goto LAB_00019641;\n      }\n    } while ((((*(byte *)(param_1 + 0xb) & 0x20) == 0) && (pdVar9->d_name[0] == '.')) &&\n            ((pdVar9->d_name[1] == '\0' || (*(short *)(pdVar9->d_name + 1) == 0x2e))));\n    sVar10 = strlen(pdVar9->d_name);\n    pvVar11 = (void *)FUN_000188d0();\n    if (pvVar11 == (void *)0x0) {\nLAB_00019910:\n      iVar7 = *piVar8;\n      free(pvVar11);\n      FUN_00018960();\n      closedir(*(DIR **)(iVar1 + 0xc));\n      *(undefined4 *)(iVar1 + 0xc) = 0;\n      *(undefined2 *)(iVar1 + 0x3c) = 7;\n      param_1[0xb] = param_1[0xb] | 0x4000;\n      *piVar8 = iVar7;\n      return (void *)0x0;\n    }\n    if (local_44 <= sVar10) {\n      iVar15 = param_1[5];\n      cVar5 = FUN_00018cc0();\n      if (cVar5 == '\0') goto LAB_00019910;\n      puVar4 = local_38;\n      if ((param_1[5] != iVar15) &&\n         (local_1f = cVar5, puVar4 = (undefined1 *)(param_1[5] + local_4c),\n         (*(byte *)(param_1 + 0xb) & 4) == 0)) {\n        puVar4 = local_38;\n      }\n      local_38 = puVar4;\n      local_44 = param_1[8] - local_4c;\n    }\n    if (CARRY4(sVar10,local_4c)) {\n      free(pvVar11);\n      FUN_00018960();\n      closedir(*(DIR **)(iVar1 + 0xc));\n      *(undefined4 *)(iVar1 + 0xc) = 0;\n      *(undefined2 *)(iVar1 + 0x3c) = 7;\n      param_1[0xb] = param_1[0xb] | 0x4000;\n      *piVar8 = 0x24;\n      return (void *)0x0;\n    }\n    uVar12 = *(undefined4 *)((int)&pdVar9->d_ino + 4);\n    *(int *)((int)pvVar11 + 0x30) = iVar7 + 1;\n    iVar15 = *param_1;\n    *(size_t *)((int)pvVar11 + 0x28) = sVar10 + local_4c;\n    *(int *)((int)pvVar11 + 4) = iVar15;\n    _Var3 = pdVar9->d_ino;\n    *(undefined4 *)((int)pvVar11 + 0xa0) = uVar12;\n    *(int *)((int)pvVar11 + 0x9c) = (int)_Var3;\n    uVar14 = param_1[0xb];\n    if ((uVar14 & 4) == 0) {\n      *(void **)((int)pvVar11 + 0x18) = (void *)((int)pvVar11 + 0xa4);\n    }\n    else {\n      *(undefined4 *)((int)pvVar11 + 0x18) = *(undefined4 *)((int)pvVar11 + 0x1c);\n      memmove(local_38,(void *)((int)pvVar11 + 0xa4),*(int *)((int)pvVar11 + 0x34) + 1);\n      uVar14 = param_1[0xb];\n    }\n    if ((param_1[10] == 0) || ((uVar14 & 0x400) != 0)) {\n      uVar18 = pdVar9->d_type - 1;\n      if (((uVar14 & 0x18) == 0x18) && ((pdVar9->d_type & 0xfb) != 0)) {\n        *(undefined2 *)((int)pvVar11 + 0x3c) = 0xb;\n        if (uVar18 < 0xc) {\n          *(undefined4 *)((int)pvVar11 + 0x54) = *(undefined4 *)(&DAT_0001e180 + uVar18 * 4);\n          uVar12 = 1;\n        }\n        else {\n          *(undefined4 *)((int)pvVar11 + 0x54) = 0;\n          uVar12 = 1;\n        }\n      }\n      else {\n        *(undefined2 *)((int)pvVar11 + 0x3c) = 0xb;\n        if (uVar18 < 0xc) {\n          *(undefined4 *)((int)pvVar11 + 0x54) = *(undefined4 *)(&DAT_0001e180 + uVar18 * 4);\n          uVar12 = 2;\n        }\n        else {\n          *(undefined4 *)((int)pvVar11 + 0x54) = 0;\n          uVar12 = 2;\n        }\n      }\n      *(undefined4 *)((int)pvVar11 + 0x70) = uVar12;\n      *(undefined4 *)((int)pvVar11 + 0x74) = 0;\n    }\n    else {\n      uVar6 = FUN_00018640();\n      *(undefined2 *)((int)pvVar11 + 0x3c) = uVar6;\n    }\n    *(undefined4 *)((int)pvVar11 + 8) = 0;\n    pvVar16 = pvVar11;\n    if (local_48 != (void *)0x0) {\n      *(void **)((int)local_54 + 8) = pvVar11;\n      pvVar16 = local_48;\n    }\n    local_48 = pvVar16;\n    local_54 = pvVar11;\n    if (local_5c == 10000) {\n      if ((param_1[10] != 0) ||\n         (((iVar15 = FUN_00018a00(), iVar15 != 0x6969 && (iVar15 != 0x1021994)) &&\n          (bVar2 = true, iVar15 != -0xacb2be)))) {\n        local_5c = 0x2711;\n        goto LAB_000193a8;\n      }\n      bVar2 = false;\n    }\n    local_5c = local_5c + 1;\n  }" { (do_statement "do {\n      pDVar13 = *(DIR **)(iVar1 + 0xc);\n      if (pDVar13 == (DIR *)0x0) goto LAB_00019641;\n      piVar8 = __errno_location();\n      *piVar8 = 0;\n      pdVar9 = readdir64(pDVar13);\n      if (pdVar9 == (dirent64 *)0x0) {\n        if (*piVar8 != 0) {\n          *(int *)(iVar1 + 0x20) = *piVar8;\n          *(ushort *)(iVar1 + 0x3c) =\n               (-(ushort)(__dirp == (DIR *)0x0 && local_5c == 0) & 0xfffd) + 7;\n        }\n        if (*(DIR **)(iVar1 + 0xc) != (DIR *)0x0) {\n          closedir(*(DIR **)(iVar1 + 0xc));\n          *(undefined4 *)(iVar1 + 0xc) = 0;\n        }\n        goto LAB_00019641;\n      }\n    } while ((((*(byte *)(param_1 + 0xb) & 0x20) == 0) && (pdVar9->d_name[0] == '.')) &&\n            ((pdVar9->d_name[1] == '\0' || (*(short *)(pdVar9->d_name + 1) == 0x2e))));" do (compound_statement "{\n      pDVar13 = *(DIR **)(iVar1 + 0xc);\n      if (pDVar13 == (DIR *)0x0) goto LAB_00019641;\n      piVar8 = __errno_location();\n      *piVar8 = 0;\n      pdVar9 = readdir64(pDVar13);\n      if (pdVar9 == (dirent64 *)0x0) {\n        if (*piVar8 != 0) {\n          *(int *)(iVar1 + 0x20) = *piVar8;\n          *(ushort *)(iVar1 + 0x3c) =\n               (-(ushort)(__dirp == (DIR *)0x0 && local_5c == 0) & 0xfffd) + 7;\n        }\n        if (*(DIR **)(iVar1 + 0xc) != (DIR *)0x0) {\n          closedir(*(DIR **)(iVar1 + 0xc));\n          *(undefined4 *)(iVar1 + 0xc) = 0;\n        }\n        goto LAB_00019641;\n      }\n    }" { (expression_statement "pDVar13 = *(DIR **)(iVar1 + 0xc);" (assignment_expression "pDVar13 = *(DIR **)(iVar1 + 0xc)" identifier = (pointer_expression "*(DIR **)(iVar1 + 0xc)" * (cast_expression "(DIR **)(iVar1 + 0xc)" ( (type_descriptor "DIR **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar1 + 0xc)" ( (binary_expression "iVar1 + 0xc" identifier + number_literal) ))))) ;) (if_statement "if (pDVar13 == (DIR *)0x0) goto LAB_00019641;" if (parenthesized_expression "(pDVar13 == (DIR *)0x0)" ( (binary_expression "pDVar13 == (DIR *)0x0" identifier == (cast_expression "(DIR *)0x0" ( (type_descriptor "DIR *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00019641;" goto statement_identifier ;)) (expression_statement "piVar8 = __errno_location();" (assignment_expression "piVar8 = __errno_location()" identifier = (call_expression "__errno_location()" identifier (argument_list "()" ( )))) ;) (expression_statement "*piVar8 = 0;" (assignment_expression "*piVar8 = 0" (pointer_expression "*piVar8" * identifier) = number_literal) ;) (expression_statement "pdVar9 = readdir64(pDVar13);" (assignment_expression "pdVar9 = readdir64(pDVar13)" identifier = (call_expression "readdir64(pDVar13)" identifier (argument_list "(pDVar13)" ( identifier )))) ;) (if_statement "if (pdVar9 == (dirent64 *)0x0) {\n        if (*piVar8 != 0) {\n          *(int *)(iVar1 + 0x20) = *piVar8;\n          *(ushort *)(iVar1 + 0x3c) =\n               (-(ushort)(__dirp == (DIR *)0x0 && local_5c == 0) & 0xfffd) + 7;\n        }\n        if (*(DIR **)(iVar1 + 0xc) != (DIR *)0x0) {\n          closedir(*(DIR **)(iVar1 + 0xc));\n          *(undefined4 *)(iVar1 + 0xc) = 0;\n        }\n        goto LAB_00019641;\n      }" if (parenthesized_expression "(pdVar9 == (dirent64 *)0x0)" ( (binary_expression "pdVar9 == (dirent64 *)0x0" identifier == (cast_expression "(dirent64 *)0x0" ( (type_descriptor "dirent64 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        if (*piVar8 != 0) {\n          *(int *)(iVar1 + 0x20) = *piVar8;\n          *(ushort *)(iVar1 + 0x3c) =\n               (-(ushort)(__dirp == (DIR *)0x0 && local_5c == 0) & 0xfffd) + 7;\n        }\n        if (*(DIR **)(iVar1 + 0xc) != (DIR *)0x0) {\n          closedir(*(DIR **)(iVar1 + 0xc));\n          *(undefined4 *)(iVar1 + 0xc) = 0;\n        }\n        goto LAB_00019641;\n      }" { (if_statement "if (*piVar8 != 0) {\n          *(int *)(iVar1 + 0x20) = *piVar8;\n          *(ushort *)(iVar1 + 0x3c) =\n               (-(ushort)(__dirp == (DIR *)0x0 && local_5c == 0) & 0xfffd) + 7;\n        }" if (parenthesized_expression "(*piVar8 != 0)" ( (binary_expression "*piVar8 != 0" (pointer_expression "*piVar8" * identifier) != number_literal) )) (compound_statement "{\n          *(int *)(iVar1 + 0x20) = *piVar8;\n          *(ushort *)(iVar1 + 0x3c) =\n               (-(ushort)(__dirp == (DIR *)0x0 && local_5c == 0) & 0xfffd) + 7;\n        }" { (expression_statement "*(int *)(iVar1 + 0x20) = *piVar8;" (assignment_expression "*(int *)(iVar1 + 0x20) = *piVar8" (pointer_expression "*(int *)(iVar1 + 0x20)" * (cast_expression "(int *)(iVar1 + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x20)" ( (binary_expression "iVar1 + 0x20" identifier + number_literal) )))) = (pointer_expression "*piVar8" * identifier)) ;) (expression_statement "*(ushort *)(iVar1 + 0x3c) =\n               (-(ushort)(__dirp == (DIR *)0x0 && local_5c == 0) & 0xfffd) + 7;" (assignment_expression "*(ushort *)(iVar1 + 0x3c) =\n               (-(ushort)(__dirp == (DIR *)0x0 && local_5c == 0) & 0xfffd) + 7" (pointer_expression "*(ushort *)(iVar1 + 0x3c)" * (cast_expression "(ushort *)(iVar1 + 0x3c)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x3c)" ( (binary_expression "iVar1 + 0x3c" identifier + number_literal) )))) = (binary_expression "(-(ushort)(__dirp == (DIR *)0x0 && local_5c == 0) & 0xfffd) + 7" (parenthesized_expression "(-(ushort)(__dirp == (DIR *)0x0 && local_5c == 0) & 0xfffd)" ( (binary_expression "-(ushort)(__dirp == (DIR *)0x0 && local_5c == 0) & 0xfffd" (unary_expression "-(ushort)(__dirp == (DIR *)0x0 && local_5c == 0)" - (call_expression "(ushort)(__dirp == (DIR *)0x0 && local_5c == 0)" (parenthesized_expression "(ushort)" ( identifier )) (argument_list "(__dirp == (DIR *)0x0 && local_5c == 0)" ( (binary_expression "__dirp == (DIR *)0x0 && local_5c == 0" (binary_expression "__dirp == (DIR *)0x0" identifier == (cast_expression "(DIR *)0x0" ( (type_descriptor "DIR *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) && (binary_expression "local_5c == 0" identifier == number_literal)) )))) & number_literal) )) + number_literal)) ;) })) (if_statement "if (*(DIR **)(iVar1 + 0xc) != (DIR *)0x0) {\n          closedir(*(DIR **)(iVar1 + 0xc));\n          *(undefined4 *)(iVar1 + 0xc) = 0;\n        }" if (parenthesized_expression "(*(DIR **)(iVar1 + 0xc) != (DIR *)0x0)" ( (binary_expression "*(DIR **)(iVar1 + 0xc) != (DIR *)0x0" (pointer_expression "*(DIR **)(iVar1 + 0xc)" * (cast_expression "(DIR **)(iVar1 + 0xc)" ( (type_descriptor "DIR **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar1 + 0xc)" ( (binary_expression "iVar1 + 0xc" identifier + number_literal) )))) != (cast_expression "(DIR *)0x0" ( (type_descriptor "DIR *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          closedir(*(DIR **)(iVar1 + 0xc));\n          *(undefined4 *)(iVar1 + 0xc) = 0;\n        }" { (expression_statement "closedir(*(DIR **)(iVar1 + 0xc));" (call_expression "closedir(*(DIR **)(iVar1 + 0xc))" identifier (argument_list "(*(DIR **)(iVar1 + 0xc))" ( (pointer_expression "*(DIR **)(iVar1 + 0xc)" * (cast_expression "(DIR **)(iVar1 + 0xc)" ( (type_descriptor "DIR **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar1 + 0xc)" ( (binary_expression "iVar1 + 0xc" identifier + number_literal) )))) ))) ;) (expression_statement "*(undefined4 *)(iVar1 + 0xc) = 0;" (assignment_expression "*(undefined4 *)(iVar1 + 0xc) = 0" (pointer_expression "*(undefined4 *)(iVar1 + 0xc)" * (cast_expression "(undefined4 *)(iVar1 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0xc)" ( (binary_expression "iVar1 + 0xc" identifier + number_literal) )))) = number_literal) ;) })) (goto_statement "goto LAB_00019641;" goto statement_identifier ;) })) }) while (parenthesized_expression "((((*(byte *)(param_1 + 0xb) & 0x20) == 0) && (pdVar9->d_name[0] == '.')) &&\n            ((pdVar9->d_name[1] == '\0' || (*(short *)(pdVar9->d_name + 1) == 0x2e))))" ( (binary_expression "(((*(byte *)(param_1 + 0xb) & 0x20) == 0) && (pdVar9->d_name[0] == '.')) &&\n            ((pdVar9->d_name[1] == '\0' || (*(short *)(pdVar9->d_name + 1) == 0x2e)))" (parenthesized_expression "(((*(byte *)(param_1 + 0xb) & 0x20) == 0) && (pdVar9->d_name[0] == '.'))" ( (binary_expression "((*(byte *)(param_1 + 0xb) & 0x20) == 0) && (pdVar9->d_name[0] == '.')" (parenthesized_expression "((*(byte *)(param_1 + 0xb) & 0x20) == 0)" ( (binary_expression "(*(byte *)(param_1 + 0xb) & 0x20) == 0" (parenthesized_expression "(*(byte *)(param_1 + 0xb) & 0x20)" ( (binary_expression "*(byte *)(param_1 + 0xb) & 0x20" (pointer_expression "*(byte *)(param_1 + 0xb)" * (cast_expression "(byte *)(param_1 + 0xb)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xb)" ( (binary_expression "param_1 + 0xb" identifier + number_literal) )))) & number_literal) )) == number_literal) )) && (parenthesized_expression "(pdVar9->d_name[0] == '.')" ( (binary_expression "pdVar9->d_name[0] == '.'" (subscript_expression "pdVar9->d_name[0]" (field_expression "pdVar9->d_name" identifier -> field_identifier) [ number_literal ]) == (char_literal "'.'" ' character ')) ))) )) && (parenthesized_expression "((pdVar9->d_name[1] == '\0' || (*(short *)(pdVar9->d_name + 1) == 0x2e)))" ( (parenthesized_expression "(pdVar9->d_name[1] == '\0' || (*(short *)(pdVar9->d_name + 1) == 0x2e))" ( (binary_expression "pdVar9->d_name[1] == '\0' || (*(short *)(pdVar9->d_name + 1) == 0x2e)" (binary_expression "pdVar9->d_name[1] == '\0'" (subscript_expression "pdVar9->d_name[1]" (field_expression "pdVar9->d_name" identifier -> field_identifier) [ number_literal ]) == (char_literal "'\0'" ' escape_sequence ')) || (parenthesized_expression "(*(short *)(pdVar9->d_name + 1) == 0x2e)" ( (binary_expression "*(short *)(pdVar9->d_name + 1) == 0x2e" (pointer_expression "*(short *)(pdVar9->d_name + 1)" * (cast_expression "(short *)(pdVar9->d_name + 1)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pdVar9->d_name + 1)" ( (binary_expression "pdVar9->d_name + 1" (field_expression "pdVar9->d_name" identifier -> field_identifier) + number_literal) )))) == number_literal) ))) )) ))) )) ;) (expression_statement "sVar10 = strlen(pdVar9->d_name);" (assignment_expression "sVar10 = strlen(pdVar9->d_name)" identifier = (call_expression "strlen(pdVar9->d_name)" identifier (argument_list "(pdVar9->d_name)" ( (field_expression "pdVar9->d_name" identifier -> field_identifier) )))) ;) (expression_statement "pvVar11 = (void *)FUN_000188d0();" (assignment_expression "pvVar11 = (void *)FUN_000188d0()" identifier = (cast_expression "(void *)FUN_000188d0()" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_000188d0()" identifier (argument_list "()" ( ))))) ;) (if_statement "if (pvVar11 == (void *)0x0) {\nLAB_00019910:\n      iVar7 = *piVar8;\n      free(pvVar11);\n      FUN_00018960();\n      closedir(*(DIR **)(iVar1 + 0xc));\n      *(undefined4 *)(iVar1 + 0xc) = 0;\n      *(undefined2 *)(iVar1 + 0x3c) = 7;\n      param_1[0xb] = param_1[0xb] | 0x4000;\n      *piVar8 = iVar7;\n      return (void *)0x0;\n    }" if (parenthesized_expression "(pvVar11 == (void *)0x0)" ( (binary_expression "pvVar11 == (void *)0x0" identifier == (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nLAB_00019910:\n      iVar7 = *piVar8;\n      free(pvVar11);\n      FUN_00018960();\n      closedir(*(DIR **)(iVar1 + 0xc));\n      *(undefined4 *)(iVar1 + 0xc) = 0;\n      *(undefined2 *)(iVar1 + 0x3c) = 7;\n      param_1[0xb] = param_1[0xb] | 0x4000;\n      *piVar8 = iVar7;\n      return (void *)0x0;\n    }" { (labeled_statement "LAB_00019910:\n      iVar7 = *piVar8;" statement_identifier : (expression_statement "iVar7 = *piVar8;" (assignment_expression "iVar7 = *piVar8" identifier = (pointer_expression "*piVar8" * identifier)) ;)) (expression_statement "free(pvVar11);" (call_expression "free(pvVar11)" identifier (argument_list "(pvVar11)" ( identifier ))) ;) (expression_statement "FUN_00018960();" (call_expression "FUN_00018960()" identifier (argument_list "()" ( ))) ;) (expression_statement "closedir(*(DIR **)(iVar1 + 0xc));" (call_expression "closedir(*(DIR **)(iVar1 + 0xc))" identifier (argument_list "(*(DIR **)(iVar1 + 0xc))" ( (pointer_expression "*(DIR **)(iVar1 + 0xc)" * (cast_expression "(DIR **)(iVar1 + 0xc)" ( (type_descriptor "DIR **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar1 + 0xc)" ( (binary_expression "iVar1 + 0xc" identifier + number_literal) )))) ))) ;) (expression_statement "*(undefined4 *)(iVar1 + 0xc) = 0;" (assignment_expression "*(undefined4 *)(iVar1 + 0xc) = 0" (pointer_expression "*(undefined4 *)(iVar1 + 0xc)" * (cast_expression "(undefined4 *)(iVar1 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0xc)" ( (binary_expression "iVar1 + 0xc" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined2 *)(iVar1 + 0x3c) = 7;" (assignment_expression "*(undefined2 *)(iVar1 + 0x3c) = 7" (pointer_expression "*(undefined2 *)(iVar1 + 0x3c)" * (cast_expression "(undefined2 *)(iVar1 + 0x3c)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x3c)" ( (binary_expression "iVar1 + 0x3c" identifier + number_literal) )))) = number_literal) ;) (expression_statement "param_1[0xb] = param_1[0xb] | 0x4000;" (assignment_expression "param_1[0xb] = param_1[0xb] | 0x4000" (subscript_expression "param_1[0xb]" identifier [ number_literal ]) = (binary_expression "param_1[0xb] | 0x4000" (subscript_expression "param_1[0xb]" identifier [ number_literal ]) | number_literal)) ;) (expression_statement "*piVar8 = iVar7;" (assignment_expression "*piVar8 = iVar7" (pointer_expression "*piVar8" * identifier) = identifier) ;) (return_statement "return (void *)0x0;" return (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (if_statement "if (local_44 <= sVar10) {\n      iVar15 = param_1[5];\n      cVar5 = FUN_00018cc0();\n      if (cVar5 == '\0') goto LAB_00019910;\n      puVar4 = local_38;\n      if ((param_1[5] != iVar15) &&\n         (local_1f = cVar5, puVar4 = (undefined1 *)(param_1[5] + local_4c),\n         (*(byte *)(param_1 + 0xb) & 4) == 0)) {\n        puVar4 = local_38;\n      }\n      local_38 = puVar4;\n      local_44 = param_1[8] - local_4c;\n    }" if (parenthesized_expression "(local_44 <= sVar10)" ( (binary_expression "local_44 <= sVar10" identifier <= identifier) )) (compound_statement "{\n      iVar15 = param_1[5];\n      cVar5 = FUN_00018cc0();\n      if (cVar5 == '\0') goto LAB_00019910;\n      puVar4 = local_38;\n      if ((param_1[5] != iVar15) &&\n         (local_1f = cVar5, puVar4 = (undefined1 *)(param_1[5] + local_4c),\n         (*(byte *)(param_1 + 0xb) & 4) == 0)) {\n        puVar4 = local_38;\n      }\n      local_38 = puVar4;\n      local_44 = param_1[8] - local_4c;\n    }" { (expression_statement "iVar15 = param_1[5];" (assignment_expression "iVar15 = param_1[5]" identifier = (subscript_expression "param_1[5]" identifier [ number_literal ])) ;) (expression_statement "cVar5 = FUN_00018cc0();" (assignment_expression "cVar5 = FUN_00018cc0()" identifier = (call_expression "FUN_00018cc0()" identifier (argument_list "()" ( )))) ;) (if_statement "if (cVar5 == '\0') goto LAB_00019910;" if (parenthesized_expression "(cVar5 == '\0')" ( (binary_expression "cVar5 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_00019910;" goto statement_identifier ;)) (expression_statement "puVar4 = local_38;" (assignment_expression "puVar4 = local_38" identifier = identifier) ;) (if_statement "if ((param_1[5] != iVar15) &&\n         (local_1f = cVar5, puVar4 = (undefined1 *)(param_1[5] + local_4c),\n         (*(byte *)(param_1 + 0xb) & 4) == 0)) {\n        puVar4 = local_38;\n      }" if (parenthesized_expression "((param_1[5] != iVar15) &&\n         (local_1f = cVar5, puVar4 = (undefined1 *)(param_1[5] + local_4c),\n         (*(byte *)(param_1 + 0xb) & 4) == 0))" ( (binary_expression "(param_1[5] != iVar15) &&\n         (local_1f = cVar5, puVar4 = (undefined1 *)(param_1[5] + local_4c),\n         (*(byte *)(param_1 + 0xb) & 4) == 0)" (parenthesized_expression "(param_1[5] != iVar15)" ( (binary_expression "param_1[5] != iVar15" (subscript_expression "param_1[5]" identifier [ number_literal ]) != identifier) )) && (parenthesized_expression "(local_1f = cVar5, puVar4 = (undefined1 *)(param_1[5] + local_4c),\n         (*(byte *)(param_1 + 0xb) & 4) == 0)" ( (comma_expression "local_1f = cVar5, puVar4 = (undefined1 *)(param_1[5] + local_4c),\n         (*(byte *)(param_1 + 0xb) & 4) == 0" (assignment_expression "local_1f = cVar5" identifier = identifier) , (comma_expression "puVar4 = (undefined1 *)(param_1[5] + local_4c),\n         (*(byte *)(param_1 + 0xb) & 4) == 0" (assignment_expression "puVar4 = (undefined1 *)(param_1[5] + local_4c)" identifier = (cast_expression "(undefined1 *)(param_1[5] + local_4c)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1[5] + local_4c)" ( (binary_expression "param_1[5] + local_4c" (subscript_expression "param_1[5]" identifier [ number_literal ]) + identifier) )))) , (binary_expression "(*(byte *)(param_1 + 0xb) & 4) == 0" (parenthesized_expression "(*(byte *)(param_1 + 0xb) & 4)" ( (binary_expression "*(byte *)(param_1 + 0xb) & 4" (pointer_expression "*(byte *)(param_1 + 0xb)" * (cast_expression "(byte *)(param_1 + 0xb)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xb)" ( (binary_expression "param_1 + 0xb" identifier + number_literal) )))) & number_literal) )) == number_literal))) ))) )) (compound_statement "{\n        puVar4 = local_38;\n      }" { (expression_statement "puVar4 = local_38;" (assignment_expression "puVar4 = local_38" identifier = identifier) ;) })) (expression_statement "local_38 = puVar4;" (assignment_expression "local_38 = puVar4" identifier = identifier) ;) (expression_statement "local_44 = param_1[8] - local_4c;" (assignment_expression "local_44 = param_1[8] - local_4c" identifier = (binary_expression "param_1[8] - local_4c" (subscript_expression "param_1[8]" identifier [ number_literal ]) - identifier)) ;) })) (if_statement "if (CARRY4(sVar10,local_4c)) {\n      free(pvVar11);\n      FUN_00018960();\n      closedir(*(DIR **)(iVar1 + 0xc));\n      *(undefined4 *)(iVar1 + 0xc) = 0;\n      *(undefined2 *)(iVar1 + 0x3c) = 7;\n      param_1[0xb] = param_1[0xb] | 0x4000;\n      *piVar8 = 0x24;\n      return (void *)0x0;\n    }" if (parenthesized_expression "(CARRY4(sVar10,local_4c))" ( (call_expression "CARRY4(sVar10,local_4c)" identifier (argument_list "(sVar10,local_4c)" ( identifier , identifier ))) )) (compound_statement "{\n      free(pvVar11);\n      FUN_00018960();\n      closedir(*(DIR **)(iVar1 + 0xc));\n      *(undefined4 *)(iVar1 + 0xc) = 0;\n      *(undefined2 *)(iVar1 + 0x3c) = 7;\n      param_1[0xb] = param_1[0xb] | 0x4000;\n      *piVar8 = 0x24;\n      return (void *)0x0;\n    }" { (expression_statement "free(pvVar11);" (call_expression "free(pvVar11)" identifier (argument_list "(pvVar11)" ( identifier ))) ;) (expression_statement "FUN_00018960();" (call_expression "FUN_00018960()" identifier (argument_list "()" ( ))) ;) (expression_statement "closedir(*(DIR **)(iVar1 + 0xc));" (call_expression "closedir(*(DIR **)(iVar1 + 0xc))" identifier (argument_list "(*(DIR **)(iVar1 + 0xc))" ( (pointer_expression "*(DIR **)(iVar1 + 0xc)" * (cast_expression "(DIR **)(iVar1 + 0xc)" ( (type_descriptor "DIR **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar1 + 0xc)" ( (binary_expression "iVar1 + 0xc" identifier + number_literal) )))) ))) ;) (expression_statement "*(undefined4 *)(iVar1 + 0xc) = 0;" (assignment_expression "*(undefined4 *)(iVar1 + 0xc) = 0" (pointer_expression "*(undefined4 *)(iVar1 + 0xc)" * (cast_expression "(undefined4 *)(iVar1 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0xc)" ( (binary_expression "iVar1 + 0xc" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined2 *)(iVar1 + 0x3c) = 7;" (assignment_expression "*(undefined2 *)(iVar1 + 0x3c) = 7" (pointer_expression "*(undefined2 *)(iVar1 + 0x3c)" * (cast_expression "(undefined2 *)(iVar1 + 0x3c)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x3c)" ( (binary_expression "iVar1 + 0x3c" identifier + number_literal) )))) = number_literal) ;) (expression_statement "param_1[0xb] = param_1[0xb] | 0x4000;" (assignment_expression "param_1[0xb] = param_1[0xb] | 0x4000" (subscript_expression "param_1[0xb]" identifier [ number_literal ]) = (binary_expression "param_1[0xb] | 0x4000" (subscript_expression "param_1[0xb]" identifier [ number_literal ]) | number_literal)) ;) (expression_statement "*piVar8 = 0x24;" (assignment_expression "*piVar8 = 0x24" (pointer_expression "*piVar8" * identifier) = number_literal) ;) (return_statement "return (void *)0x0;" return (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (expression_statement "uVar12 = *(undefined4 *)((int)&pdVar9->d_ino + 4);" (assignment_expression "uVar12 = *(undefined4 *)((int)&pdVar9->d_ino + 4)" identifier = (pointer_expression "*(undefined4 *)((int)&pdVar9->d_ino + 4)" * (cast_expression "(undefined4 *)((int)&pdVar9->d_ino + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&pdVar9->d_ino + 4)" ( (binary_expression "(int)&pdVar9->d_ino + 4" (cast_expression "(int)&pdVar9->d_ino" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&pdVar9->d_ino" & (field_expression "pdVar9->d_ino" identifier -> field_identifier))) + number_literal) ))))) ;) (expression_statement "*(int *)((int)pvVar11 + 0x30) = iVar7 + 1;" (assignment_expression "*(int *)((int)pvVar11 + 0x30) = iVar7 + 1" (pointer_expression "*(int *)((int)pvVar11 + 0x30)" * (cast_expression "(int *)((int)pvVar11 + 0x30)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pvVar11 + 0x30)" ( (binary_expression "(int)pvVar11 + 0x30" (cast_expression "(int)pvVar11" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (binary_expression "iVar7 + 1" identifier + number_literal)) ;) (expression_statement "iVar15 = *param_1;" (assignment_expression "iVar15 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "*(size_t *)((int)pvVar11 + 0x28) = sVar10 + local_4c;" (assignment_expression "*(size_t *)((int)pvVar11 + 0x28) = sVar10 + local_4c" (pointer_expression "*(size_t *)((int)pvVar11 + 0x28)" * (cast_expression "(size_t *)((int)pvVar11 + 0x28)" ( (type_descriptor "size_t *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pvVar11 + 0x28)" ( (binary_expression "(int)pvVar11 + 0x28" (cast_expression "(int)pvVar11" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (binary_expression "sVar10 + local_4c" identifier + identifier)) ;) (expression_statement "*(int *)((int)pvVar11 + 4) = iVar15;" (assignment_expression "*(int *)((int)pvVar11 + 4) = iVar15" (pointer_expression "*(int *)((int)pvVar11 + 4)" * (cast_expression "(int *)((int)pvVar11 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pvVar11 + 4)" ( (binary_expression "(int)pvVar11 + 4" (cast_expression "(int)pvVar11" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "_Var3 = pdVar9->d_ino;" (assignment_expression "_Var3 = pdVar9->d_ino" identifier = (field_expression "pdVar9->d_ino" identifier -> field_identifier)) ;) (expression_statement "*(undefined4 *)((int)pvVar11 + 0xa0) = uVar12;" (assignment_expression "*(undefined4 *)((int)pvVar11 + 0xa0) = uVar12" (pointer_expression "*(undefined4 *)((int)pvVar11 + 0xa0)" * (cast_expression "(undefined4 *)((int)pvVar11 + 0xa0)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pvVar11 + 0xa0)" ( (binary_expression "(int)pvVar11 + 0xa0" (cast_expression "(int)pvVar11" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(int *)((int)pvVar11 + 0x9c) = (int)_Var3;" (assignment_expression "*(int *)((int)pvVar11 + 0x9c) = (int)_Var3" (pointer_expression "*(int *)((int)pvVar11 + 0x9c)" * (cast_expression "(int *)((int)pvVar11 + 0x9c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pvVar11 + 0x9c)" ( (binary_expression "(int)pvVar11 + 0x9c" (cast_expression "(int)pvVar11" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (cast_expression "(int)_Var3" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "uVar14 = param_1[0xb];" (assignment_expression "uVar14 = param_1[0xb]" identifier = (subscript_expression "param_1[0xb]" identifier [ number_literal ])) ;) (if_statement "if ((uVar14 & 4) == 0) {\n      *(void **)((int)pvVar11 + 0x18) = (void *)((int)pvVar11 + 0xa4);\n    }\n    else {\n      *(undefined4 *)((int)pvVar11 + 0x18) = *(undefined4 *)((int)pvVar11 + 0x1c);\n      memmove(local_38,(void *)((int)pvVar11 + 0xa4),*(int *)((int)pvVar11 + 0x34) + 1);\n      uVar14 = param_1[0xb];\n    }" if (parenthesized_expression "((uVar14 & 4) == 0)" ( (binary_expression "(uVar14 & 4) == 0" (parenthesized_expression "(uVar14 & 4)" ( (binary_expression "uVar14 & 4" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n      *(void **)((int)pvVar11 + 0x18) = (void *)((int)pvVar11 + 0xa4);\n    }" { (expression_statement "*(void **)((int)pvVar11 + 0x18) = (void *)((int)pvVar11 + 0xa4);" (assignment_expression "*(void **)((int)pvVar11 + 0x18) = (void *)((int)pvVar11 + 0xa4)" (pointer_expression "*(void **)((int)pvVar11 + 0x18)" * (cast_expression "(void **)((int)pvVar11 + 0x18)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)pvVar11 + 0x18)" ( (binary_expression "(int)pvVar11 + 0x18" (cast_expression "(int)pvVar11" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (cast_expression "(void *)((int)pvVar11 + 0xa4)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pvVar11 + 0xa4)" ( (binary_expression "(int)pvVar11 + 0xa4" (cast_expression "(int)pvVar11" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) }) (else_clause "else {\n      *(undefined4 *)((int)pvVar11 + 0x18) = *(undefined4 *)((int)pvVar11 + 0x1c);\n      memmove(local_38,(void *)((int)pvVar11 + 0xa4),*(int *)((int)pvVar11 + 0x34) + 1);\n      uVar14 = param_1[0xb];\n    }" else (compound_statement "{\n      *(undefined4 *)((int)pvVar11 + 0x18) = *(undefined4 *)((int)pvVar11 + 0x1c);\n      memmove(local_38,(void *)((int)pvVar11 + 0xa4),*(int *)((int)pvVar11 + 0x34) + 1);\n      uVar14 = param_1[0xb];\n    }" { (expression_statement "*(undefined4 *)((int)pvVar11 + 0x18) = *(undefined4 *)((int)pvVar11 + 0x1c);" (assignment_expression "*(undefined4 *)((int)pvVar11 + 0x18) = *(undefined4 *)((int)pvVar11 + 0x1c)" (pointer_expression "*(undefined4 *)((int)pvVar11 + 0x18)" * (cast_expression "(undefined4 *)((int)pvVar11 + 0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pvVar11 + 0x18)" ( (binary_expression "(int)pvVar11 + 0x18" (cast_expression "(int)pvVar11" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (pointer_expression "*(undefined4 *)((int)pvVar11 + 0x1c)" * (cast_expression "(undefined4 *)((int)pvVar11 + 0x1c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pvVar11 + 0x1c)" ( (binary_expression "(int)pvVar11 + 0x1c" (cast_expression "(int)pvVar11" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "memmove(local_38,(void *)((int)pvVar11 + 0xa4),*(int *)((int)pvVar11 + 0x34) + 1);" (call_expression "memmove(local_38,(void *)((int)pvVar11 + 0xa4),*(int *)((int)pvVar11 + 0x34) + 1)" identifier (argument_list "(local_38,(void *)((int)pvVar11 + 0xa4),*(int *)((int)pvVar11 + 0x34) + 1)" ( identifier , (cast_expression "(void *)((int)pvVar11 + 0xa4)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pvVar11 + 0xa4)" ( (binary_expression "(int)pvVar11 + 0xa4" (cast_expression "(int)pvVar11" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))) , (binary_expression "*(int *)((int)pvVar11 + 0x34) + 1" (pointer_expression "*(int *)((int)pvVar11 + 0x34)" * (cast_expression "(int *)((int)pvVar11 + 0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pvVar11 + 0x34)" ( (binary_expression "(int)pvVar11 + 0x34" (cast_expression "(int)pvVar11" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) + number_literal) ))) ;) (expression_statement "uVar14 = param_1[0xb];" (assignment_expression "uVar14 = param_1[0xb]" identifier = (subscript_expression "param_1[0xb]" identifier [ number_literal ])) ;) }))) (if_statement "if ((param_1[10] == 0) || ((uVar14 & 0x400) != 0)) {\n      uVar18 = pdVar9->d_type - 1;\n      if (((uVar14 & 0x18) == 0x18) && ((pdVar9->d_type & 0xfb) != 0)) {\n        *(undefined2 *)((int)pvVar11 + 0x3c) = 0xb;\n        if (uVar18 < 0xc) {\n          *(undefined4 *)((int)pvVar11 + 0x54) = *(undefined4 *)(&DAT_0001e180 + uVar18 * 4);\n          uVar12 = 1;\n        }\n        else {\n          *(undefined4 *)((int)pvVar11 + 0x54) = 0;\n          uVar12 = 1;\n        }\n      }\n      else {\n        *(undefined2 *)((int)pvVar11 + 0x3c) = 0xb;\n        if (uVar18 < 0xc) {\n          *(undefined4 *)((int)pvVar11 + 0x54) = *(undefined4 *)(&DAT_0001e180 + uVar18 * 4);\n          uVar12 = 2;\n        }\n        else {\n          *(undefined4 *)((int)pvVar11 + 0x54) = 0;\n          uVar12 = 2;\n        }\n      }\n      *(undefined4 *)((int)pvVar11 + 0x70) = uVar12;\n      *(undefined4 *)((int)pvVar11 + 0x74) = 0;\n    }\n    else {\n      uVar6 = FUN_00018640();\n      *(undefined2 *)((int)pvVar11 + 0x3c) = uVar6;\n    }" if (parenthesized_expression "((param_1[10] == 0) || ((uVar14 & 0x400) != 0))" ( (binary_expression "(param_1[10] == 0) || ((uVar14 & 0x400) != 0)" (parenthesized_expression "(param_1[10] == 0)" ( (binary_expression "param_1[10] == 0" (subscript_expression "param_1[10]" identifier [ number_literal ]) == number_literal) )) || (parenthesized_expression "((uVar14 & 0x400) != 0)" ( (binary_expression "(uVar14 & 0x400) != 0" (parenthesized_expression "(uVar14 & 0x400)" ( (binary_expression "uVar14 & 0x400" identifier & number_literal) )) != number_literal) ))) )) (compound_statement "{\n      uVar18 = pdVar9->d_type - 1;\n      if (((uVar14 & 0x18) == 0x18) && ((pdVar9->d_type & 0xfb) != 0)) {\n        *(undefined2 *)((int)pvVar11 + 0x3c) = 0xb;\n        if (uVar18 < 0xc) {\n          *(undefined4 *)((int)pvVar11 + 0x54) = *(undefined4 *)(&DAT_0001e180 + uVar18 * 4);\n          uVar12 = 1;\n        }\n        else {\n          *(undefined4 *)((int)pvVar11 + 0x54) = 0;\n          uVar12 = 1;\n        }\n      }\n      else {\n        *(undefined2 *)((int)pvVar11 + 0x3c) = 0xb;\n        if (uVar18 < 0xc) {\n          *(undefined4 *)((int)pvVar11 + 0x54) = *(undefined4 *)(&DAT_0001e180 + uVar18 * 4);\n          uVar12 = 2;\n        }\n        else {\n          *(undefined4 *)((int)pvVar11 + 0x54) = 0;\n          uVar12 = 2;\n        }\n      }\n      *(undefined4 *)((int)pvVar11 + 0x70) = uVar12;\n      *(undefined4 *)((int)pvVar11 + 0x74) = 0;\n    }" { (expression_statement "uVar18 = pdVar9->d_type - 1;" (assignment_expression "uVar18 = pdVar9->d_type - 1" identifier = (binary_expression "pdVar9->d_type - 1" (field_expression "pdVar9->d_type" identifier -> field_identifier) - number_literal)) ;) (if_statement "if (((uVar14 & 0x18) == 0x18) && ((pdVar9->d_type & 0xfb) != 0)) {\n        *(undefined2 *)((int)pvVar11 + 0x3c) = 0xb;\n        if (uVar18 < 0xc) {\n          *(undefined4 *)((int)pvVar11 + 0x54) = *(undefined4 *)(&DAT_0001e180 + uVar18 * 4);\n          uVar12 = 1;\n        }\n        else {\n          *(undefined4 *)((int)pvVar11 + 0x54) = 0;\n          uVar12 = 1;\n        }\n      }\n      else {\n        *(undefined2 *)((int)pvVar11 + 0x3c) = 0xb;\n        if (uVar18 < 0xc) {\n          *(undefined4 *)((int)pvVar11 + 0x54) = *(undefined4 *)(&DAT_0001e180 + uVar18 * 4);\n          uVar12 = 2;\n        }\n        else {\n          *(undefined4 *)((int)pvVar11 + 0x54) = 0;\n          uVar12 = 2;\n        }\n      }" if (parenthesized_expression "(((uVar14 & 0x18) == 0x18) && ((pdVar9->d_type & 0xfb) != 0))" ( (binary_expression "((uVar14 & 0x18) == 0x18) && ((pdVar9->d_type & 0xfb) != 0)" (parenthesized_expression "((uVar14 & 0x18) == 0x18)" ( (binary_expression "(uVar14 & 0x18) == 0x18" (parenthesized_expression "(uVar14 & 0x18)" ( (binary_expression "uVar14 & 0x18" identifier & number_literal) )) == number_literal) )) && (parenthesized_expression "((pdVar9->d_type & 0xfb) != 0)" ( (binary_expression "(pdVar9->d_type & 0xfb) != 0" (parenthesized_expression "(pdVar9->d_type & 0xfb)" ( (binary_expression "pdVar9->d_type & 0xfb" (field_expression "pdVar9->d_type" identifier -> field_identifier) & number_literal) )) != number_literal) ))) )) (compound_statement "{\n        *(undefined2 *)((int)pvVar11 + 0x3c) = 0xb;\n        if (uVar18 < 0xc) {\n          *(undefined4 *)((int)pvVar11 + 0x54) = *(undefined4 *)(&DAT_0001e180 + uVar18 * 4);\n          uVar12 = 1;\n        }\n        else {\n          *(undefined4 *)((int)pvVar11 + 0x54) = 0;\n          uVar12 = 1;\n        }\n      }" { (expression_statement "*(undefined2 *)((int)pvVar11 + 0x3c) = 0xb;" (assignment_expression "*(undefined2 *)((int)pvVar11 + 0x3c) = 0xb" (pointer_expression "*(undefined2 *)((int)pvVar11 + 0x3c)" * (cast_expression "(undefined2 *)((int)pvVar11 + 0x3c)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pvVar11 + 0x3c)" ( (binary_expression "(int)pvVar11 + 0x3c" (cast_expression "(int)pvVar11" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (if_statement "if (uVar18 < 0xc) {\n          *(undefined4 *)((int)pvVar11 + 0x54) = *(undefined4 *)(&DAT_0001e180 + uVar18 * 4);\n          uVar12 = 1;\n        }\n        else {\n          *(undefined4 *)((int)pvVar11 + 0x54) = 0;\n          uVar12 = 1;\n        }" if (parenthesized_expression "(uVar18 < 0xc)" ( (binary_expression "uVar18 < 0xc" identifier < number_literal) )) (compound_statement "{\n          *(undefined4 *)((int)pvVar11 + 0x54) = *(undefined4 *)(&DAT_0001e180 + uVar18 * 4);\n          uVar12 = 1;\n        }" { (expression_statement "*(undefined4 *)((int)pvVar11 + 0x54) = *(undefined4 *)(&DAT_0001e180 + uVar18 * 4);" (assignment_expression "*(undefined4 *)((int)pvVar11 + 0x54) = *(undefined4 *)(&DAT_0001e180 + uVar18 * 4)" (pointer_expression "*(undefined4 *)((int)pvVar11 + 0x54)" * (cast_expression "(undefined4 *)((int)pvVar11 + 0x54)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pvVar11 + 0x54)" ( (binary_expression "(int)pvVar11 + 0x54" (cast_expression "(int)pvVar11" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (pointer_expression "*(undefined4 *)(&DAT_0001e180 + uVar18 * 4)" * (cast_expression "(undefined4 *)(&DAT_0001e180 + uVar18 * 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_0001e180 + uVar18 * 4)" ( (binary_expression "&DAT_0001e180 + uVar18 * 4" (pointer_expression "&DAT_0001e180" & identifier) + (binary_expression "uVar18 * 4" identifier * number_literal)) ))))) ;) (expression_statement "uVar12 = 1;" (assignment_expression "uVar12 = 1" identifier = number_literal) ;) }) (else_clause "else {\n          *(undefined4 *)((int)pvVar11 + 0x54) = 0;\n          uVar12 = 1;\n        }" else (compound_statement "{\n          *(undefined4 *)((int)pvVar11 + 0x54) = 0;\n          uVar12 = 1;\n        }" { (expression_statement "*(undefined4 *)((int)pvVar11 + 0x54) = 0;" (assignment_expression "*(undefined4 *)((int)pvVar11 + 0x54) = 0" (pointer_expression "*(undefined4 *)((int)pvVar11 + 0x54)" * (cast_expression "(undefined4 *)((int)pvVar11 + 0x54)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pvVar11 + 0x54)" ( (binary_expression "(int)pvVar11 + 0x54" (cast_expression "(int)pvVar11" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "uVar12 = 1;" (assignment_expression "uVar12 = 1" identifier = number_literal) ;) }))) }) (else_clause "else {\n        *(undefined2 *)((int)pvVar11 + 0x3c) = 0xb;\n        if (uVar18 < 0xc) {\n          *(undefined4 *)((int)pvVar11 + 0x54) = *(undefined4 *)(&DAT_0001e180 + uVar18 * 4);\n          uVar12 = 2;\n        }\n        else {\n          *(undefined4 *)((int)pvVar11 + 0x54) = 0;\n          uVar12 = 2;\n        }\n      }" else (compound_statement "{\n        *(undefined2 *)((int)pvVar11 + 0x3c) = 0xb;\n        if (uVar18 < 0xc) {\n          *(undefined4 *)((int)pvVar11 + 0x54) = *(undefined4 *)(&DAT_0001e180 + uVar18 * 4);\n          uVar12 = 2;\n        }\n        else {\n          *(undefined4 *)((int)pvVar11 + 0x54) = 0;\n          uVar12 = 2;\n        }\n      }" { (expression_statement "*(undefined2 *)((int)pvVar11 + 0x3c) = 0xb;" (assignment_expression "*(undefined2 *)((int)pvVar11 + 0x3c) = 0xb" (pointer_expression "*(undefined2 *)((int)pvVar11 + 0x3c)" * (cast_expression "(undefined2 *)((int)pvVar11 + 0x3c)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pvVar11 + 0x3c)" ( (binary_expression "(int)pvVar11 + 0x3c" (cast_expression "(int)pvVar11" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (if_statement "if (uVar18 < 0xc) {\n          *(undefined4 *)((int)pvVar11 + 0x54) = *(undefined4 *)(&DAT_0001e180 + uVar18 * 4);\n          uVar12 = 2;\n        }\n        else {\n          *(undefined4 *)((int)pvVar11 + 0x54) = 0;\n          uVar12 = 2;\n        }" if (parenthesized_expression "(uVar18 < 0xc)" ( (binary_expression "uVar18 < 0xc" identifier < number_literal) )) (compound_statement "{\n          *(undefined4 *)((int)pvVar11 + 0x54) = *(undefined4 *)(&DAT_0001e180 + uVar18 * 4);\n          uVar12 = 2;\n        }" { (expression_statement "*(undefined4 *)((int)pvVar11 + 0x54) = *(undefined4 *)(&DAT_0001e180 + uVar18 * 4);" (assignment_expression "*(undefined4 *)((int)pvVar11 + 0x54) = *(undefined4 *)(&DAT_0001e180 + uVar18 * 4)" (pointer_expression "*(undefined4 *)((int)pvVar11 + 0x54)" * (cast_expression "(undefined4 *)((int)pvVar11 + 0x54)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pvVar11 + 0x54)" ( (binary_expression "(int)pvVar11 + 0x54" (cast_expression "(int)pvVar11" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (pointer_expression "*(undefined4 *)(&DAT_0001e180 + uVar18 * 4)" * (cast_expression "(undefined4 *)(&DAT_0001e180 + uVar18 * 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_0001e180 + uVar18 * 4)" ( (binary_expression "&DAT_0001e180 + uVar18 * 4" (pointer_expression "&DAT_0001e180" & identifier) + (binary_expression "uVar18 * 4" identifier * number_literal)) ))))) ;) (expression_statement "uVar12 = 2;" (assignment_expression "uVar12 = 2" identifier = number_literal) ;) }) (else_clause "else {\n          *(undefined4 *)((int)pvVar11 + 0x54) = 0;\n          uVar12 = 2;\n        }" else (compound_statement "{\n          *(undefined4 *)((int)pvVar11 + 0x54) = 0;\n          uVar12 = 2;\n        }" { (expression_statement "*(undefined4 *)((int)pvVar11 + 0x54) = 0;" (assignment_expression "*(undefined4 *)((int)pvVar11 + 0x54) = 0" (pointer_expression "*(undefined4 *)((int)pvVar11 + 0x54)" * (cast_expression "(undefined4 *)((int)pvVar11 + 0x54)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pvVar11 + 0x54)" ( (binary_expression "(int)pvVar11 + 0x54" (cast_expression "(int)pvVar11" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "uVar12 = 2;" (assignment_expression "uVar12 = 2" identifier = number_literal) ;) }))) }))) (expression_statement "*(undefined4 *)((int)pvVar11 + 0x70) = uVar12;" (assignment_expression "*(undefined4 *)((int)pvVar11 + 0x70) = uVar12" (pointer_expression "*(undefined4 *)((int)pvVar11 + 0x70)" * (cast_expression "(undefined4 *)((int)pvVar11 + 0x70)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pvVar11 + 0x70)" ( (binary_expression "(int)pvVar11 + 0x70" (cast_expression "(int)pvVar11" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)((int)pvVar11 + 0x74) = 0;" (assignment_expression "*(undefined4 *)((int)pvVar11 + 0x74) = 0" (pointer_expression "*(undefined4 *)((int)pvVar11 + 0x74)" * (cast_expression "(undefined4 *)((int)pvVar11 + 0x74)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pvVar11 + 0x74)" ( (binary_expression "(int)pvVar11 + 0x74" (cast_expression "(int)pvVar11" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) }) (else_clause "else {\n      uVar6 = FUN_00018640();\n      *(undefined2 *)((int)pvVar11 + 0x3c) = uVar6;\n    }" else (compound_statement "{\n      uVar6 = FUN_00018640();\n      *(undefined2 *)((int)pvVar11 + 0x3c) = uVar6;\n    }" { (expression_statement "uVar6 = FUN_00018640();" (assignment_expression "uVar6 = FUN_00018640()" identifier = (call_expression "FUN_00018640()" identifier (argument_list "()" ( )))) ;) (expression_statement "*(undefined2 *)((int)pvVar11 + 0x3c) = uVar6;" (assignment_expression "*(undefined2 *)((int)pvVar11 + 0x3c) = uVar6" (pointer_expression "*(undefined2 *)((int)pvVar11 + 0x3c)" * (cast_expression "(undefined2 *)((int)pvVar11 + 0x3c)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pvVar11 + 0x3c)" ( (binary_expression "(int)pvVar11 + 0x3c" (cast_expression "(int)pvVar11" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) }))) (expression_statement "*(undefined4 *)((int)pvVar11 + 8) = 0;" (assignment_expression "*(undefined4 *)((int)pvVar11 + 8) = 0" (pointer_expression "*(undefined4 *)((int)pvVar11 + 8)" * (cast_expression "(undefined4 *)((int)pvVar11 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pvVar11 + 8)" ( (binary_expression "(int)pvVar11 + 8" (cast_expression "(int)pvVar11" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "pvVar16 = pvVar11;" (assignment_expression "pvVar16 = pvVar11" identifier = identifier) ;) (if_statement "if (local_48 != (void *)0x0) {\n      *(void **)((int)local_54 + 8) = pvVar11;\n      pvVar16 = local_48;\n    }" if (parenthesized_expression "(local_48 != (void *)0x0)" ( (binary_expression "local_48 != (void *)0x0" identifier != (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      *(void **)((int)local_54 + 8) = pvVar11;\n      pvVar16 = local_48;\n    }" { (expression_statement "*(void **)((int)local_54 + 8) = pvVar11;" (assignment_expression "*(void **)((int)local_54 + 8) = pvVar11" (pointer_expression "*(void **)((int)local_54 + 8)" * (cast_expression "(void **)((int)local_54 + 8)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)local_54 + 8)" ( (binary_expression "(int)local_54 + 8" (cast_expression "(int)local_54" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "pvVar16 = local_48;" (assignment_expression "pvVar16 = local_48" identifier = identifier) ;) })) (expression_statement "local_48 = pvVar16;" (assignment_expression "local_48 = pvVar16" identifier = identifier) ;) (expression_statement "local_54 = pvVar11;" (assignment_expression "local_54 = pvVar11" identifier = identifier) ;) (if_statement "if (local_5c == 10000) {\n      if ((param_1[10] != 0) ||\n         (((iVar15 = FUN_00018a00(), iVar15 != 0x6969 && (iVar15 != 0x1021994)) &&\n          (bVar2 = true, iVar15 != -0xacb2be)))) {\n        local_5c = 0x2711;\n        goto LAB_000193a8;\n      }\n      bVar2 = false;\n    }" if (parenthesized_expression "(local_5c == 10000)" ( (binary_expression "local_5c == 10000" identifier == number_literal) )) (compound_statement "{\n      if ((param_1[10] != 0) ||\n         (((iVar15 = FUN_00018a00(), iVar15 != 0x6969 && (iVar15 != 0x1021994)) &&\n          (bVar2 = true, iVar15 != -0xacb2be)))) {\n        local_5c = 0x2711;\n        goto LAB_000193a8;\n      }\n      bVar2 = false;\n    }" { (if_statement "if ((param_1[10] != 0) ||\n         (((iVar15 = FUN_00018a00(), iVar15 != 0x6969 && (iVar15 != 0x1021994)) &&\n          (bVar2 = true, iVar15 != -0xacb2be)))) {\n        local_5c = 0x2711;\n        goto LAB_000193a8;\n      }" if (parenthesized_expression "((param_1[10] != 0) ||\n         (((iVar15 = FUN_00018a00(), iVar15 != 0x6969 && (iVar15 != 0x1021994)) &&\n          (bVar2 = true, iVar15 != -0xacb2be))))" ( (binary_expression "(param_1[10] != 0) ||\n         (((iVar15 = FUN_00018a00(), iVar15 != 0x6969 && (iVar15 != 0x1021994)) &&\n          (bVar2 = true, iVar15 != -0xacb2be)))" (parenthesized_expression "(param_1[10] != 0)" ( (binary_expression "param_1[10] != 0" (subscript_expression "param_1[10]" identifier [ number_literal ]) != number_literal) )) || (parenthesized_expression "(((iVar15 = FUN_00018a00(), iVar15 != 0x6969 && (iVar15 != 0x1021994)) &&\n          (bVar2 = true, iVar15 != -0xacb2be)))" ( (parenthesized_expression "((iVar15 = FUN_00018a00(), iVar15 != 0x6969 && (iVar15 != 0x1021994)) &&\n          (bVar2 = true, iVar15 != -0xacb2be))" ( (binary_expression "(iVar15 = FUN_00018a00(), iVar15 != 0x6969 && (iVar15 != 0x1021994)) &&\n          (bVar2 = true, iVar15 != -0xacb2be)" (parenthesized_expression "(iVar15 = FUN_00018a00(), iVar15 != 0x6969 && (iVar15 != 0x1021994))" ( (comma_expression "iVar15 = FUN_00018a00(), iVar15 != 0x6969 && (iVar15 != 0x1021994)" (assignment_expression "iVar15 = FUN_00018a00()" identifier = (call_expression "FUN_00018a00()" identifier (argument_list "()" ( )))) , (binary_expression "iVar15 != 0x6969 && (iVar15 != 0x1021994)" (binary_expression "iVar15 != 0x6969" identifier != number_literal) && (parenthesized_expression "(iVar15 != 0x1021994)" ( (binary_expression "iVar15 != 0x1021994" identifier != number_literal) )))) )) && (parenthesized_expression "(bVar2 = true, iVar15 != -0xacb2be)" ( (comma_expression "bVar2 = true, iVar15 != -0xacb2be" (assignment_expression "bVar2 = true" identifier = true) , (binary_expression "iVar15 != -0xacb2be" identifier != number_literal)) ))) )) ))) )) (compound_statement "{\n        local_5c = 0x2711;\n        goto LAB_000193a8;\n      }" { (expression_statement "local_5c = 0x2711;" (assignment_expression "local_5c = 0x2711" identifier = number_literal) ;) (goto_statement "goto LAB_000193a8;" goto statement_identifier ;) })) (expression_statement "bVar2 = false;" (assignment_expression "bVar2 = false" identifier = false) ;) })) (expression_statement "local_5c = local_5c + 1;" (assignment_expression "local_5c = local_5c + 1" identifier = (binary_expression "local_5c + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(local_5c < local_34)" ( (binary_expression "local_5c < local_34" identifier < identifier) )) ;)) (labeled_statement "LAB_00019641:\n  if (local_1f != '\0') {\n    iVar15 = param_1[5];\n    for (iVar7 = param_1[1]; pvVar11 = local_48, iVar7 != 0; iVar7 = *(int *)(iVar7 + 8)) {\n      if (*(int *)(iVar7 + 0x18) != iVar7 + 0xa4) {\n        *(int *)(iVar7 + 0x18) = (*(int *)(iVar7 + 0x18) - *(int *)(iVar7 + 0x1c)) + iVar15;\n      }\n      *(int *)(iVar7 + 0x1c) = iVar15;\n    }\n    while (pvVar16 = pvVar11, -1 < *(int *)((int)pvVar16 + 0x30)) {\n      if (*(int *)((int)pvVar16 + 0x18) != (int)pvVar16 + 0xa4) {\n        *(int *)((int)pvVar16 + 0x18) =\n             (*(int *)((int)pvVar16 + 0x18) - *(int *)((int)pvVar16 + 0x1c)) + iVar15;\n      }\n      *(int *)((int)pvVar16 + 0x1c) = iVar15;\n      pvVar11 = *(void **)((int)pvVar16 + 8);\n      if (*(void **)((int)pvVar16 + 8) == (void *)0x0) {\n        pvVar11 = *(void **)((int)pvVar16 + 4);\n      }\n    }\n  }" statement_identifier : (if_statement "if (local_1f != '\0') {\n    iVar15 = param_1[5];\n    for (iVar7 = param_1[1]; pvVar11 = local_48, iVar7 != 0; iVar7 = *(int *)(iVar7 + 8)) {\n      if (*(int *)(iVar7 + 0x18) != iVar7 + 0xa4) {\n        *(int *)(iVar7 + 0x18) = (*(int *)(iVar7 + 0x18) - *(int *)(iVar7 + 0x1c)) + iVar15;\n      }\n      *(int *)(iVar7 + 0x1c) = iVar15;\n    }\n    while (pvVar16 = pvVar11, -1 < *(int *)((int)pvVar16 + 0x30)) {\n      if (*(int *)((int)pvVar16 + 0x18) != (int)pvVar16 + 0xa4) {\n        *(int *)((int)pvVar16 + 0x18) =\n             (*(int *)((int)pvVar16 + 0x18) - *(int *)((int)pvVar16 + 0x1c)) + iVar15;\n      }\n      *(int *)((int)pvVar16 + 0x1c) = iVar15;\n      pvVar11 = *(void **)((int)pvVar16 + 8);\n      if (*(void **)((int)pvVar16 + 8) == (void *)0x0) {\n        pvVar11 = *(void **)((int)pvVar16 + 4);\n      }\n    }\n  }" if (parenthesized_expression "(local_1f != '\0')" ( (binary_expression "local_1f != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    iVar15 = param_1[5];\n    for (iVar7 = param_1[1]; pvVar11 = local_48, iVar7 != 0; iVar7 = *(int *)(iVar7 + 8)) {\n      if (*(int *)(iVar7 + 0x18) != iVar7 + 0xa4) {\n        *(int *)(iVar7 + 0x18) = (*(int *)(iVar7 + 0x18) - *(int *)(iVar7 + 0x1c)) + iVar15;\n      }\n      *(int *)(iVar7 + 0x1c) = iVar15;\n    }\n    while (pvVar16 = pvVar11, -1 < *(int *)((int)pvVar16 + 0x30)) {\n      if (*(int *)((int)pvVar16 + 0x18) != (int)pvVar16 + 0xa4) {\n        *(int *)((int)pvVar16 + 0x18) =\n             (*(int *)((int)pvVar16 + 0x18) - *(int *)((int)pvVar16 + 0x1c)) + iVar15;\n      }\n      *(int *)((int)pvVar16 + 0x1c) = iVar15;\n      pvVar11 = *(void **)((int)pvVar16 + 8);\n      if (*(void **)((int)pvVar16 + 8) == (void *)0x0) {\n        pvVar11 = *(void **)((int)pvVar16 + 4);\n      }\n    }\n  }" { (expression_statement "iVar15 = param_1[5];" (assignment_expression "iVar15 = param_1[5]" identifier = (subscript_expression "param_1[5]" identifier [ number_literal ])) ;) (for_statement "for (iVar7 = param_1[1]; pvVar11 = local_48, iVar7 != 0; iVar7 = *(int *)(iVar7 + 8)) {\n      if (*(int *)(iVar7 + 0x18) != iVar7 + 0xa4) {\n        *(int *)(iVar7 + 0x18) = (*(int *)(iVar7 + 0x18) - *(int *)(iVar7 + 0x1c)) + iVar15;\n      }\n      *(int *)(iVar7 + 0x1c) = iVar15;\n    }" for ( (assignment_expression "iVar7 = param_1[1]" identifier = (subscript_expression "param_1[1]" identifier [ number_literal ])) ; (comma_expression "pvVar11 = local_48, iVar7 != 0" (assignment_expression "pvVar11 = local_48" identifier = identifier) , (binary_expression "iVar7 != 0" identifier != number_literal)) ; (assignment_expression "iVar7 = *(int *)(iVar7 + 8)" identifier = (pointer_expression "*(int *)(iVar7 + 8)" * (cast_expression "(int *)(iVar7 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + 8)" ( (binary_expression "iVar7 + 8" identifier + number_literal) ))))) ) (compound_statement "{\n      if (*(int *)(iVar7 + 0x18) != iVar7 + 0xa4) {\n        *(int *)(iVar7 + 0x18) = (*(int *)(iVar7 + 0x18) - *(int *)(iVar7 + 0x1c)) + iVar15;\n      }\n      *(int *)(iVar7 + 0x1c) = iVar15;\n    }" { (if_statement "if (*(int *)(iVar7 + 0x18) != iVar7 + 0xa4) {\n        *(int *)(iVar7 + 0x18) = (*(int *)(iVar7 + 0x18) - *(int *)(iVar7 + 0x1c)) + iVar15;\n      }" if (parenthesized_expression "(*(int *)(iVar7 + 0x18) != iVar7 + 0xa4)" ( (binary_expression "*(int *)(iVar7 + 0x18) != iVar7 + 0xa4" (pointer_expression "*(int *)(iVar7 + 0x18)" * (cast_expression "(int *)(iVar7 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + 0x18)" ( (binary_expression "iVar7 + 0x18" identifier + number_literal) )))) != (binary_expression "iVar7 + 0xa4" identifier + number_literal)) )) (compound_statement "{\n        *(int *)(iVar7 + 0x18) = (*(int *)(iVar7 + 0x18) - *(int *)(iVar7 + 0x1c)) + iVar15;\n      }" { (expression_statement "*(int *)(iVar7 + 0x18) = (*(int *)(iVar7 + 0x18) - *(int *)(iVar7 + 0x1c)) + iVar15;" (assignment_expression "*(int *)(iVar7 + 0x18) = (*(int *)(iVar7 + 0x18) - *(int *)(iVar7 + 0x1c)) + iVar15" (pointer_expression "*(int *)(iVar7 + 0x18)" * (cast_expression "(int *)(iVar7 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + 0x18)" ( (binary_expression "iVar7 + 0x18" identifier + number_literal) )))) = (binary_expression "(*(int *)(iVar7 + 0x18) - *(int *)(iVar7 + 0x1c)) + iVar15" (parenthesized_expression "(*(int *)(iVar7 + 0x18) - *(int *)(iVar7 + 0x1c))" ( (binary_expression "*(int *)(iVar7 + 0x18) - *(int *)(iVar7 + 0x1c)" (pointer_expression "*(int *)(iVar7 + 0x18)" * (cast_expression "(int *)(iVar7 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + 0x18)" ( (binary_expression "iVar7 + 0x18" identifier + number_literal) )))) - (pointer_expression "*(int *)(iVar7 + 0x1c)" * (cast_expression "(int *)(iVar7 + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + 0x1c)" ( (binary_expression "iVar7 + 0x1c" identifier + number_literal) ))))) )) + identifier)) ;) })) (expression_statement "*(int *)(iVar7 + 0x1c) = iVar15;" (assignment_expression "*(int *)(iVar7 + 0x1c) = iVar15" (pointer_expression "*(int *)(iVar7 + 0x1c)" * (cast_expression "(int *)(iVar7 + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + 0x1c)" ( (binary_expression "iVar7 + 0x1c" identifier + number_literal) )))) = identifier) ;) })) (while_statement "while (pvVar16 = pvVar11, -1 < *(int *)((int)pvVar16 + 0x30)) {\n      if (*(int *)((int)pvVar16 + 0x18) != (int)pvVar16 + 0xa4) {\n        *(int *)((int)pvVar16 + 0x18) =\n             (*(int *)((int)pvVar16 + 0x18) - *(int *)((int)pvVar16 + 0x1c)) + iVar15;\n      }\n      *(int *)((int)pvVar16 + 0x1c) = iVar15;\n      pvVar11 = *(void **)((int)pvVar16 + 8);\n      if (*(void **)((int)pvVar16 + 8) == (void *)0x0) {\n        pvVar11 = *(void **)((int)pvVar16 + 4);\n      }\n    }" while (parenthesized_expression "(pvVar16 = pvVar11, -1 < *(int *)((int)pvVar16 + 0x30))" ( (comma_expression "pvVar16 = pvVar11, -1 < *(int *)((int)pvVar16 + 0x30)" (assignment_expression "pvVar16 = pvVar11" identifier = identifier) , (binary_expression "-1 < *(int *)((int)pvVar16 + 0x30)" number_literal < (pointer_expression "*(int *)((int)pvVar16 + 0x30)" * (cast_expression "(int *)((int)pvVar16 + 0x30)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pvVar16 + 0x30)" ( (binary_expression "(int)pvVar16 + 0x30" (cast_expression "(int)pvVar16" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))))) )) (compound_statement "{\n      if (*(int *)((int)pvVar16 + 0x18) != (int)pvVar16 + 0xa4) {\n        *(int *)((int)pvVar16 + 0x18) =\n             (*(int *)((int)pvVar16 + 0x18) - *(int *)((int)pvVar16 + 0x1c)) + iVar15;\n      }\n      *(int *)((int)pvVar16 + 0x1c) = iVar15;\n      pvVar11 = *(void **)((int)pvVar16 + 8);\n      if (*(void **)((int)pvVar16 + 8) == (void *)0x0) {\n        pvVar11 = *(void **)((int)pvVar16 + 4);\n      }\n    }" { (if_statement "if (*(int *)((int)pvVar16 + 0x18) != (int)pvVar16 + 0xa4) {\n        *(int *)((int)pvVar16 + 0x18) =\n             (*(int *)((int)pvVar16 + 0x18) - *(int *)((int)pvVar16 + 0x1c)) + iVar15;\n      }" if (parenthesized_expression "(*(int *)((int)pvVar16 + 0x18) != (int)pvVar16 + 0xa4)" ( (binary_expression "*(int *)((int)pvVar16 + 0x18) != (int)pvVar16 + 0xa4" (pointer_expression "*(int *)((int)pvVar16 + 0x18)" * (cast_expression "(int *)((int)pvVar16 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pvVar16 + 0x18)" ( (binary_expression "(int)pvVar16 + 0x18" (cast_expression "(int)pvVar16" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) != (binary_expression "(int)pvVar16 + 0xa4" (cast_expression "(int)pvVar16" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal)) )) (compound_statement "{\n        *(int *)((int)pvVar16 + 0x18) =\n             (*(int *)((int)pvVar16 + 0x18) - *(int *)((int)pvVar16 + 0x1c)) + iVar15;\n      }" { (expression_statement "*(int *)((int)pvVar16 + 0x18) =\n             (*(int *)((int)pvVar16 + 0x18) - *(int *)((int)pvVar16 + 0x1c)) + iVar15;" (assignment_expression "*(int *)((int)pvVar16 + 0x18) =\n             (*(int *)((int)pvVar16 + 0x18) - *(int *)((int)pvVar16 + 0x1c)) + iVar15" (pointer_expression "*(int *)((int)pvVar16 + 0x18)" * (cast_expression "(int *)((int)pvVar16 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pvVar16 + 0x18)" ( (binary_expression "(int)pvVar16 + 0x18" (cast_expression "(int)pvVar16" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (binary_expression "(*(int *)((int)pvVar16 + 0x18) - *(int *)((int)pvVar16 + 0x1c)) + iVar15" (parenthesized_expression "(*(int *)((int)pvVar16 + 0x18) - *(int *)((int)pvVar16 + 0x1c))" ( (binary_expression "*(int *)((int)pvVar16 + 0x18) - *(int *)((int)pvVar16 + 0x1c)" (pointer_expression "*(int *)((int)pvVar16 + 0x18)" * (cast_expression "(int *)((int)pvVar16 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pvVar16 + 0x18)" ( (binary_expression "(int)pvVar16 + 0x18" (cast_expression "(int)pvVar16" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) - (pointer_expression "*(int *)((int)pvVar16 + 0x1c)" * (cast_expression "(int *)((int)pvVar16 + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pvVar16 + 0x1c)" ( (binary_expression "(int)pvVar16 + 0x1c" (cast_expression "(int)pvVar16" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) )) + identifier)) ;) })) (expression_statement "*(int *)((int)pvVar16 + 0x1c) = iVar15;" (assignment_expression "*(int *)((int)pvVar16 + 0x1c) = iVar15" (pointer_expression "*(int *)((int)pvVar16 + 0x1c)" * (cast_expression "(int *)((int)pvVar16 + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pvVar16 + 0x1c)" ( (binary_expression "(int)pvVar16 + 0x1c" (cast_expression "(int)pvVar16" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "pvVar11 = *(void **)((int)pvVar16 + 8);" (assignment_expression "pvVar11 = *(void **)((int)pvVar16 + 8)" identifier = (pointer_expression "*(void **)((int)pvVar16 + 8)" * (cast_expression "(void **)((int)pvVar16 + 8)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)pvVar16 + 8)" ( (binary_expression "(int)pvVar16 + 8" (cast_expression "(int)pvVar16" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (if_statement "if (*(void **)((int)pvVar16 + 8) == (void *)0x0) {\n        pvVar11 = *(void **)((int)pvVar16 + 4);\n      }" if (parenthesized_expression "(*(void **)((int)pvVar16 + 8) == (void *)0x0)" ( (binary_expression "*(void **)((int)pvVar16 + 8) == (void *)0x0" (pointer_expression "*(void **)((int)pvVar16 + 8)" * (cast_expression "(void **)((int)pvVar16 + 8)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)pvVar16 + 8)" ( (binary_expression "(int)pvVar16 + 8" (cast_expression "(int)pvVar16" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) == (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        pvVar11 = *(void **)((int)pvVar16 + 4);\n      }" { (expression_statement "pvVar11 = *(void **)((int)pvVar16 + 4);" (assignment_expression "pvVar11 = *(void **)((int)pvVar16 + 4)" identifier = (pointer_expression "*(void **)((int)pvVar16 + 4)" * (cast_expression "(void **)((int)pvVar16 + 4)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)pvVar16 + 4)" ( (binary_expression "(int)pvVar16 + 4" (cast_expression "(int)pvVar16" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) })) })) }))) (if_statement "if ((*(byte *)(param_1 + 0xb) & 4) != 0) {\n    if ((param_1[8] == local_4c) || (local_5c == 0)) {\n      local_38 = local_38 + -1;\n    }\n    *local_38 = 0;\n  }" if (parenthesized_expression "((*(byte *)(param_1 + 0xb) & 4) != 0)" ( (binary_expression "(*(byte *)(param_1 + 0xb) & 4) != 0" (parenthesized_expression "(*(byte *)(param_1 + 0xb) & 4)" ( (binary_expression "*(byte *)(param_1 + 0xb) & 4" (pointer_expression "*(byte *)(param_1 + 0xb)" * (cast_expression "(byte *)(param_1 + 0xb)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xb)" ( (binary_expression "param_1 + 0xb" identifier + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n    if ((param_1[8] == local_4c) || (local_5c == 0)) {\n      local_38 = local_38 + -1;\n    }\n    *local_38 = 0;\n  }" { (if_statement "if ((param_1[8] == local_4c) || (local_5c == 0)) {\n      local_38 = local_38 + -1;\n    }" if (parenthesized_expression "((param_1[8] == local_4c) || (local_5c == 0))" ( (binary_expression "(param_1[8] == local_4c) || (local_5c == 0)" (parenthesized_expression "(param_1[8] == local_4c)" ( (binary_expression "param_1[8] == local_4c" (subscript_expression "param_1[8]" identifier [ number_literal ]) == identifier) )) || (parenthesized_expression "(local_5c == 0)" ( (binary_expression "local_5c == 0" identifier == number_literal) ))) )) (compound_statement "{\n      local_38 = local_38 + -1;\n    }" { (expression_statement "local_38 = local_38 + -1;" (assignment_expression "local_38 = local_38 + -1" identifier = (binary_expression "local_38 + -1" identifier + number_literal)) ;) })) (expression_statement "*local_38 = 0;" (assignment_expression "*local_38 = 0" (pointer_expression "*local_38" * identifier) = number_literal) ;) })) (if_statement "if ((__dirp == (DIR *)0x0) && (bVar19)) {\n    if ((param_2 != 1) && (local_5c != 0)) goto LAB_000196b9;\n    if (*(int *)(iVar1 + 0x30) == 0) {\n      iVar7 = FUN_00018c40();\n    }\n    else {\n      iVar7 = FUN_00018e20(&DAT_0001e166);\n    }\n    if (iVar7 != 0) {\n      *(undefined2 *)(iVar1 + 0x3c) = 7;\n      param_1[0xb] = param_1[0xb] | 0x4000;\n      FUN_00018960();\n      return (void *)0x0;\n    }\n  }" if (parenthesized_expression "((__dirp == (DIR *)0x0) && (bVar19))" ( (binary_expression "(__dirp == (DIR *)0x0) && (bVar19)" (parenthesized_expression "(__dirp == (DIR *)0x0)" ( (binary_expression "__dirp == (DIR *)0x0" identifier == (cast_expression "(DIR *)0x0" ( (type_descriptor "DIR *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(bVar19)" ( identifier ))) )) (compound_statement "{\n    if ((param_2 != 1) && (local_5c != 0)) goto LAB_000196b9;\n    if (*(int *)(iVar1 + 0x30) == 0) {\n      iVar7 = FUN_00018c40();\n    }\n    else {\n      iVar7 = FUN_00018e20(&DAT_0001e166);\n    }\n    if (iVar7 != 0) {\n      *(undefined2 *)(iVar1 + 0x3c) = 7;\n      param_1[0xb] = param_1[0xb] | 0x4000;\n      FUN_00018960();\n      return (void *)0x0;\n    }\n  }" { (if_statement "if ((param_2 != 1) && (local_5c != 0)) goto LAB_000196b9;" if (parenthesized_expression "((param_2 != 1) && (local_5c != 0))" ( (binary_expression "(param_2 != 1) && (local_5c != 0)" (parenthesized_expression "(param_2 != 1)" ( (binary_expression "param_2 != 1" identifier != number_literal) )) && (parenthesized_expression "(local_5c != 0)" ( (binary_expression "local_5c != 0" identifier != number_literal) ))) )) (goto_statement "goto LAB_000196b9;" goto statement_identifier ;)) (if_statement "if (*(int *)(iVar1 + 0x30) == 0) {\n      iVar7 = FUN_00018c40();\n    }\n    else {\n      iVar7 = FUN_00018e20(&DAT_0001e166);\n    }" if (parenthesized_expression "(*(int *)(iVar1 + 0x30) == 0)" ( (binary_expression "*(int *)(iVar1 + 0x30) == 0" (pointer_expression "*(int *)(iVar1 + 0x30)" * (cast_expression "(int *)(iVar1 + 0x30)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x30)" ( (binary_expression "iVar1 + 0x30" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n      iVar7 = FUN_00018c40();\n    }" { (expression_statement "iVar7 = FUN_00018c40();" (assignment_expression "iVar7 = FUN_00018c40()" identifier = (call_expression "FUN_00018c40()" identifier (argument_list "()" ( )))) ;) }) (else_clause "else {\n      iVar7 = FUN_00018e20(&DAT_0001e166);\n    }" else (compound_statement "{\n      iVar7 = FUN_00018e20(&DAT_0001e166);\n    }" { (expression_statement "iVar7 = FUN_00018e20(&DAT_0001e166);" (assignment_expression "iVar7 = FUN_00018e20(&DAT_0001e166)" identifier = (call_expression "FUN_00018e20(&DAT_0001e166)" identifier (argument_list "(&DAT_0001e166)" ( (pointer_expression "&DAT_0001e166" & identifier) )))) ;) }))) (if_statement "if (iVar7 != 0) {\n      *(undefined2 *)(iVar1 + 0x3c) = 7;\n      param_1[0xb] = param_1[0xb] | 0x4000;\n      FUN_00018960();\n      return (void *)0x0;\n    }" if (parenthesized_expression "(iVar7 != 0)" ( (binary_expression "iVar7 != 0" identifier != number_literal) )) (compound_statement "{\n      *(undefined2 *)(iVar1 + 0x3c) = 7;\n      param_1[0xb] = param_1[0xb] | 0x4000;\n      FUN_00018960();\n      return (void *)0x0;\n    }" { (expression_statement "*(undefined2 *)(iVar1 + 0x3c) = 7;" (assignment_expression "*(undefined2 *)(iVar1 + 0x3c) = 7" (pointer_expression "*(undefined2 *)(iVar1 + 0x3c)" * (cast_expression "(undefined2 *)(iVar1 + 0x3c)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x3c)" ( (binary_expression "iVar1 + 0x3c" identifier + number_literal) )))) = number_literal) ;) (expression_statement "param_1[0xb] = param_1[0xb] | 0x4000;" (assignment_expression "param_1[0xb] = param_1[0xb] | 0x4000" (subscript_expression "param_1[0xb]" identifier [ number_literal ]) = (binary_expression "param_1[0xb] | 0x4000" (subscript_expression "param_1[0xb]" identifier [ number_literal ]) | number_literal)) ;) (expression_statement "FUN_00018960();" (call_expression "FUN_00018960()" identifier (argument_list "()" ( ))) ;) (return_statement "return (void *)0x0;" return (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) })) (if_statement "if (local_5c == 0) {\n    if (((param_2 == 3) && (*(short *)(iVar1 + 0x3c) != 4)) && (*(short *)(iVar1 + 0x3c) != 7)) {\n      *(undefined2 *)(iVar1 + 0x3c) = 6;\n    }\n    FUN_00018960();\n    return (void *)0x0;\n  }" if (parenthesized_expression "(local_5c == 0)" ( (binary_expression "local_5c == 0" identifier == number_literal) )) (compound_statement "{\n    if (((param_2 == 3) && (*(short *)(iVar1 + 0x3c) != 4)) && (*(short *)(iVar1 + 0x3c) != 7)) {\n      *(undefined2 *)(iVar1 + 0x3c) = 6;\n    }\n    FUN_00018960();\n    return (void *)0x0;\n  }" { (if_statement "if (((param_2 == 3) && (*(short *)(iVar1 + 0x3c) != 4)) && (*(short *)(iVar1 + 0x3c) != 7)) {\n      *(undefined2 *)(iVar1 + 0x3c) = 6;\n    }" if (parenthesized_expression "(((param_2 == 3) && (*(short *)(iVar1 + 0x3c) != 4)) && (*(short *)(iVar1 + 0x3c) != 7))" ( (binary_expression "((param_2 == 3) && (*(short *)(iVar1 + 0x3c) != 4)) && (*(short *)(iVar1 + 0x3c) != 7)" (parenthesized_expression "((param_2 == 3) && (*(short *)(iVar1 + 0x3c) != 4))" ( (binary_expression "(param_2 == 3) && (*(short *)(iVar1 + 0x3c) != 4)" (parenthesized_expression "(param_2 == 3)" ( (binary_expression "param_2 == 3" identifier == number_literal) )) && (parenthesized_expression "(*(short *)(iVar1 + 0x3c) != 4)" ( (binary_expression "*(short *)(iVar1 + 0x3c) != 4" (pointer_expression "*(short *)(iVar1 + 0x3c)" * (cast_expression "(short *)(iVar1 + 0x3c)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x3c)" ( (binary_expression "iVar1 + 0x3c" identifier + number_literal) )))) != number_literal) ))) )) && (parenthesized_expression "(*(short *)(iVar1 + 0x3c) != 7)" ( (binary_expression "*(short *)(iVar1 + 0x3c) != 7" (pointer_expression "*(short *)(iVar1 + 0x3c)" * (cast_expression "(short *)(iVar1 + 0x3c)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x3c)" ( (binary_expression "iVar1 + 0x3c" identifier + number_literal) )))) != number_literal) ))) )) (compound_statement "{\n      *(undefined2 *)(iVar1 + 0x3c) = 6;\n    }" { (expression_statement "*(undefined2 *)(iVar1 + 0x3c) = 6;" (assignment_expression "*(undefined2 *)(iVar1 + 0x3c) = 6" (pointer_expression "*(undefined2 *)(iVar1 + 0x3c)" * (cast_expression "(undefined2 *)(iVar1 + 0x3c)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x3c)" ( (binary_expression "iVar1 + 0x3c" identifier + number_literal) )))) = number_literal) ;) })) (expression_statement "FUN_00018960();" (call_expression "FUN_00018960()" identifier (argument_list "()" ( ))) ;) (return_statement "return (void *)0x0;" return (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (labeled_statement "LAB_000196b9:\n  if (bVar2) {\n    param_1[10] = (int)FUN_00018600;\n    pvVar11 = (void *)FUN_000187e0();\n    param_1[10] = 0;\n    return pvVar11;\n  }" statement_identifier : (if_statement "if (bVar2) {\n    param_1[10] = (int)FUN_00018600;\n    pvVar11 = (void *)FUN_000187e0();\n    param_1[10] = 0;\n    return pvVar11;\n  }" if (parenthesized_expression "(bVar2)" ( identifier )) (compound_statement "{\n    param_1[10] = (int)FUN_00018600;\n    pvVar11 = (void *)FUN_000187e0();\n    param_1[10] = 0;\n    return pvVar11;\n  }" { (expression_statement "param_1[10] = (int)FUN_00018600;" (assignment_expression "param_1[10] = (int)FUN_00018600" (subscript_expression "param_1[10]" identifier [ number_literal ]) = (cast_expression "(int)FUN_00018600" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "pvVar11 = (void *)FUN_000187e0();" (assignment_expression "pvVar11 = (void *)FUN_000187e0()" identifier = (cast_expression "(void *)FUN_000187e0()" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_000187e0()" identifier (argument_list "()" ( ))))) ;) (expression_statement "param_1[10] = 0;" (assignment_expression "param_1[10] = 0" (subscript_expression "param_1[10]" identifier [ number_literal ]) = number_literal) ;) (return_statement "return pvVar11;" return identifier ;) }))) (if_statement "if ((param_1[10] != 0) && (local_5c != 1)) {\n    pvVar11 = (void *)FUN_000187e0();\n    return pvVar11;\n  }" if (parenthesized_expression "((param_1[10] != 0) && (local_5c != 1))" ( (binary_expression "(param_1[10] != 0) && (local_5c != 1)" (parenthesized_expression "(param_1[10] != 0)" ( (binary_expression "param_1[10] != 0" (subscript_expression "param_1[10]" identifier [ number_literal ]) != number_literal) )) && (parenthesized_expression "(local_5c != 1)" ( (binary_expression "local_5c != 1" identifier != number_literal) ))) )) (compound_statement "{\n    pvVar11 = (void *)FUN_000187e0();\n    return pvVar11;\n  }" { (expression_statement "pvVar11 = (void *)FUN_000187e0();" (assignment_expression "pvVar11 = (void *)FUN_000187e0()" identifier = (cast_expression "(void *)FUN_000187e0()" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_000187e0()" identifier (argument_list "()" ( ))))) ;) (return_statement "return pvVar11;" return identifier ;) })) (return_statement "return local_48;" return identifier ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nFTSENT * __regparm3 fts_build(FTS *sp,int type)\n\n{\n  DIR *__dirp;\n  size_t sVar1;\n  _ftsent *p_Var2;\n  char *pcVar3;\n  bool bVar4;\n  __ino64_t _Var5;\n  _ftsent *p_Var6;\n  FTSENT *pFVar7;\n  char *pcVar8;\n  _Bool _Var9;\n  ushort uVar10;\n  int *piVar11;\n  dirent64 *pdVar12;\n  size_t namelen;\n  FTSENT *pFVar13;\n  undefined4 uVar14;\n  int iVar15;\n  FTSENT *pFVar16;\n  DIR *pDVar17;\n  uint uVar18;\n  fsword fVar19;\n  leaf_optimization lVar20;\n  uint uVar21;\n  DIR *__dirp_00;\n  bool bVar22;\n  uint local_5c;\n  FTSENT *local_54;\n  uint local_4c;\n  FTSENT *local_48;\n  uint local_44;\n  char *local_38;\n  uint local_34;\n  size_t local_30;\n  int local_2c;\n  _Bool local_1f;\n  \n  pFVar16 = sp->fts_cur;\n  __dirp = (DIR *)pFVar16->fts_dirp;\n  if (__dirp == (DIR *)0x0) {\n    uVar18 = sp->fts_options;\n    uVar21 = uVar18 & 0x10;\n    if (((uVar21 != 0) && (uVar21 = 0x20000, (uVar18 & 1) != 0)) &&\n       (uVar21 = pFVar16->fts_level, uVar21 != 0)) {\n      uVar21 = 0x20000;\n    }\n    iVar15 = -100;\n    if ((uVar18 & 0x204) == 0x200) {\n      iVar15 = sp->fts_cwd_fd;\n    }\n    local_2c = openat_safer(iVar15,pFVar16->fts_accpath,(uVar18 & 0x800) << 7 | uVar21 | 0x90900);\n    if (local_2c < 0) {\n      pFVar16->fts_dirp = (DIR *)0x0;\njoined_r0x00019b00:\n      if (type == 3) {\n        pFVar16->fts_info = 4;\n        piVar11 = __errno_location();\n        pFVar16->fts_errno = *piVar11;\n      }\n      return (FTSENT *)0x0;\n    }\n    pDVar17 = fdopendir(local_2c);\n    if (pDVar17 == (DIR *)0x0) {\n      piVar11 = __errno_location();\n      iVar15 = *piVar11;\n      close(local_2c);\n      *piVar11 = iVar15;\n      pFVar16->fts_dirp = (DIR *)0x0;\n      goto joined_r0x00019b00;\n    }\n    pFVar16->fts_dirp = (DIR *)pDVar17;\n    if (pFVar16->fts_info == 0xb) {\n      uVar10 = fts_stat(sp,pFVar16,false);\n      pFVar16->fts_info = uVar10;\n    }\n    else if (((uint)sp->fts_options & 0x100) != 0) {\n      leave_dir((FTS *)sp->fts_options,(FTSENT *)&sp->fts_cycle,(FTS *)pFVar16);\n      fts_stat(sp,pFVar16,false);\n      _Var9 = enter_dir((FTS *)sp->fts_options,(FTSENT *)&sp->fts_cycle,(FTS *)pFVar16);\n      if (!_Var9) {\n        piVar11 = __errno_location();\n        *piVar11 = 0xc;\n        return (FTSENT *)0x0;\n      }\n    }\n    local_34 = (-(uint)(sp->fts_compar == (_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *)0x0) &\n               0x186a1) - 1;\n    if (type == 2) {\nLAB_00019a90:\n      bVar22 = false;\n      uVar18 = sp->fts_options;\n      goto LAB_000192d4;\n    }\n    if ((((sp->fts_options & 0x38U) == 0x18) && (pFVar16->fts_statp[0].st_nlink == 2)) &&\n       (lVar20 = leaf_optimization(pFVar16,local_2c), lVar20 != NO_LEAF_OPTIMIZATION)) {\n      if (type != 3) goto LAB_00019a90;\n      bVar4 = false;\n      bVar22 = true;\n    }\n    else {\n      bVar22 = type == 3;\n      bVar4 = true;\n    }\n    if (((sp->fts_options & 0x200) == 0) || (local_2c = rpl_fcntl(local_2c,0x406,3), -1 < local_2c))\n    {\n      iVar15 = fts_safe_changedir(sp,pFVar16,local_2c,(char *)0x0);\n      if (iVar15 == 0) goto LAB_000192cc;\n      __dirp_00 = pFVar16->fts_dirp;\n      uVar10 = pFVar16->fts_flags | 1;\n      if ((bVar22) && (bVar4)) goto LAB_0001980f;\nLAB_0001982f:\n      pFVar16->fts_flags = uVar10;\n      closedir((DIR *)__dirp_00);\n      uVar18 = sp->fts_options;\n      pFVar16->fts_dirp = (DIR *)0x0;\n      if (((uVar18 & 0x200) != 0) && (-1 < local_2c)) {\n        close(local_2c);\n        uVar18 = sp->fts_options;\n      }\n    }\n    else {\n      __dirp_00 = pFVar16->fts_dirp;\n      uVar10 = pFVar16->fts_flags | 1;\n      if ((bVar22) && (bVar4)) {\nLAB_0001980f:\n        piVar11 = __errno_location();\n        pFVar16->fts_errno = *piVar11;\n        goto LAB_0001982f;\n      }\n      pFVar16->fts_flags = uVar10;\n      closedir((DIR *)__dirp_00);\n      uVar18 = sp->fts_options;\n    }\n    bVar22 = false;\n    pFVar16->fts_dirp = (DIR *)0x0;\n  }\n  else {\n    local_2c = dirfd(__dirp);\n    if (local_2c < 0) {\n      closedir((DIR *)pFVar16->fts_dirp);\n      pFVar16->fts_dirp = (DIR *)0x0;\n      goto joined_r0x00019b00;\n    }\n    if (sp->fts_compar == (_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *)0x0) {\n      local_34 = 100000;\n      uVar18 = sp->fts_options;\n      bVar22 = true;\n    }\n    else {\n      local_34 = 0xffffffff;\nLAB_000192cc:\n      bVar22 = true;\n      uVar18 = sp->fts_options;\n    }\n  }\nLAB_000192d4:\n  sVar1 = pFVar16->fts_pathlen;\n  local_4c = sVar1;\n  local_30 = sVar1 - 1;\n  if (pFVar16->fts_path[sVar1 - 1] != '/') {\n    local_4c = sVar1 + 1;\n    local_30 = sVar1;\n  }\n  local_38 = (char *)0x0;\n  if ((uVar18 & 4) != 0) {\n    local_38 = sp->fts_path + local_30 + 1;\n    sp->fts_path[local_30] = '/';\n  }\n  local_44 = sp->fts_pathlen - local_4c;\n  bVar4 = false;\n  local_1f = false;\n  iVar15 = pFVar16->fts_level;\n  local_54 = (FTSENT *)0x0;\n  local_5c = 0;\n  local_48 = (FTSENT *)0x0;\nLAB_000193a8:\n  do {\n    do {\n      pDVar17 = (DIR *)pFVar16->fts_dirp;\n      if (pDVar17 == (DIR *)0x0) goto LAB_00019641;\n      piVar11 = __errno_location();\n      *piVar11 = 0;\n      pdVar12 = readdir64(pDVar17);\n      if (pdVar12 == (dirent64 *)0x0) {\n        if (*piVar11 != 0) {\n          pFVar16->fts_errno = *piVar11;\n          pFVar16->fts_info = (-(ushort)(__dirp == (DIR *)0x0 && local_5c == 0) & 0xfffd) + 7;\n        }\n        if ((DIR *)pFVar16->fts_dirp != (DIR *)0x0) {\n          closedir((DIR *)pFVar16->fts_dirp);\n          pFVar16->fts_dirp = (DIR *)0x0;\n        }\n        goto LAB_00019641;\n      }\n    } while ((((sp->fts_options & 0x20) == 0) && (pdVar12->d_name[0] == '.')) &&\n            ((pdVar12->d_name[1] == '\0' || (*(short *)(pdVar12->d_name + 1) == 0x2e))));\n    namelen = strlen(pdVar12->d_name);\n    pFVar13 = fts_alloc(sp,pdVar12->d_name,namelen);\n    if (pFVar13 == (FTSENT *)0x0) {\nLAB_00019910:\n      iVar15 = *piVar11;\n      free(pFVar13);\n      fts_lfree(local_48);\n      closedir((DIR *)pFVar16->fts_dirp);\n      pFVar16->fts_dirp = (DIR *)0x0;\n      pFVar16->fts_info = 7;\n      sp->fts_options = sp->fts_options | 0x4000;\n      *piVar11 = iVar15;\n      return (FTSENT *)0x0;\n    }\n    if (local_44 <= namelen) {\n      pcVar3 = sp->fts_path;\n      _Var9 = fts_palloc((FTS *)&sp->fts_path,(size_t)&sp->fts_pathlen,\n                         (FTS *)(local_30 + 2 + namelen));\n      if (!_Var9) goto LAB_00019910;\n      pcVar8 = local_38;\n      if ((sp->fts_path != pcVar3) &&\n         (local_1f = _Var9, pcVar8 = sp->fts_path + local_4c, (sp->fts_options & 4) == 0)) {\n        pcVar8 = local_38;\n      }\n      local_38 = pcVar8;\n      local_44 = sp->fts_pathlen - local_4c;\n    }\n    if (CARRY4(namelen,local_4c)) {\n      free(pFVar13);\n      fts_lfree(local_48);\n      closedir((DIR *)pFVar16->fts_dirp);\n      pFVar16->fts_dirp = (DIR *)0x0;\n      pFVar16->fts_info = 7;\n      sp->fts_options = sp->fts_options | 0x4000;\n      *piVar11 = 0x24;\n      return (FTSENT *)0x0;\n    }\n    uVar14 = *(undefined4 *)((int)&pdVar12->d_ino + 4);\n    pFVar13->fts_level = iVar15 + 1;\n    p_Var2 = sp->fts_cur;\n    pFVar13->fts_pathlen = namelen + local_4c;\n    pFVar13->fts_parent = p_Var2;\n    _Var5 = pdVar12->d_ino;\n    *(undefined4 *)((int)&pFVar13->fts_statp[0].st_ino + 4) = uVar14;\n    *(int *)&pFVar13->fts_statp[0].st_ino = (int)_Var5;\n    uVar18 = sp->fts_options;\n    if ((uVar18 & 4) == 0) {\n      pFVar13->fts_accpath = (char *)(pFVar13 + 1);\n    }\n    else {\n      pFVar13->fts_accpath = pFVar13->fts_path;\n      memmove(local_38,pFVar13 + 1,pFVar13->fts_namelen + 1);\n      uVar18 = sp->fts_options;\n    }\n    if ((sp->fts_compar == (_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *)0x0) ||\n       ((uVar18 & 0x400) != 0)) {\n      uVar21 = pdVar12->d_type - 1;\n      if (((uVar18 & 0x18) == 0x18) && ((pdVar12->d_type & 0xfb) != 0)) {\n        pFVar13->fts_info = 0xb;\n        if (uVar21 < 0xc) {\n          pFVar13->fts_statp[0].st_mode = *(__mode_t *)(CSWTCH_40 + uVar21 * 4);\n          uVar14 = 1;\n        }\n        else {\n          pFVar13->fts_statp[0].st_mode = 0;\n          uVar14 = 1;\n        }\n      }\n      else {\n        pFVar13->fts_info = 0xb;\n        if (uVar21 < 0xc) {\n          pFVar13->fts_statp[0].st_mode = *(__mode_t *)(CSWTCH_40 + uVar21 * 4);\n          uVar14 = 2;\n        }\n        else {\n          pFVar13->fts_statp[0].st_mode = 0;\n          uVar14 = 2;\n        }\n      }\n      *(undefined4 *)&pFVar13->fts_statp[0].st_size = uVar14;\n      *(undefined4 *)((int)&pFVar13->fts_statp[0].st_size + 4) = 0;\n    }\n    else {\n      uVar10 = fts_stat(sp,pFVar13,false);\n      pFVar13->fts_info = uVar10;\n    }\n    pFVar13->fts_link = (_ftsent *)0x0;\n    pFVar7 = pFVar13;\n    if (local_48 != (FTSENT *)0x0) {\n      local_54->fts_link = pFVar13;\n      pFVar7 = local_48;\n    }\n    local_48 = pFVar7;\n    local_54 = pFVar13;\n    if (local_5c == 10000) {\n      if ((sp->fts_compar != (_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *)0x0) ||\n         (((fVar19 = filesystem_type(pFVar16,local_2c), fVar19 != 0x6969 && (fVar19 != 0x1021994))\n          && (bVar4 = true, fVar19 != -0xacb2be)))) {\n        local_5c = 0x2711;\n        goto LAB_000193a8;\n      }\n      bVar4 = false;\n    }\n    local_5c = local_5c + 1;\n  } while (local_5c < local_34);\nLAB_00019641:\n  if (local_1f != false) {\n    pcVar3 = sp->fts_path;\n    for (p_Var2 = sp->fts_child; p_Var6 = local_48, p_Var2 != (_ftsent *)0x0;\n        p_Var2 = p_Var2->fts_link) {\n      if ((_ftsent *)p_Var2->fts_accpath != p_Var2 + 1) {\n        p_Var2->fts_accpath = pcVar3 + ((int)p_Var2->fts_accpath - (int)p_Var2->fts_path);\n      }\n      p_Var2->fts_path = pcVar3;\n    }\n    while (pFVar13 = p_Var6, -1 < pFVar13->fts_level) {\n      if ((FTSENT *)pFVar13->fts_accpath != pFVar13 + 1) {\n        pFVar13->fts_accpath = pcVar3 + ((int)pFVar13->fts_accpath - (int)pFVar13->fts_path);\n      }\n      pFVar13->fts_path = pcVar3;\n      p_Var6 = pFVar13->fts_link;\n      if (pFVar13->fts_link == (_ftsent *)0x0) {\n        p_Var6 = pFVar13->fts_parent;\n      }\n    }\n  }\n  if ((sp->fts_options & 4) != 0) {\n    if ((sp->fts_pathlen == local_4c) || (local_5c == 0)) {\n      local_38 = local_38 + -1;\n    }\n    *local_38 = '\0';\n  }\n  if ((__dirp == (DIR *)0x0) && (bVar22)) {\n    if ((type != 1) && (local_5c != 0)) goto LAB_000196b9;\n    if (pFVar16->fts_level == 0) {\n      iVar15 = restore_initial_cwd(sp);\n    }\n    else {\n      iVar15 = fts_safe_changedir(sp,pFVar16->fts_parent,-1,"..");\n    }\n    if (iVar15 != 0) {\n      pFVar16->fts_info = 7;\n      sp->fts_options = sp->fts_options | 0x4000;\n      fts_lfree(local_48);\n      return (FTSENT *)0x0;\n    }\n  }\n  if (local_5c == 0) {\n    if (((type == 3) && (pFVar16->fts_info != 4)) && (pFVar16->fts_info != 7)) {\n      pFVar16->fts_info = 6;\n    }\n    fts_lfree(local_48);\n    return (FTSENT *)0x0;\n  }\nLAB_000196b9:\n  if (bVar4) {\n    sp->fts_compar = fts_compare_ino;\n    pFVar16 = fts_sort(sp,local_48,local_5c);\n    sp->fts_compar = (_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *)0x0;\n    return pFVar16;\n  }\n  if ((sp->fts_compar != (_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *)0x0) && (local_5c != 1)) {\n    pFVar16 = fts_sort(sp,local_48,local_5c);\n    return pFVar16;\n  }\n  return local_48;\n}\n\n" comment (ERROR "FTSENT * __regparm3 fts_build(FTS *sp,int type)" (binary_expression "FTSENT * __regparm3 fts_build(FTS *sp,int type)" identifier * (ERROR "__regparm3" identifier) (call_expression "fts_build(FTS *sp,int type)" identifier (argument_list "(FTS *sp,int type)" ( (binary_expression "FTS *sp" identifier * identifier) , (ERROR "int" identifier) identifier ))))) (compound_statement "{\n  DIR *__dirp;\n  size_t sVar1;\n  _ftsent *p_Var2;\n  char *pcVar3;\n  bool bVar4;\n  __ino64_t _Var5;\n  _ftsent *p_Var6;\n  FTSENT *pFVar7;\n  char *pcVar8;\n  _Bool _Var9;\n  ushort uVar10;\n  int *piVar11;\n  dirent64 *pdVar12;\n  size_t namelen;\n  FTSENT *pFVar13;\n  undefined4 uVar14;\n  int iVar15;\n  FTSENT *pFVar16;\n  DIR *pDVar17;\n  uint uVar18;\n  fsword fVar19;\n  leaf_optimization lVar20;\n  uint uVar21;\n  DIR *__dirp_00;\n  bool bVar22;\n  uint local_5c;\n  FTSENT *local_54;\n  uint local_4c;\n  FTSENT *local_48;\n  uint local_44;\n  char *local_38;\n  uint local_34;\n  size_t local_30;\n  int local_2c;\n  _Bool local_1f;\n  \n  pFVar16 = sp->fts_cur;\n  __dirp = (DIR *)pFVar16->fts_dirp;\n  if (__dirp == (DIR *)0x0) {\n    uVar18 = sp->fts_options;\n    uVar21 = uVar18 & 0x10;\n    if (((uVar21 != 0) && (uVar21 = 0x20000, (uVar18 & 1) != 0)) &&\n       (uVar21 = pFVar16->fts_level, uVar21 != 0)) {\n      uVar21 = 0x20000;\n    }\n    iVar15 = -100;\n    if ((uVar18 & 0x204) == 0x200) {\n      iVar15 = sp->fts_cwd_fd;\n    }\n    local_2c = openat_safer(iVar15,pFVar16->fts_accpath,(uVar18 & 0x800) << 7 | uVar21 | 0x90900);\n    if (local_2c < 0) {\n      pFVar16->fts_dirp = (DIR *)0x0;\njoined_r0x00019b00:\n      if (type == 3) {\n        pFVar16->fts_info = 4;\n        piVar11 = __errno_location();\n        pFVar16->fts_errno = *piVar11;\n      }\n      return (FTSENT *)0x0;\n    }\n    pDVar17 = fdopendir(local_2c);\n    if (pDVar17 == (DIR *)0x0) {\n      piVar11 = __errno_location();\n      iVar15 = *piVar11;\n      close(local_2c);\n      *piVar11 = iVar15;\n      pFVar16->fts_dirp = (DIR *)0x0;\n      goto joined_r0x00019b00;\n    }\n    pFVar16->fts_dirp = (DIR *)pDVar17;\n    if (pFVar16->fts_info == 0xb) {\n      uVar10 = fts_stat(sp,pFVar16,false);\n      pFVar16->fts_info = uVar10;\n    }\n    else if (((uint)sp->fts_options & 0x100) != 0) {\n      leave_dir((FTS *)sp->fts_options,(FTSENT *)&sp->fts_cycle,(FTS *)pFVar16);\n      fts_stat(sp,pFVar16,false);\n      _Var9 = enter_dir((FTS *)sp->fts_options,(FTSENT *)&sp->fts_cycle,(FTS *)pFVar16);\n      if (!_Var9) {\n        piVar11 = __errno_location();\n        *piVar11 = 0xc;\n        return (FTSENT *)0x0;\n      }\n    }\n    local_34 = (-(uint)(sp->fts_compar == (_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *)0x0) &\n               0x186a1) - 1;\n    if (type == 2) {\nLAB_00019a90:\n      bVar22 = false;\n      uVar18 = sp->fts_options;\n      goto LAB_000192d4;\n    }\n    if ((((sp->fts_options & 0x38U) == 0x18) && (pFVar16->fts_statp[0].st_nlink == 2)) &&\n       (lVar20 = leaf_optimization(pFVar16,local_2c), lVar20 != NO_LEAF_OPTIMIZATION)) {\n      if (type != 3) goto LAB_00019a90;\n      bVar4 = false;\n      bVar22 = true;\n    }\n    else {\n      bVar22 = type == 3;\n      bVar4 = true;\n    }\n    if (((sp->fts_options & 0x200) == 0) || (local_2c = rpl_fcntl(local_2c,0x406,3), -1 < local_2c))\n    {\n      iVar15 = fts_safe_changedir(sp,pFVar16,local_2c,(char *)0x0);\n      if (iVar15 == 0) goto LAB_000192cc;\n      __dirp_00 = pFVar16->fts_dirp;\n      uVar10 = pFVar16->fts_flags | 1;\n      if ((bVar22) && (bVar4)) goto LAB_0001980f;\nLAB_0001982f:\n      pFVar16->fts_flags = uVar10;\n      closedir((DIR *)__dirp_00);\n      uVar18 = sp->fts_options;\n      pFVar16->fts_dirp = (DIR *)0x0;\n      if (((uVar18 & 0x200) != 0) && (-1 < local_2c)) {\n        close(local_2c);\n        uVar18 = sp->fts_options;\n      }\n    }\n    else {\n      __dirp_00 = pFVar16->fts_dirp;\n      uVar10 = pFVar16->fts_flags | 1;\n      if ((bVar22) && (bVar4)) {\nLAB_0001980f:\n        piVar11 = __errno_location();\n        pFVar16->fts_errno = *piVar11;\n        goto LAB_0001982f;\n      }\n      pFVar16->fts_flags = uVar10;\n      closedir((DIR *)__dirp_00);\n      uVar18 = sp->fts_options;\n    }\n    bVar22 = false;\n    pFVar16->fts_dirp = (DIR *)0x0;\n  }\n  else {\n    local_2c = dirfd(__dirp);\n    if (local_2c < 0) {\n      closedir((DIR *)pFVar16->fts_dirp);\n      pFVar16->fts_dirp = (DIR *)0x0;\n      goto joined_r0x00019b00;\n    }\n    if (sp->fts_compar == (_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *)0x0) {\n      local_34 = 100000;\n      uVar18 = sp->fts_options;\n      bVar22 = true;\n    }\n    else {\n      local_34 = 0xffffffff;\nLAB_000192cc:\n      bVar22 = true;\n      uVar18 = sp->fts_options;\n    }\n  }\nLAB_000192d4:\n  sVar1 = pFVar16->fts_pathlen;\n  local_4c = sVar1;\n  local_30 = sVar1 - 1;\n  if (pFVar16->fts_path[sVar1 - 1] != '/') {\n    local_4c = sVar1 + 1;\n    local_30 = sVar1;\n  }\n  local_38 = (char *)0x0;\n  if ((uVar18 & 4) != 0) {\n    local_38 = sp->fts_path + local_30 + 1;\n    sp->fts_path[local_30] = '/';\n  }\n  local_44 = sp->fts_pathlen - local_4c;\n  bVar4 = false;\n  local_1f = false;\n  iVar15 = pFVar16->fts_level;\n  local_54 = (FTSENT *)0x0;\n  local_5c = 0;\n  local_48 = (FTSENT *)0x0;\nLAB_000193a8:\n  do {\n    do {\n      pDVar17 = (DIR *)pFVar16->fts_dirp;\n      if (pDVar17 == (DIR *)0x0) goto LAB_00019641;\n      piVar11 = __errno_location();\n      *piVar11 = 0;\n      pdVar12 = readdir64(pDVar17);\n      if (pdVar12 == (dirent64 *)0x0) {\n        if (*piVar11 != 0) {\n          pFVar16->fts_errno = *piVar11;\n          pFVar16->fts_info = (-(ushort)(__dirp == (DIR *)0x0 && local_5c == 0) & 0xfffd) + 7;\n        }\n        if ((DIR *)pFVar16->fts_dirp != (DIR *)0x0) {\n          closedir((DIR *)pFVar16->fts_dirp);\n          pFVar16->fts_dirp = (DIR *)0x0;\n        }\n        goto LAB_00019641;\n      }\n    } while ((((sp->fts_options & 0x20) == 0) && (pdVar12->d_name[0] == '.')) &&\n            ((pdVar12->d_name[1] == '\0' || (*(short *)(pdVar12->d_name + 1) == 0x2e))));\n    namelen = strlen(pdVar12->d_name);\n    pFVar13 = fts_alloc(sp,pdVar12->d_name,namelen);\n    if (pFVar13 == (FTSENT *)0x0) {\nLAB_00019910:\n      iVar15 = *piVar11;\n      free(pFVar13);\n      fts_lfree(local_48);\n      closedir((DIR *)pFVar16->fts_dirp);\n      pFVar16->fts_dirp = (DIR *)0x0;\n      pFVar16->fts_info = 7;\n      sp->fts_options = sp->fts_options | 0x4000;\n      *piVar11 = iVar15;\n      return (FTSENT *)0x0;\n    }\n    if (local_44 <= namelen) {\n      pcVar3 = sp->fts_path;\n      _Var9 = fts_palloc((FTS *)&sp->fts_path,(size_t)&sp->fts_pathlen,\n                         (FTS *)(local_30 + 2 + namelen));\n      if (!_Var9) goto LAB_00019910;\n      pcVar8 = local_38;\n      if ((sp->fts_path != pcVar3) &&\n         (local_1f = _Var9, pcVar8 = sp->fts_path + local_4c, (sp->fts_options & 4) == 0)) {\n        pcVar8 = local_38;\n      }\n      local_38 = pcVar8;\n      local_44 = sp->fts_pathlen - local_4c;\n    }\n    if (CARRY4(namelen,local_4c)) {\n      free(pFVar13);\n      fts_lfree(local_48);\n      closedir((DIR *)pFVar16->fts_dirp);\n      pFVar16->fts_dirp = (DIR *)0x0;\n      pFVar16->fts_info = 7;\n      sp->fts_options = sp->fts_options | 0x4000;\n      *piVar11 = 0x24;\n      return (FTSENT *)0x0;\n    }\n    uVar14 = *(undefined4 *)((int)&pdVar12->d_ino + 4);\n    pFVar13->fts_level = iVar15 + 1;\n    p_Var2 = sp->fts_cur;\n    pFVar13->fts_pathlen = namelen + local_4c;\n    pFVar13->fts_parent = p_Var2;\n    _Var5 = pdVar12->d_ino;\n    *(undefined4 *)((int)&pFVar13->fts_statp[0].st_ino + 4) = uVar14;\n    *(int *)&pFVar13->fts_statp[0].st_ino = (int)_Var5;\n    uVar18 = sp->fts_options;\n    if ((uVar18 & 4) == 0) {\n      pFVar13->fts_accpath = (char *)(pFVar13 + 1);\n    }\n    else {\n      pFVar13->fts_accpath = pFVar13->fts_path;\n      memmove(local_38,pFVar13 + 1,pFVar13->fts_namelen + 1);\n      uVar18 = sp->fts_options;\n    }\n    if ((sp->fts_compar == (_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *)0x0) ||\n       ((uVar18 & 0x400) != 0)) {\n      uVar21 = pdVar12->d_type - 1;\n      if (((uVar18 & 0x18) == 0x18) && ((pdVar12->d_type & 0xfb) != 0)) {\n        pFVar13->fts_info = 0xb;\n        if (uVar21 < 0xc) {\n          pFVar13->fts_statp[0].st_mode = *(__mode_t *)(CSWTCH_40 + uVar21 * 4);\n          uVar14 = 1;\n        }\n        else {\n          pFVar13->fts_statp[0].st_mode = 0;\n          uVar14 = 1;\n        }\n      }\n      else {\n        pFVar13->fts_info = 0xb;\n        if (uVar21 < 0xc) {\n          pFVar13->fts_statp[0].st_mode = *(__mode_t *)(CSWTCH_40 + uVar21 * 4);\n          uVar14 = 2;\n        }\n        else {\n          pFVar13->fts_statp[0].st_mode = 0;\n          uVar14 = 2;\n        }\n      }\n      *(undefined4 *)&pFVar13->fts_statp[0].st_size = uVar14;\n      *(undefined4 *)((int)&pFVar13->fts_statp[0].st_size + 4) = 0;\n    }\n    else {\n      uVar10 = fts_stat(sp,pFVar13,false);\n      pFVar13->fts_info = uVar10;\n    }\n    pFVar13->fts_link = (_ftsent *)0x0;\n    pFVar7 = pFVar13;\n    if (local_48 != (FTSENT *)0x0) {\n      local_54->fts_link = pFVar13;\n      pFVar7 = local_48;\n    }\n    local_48 = pFVar7;\n    local_54 = pFVar13;\n    if (local_5c == 10000) {\n      if ((sp->fts_compar != (_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *)0x0) ||\n         (((fVar19 = filesystem_type(pFVar16,local_2c), fVar19 != 0x6969 && (fVar19 != 0x1021994))\n          && (bVar4 = true, fVar19 != -0xacb2be)))) {\n        local_5c = 0x2711;\n        goto LAB_000193a8;\n      }\n      bVar4 = false;\n    }\n    local_5c = local_5c + 1;\n  } while (local_5c < local_34);\nLAB_00019641:\n  if (local_1f != false) {\n    pcVar3 = sp->fts_path;\n    for (p_Var2 = sp->fts_child; p_Var6 = local_48, p_Var2 != (_ftsent *)0x0;\n        p_Var2 = p_Var2->fts_link) {\n      if ((_ftsent *)p_Var2->fts_accpath != p_Var2 + 1) {\n        p_Var2->fts_accpath = pcVar3 + ((int)p_Var2->fts_accpath - (int)p_Var2->fts_path);\n      }\n      p_Var2->fts_path = pcVar3;\n    }\n    while (pFVar13 = p_Var6, -1 < pFVar13->fts_level) {\n      if ((FTSENT *)pFVar13->fts_accpath != pFVar13 + 1) {\n        pFVar13->fts_accpath = pcVar3 + ((int)pFVar13->fts_accpath - (int)pFVar13->fts_path);\n      }\n      pFVar13->fts_path = pcVar3;\n      p_Var6 = pFVar13->fts_link;\n      if (pFVar13->fts_link == (_ftsent *)0x0) {\n        p_Var6 = pFVar13->fts_parent;\n      }\n    }\n  }\n  if ((sp->fts_options & 4) != 0) {\n    if ((sp->fts_pathlen == local_4c) || (local_5c == 0)) {\n      local_38 = local_38 + -1;\n    }\n    *local_38 = '\0';\n  }\n  if ((__dirp == (DIR *)0x0) && (bVar22)) {\n    if ((type != 1) && (local_5c != 0)) goto LAB_000196b9;\n    if (pFVar16->fts_level == 0) {\n      iVar15 = restore_initial_cwd(sp);\n    }\n    else {\n      iVar15 = fts_safe_changedir(sp,pFVar16->fts_parent,-1,"..");\n    }\n    if (iVar15 != 0) {\n      pFVar16->fts_info = 7;\n      sp->fts_options = sp->fts_options | 0x4000;\n      fts_lfree(local_48);\n      return (FTSENT *)0x0;\n    }\n  }\n  if (local_5c == 0) {\n    if (((type == 3) && (pFVar16->fts_info != 4)) && (pFVar16->fts_info != 7)) {\n      pFVar16->fts_info = 6;\n    }\n    fts_lfree(local_48);\n    return (FTSENT *)0x0;\n  }\nLAB_000196b9:\n  if (bVar4) {\n    sp->fts_compar = fts_compare_ino;\n    pFVar16 = fts_sort(sp,local_48,local_5c);\n    sp->fts_compar = (_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *)0x0;\n    return pFVar16;\n  }\n  if ((sp->fts_compar != (_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *)0x0) && (local_5c != 1)) {\n    pFVar16 = fts_sort(sp,local_48,local_5c);\n    return pFVar16;\n  }\n  return local_48;\n}" { (declaration "DIR *__dirp;" type_identifier (pointer_declarator "*__dirp" * identifier) ;) (declaration "size_t sVar1;" primitive_type identifier ;) (declaration "_ftsent *p_Var2;" type_identifier (pointer_declarator "*p_Var2" * identifier) ;) (declaration "char *pcVar3;" primitive_type (pointer_declarator "*pcVar3" * identifier) ;) (declaration "bool bVar4;" primitive_type identifier ;) (declaration "__ino64_t _Var5;" type_identifier identifier ;) (declaration "_ftsent *p_Var6;" type_identifier (pointer_declarator "*p_Var6" * identifier) ;) (declaration "FTSENT *pFVar7;" type_identifier (pointer_declarator "*pFVar7" * identifier) ;) (declaration "char *pcVar8;" primitive_type (pointer_declarator "*pcVar8" * identifier) ;) (declaration "_Bool _Var9;" type_identifier identifier ;) (declaration "ushort uVar10;" type_identifier identifier ;) (declaration "int *piVar11;" primitive_type (pointer_declarator "*piVar11" * identifier) ;) (declaration "dirent64 *pdVar12;" type_identifier (pointer_declarator "*pdVar12" * identifier) ;) (declaration "size_t namelen;" primitive_type identifier ;) (declaration "FTSENT *pFVar13;" type_identifier (pointer_declarator "*pFVar13" * identifier) ;) (declaration "undefined4 uVar14;" type_identifier identifier ;) (declaration "int iVar15;" primitive_type identifier ;) (declaration "FTSENT *pFVar16;" type_identifier (pointer_declarator "*pFVar16" * identifier) ;) (declaration "DIR *pDVar17;" type_identifier (pointer_declarator "*pDVar17" * identifier) ;) (declaration "uint uVar18;" type_identifier identifier ;) (declaration "fsword fVar19;" type_identifier identifier ;) (declaration "leaf_optimization lVar20;" type_identifier identifier ;) (declaration "uint uVar21;" type_identifier identifier ;) (declaration "DIR *__dirp_00;" type_identifier (pointer_declarator "*__dirp_00" * identifier) ;) (declaration "bool bVar22;" primitive_type identifier ;) (declaration "uint local_5c;" type_identifier identifier ;) (declaration "FTSENT *local_54;" type_identifier (pointer_declarator "*local_54" * identifier) ;) (declaration "uint local_4c;" type_identifier identifier ;) (declaration "FTSENT *local_48;" type_identifier (pointer_declarator "*local_48" * identifier) ;) (declaration "uint local_44;" type_identifier identifier ;) (declaration "char *local_38;" primitive_type (pointer_declarator "*local_38" * identifier) ;) (declaration "uint local_34;" type_identifier identifier ;) (declaration "size_t local_30;" primitive_type identifier ;) (declaration "int local_2c;" primitive_type identifier ;) (declaration "_Bool local_1f;" type_identifier identifier ;) (expression_statement "pFVar16 = sp->fts_cur;" (assignment_expression "pFVar16 = sp->fts_cur" identifier = (field_expression "sp->fts_cur" identifier -> field_identifier)) ;) (expression_statement "__dirp = (DIR *)pFVar16->fts_dirp;" (assignment_expression "__dirp = (DIR *)pFVar16->fts_dirp" identifier = (cast_expression "(DIR *)pFVar16->fts_dirp" ( (type_descriptor "DIR *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "pFVar16->fts_dirp" identifier -> field_identifier))) ;) (if_statement "if (__dirp == (DIR *)0x0) {\n    uVar18 = sp->fts_options;\n    uVar21 = uVar18 & 0x10;\n    if (((uVar21 != 0) && (uVar21 = 0x20000, (uVar18 & 1) != 0)) &&\n       (uVar21 = pFVar16->fts_level, uVar21 != 0)) {\n      uVar21 = 0x20000;\n    }\n    iVar15 = -100;\n    if ((uVar18 & 0x204) == 0x200) {\n      iVar15 = sp->fts_cwd_fd;\n    }\n    local_2c = openat_safer(iVar15,pFVar16->fts_accpath,(uVar18 & 0x800) << 7 | uVar21 | 0x90900);\n    if (local_2c < 0) {\n      pFVar16->fts_dirp = (DIR *)0x0;\njoined_r0x00019b00:\n      if (type == 3) {\n        pFVar16->fts_info = 4;\n        piVar11 = __errno_location();\n        pFVar16->fts_errno = *piVar11;\n      }\n      return (FTSENT *)0x0;\n    }\n    pDVar17 = fdopendir(local_2c);\n    if (pDVar17 == (DIR *)0x0) {\n      piVar11 = __errno_location();\n      iVar15 = *piVar11;\n      close(local_2c);\n      *piVar11 = iVar15;\n      pFVar16->fts_dirp = (DIR *)0x0;\n      goto joined_r0x00019b00;\n    }\n    pFVar16->fts_dirp = (DIR *)pDVar17;\n    if (pFVar16->fts_info == 0xb) {\n      uVar10 = fts_stat(sp,pFVar16,false);\n      pFVar16->fts_info = uVar10;\n    }\n    else if (((uint)sp->fts_options & 0x100) != 0) {\n      leave_dir((FTS *)sp->fts_options,(FTSENT *)&sp->fts_cycle,(FTS *)pFVar16);\n      fts_stat(sp,pFVar16,false);\n      _Var9 = enter_dir((FTS *)sp->fts_options,(FTSENT *)&sp->fts_cycle,(FTS *)pFVar16);\n      if (!_Var9) {\n        piVar11 = __errno_location();\n        *piVar11 = 0xc;\n        return (FTSENT *)0x0;\n      }\n    }\n    local_34 = (-(uint)(sp->fts_compar == (_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *)0x0) &\n               0x186a1) - 1;\n    if (type == 2) {\nLAB_00019a90:\n      bVar22 = false;\n      uVar18 = sp->fts_options;\n      goto LAB_000192d4;\n    }\n    if ((((sp->fts_options & 0x38U) == 0x18) && (pFVar16->fts_statp[0].st_nlink == 2)) &&\n       (lVar20 = leaf_optimization(pFVar16,local_2c), lVar20 != NO_LEAF_OPTIMIZATION)) {\n      if (type != 3) goto LAB_00019a90;\n      bVar4 = false;\n      bVar22 = true;\n    }\n    else {\n      bVar22 = type == 3;\n      bVar4 = true;\n    }\n    if (((sp->fts_options & 0x200) == 0) || (local_2c = rpl_fcntl(local_2c,0x406,3), -1 < local_2c))\n    {\n      iVar15 = fts_safe_changedir(sp,pFVar16,local_2c,(char *)0x0);\n      if (iVar15 == 0) goto LAB_000192cc;\n      __dirp_00 = pFVar16->fts_dirp;\n      uVar10 = pFVar16->fts_flags | 1;\n      if ((bVar22) && (bVar4)) goto LAB_0001980f;\nLAB_0001982f:\n      pFVar16->fts_flags = uVar10;\n      closedir((DIR *)__dirp_00);\n      uVar18 = sp->fts_options;\n      pFVar16->fts_dirp = (DIR *)0x0;\n      if (((uVar18 & 0x200) != 0) && (-1 < local_2c)) {\n        close(local_2c);\n        uVar18 = sp->fts_options;\n      }\n    }\n    else {\n      __dirp_00 = pFVar16->fts_dirp;\n      uVar10 = pFVar16->fts_flags | 1;\n      if ((bVar22) && (bVar4)) {\nLAB_0001980f:\n        piVar11 = __errno_location();\n        pFVar16->fts_errno = *piVar11;\n        goto LAB_0001982f;\n      }\n      pFVar16->fts_flags = uVar10;\n      closedir((DIR *)__dirp_00);\n      uVar18 = sp->fts_options;\n    }\n    bVar22 = false;\n    pFVar16->fts_dirp = (DIR *)0x0;\n  }\n  else {\n    local_2c = dirfd(__dirp);\n    if (local_2c < 0) {\n      closedir((DIR *)pFVar16->fts_dirp);\n      pFVar16->fts_dirp = (DIR *)0x0;\n      goto joined_r0x00019b00;\n    }\n    if (sp->fts_compar == (_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *)0x0) {\n      local_34 = 100000;\n      uVar18 = sp->fts_options;\n      bVar22 = true;\n    }\n    else {\n      local_34 = 0xffffffff;\nLAB_000192cc:\n      bVar22 = true;\n      uVar18 = sp->fts_options;\n    }\n  }" if (parenthesized_expression "(__dirp == (DIR *)0x0)" ( (binary_expression "__dirp == (DIR *)0x0" identifier == (cast_expression "(DIR *)0x0" ( (type_descriptor "DIR *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    uVar18 = sp->fts_options;\n    uVar21 = uVar18 & 0x10;\n    if (((uVar21 != 0) && (uVar21 = 0x20000, (uVar18 & 1) != 0)) &&\n       (uVar21 = pFVar16->fts_level, uVar21 != 0)) {\n      uVar21 = 0x20000;\n    }\n    iVar15 = -100;\n    if ((uVar18 & 0x204) == 0x200) {\n      iVar15 = sp->fts_cwd_fd;\n    }\n    local_2c = openat_safer(iVar15,pFVar16->fts_accpath,(uVar18 & 0x800) << 7 | uVar21 | 0x90900);\n    if (local_2c < 0) {\n      pFVar16->fts_dirp = (DIR *)0x0;\njoined_r0x00019b00:\n      if (type == 3) {\n        pFVar16->fts_info = 4;\n        piVar11 = __errno_location();\n        pFVar16->fts_errno = *piVar11;\n      }\n      return (FTSENT *)0x0;\n    }\n    pDVar17 = fdopendir(local_2c);\n    if (pDVar17 == (DIR *)0x0) {\n      piVar11 = __errno_location();\n      iVar15 = *piVar11;\n      close(local_2c);\n      *piVar11 = iVar15;\n      pFVar16->fts_dirp = (DIR *)0x0;\n      goto joined_r0x00019b00;\n    }\n    pFVar16->fts_dirp = (DIR *)pDVar17;\n    if (pFVar16->fts_info == 0xb) {\n      uVar10 = fts_stat(sp,pFVar16,false);\n      pFVar16->fts_info = uVar10;\n    }\n    else if (((uint)sp->fts_options & 0x100) != 0) {\n      leave_dir((FTS *)sp->fts_options,(FTSENT *)&sp->fts_cycle,(FTS *)pFVar16);\n      fts_stat(sp,pFVar16,false);\n      _Var9 = enter_dir((FTS *)sp->fts_options,(FTSENT *)&sp->fts_cycle,(FTS *)pFVar16);\n      if (!_Var9) {\n        piVar11 = __errno_location();\n        *piVar11 = 0xc;\n        return (FTSENT *)0x0;\n      }\n    }\n    local_34 = (-(uint)(sp->fts_compar == (_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *)0x0) &\n               0x186a1) - 1;\n    if (type == 2) {\nLAB_00019a90:\n      bVar22 = false;\n      uVar18 = sp->fts_options;\n      goto LAB_000192d4;\n    }\n    if ((((sp->fts_options & 0x38U) == 0x18) && (pFVar16->fts_statp[0].st_nlink == 2)) &&\n       (lVar20 = leaf_optimization(pFVar16,local_2c), lVar20 != NO_LEAF_OPTIMIZATION)) {\n      if (type != 3) goto LAB_00019a90;\n      bVar4 = false;\n      bVar22 = true;\n    }\n    else {\n      bVar22 = type == 3;\n      bVar4 = true;\n    }\n    if (((sp->fts_options & 0x200) == 0) || (local_2c = rpl_fcntl(local_2c,0x406,3), -1 < local_2c))\n    {\n      iVar15 = fts_safe_changedir(sp,pFVar16,local_2c,(char *)0x0);\n      if (iVar15 == 0) goto LAB_000192cc;\n      __dirp_00 = pFVar16->fts_dirp;\n      uVar10 = pFVar16->fts_flags | 1;\n      if ((bVar22) && (bVar4)) goto LAB_0001980f;\nLAB_0001982f:\n      pFVar16->fts_flags = uVar10;\n      closedir((DIR *)__dirp_00);\n      uVar18 = sp->fts_options;\n      pFVar16->fts_dirp = (DIR *)0x0;\n      if (((uVar18 & 0x200) != 0) && (-1 < local_2c)) {\n        close(local_2c);\n        uVar18 = sp->fts_options;\n      }\n    }\n    else {\n      __dirp_00 = pFVar16->fts_dirp;\n      uVar10 = pFVar16->fts_flags | 1;\n      if ((bVar22) && (bVar4)) {\nLAB_0001980f:\n        piVar11 = __errno_location();\n        pFVar16->fts_errno = *piVar11;\n        goto LAB_0001982f;\n      }\n      pFVar16->fts_flags = uVar10;\n      closedir((DIR *)__dirp_00);\n      uVar18 = sp->fts_options;\n    }\n    bVar22 = false;\n    pFVar16->fts_dirp = (DIR *)0x0;\n  }" { (expression_statement "uVar18 = sp->fts_options;" (assignment_expression "uVar18 = sp->fts_options" identifier = (field_expression "sp->fts_options" identifier -> field_identifier)) ;) (expression_statement "uVar21 = uVar18 & 0x10;" (assignment_expression "uVar21 = uVar18 & 0x10" identifier = (binary_expression "uVar18 & 0x10" identifier & number_literal)) ;) (if_statement "if (((uVar21 != 0) && (uVar21 = 0x20000, (uVar18 & 1) != 0)) &&\n       (uVar21 = pFVar16->fts_level, uVar21 != 0)) {\n      uVar21 = 0x20000;\n    }" if (parenthesized_expression "(((uVar21 != 0) && (uVar21 = 0x20000, (uVar18 & 1) != 0)) &&\n       (uVar21 = pFVar16->fts_level, uVar21 != 0))" ( (binary_expression "((uVar21 != 0) && (uVar21 = 0x20000, (uVar18 & 1) != 0)) &&\n       (uVar21 = pFVar16->fts_level, uVar21 != 0)" (parenthesized_expression "((uVar21 != 0) && (uVar21 = 0x20000, (uVar18 & 1) != 0))" ( (binary_expression "(uVar21 != 0) && (uVar21 = 0x20000, (uVar18 & 1) != 0)" (parenthesized_expression "(uVar21 != 0)" ( (binary_expression "uVar21 != 0" identifier != number_literal) )) && (parenthesized_expression "(uVar21 = 0x20000, (uVar18 & 1) != 0)" ( (comma_expression "uVar21 = 0x20000, (uVar18 & 1) != 0" (assignment_expression "uVar21 = 0x20000" identifier = number_literal) , (binary_expression "(uVar18 & 1) != 0" (parenthesized_expression "(uVar18 & 1)" ( (binary_expression "uVar18 & 1" identifier & number_literal) )) != number_literal)) ))) )) && (parenthesized_expression "(uVar21 = pFVar16->fts_level, uVar21 != 0)" ( (comma_expression "uVar21 = pFVar16->fts_level, uVar21 != 0" (assignment_expression "uVar21 = pFVar16->fts_level" identifier = (field_expression "pFVar16->fts_level" identifier -> field_identifier)) , (binary_expression "uVar21 != 0" identifier != number_literal)) ))) )) (compound_statement "{\n      uVar21 = 0x20000;\n    }" { (expression_statement "uVar21 = 0x20000;" (assignment_expression "uVar21 = 0x20000" identifier = number_literal) ;) })) (expression_statement "iVar15 = -100;" (assignment_expression "iVar15 = -100" identifier = number_literal) ;) (if_statement "if ((uVar18 & 0x204) == 0x200) {\n      iVar15 = sp->fts_cwd_fd;\n    }" if (parenthesized_expression "((uVar18 & 0x204) == 0x200)" ( (binary_expression "(uVar18 & 0x204) == 0x200" (parenthesized_expression "(uVar18 & 0x204)" ( (binary_expression "uVar18 & 0x204" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n      iVar15 = sp->fts_cwd_fd;\n    }" { (expression_statement "iVar15 = sp->fts_cwd_fd;" (assignment_expression "iVar15 = sp->fts_cwd_fd" identifier = (field_expression "sp->fts_cwd_fd" identifier -> field_identifier)) ;) })) (expression_statement "local_2c = openat_safer(iVar15,pFVar16->fts_accpath,(uVar18 & 0x800) << 7 | uVar21 | 0x90900);" (assignment_expression "local_2c = openat_safer(iVar15,pFVar16->fts_accpath,(uVar18 & 0x800) << 7 | uVar21 | 0x90900)" identifier = (call_expression "openat_safer(iVar15,pFVar16->fts_accpath,(uVar18 & 0x800) << 7 | uVar21 | 0x90900)" identifier (argument_list "(iVar15,pFVar16->fts_accpath,(uVar18 & 0x800) << 7 | uVar21 | 0x90900)" ( identifier , (field_expression "pFVar16->fts_accpath" identifier -> field_identifier) , (binary_expression "(uVar18 & 0x800) << 7 | uVar21 | 0x90900" (binary_expression "(uVar18 & 0x800) << 7 | uVar21" (binary_expression "(uVar18 & 0x800) << 7" (parenthesized_expression "(uVar18 & 0x800)" ( (binary_expression "uVar18 & 0x800" identifier & number_literal) )) << number_literal) | identifier) | number_literal) )))) ;) (if_statement "if (local_2c < 0) {\n      pFVar16->fts_dirp = (DIR *)0x0;\njoined_r0x00019b00:\n      if (type == 3) {\n        pFVar16->fts_info = 4;\n        piVar11 = __errno_location();\n        pFVar16->fts_errno = *piVar11;\n      }\n      return (FTSENT *)0x0;\n    }" if (parenthesized_expression "(local_2c < 0)" ( (binary_expression "local_2c < 0" identifier < number_literal) )) (compound_statement "{\n      pFVar16->fts_dirp = (DIR *)0x0;\njoined_r0x00019b00:\n      if (type == 3) {\n        pFVar16->fts_info = 4;\n        piVar11 = __errno_location();\n        pFVar16->fts_errno = *piVar11;\n      }\n      return (FTSENT *)0x0;\n    }" { (expression_statement "pFVar16->fts_dirp = (DIR *)0x0;" (assignment_expression "pFVar16->fts_dirp = (DIR *)0x0" (field_expression "pFVar16->fts_dirp" identifier -> field_identifier) = (cast_expression "(DIR *)0x0" ( (type_descriptor "DIR *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (labeled_statement "joined_r0x00019b00:\n      if (type == 3) {\n        pFVar16->fts_info = 4;\n        piVar11 = __errno_location();\n        pFVar16->fts_errno = *piVar11;\n      }" statement_identifier : (if_statement "if (type == 3) {\n        pFVar16->fts_info = 4;\n        piVar11 = __errno_location();\n        pFVar16->fts_errno = *piVar11;\n      }" if (parenthesized_expression "(type == 3)" ( (binary_expression "type == 3" identifier == number_literal) )) (compound_statement "{\n        pFVar16->fts_info = 4;\n        piVar11 = __errno_location();\n        pFVar16->fts_errno = *piVar11;\n      }" { (expression_statement "pFVar16->fts_info = 4;" (assignment_expression "pFVar16->fts_info = 4" (field_expression "pFVar16->fts_info" identifier -> field_identifier) = number_literal) ;) (expression_statement "piVar11 = __errno_location();" (assignment_expression "piVar11 = __errno_location()" identifier = (call_expression "__errno_location()" identifier (argument_list "()" ( )))) ;) (expression_statement "pFVar16->fts_errno = *piVar11;" (assignment_expression "pFVar16->fts_errno = *piVar11" (field_expression "pFVar16->fts_errno" identifier -> field_identifier) = (pointer_expression "*piVar11" * identifier)) ;) }))) (return_statement "return (FTSENT *)0x0;" return (cast_expression "(FTSENT *)0x0" ( (type_descriptor "FTSENT *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (expression_statement "pDVar17 = fdopendir(local_2c);" (assignment_expression "pDVar17 = fdopendir(local_2c)" identifier = (call_expression "fdopendir(local_2c)" identifier (argument_list "(local_2c)" ( identifier )))) ;) (if_statement "if (pDVar17 == (DIR *)0x0) {\n      piVar11 = __errno_location();\n      iVar15 = *piVar11;\n      close(local_2c);\n      *piVar11 = iVar15;\n      pFVar16->fts_dirp = (DIR *)0x0;\n      goto joined_r0x00019b00;\n    }" if (parenthesized_expression "(pDVar17 == (DIR *)0x0)" ( (binary_expression "pDVar17 == (DIR *)0x0" identifier == (cast_expression "(DIR *)0x0" ( (type_descriptor "DIR *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      piVar11 = __errno_location();\n      iVar15 = *piVar11;\n      close(local_2c);\n      *piVar11 = iVar15;\n      pFVar16->fts_dirp = (DIR *)0x0;\n      goto joined_r0x00019b00;\n    }" { (expression_statement "piVar11 = __errno_location();" (assignment_expression "piVar11 = __errno_location()" identifier = (call_expression "__errno_location()" identifier (argument_list "()" ( )))) ;) (expression_statement "iVar15 = *piVar11;" (assignment_expression "iVar15 = *piVar11" identifier = (pointer_expression "*piVar11" * identifier)) ;) (expression_statement "close(local_2c);" (call_expression "close(local_2c)" identifier (argument_list "(local_2c)" ( identifier ))) ;) (expression_statement "*piVar11 = iVar15;" (assignment_expression "*piVar11 = iVar15" (pointer_expression "*piVar11" * identifier) = identifier) ;) (expression_statement "pFVar16->fts_dirp = (DIR *)0x0;" (assignment_expression "pFVar16->fts_dirp = (DIR *)0x0" (field_expression "pFVar16->fts_dirp" identifier -> field_identifier) = (cast_expression "(DIR *)0x0" ( (type_descriptor "DIR *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (goto_statement "goto joined_r0x00019b00;" goto statement_identifier ;) })) (expression_statement "pFVar16->fts_dirp = (DIR *)pDVar17;" (assignment_expression "pFVar16->fts_dirp = (DIR *)pDVar17" (field_expression "pFVar16->fts_dirp" identifier -> field_identifier) = (cast_expression "(DIR *)pDVar17" ( (type_descriptor "DIR *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (if_statement "if (pFVar16->fts_info == 0xb) {\n      uVar10 = fts_stat(sp,pFVar16,false);\n      pFVar16->fts_info = uVar10;\n    }\n    else if (((uint)sp->fts_options & 0x100) != 0) {\n      leave_dir((FTS *)sp->fts_options,(FTSENT *)&sp->fts_cycle,(FTS *)pFVar16);\n      fts_stat(sp,pFVar16,false);\n      _Var9 = enter_dir((FTS *)sp->fts_options,(FTSENT *)&sp->fts_cycle,(FTS *)pFVar16);\n      if (!_Var9) {\n        piVar11 = __errno_location();\n        *piVar11 = 0xc;\n        return (FTSENT *)0x0;\n      }\n    }" if (parenthesized_expression "(pFVar16->fts_info == 0xb)" ( (binary_expression "pFVar16->fts_info == 0xb" (field_expression "pFVar16->fts_info" identifier -> field_identifier) == number_literal) )) (compound_statement "{\n      uVar10 = fts_stat(sp,pFVar16,false);\n      pFVar16->fts_info = uVar10;\n    }" { (expression_statement "uVar10 = fts_stat(sp,pFVar16,false);" (assignment_expression "uVar10 = fts_stat(sp,pFVar16,false)" identifier = (call_expression "fts_stat(sp,pFVar16,false)" identifier (argument_list "(sp,pFVar16,false)" ( identifier , identifier , false )))) ;) (expression_statement "pFVar16->fts_info = uVar10;" (assignment_expression "pFVar16->fts_info = uVar10" (field_expression "pFVar16->fts_info" identifier -> field_identifier) = identifier) ;) }) (else_clause "else if (((uint)sp->fts_options & 0x100) != 0) {\n      leave_dir((FTS *)sp->fts_options,(FTSENT *)&sp->fts_cycle,(FTS *)pFVar16);\n      fts_stat(sp,pFVar16,false);\n      _Var9 = enter_dir((FTS *)sp->fts_options,(FTSENT *)&sp->fts_cycle,(FTS *)pFVar16);\n      if (!_Var9) {\n        piVar11 = __errno_location();\n        *piVar11 = 0xc;\n        return (FTSENT *)0x0;\n      }\n    }" else (if_statement "if (((uint)sp->fts_options & 0x100) != 0) {\n      leave_dir((FTS *)sp->fts_options,(FTSENT *)&sp->fts_cycle,(FTS *)pFVar16);\n      fts_stat(sp,pFVar16,false);\n      _Var9 = enter_dir((FTS *)sp->fts_options,(FTSENT *)&sp->fts_cycle,(FTS *)pFVar16);\n      if (!_Var9) {\n        piVar11 = __errno_location();\n        *piVar11 = 0xc;\n        return (FTSENT *)0x0;\n      }\n    }" if (parenthesized_expression "(((uint)sp->fts_options & 0x100) != 0)" ( (binary_expression "((uint)sp->fts_options & 0x100) != 0" (parenthesized_expression "((uint)sp->fts_options & 0x100)" ( (binary_expression "(uint)sp->fts_options & 0x100" (cast_expression "(uint)sp->fts_options" ( (type_descriptor "uint" type_identifier) ) (field_expression "sp->fts_options" identifier -> field_identifier)) & number_literal) )) != number_literal) )) (compound_statement "{\n      leave_dir((FTS *)sp->fts_options,(FTSENT *)&sp->fts_cycle,(FTS *)pFVar16);\n      fts_stat(sp,pFVar16,false);\n      _Var9 = enter_dir((FTS *)sp->fts_options,(FTSENT *)&sp->fts_cycle,(FTS *)pFVar16);\n      if (!_Var9) {\n        piVar11 = __errno_location();\n        *piVar11 = 0xc;\n        return (FTSENT *)0x0;\n      }\n    }" { (expression_statement "leave_dir((FTS *)sp->fts_options,(FTSENT *)&sp->fts_cycle,(FTS *)pFVar16);" (call_expression "leave_dir((FTS *)sp->fts_options,(FTSENT *)&sp->fts_cycle,(FTS *)pFVar16)" identifier (argument_list "((FTS *)sp->fts_options,(FTSENT *)&sp->fts_cycle,(FTS *)pFVar16)" ( (cast_expression "(FTS *)sp->fts_options" ( (type_descriptor "FTS *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "sp->fts_options" identifier -> field_identifier)) , (cast_expression "(FTSENT *)&sp->fts_cycle" ( (type_descriptor "FTSENT *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&sp->fts_cycle" & (field_expression "sp->fts_cycle" identifier -> field_identifier))) , (cast_expression "(FTS *)pFVar16" ( (type_descriptor "FTS *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) ))) ;) (expression_statement "fts_stat(sp,pFVar16,false);" (call_expression "fts_stat(sp,pFVar16,false)" identifier (argument_list "(sp,pFVar16,false)" ( identifier , identifier , false ))) ;) (expression_statement "_Var9 = enter_dir((FTS *)sp->fts_options,(FTSENT *)&sp->fts_cycle,(FTS *)pFVar16);" (assignment_expression "_Var9 = enter_dir((FTS *)sp->fts_options,(FTSENT *)&sp->fts_cycle,(FTS *)pFVar16)" identifier = (call_expression "enter_dir((FTS *)sp->fts_options,(FTSENT *)&sp->fts_cycle,(FTS *)pFVar16)" identifier (argument_list "((FTS *)sp->fts_options,(FTSENT *)&sp->fts_cycle,(FTS *)pFVar16)" ( (cast_expression "(FTS *)sp->fts_options" ( (type_descriptor "FTS *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "sp->fts_options" identifier -> field_identifier)) , (cast_expression "(FTSENT *)&sp->fts_cycle" ( (type_descriptor "FTSENT *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&sp->fts_cycle" & (field_expression "sp->fts_cycle" identifier -> field_identifier))) , (cast_expression "(FTS *)pFVar16" ( (type_descriptor "FTS *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) )))) ;) (if_statement "if (!_Var9) {\n        piVar11 = __errno_location();\n        *piVar11 = 0xc;\n        return (FTSENT *)0x0;\n      }" if (parenthesized_expression "(!_Var9)" ( (unary_expression "!_Var9" ! identifier) )) (compound_statement "{\n        piVar11 = __errno_location();\n        *piVar11 = 0xc;\n        return (FTSENT *)0x0;\n      }" { (expression_statement "piVar11 = __errno_location();" (assignment_expression "piVar11 = __errno_location()" identifier = (call_expression "__errno_location()" identifier (argument_list "()" ( )))) ;) (expression_statement "*piVar11 = 0xc;" (assignment_expression "*piVar11 = 0xc" (pointer_expression "*piVar11" * identifier) = number_literal) ;) (return_statement "return (FTSENT *)0x0;" return (cast_expression "(FTSENT *)0x0" ( (type_descriptor "FTSENT *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) })))) (expression_statement "local_34 = (-(uint)(sp->fts_compar == (_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *)0x0) &\n               0x186a1) - 1;" (assignment_expression "local_34 = (-(uint)(sp->fts_compar == (_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *)0x0) &\n               0x186a1) - 1" identifier = (binary_expression "(-(uint)(sp->fts_compar == (_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *)0x0) &\n               0x186a1) - 1" (parenthesized_expression "(-(uint)(sp->fts_compar == (_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *)0x0) &\n               0x186a1)" ( (binary_expression "-(uint)(sp->fts_compar == (_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *)0x0) &\n               0x186a1" (unary_expression "-(uint)(sp->fts_compar == (_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *)0x0)" - (call_expression "(uint)(sp->fts_compar == (_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *)0x0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(sp->fts_compar == (_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *)0x0)" ( (binary_expression "sp->fts_compar == (_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *)0x0" (field_expression "sp->fts_compar" identifier -> field_identifier) == (cast_expression "(_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *)0x0" ( (type_descriptor "_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )))) & number_literal) )) - number_literal)) ;) (if_statement "if (type == 2) {\nLAB_00019a90:\n      bVar22 = false;\n      uVar18 = sp->fts_options;\n      goto LAB_000192d4;\n    }" if (parenthesized_expression "(type == 2)" ( (binary_expression "type == 2" identifier == number_literal) )) (compound_statement "{\nLAB_00019a90:\n      bVar22 = false;\n      uVar18 = sp->fts_options;\n      goto LAB_000192d4;\n    }" { (labeled_statement "LAB_00019a90:\n      bVar22 = false;" statement_identifier : (expression_statement "bVar22 = false;" (assignment_expression "bVar22 = false" identifier = false) ;)) (expression_statement "uVar18 = sp->fts_options;" (assignment_expression "uVar18 = sp->fts_options" identifier = (field_expression "sp->fts_options" identifier -> field_identifier)) ;) (goto_statement "goto LAB_000192d4;" goto statement_identifier ;) })) (if_statement "if ((((sp->fts_options & 0x38U) == 0x18) && (pFVar16->fts_statp[0].st_nlink == 2)) &&\n       (lVar20 = leaf_optimization(pFVar16,local_2c), lVar20 != NO_LEAF_OPTIMIZATION)) {\n      if (type != 3) goto LAB_00019a90;\n      bVar4 = false;\n      bVar22 = true;\n    }\n    else {\n      bVar22 = type == 3;\n      bVar4 = true;\n    }" if (parenthesized_expression "((((sp->fts_options & 0x38U) == 0x18) && (pFVar16->fts_statp[0].st_nlink == 2)) &&\n       (lVar20 = leaf_optimization(pFVar16,local_2c), lVar20 != NO_LEAF_OPTIMIZATION))" ( (binary_expression "(((sp->fts_options & 0x38U) == 0x18) && (pFVar16->fts_statp[0].st_nlink == 2)) &&\n       (lVar20 = leaf_optimization(pFVar16,local_2c), lVar20 != NO_LEAF_OPTIMIZATION)" (parenthesized_expression "(((sp->fts_options & 0x38U) == 0x18) && (pFVar16->fts_statp[0].st_nlink == 2))" ( (binary_expression "((sp->fts_options & 0x38U) == 0x18) && (pFVar16->fts_statp[0].st_nlink == 2)" (parenthesized_expression "((sp->fts_options & 0x38U) == 0x18)" ( (binary_expression "(sp->fts_options & 0x38U) == 0x18" (parenthesized_expression "(sp->fts_options & 0x38U)" ( (binary_expression "sp->fts_options & 0x38U" (field_expression "sp->fts_options" identifier -> field_identifier) & number_literal) )) == number_literal) )) && (parenthesized_expression "(pFVar16->fts_statp[0].st_nlink == 2)" ( (binary_expression "pFVar16->fts_statp[0].st_nlink == 2" (field_expression "pFVar16->fts_statp[0].st_nlink" (subscript_expression "pFVar16->fts_statp[0]" (field_expression "pFVar16->fts_statp" identifier -> field_identifier) [ number_literal ]) . field_identifier) == number_literal) ))) )) && (parenthesized_expression "(lVar20 = leaf_optimization(pFVar16,local_2c), lVar20 != NO_LEAF_OPTIMIZATION)" ( (comma_expression "lVar20 = leaf_optimization(pFVar16,local_2c), lVar20 != NO_LEAF_OPTIMIZATION" (assignment_expression "lVar20 = leaf_optimization(pFVar16,local_2c)" identifier = (call_expression "leaf_optimization(pFVar16,local_2c)" identifier (argument_list "(pFVar16,local_2c)" ( identifier , identifier )))) , (binary_expression "lVar20 != NO_LEAF_OPTIMIZATION" identifier != identifier)) ))) )) (compound_statement "{\n      if (type != 3) goto LAB_00019a90;\n      bVar4 = false;\n      bVar22 = true;\n    }" { (if_statement "if (type != 3) goto LAB_00019a90;" if (parenthesized_expression "(type != 3)" ( (binary_expression "type != 3" identifier != number_literal) )) (goto_statement "goto LAB_00019a90;" goto statement_identifier ;)) (expression_statement "bVar4 = false;" (assignment_expression "bVar4 = false" identifier = false) ;) (expression_statement "bVar22 = true;" (assignment_expression "bVar22 = true" identifier = true) ;) }) (else_clause "else {\n      bVar22 = type == 3;\n      bVar4 = true;\n    }" else (compound_statement "{\n      bVar22 = type == 3;\n      bVar4 = true;\n    }" { (expression_statement "bVar22 = type == 3;" (assignment_expression "bVar22 = type == 3" identifier = (binary_expression "type == 3" identifier == number_literal)) ;) (expression_statement "bVar4 = true;" (assignment_expression "bVar4 = true" identifier = true) ;) }))) (if_statement "if (((sp->fts_options & 0x200) == 0) || (local_2c = rpl_fcntl(local_2c,0x406,3), -1 < local_2c))\n    {\n      iVar15 = fts_safe_changedir(sp,pFVar16,local_2c,(char *)0x0);\n      if (iVar15 == 0) goto LAB_000192cc;\n      __dirp_00 = pFVar16->fts_dirp;\n      uVar10 = pFVar16->fts_flags | 1;\n      if ((bVar22) && (bVar4)) goto LAB_0001980f;\nLAB_0001982f:\n      pFVar16->fts_flags = uVar10;\n      closedir((DIR *)__dirp_00);\n      uVar18 = sp->fts_options;\n      pFVar16->fts_dirp = (DIR *)0x0;\n      if (((uVar18 & 0x200) != 0) && (-1 < local_2c)) {\n        close(local_2c);\n        uVar18 = sp->fts_options;\n      }\n    }\n    else {\n      __dirp_00 = pFVar16->fts_dirp;\n      uVar10 = pFVar16->fts_flags | 1;\n      if ((bVar22) && (bVar4)) {\nLAB_0001980f:\n        piVar11 = __errno_location();\n        pFVar16->fts_errno = *piVar11;\n        goto LAB_0001982f;\n      }\n      pFVar16->fts_flags = uVar10;\n      closedir((DIR *)__dirp_00);\n      uVar18 = sp->fts_options;\n    }" if (parenthesized_expression "(((sp->fts_options & 0x200) == 0) || (local_2c = rpl_fcntl(local_2c,0x406,3), -1 < local_2c))" ( (binary_expression "((sp->fts_options & 0x200) == 0) || (local_2c = rpl_fcntl(local_2c,0x406,3), -1 < local_2c)" (parenthesized_expression "((sp->fts_options & 0x200) == 0)" ( (binary_expression "(sp->fts_options & 0x200) == 0" (parenthesized_expression "(sp->fts_options & 0x200)" ( (binary_expression "sp->fts_options & 0x200" (field_expression "sp->fts_options" identifier -> field_identifier) & number_literal) )) == number_literal) )) || (parenthesized_expression "(local_2c = rpl_fcntl(local_2c,0x406,3), -1 < local_2c)" ( (comma_expression "local_2c = rpl_fcntl(local_2c,0x406,3), -1 < local_2c" (assignment_expression "local_2c = rpl_fcntl(local_2c,0x406,3)" identifier = (call_expression "rpl_fcntl(local_2c,0x406,3)" identifier (argument_list "(local_2c,0x406,3)" ( identifier , number_literal , number_literal )))) , (binary_expression "-1 < local_2c" number_literal < identifier)) ))) )) (compound_statement "{\n      iVar15 = fts_safe_changedir(sp,pFVar16,local_2c,(char *)0x0);\n      if (iVar15 == 0) goto LAB_000192cc;\n      __dirp_00 = pFVar16->fts_dirp;\n      uVar10 = pFVar16->fts_flags | 1;\n      if ((bVar22) && (bVar4)) goto LAB_0001980f;\nLAB_0001982f:\n      pFVar16->fts_flags = uVar10;\n      closedir((DIR *)__dirp_00);\n      uVar18 = sp->fts_options;\n      pFVar16->fts_dirp = (DIR *)0x0;\n      if (((uVar18 & 0x200) != 0) && (-1 < local_2c)) {\n        close(local_2c);\n        uVar18 = sp->fts_options;\n      }\n    }" { (expression_statement "iVar15 = fts_safe_changedir(sp,pFVar16,local_2c,(char *)0x0);" (assignment_expression "iVar15 = fts_safe_changedir(sp,pFVar16,local_2c,(char *)0x0)" identifier = (call_expression "fts_safe_changedir(sp,pFVar16,local_2c,(char *)0x0)" identifier (argument_list "(sp,pFVar16,local_2c,(char *)0x0)" ( identifier , identifier , identifier , (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) )))) ;) (if_statement "if (iVar15 == 0) goto LAB_000192cc;" if (parenthesized_expression "(iVar15 == 0)" ( (binary_expression "iVar15 == 0" identifier == number_literal) )) (goto_statement "goto LAB_000192cc;" goto statement_identifier ;)) (expression_statement "__dirp_00 = pFVar16->fts_dirp;" (assignment_expression "__dirp_00 = pFVar16->fts_dirp" identifier = (field_expression "pFVar16->fts_dirp" identifier -> field_identifier)) ;) (expression_statement "uVar10 = pFVar16->fts_flags | 1;" (assignment_expression "uVar10 = pFVar16->fts_flags | 1" identifier = (binary_expression "pFVar16->fts_flags | 1" (field_expression "pFVar16->fts_flags" identifier -> field_identifier) | number_literal)) ;) (if_statement "if ((bVar22) && (bVar4)) goto LAB_0001980f;" if (parenthesized_expression "((bVar22) && (bVar4))" ( (binary_expression "(bVar22) && (bVar4)" (parenthesized_expression "(bVar22)" ( identifier )) && (parenthesized_expression "(bVar4)" ( identifier ))) )) (goto_statement "goto LAB_0001980f;" goto statement_identifier ;)) (labeled_statement "LAB_0001982f:\n      pFVar16->fts_flags = uVar10;" statement_identifier : (expression_statement "pFVar16->fts_flags = uVar10;" (assignment_expression "pFVar16->fts_flags = uVar10" (field_expression "pFVar16->fts_flags" identifier -> field_identifier) = identifier) ;)) (expression_statement "closedir((DIR *)__dirp_00);" (call_expression "closedir((DIR *)__dirp_00)" identifier (argument_list "((DIR *)__dirp_00)" ( (cast_expression "(DIR *)__dirp_00" ( (type_descriptor "DIR *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) ))) ;) (expression_statement "uVar18 = sp->fts_options;" (assignment_expression "uVar18 = sp->fts_options" identifier = (field_expression "sp->fts_options" identifier -> field_identifier)) ;) (expression_statement "pFVar16->fts_dirp = (DIR *)0x0;" (assignment_expression "pFVar16->fts_dirp = (DIR *)0x0" (field_expression "pFVar16->fts_dirp" identifier -> field_identifier) = (cast_expression "(DIR *)0x0" ( (type_descriptor "DIR *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if (((uVar18 & 0x200) != 0) && (-1 < local_2c)) {\n        close(local_2c);\n        uVar18 = sp->fts_options;\n      }" if (parenthesized_expression "(((uVar18 & 0x200) != 0) && (-1 < local_2c))" ( (binary_expression "((uVar18 & 0x200) != 0) && (-1 < local_2c)" (parenthesized_expression "((uVar18 & 0x200) != 0)" ( (binary_expression "(uVar18 & 0x200) != 0" (parenthesized_expression "(uVar18 & 0x200)" ( (binary_expression "uVar18 & 0x200" identifier & number_literal) )) != number_literal) )) && (parenthesized_expression "(-1 < local_2c)" ( (binary_expression "-1 < local_2c" number_literal < identifier) ))) )) (compound_statement "{\n        close(local_2c);\n        uVar18 = sp->fts_options;\n      }" { (expression_statement "close(local_2c);" (call_expression "close(local_2c)" identifier (argument_list "(local_2c)" ( identifier ))) ;) (expression_statement "uVar18 = sp->fts_options;" (assignment_expression "uVar18 = sp->fts_options" identifier = (field_expression "sp->fts_options" identifier -> field_identifier)) ;) })) }) (else_clause "else {\n      __dirp_00 = pFVar16->fts_dirp;\n      uVar10 = pFVar16->fts_flags | 1;\n      if ((bVar22) && (bVar4)) {\nLAB_0001980f:\n        piVar11 = __errno_location();\n        pFVar16->fts_errno = *piVar11;\n        goto LAB_0001982f;\n      }\n      pFVar16->fts_flags = uVar10;\n      closedir((DIR *)__dirp_00);\n      uVar18 = sp->fts_options;\n    }" else (compound_statement "{\n      __dirp_00 = pFVar16->fts_dirp;\n      uVar10 = pFVar16->fts_flags | 1;\n      if ((bVar22) && (bVar4)) {\nLAB_0001980f:\n        piVar11 = __errno_location();\n        pFVar16->fts_errno = *piVar11;\n        goto LAB_0001982f;\n      }\n      pFVar16->fts_flags = uVar10;\n      closedir((DIR *)__dirp_00);\n      uVar18 = sp->fts_options;\n    }" { (expression_statement "__dirp_00 = pFVar16->fts_dirp;" (assignment_expression "__dirp_00 = pFVar16->fts_dirp" identifier = (field_expression "pFVar16->fts_dirp" identifier -> field_identifier)) ;) (expression_statement "uVar10 = pFVar16->fts_flags | 1;" (assignment_expression "uVar10 = pFVar16->fts_flags | 1" identifier = (binary_expression "pFVar16->fts_flags | 1" (field_expression "pFVar16->fts_flags" identifier -> field_identifier) | number_literal)) ;) (if_statement "if ((bVar22) && (bVar4)) {\nLAB_0001980f:\n        piVar11 = __errno_location();\n        pFVar16->fts_errno = *piVar11;\n        goto LAB_0001982f;\n      }" if (parenthesized_expression "((bVar22) && (bVar4))" ( (binary_expression "(bVar22) && (bVar4)" (parenthesized_expression "(bVar22)" ( identifier )) && (parenthesized_expression "(bVar4)" ( identifier ))) )) (compound_statement "{\nLAB_0001980f:\n        piVar11 = __errno_location();\n        pFVar16->fts_errno = *piVar11;\n        goto LAB_0001982f;\n      }" { (labeled_statement "LAB_0001980f:\n        piVar11 = __errno_location();" statement_identifier : (expression_statement "piVar11 = __errno_location();" (assignment_expression "piVar11 = __errno_location()" identifier = (call_expression "__errno_location()" identifier (argument_list "()" ( )))) ;)) (expression_statement "pFVar16->fts_errno = *piVar11;" (assignment_expression "pFVar16->fts_errno = *piVar11" (field_expression "pFVar16->fts_errno" identifier -> field_identifier) = (pointer_expression "*piVar11" * identifier)) ;) (goto_statement "goto LAB_0001982f;" goto statement_identifier ;) })) (expression_statement "pFVar16->fts_flags = uVar10;" (assignment_expression "pFVar16->fts_flags = uVar10" (field_expression "pFVar16->fts_flags" identifier -> field_identifier) = identifier) ;) (expression_statement "closedir((DIR *)__dirp_00);" (call_expression "closedir((DIR *)__dirp_00)" identifier (argument_list "((DIR *)__dirp_00)" ( (cast_expression "(DIR *)__dirp_00" ( (type_descriptor "DIR *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) ))) ;) (expression_statement "uVar18 = sp->fts_options;" (assignment_expression "uVar18 = sp->fts_options" identifier = (field_expression "sp->fts_options" identifier -> field_identifier)) ;) }))) (expression_statement "bVar22 = false;" (assignment_expression "bVar22 = false" identifier = false) ;) (expression_statement "pFVar16->fts_dirp = (DIR *)0x0;" (assignment_expression "pFVar16->fts_dirp = (DIR *)0x0" (field_expression "pFVar16->fts_dirp" identifier -> field_identifier) = (cast_expression "(DIR *)0x0" ( (type_descriptor "DIR *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }) (else_clause "else {\n    local_2c = dirfd(__dirp);\n    if (local_2c < 0) {\n      closedir((DIR *)pFVar16->fts_dirp);\n      pFVar16->fts_dirp = (DIR *)0x0;\n      goto joined_r0x00019b00;\n    }\n    if (sp->fts_compar == (_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *)0x0) {\n      local_34 = 100000;\n      uVar18 = sp->fts_options;\n      bVar22 = true;\n    }\n    else {\n      local_34 = 0xffffffff;\nLAB_000192cc:\n      bVar22 = true;\n      uVar18 = sp->fts_options;\n    }\n  }" else (compound_statement "{\n    local_2c = dirfd(__dirp);\n    if (local_2c < 0) {\n      closedir((DIR *)pFVar16->fts_dirp);\n      pFVar16->fts_dirp = (DIR *)0x0;\n      goto joined_r0x00019b00;\n    }\n    if (sp->fts_compar == (_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *)0x0) {\n      local_34 = 100000;\n      uVar18 = sp->fts_options;\n      bVar22 = true;\n    }\n    else {\n      local_34 = 0xffffffff;\nLAB_000192cc:\n      bVar22 = true;\n      uVar18 = sp->fts_options;\n    }\n  }" { (expression_statement "local_2c = dirfd(__dirp);" (assignment_expression "local_2c = dirfd(__dirp)" identifier = (call_expression "dirfd(__dirp)" identifier (argument_list "(__dirp)" ( identifier )))) ;) (if_statement "if (local_2c < 0) {\n      closedir((DIR *)pFVar16->fts_dirp);\n      pFVar16->fts_dirp = (DIR *)0x0;\n      goto joined_r0x00019b00;\n    }" if (parenthesized_expression "(local_2c < 0)" ( (binary_expression "local_2c < 0" identifier < number_literal) )) (compound_statement "{\n      closedir((DIR *)pFVar16->fts_dirp);\n      pFVar16->fts_dirp = (DIR *)0x0;\n      goto joined_r0x00019b00;\n    }" { (expression_statement "closedir((DIR *)pFVar16->fts_dirp);" (call_expression "closedir((DIR *)pFVar16->fts_dirp)" identifier (argument_list "((DIR *)pFVar16->fts_dirp)" ( (cast_expression "(DIR *)pFVar16->fts_dirp" ( (type_descriptor "DIR *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "pFVar16->fts_dirp" identifier -> field_identifier)) ))) ;) (expression_statement "pFVar16->fts_dirp = (DIR *)0x0;" (assignment_expression "pFVar16->fts_dirp = (DIR *)0x0" (field_expression "pFVar16->fts_dirp" identifier -> field_identifier) = (cast_expression "(DIR *)0x0" ( (type_descriptor "DIR *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (goto_statement "goto joined_r0x00019b00;" goto statement_identifier ;) })) (if_statement "if (sp->fts_compar == (_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *)0x0) {\n      local_34 = 100000;\n      uVar18 = sp->fts_options;\n      bVar22 = true;\n    }\n    else {\n      local_34 = 0xffffffff;\nLAB_000192cc:\n      bVar22 = true;\n      uVar18 = sp->fts_options;\n    }" if (parenthesized_expression "(sp->fts_compar == (_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *)0x0)" ( (binary_expression "sp->fts_compar == (_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *)0x0" (field_expression "sp->fts_compar" identifier -> field_identifier) == (cast_expression "(_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *)0x0" ( (type_descriptor "_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      local_34 = 100000;\n      uVar18 = sp->fts_options;\n      bVar22 = true;\n    }" { (expression_statement "local_34 = 100000;" (assignment_expression "local_34 = 100000" identifier = number_literal) ;) (expression_statement "uVar18 = sp->fts_options;" (assignment_expression "uVar18 = sp->fts_options" identifier = (field_expression "sp->fts_options" identifier -> field_identifier)) ;) (expression_statement "bVar22 = true;" (assignment_expression "bVar22 = true" identifier = true) ;) }) (else_clause "else {\n      local_34 = 0xffffffff;\nLAB_000192cc:\n      bVar22 = true;\n      uVar18 = sp->fts_options;\n    }" else (compound_statement "{\n      local_34 = 0xffffffff;\nLAB_000192cc:\n      bVar22 = true;\n      uVar18 = sp->fts_options;\n    }" { (expression_statement "local_34 = 0xffffffff;" (assignment_expression "local_34 = 0xffffffff" identifier = number_literal) ;) (labeled_statement "LAB_000192cc:\n      bVar22 = true;" statement_identifier : (expression_statement "bVar22 = true;" (assignment_expression "bVar22 = true" identifier = true) ;)) (expression_statement "uVar18 = sp->fts_options;" (assignment_expression "uVar18 = sp->fts_options" identifier = (field_expression "sp->fts_options" identifier -> field_identifier)) ;) }))) }))) (labeled_statement "LAB_000192d4:\n  sVar1 = pFVar16->fts_pathlen;" statement_identifier : (expression_statement "sVar1 = pFVar16->fts_pathlen;" (assignment_expression "sVar1 = pFVar16->fts_pathlen" identifier = (field_expression "pFVar16->fts_pathlen" identifier -> field_identifier)) ;)) (expression_statement "local_4c = sVar1;" (assignment_expression "local_4c = sVar1" identifier = identifier) ;) (expression_statement "local_30 = sVar1 - 1;" (assignment_expression "local_30 = sVar1 - 1" identifier = (binary_expression "sVar1 - 1" identifier - number_literal)) ;) (if_statement "if (pFVar16->fts_path[sVar1 - 1] != '/') {\n    local_4c = sVar1 + 1;\n    local_30 = sVar1;\n  }" if (parenthesized_expression "(pFVar16->fts_path[sVar1 - 1] != '/')" ( (binary_expression "pFVar16->fts_path[sVar1 - 1] != '/'" (subscript_expression "pFVar16->fts_path[sVar1 - 1]" (field_expression "pFVar16->fts_path" identifier -> field_identifier) [ (binary_expression "sVar1 - 1" identifier - number_literal) ]) != (char_literal "'/'" ' character ')) )) (compound_statement "{\n    local_4c = sVar1 + 1;\n    local_30 = sVar1;\n  }" { (expression_statement "local_4c = sVar1 + 1;" (assignment_expression "local_4c = sVar1 + 1" identifier = (binary_expression "sVar1 + 1" identifier + number_literal)) ;) (expression_statement "local_30 = sVar1;" (assignment_expression "local_30 = sVar1" identifier = identifier) ;) })) (expression_statement "local_38 = (char *)0x0;" (assignment_expression "local_38 = (char *)0x0" identifier = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if ((uVar18 & 4) != 0) {\n    local_38 = sp->fts_path + local_30 + 1;\n    sp->fts_path[local_30] = '/';\n  }" if (parenthesized_expression "((uVar18 & 4) != 0)" ( (binary_expression "(uVar18 & 4) != 0" (parenthesized_expression "(uVar18 & 4)" ( (binary_expression "uVar18 & 4" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n    local_38 = sp->fts_path + local_30 + 1;\n    sp->fts_path[local_30] = '/';\n  }" { (expression_statement "local_38 = sp->fts_path + local_30 + 1;" (assignment_expression "local_38 = sp->fts_path + local_30 + 1" identifier = (binary_expression "sp->fts_path + local_30 + 1" (binary_expression "sp->fts_path + local_30" (field_expression "sp->fts_path" identifier -> field_identifier) + identifier) + number_literal)) ;) (expression_statement "sp->fts_path[local_30] = '/';" (assignment_expression "sp->fts_path[local_30] = '/'" (subscript_expression "sp->fts_path[local_30]" (field_expression "sp->fts_path" identifier -> field_identifier) [ identifier ]) = (char_literal "'/'" ' character ')) ;) })) (expression_statement "local_44 = sp->fts_pathlen - local_4c;" (assignment_expression "local_44 = sp->fts_pathlen - local_4c" identifier = (binary_expression "sp->fts_pathlen - local_4c" (field_expression "sp->fts_pathlen" identifier -> field_identifier) - identifier)) ;) (expression_statement "bVar4 = false;" (assignment_expression "bVar4 = false" identifier = false) ;) (expression_statement "local_1f = false;" (assignment_expression "local_1f = false" identifier = false) ;) (expression_statement "iVar15 = pFVar16->fts_level;" (assignment_expression "iVar15 = pFVar16->fts_level" identifier = (field_expression "pFVar16->fts_level" identifier -> field_identifier)) ;) (expression_statement "local_54 = (FTSENT *)0x0;" (assignment_expression "local_54 = (FTSENT *)0x0" identifier = (cast_expression "(FTSENT *)0x0" ( (type_descriptor "FTSENT *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_5c = 0;" (assignment_expression "local_5c = 0" identifier = number_literal) ;) (expression_statement "local_48 = (FTSENT *)0x0;" (assignment_expression "local_48 = (FTSENT *)0x0" identifier = (cast_expression "(FTSENT *)0x0" ( (type_descriptor "FTSENT *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (labeled_statement "LAB_000193a8:\n  do {\n    do {\n      pDVar17 = (DIR *)pFVar16->fts_dirp;\n      if (pDVar17 == (DIR *)0x0) goto LAB_00019641;\n      piVar11 = __errno_location();\n      *piVar11 = 0;\n      pdVar12 = readdir64(pDVar17);\n      if (pdVar12 == (dirent64 *)0x0) {\n        if (*piVar11 != 0) {\n          pFVar16->fts_errno = *piVar11;\n          pFVar16->fts_info = (-(ushort)(__dirp == (DIR *)0x0 && local_5c == 0) & 0xfffd) + 7;\n        }\n        if ((DIR *)pFVar16->fts_dirp != (DIR *)0x0) {\n          closedir((DIR *)pFVar16->fts_dirp);\n          pFVar16->fts_dirp = (DIR *)0x0;\n        }\n        goto LAB_00019641;\n      }\n    } while ((((sp->fts_options & 0x20) == 0) && (pdVar12->d_name[0] == '.')) &&\n            ((pdVar12->d_name[1] == '\0' || (*(short *)(pdVar12->d_name + 1) == 0x2e))));\n    namelen = strlen(pdVar12->d_name);\n    pFVar13 = fts_alloc(sp,pdVar12->d_name,namelen);\n    if (pFVar13 == (FTSENT *)0x0) {\nLAB_00019910:\n      iVar15 = *piVar11;\n      free(pFVar13);\n      fts_lfree(local_48);\n      closedir((DIR *)pFVar16->fts_dirp);\n      pFVar16->fts_dirp = (DIR *)0x0;\n      pFVar16->fts_info = 7;\n      sp->fts_options = sp->fts_options | 0x4000;\n      *piVar11 = iVar15;\n      return (FTSENT *)0x0;\n    }\n    if (local_44 <= namelen) {\n      pcVar3 = sp->fts_path;\n      _Var9 = fts_palloc((FTS *)&sp->fts_path,(size_t)&sp->fts_pathlen,\n                         (FTS *)(local_30 + 2 + namelen));\n      if (!_Var9) goto LAB_00019910;\n      pcVar8 = local_38;\n      if ((sp->fts_path != pcVar3) &&\n         (local_1f = _Var9, pcVar8 = sp->fts_path + local_4c, (sp->fts_options & 4) == 0)) {\n        pcVar8 = local_38;\n      }\n      local_38 = pcVar8;\n      local_44 = sp->fts_pathlen - local_4c;\n    }\n    if (CARRY4(namelen,local_4c)) {\n      free(pFVar13);\n      fts_lfree(local_48);\n      closedir((DIR *)pFVar16->fts_dirp);\n      pFVar16->fts_dirp = (DIR *)0x0;\n      pFVar16->fts_info = 7;\n      sp->fts_options = sp->fts_options | 0x4000;\n      *piVar11 = 0x24;\n      return (FTSENT *)0x0;\n    }\n    uVar14 = *(undefined4 *)((int)&pdVar12->d_ino + 4);\n    pFVar13->fts_level = iVar15 + 1;\n    p_Var2 = sp->fts_cur;\n    pFVar13->fts_pathlen = namelen + local_4c;\n    pFVar13->fts_parent = p_Var2;\n    _Var5 = pdVar12->d_ino;\n    *(undefined4 *)((int)&pFVar13->fts_statp[0].st_ino + 4) = uVar14;\n    *(int *)&pFVar13->fts_statp[0].st_ino = (int)_Var5;\n    uVar18 = sp->fts_options;\n    if ((uVar18 & 4) == 0) {\n      pFVar13->fts_accpath = (char *)(pFVar13 + 1);\n    }\n    else {\n      pFVar13->fts_accpath = pFVar13->fts_path;\n      memmove(local_38,pFVar13 + 1,pFVar13->fts_namelen + 1);\n      uVar18 = sp->fts_options;\n    }\n    if ((sp->fts_compar == (_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *)0x0) ||\n       ((uVar18 & 0x400) != 0)) {\n      uVar21 = pdVar12->d_type - 1;\n      if (((uVar18 & 0x18) == 0x18) && ((pdVar12->d_type & 0xfb) != 0)) {\n        pFVar13->fts_info = 0xb;\n        if (uVar21 < 0xc) {\n          pFVar13->fts_statp[0].st_mode = *(__mode_t *)(CSWTCH_40 + uVar21 * 4);\n          uVar14 = 1;\n        }\n        else {\n          pFVar13->fts_statp[0].st_mode = 0;\n          uVar14 = 1;\n        }\n      }\n      else {\n        pFVar13->fts_info = 0xb;\n        if (uVar21 < 0xc) {\n          pFVar13->fts_statp[0].st_mode = *(__mode_t *)(CSWTCH_40 + uVar21 * 4);\n          uVar14 = 2;\n        }\n        else {\n          pFVar13->fts_statp[0].st_mode = 0;\n          uVar14 = 2;\n        }\n      }\n      *(undefined4 *)&pFVar13->fts_statp[0].st_size = uVar14;\n      *(undefined4 *)((int)&pFVar13->fts_statp[0].st_size + 4) = 0;\n    }\n    else {\n      uVar10 = fts_stat(sp,pFVar13,false);\n      pFVar13->fts_info = uVar10;\n    }\n    pFVar13->fts_link = (_ftsent *)0x0;\n    pFVar7 = pFVar13;\n    if (local_48 != (FTSENT *)0x0) {\n      local_54->fts_link = pFVar13;\n      pFVar7 = local_48;\n    }\n    local_48 = pFVar7;\n    local_54 = pFVar13;\n    if (local_5c == 10000) {\n      if ((sp->fts_compar != (_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *)0x0) ||\n         (((fVar19 = filesystem_type(pFVar16,local_2c), fVar19 != 0x6969 && (fVar19 != 0x1021994))\n          && (bVar4 = true, fVar19 != -0xacb2be)))) {\n        local_5c = 0x2711;\n        goto LAB_000193a8;\n      }\n      bVar4 = false;\n    }\n    local_5c = local_5c + 1;\n  } while (local_5c < local_34);" statement_identifier : (do_statement "do {\n    do {\n      pDVar17 = (DIR *)pFVar16->fts_dirp;\n      if (pDVar17 == (DIR *)0x0) goto LAB_00019641;\n      piVar11 = __errno_location();\n      *piVar11 = 0;\n      pdVar12 = readdir64(pDVar17);\n      if (pdVar12 == (dirent64 *)0x0) {\n        if (*piVar11 != 0) {\n          pFVar16->fts_errno = *piVar11;\n          pFVar16->fts_info = (-(ushort)(__dirp == (DIR *)0x0 && local_5c == 0) & 0xfffd) + 7;\n        }\n        if ((DIR *)pFVar16->fts_dirp != (DIR *)0x0) {\n          closedir((DIR *)pFVar16->fts_dirp);\n          pFVar16->fts_dirp = (DIR *)0x0;\n        }\n        goto LAB_00019641;\n      }\n    } while ((((sp->fts_options & 0x20) == 0) && (pdVar12->d_name[0] == '.')) &&\n            ((pdVar12->d_name[1] == '\0' || (*(short *)(pdVar12->d_name + 1) == 0x2e))));\n    namelen = strlen(pdVar12->d_name);\n    pFVar13 = fts_alloc(sp,pdVar12->d_name,namelen);\n    if (pFVar13 == (FTSENT *)0x0) {\nLAB_00019910:\n      iVar15 = *piVar11;\n      free(pFVar13);\n      fts_lfree(local_48);\n      closedir((DIR *)pFVar16->fts_dirp);\n      pFVar16->fts_dirp = (DIR *)0x0;\n      pFVar16->fts_info = 7;\n      sp->fts_options = sp->fts_options | 0x4000;\n      *piVar11 = iVar15;\n      return (FTSENT *)0x0;\n    }\n    if (local_44 <= namelen) {\n      pcVar3 = sp->fts_path;\n      _Var9 = fts_palloc((FTS *)&sp->fts_path,(size_t)&sp->fts_pathlen,\n                         (FTS *)(local_30 + 2 + namelen));\n      if (!_Var9) goto LAB_00019910;\n      pcVar8 = local_38;\n      if ((sp->fts_path != pcVar3) &&\n         (local_1f = _Var9, pcVar8 = sp->fts_path + local_4c, (sp->fts_options & 4) == 0)) {\n        pcVar8 = local_38;\n      }\n      local_38 = pcVar8;\n      local_44 = sp->fts_pathlen - local_4c;\n    }\n    if (CARRY4(namelen,local_4c)) {\n      free(pFVar13);\n      fts_lfree(local_48);\n      closedir((DIR *)pFVar16->fts_dirp);\n      pFVar16->fts_dirp = (DIR *)0x0;\n      pFVar16->fts_info = 7;\n      sp->fts_options = sp->fts_options | 0x4000;\n      *piVar11 = 0x24;\n      return (FTSENT *)0x0;\n    }\n    uVar14 = *(undefined4 *)((int)&pdVar12->d_ino + 4);\n    pFVar13->fts_level = iVar15 + 1;\n    p_Var2 = sp->fts_cur;\n    pFVar13->fts_pathlen = namelen + local_4c;\n    pFVar13->fts_parent = p_Var2;\n    _Var5 = pdVar12->d_ino;\n    *(undefined4 *)((int)&pFVar13->fts_statp[0].st_ino + 4) = uVar14;\n    *(int *)&pFVar13->fts_statp[0].st_ino = (int)_Var5;\n    uVar18 = sp->fts_options;\n    if ((uVar18 & 4) == 0) {\n      pFVar13->fts_accpath = (char *)(pFVar13 + 1);\n    }\n    else {\n      pFVar13->fts_accpath = pFVar13->fts_path;\n      memmove(local_38,pFVar13 + 1,pFVar13->fts_namelen + 1);\n      uVar18 = sp->fts_options;\n    }\n    if ((sp->fts_compar == (_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *)0x0) ||\n       ((uVar18 & 0x400) != 0)) {\n      uVar21 = pdVar12->d_type - 1;\n      if (((uVar18 & 0x18) == 0x18) && ((pdVar12->d_type & 0xfb) != 0)) {\n        pFVar13->fts_info = 0xb;\n        if (uVar21 < 0xc) {\n          pFVar13->fts_statp[0].st_mode = *(__mode_t *)(CSWTCH_40 + uVar21 * 4);\n          uVar14 = 1;\n        }\n        else {\n          pFVar13->fts_statp[0].st_mode = 0;\n          uVar14 = 1;\n        }\n      }\n      else {\n        pFVar13->fts_info = 0xb;\n        if (uVar21 < 0xc) {\n          pFVar13->fts_statp[0].st_mode = *(__mode_t *)(CSWTCH_40 + uVar21 * 4);\n          uVar14 = 2;\n        }\n        else {\n          pFVar13->fts_statp[0].st_mode = 0;\n          uVar14 = 2;\n        }\n      }\n      *(undefined4 *)&pFVar13->fts_statp[0].st_size = uVar14;\n      *(undefined4 *)((int)&pFVar13->fts_statp[0].st_size + 4) = 0;\n    }\n    else {\n      uVar10 = fts_stat(sp,pFVar13,false);\n      pFVar13->fts_info = uVar10;\n    }\n    pFVar13->fts_link = (_ftsent *)0x0;\n    pFVar7 = pFVar13;\n    if (local_48 != (FTSENT *)0x0) {\n      local_54->fts_link = pFVar13;\n      pFVar7 = local_48;\n    }\n    local_48 = pFVar7;\n    local_54 = pFVar13;\n    if (local_5c == 10000) {\n      if ((sp->fts_compar != (_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *)0x0) ||\n         (((fVar19 = filesystem_type(pFVar16,local_2c), fVar19 != 0x6969 && (fVar19 != 0x1021994))\n          && (bVar4 = true, fVar19 != -0xacb2be)))) {\n        local_5c = 0x2711;\n        goto LAB_000193a8;\n      }\n      bVar4 = false;\n    }\n    local_5c = local_5c + 1;\n  } while (local_5c < local_34);" do (compound_statement "{\n    do {\n      pDVar17 = (DIR *)pFVar16->fts_dirp;\n      if (pDVar17 == (DIR *)0x0) goto LAB_00019641;\n      piVar11 = __errno_location();\n      *piVar11 = 0;\n      pdVar12 = readdir64(pDVar17);\n      if (pdVar12 == (dirent64 *)0x0) {\n        if (*piVar11 != 0) {\n          pFVar16->fts_errno = *piVar11;\n          pFVar16->fts_info = (-(ushort)(__dirp == (DIR *)0x0 && local_5c == 0) & 0xfffd) + 7;\n        }\n        if ((DIR *)pFVar16->fts_dirp != (DIR *)0x0) {\n          closedir((DIR *)pFVar16->fts_dirp);\n          pFVar16->fts_dirp = (DIR *)0x0;\n        }\n        goto LAB_00019641;\n      }\n    } while ((((sp->fts_options & 0x20) == 0) && (pdVar12->d_name[0] == '.')) &&\n            ((pdVar12->d_name[1] == '\0' || (*(short *)(pdVar12->d_name + 1) == 0x2e))));\n    namelen = strlen(pdVar12->d_name);\n    pFVar13 = fts_alloc(sp,pdVar12->d_name,namelen);\n    if (pFVar13 == (FTSENT *)0x0) {\nLAB_00019910:\n      iVar15 = *piVar11;\n      free(pFVar13);\n      fts_lfree(local_48);\n      closedir((DIR *)pFVar16->fts_dirp);\n      pFVar16->fts_dirp = (DIR *)0x0;\n      pFVar16->fts_info = 7;\n      sp->fts_options = sp->fts_options | 0x4000;\n      *piVar11 = iVar15;\n      return (FTSENT *)0x0;\n    }\n    if (local_44 <= namelen) {\n      pcVar3 = sp->fts_path;\n      _Var9 = fts_palloc((FTS *)&sp->fts_path,(size_t)&sp->fts_pathlen,\n                         (FTS *)(local_30 + 2 + namelen));\n      if (!_Var9) goto LAB_00019910;\n      pcVar8 = local_38;\n      if ((sp->fts_path != pcVar3) &&\n         (local_1f = _Var9, pcVar8 = sp->fts_path + local_4c, (sp->fts_options & 4) == 0)) {\n        pcVar8 = local_38;\n      }\n      local_38 = pcVar8;\n      local_44 = sp->fts_pathlen - local_4c;\n    }\n    if (CARRY4(namelen,local_4c)) {\n      free(pFVar13);\n      fts_lfree(local_48);\n      closedir((DIR *)pFVar16->fts_dirp);\n      pFVar16->fts_dirp = (DIR *)0x0;\n      pFVar16->fts_info = 7;\n      sp->fts_options = sp->fts_options | 0x4000;\n      *piVar11 = 0x24;\n      return (FTSENT *)0x0;\n    }\n    uVar14 = *(undefined4 *)((int)&pdVar12->d_ino + 4);\n    pFVar13->fts_level = iVar15 + 1;\n    p_Var2 = sp->fts_cur;\n    pFVar13->fts_pathlen = namelen + local_4c;\n    pFVar13->fts_parent = p_Var2;\n    _Var5 = pdVar12->d_ino;\n    *(undefined4 *)((int)&pFVar13->fts_statp[0].st_ino + 4) = uVar14;\n    *(int *)&pFVar13->fts_statp[0].st_ino = (int)_Var5;\n    uVar18 = sp->fts_options;\n    if ((uVar18 & 4) == 0) {\n      pFVar13->fts_accpath = (char *)(pFVar13 + 1);\n    }\n    else {\n      pFVar13->fts_accpath = pFVar13->fts_path;\n      memmove(local_38,pFVar13 + 1,pFVar13->fts_namelen + 1);\n      uVar18 = sp->fts_options;\n    }\n    if ((sp->fts_compar == (_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *)0x0) ||\n       ((uVar18 & 0x400) != 0)) {\n      uVar21 = pdVar12->d_type - 1;\n      if (((uVar18 & 0x18) == 0x18) && ((pdVar12->d_type & 0xfb) != 0)) {\n        pFVar13->fts_info = 0xb;\n        if (uVar21 < 0xc) {\n          pFVar13->fts_statp[0].st_mode = *(__mode_t *)(CSWTCH_40 + uVar21 * 4);\n          uVar14 = 1;\n        }\n        else {\n          pFVar13->fts_statp[0].st_mode = 0;\n          uVar14 = 1;\n        }\n      }\n      else {\n        pFVar13->fts_info = 0xb;\n        if (uVar21 < 0xc) {\n          pFVar13->fts_statp[0].st_mode = *(__mode_t *)(CSWTCH_40 + uVar21 * 4);\n          uVar14 = 2;\n        }\n        else {\n          pFVar13->fts_statp[0].st_mode = 0;\n          uVar14 = 2;\n        }\n      }\n      *(undefined4 *)&pFVar13->fts_statp[0].st_size = uVar14;\n      *(undefined4 *)((int)&pFVar13->fts_statp[0].st_size + 4) = 0;\n    }\n    else {\n      uVar10 = fts_stat(sp,pFVar13,false);\n      pFVar13->fts_info = uVar10;\n    }\n    pFVar13->fts_link = (_ftsent *)0x0;\n    pFVar7 = pFVar13;\n    if (local_48 != (FTSENT *)0x0) {\n      local_54->fts_link = pFVar13;\n      pFVar7 = local_48;\n    }\n    local_48 = pFVar7;\n    local_54 = pFVar13;\n    if (local_5c == 10000) {\n      if ((sp->fts_compar != (_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *)0x0) ||\n         (((fVar19 = filesystem_type(pFVar16,local_2c), fVar19 != 0x6969 && (fVar19 != 0x1021994))\n          && (bVar4 = true, fVar19 != -0xacb2be)))) {\n        local_5c = 0x2711;\n        goto LAB_000193a8;\n      }\n      bVar4 = false;\n    }\n    local_5c = local_5c + 1;\n  }" { (do_statement "do {\n      pDVar17 = (DIR *)pFVar16->fts_dirp;\n      if (pDVar17 == (DIR *)0x0) goto LAB_00019641;\n      piVar11 = __errno_location();\n      *piVar11 = 0;\n      pdVar12 = readdir64(pDVar17);\n      if (pdVar12 == (dirent64 *)0x0) {\n        if (*piVar11 != 0) {\n          pFVar16->fts_errno = *piVar11;\n          pFVar16->fts_info = (-(ushort)(__dirp == (DIR *)0x0 && local_5c == 0) & 0xfffd) + 7;\n        }\n        if ((DIR *)pFVar16->fts_dirp != (DIR *)0x0) {\n          closedir((DIR *)pFVar16->fts_dirp);\n          pFVar16->fts_dirp = (DIR *)0x0;\n        }\n        goto LAB_00019641;\n      }\n    } while ((((sp->fts_options & 0x20) == 0) && (pdVar12->d_name[0] == '.')) &&\n            ((pdVar12->d_name[1] == '\0' || (*(short *)(pdVar12->d_name + 1) == 0x2e))));" do (compound_statement "{\n      pDVar17 = (DIR *)pFVar16->fts_dirp;\n      if (pDVar17 == (DIR *)0x0) goto LAB_00019641;\n      piVar11 = __errno_location();\n      *piVar11 = 0;\n      pdVar12 = readdir64(pDVar17);\n      if (pdVar12 == (dirent64 *)0x0) {\n        if (*piVar11 != 0) {\n          pFVar16->fts_errno = *piVar11;\n          pFVar16->fts_info = (-(ushort)(__dirp == (DIR *)0x0 && local_5c == 0) & 0xfffd) + 7;\n        }\n        if ((DIR *)pFVar16->fts_dirp != (DIR *)0x0) {\n          closedir((DIR *)pFVar16->fts_dirp);\n          pFVar16->fts_dirp = (DIR *)0x0;\n        }\n        goto LAB_00019641;\n      }\n    }" { (expression_statement "pDVar17 = (DIR *)pFVar16->fts_dirp;" (assignment_expression "pDVar17 = (DIR *)pFVar16->fts_dirp" identifier = (cast_expression "(DIR *)pFVar16->fts_dirp" ( (type_descriptor "DIR *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "pFVar16->fts_dirp" identifier -> field_identifier))) ;) (if_statement "if (pDVar17 == (DIR *)0x0) goto LAB_00019641;" if (parenthesized_expression "(pDVar17 == (DIR *)0x0)" ( (binary_expression "pDVar17 == (DIR *)0x0" identifier == (cast_expression "(DIR *)0x0" ( (type_descriptor "DIR *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00019641;" goto statement_identifier ;)) (expression_statement "piVar11 = __errno_location();" (assignment_expression "piVar11 = __errno_location()" identifier = (call_expression "__errno_location()" identifier (argument_list "()" ( )))) ;) (expression_statement "*piVar11 = 0;" (assignment_expression "*piVar11 = 0" (pointer_expression "*piVar11" * identifier) = number_literal) ;) (expression_statement "pdVar12 = readdir64(pDVar17);" (assignment_expression "pdVar12 = readdir64(pDVar17)" identifier = (call_expression "readdir64(pDVar17)" identifier (argument_list "(pDVar17)" ( identifier )))) ;) (if_statement "if (pdVar12 == (dirent64 *)0x0) {\n        if (*piVar11 != 0) {\n          pFVar16->fts_errno = *piVar11;\n          pFVar16->fts_info = (-(ushort)(__dirp == (DIR *)0x0 && local_5c == 0) & 0xfffd) + 7;\n        }\n        if ((DIR *)pFVar16->fts_dirp != (DIR *)0x0) {\n          closedir((DIR *)pFVar16->fts_dirp);\n          pFVar16->fts_dirp = (DIR *)0x0;\n        }\n        goto LAB_00019641;\n      }" if (parenthesized_expression "(pdVar12 == (dirent64 *)0x0)" ( (binary_expression "pdVar12 == (dirent64 *)0x0" identifier == (cast_expression "(dirent64 *)0x0" ( (type_descriptor "dirent64 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        if (*piVar11 != 0) {\n          pFVar16->fts_errno = *piVar11;\n          pFVar16->fts_info = (-(ushort)(__dirp == (DIR *)0x0 && local_5c == 0) & 0xfffd) + 7;\n        }\n        if ((DIR *)pFVar16->fts_dirp != (DIR *)0x0) {\n          closedir((DIR *)pFVar16->fts_dirp);\n          pFVar16->fts_dirp = (DIR *)0x0;\n        }\n        goto LAB_00019641;\n      }" { (if_statement "if (*piVar11 != 0) {\n          pFVar16->fts_errno = *piVar11;\n          pFVar16->fts_info = (-(ushort)(__dirp == (DIR *)0x0 && local_5c == 0) & 0xfffd) + 7;\n        }" if (parenthesized_expression "(*piVar11 != 0)" ( (binary_expression "*piVar11 != 0" (pointer_expression "*piVar11" * identifier) != number_literal) )) (compound_statement "{\n          pFVar16->fts_errno = *piVar11;\n          pFVar16->fts_info = (-(ushort)(__dirp == (DIR *)0x0 && local_5c == 0) & 0xfffd) + 7;\n        }" { (expression_statement "pFVar16->fts_errno = *piVar11;" (assignment_expression "pFVar16->fts_errno = *piVar11" (field_expression "pFVar16->fts_errno" identifier -> field_identifier) = (pointer_expression "*piVar11" * identifier)) ;) (expression_statement "pFVar16->fts_info = (-(ushort)(__dirp == (DIR *)0x0 && local_5c == 0) & 0xfffd) + 7;" (assignment_expression "pFVar16->fts_info = (-(ushort)(__dirp == (DIR *)0x0 && local_5c == 0) & 0xfffd) + 7" (field_expression "pFVar16->fts_info" identifier -> field_identifier) = (binary_expression "(-(ushort)(__dirp == (DIR *)0x0 && local_5c == 0) & 0xfffd) + 7" (parenthesized_expression "(-(ushort)(__dirp == (DIR *)0x0 && local_5c == 0) & 0xfffd)" ( (binary_expression "-(ushort)(__dirp == (DIR *)0x0 && local_5c == 0) & 0xfffd" (unary_expression "-(ushort)(__dirp == (DIR *)0x0 && local_5c == 0)" - (call_expression "(ushort)(__dirp == (DIR *)0x0 && local_5c == 0)" (parenthesized_expression "(ushort)" ( identifier )) (argument_list "(__dirp == (DIR *)0x0 && local_5c == 0)" ( (binary_expression "__dirp == (DIR *)0x0 && local_5c == 0" (binary_expression "__dirp == (DIR *)0x0" identifier == (cast_expression "(DIR *)0x0" ( (type_descriptor "DIR *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) && (binary_expression "local_5c == 0" identifier == number_literal)) )))) & number_literal) )) + number_literal)) ;) })) (if_statement "if ((DIR *)pFVar16->fts_dirp != (DIR *)0x0) {\n          closedir((DIR *)pFVar16->fts_dirp);\n          pFVar16->fts_dirp = (DIR *)0x0;\n        }" if (parenthesized_expression "((DIR *)pFVar16->fts_dirp != (DIR *)0x0)" ( (binary_expression "(DIR *)pFVar16->fts_dirp != (DIR *)0x0" (cast_expression "(DIR *)pFVar16->fts_dirp" ( (type_descriptor "DIR *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "pFVar16->fts_dirp" identifier -> field_identifier)) != (cast_expression "(DIR *)0x0" ( (type_descriptor "DIR *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          closedir((DIR *)pFVar16->fts_dirp);\n          pFVar16->fts_dirp = (DIR *)0x0;\n        }" { (expression_statement "closedir((DIR *)pFVar16->fts_dirp);" (call_expression "closedir((DIR *)pFVar16->fts_dirp)" identifier (argument_list "((DIR *)pFVar16->fts_dirp)" ( (cast_expression "(DIR *)pFVar16->fts_dirp" ( (type_descriptor "DIR *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "pFVar16->fts_dirp" identifier -> field_identifier)) ))) ;) (expression_statement "pFVar16->fts_dirp = (DIR *)0x0;" (assignment_expression "pFVar16->fts_dirp = (DIR *)0x0" (field_expression "pFVar16->fts_dirp" identifier -> field_identifier) = (cast_expression "(DIR *)0x0" ( (type_descriptor "DIR *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) })) (goto_statement "goto LAB_00019641;" goto statement_identifier ;) })) }) while (parenthesized_expression "((((sp->fts_options & 0x20) == 0) && (pdVar12->d_name[0] == '.')) &&\n            ((pdVar12->d_name[1] == '\0' || (*(short *)(pdVar12->d_name + 1) == 0x2e))))" ( (binary_expression "(((sp->fts_options & 0x20) == 0) && (pdVar12->d_name[0] == '.')) &&\n            ((pdVar12->d_name[1] == '\0' || (*(short *)(pdVar12->d_name + 1) == 0x2e)))" (parenthesized_expression "(((sp->fts_options & 0x20) == 0) && (pdVar12->d_name[0] == '.'))" ( (binary_expression "((sp->fts_options & 0x20) == 0) && (pdVar12->d_name[0] == '.')" (parenthesized_expression "((sp->fts_options & 0x20) == 0)" ( (binary_expression "(sp->fts_options & 0x20) == 0" (parenthesized_expression "(sp->fts_options & 0x20)" ( (binary_expression "sp->fts_options & 0x20" (field_expression "sp->fts_options" identifier -> field_identifier) & number_literal) )) == number_literal) )) && (parenthesized_expression "(pdVar12->d_name[0] == '.')" ( (binary_expression "pdVar12->d_name[0] == '.'" (subscript_expression "pdVar12->d_name[0]" (field_expression "pdVar12->d_name" identifier -> field_identifier) [ number_literal ]) == (char_literal "'.'" ' character ')) ))) )) && (parenthesized_expression "((pdVar12->d_name[1] == '\0' || (*(short *)(pdVar12->d_name + 1) == 0x2e)))" ( (parenthesized_expression "(pdVar12->d_name[1] == '\0' || (*(short *)(pdVar12->d_name + 1) == 0x2e))" ( (binary_expression "pdVar12->d_name[1] == '\0' || (*(short *)(pdVar12->d_name + 1) == 0x2e)" (binary_expression "pdVar12->d_name[1] == '\0'" (subscript_expression "pdVar12->d_name[1]" (field_expression "pdVar12->d_name" identifier -> field_identifier) [ number_literal ]) == (char_literal "'\0'" ' escape_sequence ')) || (parenthesized_expression "(*(short *)(pdVar12->d_name + 1) == 0x2e)" ( (binary_expression "*(short *)(pdVar12->d_name + 1) == 0x2e" (pointer_expression "*(short *)(pdVar12->d_name + 1)" * (cast_expression "(short *)(pdVar12->d_name + 1)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pdVar12->d_name + 1)" ( (binary_expression "pdVar12->d_name + 1" (field_expression "pdVar12->d_name" identifier -> field_identifier) + number_literal) )))) == number_literal) ))) )) ))) )) ;) (expression_statement "namelen = strlen(pdVar12->d_name);" (assignment_expression "namelen = strlen(pdVar12->d_name)" identifier = (call_expression "strlen(pdVar12->d_name)" identifier (argument_list "(pdVar12->d_name)" ( (field_expression "pdVar12->d_name" identifier -> field_identifier) )))) ;) (expression_statement "pFVar13 = fts_alloc(sp,pdVar12->d_name,namelen);" (assignment_expression "pFVar13 = fts_alloc(sp,pdVar12->d_name,namelen)" identifier = (call_expression "fts_alloc(sp,pdVar12->d_name,namelen)" identifier (argument_list "(sp,pdVar12->d_name,namelen)" ( identifier , (field_expression "pdVar12->d_name" identifier -> field_identifier) , identifier )))) ;) (if_statement "if (pFVar13 == (FTSENT *)0x0) {\nLAB_00019910:\n      iVar15 = *piVar11;\n      free(pFVar13);\n      fts_lfree(local_48);\n      closedir((DIR *)pFVar16->fts_dirp);\n      pFVar16->fts_dirp = (DIR *)0x0;\n      pFVar16->fts_info = 7;\n      sp->fts_options = sp->fts_options | 0x4000;\n      *piVar11 = iVar15;\n      return (FTSENT *)0x0;\n    }" if (parenthesized_expression "(pFVar13 == (FTSENT *)0x0)" ( (binary_expression "pFVar13 == (FTSENT *)0x0" identifier == (cast_expression "(FTSENT *)0x0" ( (type_descriptor "FTSENT *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nLAB_00019910:\n      iVar15 = *piVar11;\n      free(pFVar13);\n      fts_lfree(local_48);\n      closedir((DIR *)pFVar16->fts_dirp);\n      pFVar16->fts_dirp = (DIR *)0x0;\n      pFVar16->fts_info = 7;\n      sp->fts_options = sp->fts_options | 0x4000;\n      *piVar11 = iVar15;\n      return (FTSENT *)0x0;\n    }" { (labeled_statement "LAB_00019910:\n      iVar15 = *piVar11;" statement_identifier : (expression_statement "iVar15 = *piVar11;" (assignment_expression "iVar15 = *piVar11" identifier = (pointer_expression "*piVar11" * identifier)) ;)) (expression_statement "free(pFVar13);" (call_expression "free(pFVar13)" identifier (argument_list "(pFVar13)" ( identifier ))) ;) (expression_statement "fts_lfree(local_48);" (call_expression "fts_lfree(local_48)" identifier (argument_list "(local_48)" ( identifier ))) ;) (expression_statement "closedir((DIR *)pFVar16->fts_dirp);" (call_expression "closedir((DIR *)pFVar16->fts_dirp)" identifier (argument_list "((DIR *)pFVar16->fts_dirp)" ( (cast_expression "(DIR *)pFVar16->fts_dirp" ( (type_descriptor "DIR *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "pFVar16->fts_dirp" identifier -> field_identifier)) ))) ;) (expression_statement "pFVar16->fts_dirp = (DIR *)0x0;" (assignment_expression "pFVar16->fts_dirp = (DIR *)0x0" (field_expression "pFVar16->fts_dirp" identifier -> field_identifier) = (cast_expression "(DIR *)0x0" ( (type_descriptor "DIR *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "pFVar16->fts_info = 7;" (assignment_expression "pFVar16->fts_info = 7" (field_expression "pFVar16->fts_info" identifier -> field_identifier) = number_literal) ;) (expression_statement "sp->fts_options = sp->fts_options | 0x4000;" (assignment_expression "sp->fts_options = sp->fts_options | 0x4000" (field_expression "sp->fts_options" identifier -> field_identifier) = (binary_expression "sp->fts_options | 0x4000" (field_expression "sp->fts_options" identifier -> field_identifier) | number_literal)) ;) (expression_statement "*piVar11 = iVar15;" (assignment_expression "*piVar11 = iVar15" (pointer_expression "*piVar11" * identifier) = identifier) ;) (return_statement "return (FTSENT *)0x0;" return (cast_expression "(FTSENT *)0x0" ( (type_descriptor "FTSENT *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (if_statement "if (local_44 <= namelen) {\n      pcVar3 = sp->fts_path;\n      _Var9 = fts_palloc((FTS *)&sp->fts_path,(size_t)&sp->fts_pathlen,\n                         (FTS *)(local_30 + 2 + namelen));\n      if (!_Var9) goto LAB_00019910;\n      pcVar8 = local_38;\n      if ((sp->fts_path != pcVar3) &&\n         (local_1f = _Var9, pcVar8 = sp->fts_path + local_4c, (sp->fts_options & 4) == 0)) {\n        pcVar8 = local_38;\n      }\n      local_38 = pcVar8;\n      local_44 = sp->fts_pathlen - local_4c;\n    }" if (parenthesized_expression "(local_44 <= namelen)" ( (binary_expression "local_44 <= namelen" identifier <= identifier) )) (compound_statement "{\n      pcVar3 = sp->fts_path;\n      _Var9 = fts_palloc((FTS *)&sp->fts_path,(size_t)&sp->fts_pathlen,\n                         (FTS *)(local_30 + 2 + namelen));\n      if (!_Var9) goto LAB_00019910;\n      pcVar8 = local_38;\n      if ((sp->fts_path != pcVar3) &&\n         (local_1f = _Var9, pcVar8 = sp->fts_path + local_4c, (sp->fts_options & 4) == 0)) {\n        pcVar8 = local_38;\n      }\n      local_38 = pcVar8;\n      local_44 = sp->fts_pathlen - local_4c;\n    }" { (expression_statement "pcVar3 = sp->fts_path;" (assignment_expression "pcVar3 = sp->fts_path" identifier = (field_expression "sp->fts_path" identifier -> field_identifier)) ;) (expression_statement "_Var9 = fts_palloc((FTS *)&sp->fts_path,(size_t)&sp->fts_pathlen,\n                         (FTS *)(local_30 + 2 + namelen));" (assignment_expression "_Var9 = fts_palloc((FTS *)&sp->fts_path,(size_t)&sp->fts_pathlen,\n                         (FTS *)(local_30 + 2 + namelen))" identifier = (call_expression "fts_palloc((FTS *)&sp->fts_path,(size_t)&sp->fts_pathlen,\n                         (FTS *)(local_30 + 2 + namelen))" identifier (argument_list "((FTS *)&sp->fts_path,(size_t)&sp->fts_pathlen,\n                         (FTS *)(local_30 + 2 + namelen))" ( (cast_expression "(FTS *)&sp->fts_path" ( (type_descriptor "FTS *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&sp->fts_path" & (field_expression "sp->fts_path" identifier -> field_identifier))) , (cast_expression "(size_t)&sp->fts_pathlen" ( (type_descriptor "size_t" primitive_type) ) (pointer_expression "&sp->fts_pathlen" & (field_expression "sp->fts_pathlen" identifier -> field_identifier))) , (cast_expression "(FTS *)(local_30 + 2 + namelen)" ( (type_descriptor "FTS *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_30 + 2 + namelen)" ( (binary_expression "local_30 + 2 + namelen" (binary_expression "local_30 + 2" identifier + number_literal) + identifier) ))) )))) ;) (if_statement "if (!_Var9) goto LAB_00019910;" if (parenthesized_expression "(!_Var9)" ( (unary_expression "!_Var9" ! identifier) )) (goto_statement "goto LAB_00019910;" goto statement_identifier ;)) (expression_statement "pcVar8 = local_38;" (assignment_expression "pcVar8 = local_38" identifier = identifier) ;) (if_statement "if ((sp->fts_path != pcVar3) &&\n         (local_1f = _Var9, pcVar8 = sp->fts_path + local_4c, (sp->fts_options & 4) == 0)) {\n        pcVar8 = local_38;\n      }" if (parenthesized_expression "((sp->fts_path != pcVar3) &&\n         (local_1f = _Var9, pcVar8 = sp->fts_path + local_4c, (sp->fts_options & 4) == 0))" ( (binary_expression "(sp->fts_path != pcVar3) &&\n         (local_1f = _Var9, pcVar8 = sp->fts_path + local_4c, (sp->fts_options & 4) == 0)" (parenthesized_expression "(sp->fts_path != pcVar3)" ( (binary_expression "sp->fts_path != pcVar3" (field_expression "sp->fts_path" identifier -> field_identifier) != identifier) )) && (parenthesized_expression "(local_1f = _Var9, pcVar8 = sp->fts_path + local_4c, (sp->fts_options & 4) == 0)" ( (comma_expression "local_1f = _Var9, pcVar8 = sp->fts_path + local_4c, (sp->fts_options & 4) == 0" (assignment_expression "local_1f = _Var9" identifier = identifier) , (comma_expression "pcVar8 = sp->fts_path + local_4c, (sp->fts_options & 4) == 0" (assignment_expression "pcVar8 = sp->fts_path + local_4c" identifier = (binary_expression "sp->fts_path + local_4c" (field_expression "sp->fts_path" identifier -> field_identifier) + identifier)) , (binary_expression "(sp->fts_options & 4) == 0" (parenthesized_expression "(sp->fts_options & 4)" ( (binary_expression "sp->fts_options & 4" (field_expression "sp->fts_options" identifier -> field_identifier) & number_literal) )) == number_literal))) ))) )) (compound_statement "{\n        pcVar8 = local_38;\n      }" { (expression_statement "pcVar8 = local_38;" (assignment_expression "pcVar8 = local_38" identifier = identifier) ;) })) (expression_statement "local_38 = pcVar8;" (assignment_expression "local_38 = pcVar8" identifier = identifier) ;) (expression_statement "local_44 = sp->fts_pathlen - local_4c;" (assignment_expression "local_44 = sp->fts_pathlen - local_4c" identifier = (binary_expression "sp->fts_pathlen - local_4c" (field_expression "sp->fts_pathlen" identifier -> field_identifier) - identifier)) ;) })) (if_statement "if (CARRY4(namelen,local_4c)) {\n      free(pFVar13);\n      fts_lfree(local_48);\n      closedir((DIR *)pFVar16->fts_dirp);\n      pFVar16->fts_dirp = (DIR *)0x0;\n      pFVar16->fts_info = 7;\n      sp->fts_options = sp->fts_options | 0x4000;\n      *piVar11 = 0x24;\n      return (FTSENT *)0x0;\n    }" if (parenthesized_expression "(CARRY4(namelen,local_4c))" ( (call_expression "CARRY4(namelen,local_4c)" identifier (argument_list "(namelen,local_4c)" ( identifier , identifier ))) )) (compound_statement "{\n      free(pFVar13);\n      fts_lfree(local_48);\n      closedir((DIR *)pFVar16->fts_dirp);\n      pFVar16->fts_dirp = (DIR *)0x0;\n      pFVar16->fts_info = 7;\n      sp->fts_options = sp->fts_options | 0x4000;\n      *piVar11 = 0x24;\n      return (FTSENT *)0x0;\n    }" { (expression_statement "free(pFVar13);" (call_expression "free(pFVar13)" identifier (argument_list "(pFVar13)" ( identifier ))) ;) (expression_statement "fts_lfree(local_48);" (call_expression "fts_lfree(local_48)" identifier (argument_list "(local_48)" ( identifier ))) ;) (expression_statement "closedir((DIR *)pFVar16->fts_dirp);" (call_expression "closedir((DIR *)pFVar16->fts_dirp)" identifier (argument_list "((DIR *)pFVar16->fts_dirp)" ( (cast_expression "(DIR *)pFVar16->fts_dirp" ( (type_descriptor "DIR *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "pFVar16->fts_dirp" identifier -> field_identifier)) ))) ;) (expression_statement "pFVar16->fts_dirp = (DIR *)0x0;" (assignment_expression "pFVar16->fts_dirp = (DIR *)0x0" (field_expression "pFVar16->fts_dirp" identifier -> field_identifier) = (cast_expression "(DIR *)0x0" ( (type_descriptor "DIR *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "pFVar16->fts_info = 7;" (assignment_expression "pFVar16->fts_info = 7" (field_expression "pFVar16->fts_info" identifier -> field_identifier) = number_literal) ;) (expression_statement "sp->fts_options = sp->fts_options | 0x4000;" (assignment_expression "sp->fts_options = sp->fts_options | 0x4000" (field_expression "sp->fts_options" identifier -> field_identifier) = (binary_expression "sp->fts_options | 0x4000" (field_expression "sp->fts_options" identifier -> field_identifier) | number_literal)) ;) (expression_statement "*piVar11 = 0x24;" (assignment_expression "*piVar11 = 0x24" (pointer_expression "*piVar11" * identifier) = number_literal) ;) (return_statement "return (FTSENT *)0x0;" return (cast_expression "(FTSENT *)0x0" ( (type_descriptor "FTSENT *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (expression_statement "uVar14 = *(undefined4 *)((int)&pdVar12->d_ino + 4);" (assignment_expression "uVar14 = *(undefined4 *)((int)&pdVar12->d_ino + 4)" identifier = (pointer_expression "*(undefined4 *)((int)&pdVar12->d_ino + 4)" * (cast_expression "(undefined4 *)((int)&pdVar12->d_ino + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&pdVar12->d_ino + 4)" ( (binary_expression "(int)&pdVar12->d_ino + 4" (cast_expression "(int)&pdVar12->d_ino" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&pdVar12->d_ino" & (field_expression "pdVar12->d_ino" identifier -> field_identifier))) + number_literal) ))))) ;) (expression_statement "pFVar13->fts_level = iVar15 + 1;" (assignment_expression "pFVar13->fts_level = iVar15 + 1" (field_expression "pFVar13->fts_level" identifier -> field_identifier) = (binary_expression "iVar15 + 1" identifier + number_literal)) ;) (expression_statement "p_Var2 = sp->fts_cur;" (assignment_expression "p_Var2 = sp->fts_cur" identifier = (field_expression "sp->fts_cur" identifier -> field_identifier)) ;) (expression_statement "pFVar13->fts_pathlen = namelen + local_4c;" (assignment_expression "pFVar13->fts_pathlen = namelen + local_4c" (field_expression "pFVar13->fts_pathlen" identifier -> field_identifier) = (binary_expression "namelen + local_4c" identifier + identifier)) ;) (expression_statement "pFVar13->fts_parent = p_Var2;" (assignment_expression "pFVar13->fts_parent = p_Var2" (field_expression "pFVar13->fts_parent" identifier -> field_identifier) = identifier) ;) (expression_statement "_Var5 = pdVar12->d_ino;" (assignment_expression "_Var5 = pdVar12->d_ino" identifier = (field_expression "pdVar12->d_ino" identifier -> field_identifier)) ;) (expression_statement "*(undefined4 *)((int)&pFVar13->fts_statp[0].st_ino + 4) = uVar14;" (assignment_expression "*(undefined4 *)((int)&pFVar13->fts_statp[0].st_ino + 4) = uVar14" (pointer_expression "*(undefined4 *)((int)&pFVar13->fts_statp[0].st_ino + 4)" * (cast_expression "(undefined4 *)((int)&pFVar13->fts_statp[0].st_ino + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&pFVar13->fts_statp[0].st_ino + 4)" ( (binary_expression "(int)&pFVar13->fts_statp[0].st_ino + 4" (cast_expression "(int)&pFVar13->fts_statp[0].st_ino" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&pFVar13->fts_statp[0].st_ino" & (field_expression "pFVar13->fts_statp[0].st_ino" (subscript_expression "pFVar13->fts_statp[0]" (field_expression "pFVar13->fts_statp" identifier -> field_identifier) [ number_literal ]) . field_identifier))) + number_literal) )))) = identifier) ;) (expression_statement "*(int *)&pFVar13->fts_statp[0].st_ino = (int)_Var5;" (assignment_expression "*(int *)&pFVar13->fts_statp[0].st_ino = (int)_Var5" (pointer_expression "*(int *)&pFVar13->fts_statp[0].st_ino" * (cast_expression "(int *)&pFVar13->fts_statp[0].st_ino" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pFVar13->fts_statp[0].st_ino" & (field_expression "pFVar13->fts_statp[0].st_ino" (subscript_expression "pFVar13->fts_statp[0]" (field_expression "pFVar13->fts_statp" identifier -> field_identifier) [ number_literal ]) . field_identifier)))) = (cast_expression "(int)_Var5" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "uVar18 = sp->fts_options;" (assignment_expression "uVar18 = sp->fts_options" identifier = (field_expression "sp->fts_options" identifier -> field_identifier)) ;) (if_statement "if ((uVar18 & 4) == 0) {\n      pFVar13->fts_accpath = (char *)(pFVar13 + 1);\n    }\n    else {\n      pFVar13->fts_accpath = pFVar13->fts_path;\n      memmove(local_38,pFVar13 + 1,pFVar13->fts_namelen + 1);\n      uVar18 = sp->fts_options;\n    }" if (parenthesized_expression "((uVar18 & 4) == 0)" ( (binary_expression "(uVar18 & 4) == 0" (parenthesized_expression "(uVar18 & 4)" ( (binary_expression "uVar18 & 4" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n      pFVar13->fts_accpath = (char *)(pFVar13 + 1);\n    }" { (expression_statement "pFVar13->fts_accpath = (char *)(pFVar13 + 1);" (assignment_expression "pFVar13->fts_accpath = (char *)(pFVar13 + 1)" (field_expression "pFVar13->fts_accpath" identifier -> field_identifier) = (cast_expression "(char *)(pFVar13 + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pFVar13 + 1)" ( (binary_expression "pFVar13 + 1" identifier + number_literal) )))) ;) }) (else_clause "else {\n      pFVar13->fts_accpath = pFVar13->fts_path;\n      memmove(local_38,pFVar13 + 1,pFVar13->fts_namelen + 1);\n      uVar18 = sp->fts_options;\n    }" else (compound_statement "{\n      pFVar13->fts_accpath = pFVar13->fts_path;\n      memmove(local_38,pFVar13 + 1,pFVar13->fts_namelen + 1);\n      uVar18 = sp->fts_options;\n    }" { (expression_statement "pFVar13->fts_accpath = pFVar13->fts_path;" (assignment_expression "pFVar13->fts_accpath = pFVar13->fts_path" (field_expression "pFVar13->fts_accpath" identifier -> field_identifier) = (field_expression "pFVar13->fts_path" identifier -> field_identifier)) ;) (expression_statement "memmove(local_38,pFVar13 + 1,pFVar13->fts_namelen + 1);" (call_expression "memmove(local_38,pFVar13 + 1,pFVar13->fts_namelen + 1)" identifier (argument_list "(local_38,pFVar13 + 1,pFVar13->fts_namelen + 1)" ( identifier , (binary_expression "pFVar13 + 1" identifier + number_literal) , (binary_expression "pFVar13->fts_namelen + 1" (field_expression "pFVar13->fts_namelen" identifier -> field_identifier) + number_literal) ))) ;) (expression_statement "uVar18 = sp->fts_options;" (assignment_expression "uVar18 = sp->fts_options" identifier = (field_expression "sp->fts_options" identifier -> field_identifier)) ;) }))) (if_statement "if ((sp->fts_compar == (_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *)0x0) ||\n       ((uVar18 & 0x400) != 0)) {\n      uVar21 = pdVar12->d_type - 1;\n      if (((uVar18 & 0x18) == 0x18) && ((pdVar12->d_type & 0xfb) != 0)) {\n        pFVar13->fts_info = 0xb;\n        if (uVar21 < 0xc) {\n          pFVar13->fts_statp[0].st_mode = *(__mode_t *)(CSWTCH_40 + uVar21 * 4);\n          uVar14 = 1;\n        }\n        else {\n          pFVar13->fts_statp[0].st_mode = 0;\n          uVar14 = 1;\n        }\n      }\n      else {\n        pFVar13->fts_info = 0xb;\n        if (uVar21 < 0xc) {\n          pFVar13->fts_statp[0].st_mode = *(__mode_t *)(CSWTCH_40 + uVar21 * 4);\n          uVar14 = 2;\n        }\n        else {\n          pFVar13->fts_statp[0].st_mode = 0;\n          uVar14 = 2;\n        }\n      }\n      *(undefined4 *)&pFVar13->fts_statp[0].st_size = uVar14;\n      *(undefined4 *)((int)&pFVar13->fts_statp[0].st_size + 4) = 0;\n    }\n    else {\n      uVar10 = fts_stat(sp,pFVar13,false);\n      pFVar13->fts_info = uVar10;\n    }" if (parenthesized_expression "((sp->fts_compar == (_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *)0x0) ||\n       ((uVar18 & 0x400) != 0))" ( (binary_expression "(sp->fts_compar == (_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *)0x0) ||\n       ((uVar18 & 0x400) != 0)" (parenthesized_expression "(sp->fts_compar == (_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *)0x0)" ( (binary_expression "sp->fts_compar == (_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *)0x0" (field_expression "sp->fts_compar" identifier -> field_identifier) == (cast_expression "(_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *)0x0" ( (type_descriptor "_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "((uVar18 & 0x400) != 0)" ( (binary_expression "(uVar18 & 0x400) != 0" (parenthesized_expression "(uVar18 & 0x400)" ( (binary_expression "uVar18 & 0x400" identifier & number_literal) )) != number_literal) ))) )) (compound_statement "{\n      uVar21 = pdVar12->d_type - 1;\n      if (((uVar18 & 0x18) == 0x18) && ((pdVar12->d_type & 0xfb) != 0)) {\n        pFVar13->fts_info = 0xb;\n        if (uVar21 < 0xc) {\n          pFVar13->fts_statp[0].st_mode = *(__mode_t *)(CSWTCH_40 + uVar21 * 4);\n          uVar14 = 1;\n        }\n        else {\n          pFVar13->fts_statp[0].st_mode = 0;\n          uVar14 = 1;\n        }\n      }\n      else {\n        pFVar13->fts_info = 0xb;\n        if (uVar21 < 0xc) {\n          pFVar13->fts_statp[0].st_mode = *(__mode_t *)(CSWTCH_40 + uVar21 * 4);\n          uVar14 = 2;\n        }\n        else {\n          pFVar13->fts_statp[0].st_mode = 0;\n          uVar14 = 2;\n        }\n      }\n      *(undefined4 *)&pFVar13->fts_statp[0].st_size = uVar14;\n      *(undefined4 *)((int)&pFVar13->fts_statp[0].st_size + 4) = 0;\n    }" { (expression_statement "uVar21 = pdVar12->d_type - 1;" (assignment_expression "uVar21 = pdVar12->d_type - 1" identifier = (binary_expression "pdVar12->d_type - 1" (field_expression "pdVar12->d_type" identifier -> field_identifier) - number_literal)) ;) (if_statement "if (((uVar18 & 0x18) == 0x18) && ((pdVar12->d_type & 0xfb) != 0)) {\n        pFVar13->fts_info = 0xb;\n        if (uVar21 < 0xc) {\n          pFVar13->fts_statp[0].st_mode = *(__mode_t *)(CSWTCH_40 + uVar21 * 4);\n          uVar14 = 1;\n        }\n        else {\n          pFVar13->fts_statp[0].st_mode = 0;\n          uVar14 = 1;\n        }\n      }\n      else {\n        pFVar13->fts_info = 0xb;\n        if (uVar21 < 0xc) {\n          pFVar13->fts_statp[0].st_mode = *(__mode_t *)(CSWTCH_40 + uVar21 * 4);\n          uVar14 = 2;\n        }\n        else {\n          pFVar13->fts_statp[0].st_mode = 0;\n          uVar14 = 2;\n        }\n      }" if (parenthesized_expression "(((uVar18 & 0x18) == 0x18) && ((pdVar12->d_type & 0xfb) != 0))" ( (binary_expression "((uVar18 & 0x18) == 0x18) && ((pdVar12->d_type & 0xfb) != 0)" (parenthesized_expression "((uVar18 & 0x18) == 0x18)" ( (binary_expression "(uVar18 & 0x18) == 0x18" (parenthesized_expression "(uVar18 & 0x18)" ( (binary_expression "uVar18 & 0x18" identifier & number_literal) )) == number_literal) )) && (parenthesized_expression "((pdVar12->d_type & 0xfb) != 0)" ( (binary_expression "(pdVar12->d_type & 0xfb) != 0" (parenthesized_expression "(pdVar12->d_type & 0xfb)" ( (binary_expression "pdVar12->d_type & 0xfb" (field_expression "pdVar12->d_type" identifier -> field_identifier) & number_literal) )) != number_literal) ))) )) (compound_statement "{\n        pFVar13->fts_info = 0xb;\n        if (uVar21 < 0xc) {\n          pFVar13->fts_statp[0].st_mode = *(__mode_t *)(CSWTCH_40 + uVar21 * 4);\n          uVar14 = 1;\n        }\n        else {\n          pFVar13->fts_statp[0].st_mode = 0;\n          uVar14 = 1;\n        }\n      }" { (expression_statement "pFVar13->fts_info = 0xb;" (assignment_expression "pFVar13->fts_info = 0xb" (field_expression "pFVar13->fts_info" identifier -> field_identifier) = number_literal) ;) (if_statement "if (uVar21 < 0xc) {\n          pFVar13->fts_statp[0].st_mode = *(__mode_t *)(CSWTCH_40 + uVar21 * 4);\n          uVar14 = 1;\n        }\n        else {\n          pFVar13->fts_statp[0].st_mode = 0;\n          uVar14 = 1;\n        }" if (parenthesized_expression "(uVar21 < 0xc)" ( (binary_expression "uVar21 < 0xc" identifier < number_literal) )) (compound_statement "{\n          pFVar13->fts_statp[0].st_mode = *(__mode_t *)(CSWTCH_40 + uVar21 * 4);\n          uVar14 = 1;\n        }" { (expression_statement "pFVar13->fts_statp[0].st_mode = *(__mode_t *)(CSWTCH_40 + uVar21 * 4);" (assignment_expression "pFVar13->fts_statp[0].st_mode = *(__mode_t *)(CSWTCH_40 + uVar21 * 4)" (field_expression "pFVar13->fts_statp[0].st_mode" (subscript_expression "pFVar13->fts_statp[0]" (field_expression "pFVar13->fts_statp" identifier -> field_identifier) [ number_literal ]) . field_identifier) = (pointer_expression "*(__mode_t *)(CSWTCH_40 + uVar21 * 4)" * (cast_expression "(__mode_t *)(CSWTCH_40 + uVar21 * 4)" ( (type_descriptor "__mode_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(CSWTCH_40 + uVar21 * 4)" ( (binary_expression "CSWTCH_40 + uVar21 * 4" identifier + (binary_expression "uVar21 * 4" identifier * number_literal)) ))))) ;) (expression_statement "uVar14 = 1;" (assignment_expression "uVar14 = 1" identifier = number_literal) ;) }) (else_clause "else {\n          pFVar13->fts_statp[0].st_mode = 0;\n          uVar14 = 1;\n        }" else (compound_statement "{\n          pFVar13->fts_statp[0].st_mode = 0;\n          uVar14 = 1;\n        }" { (expression_statement "pFVar13->fts_statp[0].st_mode = 0;" (assignment_expression "pFVar13->fts_statp[0].st_mode = 0" (field_expression "pFVar13->fts_statp[0].st_mode" (subscript_expression "pFVar13->fts_statp[0]" (field_expression "pFVar13->fts_statp" identifier -> field_identifier) [ number_literal ]) . field_identifier) = number_literal) ;) (expression_statement "uVar14 = 1;" (assignment_expression "uVar14 = 1" identifier = number_literal) ;) }))) }) (else_clause "else {\n        pFVar13->fts_info = 0xb;\n        if (uVar21 < 0xc) {\n          pFVar13->fts_statp[0].st_mode = *(__mode_t *)(CSWTCH_40 + uVar21 * 4);\n          uVar14 = 2;\n        }\n        else {\n          pFVar13->fts_statp[0].st_mode = 0;\n          uVar14 = 2;\n        }\n      }" else (compound_statement "{\n        pFVar13->fts_info = 0xb;\n        if (uVar21 < 0xc) {\n          pFVar13->fts_statp[0].st_mode = *(__mode_t *)(CSWTCH_40 + uVar21 * 4);\n          uVar14 = 2;\n        }\n        else {\n          pFVar13->fts_statp[0].st_mode = 0;\n          uVar14 = 2;\n        }\n      }" { (expression_statement "pFVar13->fts_info = 0xb;" (assignment_expression "pFVar13->fts_info = 0xb" (field_expression "pFVar13->fts_info" identifier -> field_identifier) = number_literal) ;) (if_statement "if (uVar21 < 0xc) {\n          pFVar13->fts_statp[0].st_mode = *(__mode_t *)(CSWTCH_40 + uVar21 * 4);\n          uVar14 = 2;\n        }\n        else {\n          pFVar13->fts_statp[0].st_mode = 0;\n          uVar14 = 2;\n        }" if (parenthesized_expression "(uVar21 < 0xc)" ( (binary_expression "uVar21 < 0xc" identifier < number_literal) )) (compound_statement "{\n          pFVar13->fts_statp[0].st_mode = *(__mode_t *)(CSWTCH_40 + uVar21 * 4);\n          uVar14 = 2;\n        }" { (expression_statement "pFVar13->fts_statp[0].st_mode = *(__mode_t *)(CSWTCH_40 + uVar21 * 4);" (assignment_expression "pFVar13->fts_statp[0].st_mode = *(__mode_t *)(CSWTCH_40 + uVar21 * 4)" (field_expression "pFVar13->fts_statp[0].st_mode" (subscript_expression "pFVar13->fts_statp[0]" (field_expression "pFVar13->fts_statp" identifier -> field_identifier) [ number_literal ]) . field_identifier) = (pointer_expression "*(__mode_t *)(CSWTCH_40 + uVar21 * 4)" * (cast_expression "(__mode_t *)(CSWTCH_40 + uVar21 * 4)" ( (type_descriptor "__mode_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(CSWTCH_40 + uVar21 * 4)" ( (binary_expression "CSWTCH_40 + uVar21 * 4" identifier + (binary_expression "uVar21 * 4" identifier * number_literal)) ))))) ;) (expression_statement "uVar14 = 2;" (assignment_expression "uVar14 = 2" identifier = number_literal) ;) }) (else_clause "else {\n          pFVar13->fts_statp[0].st_mode = 0;\n          uVar14 = 2;\n        }" else (compound_statement "{\n          pFVar13->fts_statp[0].st_mode = 0;\n          uVar14 = 2;\n        }" { (expression_statement "pFVar13->fts_statp[0].st_mode = 0;" (assignment_expression "pFVar13->fts_statp[0].st_mode = 0" (field_expression "pFVar13->fts_statp[0].st_mode" (subscript_expression "pFVar13->fts_statp[0]" (field_expression "pFVar13->fts_statp" identifier -> field_identifier) [ number_literal ]) . field_identifier) = number_literal) ;) (expression_statement "uVar14 = 2;" (assignment_expression "uVar14 = 2" identifier = number_literal) ;) }))) }))) (expression_statement "*(undefined4 *)&pFVar13->fts_statp[0].st_size = uVar14;" (assignment_expression "*(undefined4 *)&pFVar13->fts_statp[0].st_size = uVar14" (pointer_expression "*(undefined4 *)&pFVar13->fts_statp[0].st_size" * (cast_expression "(undefined4 *)&pFVar13->fts_statp[0].st_size" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pFVar13->fts_statp[0].st_size" & (field_expression "pFVar13->fts_statp[0].st_size" (subscript_expression "pFVar13->fts_statp[0]" (field_expression "pFVar13->fts_statp" identifier -> field_identifier) [ number_literal ]) . field_identifier)))) = identifier) ;) (expression_statement "*(undefined4 *)((int)&pFVar13->fts_statp[0].st_size + 4) = 0;" (assignment_expression "*(undefined4 *)((int)&pFVar13->fts_statp[0].st_size + 4) = 0" (pointer_expression "*(undefined4 *)((int)&pFVar13->fts_statp[0].st_size + 4)" * (cast_expression "(undefined4 *)((int)&pFVar13->fts_statp[0].st_size + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&pFVar13->fts_statp[0].st_size + 4)" ( (binary_expression "(int)&pFVar13->fts_statp[0].st_size + 4" (cast_expression "(int)&pFVar13->fts_statp[0].st_size" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&pFVar13->fts_statp[0].st_size" & (field_expression "pFVar13->fts_statp[0].st_size" (subscript_expression "pFVar13->fts_statp[0]" (field_expression "pFVar13->fts_statp" identifier -> field_identifier) [ number_literal ]) . field_identifier))) + number_literal) )))) = number_literal) ;) }) (else_clause "else {\n      uVar10 = fts_stat(sp,pFVar13,false);\n      pFVar13->fts_info = uVar10;\n    }" else (compound_statement "{\n      uVar10 = fts_stat(sp,pFVar13,false);\n      pFVar13->fts_info = uVar10;\n    }" { (expression_statement "uVar10 = fts_stat(sp,pFVar13,false);" (assignment_expression "uVar10 = fts_stat(sp,pFVar13,false)" identifier = (call_expression "fts_stat(sp,pFVar13,false)" identifier (argument_list "(sp,pFVar13,false)" ( identifier , identifier , false )))) ;) (expression_statement "pFVar13->fts_info = uVar10;" (assignment_expression "pFVar13->fts_info = uVar10" (field_expression "pFVar13->fts_info" identifier -> field_identifier) = identifier) ;) }))) (expression_statement "pFVar13->fts_link = (_ftsent *)0x0;" (assignment_expression "pFVar13->fts_link = (_ftsent *)0x0" (field_expression "pFVar13->fts_link" identifier -> field_identifier) = (cast_expression "(_ftsent *)0x0" ( (type_descriptor "_ftsent *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "pFVar7 = pFVar13;" (assignment_expression "pFVar7 = pFVar13" identifier = identifier) ;) (if_statement "if (local_48 != (FTSENT *)0x0) {\n      local_54->fts_link = pFVar13;\n      pFVar7 = local_48;\n    }" if (parenthesized_expression "(local_48 != (FTSENT *)0x0)" ( (binary_expression "local_48 != (FTSENT *)0x0" identifier != (cast_expression "(FTSENT *)0x0" ( (type_descriptor "FTSENT *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      local_54->fts_link = pFVar13;\n      pFVar7 = local_48;\n    }" { (expression_statement "local_54->fts_link = pFVar13;" (assignment_expression "local_54->fts_link = pFVar13" (field_expression "local_54->fts_link" identifier -> field_identifier) = identifier) ;) (expression_statement "pFVar7 = local_48;" (assignment_expression "pFVar7 = local_48" identifier = identifier) ;) })) (expression_statement "local_48 = pFVar7;" (assignment_expression "local_48 = pFVar7" identifier = identifier) ;) (expression_statement "local_54 = pFVar13;" (assignment_expression "local_54 = pFVar13" identifier = identifier) ;) (if_statement "if (local_5c == 10000) {\n      if ((sp->fts_compar != (_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *)0x0) ||\n         (((fVar19 = filesystem_type(pFVar16,local_2c), fVar19 != 0x6969 && (fVar19 != 0x1021994))\n          && (bVar4 = true, fVar19 != -0xacb2be)))) {\n        local_5c = 0x2711;\n        goto LAB_000193a8;\n      }\n      bVar4 = false;\n    }" if (parenthesized_expression "(local_5c == 10000)" ( (binary_expression "local_5c == 10000" identifier == number_literal) )) (compound_statement "{\n      if ((sp->fts_compar != (_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *)0x0) ||\n         (((fVar19 = filesystem_type(pFVar16,local_2c), fVar19 != 0x6969 && (fVar19 != 0x1021994))\n          && (bVar4 = true, fVar19 != -0xacb2be)))) {\n        local_5c = 0x2711;\n        goto LAB_000193a8;\n      }\n      bVar4 = false;\n    }" { (if_statement "if ((sp->fts_compar != (_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *)0x0) ||\n         (((fVar19 = filesystem_type(pFVar16,local_2c), fVar19 != 0x6969 && (fVar19 != 0x1021994))\n          && (bVar4 = true, fVar19 != -0xacb2be)))) {\n        local_5c = 0x2711;\n        goto LAB_000193a8;\n      }" if (parenthesized_expression "((sp->fts_compar != (_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *)0x0) ||\n         (((fVar19 = filesystem_type(pFVar16,local_2c), fVar19 != 0x6969 && (fVar19 != 0x1021994))\n          && (bVar4 = true, fVar19 != -0xacb2be))))" ( (binary_expression "(sp->fts_compar != (_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *)0x0) ||\n         (((fVar19 = filesystem_type(pFVar16,local_2c), fVar19 != 0x6969 && (fVar19 != 0x1021994))\n          && (bVar4 = true, fVar19 != -0xacb2be)))" (parenthesized_expression "(sp->fts_compar != (_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *)0x0)" ( (binary_expression "sp->fts_compar != (_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *)0x0" (field_expression "sp->fts_compar" identifier -> field_identifier) != (cast_expression "(_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *)0x0" ( (type_descriptor "_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "(((fVar19 = filesystem_type(pFVar16,local_2c), fVar19 != 0x6969 && (fVar19 != 0x1021994))\n          && (bVar4 = true, fVar19 != -0xacb2be)))" ( (parenthesized_expression "((fVar19 = filesystem_type(pFVar16,local_2c), fVar19 != 0x6969 && (fVar19 != 0x1021994))\n          && (bVar4 = true, fVar19 != -0xacb2be))" ( (binary_expression "(fVar19 = filesystem_type(pFVar16,local_2c), fVar19 != 0x6969 && (fVar19 != 0x1021994))\n          && (bVar4 = true, fVar19 != -0xacb2be)" (parenthesized_expression "(fVar19 = filesystem_type(pFVar16,local_2c), fVar19 != 0x6969 && (fVar19 != 0x1021994))" ( (comma_expression "fVar19 = filesystem_type(pFVar16,local_2c), fVar19 != 0x6969 && (fVar19 != 0x1021994)" (assignment_expression "fVar19 = filesystem_type(pFVar16,local_2c)" identifier = (call_expression "filesystem_type(pFVar16,local_2c)" identifier (argument_list "(pFVar16,local_2c)" ( identifier , identifier )))) , (binary_expression "fVar19 != 0x6969 && (fVar19 != 0x1021994)" (binary_expression "fVar19 != 0x6969" identifier != number_literal) && (parenthesized_expression "(fVar19 != 0x1021994)" ( (binary_expression "fVar19 != 0x1021994" identifier != number_literal) )))) )) && (parenthesized_expression "(bVar4 = true, fVar19 != -0xacb2be)" ( (comma_expression "bVar4 = true, fVar19 != -0xacb2be" (assignment_expression "bVar4 = true" identifier = true) , (binary_expression "fVar19 != -0xacb2be" identifier != number_literal)) ))) )) ))) )) (compound_statement "{\n        local_5c = 0x2711;\n        goto LAB_000193a8;\n      }" { (expression_statement "local_5c = 0x2711;" (assignment_expression "local_5c = 0x2711" identifier = number_literal) ;) (goto_statement "goto LAB_000193a8;" goto statement_identifier ;) })) (expression_statement "bVar4 = false;" (assignment_expression "bVar4 = false" identifier = false) ;) })) (expression_statement "local_5c = local_5c + 1;" (assignment_expression "local_5c = local_5c + 1" identifier = (binary_expression "local_5c + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(local_5c < local_34)" ( (binary_expression "local_5c < local_34" identifier < identifier) )) ;)) (labeled_statement "LAB_00019641:\n  if (local_1f != false) {\n    pcVar3 = sp->fts_path;\n    for (p_Var2 = sp->fts_child; p_Var6 = local_48, p_Var2 != (_ftsent *)0x0;\n        p_Var2 = p_Var2->fts_link) {\n      if ((_ftsent *)p_Var2->fts_accpath != p_Var2 + 1) {\n        p_Var2->fts_accpath = pcVar3 + ((int)p_Var2->fts_accpath - (int)p_Var2->fts_path);\n      }\n      p_Var2->fts_path = pcVar3;\n    }\n    while (pFVar13 = p_Var6, -1 < pFVar13->fts_level) {\n      if ((FTSENT *)pFVar13->fts_accpath != pFVar13 + 1) {\n        pFVar13->fts_accpath = pcVar3 + ((int)pFVar13->fts_accpath - (int)pFVar13->fts_path);\n      }\n      pFVar13->fts_path = pcVar3;\n      p_Var6 = pFVar13->fts_link;\n      if (pFVar13->fts_link == (_ftsent *)0x0) {\n        p_Var6 = pFVar13->fts_parent;\n      }\n    }\n  }" statement_identifier : (if_statement "if (local_1f != false) {\n    pcVar3 = sp->fts_path;\n    for (p_Var2 = sp->fts_child; p_Var6 = local_48, p_Var2 != (_ftsent *)0x0;\n        p_Var2 = p_Var2->fts_link) {\n      if ((_ftsent *)p_Var2->fts_accpath != p_Var2 + 1) {\n        p_Var2->fts_accpath = pcVar3 + ((int)p_Var2->fts_accpath - (int)p_Var2->fts_path);\n      }\n      p_Var2->fts_path = pcVar3;\n    }\n    while (pFVar13 = p_Var6, -1 < pFVar13->fts_level) {\n      if ((FTSENT *)pFVar13->fts_accpath != pFVar13 + 1) {\n        pFVar13->fts_accpath = pcVar3 + ((int)pFVar13->fts_accpath - (int)pFVar13->fts_path);\n      }\n      pFVar13->fts_path = pcVar3;\n      p_Var6 = pFVar13->fts_link;\n      if (pFVar13->fts_link == (_ftsent *)0x0) {\n        p_Var6 = pFVar13->fts_parent;\n      }\n    }\n  }" if (parenthesized_expression "(local_1f != false)" ( (binary_expression "local_1f != false" identifier != false) )) (compound_statement "{\n    pcVar3 = sp->fts_path;\n    for (p_Var2 = sp->fts_child; p_Var6 = local_48, p_Var2 != (_ftsent *)0x0;\n        p_Var2 = p_Var2->fts_link) {\n      if ((_ftsent *)p_Var2->fts_accpath != p_Var2 + 1) {\n        p_Var2->fts_accpath = pcVar3 + ((int)p_Var2->fts_accpath - (int)p_Var2->fts_path);\n      }\n      p_Var2->fts_path = pcVar3;\n    }\n    while (pFVar13 = p_Var6, -1 < pFVar13->fts_level) {\n      if ((FTSENT *)pFVar13->fts_accpath != pFVar13 + 1) {\n        pFVar13->fts_accpath = pcVar3 + ((int)pFVar13->fts_accpath - (int)pFVar13->fts_path);\n      }\n      pFVar13->fts_path = pcVar3;\n      p_Var6 = pFVar13->fts_link;\n      if (pFVar13->fts_link == (_ftsent *)0x0) {\n        p_Var6 = pFVar13->fts_parent;\n      }\n    }\n  }" { (expression_statement "pcVar3 = sp->fts_path;" (assignment_expression "pcVar3 = sp->fts_path" identifier = (field_expression "sp->fts_path" identifier -> field_identifier)) ;) (for_statement "for (p_Var2 = sp->fts_child; p_Var6 = local_48, p_Var2 != (_ftsent *)0x0;\n        p_Var2 = p_Var2->fts_link) {\n      if ((_ftsent *)p_Var2->fts_accpath != p_Var2 + 1) {\n        p_Var2->fts_accpath = pcVar3 + ((int)p_Var2->fts_accpath - (int)p_Var2->fts_path);\n      }\n      p_Var2->fts_path = pcVar3;\n    }" for ( (assignment_expression "p_Var2 = sp->fts_child" identifier = (field_expression "sp->fts_child" identifier -> field_identifier)) ; (comma_expression "p_Var6 = local_48, p_Var2 != (_ftsent *)0x0" (assignment_expression "p_Var6 = local_48" identifier = identifier) , (binary_expression "p_Var2 != (_ftsent *)0x0" identifier != (cast_expression "(_ftsent *)0x0" ( (type_descriptor "_ftsent *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ; (assignment_expression "p_Var2 = p_Var2->fts_link" identifier = (field_expression "p_Var2->fts_link" identifier -> field_identifier)) ) (compound_statement "{\n      if ((_ftsent *)p_Var2->fts_accpath != p_Var2 + 1) {\n        p_Var2->fts_accpath = pcVar3 + ((int)p_Var2->fts_accpath - (int)p_Var2->fts_path);\n      }\n      p_Var2->fts_path = pcVar3;\n    }" { (if_statement "if ((_ftsent *)p_Var2->fts_accpath != p_Var2 + 1) {\n        p_Var2->fts_accpath = pcVar3 + ((int)p_Var2->fts_accpath - (int)p_Var2->fts_path);\n      }" if (parenthesized_expression "((_ftsent *)p_Var2->fts_accpath != p_Var2 + 1)" ( (binary_expression "(_ftsent *)p_Var2->fts_accpath != p_Var2 + 1" (cast_expression "(_ftsent *)p_Var2->fts_accpath" ( (type_descriptor "_ftsent *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "p_Var2->fts_accpath" identifier -> field_identifier)) != (binary_expression "p_Var2 + 1" identifier + number_literal)) )) (compound_statement "{\n        p_Var2->fts_accpath = pcVar3 + ((int)p_Var2->fts_accpath - (int)p_Var2->fts_path);\n      }" { (expression_statement "p_Var2->fts_accpath = pcVar3 + ((int)p_Var2->fts_accpath - (int)p_Var2->fts_path);" (assignment_expression "p_Var2->fts_accpath = pcVar3 + ((int)p_Var2->fts_accpath - (int)p_Var2->fts_path)" (field_expression "p_Var2->fts_accpath" identifier -> field_identifier) = (binary_expression "pcVar3 + ((int)p_Var2->fts_accpath - (int)p_Var2->fts_path)" identifier + (parenthesized_expression "((int)p_Var2->fts_accpath - (int)p_Var2->fts_path)" ( (binary_expression "(int)p_Var2->fts_accpath - (int)p_Var2->fts_path" (cast_expression "(int)p_Var2->fts_accpath" ( (type_descriptor "int" primitive_type) ) (field_expression "p_Var2->fts_accpath" identifier -> field_identifier)) - (cast_expression "(int)p_Var2->fts_path" ( (type_descriptor "int" primitive_type) ) (field_expression "p_Var2->fts_path" identifier -> field_identifier))) )))) ;) })) (expression_statement "p_Var2->fts_path = pcVar3;" (assignment_expression "p_Var2->fts_path = pcVar3" (field_expression "p_Var2->fts_path" identifier -> field_identifier) = identifier) ;) })) (while_statement "while (pFVar13 = p_Var6, -1 < pFVar13->fts_level) {\n      if ((FTSENT *)pFVar13->fts_accpath != pFVar13 + 1) {\n        pFVar13->fts_accpath = pcVar3 + ((int)pFVar13->fts_accpath - (int)pFVar13->fts_path);\n      }\n      pFVar13->fts_path = pcVar3;\n      p_Var6 = pFVar13->fts_link;\n      if (pFVar13->fts_link == (_ftsent *)0x0) {\n        p_Var6 = pFVar13->fts_parent;\n      }\n    }" while (parenthesized_expression "(pFVar13 = p_Var6, -1 < pFVar13->fts_level)" ( (comma_expression "pFVar13 = p_Var6, -1 < pFVar13->fts_level" (assignment_expression "pFVar13 = p_Var6" identifier = identifier) , (binary_expression "-1 < pFVar13->fts_level" number_literal < (field_expression "pFVar13->fts_level" identifier -> field_identifier))) )) (compound_statement "{\n      if ((FTSENT *)pFVar13->fts_accpath != pFVar13 + 1) {\n        pFVar13->fts_accpath = pcVar3 + ((int)pFVar13->fts_accpath - (int)pFVar13->fts_path);\n      }\n      pFVar13->fts_path = pcVar3;\n      p_Var6 = pFVar13->fts_link;\n      if (pFVar13->fts_link == (_ftsent *)0x0) {\n        p_Var6 = pFVar13->fts_parent;\n      }\n    }" { (if_statement "if ((FTSENT *)pFVar13->fts_accpath != pFVar13 + 1) {\n        pFVar13->fts_accpath = pcVar3 + ((int)pFVar13->fts_accpath - (int)pFVar13->fts_path);\n      }" if (parenthesized_expression "((FTSENT *)pFVar13->fts_accpath != pFVar13 + 1)" ( (binary_expression "(FTSENT *)pFVar13->fts_accpath != pFVar13 + 1" (cast_expression "(FTSENT *)pFVar13->fts_accpath" ( (type_descriptor "FTSENT *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "pFVar13->fts_accpath" identifier -> field_identifier)) != (binary_expression "pFVar13 + 1" identifier + number_literal)) )) (compound_statement "{\n        pFVar13->fts_accpath = pcVar3 + ((int)pFVar13->fts_accpath - (int)pFVar13->fts_path);\n      }" { (expression_statement "pFVar13->fts_accpath = pcVar3 + ((int)pFVar13->fts_accpath - (int)pFVar13->fts_path);" (assignment_expression "pFVar13->fts_accpath = pcVar3 + ((int)pFVar13->fts_accpath - (int)pFVar13->fts_path)" (field_expression "pFVar13->fts_accpath" identifier -> field_identifier) = (binary_expression "pcVar3 + ((int)pFVar13->fts_accpath - (int)pFVar13->fts_path)" identifier + (parenthesized_expression "((int)pFVar13->fts_accpath - (int)pFVar13->fts_path)" ( (binary_expression "(int)pFVar13->fts_accpath - (int)pFVar13->fts_path" (cast_expression "(int)pFVar13->fts_accpath" ( (type_descriptor "int" primitive_type) ) (field_expression "pFVar13->fts_accpath" identifier -> field_identifier)) - (cast_expression "(int)pFVar13->fts_path" ( (type_descriptor "int" primitive_type) ) (field_expression "pFVar13->fts_path" identifier -> field_identifier))) )))) ;) })) (expression_statement "pFVar13->fts_path = pcVar3;" (assignment_expression "pFVar13->fts_path = pcVar3" (field_expression "pFVar13->fts_path" identifier -> field_identifier) = identifier) ;) (expression_statement "p_Var6 = pFVar13->fts_link;" (assignment_expression "p_Var6 = pFVar13->fts_link" identifier = (field_expression "pFVar13->fts_link" identifier -> field_identifier)) ;) (if_statement "if (pFVar13->fts_link == (_ftsent *)0x0) {\n        p_Var6 = pFVar13->fts_parent;\n      }" if (parenthesized_expression "(pFVar13->fts_link == (_ftsent *)0x0)" ( (binary_expression "pFVar13->fts_link == (_ftsent *)0x0" (field_expression "pFVar13->fts_link" identifier -> field_identifier) == (cast_expression "(_ftsent *)0x0" ( (type_descriptor "_ftsent *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        p_Var6 = pFVar13->fts_parent;\n      }" { (expression_statement "p_Var6 = pFVar13->fts_parent;" (assignment_expression "p_Var6 = pFVar13->fts_parent" identifier = (field_expression "pFVar13->fts_parent" identifier -> field_identifier)) ;) })) })) }))) (if_statement "if ((sp->fts_options & 4) != 0) {\n    if ((sp->fts_pathlen == local_4c) || (local_5c == 0)) {\n      local_38 = local_38 + -1;\n    }\n    *local_38 = '\0';\n  }" if (parenthesized_expression "((sp->fts_options & 4) != 0)" ( (binary_expression "(sp->fts_options & 4) != 0" (parenthesized_expression "(sp->fts_options & 4)" ( (binary_expression "sp->fts_options & 4" (field_expression "sp->fts_options" identifier -> field_identifier) & number_literal) )) != number_literal) )) (compound_statement "{\n    if ((sp->fts_pathlen == local_4c) || (local_5c == 0)) {\n      local_38 = local_38 + -1;\n    }\n    *local_38 = '\0';\n  }" { (if_statement "if ((sp->fts_pathlen == local_4c) || (local_5c == 0)) {\n      local_38 = local_38 + -1;\n    }" if (parenthesized_expression "((sp->fts_pathlen == local_4c) || (local_5c == 0))" ( (binary_expression "(sp->fts_pathlen == local_4c) || (local_5c == 0)" (parenthesized_expression "(sp->fts_pathlen == local_4c)" ( (binary_expression "sp->fts_pathlen == local_4c" (field_expression "sp->fts_pathlen" identifier -> field_identifier) == identifier) )) || (parenthesized_expression "(local_5c == 0)" ( (binary_expression "local_5c == 0" identifier == number_literal) ))) )) (compound_statement "{\n      local_38 = local_38 + -1;\n    }" { (expression_statement "local_38 = local_38 + -1;" (assignment_expression "local_38 = local_38 + -1" identifier = (binary_expression "local_38 + -1" identifier + number_literal)) ;) })) (expression_statement "*local_38 = '\0';" (assignment_expression "*local_38 = '\0'" (pointer_expression "*local_38" * identifier) = (char_literal "'\0'" ' escape_sequence ')) ;) })) (if_statement "if ((__dirp == (DIR *)0x0) && (bVar22)) {\n    if ((type != 1) && (local_5c != 0)) goto LAB_000196b9;\n    if (pFVar16->fts_level == 0) {\n      iVar15 = restore_initial_cwd(sp);\n    }\n    else {\n      iVar15 = fts_safe_changedir(sp,pFVar16->fts_parent,-1,"..");\n    }\n    if (iVar15 != 0) {\n      pFVar16->fts_info = 7;\n      sp->fts_options = sp->fts_options | 0x4000;\n      fts_lfree(local_48);\n      return (FTSENT *)0x0;\n    }\n  }" if (parenthesized_expression "((__dirp == (DIR *)0x0) && (bVar22))" ( (binary_expression "(__dirp == (DIR *)0x0) && (bVar22)" (parenthesized_expression "(__dirp == (DIR *)0x0)" ( (binary_expression "__dirp == (DIR *)0x0" identifier == (cast_expression "(DIR *)0x0" ( (type_descriptor "DIR *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(bVar22)" ( identifier ))) )) (compound_statement "{\n    if ((type != 1) && (local_5c != 0)) goto LAB_000196b9;\n    if (pFVar16->fts_level == 0) {\n      iVar15 = restore_initial_cwd(sp);\n    }\n    else {\n      iVar15 = fts_safe_changedir(sp,pFVar16->fts_parent,-1,"..");\n    }\n    if (iVar15 != 0) {\n      pFVar16->fts_info = 7;\n      sp->fts_options = sp->fts_options | 0x4000;\n      fts_lfree(local_48);\n      return (FTSENT *)0x0;\n    }\n  }" { (if_statement "if ((type != 1) && (local_5c != 0)) goto LAB_000196b9;" if (parenthesized_expression "((type != 1) && (local_5c != 0))" ( (binary_expression "(type != 1) && (local_5c != 0)" (parenthesized_expression "(type != 1)" ( (binary_expression "type != 1" identifier != number_literal) )) && (parenthesized_expression "(local_5c != 0)" ( (binary_expression "local_5c != 0" identifier != number_literal) ))) )) (goto_statement "goto LAB_000196b9;" goto statement_identifier ;)) (if_statement "if (pFVar16->fts_level == 0) {\n      iVar15 = restore_initial_cwd(sp);\n    }\n    else {\n      iVar15 = fts_safe_changedir(sp,pFVar16->fts_parent,-1,"..");\n    }" if (parenthesized_expression "(pFVar16->fts_level == 0)" ( (binary_expression "pFVar16->fts_level == 0" (field_expression "pFVar16->fts_level" identifier -> field_identifier) == number_literal) )) (compound_statement "{\n      iVar15 = restore_initial_cwd(sp);\n    }" { (expression_statement "iVar15 = restore_initial_cwd(sp);" (assignment_expression "iVar15 = restore_initial_cwd(sp)" identifier = (call_expression "restore_initial_cwd(sp)" identifier (argument_list "(sp)" ( identifier )))) ;) }) (else_clause "else {\n      iVar15 = fts_safe_changedir(sp,pFVar16->fts_parent,-1,"..");\n    }" else (compound_statement "{\n      iVar15 = fts_safe_changedir(sp,pFVar16->fts_parent,-1,"..");\n    }" { (expression_statement "iVar15 = fts_safe_changedir(sp,pFVar16->fts_parent,-1,"..");" (assignment_expression "iVar15 = fts_safe_changedir(sp,pFVar16->fts_parent,-1,"..")" identifier = (call_expression "fts_safe_changedir(sp,pFVar16->fts_parent,-1,"..")" identifier (argument_list "(sp,pFVar16->fts_parent,-1,"..")" ( identifier , (field_expression "pFVar16->fts_parent" identifier -> field_identifier) , number_literal , (string_literal "".."" " string_content ") )))) ;) }))) (if_statement "if (iVar15 != 0) {\n      pFVar16->fts_info = 7;\n      sp->fts_options = sp->fts_options | 0x4000;\n      fts_lfree(local_48);\n      return (FTSENT *)0x0;\n    }" if (parenthesized_expression "(iVar15 != 0)" ( (binary_expression "iVar15 != 0" identifier != number_literal) )) (compound_statement "{\n      pFVar16->fts_info = 7;\n      sp->fts_options = sp->fts_options | 0x4000;\n      fts_lfree(local_48);\n      return (FTSENT *)0x0;\n    }" { (expression_statement "pFVar16->fts_info = 7;" (assignment_expression "pFVar16->fts_info = 7" (field_expression "pFVar16->fts_info" identifier -> field_identifier) = number_literal) ;) (expression_statement "sp->fts_options = sp->fts_options | 0x4000;" (assignment_expression "sp->fts_options = sp->fts_options | 0x4000" (field_expression "sp->fts_options" identifier -> field_identifier) = (binary_expression "sp->fts_options | 0x4000" (field_expression "sp->fts_options" identifier -> field_identifier) | number_literal)) ;) (expression_statement "fts_lfree(local_48);" (call_expression "fts_lfree(local_48)" identifier (argument_list "(local_48)" ( identifier ))) ;) (return_statement "return (FTSENT *)0x0;" return (cast_expression "(FTSENT *)0x0" ( (type_descriptor "FTSENT *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) })) (if_statement "if (local_5c == 0) {\n    if (((type == 3) && (pFVar16->fts_info != 4)) && (pFVar16->fts_info != 7)) {\n      pFVar16->fts_info = 6;\n    }\n    fts_lfree(local_48);\n    return (FTSENT *)0x0;\n  }" if (parenthesized_expression "(local_5c == 0)" ( (binary_expression "local_5c == 0" identifier == number_literal) )) (compound_statement "{\n    if (((type == 3) && (pFVar16->fts_info != 4)) && (pFVar16->fts_info != 7)) {\n      pFVar16->fts_info = 6;\n    }\n    fts_lfree(local_48);\n    return (FTSENT *)0x0;\n  }" { (if_statement "if (((type == 3) && (pFVar16->fts_info != 4)) && (pFVar16->fts_info != 7)) {\n      pFVar16->fts_info = 6;\n    }" if (parenthesized_expression "(((type == 3) && (pFVar16->fts_info != 4)) && (pFVar16->fts_info != 7))" ( (binary_expression "((type == 3) && (pFVar16->fts_info != 4)) && (pFVar16->fts_info != 7)" (parenthesized_expression "((type == 3) && (pFVar16->fts_info != 4))" ( (binary_expression "(type == 3) && (pFVar16->fts_info != 4)" (parenthesized_expression "(type == 3)" ( (binary_expression "type == 3" identifier == number_literal) )) && (parenthesized_expression "(pFVar16->fts_info != 4)" ( (binary_expression "pFVar16->fts_info != 4" (field_expression "pFVar16->fts_info" identifier -> field_identifier) != number_literal) ))) )) && (parenthesized_expression "(pFVar16->fts_info != 7)" ( (binary_expression "pFVar16->fts_info != 7" (field_expression "pFVar16->fts_info" identifier -> field_identifier) != number_literal) ))) )) (compound_statement "{\n      pFVar16->fts_info = 6;\n    }" { (expression_statement "pFVar16->fts_info = 6;" (assignment_expression "pFVar16->fts_info = 6" (field_expression "pFVar16->fts_info" identifier -> field_identifier) = number_literal) ;) })) (expression_statement "fts_lfree(local_48);" (call_expression "fts_lfree(local_48)" identifier (argument_list "(local_48)" ( identifier ))) ;) (return_statement "return (FTSENT *)0x0;" return (cast_expression "(FTSENT *)0x0" ( (type_descriptor "FTSENT *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (labeled_statement "LAB_000196b9:\n  if (bVar4) {\n    sp->fts_compar = fts_compare_ino;\n    pFVar16 = fts_sort(sp,local_48,local_5c);\n    sp->fts_compar = (_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *)0x0;\n    return pFVar16;\n  }" statement_identifier : (if_statement "if (bVar4) {\n    sp->fts_compar = fts_compare_ino;\n    pFVar16 = fts_sort(sp,local_48,local_5c);\n    sp->fts_compar = (_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *)0x0;\n    return pFVar16;\n  }" if (parenthesized_expression "(bVar4)" ( identifier )) (compound_statement "{\n    sp->fts_compar = fts_compare_ino;\n    pFVar16 = fts_sort(sp,local_48,local_5c);\n    sp->fts_compar = (_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *)0x0;\n    return pFVar16;\n  }" { (expression_statement "sp->fts_compar = fts_compare_ino;" (assignment_expression "sp->fts_compar = fts_compare_ino" (field_expression "sp->fts_compar" identifier -> field_identifier) = identifier) ;) (expression_statement "pFVar16 = fts_sort(sp,local_48,local_5c);" (assignment_expression "pFVar16 = fts_sort(sp,local_48,local_5c)" identifier = (call_expression "fts_sort(sp,local_48,local_5c)" identifier (argument_list "(sp,local_48,local_5c)" ( identifier , identifier , identifier )))) ;) (expression_statement "sp->fts_compar = (_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *)0x0;" (assignment_expression "sp->fts_compar = (_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *)0x0" (field_expression "sp->fts_compar" identifier -> field_identifier) = (cast_expression "(_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *)0x0" ( (type_descriptor "_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (return_statement "return pFVar16;" return identifier ;) }))) (if_statement "if ((sp->fts_compar != (_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *)0x0) && (local_5c != 1)) {\n    pFVar16 = fts_sort(sp,local_48,local_5c);\n    return pFVar16;\n  }" if (parenthesized_expression "((sp->fts_compar != (_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *)0x0) && (local_5c != 1))" ( (binary_expression "(sp->fts_compar != (_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *)0x0) && (local_5c != 1)" (parenthesized_expression "(sp->fts_compar != (_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *)0x0)" ( (binary_expression "sp->fts_compar != (_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *)0x0" (field_expression "sp->fts_compar" identifier -> field_identifier) != (cast_expression "(_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *)0x0" ( (type_descriptor "_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(local_5c != 1)" ( (binary_expression "local_5c != 1" identifier != number_literal) ))) )) (compound_statement "{\n    pFVar16 = fts_sort(sp,local_48,local_5c);\n    return pFVar16;\n  }" { (expression_statement "pFVar16 = fts_sort(sp,local_48,local_5c);" (assignment_expression "pFVar16 = fts_sort(sp,local_48,local_5c)" identifier = (call_expression "fts_sort(sp,local_48,local_5c)" identifier (argument_list "(sp,local_48,local_5c)" ( identifier , identifier , identifier )))) ;) (return_statement "return pFVar16;" return identifier ;) })) (return_statement "return local_48;" return identifier ;) }))
(translation_unit "void * __regparm3 FUN_00019270(int *param_1,int param_2)\n\n{\n  int iVar1;\n  DIR *__dirp;\n  bool bVar2;\n  __ino64_t _Var3;\n  undefined1 *puVar4;\n  char cVar5;\n  undefined2 uVar6;\n  int iVar7;\n  int *piVar8;\n  dirent64 *pdVar9;\n  size_t sVar10;\n  void *pvVar11;\n  undefined4 uVar12;\n  DIR *pDVar13;\n  uint uVar14;\n  int iVar15;\n  void *pvVar16;\n  ushort uVar17;\n  uint uVar18;\n  bool bVar19;\n  uint local_5c;\n  void *local_54;\n  uint local_4c;\n  void *local_48;\n  uint local_44;\n  undefined1 *local_38;\n  uint local_34;\n  uint local_30;\n  int local_2c;\n  char local_1f;\n  \n  iVar1 = *param_1;\n  __dirp = *(DIR **)(iVar1 + 0xc);\n  if (__dirp == (DIR *)0x0) {\n    uVar14 = param_1[0xb];\n    uVar18 = uVar14 & 0x10;\n    if (((uVar18 != 0) && (uVar18 = 0x20000, (uVar14 & 1) != 0)) &&\n       (uVar18 = *(uint *)(iVar1 + 0x30), uVar18 != 0)) {\n      uVar18 = 0x20000;\n    }\n    iVar7 = -100;\n    if ((uVar14 & 0x204) == 0x200) {\n      iVar7 = param_1[7];\n    }\n    local_2c = FUN_0001c620(iVar7,*(undefined4 *)(iVar1 + 0x18),\n                            (uVar14 & 0x800) << 7 | uVar18 | 0x90900);\n    if (local_2c < 0) {\n      *(undefined4 *)(iVar1 + 0xc) = 0;\njoined_r0x00019b00:\n      if (param_2 == 3) {\n        *(undefined2 *)(iVar1 + 0x3c) = 4;\n        piVar8 = __errno_location();\n        *(int *)(iVar1 + 0x20) = *piVar8;\n      }\n      return (void *)0x0;\n    }\n    pDVar13 = fdopendir(local_2c);\n    if (pDVar13 == (DIR *)0x0) {\n      piVar8 = __errno_location();\n      iVar7 = *piVar8;\n      close(local_2c);\n      *piVar8 = iVar7;\n      *(undefined4 *)(iVar1 + 0xc) = 0;\n      goto joined_r0x00019b00;\n    }\n    *(DIR **)(iVar1 + 0xc) = pDVar13;\n    if (*(short *)(iVar1 + 0x3c) == 0xb) {\n      uVar6 = FUN_00018640();\n      *(undefined2 *)(iVar1 + 0x3c) = uVar6;\n    }\n    else if ((param_1[0xb] & 0x100U) != 0) {\n      FUN_00019160();\n      FUN_00018640();\n      cVar5 = FUN_00019090();\n      if (cVar5 == '\0') {\n        piVar8 = __errno_location();\n        *piVar8 = 0xc;\n        return (void *)0x0;\n      }\n    }\n    local_34 = (-(uint)(param_1[10] == 0) & 0x186a1) - 1;\n    if (param_2 == 2) {\nLAB_00019a90:\n      bVar19 = false;\n      uVar14 = param_1[0xb];\n      goto LAB_000192d4;\n    }\n    if ((((param_1[0xb] & 0x38U) == 0x18) && (*(int *)(iVar1 + 0x58) == 2)) &&\n       (iVar7 = FUN_00018b60(), iVar7 != 0)) {\n      if (param_2 != 3) goto LAB_00019a90;\n      bVar2 = false;\n      bVar19 = true;\n    }\n    else {\n      bVar19 = param_2 == 3;\n      bVar2 = true;\n    }\n    if (((*(byte *)((int)param_1 + 0x2d) & 2) == 0) ||\n       (local_2c = FUN_0001c780(local_2c,0x406,3), -1 < local_2c)) {\n      iVar7 = FUN_00018e20(0);\n      if (iVar7 == 0) goto LAB_000192cc;\n      pDVar13 = *(DIR **)(iVar1 + 0xc);\n      uVar17 = *(ushort *)(iVar1 + 0x3e) | 1;\n      if ((bVar19) && (bVar2)) goto LAB_0001980f;\nLAB_0001982f:\n      *(ushort *)(iVar1 + 0x3e) = uVar17;\n      closedir(pDVar13);\n      uVar14 = param_1[0xb];\n      *(undefined4 *)(iVar1 + 0xc) = 0;\n      if (((uVar14 & 0x200) != 0) && (-1 < local_2c)) {\n        close(local_2c);\n        uVar14 = param_1[0xb];\n      }\n    }\n    else {\n      pDVar13 = *(DIR **)(iVar1 + 0xc);\n      uVar17 = *(ushort *)(iVar1 + 0x3e) | 1;\n      if ((bVar19) && (bVar2)) {\nLAB_0001980f:\n        piVar8 = __errno_location();\n        *(int *)(iVar1 + 0x20) = *piVar8;\n        goto LAB_0001982f;\n      }\n      *(ushort *)(iVar1 + 0x3e) = uVar17;\n      closedir(pDVar13);\n      uVar14 = param_1[0xb];\n    }\n    bVar19 = false;\n    *(undefined4 *)(iVar1 + 0xc) = 0;\n  }\n  else {\n    iVar7 = dirfd(__dirp);\n    if (iVar7 < 0) {\n      closedir(*(DIR **)(iVar1 + 0xc));\n      *(undefined4 *)(iVar1 + 0xc) = 0;\n      goto joined_r0x00019b00;\n    }\n    if (param_1[10] == 0) {\n      local_34 = 100000;\n      uVar14 = param_1[0xb];\n      bVar19 = true;\n    }\n    else {\n      local_34 = 0xffffffff;\nLAB_000192cc:\n      bVar19 = true;\n      uVar14 = param_1[0xb];\n    }\n  }\nLAB_000192d4:\n  uVar18 = *(uint *)(iVar1 + 0x28);\n  local_4c = uVar18;\n  local_30 = uVar18 - 1;\n  if (*(char *)(*(int *)(iVar1 + 0x1c) + -1 + uVar18) != '/') {\n    local_4c = uVar18 + 1;\n    local_30 = uVar18;\n  }\n  local_38 = (undefined1 *)0x0;\n  if ((uVar14 & 4) != 0) {\n    local_38 = (undefined1 *)(local_30 + param_1[5]) + 1;\n    *(undefined1 *)(local_30 + param_1[5]) = 0x2f;\n  }\n  local_44 = param_1[8] - local_4c;\n  bVar2 = false;\n  local_1f = '\0';\n  iVar7 = *(int *)(iVar1 + 0x30);\n  local_54 = (void *)0x0;\n  local_5c = 0;\n  local_48 = (void *)0x0;\nLAB_000193a8:\n  do {\n    do {\n      pDVar13 = *(DIR **)(iVar1 + 0xc);\n      if (pDVar13 == (DIR *)0x0) goto LAB_00019641;\n      piVar8 = __errno_location();\n      *piVar8 = 0;\n      pdVar9 = readdir64(pDVar13);\n      if (pdVar9 == (dirent64 *)0x0) {\n        if (*piVar8 != 0) {\n          *(int *)(iVar1 + 0x20) = *piVar8;\n          *(ushort *)(iVar1 + 0x3c) =\n               (-(ushort)(__dirp == (DIR *)0x0 && local_5c == 0) & 0xfffd) + 7;\n        }\n        if (*(DIR **)(iVar1 + 0xc) != (DIR *)0x0) {\n          closedir(*(DIR **)(iVar1 + 0xc));\n          *(undefined4 *)(iVar1 + 0xc) = 0;\n        }\n        goto LAB_00019641;\n      }\n    } while ((((*(byte *)(param_1 + 0xb) & 0x20) == 0) && (pdVar9->d_name[0] == '.')) &&\n            ((pdVar9->d_name[1] == '\0' || (*(short *)(pdVar9->d_name + 1) == 0x2e))));\n    sVar10 = strlen(pdVar9->d_name);\n    pvVar11 = (void *)FUN_000188d0();\n    if (pvVar11 == (void *)0x0) {\nLAB_00019910:\n      iVar7 = *piVar8;\n      free(pvVar11);\n      FUN_00018960();\n      closedir(*(DIR **)(iVar1 + 0xc));\n      *(undefined4 *)(iVar1 + 0xc) = 0;\n      *(undefined2 *)(iVar1 + 0x3c) = 7;\n      param_1[0xb] = param_1[0xb] | 0x4000;\n      *piVar8 = iVar7;\n      return (void *)0x0;\n    }\n    if (local_44 <= sVar10) {\n      iVar15 = param_1[5];\n      cVar5 = FUN_00018cc0();\n      if (cVar5 == '\0') goto LAB_00019910;\n      puVar4 = local_38;\n      if ((param_1[5] != iVar15) &&\n         (local_1f = cVar5, puVar4 = (undefined1 *)(param_1[5] + local_4c),\n         (*(byte *)(param_1 + 0xb) & 4) == 0)) {\n        puVar4 = local_38;\n      }\n      local_38 = puVar4;\n      local_44 = param_1[8] - local_4c;\n    }\n    if (CARRY4(sVar10,local_4c)) {\n      free(pvVar11);\n      FUN_00018960();\n      closedir(*(DIR **)(iVar1 + 0xc));\n      *(undefined4 *)(iVar1 + 0xc) = 0;\n      *(undefined2 *)(iVar1 + 0x3c) = 7;\n      param_1[0xb] = param_1[0xb] | 0x4000;\n      *piVar8 = 0x24;\n      return (void *)0x0;\n    }\n    uVar12 = *(undefined4 *)((int)&pdVar9->d_ino + 4);\n    *(int *)((int)pvVar11 + 0x30) = iVar7 + 1;\n    iVar15 = *param_1;\n    *(size_t *)((int)pvVar11 + 0x28) = sVar10 + local_4c;\n    *(int *)((int)pvVar11 + 4) = iVar15;\n    _Var3 = pdVar9->d_ino;\n    *(undefined4 *)((int)pvVar11 + 0xa0) = uVar12;\n    *(int *)((int)pvVar11 + 0x9c) = (int)_Var3;\n    uVar14 = param_1[0xb];\n    if ((uVar14 & 4) == 0) {\n      *(void **)((int)pvVar11 + 0x18) = (void *)((int)pvVar11 + 0xa4);\n    }\n    else {\n      *(undefined4 *)((int)pvVar11 + 0x18) = *(undefined4 *)((int)pvVar11 + 0x1c);\n      memmove(local_38,(void *)((int)pvVar11 + 0xa4),*(int *)((int)pvVar11 + 0x34) + 1);\n      uVar14 = param_1[0xb];\n    }\n    if ((param_1[10] == 0) || ((uVar14 & 0x400) != 0)) {\n      uVar18 = pdVar9->d_type - 1;\n      if (((uVar14 & 0x18) == 0x18) && ((pdVar9->d_type & 0xfb) != 0)) {\n        *(undefined2 *)((int)pvVar11 + 0x3c) = 0xb;\n        if (uVar18 < 0xc) {\n          *(undefined4 *)((int)pvVar11 + 0x54) = *(undefined4 *)(&DAT_0001e180 + uVar18 * 4);\n          uVar12 = 1;\n        }\n        else {\n          *(undefined4 *)((int)pvVar11 + 0x54) = 0;\n          uVar12 = 1;\n        }\n      }\n      else {\n        *(undefined2 *)((int)pvVar11 + 0x3c) = 0xb;\n        if (uVar18 < 0xc) {\n          *(undefined4 *)((int)pvVar11 + 0x54) = *(undefined4 *)(&DAT_0001e180 + uVar18 * 4);\n          uVar12 = 2;\n        }\n        else {\n          *(undefined4 *)((int)pvVar11 + 0x54) = 0;\n          uVar12 = 2;\n        }\n      }\n      *(undefined4 *)((int)pvVar11 + 0x70) = uVar12;\n      *(undefined4 *)((int)pvVar11 + 0x74) = 0;\n    }\n    else {\n      uVar6 = FUN_00018640();\n      *(undefined2 *)((int)pvVar11 + 0x3c) = uVar6;\n    }\n    *(undefined4 *)((int)pvVar11 + 8) = 0;\n    pvVar16 = pvVar11;\n    if (local_48 != (void *)0x0) {\n      *(void **)((int)local_54 + 8) = pvVar11;\n      pvVar16 = local_48;\n    }\n    local_48 = pvVar16;\n    local_54 = pvVar11;\n    if (local_5c == 10000) {\n      if ((param_1[10] != 0) ||\n         (((iVar15 = FUN_00018a00(), iVar15 != 0x6969 && (iVar15 != 0x1021994)) &&\n          (bVar2 = true, iVar15 != -0xacb2be)))) {\n        local_5c = 0x2711;\n        goto LAB_000193a8;\n      }\n      bVar2 = false;\n    }\n    local_5c = local_5c + 1;\n  } while (local_5c < local_34);\nLAB_00019641:\n  if (local_1f != '\0') {\n    iVar15 = param_1[5];\n    for (iVar7 = param_1[1]; pvVar11 = local_48, iVar7 != 0; iVar7 = *(int *)(iVar7 + 8)) {\n      if (*(int *)(iVar7 + 0x18) != iVar7 + 0xa4) {\n        *(int *)(iVar7 + 0x18) = (*(int *)(iVar7 + 0x18) - *(int *)(iVar7 + 0x1c)) + iVar15;\n      }\n      *(int *)(iVar7 + 0x1c) = iVar15;\n    }\n    while (pvVar16 = pvVar11, -1 < *(int *)((int)pvVar16 + 0x30)) {\n      if (*(int *)((int)pvVar16 + 0x18) != (int)pvVar16 + 0xa4) {\n        *(int *)((int)pvVar16 + 0x18) =\n             (*(int *)((int)pvVar16 + 0x18) - *(int *)((int)pvVar16 + 0x1c)) + iVar15;\n      }\n      *(int *)((int)pvVar16 + 0x1c) = iVar15;\n      pvVar11 = *(void **)((int)pvVar16 + 8);\n      if (*(void **)((int)pvVar16 + 8) == (void *)0x0) {\n        pvVar11 = *(void **)((int)pvVar16 + 4);\n      }\n    }\n  }\n  if ((*(byte *)(param_1 + 0xb) & 4) != 0) {\n    if ((param_1[8] == local_4c) || (local_5c == 0)) {\n      local_38 = local_38 + -1;\n    }\n    *local_38 = 0;\n  }\n  if ((__dirp == (DIR *)0x0) && (bVar19)) {\n    if ((param_2 != 1) && (local_5c != 0)) goto LAB_000196b9;\n    if (*(int *)(iVar1 + 0x30) == 0) {\n      iVar7 = FUN_00018c40();\n    }\n    else {\n      iVar7 = FUN_00018e20(&DAT_0001e166);\n    }\n    if (iVar7 != 0) {\n      *(undefined2 *)(iVar1 + 0x3c) = 7;\n      param_1[0xb] = param_1[0xb] | 0x4000;\n      FUN_00018960();\n      return (void *)0x0;\n    }\n  }\n  if (local_5c == 0) {\n    if (((param_2 == 3) && (*(short *)(iVar1 + 0x3c) != 4)) && (*(short *)(iVar1 + 0x3c) != 7)) {\n      *(undefined2 *)(iVar1 + 0x3c) = 6;\n    }\n    FUN_00018960();\n    return (void *)0x0;\n  }\nLAB_000196b9:\n  if (bVar2) {\n    param_1[10] = (int)FUN_00018600;\n    pvVar11 = (void *)FUN_000187e0();\n    param_1[10] = 0;\n    return pvVar11;\n  }\n  if ((param_1[10] != 0) && (local_5c != 1)) {\n    pvVar11 = (void *)FUN_000187e0();\n    return pvVar11;\n  }\n  return local_48;\n}\n\n" (function_definition "void * __regparm3 FUN_00019270(int *param_1,int param_2)\n\n{\n  int iVar1;\n  DIR *__dirp;\n  bool bVar2;\n  __ino64_t _Var3;\n  undefined1 *puVar4;\n  char cVar5;\n  undefined2 uVar6;\n  int iVar7;\n  int *piVar8;\n  dirent64 *pdVar9;\n  size_t sVar10;\n  void *pvVar11;\n  undefined4 uVar12;\n  DIR *pDVar13;\n  uint uVar14;\n  int iVar15;\n  void *pvVar16;\n  ushort uVar17;\n  uint uVar18;\n  bool bVar19;\n  uint local_5c;\n  void *local_54;\n  uint local_4c;\n  void *local_48;\n  uint local_44;\n  undefined1 *local_38;\n  uint local_34;\n  uint local_30;\n  int local_2c;\n  char local_1f;\n  \n  iVar1 = *param_1;\n  __dirp = *(DIR **)(iVar1 + 0xc);\n  if (__dirp == (DIR *)0x0) {\n    uVar14 = param_1[0xb];\n    uVar18 = uVar14 & 0x10;\n    if (((uVar18 != 0) && (uVar18 = 0x20000, (uVar14 & 1) != 0)) &&\n       (uVar18 = *(uint *)(iVar1 + 0x30), uVar18 != 0)) {\n      uVar18 = 0x20000;\n    }\n    iVar7 = -100;\n    if ((uVar14 & 0x204) == 0x200) {\n      iVar7 = param_1[7];\n    }\n    local_2c = FUN_0001c620(iVar7,*(undefined4 *)(iVar1 + 0x18),\n                            (uVar14 & 0x800) << 7 | uVar18 | 0x90900);\n    if (local_2c < 0) {\n      *(undefined4 *)(iVar1 + 0xc) = 0;\njoined_r0x00019b00:\n      if (param_2 == 3) {\n        *(undefined2 *)(iVar1 + 0x3c) = 4;\n        piVar8 = __errno_location();\n        *(int *)(iVar1 + 0x20) = *piVar8;\n      }\n      return (void *)0x0;\n    }\n    pDVar13 = fdopendir(local_2c);\n    if (pDVar13 == (DIR *)0x0) {\n      piVar8 = __errno_location();\n      iVar7 = *piVar8;\n      close(local_2c);\n      *piVar8 = iVar7;\n      *(undefined4 *)(iVar1 + 0xc) = 0;\n      goto joined_r0x00019b00;\n    }\n    *(DIR **)(iVar1 + 0xc) = pDVar13;\n    if (*(short *)(iVar1 + 0x3c) == 0xb) {\n      uVar6 = FUN_00018640();\n      *(undefined2 *)(iVar1 + 0x3c) = uVar6;\n    }\n    else if ((param_1[0xb] & 0x100U) != 0) {\n      FUN_00019160();\n      FUN_00018640();\n      cVar5 = FUN_00019090();\n      if (cVar5 == '\0') {\n        piVar8 = __errno_location();\n        *piVar8 = 0xc;\n        return (void *)0x0;\n      }\n    }\n    local_34 = (-(uint)(param_1[10] == 0) & 0x186a1) - 1;\n    if (param_2 == 2) {\nLAB_00019a90:\n      bVar19 = false;\n      uVar14 = param_1[0xb];\n      goto LAB_000192d4;\n    }\n    if ((((param_1[0xb] & 0x38U) == 0x18) && (*(int *)(iVar1 + 0x58) == 2)) &&\n       (iVar7 = FUN_00018b60(), iVar7 != 0)) {\n      if (param_2 != 3) goto LAB_00019a90;\n      bVar2 = false;\n      bVar19 = true;\n    }\n    else {\n      bVar19 = param_2 == 3;\n      bVar2 = true;\n    }\n    if (((*(byte *)((int)param_1 + 0x2d) & 2) == 0) ||\n       (local_2c = FUN_0001c780(local_2c,0x406,3), -1 < local_2c)) {\n      iVar7 = FUN_00018e20(0);\n      if (iVar7 == 0) goto LAB_000192cc;\n      pDVar13 = *(DIR **)(iVar1 + 0xc);\n      uVar17 = *(ushort *)(iVar1 + 0x3e) | 1;\n      if ((bVar19) && (bVar2)) goto LAB_0001980f;\nLAB_0001982f:\n      *(ushort *)(iVar1 + 0x3e) = uVar17;\n      closedir(pDVar13);\n      uVar14 = param_1[0xb];\n      *(undefined4 *)(iVar1 + 0xc) = 0;\n      if (((uVar14 & 0x200) != 0) && (-1 < local_2c)) {\n        close(local_2c);\n        uVar14 = param_1[0xb];\n      }\n    }\n    else {\n      pDVar13 = *(DIR **)(iVar1 + 0xc);\n      uVar17 = *(ushort *)(iVar1 + 0x3e) | 1;\n      if ((bVar19) && (bVar2)) {\nLAB_0001980f:\n        piVar8 = __errno_location();\n        *(int *)(iVar1 + 0x20) = *piVar8;\n        goto LAB_0001982f;\n      }\n      *(ushort *)(iVar1 + 0x3e) = uVar17;\n      closedir(pDVar13);\n      uVar14 = param_1[0xb];\n    }\n    bVar19 = false;\n    *(undefined4 *)(iVar1 + 0xc) = 0;\n  }\n  else {\n    iVar7 = dirfd(__dirp);\n    if (iVar7 < 0) {\n      closedir(*(DIR **)(iVar1 + 0xc));\n      *(undefined4 *)(iVar1 + 0xc) = 0;\n      goto joined_r0x00019b00;\n    }\n    if (param_1[10] == 0) {\n      local_34 = 100000;\n      uVar14 = param_1[0xb];\n      bVar19 = true;\n    }\n    else {\n      local_34 = 0xffffffff;\nLAB_000192cc:\n      bVar19 = true;\n      uVar14 = param_1[0xb];\n    }\n  }\nLAB_000192d4:\n  uVar18 = *(uint *)(iVar1 + 0x28);\n  local_4c = uVar18;\n  local_30 = uVar18 - 1;\n  if (*(char *)(*(int *)(iVar1 + 0x1c) + -1 + uVar18) != '/') {\n    local_4c = uVar18 + 1;\n    local_30 = uVar18;\n  }\n  local_38 = (undefined1 *)0x0;\n  if ((uVar14 & 4) != 0) {\n    local_38 = (undefined1 *)(local_30 + param_1[5]) + 1;\n    *(undefined1 *)(local_30 + param_1[5]) = 0x2f;\n  }\n  local_44 = param_1[8] - local_4c;\n  bVar2 = false;\n  local_1f = '\0';\n  iVar7 = *(int *)(iVar1 + 0x30);\n  local_54 = (void *)0x0;\n  local_5c = 0;\n  local_48 = (void *)0x0;\nLAB_000193a8:\n  do {\n    do {\n      pDVar13 = *(DIR **)(iVar1 + 0xc);\n      if (pDVar13 == (DIR *)0x0) goto LAB_00019641;\n      piVar8 = __errno_location();\n      *piVar8 = 0;\n      pdVar9 = readdir64(pDVar13);\n      if (pdVar9 == (dirent64 *)0x0) {\n        if (*piVar8 != 0) {\n          *(int *)(iVar1 + 0x20) = *piVar8;\n          *(ushort *)(iVar1 + 0x3c) =\n               (-(ushort)(__dirp == (DIR *)0x0 && local_5c == 0) & 0xfffd) + 7;\n        }\n        if (*(DIR **)(iVar1 + 0xc) != (DIR *)0x0) {\n          closedir(*(DIR **)(iVar1 + 0xc));\n          *(undefined4 *)(iVar1 + 0xc) = 0;\n        }\n        goto LAB_00019641;\n      }\n    } while ((((*(byte *)(param_1 + 0xb) & 0x20) == 0) && (pdVar9->d_name[0] == '.')) &&\n            ((pdVar9->d_name[1] == '\0' || (*(short *)(pdVar9->d_name + 1) == 0x2e))));\n    sVar10 = strlen(pdVar9->d_name);\n    pvVar11 = (void *)FUN_000188d0();\n    if (pvVar11 == (void *)0x0) {\nLAB_00019910:\n      iVar7 = *piVar8;\n      free(pvVar11);\n      FUN_00018960();\n      closedir(*(DIR **)(iVar1 + 0xc));\n      *(undefined4 *)(iVar1 + 0xc) = 0;\n      *(undefined2 *)(iVar1 + 0x3c) = 7;\n      param_1[0xb] = param_1[0xb] | 0x4000;\n      *piVar8 = iVar7;\n      return (void *)0x0;\n    }\n    if (local_44 <= sVar10) {\n      iVar15 = param_1[5];\n      cVar5 = FUN_00018cc0();\n      if (cVar5 == '\0') goto LAB_00019910;\n      puVar4 = local_38;\n      if ((param_1[5] != iVar15) &&\n         (local_1f = cVar5, puVar4 = (undefined1 *)(param_1[5] + local_4c),\n         (*(byte *)(param_1 + 0xb) & 4) == 0)) {\n        puVar4 = local_38;\n      }\n      local_38 = puVar4;\n      local_44 = param_1[8] - local_4c;\n    }\n    if (CARRY4(sVar10,local_4c)) {\n      free(pvVar11);\n      FUN_00018960();\n      closedir(*(DIR **)(iVar1 + 0xc));\n      *(undefined4 *)(iVar1 + 0xc) = 0;\n      *(undefined2 *)(iVar1 + 0x3c) = 7;\n      param_1[0xb] = param_1[0xb] | 0x4000;\n      *piVar8 = 0x24;\n      return (void *)0x0;\n    }\n    uVar12 = *(undefined4 *)((int)&pdVar9->d_ino + 4);\n    *(int *)((int)pvVar11 + 0x30) = iVar7 + 1;\n    iVar15 = *param_1;\n    *(size_t *)((int)pvVar11 + 0x28) = sVar10 + local_4c;\n    *(int *)((int)pvVar11 + 4) = iVar15;\n    _Var3 = pdVar9->d_ino;\n    *(undefined4 *)((int)pvVar11 + 0xa0) = uVar12;\n    *(int *)((int)pvVar11 + 0x9c) = (int)_Var3;\n    uVar14 = param_1[0xb];\n    if ((uVar14 & 4) == 0) {\n      *(void **)((int)pvVar11 + 0x18) = (void *)((int)pvVar11 + 0xa4);\n    }\n    else {\n      *(undefined4 *)((int)pvVar11 + 0x18) = *(undefined4 *)((int)pvVar11 + 0x1c);\n      memmove(local_38,(void *)((int)pvVar11 + 0xa4),*(int *)((int)pvVar11 + 0x34) + 1);\n      uVar14 = param_1[0xb];\n    }\n    if ((param_1[10] == 0) || ((uVar14 & 0x400) != 0)) {\n      uVar18 = pdVar9->d_type - 1;\n      if (((uVar14 & 0x18) == 0x18) && ((pdVar9->d_type & 0xfb) != 0)) {\n        *(undefined2 *)((int)pvVar11 + 0x3c) = 0xb;\n        if (uVar18 < 0xc) {\n          *(undefined4 *)((int)pvVar11 + 0x54) = *(undefined4 *)(&DAT_0001e180 + uVar18 * 4);\n          uVar12 = 1;\n        }\n        else {\n          *(undefined4 *)((int)pvVar11 + 0x54) = 0;\n          uVar12 = 1;\n        }\n      }\n      else {\n        *(undefined2 *)((int)pvVar11 + 0x3c) = 0xb;\n        if (uVar18 < 0xc) {\n          *(undefined4 *)((int)pvVar11 + 0x54) = *(undefined4 *)(&DAT_0001e180 + uVar18 * 4);\n          uVar12 = 2;\n        }\n        else {\n          *(undefined4 *)((int)pvVar11 + 0x54) = 0;\n          uVar12 = 2;\n        }\n      }\n      *(undefined4 *)((int)pvVar11 + 0x70) = uVar12;\n      *(undefined4 *)((int)pvVar11 + 0x74) = 0;\n    }\n    else {\n      uVar6 = FUN_00018640();\n      *(undefined2 *)((int)pvVar11 + 0x3c) = uVar6;\n    }\n    *(undefined4 *)((int)pvVar11 + 8) = 0;\n    pvVar16 = pvVar11;\n    if (local_48 != (void *)0x0) {\n      *(void **)((int)local_54 + 8) = pvVar11;\n      pvVar16 = local_48;\n    }\n    local_48 = pvVar16;\n    local_54 = pvVar11;\n    if (local_5c == 10000) {\n      if ((param_1[10] != 0) ||\n         (((iVar15 = FUN_00018a00(), iVar15 != 0x6969 && (iVar15 != 0x1021994)) &&\n          (bVar2 = true, iVar15 != -0xacb2be)))) {\n        local_5c = 0x2711;\n        goto LAB_000193a8;\n      }\n      bVar2 = false;\n    }\n    local_5c = local_5c + 1;\n  } while (local_5c < local_34);\nLAB_00019641:\n  if (local_1f != '\0') {\n    iVar15 = param_1[5];\n    for (iVar7 = param_1[1]; pvVar11 = local_48, iVar7 != 0; iVar7 = *(int *)(iVar7 + 8)) {\n      if (*(int *)(iVar7 + 0x18) != iVar7 + 0xa4) {\n        *(int *)(iVar7 + 0x18) = (*(int *)(iVar7 + 0x18) - *(int *)(iVar7 + 0x1c)) + iVar15;\n      }\n      *(int *)(iVar7 + 0x1c) = iVar15;\n    }\n    while (pvVar16 = pvVar11, -1 < *(int *)((int)pvVar16 + 0x30)) {\n      if (*(int *)((int)pvVar16 + 0x18) != (int)pvVar16 + 0xa4) {\n        *(int *)((int)pvVar16 + 0x18) =\n             (*(int *)((int)pvVar16 + 0x18) - *(int *)((int)pvVar16 + 0x1c)) + iVar15;\n      }\n      *(int *)((int)pvVar16 + 0x1c) = iVar15;\n      pvVar11 = *(void **)((int)pvVar16 + 8);\n      if (*(void **)((int)pvVar16 + 8) == (void *)0x0) {\n        pvVar11 = *(void **)((int)pvVar16 + 4);\n      }\n    }\n  }\n  if ((*(byte *)(param_1 + 0xb) & 4) != 0) {\n    if ((param_1[8] == local_4c) || (local_5c == 0)) {\n      local_38 = local_38 + -1;\n    }\n    *local_38 = 0;\n  }\n  if ((__dirp == (DIR *)0x0) && (bVar19)) {\n    if ((param_2 != 1) && (local_5c != 0)) goto LAB_000196b9;\n    if (*(int *)(iVar1 + 0x30) == 0) {\n      iVar7 = FUN_00018c40();\n    }\n    else {\n      iVar7 = FUN_00018e20(&DAT_0001e166);\n    }\n    if (iVar7 != 0) {\n      *(undefined2 *)(iVar1 + 0x3c) = 7;\n      param_1[0xb] = param_1[0xb] | 0x4000;\n      FUN_00018960();\n      return (void *)0x0;\n    }\n  }\n  if (local_5c == 0) {\n    if (((param_2 == 3) && (*(short *)(iVar1 + 0x3c) != 4)) && (*(short *)(iVar1 + 0x3c) != 7)) {\n      *(undefined2 *)(iVar1 + 0x3c) = 6;\n    }\n    FUN_00018960();\n    return (void *)0x0;\n  }\nLAB_000196b9:\n  if (bVar2) {\n    param_1[10] = (int)FUN_00018600;\n    pvVar11 = (void *)FUN_000187e0();\n    param_1[10] = 0;\n    return pvVar11;\n  }\n  if ((param_1[10] != 0) && (local_5c != 1)) {\n    pvVar11 = (void *)FUN_000187e0();\n    return pvVar11;\n  }\n  return local_48;\n}" primitive_type (pointer_declarator "* __regparm3 FUN_00019270(int *param_1,int param_2)" * (ERROR "__regparm3" identifier) (function_declarator "FUN_00019270(int *param_1,int param_2)" identifier (parameter_list "(int *param_1,int param_2)" ( (parameter_declaration "int *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "int param_2" primitive_type identifier) )))) (compound_statement "{\n  int iVar1;\n  DIR *__dirp;\n  bool bVar2;\n  __ino64_t _Var3;\n  undefined1 *puVar4;\n  char cVar5;\n  undefined2 uVar6;\n  int iVar7;\n  int *piVar8;\n  dirent64 *pdVar9;\n  size_t sVar10;\n  void *pvVar11;\n  undefined4 uVar12;\n  DIR *pDVar13;\n  uint uVar14;\n  int iVar15;\n  void *pvVar16;\n  ushort uVar17;\n  uint uVar18;\n  bool bVar19;\n  uint local_5c;\n  void *local_54;\n  uint local_4c;\n  void *local_48;\n  uint local_44;\n  undefined1 *local_38;\n  uint local_34;\n  uint local_30;\n  int local_2c;\n  char local_1f;\n  \n  iVar1 = *param_1;\n  __dirp = *(DIR **)(iVar1 + 0xc);\n  if (__dirp == (DIR *)0x0) {\n    uVar14 = param_1[0xb];\n    uVar18 = uVar14 & 0x10;\n    if (((uVar18 != 0) && (uVar18 = 0x20000, (uVar14 & 1) != 0)) &&\n       (uVar18 = *(uint *)(iVar1 + 0x30), uVar18 != 0)) {\n      uVar18 = 0x20000;\n    }\n    iVar7 = -100;\n    if ((uVar14 & 0x204) == 0x200) {\n      iVar7 = param_1[7];\n    }\n    local_2c = FUN_0001c620(iVar7,*(undefined4 *)(iVar1 + 0x18),\n                            (uVar14 & 0x800) << 7 | uVar18 | 0x90900);\n    if (local_2c < 0) {\n      *(undefined4 *)(iVar1 + 0xc) = 0;\njoined_r0x00019b00:\n      if (param_2 == 3) {\n        *(undefined2 *)(iVar1 + 0x3c) = 4;\n        piVar8 = __errno_location();\n        *(int *)(iVar1 + 0x20) = *piVar8;\n      }\n      return (void *)0x0;\n    }\n    pDVar13 = fdopendir(local_2c);\n    if (pDVar13 == (DIR *)0x0) {\n      piVar8 = __errno_location();\n      iVar7 = *piVar8;\n      close(local_2c);\n      *piVar8 = iVar7;\n      *(undefined4 *)(iVar1 + 0xc) = 0;\n      goto joined_r0x00019b00;\n    }\n    *(DIR **)(iVar1 + 0xc) = pDVar13;\n    if (*(short *)(iVar1 + 0x3c) == 0xb) {\n      uVar6 = FUN_00018640();\n      *(undefined2 *)(iVar1 + 0x3c) = uVar6;\n    }\n    else if ((param_1[0xb] & 0x100U) != 0) {\n      FUN_00019160();\n      FUN_00018640();\n      cVar5 = FUN_00019090();\n      if (cVar5 == '\0') {\n        piVar8 = __errno_location();\n        *piVar8 = 0xc;\n        return (void *)0x0;\n      }\n    }\n    local_34 = (-(uint)(param_1[10] == 0) & 0x186a1) - 1;\n    if (param_2 == 2) {\nLAB_00019a90:\n      bVar19 = false;\n      uVar14 = param_1[0xb];\n      goto LAB_000192d4;\n    }\n    if ((((param_1[0xb] & 0x38U) == 0x18) && (*(int *)(iVar1 + 0x58) == 2)) &&\n       (iVar7 = FUN_00018b60(), iVar7 != 0)) {\n      if (param_2 != 3) goto LAB_00019a90;\n      bVar2 = false;\n      bVar19 = true;\n    }\n    else {\n      bVar19 = param_2 == 3;\n      bVar2 = true;\n    }\n    if (((*(byte *)((int)param_1 + 0x2d) & 2) == 0) ||\n       (local_2c = FUN_0001c780(local_2c,0x406,3), -1 < local_2c)) {\n      iVar7 = FUN_00018e20(0);\n      if (iVar7 == 0) goto LAB_000192cc;\n      pDVar13 = *(DIR **)(iVar1 + 0xc);\n      uVar17 = *(ushort *)(iVar1 + 0x3e) | 1;\n      if ((bVar19) && (bVar2)) goto LAB_0001980f;\nLAB_0001982f:\n      *(ushort *)(iVar1 + 0x3e) = uVar17;\n      closedir(pDVar13);\n      uVar14 = param_1[0xb];\n      *(undefined4 *)(iVar1 + 0xc) = 0;\n      if (((uVar14 & 0x200) != 0) && (-1 < local_2c)) {\n        close(local_2c);\n        uVar14 = param_1[0xb];\n      }\n    }\n    else {\n      pDVar13 = *(DIR **)(iVar1 + 0xc);\n      uVar17 = *(ushort *)(iVar1 + 0x3e) | 1;\n      if ((bVar19) && (bVar2)) {\nLAB_0001980f:\n        piVar8 = __errno_location();\n        *(int *)(iVar1 + 0x20) = *piVar8;\n        goto LAB_0001982f;\n      }\n      *(ushort *)(iVar1 + 0x3e) = uVar17;\n      closedir(pDVar13);\n      uVar14 = param_1[0xb];\n    }\n    bVar19 = false;\n    *(undefined4 *)(iVar1 + 0xc) = 0;\n  }\n  else {\n    iVar7 = dirfd(__dirp);\n    if (iVar7 < 0) {\n      closedir(*(DIR **)(iVar1 + 0xc));\n      *(undefined4 *)(iVar1 + 0xc) = 0;\n      goto joined_r0x00019b00;\n    }\n    if (param_1[10] == 0) {\n      local_34 = 100000;\n      uVar14 = param_1[0xb];\n      bVar19 = true;\n    }\n    else {\n      local_34 = 0xffffffff;\nLAB_000192cc:\n      bVar19 = true;\n      uVar14 = param_1[0xb];\n    }\n  }\nLAB_000192d4:\n  uVar18 = *(uint *)(iVar1 + 0x28);\n  local_4c = uVar18;\n  local_30 = uVar18 - 1;\n  if (*(char *)(*(int *)(iVar1 + 0x1c) + -1 + uVar18) != '/') {\n    local_4c = uVar18 + 1;\n    local_30 = uVar18;\n  }\n  local_38 = (undefined1 *)0x0;\n  if ((uVar14 & 4) != 0) {\n    local_38 = (undefined1 *)(local_30 + param_1[5]) + 1;\n    *(undefined1 *)(local_30 + param_1[5]) = 0x2f;\n  }\n  local_44 = param_1[8] - local_4c;\n  bVar2 = false;\n  local_1f = '\0';\n  iVar7 = *(int *)(iVar1 + 0x30);\n  local_54 = (void *)0x0;\n  local_5c = 0;\n  local_48 = (void *)0x0;\nLAB_000193a8:\n  do {\n    do {\n      pDVar13 = *(DIR **)(iVar1 + 0xc);\n      if (pDVar13 == (DIR *)0x0) goto LAB_00019641;\n      piVar8 = __errno_location();\n      *piVar8 = 0;\n      pdVar9 = readdir64(pDVar13);\n      if (pdVar9 == (dirent64 *)0x0) {\n        if (*piVar8 != 0) {\n          *(int *)(iVar1 + 0x20) = *piVar8;\n          *(ushort *)(iVar1 + 0x3c) =\n               (-(ushort)(__dirp == (DIR *)0x0 && local_5c == 0) & 0xfffd) + 7;\n        }\n        if (*(DIR **)(iVar1 + 0xc) != (DIR *)0x0) {\n          closedir(*(DIR **)(iVar1 + 0xc));\n          *(undefined4 *)(iVar1 + 0xc) = 0;\n        }\n        goto LAB_00019641;\n      }\n    } while ((((*(byte *)(param_1 + 0xb) & 0x20) == 0) && (pdVar9->d_name[0] == '.')) &&\n            ((pdVar9->d_name[1] == '\0' || (*(short *)(pdVar9->d_name + 1) == 0x2e))));\n    sVar10 = strlen(pdVar9->d_name);\n    pvVar11 = (void *)FUN_000188d0();\n    if (pvVar11 == (void *)0x0) {\nLAB_00019910:\n      iVar7 = *piVar8;\n      free(pvVar11);\n      FUN_00018960();\n      closedir(*(DIR **)(iVar1 + 0xc));\n      *(undefined4 *)(iVar1 + 0xc) = 0;\n      *(undefined2 *)(iVar1 + 0x3c) = 7;\n      param_1[0xb] = param_1[0xb] | 0x4000;\n      *piVar8 = iVar7;\n      return (void *)0x0;\n    }\n    if (local_44 <= sVar10) {\n      iVar15 = param_1[5];\n      cVar5 = FUN_00018cc0();\n      if (cVar5 == '\0') goto LAB_00019910;\n      puVar4 = local_38;\n      if ((param_1[5] != iVar15) &&\n         (local_1f = cVar5, puVar4 = (undefined1 *)(param_1[5] + local_4c),\n         (*(byte *)(param_1 + 0xb) & 4) == 0)) {\n        puVar4 = local_38;\n      }\n      local_38 = puVar4;\n      local_44 = param_1[8] - local_4c;\n    }\n    if (CARRY4(sVar10,local_4c)) {\n      free(pvVar11);\n      FUN_00018960();\n      closedir(*(DIR **)(iVar1 + 0xc));\n      *(undefined4 *)(iVar1 + 0xc) = 0;\n      *(undefined2 *)(iVar1 + 0x3c) = 7;\n      param_1[0xb] = param_1[0xb] | 0x4000;\n      *piVar8 = 0x24;\n      return (void *)0x0;\n    }\n    uVar12 = *(undefined4 *)((int)&pdVar9->d_ino + 4);\n    *(int *)((int)pvVar11 + 0x30) = iVar7 + 1;\n    iVar15 = *param_1;\n    *(size_t *)((int)pvVar11 + 0x28) = sVar10 + local_4c;\n    *(int *)((int)pvVar11 + 4) = iVar15;\n    _Var3 = pdVar9->d_ino;\n    *(undefined4 *)((int)pvVar11 + 0xa0) = uVar12;\n    *(int *)((int)pvVar11 + 0x9c) = (int)_Var3;\n    uVar14 = param_1[0xb];\n    if ((uVar14 & 4) == 0) {\n      *(void **)((int)pvVar11 + 0x18) = (void *)((int)pvVar11 + 0xa4);\n    }\n    else {\n      *(undefined4 *)((int)pvVar11 + 0x18) = *(undefined4 *)((int)pvVar11 + 0x1c);\n      memmove(local_38,(void *)((int)pvVar11 + 0xa4),*(int *)((int)pvVar11 + 0x34) + 1);\n      uVar14 = param_1[0xb];\n    }\n    if ((param_1[10] == 0) || ((uVar14 & 0x400) != 0)) {\n      uVar18 = pdVar9->d_type - 1;\n      if (((uVar14 & 0x18) == 0x18) && ((pdVar9->d_type & 0xfb) != 0)) {\n        *(undefined2 *)((int)pvVar11 + 0x3c) = 0xb;\n        if (uVar18 < 0xc) {\n          *(undefined4 *)((int)pvVar11 + 0x54) = *(undefined4 *)(&DAT_0001e180 + uVar18 * 4);\n          uVar12 = 1;\n        }\n        else {\n          *(undefined4 *)((int)pvVar11 + 0x54) = 0;\n          uVar12 = 1;\n        }\n      }\n      else {\n        *(undefined2 *)((int)pvVar11 + 0x3c) = 0xb;\n        if (uVar18 < 0xc) {\n          *(undefined4 *)((int)pvVar11 + 0x54) = *(undefined4 *)(&DAT_0001e180 + uVar18 * 4);\n          uVar12 = 2;\n        }\n        else {\n          *(undefined4 *)((int)pvVar11 + 0x54) = 0;\n          uVar12 = 2;\n        }\n      }\n      *(undefined4 *)((int)pvVar11 + 0x70) = uVar12;\n      *(undefined4 *)((int)pvVar11 + 0x74) = 0;\n    }\n    else {\n      uVar6 = FUN_00018640();\n      *(undefined2 *)((int)pvVar11 + 0x3c) = uVar6;\n    }\n    *(undefined4 *)((int)pvVar11 + 8) = 0;\n    pvVar16 = pvVar11;\n    if (local_48 != (void *)0x0) {\n      *(void **)((int)local_54 + 8) = pvVar11;\n      pvVar16 = local_48;\n    }\n    local_48 = pvVar16;\n    local_54 = pvVar11;\n    if (local_5c == 10000) {\n      if ((param_1[10] != 0) ||\n         (((iVar15 = FUN_00018a00(), iVar15 != 0x6969 && (iVar15 != 0x1021994)) &&\n          (bVar2 = true, iVar15 != -0xacb2be)))) {\n        local_5c = 0x2711;\n        goto LAB_000193a8;\n      }\n      bVar2 = false;\n    }\n    local_5c = local_5c + 1;\n  } while (local_5c < local_34);\nLAB_00019641:\n  if (local_1f != '\0') {\n    iVar15 = param_1[5];\n    for (iVar7 = param_1[1]; pvVar11 = local_48, iVar7 != 0; iVar7 = *(int *)(iVar7 + 8)) {\n      if (*(int *)(iVar7 + 0x18) != iVar7 + 0xa4) {\n        *(int *)(iVar7 + 0x18) = (*(int *)(iVar7 + 0x18) - *(int *)(iVar7 + 0x1c)) + iVar15;\n      }\n      *(int *)(iVar7 + 0x1c) = iVar15;\n    }\n    while (pvVar16 = pvVar11, -1 < *(int *)((int)pvVar16 + 0x30)) {\n      if (*(int *)((int)pvVar16 + 0x18) != (int)pvVar16 + 0xa4) {\n        *(int *)((int)pvVar16 + 0x18) =\n             (*(int *)((int)pvVar16 + 0x18) - *(int *)((int)pvVar16 + 0x1c)) + iVar15;\n      }\n      *(int *)((int)pvVar16 + 0x1c) = iVar15;\n      pvVar11 = *(void **)((int)pvVar16 + 8);\n      if (*(void **)((int)pvVar16 + 8) == (void *)0x0) {\n        pvVar11 = *(void **)((int)pvVar16 + 4);\n      }\n    }\n  }\n  if ((*(byte *)(param_1 + 0xb) & 4) != 0) {\n    if ((param_1[8] == local_4c) || (local_5c == 0)) {\n      local_38 = local_38 + -1;\n    }\n    *local_38 = 0;\n  }\n  if ((__dirp == (DIR *)0x0) && (bVar19)) {\n    if ((param_2 != 1) && (local_5c != 0)) goto LAB_000196b9;\n    if (*(int *)(iVar1 + 0x30) == 0) {\n      iVar7 = FUN_00018c40();\n    }\n    else {\n      iVar7 = FUN_00018e20(&DAT_0001e166);\n    }\n    if (iVar7 != 0) {\n      *(undefined2 *)(iVar1 + 0x3c) = 7;\n      param_1[0xb] = param_1[0xb] | 0x4000;\n      FUN_00018960();\n      return (void *)0x0;\n    }\n  }\n  if (local_5c == 0) {\n    if (((param_2 == 3) && (*(short *)(iVar1 + 0x3c) != 4)) && (*(short *)(iVar1 + 0x3c) != 7)) {\n      *(undefined2 *)(iVar1 + 0x3c) = 6;\n    }\n    FUN_00018960();\n    return (void *)0x0;\n  }\nLAB_000196b9:\n  if (bVar2) {\n    param_1[10] = (int)FUN_00018600;\n    pvVar11 = (void *)FUN_000187e0();\n    param_1[10] = 0;\n    return pvVar11;\n  }\n  if ((param_1[10] != 0) && (local_5c != 1)) {\n    pvVar11 = (void *)FUN_000187e0();\n    return pvVar11;\n  }\n  return local_48;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "DIR *__dirp;" type_identifier (pointer_declarator "*__dirp" * identifier) ;) (declaration "bool bVar2;" primitive_type identifier ;) (declaration "__ino64_t _Var3;" type_identifier identifier ;) (declaration "undefined1 *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "char cVar5;" primitive_type identifier ;) (declaration "undefined2 uVar6;" type_identifier identifier ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "int *piVar8;" primitive_type (pointer_declarator "*piVar8" * identifier) ;) (declaration "dirent64 *pdVar9;" type_identifier (pointer_declarator "*pdVar9" * identifier) ;) (declaration "size_t sVar10;" primitive_type identifier ;) (declaration "void *pvVar11;" primitive_type (pointer_declarator "*pvVar11" * identifier) ;) (declaration "undefined4 uVar12;" type_identifier identifier ;) (declaration "DIR *pDVar13;" type_identifier (pointer_declarator "*pDVar13" * identifier) ;) (declaration "uint uVar14;" type_identifier identifier ;) (declaration "int iVar15;" primitive_type identifier ;) (declaration "void *pvVar16;" primitive_type (pointer_declarator "*pvVar16" * identifier) ;) (declaration "ushort uVar17;" type_identifier identifier ;) (declaration "uint uVar18;" type_identifier identifier ;) (declaration "bool bVar19;" primitive_type identifier ;) (declaration "uint local_5c;" type_identifier identifier ;) (declaration "void *local_54;" primitive_type (pointer_declarator "*local_54" * identifier) ;) (declaration "uint local_4c;" type_identifier identifier ;) (declaration "void *local_48;" primitive_type (pointer_declarator "*local_48" * identifier) ;) (declaration "uint local_44;" type_identifier identifier ;) (declaration "undefined1 *local_38;" type_identifier (pointer_declarator "*local_38" * identifier) ;) (declaration "uint local_34;" type_identifier identifier ;) (declaration "uint local_30;" type_identifier identifier ;) (declaration "int local_2c;" primitive_type identifier ;) (declaration "char local_1f;" primitive_type identifier ;) (expression_statement "iVar1 = *param_1;" (assignment_expression "iVar1 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "__dirp = *(DIR **)(iVar1 + 0xc);" (assignment_expression "__dirp = *(DIR **)(iVar1 + 0xc)" identifier = (pointer_expression "*(DIR **)(iVar1 + 0xc)" * (cast_expression "(DIR **)(iVar1 + 0xc)" ( (type_descriptor "DIR **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar1 + 0xc)" ( (binary_expression "iVar1 + 0xc" identifier + number_literal) ))))) ;) (if_statement "if (__dirp == (DIR *)0x0) {\n    uVar14 = param_1[0xb];\n    uVar18 = uVar14 & 0x10;\n    if (((uVar18 != 0) && (uVar18 = 0x20000, (uVar14 & 1) != 0)) &&\n       (uVar18 = *(uint *)(iVar1 + 0x30), uVar18 != 0)) {\n      uVar18 = 0x20000;\n    }\n    iVar7 = -100;\n    if ((uVar14 & 0x204) == 0x200) {\n      iVar7 = param_1[7];\n    }\n    local_2c = FUN_0001c620(iVar7,*(undefined4 *)(iVar1 + 0x18),\n                            (uVar14 & 0x800) << 7 | uVar18 | 0x90900);\n    if (local_2c < 0) {\n      *(undefined4 *)(iVar1 + 0xc) = 0;\njoined_r0x00019b00:\n      if (param_2 == 3) {\n        *(undefined2 *)(iVar1 + 0x3c) = 4;\n        piVar8 = __errno_location();\n        *(int *)(iVar1 + 0x20) = *piVar8;\n      }\n      return (void *)0x0;\n    }\n    pDVar13 = fdopendir(local_2c);\n    if (pDVar13 == (DIR *)0x0) {\n      piVar8 = __errno_location();\n      iVar7 = *piVar8;\n      close(local_2c);\n      *piVar8 = iVar7;\n      *(undefined4 *)(iVar1 + 0xc) = 0;\n      goto joined_r0x00019b00;\n    }\n    *(DIR **)(iVar1 + 0xc) = pDVar13;\n    if (*(short *)(iVar1 + 0x3c) == 0xb) {\n      uVar6 = FUN_00018640();\n      *(undefined2 *)(iVar1 + 0x3c) = uVar6;\n    }\n    else if ((param_1[0xb] & 0x100U) != 0) {\n      FUN_00019160();\n      FUN_00018640();\n      cVar5 = FUN_00019090();\n      if (cVar5 == '\0') {\n        piVar8 = __errno_location();\n        *piVar8 = 0xc;\n        return (void *)0x0;\n      }\n    }\n    local_34 = (-(uint)(param_1[10] == 0) & 0x186a1) - 1;\n    if (param_2 == 2) {\nLAB_00019a90:\n      bVar19 = false;\n      uVar14 = param_1[0xb];\n      goto LAB_000192d4;\n    }\n    if ((((param_1[0xb] & 0x38U) == 0x18) && (*(int *)(iVar1 + 0x58) == 2)) &&\n       (iVar7 = FUN_00018b60(), iVar7 != 0)) {\n      if (param_2 != 3) goto LAB_00019a90;\n      bVar2 = false;\n      bVar19 = true;\n    }\n    else {\n      bVar19 = param_2 == 3;\n      bVar2 = true;\n    }\n    if (((*(byte *)((int)param_1 + 0x2d) & 2) == 0) ||\n       (local_2c = FUN_0001c780(local_2c,0x406,3), -1 < local_2c)) {\n      iVar7 = FUN_00018e20(0);\n      if (iVar7 == 0) goto LAB_000192cc;\n      pDVar13 = *(DIR **)(iVar1 + 0xc);\n      uVar17 = *(ushort *)(iVar1 + 0x3e) | 1;\n      if ((bVar19) && (bVar2)) goto LAB_0001980f;\nLAB_0001982f:\n      *(ushort *)(iVar1 + 0x3e) = uVar17;\n      closedir(pDVar13);\n      uVar14 = param_1[0xb];\n      *(undefined4 *)(iVar1 + 0xc) = 0;\n      if (((uVar14 & 0x200) != 0) && (-1 < local_2c)) {\n        close(local_2c);\n        uVar14 = param_1[0xb];\n      }\n    }\n    else {\n      pDVar13 = *(DIR **)(iVar1 + 0xc);\n      uVar17 = *(ushort *)(iVar1 + 0x3e) | 1;\n      if ((bVar19) && (bVar2)) {\nLAB_0001980f:\n        piVar8 = __errno_location();\n        *(int *)(iVar1 + 0x20) = *piVar8;\n        goto LAB_0001982f;\n      }\n      *(ushort *)(iVar1 + 0x3e) = uVar17;\n      closedir(pDVar13);\n      uVar14 = param_1[0xb];\n    }\n    bVar19 = false;\n    *(undefined4 *)(iVar1 + 0xc) = 0;\n  }\n  else {\n    iVar7 = dirfd(__dirp);\n    if (iVar7 < 0) {\n      closedir(*(DIR **)(iVar1 + 0xc));\n      *(undefined4 *)(iVar1 + 0xc) = 0;\n      goto joined_r0x00019b00;\n    }\n    if (param_1[10] == 0) {\n      local_34 = 100000;\n      uVar14 = param_1[0xb];\n      bVar19 = true;\n    }\n    else {\n      local_34 = 0xffffffff;\nLAB_000192cc:\n      bVar19 = true;\n      uVar14 = param_1[0xb];\n    }\n  }" if (parenthesized_expression "(__dirp == (DIR *)0x0)" ( (binary_expression "__dirp == (DIR *)0x0" identifier == (cast_expression "(DIR *)0x0" ( (type_descriptor "DIR *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    uVar14 = param_1[0xb];\n    uVar18 = uVar14 & 0x10;\n    if (((uVar18 != 0) && (uVar18 = 0x20000, (uVar14 & 1) != 0)) &&\n       (uVar18 = *(uint *)(iVar1 + 0x30), uVar18 != 0)) {\n      uVar18 = 0x20000;\n    }\n    iVar7 = -100;\n    if ((uVar14 & 0x204) == 0x200) {\n      iVar7 = param_1[7];\n    }\n    local_2c = FUN_0001c620(iVar7,*(undefined4 *)(iVar1 + 0x18),\n                            (uVar14 & 0x800) << 7 | uVar18 | 0x90900);\n    if (local_2c < 0) {\n      *(undefined4 *)(iVar1 + 0xc) = 0;\njoined_r0x00019b00:\n      if (param_2 == 3) {\n        *(undefined2 *)(iVar1 + 0x3c) = 4;\n        piVar8 = __errno_location();\n        *(int *)(iVar1 + 0x20) = *piVar8;\n      }\n      return (void *)0x0;\n    }\n    pDVar13 = fdopendir(local_2c);\n    if (pDVar13 == (DIR *)0x0) {\n      piVar8 = __errno_location();\n      iVar7 = *piVar8;\n      close(local_2c);\n      *piVar8 = iVar7;\n      *(undefined4 *)(iVar1 + 0xc) = 0;\n      goto joined_r0x00019b00;\n    }\n    *(DIR **)(iVar1 + 0xc) = pDVar13;\n    if (*(short *)(iVar1 + 0x3c) == 0xb) {\n      uVar6 = FUN_00018640();\n      *(undefined2 *)(iVar1 + 0x3c) = uVar6;\n    }\n    else if ((param_1[0xb] & 0x100U) != 0) {\n      FUN_00019160();\n      FUN_00018640();\n      cVar5 = FUN_00019090();\n      if (cVar5 == '\0') {\n        piVar8 = __errno_location();\n        *piVar8 = 0xc;\n        return (void *)0x0;\n      }\n    }\n    local_34 = (-(uint)(param_1[10] == 0) & 0x186a1) - 1;\n    if (param_2 == 2) {\nLAB_00019a90:\n      bVar19 = false;\n      uVar14 = param_1[0xb];\n      goto LAB_000192d4;\n    }\n    if ((((param_1[0xb] & 0x38U) == 0x18) && (*(int *)(iVar1 + 0x58) == 2)) &&\n       (iVar7 = FUN_00018b60(), iVar7 != 0)) {\n      if (param_2 != 3) goto LAB_00019a90;\n      bVar2 = false;\n      bVar19 = true;\n    }\n    else {\n      bVar19 = param_2 == 3;\n      bVar2 = true;\n    }\n    if (((*(byte *)((int)param_1 + 0x2d) & 2) == 0) ||\n       (local_2c = FUN_0001c780(local_2c,0x406,3), -1 < local_2c)) {\n      iVar7 = FUN_00018e20(0);\n      if (iVar7 == 0) goto LAB_000192cc;\n      pDVar13 = *(DIR **)(iVar1 + 0xc);\n      uVar17 = *(ushort *)(iVar1 + 0x3e) | 1;\n      if ((bVar19) && (bVar2)) goto LAB_0001980f;\nLAB_0001982f:\n      *(ushort *)(iVar1 + 0x3e) = uVar17;\n      closedir(pDVar13);\n      uVar14 = param_1[0xb];\n      *(undefined4 *)(iVar1 + 0xc) = 0;\n      if (((uVar14 & 0x200) != 0) && (-1 < local_2c)) {\n        close(local_2c);\n        uVar14 = param_1[0xb];\n      }\n    }\n    else {\n      pDVar13 = *(DIR **)(iVar1 + 0xc);\n      uVar17 = *(ushort *)(iVar1 + 0x3e) | 1;\n      if ((bVar19) && (bVar2)) {\nLAB_0001980f:\n        piVar8 = __errno_location();\n        *(int *)(iVar1 + 0x20) = *piVar8;\n        goto LAB_0001982f;\n      }\n      *(ushort *)(iVar1 + 0x3e) = uVar17;\n      closedir(pDVar13);\n      uVar14 = param_1[0xb];\n    }\n    bVar19 = false;\n    *(undefined4 *)(iVar1 + 0xc) = 0;\n  }" { (expression_statement "uVar14 = param_1[0xb];" (assignment_expression "uVar14 = param_1[0xb]" identifier = (subscript_expression "param_1[0xb]" identifier [ number_literal ])) ;) (expression_statement "uVar18 = uVar14 & 0x10;" (assignment_expression "uVar18 = uVar14 & 0x10" identifier = (binary_expression "uVar14 & 0x10" identifier & number_literal)) ;) (if_statement "if (((uVar18 != 0) && (uVar18 = 0x20000, (uVar14 & 1) != 0)) &&\n       (uVar18 = *(uint *)(iVar1 + 0x30), uVar18 != 0)) {\n      uVar18 = 0x20000;\n    }" if (parenthesized_expression "(((uVar18 != 0) && (uVar18 = 0x20000, (uVar14 & 1) != 0)) &&\n       (uVar18 = *(uint *)(iVar1 + 0x30), uVar18 != 0))" ( (binary_expression "((uVar18 != 0) && (uVar18 = 0x20000, (uVar14 & 1) != 0)) &&\n       (uVar18 = *(uint *)(iVar1 + 0x30), uVar18 != 0)" (parenthesized_expression "((uVar18 != 0) && (uVar18 = 0x20000, (uVar14 & 1) != 0))" ( (binary_expression "(uVar18 != 0) && (uVar18 = 0x20000, (uVar14 & 1) != 0)" (parenthesized_expression "(uVar18 != 0)" ( (binary_expression "uVar18 != 0" identifier != number_literal) )) && (parenthesized_expression "(uVar18 = 0x20000, (uVar14 & 1) != 0)" ( (comma_expression "uVar18 = 0x20000, (uVar14 & 1) != 0" (assignment_expression "uVar18 = 0x20000" identifier = number_literal) , (binary_expression "(uVar14 & 1) != 0" (parenthesized_expression "(uVar14 & 1)" ( (binary_expression "uVar14 & 1" identifier & number_literal) )) != number_literal)) ))) )) && (parenthesized_expression "(uVar18 = *(uint *)(iVar1 + 0x30), uVar18 != 0)" ( (comma_expression "uVar18 = *(uint *)(iVar1 + 0x30), uVar18 != 0" (assignment_expression "uVar18 = *(uint *)(iVar1 + 0x30)" identifier = (pointer_expression "*(uint *)(iVar1 + 0x30)" * (cast_expression "(uint *)(iVar1 + 0x30)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x30)" ( (binary_expression "iVar1 + 0x30" identifier + number_literal) ))))) , (binary_expression "uVar18 != 0" identifier != number_literal)) ))) )) (compound_statement "{\n      uVar18 = 0x20000;\n    }" { (expression_statement "uVar18 = 0x20000;" (assignment_expression "uVar18 = 0x20000" identifier = number_literal) ;) })) (expression_statement "iVar7 = -100;" (assignment_expression "iVar7 = -100" identifier = number_literal) ;) (if_statement "if ((uVar14 & 0x204) == 0x200) {\n      iVar7 = param_1[7];\n    }" if (parenthesized_expression "((uVar14 & 0x204) == 0x200)" ( (binary_expression "(uVar14 & 0x204) == 0x200" (parenthesized_expression "(uVar14 & 0x204)" ( (binary_expression "uVar14 & 0x204" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n      iVar7 = param_1[7];\n    }" { (expression_statement "iVar7 = param_1[7];" (assignment_expression "iVar7 = param_1[7]" identifier = (subscript_expression "param_1[7]" identifier [ number_literal ])) ;) })) (expression_statement "local_2c = FUN_0001c620(iVar7,*(undefined4 *)(iVar1 + 0x18),\n                            (uVar14 & 0x800) << 7 | uVar18 | 0x90900);" (assignment_expression "local_2c = FUN_0001c620(iVar7,*(undefined4 *)(iVar1 + 0x18),\n                            (uVar14 & 0x800) << 7 | uVar18 | 0x90900)" identifier = (call_expression "FUN_0001c620(iVar7,*(undefined4 *)(iVar1 + 0x18),\n                            (uVar14 & 0x800) << 7 | uVar18 | 0x90900)" identifier (argument_list "(iVar7,*(undefined4 *)(iVar1 + 0x18),\n                            (uVar14 & 0x800) << 7 | uVar18 | 0x90900)" ( identifier , (pointer_expression "*(undefined4 *)(iVar1 + 0x18)" * (cast_expression "(undefined4 *)(iVar1 + 0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x18)" ( (binary_expression "iVar1 + 0x18" identifier + number_literal) )))) , (binary_expression "(uVar14 & 0x800) << 7 | uVar18 | 0x90900" (binary_expression "(uVar14 & 0x800) << 7 | uVar18" (binary_expression "(uVar14 & 0x800) << 7" (parenthesized_expression "(uVar14 & 0x800)" ( (binary_expression "uVar14 & 0x800" identifier & number_literal) )) << number_literal) | identifier) | number_literal) )))) ;) (if_statement "if (local_2c < 0) {\n      *(undefined4 *)(iVar1 + 0xc) = 0;\njoined_r0x00019b00:\n      if (param_2 == 3) {\n        *(undefined2 *)(iVar1 + 0x3c) = 4;\n        piVar8 = __errno_location();\n        *(int *)(iVar1 + 0x20) = *piVar8;\n      }\n      return (void *)0x0;\n    }" if (parenthesized_expression "(local_2c < 0)" ( (binary_expression "local_2c < 0" identifier < number_literal) )) (compound_statement "{\n      *(undefined4 *)(iVar1 + 0xc) = 0;\njoined_r0x00019b00:\n      if (param_2 == 3) {\n        *(undefined2 *)(iVar1 + 0x3c) = 4;\n        piVar8 = __errno_location();\n        *(int *)(iVar1 + 0x20) = *piVar8;\n      }\n      return (void *)0x0;\n    }" { (expression_statement "*(undefined4 *)(iVar1 + 0xc) = 0;" (assignment_expression "*(undefined4 *)(iVar1 + 0xc) = 0" (pointer_expression "*(undefined4 *)(iVar1 + 0xc)" * (cast_expression "(undefined4 *)(iVar1 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0xc)" ( (binary_expression "iVar1 + 0xc" identifier + number_literal) )))) = number_literal) ;) (labeled_statement "joined_r0x00019b00:\n      if (param_2 == 3) {\n        *(undefined2 *)(iVar1 + 0x3c) = 4;\n        piVar8 = __errno_location();\n        *(int *)(iVar1 + 0x20) = *piVar8;\n      }" statement_identifier : (if_statement "if (param_2 == 3) {\n        *(undefined2 *)(iVar1 + 0x3c) = 4;\n        piVar8 = __errno_location();\n        *(int *)(iVar1 + 0x20) = *piVar8;\n      }" if (parenthesized_expression "(param_2 == 3)" ( (binary_expression "param_2 == 3" identifier == number_literal) )) (compound_statement "{\n        *(undefined2 *)(iVar1 + 0x3c) = 4;\n        piVar8 = __errno_location();\n        *(int *)(iVar1 + 0x20) = *piVar8;\n      }" { (expression_statement "*(undefined2 *)(iVar1 + 0x3c) = 4;" (assignment_expression "*(undefined2 *)(iVar1 + 0x3c) = 4" (pointer_expression "*(undefined2 *)(iVar1 + 0x3c)" * (cast_expression "(undefined2 *)(iVar1 + 0x3c)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x3c)" ( (binary_expression "iVar1 + 0x3c" identifier + number_literal) )))) = number_literal) ;) (expression_statement "piVar8 = __errno_location();" (assignment_expression "piVar8 = __errno_location()" identifier = (call_expression "__errno_location()" identifier (argument_list "()" ( )))) ;) (expression_statement "*(int *)(iVar1 + 0x20) = *piVar8;" (assignment_expression "*(int *)(iVar1 + 0x20) = *piVar8" (pointer_expression "*(int *)(iVar1 + 0x20)" * (cast_expression "(int *)(iVar1 + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x20)" ( (binary_expression "iVar1 + 0x20" identifier + number_literal) )))) = (pointer_expression "*piVar8" * identifier)) ;) }))) (return_statement "return (void *)0x0;" return (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (expression_statement "pDVar13 = fdopendir(local_2c);" (assignment_expression "pDVar13 = fdopendir(local_2c)" identifier = (call_expression "fdopendir(local_2c)" identifier (argument_list "(local_2c)" ( identifier )))) ;) (if_statement "if (pDVar13 == (DIR *)0x0) {\n      piVar8 = __errno_location();\n      iVar7 = *piVar8;\n      close(local_2c);\n      *piVar8 = iVar7;\n      *(undefined4 *)(iVar1 + 0xc) = 0;\n      goto joined_r0x00019b00;\n    }" if (parenthesized_expression "(pDVar13 == (DIR *)0x0)" ( (binary_expression "pDVar13 == (DIR *)0x0" identifier == (cast_expression "(DIR *)0x0" ( (type_descriptor "DIR *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      piVar8 = __errno_location();\n      iVar7 = *piVar8;\n      close(local_2c);\n      *piVar8 = iVar7;\n      *(undefined4 *)(iVar1 + 0xc) = 0;\n      goto joined_r0x00019b00;\n    }" { (expression_statement "piVar8 = __errno_location();" (assignment_expression "piVar8 = __errno_location()" identifier = (call_expression "__errno_location()" identifier (argument_list "()" ( )))) ;) (expression_statement "iVar7 = *piVar8;" (assignment_expression "iVar7 = *piVar8" identifier = (pointer_expression "*piVar8" * identifier)) ;) (expression_statement "close(local_2c);" (call_expression "close(local_2c)" identifier (argument_list "(local_2c)" ( identifier ))) ;) (expression_statement "*piVar8 = iVar7;" (assignment_expression "*piVar8 = iVar7" (pointer_expression "*piVar8" * identifier) = identifier) ;) (expression_statement "*(undefined4 *)(iVar1 + 0xc) = 0;" (assignment_expression "*(undefined4 *)(iVar1 + 0xc) = 0" (pointer_expression "*(undefined4 *)(iVar1 + 0xc)" * (cast_expression "(undefined4 *)(iVar1 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0xc)" ( (binary_expression "iVar1 + 0xc" identifier + number_literal) )))) = number_literal) ;) (goto_statement "goto joined_r0x00019b00;" goto statement_identifier ;) })) (expression_statement "*(DIR **)(iVar1 + 0xc) = pDVar13;" (assignment_expression "*(DIR **)(iVar1 + 0xc) = pDVar13" (pointer_expression "*(DIR **)(iVar1 + 0xc)" * (cast_expression "(DIR **)(iVar1 + 0xc)" ( (type_descriptor "DIR **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar1 + 0xc)" ( (binary_expression "iVar1 + 0xc" identifier + number_literal) )))) = identifier) ;) (if_statement "if (*(short *)(iVar1 + 0x3c) == 0xb) {\n      uVar6 = FUN_00018640();\n      *(undefined2 *)(iVar1 + 0x3c) = uVar6;\n    }\n    else if ((param_1[0xb] & 0x100U) != 0) {\n      FUN_00019160();\n      FUN_00018640();\n      cVar5 = FUN_00019090();\n      if (cVar5 == '\0') {\n        piVar8 = __errno_location();\n        *piVar8 = 0xc;\n        return (void *)0x0;\n      }\n    }" if (parenthesized_expression "(*(short *)(iVar1 + 0x3c) == 0xb)" ( (binary_expression "*(short *)(iVar1 + 0x3c) == 0xb" (pointer_expression "*(short *)(iVar1 + 0x3c)" * (cast_expression "(short *)(iVar1 + 0x3c)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x3c)" ( (binary_expression "iVar1 + 0x3c" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n      uVar6 = FUN_00018640();\n      *(undefined2 *)(iVar1 + 0x3c) = uVar6;\n    }" { (expression_statement "uVar6 = FUN_00018640();" (assignment_expression "uVar6 = FUN_00018640()" identifier = (call_expression "FUN_00018640()" identifier (argument_list "()" ( )))) ;) (expression_statement "*(undefined2 *)(iVar1 + 0x3c) = uVar6;" (assignment_expression "*(undefined2 *)(iVar1 + 0x3c) = uVar6" (pointer_expression "*(undefined2 *)(iVar1 + 0x3c)" * (cast_expression "(undefined2 *)(iVar1 + 0x3c)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x3c)" ( (binary_expression "iVar1 + 0x3c" identifier + number_literal) )))) = identifier) ;) }) (else_clause "else if ((param_1[0xb] & 0x100U) != 0) {\n      FUN_00019160();\n      FUN_00018640();\n      cVar5 = FUN_00019090();\n      if (cVar5 == '\0') {\n        piVar8 = __errno_location();\n        *piVar8 = 0xc;\n        return (void *)0x0;\n      }\n    }" else (if_statement "if ((param_1[0xb] & 0x100U) != 0) {\n      FUN_00019160();\n      FUN_00018640();\n      cVar5 = FUN_00019090();\n      if (cVar5 == '\0') {\n        piVar8 = __errno_location();\n        *piVar8 = 0xc;\n        return (void *)0x0;\n      }\n    }" if (parenthesized_expression "((param_1[0xb] & 0x100U) != 0)" ( (binary_expression "(param_1[0xb] & 0x100U) != 0" (parenthesized_expression "(param_1[0xb] & 0x100U)" ( (binary_expression "param_1[0xb] & 0x100U" (subscript_expression "param_1[0xb]" identifier [ number_literal ]) & number_literal) )) != number_literal) )) (compound_statement "{\n      FUN_00019160();\n      FUN_00018640();\n      cVar5 = FUN_00019090();\n      if (cVar5 == '\0') {\n        piVar8 = __errno_location();\n        *piVar8 = 0xc;\n        return (void *)0x0;\n      }\n    }" { (expression_statement "FUN_00019160();" (call_expression "FUN_00019160()" identifier (argument_list "()" ( ))) ;) (expression_statement "FUN_00018640();" (call_expression "FUN_00018640()" identifier (argument_list "()" ( ))) ;) (expression_statement "cVar5 = FUN_00019090();" (assignment_expression "cVar5 = FUN_00019090()" identifier = (call_expression "FUN_00019090()" identifier (argument_list "()" ( )))) ;) (if_statement "if (cVar5 == '\0') {\n        piVar8 = __errno_location();\n        *piVar8 = 0xc;\n        return (void *)0x0;\n      }" if (parenthesized_expression "(cVar5 == '\0')" ( (binary_expression "cVar5 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n        piVar8 = __errno_location();\n        *piVar8 = 0xc;\n        return (void *)0x0;\n      }" { (expression_statement "piVar8 = __errno_location();" (assignment_expression "piVar8 = __errno_location()" identifier = (call_expression "__errno_location()" identifier (argument_list "()" ( )))) ;) (expression_statement "*piVar8 = 0xc;" (assignment_expression "*piVar8 = 0xc" (pointer_expression "*piVar8" * identifier) = number_literal) ;) (return_statement "return (void *)0x0;" return (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) })))) (expression_statement "local_34 = (-(uint)(param_1[10] == 0) & 0x186a1) - 1;" (assignment_expression "local_34 = (-(uint)(param_1[10] == 0) & 0x186a1) - 1" identifier = (binary_expression "(-(uint)(param_1[10] == 0) & 0x186a1) - 1" (parenthesized_expression "(-(uint)(param_1[10] == 0) & 0x186a1)" ( (binary_expression "-(uint)(param_1[10] == 0) & 0x186a1" (unary_expression "-(uint)(param_1[10] == 0)" - (call_expression "(uint)(param_1[10] == 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(param_1[10] == 0)" ( (binary_expression "param_1[10] == 0" (subscript_expression "param_1[10]" identifier [ number_literal ]) == number_literal) )))) & number_literal) )) - number_literal)) ;) (if_statement "if (param_2 == 2) {\nLAB_00019a90:\n      bVar19 = false;\n      uVar14 = param_1[0xb];\n      goto LAB_000192d4;\n    }" if (parenthesized_expression "(param_2 == 2)" ( (binary_expression "param_2 == 2" identifier == number_literal) )) (compound_statement "{\nLAB_00019a90:\n      bVar19 = false;\n      uVar14 = param_1[0xb];\n      goto LAB_000192d4;\n    }" { (labeled_statement "LAB_00019a90:\n      bVar19 = false;" statement_identifier : (expression_statement "bVar19 = false;" (assignment_expression "bVar19 = false" identifier = false) ;)) (expression_statement "uVar14 = param_1[0xb];" (assignment_expression "uVar14 = param_1[0xb]" identifier = (subscript_expression "param_1[0xb]" identifier [ number_literal ])) ;) (goto_statement "goto LAB_000192d4;" goto statement_identifier ;) })) (if_statement "if ((((param_1[0xb] & 0x38U) == 0x18) && (*(int *)(iVar1 + 0x58) == 2)) &&\n       (iVar7 = FUN_00018b60(), iVar7 != 0)) {\n      if (param_2 != 3) goto LAB_00019a90;\n      bVar2 = false;\n      bVar19 = true;\n    }\n    else {\n      bVar19 = param_2 == 3;\n      bVar2 = true;\n    }" if (parenthesized_expression "((((param_1[0xb] & 0x38U) == 0x18) && (*(int *)(iVar1 + 0x58) == 2)) &&\n       (iVar7 = FUN_00018b60(), iVar7 != 0))" ( (binary_expression "(((param_1[0xb] & 0x38U) == 0x18) && (*(int *)(iVar1 + 0x58) == 2)) &&\n       (iVar7 = FUN_00018b60(), iVar7 != 0)" (parenthesized_expression "(((param_1[0xb] & 0x38U) == 0x18) && (*(int *)(iVar1 + 0x58) == 2))" ( (binary_expression "((param_1[0xb] & 0x38U) == 0x18) && (*(int *)(iVar1 + 0x58) == 2)" (parenthesized_expression "((param_1[0xb] & 0x38U) == 0x18)" ( (binary_expression "(param_1[0xb] & 0x38U) == 0x18" (parenthesized_expression "(param_1[0xb] & 0x38U)" ( (binary_expression "param_1[0xb] & 0x38U" (subscript_expression "param_1[0xb]" identifier [ number_literal ]) & number_literal) )) == number_literal) )) && (parenthesized_expression "(*(int *)(iVar1 + 0x58) == 2)" ( (binary_expression "*(int *)(iVar1 + 0x58) == 2" (pointer_expression "*(int *)(iVar1 + 0x58)" * (cast_expression "(int *)(iVar1 + 0x58)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x58)" ( (binary_expression "iVar1 + 0x58" identifier + number_literal) )))) == number_literal) ))) )) && (parenthesized_expression "(iVar7 = FUN_00018b60(), iVar7 != 0)" ( (comma_expression "iVar7 = FUN_00018b60(), iVar7 != 0" (assignment_expression "iVar7 = FUN_00018b60()" identifier = (call_expression "FUN_00018b60()" identifier (argument_list "()" ( )))) , (binary_expression "iVar7 != 0" identifier != number_literal)) ))) )) (compound_statement "{\n      if (param_2 != 3) goto LAB_00019a90;\n      bVar2 = false;\n      bVar19 = true;\n    }" { (if_statement "if (param_2 != 3) goto LAB_00019a90;" if (parenthesized_expression "(param_2 != 3)" ( (binary_expression "param_2 != 3" identifier != number_literal) )) (goto_statement "goto LAB_00019a90;" goto statement_identifier ;)) (expression_statement "bVar2 = false;" (assignment_expression "bVar2 = false" identifier = false) ;) (expression_statement "bVar19 = true;" (assignment_expression "bVar19 = true" identifier = true) ;) }) (else_clause "else {\n      bVar19 = param_2 == 3;\n      bVar2 = true;\n    }" else (compound_statement "{\n      bVar19 = param_2 == 3;\n      bVar2 = true;\n    }" { (expression_statement "bVar19 = param_2 == 3;" (assignment_expression "bVar19 = param_2 == 3" identifier = (binary_expression "param_2 == 3" identifier == number_literal)) ;) (expression_statement "bVar2 = true;" (assignment_expression "bVar2 = true" identifier = true) ;) }))) (if_statement "if (((*(byte *)((int)param_1 + 0x2d) & 2) == 0) ||\n       (local_2c = FUN_0001c780(local_2c,0x406,3), -1 < local_2c)) {\n      iVar7 = FUN_00018e20(0);\n      if (iVar7 == 0) goto LAB_000192cc;\n      pDVar13 = *(DIR **)(iVar1 + 0xc);\n      uVar17 = *(ushort *)(iVar1 + 0x3e) | 1;\n      if ((bVar19) && (bVar2)) goto LAB_0001980f;\nLAB_0001982f:\n      *(ushort *)(iVar1 + 0x3e) = uVar17;\n      closedir(pDVar13);\n      uVar14 = param_1[0xb];\n      *(undefined4 *)(iVar1 + 0xc) = 0;\n      if (((uVar14 & 0x200) != 0) && (-1 < local_2c)) {\n        close(local_2c);\n        uVar14 = param_1[0xb];\n      }\n    }\n    else {\n      pDVar13 = *(DIR **)(iVar1 + 0xc);\n      uVar17 = *(ushort *)(iVar1 + 0x3e) | 1;\n      if ((bVar19) && (bVar2)) {\nLAB_0001980f:\n        piVar8 = __errno_location();\n        *(int *)(iVar1 + 0x20) = *piVar8;\n        goto LAB_0001982f;\n      }\n      *(ushort *)(iVar1 + 0x3e) = uVar17;\n      closedir(pDVar13);\n      uVar14 = param_1[0xb];\n    }" if (parenthesized_expression "(((*(byte *)((int)param_1 + 0x2d) & 2) == 0) ||\n       (local_2c = FUN_0001c780(local_2c,0x406,3), -1 < local_2c))" ( (binary_expression "((*(byte *)((int)param_1 + 0x2d) & 2) == 0) ||\n       (local_2c = FUN_0001c780(local_2c,0x406,3), -1 < local_2c)" (parenthesized_expression "((*(byte *)((int)param_1 + 0x2d) & 2) == 0)" ( (binary_expression "(*(byte *)((int)param_1 + 0x2d) & 2) == 0" (parenthesized_expression "(*(byte *)((int)param_1 + 0x2d) & 2)" ( (binary_expression "*(byte *)((int)param_1 + 0x2d) & 2" (pointer_expression "*(byte *)((int)param_1 + 0x2d)" * (cast_expression "(byte *)((int)param_1 + 0x2d)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + 0x2d)" ( (binary_expression "(int)param_1 + 0x2d" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) & number_literal) )) == number_literal) )) || (parenthesized_expression "(local_2c = FUN_0001c780(local_2c,0x406,3), -1 < local_2c)" ( (comma_expression "local_2c = FUN_0001c780(local_2c,0x406,3), -1 < local_2c" (assignment_expression "local_2c = FUN_0001c780(local_2c,0x406,3)" identifier = (call_expression "FUN_0001c780(local_2c,0x406,3)" identifier (argument_list "(local_2c,0x406,3)" ( identifier , number_literal , number_literal )))) , (binary_expression "-1 < local_2c" number_literal < identifier)) ))) )) (compound_statement "{\n      iVar7 = FUN_00018e20(0);\n      if (iVar7 == 0) goto LAB_000192cc;\n      pDVar13 = *(DIR **)(iVar1 + 0xc);\n      uVar17 = *(ushort *)(iVar1 + 0x3e) | 1;\n      if ((bVar19) && (bVar2)) goto LAB_0001980f;\nLAB_0001982f:\n      *(ushort *)(iVar1 + 0x3e) = uVar17;\n      closedir(pDVar13);\n      uVar14 = param_1[0xb];\n      *(undefined4 *)(iVar1 + 0xc) = 0;\n      if (((uVar14 & 0x200) != 0) && (-1 < local_2c)) {\n        close(local_2c);\n        uVar14 = param_1[0xb];\n      }\n    }" { (expression_statement "iVar7 = FUN_00018e20(0);" (assignment_expression "iVar7 = FUN_00018e20(0)" identifier = (call_expression "FUN_00018e20(0)" identifier (argument_list "(0)" ( number_literal )))) ;) (if_statement "if (iVar7 == 0) goto LAB_000192cc;" if (parenthesized_expression "(iVar7 == 0)" ( (binary_expression "iVar7 == 0" identifier == number_literal) )) (goto_statement "goto LAB_000192cc;" goto statement_identifier ;)) (expression_statement "pDVar13 = *(DIR **)(iVar1 + 0xc);" (assignment_expression "pDVar13 = *(DIR **)(iVar1 + 0xc)" identifier = (pointer_expression "*(DIR **)(iVar1 + 0xc)" * (cast_expression "(DIR **)(iVar1 + 0xc)" ( (type_descriptor "DIR **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar1 + 0xc)" ( (binary_expression "iVar1 + 0xc" identifier + number_literal) ))))) ;) (expression_statement "uVar17 = *(ushort *)(iVar1 + 0x3e) | 1;" (assignment_expression "uVar17 = *(ushort *)(iVar1 + 0x3e) | 1" identifier = (binary_expression "*(ushort *)(iVar1 + 0x3e) | 1" (pointer_expression "*(ushort *)(iVar1 + 0x3e)" * (cast_expression "(ushort *)(iVar1 + 0x3e)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x3e)" ( (binary_expression "iVar1 + 0x3e" identifier + number_literal) )))) | number_literal)) ;) (if_statement "if ((bVar19) && (bVar2)) goto LAB_0001980f;" if (parenthesized_expression "((bVar19) && (bVar2))" ( (binary_expression "(bVar19) && (bVar2)" (parenthesized_expression "(bVar19)" ( identifier )) && (parenthesized_expression "(bVar2)" ( identifier ))) )) (goto_statement "goto LAB_0001980f;" goto statement_identifier ;)) (labeled_statement "LAB_0001982f:\n      *(ushort *)(iVar1 + 0x3e) = uVar17;" statement_identifier : (expression_statement "*(ushort *)(iVar1 + 0x3e) = uVar17;" (assignment_expression "*(ushort *)(iVar1 + 0x3e) = uVar17" (pointer_expression "*(ushort *)(iVar1 + 0x3e)" * (cast_expression "(ushort *)(iVar1 + 0x3e)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x3e)" ( (binary_expression "iVar1 + 0x3e" identifier + number_literal) )))) = identifier) ;)) (expression_statement "closedir(pDVar13);" (call_expression "closedir(pDVar13)" identifier (argument_list "(pDVar13)" ( identifier ))) ;) (expression_statement "uVar14 = param_1[0xb];" (assignment_expression "uVar14 = param_1[0xb]" identifier = (subscript_expression "param_1[0xb]" identifier [ number_literal ])) ;) (expression_statement "*(undefined4 *)(iVar1 + 0xc) = 0;" (assignment_expression "*(undefined4 *)(iVar1 + 0xc) = 0" (pointer_expression "*(undefined4 *)(iVar1 + 0xc)" * (cast_expression "(undefined4 *)(iVar1 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0xc)" ( (binary_expression "iVar1 + 0xc" identifier + number_literal) )))) = number_literal) ;) (if_statement "if (((uVar14 & 0x200) != 0) && (-1 < local_2c)) {\n        close(local_2c);\n        uVar14 = param_1[0xb];\n      }" if (parenthesized_expression "(((uVar14 & 0x200) != 0) && (-1 < local_2c))" ( (binary_expression "((uVar14 & 0x200) != 0) && (-1 < local_2c)" (parenthesized_expression "((uVar14 & 0x200) != 0)" ( (binary_expression "(uVar14 & 0x200) != 0" (parenthesized_expression "(uVar14 & 0x200)" ( (binary_expression "uVar14 & 0x200" identifier & number_literal) )) != number_literal) )) && (parenthesized_expression "(-1 < local_2c)" ( (binary_expression "-1 < local_2c" number_literal < identifier) ))) )) (compound_statement "{\n        close(local_2c);\n        uVar14 = param_1[0xb];\n      }" { (expression_statement "close(local_2c);" (call_expression "close(local_2c)" identifier (argument_list "(local_2c)" ( identifier ))) ;) (expression_statement "uVar14 = param_1[0xb];" (assignment_expression "uVar14 = param_1[0xb]" identifier = (subscript_expression "param_1[0xb]" identifier [ number_literal ])) ;) })) }) (else_clause "else {\n      pDVar13 = *(DIR **)(iVar1 + 0xc);\n      uVar17 = *(ushort *)(iVar1 + 0x3e) | 1;\n      if ((bVar19) && (bVar2)) {\nLAB_0001980f:\n        piVar8 = __errno_location();\n        *(int *)(iVar1 + 0x20) = *piVar8;\n        goto LAB_0001982f;\n      }\n      *(ushort *)(iVar1 + 0x3e) = uVar17;\n      closedir(pDVar13);\n      uVar14 = param_1[0xb];\n    }" else (compound_statement "{\n      pDVar13 = *(DIR **)(iVar1 + 0xc);\n      uVar17 = *(ushort *)(iVar1 + 0x3e) | 1;\n      if ((bVar19) && (bVar2)) {\nLAB_0001980f:\n        piVar8 = __errno_location();\n        *(int *)(iVar1 + 0x20) = *piVar8;\n        goto LAB_0001982f;\n      }\n      *(ushort *)(iVar1 + 0x3e) = uVar17;\n      closedir(pDVar13);\n      uVar14 = param_1[0xb];\n    }" { (expression_statement "pDVar13 = *(DIR **)(iVar1 + 0xc);" (assignment_expression "pDVar13 = *(DIR **)(iVar1 + 0xc)" identifier = (pointer_expression "*(DIR **)(iVar1 + 0xc)" * (cast_expression "(DIR **)(iVar1 + 0xc)" ( (type_descriptor "DIR **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar1 + 0xc)" ( (binary_expression "iVar1 + 0xc" identifier + number_literal) ))))) ;) (expression_statement "uVar17 = *(ushort *)(iVar1 + 0x3e) | 1;" (assignment_expression "uVar17 = *(ushort *)(iVar1 + 0x3e) | 1" identifier = (binary_expression "*(ushort *)(iVar1 + 0x3e) | 1" (pointer_expression "*(ushort *)(iVar1 + 0x3e)" * (cast_expression "(ushort *)(iVar1 + 0x3e)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x3e)" ( (binary_expression "iVar1 + 0x3e" identifier + number_literal) )))) | number_literal)) ;) (if_statement "if ((bVar19) && (bVar2)) {\nLAB_0001980f:\n        piVar8 = __errno_location();\n        *(int *)(iVar1 + 0x20) = *piVar8;\n        goto LAB_0001982f;\n      }" if (parenthesized_expression "((bVar19) && (bVar2))" ( (binary_expression "(bVar19) && (bVar2)" (parenthesized_expression "(bVar19)" ( identifier )) && (parenthesized_expression "(bVar2)" ( identifier ))) )) (compound_statement "{\nLAB_0001980f:\n        piVar8 = __errno_location();\n        *(int *)(iVar1 + 0x20) = *piVar8;\n        goto LAB_0001982f;\n      }" { (labeled_statement "LAB_0001980f:\n        piVar8 = __errno_location();" statement_identifier : (expression_statement "piVar8 = __errno_location();" (assignment_expression "piVar8 = __errno_location()" identifier = (call_expression "__errno_location()" identifier (argument_list "()" ( )))) ;)) (expression_statement "*(int *)(iVar1 + 0x20) = *piVar8;" (assignment_expression "*(int *)(iVar1 + 0x20) = *piVar8" (pointer_expression "*(int *)(iVar1 + 0x20)" * (cast_expression "(int *)(iVar1 + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x20)" ( (binary_expression "iVar1 + 0x20" identifier + number_literal) )))) = (pointer_expression "*piVar8" * identifier)) ;) (goto_statement "goto LAB_0001982f;" goto statement_identifier ;) })) (expression_statement "*(ushort *)(iVar1 + 0x3e) = uVar17;" (assignment_expression "*(ushort *)(iVar1 + 0x3e) = uVar17" (pointer_expression "*(ushort *)(iVar1 + 0x3e)" * (cast_expression "(ushort *)(iVar1 + 0x3e)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x3e)" ( (binary_expression "iVar1 + 0x3e" identifier + number_literal) )))) = identifier) ;) (expression_statement "closedir(pDVar13);" (call_expression "closedir(pDVar13)" identifier (argument_list "(pDVar13)" ( identifier ))) ;) (expression_statement "uVar14 = param_1[0xb];" (assignment_expression "uVar14 = param_1[0xb]" identifier = (subscript_expression "param_1[0xb]" identifier [ number_literal ])) ;) }))) (expression_statement "bVar19 = false;" (assignment_expression "bVar19 = false" identifier = false) ;) (expression_statement "*(undefined4 *)(iVar1 + 0xc) = 0;" (assignment_expression "*(undefined4 *)(iVar1 + 0xc) = 0" (pointer_expression "*(undefined4 *)(iVar1 + 0xc)" * (cast_expression "(undefined4 *)(iVar1 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0xc)" ( (binary_expression "iVar1 + 0xc" identifier + number_literal) )))) = number_literal) ;) }) (else_clause "else {\n    iVar7 = dirfd(__dirp);\n    if (iVar7 < 0) {\n      closedir(*(DIR **)(iVar1 + 0xc));\n      *(undefined4 *)(iVar1 + 0xc) = 0;\n      goto joined_r0x00019b00;\n    }\n    if (param_1[10] == 0) {\n      local_34 = 100000;\n      uVar14 = param_1[0xb];\n      bVar19 = true;\n    }\n    else {\n      local_34 = 0xffffffff;\nLAB_000192cc:\n      bVar19 = true;\n      uVar14 = param_1[0xb];\n    }\n  }" else (compound_statement "{\n    iVar7 = dirfd(__dirp);\n    if (iVar7 < 0) {\n      closedir(*(DIR **)(iVar1 + 0xc));\n      *(undefined4 *)(iVar1 + 0xc) = 0;\n      goto joined_r0x00019b00;\n    }\n    if (param_1[10] == 0) {\n      local_34 = 100000;\n      uVar14 = param_1[0xb];\n      bVar19 = true;\n    }\n    else {\n      local_34 = 0xffffffff;\nLAB_000192cc:\n      bVar19 = true;\n      uVar14 = param_1[0xb];\n    }\n  }" { (expression_statement "iVar7 = dirfd(__dirp);" (assignment_expression "iVar7 = dirfd(__dirp)" identifier = (call_expression "dirfd(__dirp)" identifier (argument_list "(__dirp)" ( identifier )))) ;) (if_statement "if (iVar7 < 0) {\n      closedir(*(DIR **)(iVar1 + 0xc));\n      *(undefined4 *)(iVar1 + 0xc) = 0;\n      goto joined_r0x00019b00;\n    }" if (parenthesized_expression "(iVar7 < 0)" ( (binary_expression "iVar7 < 0" identifier < number_literal) )) (compound_statement "{\n      closedir(*(DIR **)(iVar1 + 0xc));\n      *(undefined4 *)(iVar1 + 0xc) = 0;\n      goto joined_r0x00019b00;\n    }" { (expression_statement "closedir(*(DIR **)(iVar1 + 0xc));" (call_expression "closedir(*(DIR **)(iVar1 + 0xc))" identifier (argument_list "(*(DIR **)(iVar1 + 0xc))" ( (pointer_expression "*(DIR **)(iVar1 + 0xc)" * (cast_expression "(DIR **)(iVar1 + 0xc)" ( (type_descriptor "DIR **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar1 + 0xc)" ( (binary_expression "iVar1 + 0xc" identifier + number_literal) )))) ))) ;) (expression_statement "*(undefined4 *)(iVar1 + 0xc) = 0;" (assignment_expression "*(undefined4 *)(iVar1 + 0xc) = 0" (pointer_expression "*(undefined4 *)(iVar1 + 0xc)" * (cast_expression "(undefined4 *)(iVar1 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0xc)" ( (binary_expression "iVar1 + 0xc" identifier + number_literal) )))) = number_literal) ;) (goto_statement "goto joined_r0x00019b00;" goto statement_identifier ;) })) (if_statement "if (param_1[10] == 0) {\n      local_34 = 100000;\n      uVar14 = param_1[0xb];\n      bVar19 = true;\n    }\n    else {\n      local_34 = 0xffffffff;\nLAB_000192cc:\n      bVar19 = true;\n      uVar14 = param_1[0xb];\n    }" if (parenthesized_expression "(param_1[10] == 0)" ( (binary_expression "param_1[10] == 0" (subscript_expression "param_1[10]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n      local_34 = 100000;\n      uVar14 = param_1[0xb];\n      bVar19 = true;\n    }" { (expression_statement "local_34 = 100000;" (assignment_expression "local_34 = 100000" identifier = number_literal) ;) (expression_statement "uVar14 = param_1[0xb];" (assignment_expression "uVar14 = param_1[0xb]" identifier = (subscript_expression "param_1[0xb]" identifier [ number_literal ])) ;) (expression_statement "bVar19 = true;" (assignment_expression "bVar19 = true" identifier = true) ;) }) (else_clause "else {\n      local_34 = 0xffffffff;\nLAB_000192cc:\n      bVar19 = true;\n      uVar14 = param_1[0xb];\n    }" else (compound_statement "{\n      local_34 = 0xffffffff;\nLAB_000192cc:\n      bVar19 = true;\n      uVar14 = param_1[0xb];\n    }" { (expression_statement "local_34 = 0xffffffff;" (assignment_expression "local_34 = 0xffffffff" identifier = number_literal) ;) (labeled_statement "LAB_000192cc:\n      bVar19 = true;" statement_identifier : (expression_statement "bVar19 = true;" (assignment_expression "bVar19 = true" identifier = true) ;)) (expression_statement "uVar14 = param_1[0xb];" (assignment_expression "uVar14 = param_1[0xb]" identifier = (subscript_expression "param_1[0xb]" identifier [ number_literal ])) ;) }))) }))) (labeled_statement "LAB_000192d4:\n  uVar18 = *(uint *)(iVar1 + 0x28);" statement_identifier : (expression_statement "uVar18 = *(uint *)(iVar1 + 0x28);" (assignment_expression "uVar18 = *(uint *)(iVar1 + 0x28)" identifier = (pointer_expression "*(uint *)(iVar1 + 0x28)" * (cast_expression "(uint *)(iVar1 + 0x28)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x28)" ( (binary_expression "iVar1 + 0x28" identifier + number_literal) ))))) ;)) (expression_statement "local_4c = uVar18;" (assignment_expression "local_4c = uVar18" identifier = identifier) ;) (expression_statement "local_30 = uVar18 - 1;" (assignment_expression "local_30 = uVar18 - 1" identifier = (binary_expression "uVar18 - 1" identifier - number_literal)) ;) (if_statement "if (*(char *)(*(int *)(iVar1 + 0x1c) + -1 + uVar18) != '/') {\n    local_4c = uVar18 + 1;\n    local_30 = uVar18;\n  }" if (parenthesized_expression "(*(char *)(*(int *)(iVar1 + 0x1c) + -1 + uVar18) != '/')" ( (binary_expression "*(char *)(*(int *)(iVar1 + 0x1c) + -1 + uVar18) != '/'" (pointer_expression "*(char *)(*(int *)(iVar1 + 0x1c) + -1 + uVar18)" * (cast_expression "(char *)(*(int *)(iVar1 + 0x1c) + -1 + uVar18)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar1 + 0x1c) + -1 + uVar18)" ( (binary_expression "*(int *)(iVar1 + 0x1c) + -1 + uVar18" (binary_expression "*(int *)(iVar1 + 0x1c) + -1" (pointer_expression "*(int *)(iVar1 + 0x1c)" * (cast_expression "(int *)(iVar1 + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x1c)" ( (binary_expression "iVar1 + 0x1c" identifier + number_literal) )))) + number_literal) + identifier) )))) != (char_literal "'/'" ' character ')) )) (compound_statement "{\n    local_4c = uVar18 + 1;\n    local_30 = uVar18;\n  }" { (expression_statement "local_4c = uVar18 + 1;" (assignment_expression "local_4c = uVar18 + 1" identifier = (binary_expression "uVar18 + 1" identifier + number_literal)) ;) (expression_statement "local_30 = uVar18;" (assignment_expression "local_30 = uVar18" identifier = identifier) ;) })) (expression_statement "local_38 = (undefined1 *)0x0;" (assignment_expression "local_38 = (undefined1 *)0x0" identifier = (cast_expression "(undefined1 *)0x0" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if ((uVar14 & 4) != 0) {\n    local_38 = (undefined1 *)(local_30 + param_1[5]) + 1;\n    *(undefined1 *)(local_30 + param_1[5]) = 0x2f;\n  }" if (parenthesized_expression "((uVar14 & 4) != 0)" ( (binary_expression "(uVar14 & 4) != 0" (parenthesized_expression "(uVar14 & 4)" ( (binary_expression "uVar14 & 4" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n    local_38 = (undefined1 *)(local_30 + param_1[5]) + 1;\n    *(undefined1 *)(local_30 + param_1[5]) = 0x2f;\n  }" { (expression_statement "local_38 = (undefined1 *)(local_30 + param_1[5]) + 1;" (assignment_expression "local_38 = (undefined1 *)(local_30 + param_1[5]) + 1" identifier = (binary_expression "(undefined1 *)(local_30 + param_1[5]) + 1" (cast_expression "(undefined1 *)(local_30 + param_1[5])" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_30 + param_1[5])" ( (binary_expression "local_30 + param_1[5]" identifier + (subscript_expression "param_1[5]" identifier [ number_literal ])) ))) + number_literal)) ;) (expression_statement "*(undefined1 *)(local_30 + param_1[5]) = 0x2f;" (assignment_expression "*(undefined1 *)(local_30 + param_1[5]) = 0x2f" (pointer_expression "*(undefined1 *)(local_30 + param_1[5])" * (cast_expression "(undefined1 *)(local_30 + param_1[5])" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_30 + param_1[5])" ( (binary_expression "local_30 + param_1[5]" identifier + (subscript_expression "param_1[5]" identifier [ number_literal ])) )))) = number_literal) ;) })) (expression_statement "local_44 = param_1[8] - local_4c;" (assignment_expression "local_44 = param_1[8] - local_4c" identifier = (binary_expression "param_1[8] - local_4c" (subscript_expression "param_1[8]" identifier [ number_literal ]) - identifier)) ;) (expression_statement "bVar2 = false;" (assignment_expression "bVar2 = false" identifier = false) ;) (expression_statement "local_1f = '\0';" (assignment_expression "local_1f = '\0'" identifier = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "iVar7 = *(int *)(iVar1 + 0x30);" (assignment_expression "iVar7 = *(int *)(iVar1 + 0x30)" identifier = (pointer_expression "*(int *)(iVar1 + 0x30)" * (cast_expression "(int *)(iVar1 + 0x30)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x30)" ( (binary_expression "iVar1 + 0x30" identifier + number_literal) ))))) ;) (expression_statement "local_54 = (void *)0x0;" (assignment_expression "local_54 = (void *)0x0" identifier = (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_5c = 0;" (assignment_expression "local_5c = 0" identifier = number_literal) ;) (expression_statement "local_48 = (void *)0x0;" (assignment_expression "local_48 = (void *)0x0" identifier = (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (labeled_statement "LAB_000193a8:\n  do {\n    do {\n      pDVar13 = *(DIR **)(iVar1 + 0xc);\n      if (pDVar13 == (DIR *)0x0) goto LAB_00019641;\n      piVar8 = __errno_location();\n      *piVar8 = 0;\n      pdVar9 = readdir64(pDVar13);\n      if (pdVar9 == (dirent64 *)0x0) {\n        if (*piVar8 != 0) {\n          *(int *)(iVar1 + 0x20) = *piVar8;\n          *(ushort *)(iVar1 + 0x3c) =\n               (-(ushort)(__dirp == (DIR *)0x0 && local_5c == 0) & 0xfffd) + 7;\n        }\n        if (*(DIR **)(iVar1 + 0xc) != (DIR *)0x0) {\n          closedir(*(DIR **)(iVar1 + 0xc));\n          *(undefined4 *)(iVar1 + 0xc) = 0;\n        }\n        goto LAB_00019641;\n      }\n    } while ((((*(byte *)(param_1 + 0xb) & 0x20) == 0) && (pdVar9->d_name[0] == '.')) &&\n            ((pdVar9->d_name[1] == '\0' || (*(short *)(pdVar9->d_name + 1) == 0x2e))));\n    sVar10 = strlen(pdVar9->d_name);\n    pvVar11 = (void *)FUN_000188d0();\n    if (pvVar11 == (void *)0x0) {\nLAB_00019910:\n      iVar7 = *piVar8;\n      free(pvVar11);\n      FUN_00018960();\n      closedir(*(DIR **)(iVar1 + 0xc));\n      *(undefined4 *)(iVar1 + 0xc) = 0;\n      *(undefined2 *)(iVar1 + 0x3c) = 7;\n      param_1[0xb] = param_1[0xb] | 0x4000;\n      *piVar8 = iVar7;\n      return (void *)0x0;\n    }\n    if (local_44 <= sVar10) {\n      iVar15 = param_1[5];\n      cVar5 = FUN_00018cc0();\n      if (cVar5 == '\0') goto LAB_00019910;\n      puVar4 = local_38;\n      if ((param_1[5] != iVar15) &&\n         (local_1f = cVar5, puVar4 = (undefined1 *)(param_1[5] + local_4c),\n         (*(byte *)(param_1 + 0xb) & 4) == 0)) {\n        puVar4 = local_38;\n      }\n      local_38 = puVar4;\n      local_44 = param_1[8] - local_4c;\n    }\n    if (CARRY4(sVar10,local_4c)) {\n      free(pvVar11);\n      FUN_00018960();\n      closedir(*(DIR **)(iVar1 + 0xc));\n      *(undefined4 *)(iVar1 + 0xc) = 0;\n      *(undefined2 *)(iVar1 + 0x3c) = 7;\n      param_1[0xb] = param_1[0xb] | 0x4000;\n      *piVar8 = 0x24;\n      return (void *)0x0;\n    }\n    uVar12 = *(undefined4 *)((int)&pdVar9->d_ino + 4);\n    *(int *)((int)pvVar11 + 0x30) = iVar7 + 1;\n    iVar15 = *param_1;\n    *(size_t *)((int)pvVar11 + 0x28) = sVar10 + local_4c;\n    *(int *)((int)pvVar11 + 4) = iVar15;\n    _Var3 = pdVar9->d_ino;\n    *(undefined4 *)((int)pvVar11 + 0xa0) = uVar12;\n    *(int *)((int)pvVar11 + 0x9c) = (int)_Var3;\n    uVar14 = param_1[0xb];\n    if ((uVar14 & 4) == 0) {\n      *(void **)((int)pvVar11 + 0x18) = (void *)((int)pvVar11 + 0xa4);\n    }\n    else {\n      *(undefined4 *)((int)pvVar11 + 0x18) = *(undefined4 *)((int)pvVar11 + 0x1c);\n      memmove(local_38,(void *)((int)pvVar11 + 0xa4),*(int *)((int)pvVar11 + 0x34) + 1);\n      uVar14 = param_1[0xb];\n    }\n    if ((param_1[10] == 0) || ((uVar14 & 0x400) != 0)) {\n      uVar18 = pdVar9->d_type - 1;\n      if (((uVar14 & 0x18) == 0x18) && ((pdVar9->d_type & 0xfb) != 0)) {\n        *(undefined2 *)((int)pvVar11 + 0x3c) = 0xb;\n        if (uVar18 < 0xc) {\n          *(undefined4 *)((int)pvVar11 + 0x54) = *(undefined4 *)(&DAT_0001e180 + uVar18 * 4);\n          uVar12 = 1;\n        }\n        else {\n          *(undefined4 *)((int)pvVar11 + 0x54) = 0;\n          uVar12 = 1;\n        }\n      }\n      else {\n        *(undefined2 *)((int)pvVar11 + 0x3c) = 0xb;\n        if (uVar18 < 0xc) {\n          *(undefined4 *)((int)pvVar11 + 0x54) = *(undefined4 *)(&DAT_0001e180 + uVar18 * 4);\n          uVar12 = 2;\n        }\n        else {\n          *(undefined4 *)((int)pvVar11 + 0x54) = 0;\n          uVar12 = 2;\n        }\n      }\n      *(undefined4 *)((int)pvVar11 + 0x70) = uVar12;\n      *(undefined4 *)((int)pvVar11 + 0x74) = 0;\n    }\n    else {\n      uVar6 = FUN_00018640();\n      *(undefined2 *)((int)pvVar11 + 0x3c) = uVar6;\n    }\n    *(undefined4 *)((int)pvVar11 + 8) = 0;\n    pvVar16 = pvVar11;\n    if (local_48 != (void *)0x0) {\n      *(void **)((int)local_54 + 8) = pvVar11;\n      pvVar16 = local_48;\n    }\n    local_48 = pvVar16;\n    local_54 = pvVar11;\n    if (local_5c == 10000) {\n      if ((param_1[10] != 0) ||\n         (((iVar15 = FUN_00018a00(), iVar15 != 0x6969 && (iVar15 != 0x1021994)) &&\n          (bVar2 = true, iVar15 != -0xacb2be)))) {\n        local_5c = 0x2711;\n        goto LAB_000193a8;\n      }\n      bVar2 = false;\n    }\n    local_5c = local_5c + 1;\n  } while (local_5c < local_34);" statement_identifier : (do_statement "do {\n    do {\n      pDVar13 = *(DIR **)(iVar1 + 0xc);\n      if (pDVar13 == (DIR *)0x0) goto LAB_00019641;\n      piVar8 = __errno_location();\n      *piVar8 = 0;\n      pdVar9 = readdir64(pDVar13);\n      if (pdVar9 == (dirent64 *)0x0) {\n        if (*piVar8 != 0) {\n          *(int *)(iVar1 + 0x20) = *piVar8;\n          *(ushort *)(iVar1 + 0x3c) =\n               (-(ushort)(__dirp == (DIR *)0x0 && local_5c == 0) & 0xfffd) + 7;\n        }\n        if (*(DIR **)(iVar1 + 0xc) != (DIR *)0x0) {\n          closedir(*(DIR **)(iVar1 + 0xc));\n          *(undefined4 *)(iVar1 + 0xc) = 0;\n        }\n        goto LAB_00019641;\n      }\n    } while ((((*(byte *)(param_1 + 0xb) & 0x20) == 0) && (pdVar9->d_name[0] == '.')) &&\n            ((pdVar9->d_name[1] == '\0' || (*(short *)(pdVar9->d_name + 1) == 0x2e))));\n    sVar10 = strlen(pdVar9->d_name);\n    pvVar11 = (void *)FUN_000188d0();\n    if (pvVar11 == (void *)0x0) {\nLAB_00019910:\n      iVar7 = *piVar8;\n      free(pvVar11);\n      FUN_00018960();\n      closedir(*(DIR **)(iVar1 + 0xc));\n      *(undefined4 *)(iVar1 + 0xc) = 0;\n      *(undefined2 *)(iVar1 + 0x3c) = 7;\n      param_1[0xb] = param_1[0xb] | 0x4000;\n      *piVar8 = iVar7;\n      return (void *)0x0;\n    }\n    if (local_44 <= sVar10) {\n      iVar15 = param_1[5];\n      cVar5 = FUN_00018cc0();\n      if (cVar5 == '\0') goto LAB_00019910;\n      puVar4 = local_38;\n      if ((param_1[5] != iVar15) &&\n         (local_1f = cVar5, puVar4 = (undefined1 *)(param_1[5] + local_4c),\n         (*(byte *)(param_1 + 0xb) & 4) == 0)) {\n        puVar4 = local_38;\n      }\n      local_38 = puVar4;\n      local_44 = param_1[8] - local_4c;\n    }\n    if (CARRY4(sVar10,local_4c)) {\n      free(pvVar11);\n      FUN_00018960();\n      closedir(*(DIR **)(iVar1 + 0xc));\n      *(undefined4 *)(iVar1 + 0xc) = 0;\n      *(undefined2 *)(iVar1 + 0x3c) = 7;\n      param_1[0xb] = param_1[0xb] | 0x4000;\n      *piVar8 = 0x24;\n      return (void *)0x0;\n    }\n    uVar12 = *(undefined4 *)((int)&pdVar9->d_ino + 4);\n    *(int *)((int)pvVar11 + 0x30) = iVar7 + 1;\n    iVar15 = *param_1;\n    *(size_t *)((int)pvVar11 + 0x28) = sVar10 + local_4c;\n    *(int *)((int)pvVar11 + 4) = iVar15;\n    _Var3 = pdVar9->d_ino;\n    *(undefined4 *)((int)pvVar11 + 0xa0) = uVar12;\n    *(int *)((int)pvVar11 + 0x9c) = (int)_Var3;\n    uVar14 = param_1[0xb];\n    if ((uVar14 & 4) == 0) {\n      *(void **)((int)pvVar11 + 0x18) = (void *)((int)pvVar11 + 0xa4);\n    }\n    else {\n      *(undefined4 *)((int)pvVar11 + 0x18) = *(undefined4 *)((int)pvVar11 + 0x1c);\n      memmove(local_38,(void *)((int)pvVar11 + 0xa4),*(int *)((int)pvVar11 + 0x34) + 1);\n      uVar14 = param_1[0xb];\n    }\n    if ((param_1[10] == 0) || ((uVar14 & 0x400) != 0)) {\n      uVar18 = pdVar9->d_type - 1;\n      if (((uVar14 & 0x18) == 0x18) && ((pdVar9->d_type & 0xfb) != 0)) {\n        *(undefined2 *)((int)pvVar11 + 0x3c) = 0xb;\n        if (uVar18 < 0xc) {\n          *(undefined4 *)((int)pvVar11 + 0x54) = *(undefined4 *)(&DAT_0001e180 + uVar18 * 4);\n          uVar12 = 1;\n        }\n        else {\n          *(undefined4 *)((int)pvVar11 + 0x54) = 0;\n          uVar12 = 1;\n        }\n      }\n      else {\n        *(undefined2 *)((int)pvVar11 + 0x3c) = 0xb;\n        if (uVar18 < 0xc) {\n          *(undefined4 *)((int)pvVar11 + 0x54) = *(undefined4 *)(&DAT_0001e180 + uVar18 * 4);\n          uVar12 = 2;\n        }\n        else {\n          *(undefined4 *)((int)pvVar11 + 0x54) = 0;\n          uVar12 = 2;\n        }\n      }\n      *(undefined4 *)((int)pvVar11 + 0x70) = uVar12;\n      *(undefined4 *)((int)pvVar11 + 0x74) = 0;\n    }\n    else {\n      uVar6 = FUN_00018640();\n      *(undefined2 *)((int)pvVar11 + 0x3c) = uVar6;\n    }\n    *(undefined4 *)((int)pvVar11 + 8) = 0;\n    pvVar16 = pvVar11;\n    if (local_48 != (void *)0x0) {\n      *(void **)((int)local_54 + 8) = pvVar11;\n      pvVar16 = local_48;\n    }\n    local_48 = pvVar16;\n    local_54 = pvVar11;\n    if (local_5c == 10000) {\n      if ((param_1[10] != 0) ||\n         (((iVar15 = FUN_00018a00(), iVar15 != 0x6969 && (iVar15 != 0x1021994)) &&\n          (bVar2 = true, iVar15 != -0xacb2be)))) {\n        local_5c = 0x2711;\n        goto LAB_000193a8;\n      }\n      bVar2 = false;\n    }\n    local_5c = local_5c + 1;\n  } while (local_5c < local_34);" do (compound_statement "{\n    do {\n      pDVar13 = *(DIR **)(iVar1 + 0xc);\n      if (pDVar13 == (DIR *)0x0) goto LAB_00019641;\n      piVar8 = __errno_location();\n      *piVar8 = 0;\n      pdVar9 = readdir64(pDVar13);\n      if (pdVar9 == (dirent64 *)0x0) {\n        if (*piVar8 != 0) {\n          *(int *)(iVar1 + 0x20) = *piVar8;\n          *(ushort *)(iVar1 + 0x3c) =\n               (-(ushort)(__dirp == (DIR *)0x0 && local_5c == 0) & 0xfffd) + 7;\n        }\n        if (*(DIR **)(iVar1 + 0xc) != (DIR *)0x0) {\n          closedir(*(DIR **)(iVar1 + 0xc));\n          *(undefined4 *)(iVar1 + 0xc) = 0;\n        }\n        goto LAB_00019641;\n      }\n    } while ((((*(byte *)(param_1 + 0xb) & 0x20) == 0) && (pdVar9->d_name[0] == '.')) &&\n            ((pdVar9->d_name[1] == '\0' || (*(short *)(pdVar9->d_name + 1) == 0x2e))));\n    sVar10 = strlen(pdVar9->d_name);\n    pvVar11 = (void *)FUN_000188d0();\n    if (pvVar11 == (void *)0x0) {\nLAB_00019910:\n      iVar7 = *piVar8;\n      free(pvVar11);\n      FUN_00018960();\n      closedir(*(DIR **)(iVar1 + 0xc));\n      *(undefined4 *)(iVar1 + 0xc) = 0;\n      *(undefined2 *)(iVar1 + 0x3c) = 7;\n      param_1[0xb] = param_1[0xb] | 0x4000;\n      *piVar8 = iVar7;\n      return (void *)0x0;\n    }\n    if (local_44 <= sVar10) {\n      iVar15 = param_1[5];\n      cVar5 = FUN_00018cc0();\n      if (cVar5 == '\0') goto LAB_00019910;\n      puVar4 = local_38;\n      if ((param_1[5] != iVar15) &&\n         (local_1f = cVar5, puVar4 = (undefined1 *)(param_1[5] + local_4c),\n         (*(byte *)(param_1 + 0xb) & 4) == 0)) {\n        puVar4 = local_38;\n      }\n      local_38 = puVar4;\n      local_44 = param_1[8] - local_4c;\n    }\n    if (CARRY4(sVar10,local_4c)) {\n      free(pvVar11);\n      FUN_00018960();\n      closedir(*(DIR **)(iVar1 + 0xc));\n      *(undefined4 *)(iVar1 + 0xc) = 0;\n      *(undefined2 *)(iVar1 + 0x3c) = 7;\n      param_1[0xb] = param_1[0xb] | 0x4000;\n      *piVar8 = 0x24;\n      return (void *)0x0;\n    }\n    uVar12 = *(undefined4 *)((int)&pdVar9->d_ino + 4);\n    *(int *)((int)pvVar11 + 0x30) = iVar7 + 1;\n    iVar15 = *param_1;\n    *(size_t *)((int)pvVar11 + 0x28) = sVar10 + local_4c;\n    *(int *)((int)pvVar11 + 4) = iVar15;\n    _Var3 = pdVar9->d_ino;\n    *(undefined4 *)((int)pvVar11 + 0xa0) = uVar12;\n    *(int *)((int)pvVar11 + 0x9c) = (int)_Var3;\n    uVar14 = param_1[0xb];\n    if ((uVar14 & 4) == 0) {\n      *(void **)((int)pvVar11 + 0x18) = (void *)((int)pvVar11 + 0xa4);\n    }\n    else {\n      *(undefined4 *)((int)pvVar11 + 0x18) = *(undefined4 *)((int)pvVar11 + 0x1c);\n      memmove(local_38,(void *)((int)pvVar11 + 0xa4),*(int *)((int)pvVar11 + 0x34) + 1);\n      uVar14 = param_1[0xb];\n    }\n    if ((param_1[10] == 0) || ((uVar14 & 0x400) != 0)) {\n      uVar18 = pdVar9->d_type - 1;\n      if (((uVar14 & 0x18) == 0x18) && ((pdVar9->d_type & 0xfb) != 0)) {\n        *(undefined2 *)((int)pvVar11 + 0x3c) = 0xb;\n        if (uVar18 < 0xc) {\n          *(undefined4 *)((int)pvVar11 + 0x54) = *(undefined4 *)(&DAT_0001e180 + uVar18 * 4);\n          uVar12 = 1;\n        }\n        else {\n          *(undefined4 *)((int)pvVar11 + 0x54) = 0;\n          uVar12 = 1;\n        }\n      }\n      else {\n        *(undefined2 *)((int)pvVar11 + 0x3c) = 0xb;\n        if (uVar18 < 0xc) {\n          *(undefined4 *)((int)pvVar11 + 0x54) = *(undefined4 *)(&DAT_0001e180 + uVar18 * 4);\n          uVar12 = 2;\n        }\n        else {\n          *(undefined4 *)((int)pvVar11 + 0x54) = 0;\n          uVar12 = 2;\n        }\n      }\n      *(undefined4 *)((int)pvVar11 + 0x70) = uVar12;\n      *(undefined4 *)((int)pvVar11 + 0x74) = 0;\n    }\n    else {\n      uVar6 = FUN_00018640();\n      *(undefined2 *)((int)pvVar11 + 0x3c) = uVar6;\n    }\n    *(undefined4 *)((int)pvVar11 + 8) = 0;\n    pvVar16 = pvVar11;\n    if (local_48 != (void *)0x0) {\n      *(void **)((int)local_54 + 8) = pvVar11;\n      pvVar16 = local_48;\n    }\n    local_48 = pvVar16;\n    local_54 = pvVar11;\n    if (local_5c == 10000) {\n      if ((param_1[10] != 0) ||\n         (((iVar15 = FUN_00018a00(), iVar15 != 0x6969 && (iVar15 != 0x1021994)) &&\n          (bVar2 = true, iVar15 != -0xacb2be)))) {\n        local_5c = 0x2711;\n        goto LAB_000193a8;\n      }\n      bVar2 = false;\n    }\n    local_5c = local_5c + 1;\n  }" { (do_statement "do {\n      pDVar13 = *(DIR **)(iVar1 + 0xc);\n      if (pDVar13 == (DIR *)0x0) goto LAB_00019641;\n      piVar8 = __errno_location();\n      *piVar8 = 0;\n      pdVar9 = readdir64(pDVar13);\n      if (pdVar9 == (dirent64 *)0x0) {\n        if (*piVar8 != 0) {\n          *(int *)(iVar1 + 0x20) = *piVar8;\n          *(ushort *)(iVar1 + 0x3c) =\n               (-(ushort)(__dirp == (DIR *)0x0 && local_5c == 0) & 0xfffd) + 7;\n        }\n        if (*(DIR **)(iVar1 + 0xc) != (DIR *)0x0) {\n          closedir(*(DIR **)(iVar1 + 0xc));\n          *(undefined4 *)(iVar1 + 0xc) = 0;\n        }\n        goto LAB_00019641;\n      }\n    } while ((((*(byte *)(param_1 + 0xb) & 0x20) == 0) && (pdVar9->d_name[0] == '.')) &&\n            ((pdVar9->d_name[1] == '\0' || (*(short *)(pdVar9->d_name + 1) == 0x2e))));" do (compound_statement "{\n      pDVar13 = *(DIR **)(iVar1 + 0xc);\n      if (pDVar13 == (DIR *)0x0) goto LAB_00019641;\n      piVar8 = __errno_location();\n      *piVar8 = 0;\n      pdVar9 = readdir64(pDVar13);\n      if (pdVar9 == (dirent64 *)0x0) {\n        if (*piVar8 != 0) {\n          *(int *)(iVar1 + 0x20) = *piVar8;\n          *(ushort *)(iVar1 + 0x3c) =\n               (-(ushort)(__dirp == (DIR *)0x0 && local_5c == 0) & 0xfffd) + 7;\n        }\n        if (*(DIR **)(iVar1 + 0xc) != (DIR *)0x0) {\n          closedir(*(DIR **)(iVar1 + 0xc));\n          *(undefined4 *)(iVar1 + 0xc) = 0;\n        }\n        goto LAB_00019641;\n      }\n    }" { (expression_statement "pDVar13 = *(DIR **)(iVar1 + 0xc);" (assignment_expression "pDVar13 = *(DIR **)(iVar1 + 0xc)" identifier = (pointer_expression "*(DIR **)(iVar1 + 0xc)" * (cast_expression "(DIR **)(iVar1 + 0xc)" ( (type_descriptor "DIR **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar1 + 0xc)" ( (binary_expression "iVar1 + 0xc" identifier + number_literal) ))))) ;) (if_statement "if (pDVar13 == (DIR *)0x0) goto LAB_00019641;" if (parenthesized_expression "(pDVar13 == (DIR *)0x0)" ( (binary_expression "pDVar13 == (DIR *)0x0" identifier == (cast_expression "(DIR *)0x0" ( (type_descriptor "DIR *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00019641;" goto statement_identifier ;)) (expression_statement "piVar8 = __errno_location();" (assignment_expression "piVar8 = __errno_location()" identifier = (call_expression "__errno_location()" identifier (argument_list "()" ( )))) ;) (expression_statement "*piVar8 = 0;" (assignment_expression "*piVar8 = 0" (pointer_expression "*piVar8" * identifier) = number_literal) ;) (expression_statement "pdVar9 = readdir64(pDVar13);" (assignment_expression "pdVar9 = readdir64(pDVar13)" identifier = (call_expression "readdir64(pDVar13)" identifier (argument_list "(pDVar13)" ( identifier )))) ;) (if_statement "if (pdVar9 == (dirent64 *)0x0) {\n        if (*piVar8 != 0) {\n          *(int *)(iVar1 + 0x20) = *piVar8;\n          *(ushort *)(iVar1 + 0x3c) =\n               (-(ushort)(__dirp == (DIR *)0x0 && local_5c == 0) & 0xfffd) + 7;\n        }\n        if (*(DIR **)(iVar1 + 0xc) != (DIR *)0x0) {\n          closedir(*(DIR **)(iVar1 + 0xc));\n          *(undefined4 *)(iVar1 + 0xc) = 0;\n        }\n        goto LAB_00019641;\n      }" if (parenthesized_expression "(pdVar9 == (dirent64 *)0x0)" ( (binary_expression "pdVar9 == (dirent64 *)0x0" identifier == (cast_expression "(dirent64 *)0x0" ( (type_descriptor "dirent64 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        if (*piVar8 != 0) {\n          *(int *)(iVar1 + 0x20) = *piVar8;\n          *(ushort *)(iVar1 + 0x3c) =\n               (-(ushort)(__dirp == (DIR *)0x0 && local_5c == 0) & 0xfffd) + 7;\n        }\n        if (*(DIR **)(iVar1 + 0xc) != (DIR *)0x0) {\n          closedir(*(DIR **)(iVar1 + 0xc));\n          *(undefined4 *)(iVar1 + 0xc) = 0;\n        }\n        goto LAB_00019641;\n      }" { (if_statement "if (*piVar8 != 0) {\n          *(int *)(iVar1 + 0x20) = *piVar8;\n          *(ushort *)(iVar1 + 0x3c) =\n               (-(ushort)(__dirp == (DIR *)0x0 && local_5c == 0) & 0xfffd) + 7;\n        }" if (parenthesized_expression "(*piVar8 != 0)" ( (binary_expression "*piVar8 != 0" (pointer_expression "*piVar8" * identifier) != number_literal) )) (compound_statement "{\n          *(int *)(iVar1 + 0x20) = *piVar8;\n          *(ushort *)(iVar1 + 0x3c) =\n               (-(ushort)(__dirp == (DIR *)0x0 && local_5c == 0) & 0xfffd) + 7;\n        }" { (expression_statement "*(int *)(iVar1 + 0x20) = *piVar8;" (assignment_expression "*(int *)(iVar1 + 0x20) = *piVar8" (pointer_expression "*(int *)(iVar1 + 0x20)" * (cast_expression "(int *)(iVar1 + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x20)" ( (binary_expression "iVar1 + 0x20" identifier + number_literal) )))) = (pointer_expression "*piVar8" * identifier)) ;) (expression_statement "*(ushort *)(iVar1 + 0x3c) =\n               (-(ushort)(__dirp == (DIR *)0x0 && local_5c == 0) & 0xfffd) + 7;" (assignment_expression "*(ushort *)(iVar1 + 0x3c) =\n               (-(ushort)(__dirp == (DIR *)0x0 && local_5c == 0) & 0xfffd) + 7" (pointer_expression "*(ushort *)(iVar1 + 0x3c)" * (cast_expression "(ushort *)(iVar1 + 0x3c)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x3c)" ( (binary_expression "iVar1 + 0x3c" identifier + number_literal) )))) = (binary_expression "(-(ushort)(__dirp == (DIR *)0x0 && local_5c == 0) & 0xfffd) + 7" (parenthesized_expression "(-(ushort)(__dirp == (DIR *)0x0 && local_5c == 0) & 0xfffd)" ( (binary_expression "-(ushort)(__dirp == (DIR *)0x0 && local_5c == 0) & 0xfffd" (unary_expression "-(ushort)(__dirp == (DIR *)0x0 && local_5c == 0)" - (call_expression "(ushort)(__dirp == (DIR *)0x0 && local_5c == 0)" (parenthesized_expression "(ushort)" ( identifier )) (argument_list "(__dirp == (DIR *)0x0 && local_5c == 0)" ( (binary_expression "__dirp == (DIR *)0x0 && local_5c == 0" (binary_expression "__dirp == (DIR *)0x0" identifier == (cast_expression "(DIR *)0x0" ( (type_descriptor "DIR *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) && (binary_expression "local_5c == 0" identifier == number_literal)) )))) & number_literal) )) + number_literal)) ;) })) (if_statement "if (*(DIR **)(iVar1 + 0xc) != (DIR *)0x0) {\n          closedir(*(DIR **)(iVar1 + 0xc));\n          *(undefined4 *)(iVar1 + 0xc) = 0;\n        }" if (parenthesized_expression "(*(DIR **)(iVar1 + 0xc) != (DIR *)0x0)" ( (binary_expression "*(DIR **)(iVar1 + 0xc) != (DIR *)0x0" (pointer_expression "*(DIR **)(iVar1 + 0xc)" * (cast_expression "(DIR **)(iVar1 + 0xc)" ( (type_descriptor "DIR **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar1 + 0xc)" ( (binary_expression "iVar1 + 0xc" identifier + number_literal) )))) != (cast_expression "(DIR *)0x0" ( (type_descriptor "DIR *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          closedir(*(DIR **)(iVar1 + 0xc));\n          *(undefined4 *)(iVar1 + 0xc) = 0;\n        }" { (expression_statement "closedir(*(DIR **)(iVar1 + 0xc));" (call_expression "closedir(*(DIR **)(iVar1 + 0xc))" identifier (argument_list "(*(DIR **)(iVar1 + 0xc))" ( (pointer_expression "*(DIR **)(iVar1 + 0xc)" * (cast_expression "(DIR **)(iVar1 + 0xc)" ( (type_descriptor "DIR **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar1 + 0xc)" ( (binary_expression "iVar1 + 0xc" identifier + number_literal) )))) ))) ;) (expression_statement "*(undefined4 *)(iVar1 + 0xc) = 0;" (assignment_expression "*(undefined4 *)(iVar1 + 0xc) = 0" (pointer_expression "*(undefined4 *)(iVar1 + 0xc)" * (cast_expression "(undefined4 *)(iVar1 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0xc)" ( (binary_expression "iVar1 + 0xc" identifier + number_literal) )))) = number_literal) ;) })) (goto_statement "goto LAB_00019641;" goto statement_identifier ;) })) }) while (parenthesized_expression "((((*(byte *)(param_1 + 0xb) & 0x20) == 0) && (pdVar9->d_name[0] == '.')) &&\n            ((pdVar9->d_name[1] == '\0' || (*(short *)(pdVar9->d_name + 1) == 0x2e))))" ( (binary_expression "(((*(byte *)(param_1 + 0xb) & 0x20) == 0) && (pdVar9->d_name[0] == '.')) &&\n            ((pdVar9->d_name[1] == '\0' || (*(short *)(pdVar9->d_name + 1) == 0x2e)))" (parenthesized_expression "(((*(byte *)(param_1 + 0xb) & 0x20) == 0) && (pdVar9->d_name[0] == '.'))" ( (binary_expression "((*(byte *)(param_1 + 0xb) & 0x20) == 0) && (pdVar9->d_name[0] == '.')" (parenthesized_expression "((*(byte *)(param_1 + 0xb) & 0x20) == 0)" ( (binary_expression "(*(byte *)(param_1 + 0xb) & 0x20) == 0" (parenthesized_expression "(*(byte *)(param_1 + 0xb) & 0x20)" ( (binary_expression "*(byte *)(param_1 + 0xb) & 0x20" (pointer_expression "*(byte *)(param_1 + 0xb)" * (cast_expression "(byte *)(param_1 + 0xb)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xb)" ( (binary_expression "param_1 + 0xb" identifier + number_literal) )))) & number_literal) )) == number_literal) )) && (parenthesized_expression "(pdVar9->d_name[0] == '.')" ( (binary_expression "pdVar9->d_name[0] == '.'" (subscript_expression "pdVar9->d_name[0]" (field_expression "pdVar9->d_name" identifier -> field_identifier) [ number_literal ]) == (char_literal "'.'" ' character ')) ))) )) && (parenthesized_expression "((pdVar9->d_name[1] == '\0' || (*(short *)(pdVar9->d_name + 1) == 0x2e)))" ( (parenthesized_expression "(pdVar9->d_name[1] == '\0' || (*(short *)(pdVar9->d_name + 1) == 0x2e))" ( (binary_expression "pdVar9->d_name[1] == '\0' || (*(short *)(pdVar9->d_name + 1) == 0x2e)" (binary_expression "pdVar9->d_name[1] == '\0'" (subscript_expression "pdVar9->d_name[1]" (field_expression "pdVar9->d_name" identifier -> field_identifier) [ number_literal ]) == (char_literal "'\0'" ' escape_sequence ')) || (parenthesized_expression "(*(short *)(pdVar9->d_name + 1) == 0x2e)" ( (binary_expression "*(short *)(pdVar9->d_name + 1) == 0x2e" (pointer_expression "*(short *)(pdVar9->d_name + 1)" * (cast_expression "(short *)(pdVar9->d_name + 1)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pdVar9->d_name + 1)" ( (binary_expression "pdVar9->d_name + 1" (field_expression "pdVar9->d_name" identifier -> field_identifier) + number_literal) )))) == number_literal) ))) )) ))) )) ;) (expression_statement "sVar10 = strlen(pdVar9->d_name);" (assignment_expression "sVar10 = strlen(pdVar9->d_name)" identifier = (call_expression "strlen(pdVar9->d_name)" identifier (argument_list "(pdVar9->d_name)" ( (field_expression "pdVar9->d_name" identifier -> field_identifier) )))) ;) (expression_statement "pvVar11 = (void *)FUN_000188d0();" (assignment_expression "pvVar11 = (void *)FUN_000188d0()" identifier = (cast_expression "(void *)FUN_000188d0()" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_000188d0()" identifier (argument_list "()" ( ))))) ;) (if_statement "if (pvVar11 == (void *)0x0) {\nLAB_00019910:\n      iVar7 = *piVar8;\n      free(pvVar11);\n      FUN_00018960();\n      closedir(*(DIR **)(iVar1 + 0xc));\n      *(undefined4 *)(iVar1 + 0xc) = 0;\n      *(undefined2 *)(iVar1 + 0x3c) = 7;\n      param_1[0xb] = param_1[0xb] | 0x4000;\n      *piVar8 = iVar7;\n      return (void *)0x0;\n    }" if (parenthesized_expression "(pvVar11 == (void *)0x0)" ( (binary_expression "pvVar11 == (void *)0x0" identifier == (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nLAB_00019910:\n      iVar7 = *piVar8;\n      free(pvVar11);\n      FUN_00018960();\n      closedir(*(DIR **)(iVar1 + 0xc));\n      *(undefined4 *)(iVar1 + 0xc) = 0;\n      *(undefined2 *)(iVar1 + 0x3c) = 7;\n      param_1[0xb] = param_1[0xb] | 0x4000;\n      *piVar8 = iVar7;\n      return (void *)0x0;\n    }" { (labeled_statement "LAB_00019910:\n      iVar7 = *piVar8;" statement_identifier : (expression_statement "iVar7 = *piVar8;" (assignment_expression "iVar7 = *piVar8" identifier = (pointer_expression "*piVar8" * identifier)) ;)) (expression_statement "free(pvVar11);" (call_expression "free(pvVar11)" identifier (argument_list "(pvVar11)" ( identifier ))) ;) (expression_statement "FUN_00018960();" (call_expression "FUN_00018960()" identifier (argument_list "()" ( ))) ;) (expression_statement "closedir(*(DIR **)(iVar1 + 0xc));" (call_expression "closedir(*(DIR **)(iVar1 + 0xc))" identifier (argument_list "(*(DIR **)(iVar1 + 0xc))" ( (pointer_expression "*(DIR **)(iVar1 + 0xc)" * (cast_expression "(DIR **)(iVar1 + 0xc)" ( (type_descriptor "DIR **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar1 + 0xc)" ( (binary_expression "iVar1 + 0xc" identifier + number_literal) )))) ))) ;) (expression_statement "*(undefined4 *)(iVar1 + 0xc) = 0;" (assignment_expression "*(undefined4 *)(iVar1 + 0xc) = 0" (pointer_expression "*(undefined4 *)(iVar1 + 0xc)" * (cast_expression "(undefined4 *)(iVar1 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0xc)" ( (binary_expression "iVar1 + 0xc" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined2 *)(iVar1 + 0x3c) = 7;" (assignment_expression "*(undefined2 *)(iVar1 + 0x3c) = 7" (pointer_expression "*(undefined2 *)(iVar1 + 0x3c)" * (cast_expression "(undefined2 *)(iVar1 + 0x3c)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x3c)" ( (binary_expression "iVar1 + 0x3c" identifier + number_literal) )))) = number_literal) ;) (expression_statement "param_1[0xb] = param_1[0xb] | 0x4000;" (assignment_expression "param_1[0xb] = param_1[0xb] | 0x4000" (subscript_expression "param_1[0xb]" identifier [ number_literal ]) = (binary_expression "param_1[0xb] | 0x4000" (subscript_expression "param_1[0xb]" identifier [ number_literal ]) | number_literal)) ;) (expression_statement "*piVar8 = iVar7;" (assignment_expression "*piVar8 = iVar7" (pointer_expression "*piVar8" * identifier) = identifier) ;) (return_statement "return (void *)0x0;" return (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (if_statement "if (local_44 <= sVar10) {\n      iVar15 = param_1[5];\n      cVar5 = FUN_00018cc0();\n      if (cVar5 == '\0') goto LAB_00019910;\n      puVar4 = local_38;\n      if ((param_1[5] != iVar15) &&\n         (local_1f = cVar5, puVar4 = (undefined1 *)(param_1[5] + local_4c),\n         (*(byte *)(param_1 + 0xb) & 4) == 0)) {\n        puVar4 = local_38;\n      }\n      local_38 = puVar4;\n      local_44 = param_1[8] - local_4c;\n    }" if (parenthesized_expression "(local_44 <= sVar10)" ( (binary_expression "local_44 <= sVar10" identifier <= identifier) )) (compound_statement "{\n      iVar15 = param_1[5];\n      cVar5 = FUN_00018cc0();\n      if (cVar5 == '\0') goto LAB_00019910;\n      puVar4 = local_38;\n      if ((param_1[5] != iVar15) &&\n         (local_1f = cVar5, puVar4 = (undefined1 *)(param_1[5] + local_4c),\n         (*(byte *)(param_1 + 0xb) & 4) == 0)) {\n        puVar4 = local_38;\n      }\n      local_38 = puVar4;\n      local_44 = param_1[8] - local_4c;\n    }" { (expression_statement "iVar15 = param_1[5];" (assignment_expression "iVar15 = param_1[5]" identifier = (subscript_expression "param_1[5]" identifier [ number_literal ])) ;) (expression_statement "cVar5 = FUN_00018cc0();" (assignment_expression "cVar5 = FUN_00018cc0()" identifier = (call_expression "FUN_00018cc0()" identifier (argument_list "()" ( )))) ;) (if_statement "if (cVar5 == '\0') goto LAB_00019910;" if (parenthesized_expression "(cVar5 == '\0')" ( (binary_expression "cVar5 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_00019910;" goto statement_identifier ;)) (expression_statement "puVar4 = local_38;" (assignment_expression "puVar4 = local_38" identifier = identifier) ;) (if_statement "if ((param_1[5] != iVar15) &&\n         (local_1f = cVar5, puVar4 = (undefined1 *)(param_1[5] + local_4c),\n         (*(byte *)(param_1 + 0xb) & 4) == 0)) {\n        puVar4 = local_38;\n      }" if (parenthesized_expression "((param_1[5] != iVar15) &&\n         (local_1f = cVar5, puVar4 = (undefined1 *)(param_1[5] + local_4c),\n         (*(byte *)(param_1 + 0xb) & 4) == 0))" ( (binary_expression "(param_1[5] != iVar15) &&\n         (local_1f = cVar5, puVar4 = (undefined1 *)(param_1[5] + local_4c),\n         (*(byte *)(param_1 + 0xb) & 4) == 0)" (parenthesized_expression "(param_1[5] != iVar15)" ( (binary_expression "param_1[5] != iVar15" (subscript_expression "param_1[5]" identifier [ number_literal ]) != identifier) )) && (parenthesized_expression "(local_1f = cVar5, puVar4 = (undefined1 *)(param_1[5] + local_4c),\n         (*(byte *)(param_1 + 0xb) & 4) == 0)" ( (comma_expression "local_1f = cVar5, puVar4 = (undefined1 *)(param_1[5] + local_4c),\n         (*(byte *)(param_1 + 0xb) & 4) == 0" (assignment_expression "local_1f = cVar5" identifier = identifier) , (comma_expression "puVar4 = (undefined1 *)(param_1[5] + local_4c),\n         (*(byte *)(param_1 + 0xb) & 4) == 0" (assignment_expression "puVar4 = (undefined1 *)(param_1[5] + local_4c)" identifier = (cast_expression "(undefined1 *)(param_1[5] + local_4c)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1[5] + local_4c)" ( (binary_expression "param_1[5] + local_4c" (subscript_expression "param_1[5]" identifier [ number_literal ]) + identifier) )))) , (binary_expression "(*(byte *)(param_1 + 0xb) & 4) == 0" (parenthesized_expression "(*(byte *)(param_1 + 0xb) & 4)" ( (binary_expression "*(byte *)(param_1 + 0xb) & 4" (pointer_expression "*(byte *)(param_1 + 0xb)" * (cast_expression "(byte *)(param_1 + 0xb)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xb)" ( (binary_expression "param_1 + 0xb" identifier + number_literal) )))) & number_literal) )) == number_literal))) ))) )) (compound_statement "{\n        puVar4 = local_38;\n      }" { (expression_statement "puVar4 = local_38;" (assignment_expression "puVar4 = local_38" identifier = identifier) ;) })) (expression_statement "local_38 = puVar4;" (assignment_expression "local_38 = puVar4" identifier = identifier) ;) (expression_statement "local_44 = param_1[8] - local_4c;" (assignment_expression "local_44 = param_1[8] - local_4c" identifier = (binary_expression "param_1[8] - local_4c" (subscript_expression "param_1[8]" identifier [ number_literal ]) - identifier)) ;) })) (if_statement "if (CARRY4(sVar10,local_4c)) {\n      free(pvVar11);\n      FUN_00018960();\n      closedir(*(DIR **)(iVar1 + 0xc));\n      *(undefined4 *)(iVar1 + 0xc) = 0;\n      *(undefined2 *)(iVar1 + 0x3c) = 7;\n      param_1[0xb] = param_1[0xb] | 0x4000;\n      *piVar8 = 0x24;\n      return (void *)0x0;\n    }" if (parenthesized_expression "(CARRY4(sVar10,local_4c))" ( (call_expression "CARRY4(sVar10,local_4c)" identifier (argument_list "(sVar10,local_4c)" ( identifier , identifier ))) )) (compound_statement "{\n      free(pvVar11);\n      FUN_00018960();\n      closedir(*(DIR **)(iVar1 + 0xc));\n      *(undefined4 *)(iVar1 + 0xc) = 0;\n      *(undefined2 *)(iVar1 + 0x3c) = 7;\n      param_1[0xb] = param_1[0xb] | 0x4000;\n      *piVar8 = 0x24;\n      return (void *)0x0;\n    }" { (expression_statement "free(pvVar11);" (call_expression "free(pvVar11)" identifier (argument_list "(pvVar11)" ( identifier ))) ;) (expression_statement "FUN_00018960();" (call_expression "FUN_00018960()" identifier (argument_list "()" ( ))) ;) (expression_statement "closedir(*(DIR **)(iVar1 + 0xc));" (call_expression "closedir(*(DIR **)(iVar1 + 0xc))" identifier (argument_list "(*(DIR **)(iVar1 + 0xc))" ( (pointer_expression "*(DIR **)(iVar1 + 0xc)" * (cast_expression "(DIR **)(iVar1 + 0xc)" ( (type_descriptor "DIR **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar1 + 0xc)" ( (binary_expression "iVar1 + 0xc" identifier + number_literal) )))) ))) ;) (expression_statement "*(undefined4 *)(iVar1 + 0xc) = 0;" (assignment_expression "*(undefined4 *)(iVar1 + 0xc) = 0" (pointer_expression "*(undefined4 *)(iVar1 + 0xc)" * (cast_expression "(undefined4 *)(iVar1 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0xc)" ( (binary_expression "iVar1 + 0xc" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined2 *)(iVar1 + 0x3c) = 7;" (assignment_expression "*(undefined2 *)(iVar1 + 0x3c) = 7" (pointer_expression "*(undefined2 *)(iVar1 + 0x3c)" * (cast_expression "(undefined2 *)(iVar1 + 0x3c)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x3c)" ( (binary_expression "iVar1 + 0x3c" identifier + number_literal) )))) = number_literal) ;) (expression_statement "param_1[0xb] = param_1[0xb] | 0x4000;" (assignment_expression "param_1[0xb] = param_1[0xb] | 0x4000" (subscript_expression "param_1[0xb]" identifier [ number_literal ]) = (binary_expression "param_1[0xb] | 0x4000" (subscript_expression "param_1[0xb]" identifier [ number_literal ]) | number_literal)) ;) (expression_statement "*piVar8 = 0x24;" (assignment_expression "*piVar8 = 0x24" (pointer_expression "*piVar8" * identifier) = number_literal) ;) (return_statement "return (void *)0x0;" return (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (expression_statement "uVar12 = *(undefined4 *)((int)&pdVar9->d_ino + 4);" (assignment_expression "uVar12 = *(undefined4 *)((int)&pdVar9->d_ino + 4)" identifier = (pointer_expression "*(undefined4 *)((int)&pdVar9->d_ino + 4)" * (cast_expression "(undefined4 *)((int)&pdVar9->d_ino + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&pdVar9->d_ino + 4)" ( (binary_expression "(int)&pdVar9->d_ino + 4" (cast_expression "(int)&pdVar9->d_ino" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&pdVar9->d_ino" & (field_expression "pdVar9->d_ino" identifier -> field_identifier))) + number_literal) ))))) ;) (expression_statement "*(int *)((int)pvVar11 + 0x30) = iVar7 + 1;" (assignment_expression "*(int *)((int)pvVar11 + 0x30) = iVar7 + 1" (pointer_expression "*(int *)((int)pvVar11 + 0x30)" * (cast_expression "(int *)((int)pvVar11 + 0x30)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pvVar11 + 0x30)" ( (binary_expression "(int)pvVar11 + 0x30" (cast_expression "(int)pvVar11" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (binary_expression "iVar7 + 1" identifier + number_literal)) ;) (expression_statement "iVar15 = *param_1;" (assignment_expression "iVar15 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "*(size_t *)((int)pvVar11 + 0x28) = sVar10 + local_4c;" (assignment_expression "*(size_t *)((int)pvVar11 + 0x28) = sVar10 + local_4c" (pointer_expression "*(size_t *)((int)pvVar11 + 0x28)" * (cast_expression "(size_t *)((int)pvVar11 + 0x28)" ( (type_descriptor "size_t *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pvVar11 + 0x28)" ( (binary_expression "(int)pvVar11 + 0x28" (cast_expression "(int)pvVar11" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (binary_expression "sVar10 + local_4c" identifier + identifier)) ;) (expression_statement "*(int *)((int)pvVar11 + 4) = iVar15;" (assignment_expression "*(int *)((int)pvVar11 + 4) = iVar15" (pointer_expression "*(int *)((int)pvVar11 + 4)" * (cast_expression "(int *)((int)pvVar11 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pvVar11 + 4)" ( (binary_expression "(int)pvVar11 + 4" (cast_expression "(int)pvVar11" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "_Var3 = pdVar9->d_ino;" (assignment_expression "_Var3 = pdVar9->d_ino" identifier = (field_expression "pdVar9->d_ino" identifier -> field_identifier)) ;) (expression_statement "*(undefined4 *)((int)pvVar11 + 0xa0) = uVar12;" (assignment_expression "*(undefined4 *)((int)pvVar11 + 0xa0) = uVar12" (pointer_expression "*(undefined4 *)((int)pvVar11 + 0xa0)" * (cast_expression "(undefined4 *)((int)pvVar11 + 0xa0)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pvVar11 + 0xa0)" ( (binary_expression "(int)pvVar11 + 0xa0" (cast_expression "(int)pvVar11" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(int *)((int)pvVar11 + 0x9c) = (int)_Var3;" (assignment_expression "*(int *)((int)pvVar11 + 0x9c) = (int)_Var3" (pointer_expression "*(int *)((int)pvVar11 + 0x9c)" * (cast_expression "(int *)((int)pvVar11 + 0x9c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pvVar11 + 0x9c)" ( (binary_expression "(int)pvVar11 + 0x9c" (cast_expression "(int)pvVar11" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (cast_expression "(int)_Var3" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "uVar14 = param_1[0xb];" (assignment_expression "uVar14 = param_1[0xb]" identifier = (subscript_expression "param_1[0xb]" identifier [ number_literal ])) ;) (if_statement "if ((uVar14 & 4) == 0) {\n      *(void **)((int)pvVar11 + 0x18) = (void *)((int)pvVar11 + 0xa4);\n    }\n    else {\n      *(undefined4 *)((int)pvVar11 + 0x18) = *(undefined4 *)((int)pvVar11 + 0x1c);\n      memmove(local_38,(void *)((int)pvVar11 + 0xa4),*(int *)((int)pvVar11 + 0x34) + 1);\n      uVar14 = param_1[0xb];\n    }" if (parenthesized_expression "((uVar14 & 4) == 0)" ( (binary_expression "(uVar14 & 4) == 0" (parenthesized_expression "(uVar14 & 4)" ( (binary_expression "uVar14 & 4" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n      *(void **)((int)pvVar11 + 0x18) = (void *)((int)pvVar11 + 0xa4);\n    }" { (expression_statement "*(void **)((int)pvVar11 + 0x18) = (void *)((int)pvVar11 + 0xa4);" (assignment_expression "*(void **)((int)pvVar11 + 0x18) = (void *)((int)pvVar11 + 0xa4)" (pointer_expression "*(void **)((int)pvVar11 + 0x18)" * (cast_expression "(void **)((int)pvVar11 + 0x18)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)pvVar11 + 0x18)" ( (binary_expression "(int)pvVar11 + 0x18" (cast_expression "(int)pvVar11" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (cast_expression "(void *)((int)pvVar11 + 0xa4)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pvVar11 + 0xa4)" ( (binary_expression "(int)pvVar11 + 0xa4" (cast_expression "(int)pvVar11" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) }) (else_clause "else {\n      *(undefined4 *)((int)pvVar11 + 0x18) = *(undefined4 *)((int)pvVar11 + 0x1c);\n      memmove(local_38,(void *)((int)pvVar11 + 0xa4),*(int *)((int)pvVar11 + 0x34) + 1);\n      uVar14 = param_1[0xb];\n    }" else (compound_statement "{\n      *(undefined4 *)((int)pvVar11 + 0x18) = *(undefined4 *)((int)pvVar11 + 0x1c);\n      memmove(local_38,(void *)((int)pvVar11 + 0xa4),*(int *)((int)pvVar11 + 0x34) + 1);\n      uVar14 = param_1[0xb];\n    }" { (expression_statement "*(undefined4 *)((int)pvVar11 + 0x18) = *(undefined4 *)((int)pvVar11 + 0x1c);" (assignment_expression "*(undefined4 *)((int)pvVar11 + 0x18) = *(undefined4 *)((int)pvVar11 + 0x1c)" (pointer_expression "*(undefined4 *)((int)pvVar11 + 0x18)" * (cast_expression "(undefined4 *)((int)pvVar11 + 0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pvVar11 + 0x18)" ( (binary_expression "(int)pvVar11 + 0x18" (cast_expression "(int)pvVar11" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (pointer_expression "*(undefined4 *)((int)pvVar11 + 0x1c)" * (cast_expression "(undefined4 *)((int)pvVar11 + 0x1c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pvVar11 + 0x1c)" ( (binary_expression "(int)pvVar11 + 0x1c" (cast_expression "(int)pvVar11" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "memmove(local_38,(void *)((int)pvVar11 + 0xa4),*(int *)((int)pvVar11 + 0x34) + 1);" (call_expression "memmove(local_38,(void *)((int)pvVar11 + 0xa4),*(int *)((int)pvVar11 + 0x34) + 1)" identifier (argument_list "(local_38,(void *)((int)pvVar11 + 0xa4),*(int *)((int)pvVar11 + 0x34) + 1)" ( identifier , (cast_expression "(void *)((int)pvVar11 + 0xa4)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pvVar11 + 0xa4)" ( (binary_expression "(int)pvVar11 + 0xa4" (cast_expression "(int)pvVar11" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))) , (binary_expression "*(int *)((int)pvVar11 + 0x34) + 1" (pointer_expression "*(int *)((int)pvVar11 + 0x34)" * (cast_expression "(int *)((int)pvVar11 + 0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pvVar11 + 0x34)" ( (binary_expression "(int)pvVar11 + 0x34" (cast_expression "(int)pvVar11" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) + number_literal) ))) ;) (expression_statement "uVar14 = param_1[0xb];" (assignment_expression "uVar14 = param_1[0xb]" identifier = (subscript_expression "param_1[0xb]" identifier [ number_literal ])) ;) }))) (if_statement "if ((param_1[10] == 0) || ((uVar14 & 0x400) != 0)) {\n      uVar18 = pdVar9->d_type - 1;\n      if (((uVar14 & 0x18) == 0x18) && ((pdVar9->d_type & 0xfb) != 0)) {\n        *(undefined2 *)((int)pvVar11 + 0x3c) = 0xb;\n        if (uVar18 < 0xc) {\n          *(undefined4 *)((int)pvVar11 + 0x54) = *(undefined4 *)(&DAT_0001e180 + uVar18 * 4);\n          uVar12 = 1;\n        }\n        else {\n          *(undefined4 *)((int)pvVar11 + 0x54) = 0;\n          uVar12 = 1;\n        }\n      }\n      else {\n        *(undefined2 *)((int)pvVar11 + 0x3c) = 0xb;\n        if (uVar18 < 0xc) {\n          *(undefined4 *)((int)pvVar11 + 0x54) = *(undefined4 *)(&DAT_0001e180 + uVar18 * 4);\n          uVar12 = 2;\n        }\n        else {\n          *(undefined4 *)((int)pvVar11 + 0x54) = 0;\n          uVar12 = 2;\n        }\n      }\n      *(undefined4 *)((int)pvVar11 + 0x70) = uVar12;\n      *(undefined4 *)((int)pvVar11 + 0x74) = 0;\n    }\n    else {\n      uVar6 = FUN_00018640();\n      *(undefined2 *)((int)pvVar11 + 0x3c) = uVar6;\n    }" if (parenthesized_expression "((param_1[10] == 0) || ((uVar14 & 0x400) != 0))" ( (binary_expression "(param_1[10] == 0) || ((uVar14 & 0x400) != 0)" (parenthesized_expression "(param_1[10] == 0)" ( (binary_expression "param_1[10] == 0" (subscript_expression "param_1[10]" identifier [ number_literal ]) == number_literal) )) || (parenthesized_expression "((uVar14 & 0x400) != 0)" ( (binary_expression "(uVar14 & 0x400) != 0" (parenthesized_expression "(uVar14 & 0x400)" ( (binary_expression "uVar14 & 0x400" identifier & number_literal) )) != number_literal) ))) )) (compound_statement "{\n      uVar18 = pdVar9->d_type - 1;\n      if (((uVar14 & 0x18) == 0x18) && ((pdVar9->d_type & 0xfb) != 0)) {\n        *(undefined2 *)((int)pvVar11 + 0x3c) = 0xb;\n        if (uVar18 < 0xc) {\n          *(undefined4 *)((int)pvVar11 + 0x54) = *(undefined4 *)(&DAT_0001e180 + uVar18 * 4);\n          uVar12 = 1;\n        }\n        else {\n          *(undefined4 *)((int)pvVar11 + 0x54) = 0;\n          uVar12 = 1;\n        }\n      }\n      else {\n        *(undefined2 *)((int)pvVar11 + 0x3c) = 0xb;\n        if (uVar18 < 0xc) {\n          *(undefined4 *)((int)pvVar11 + 0x54) = *(undefined4 *)(&DAT_0001e180 + uVar18 * 4);\n          uVar12 = 2;\n        }\n        else {\n          *(undefined4 *)((int)pvVar11 + 0x54) = 0;\n          uVar12 = 2;\n        }\n      }\n      *(undefined4 *)((int)pvVar11 + 0x70) = uVar12;\n      *(undefined4 *)((int)pvVar11 + 0x74) = 0;\n    }" { (expression_statement "uVar18 = pdVar9->d_type - 1;" (assignment_expression "uVar18 = pdVar9->d_type - 1" identifier = (binary_expression "pdVar9->d_type - 1" (field_expression "pdVar9->d_type" identifier -> field_identifier) - number_literal)) ;) (if_statement "if (((uVar14 & 0x18) == 0x18) && ((pdVar9->d_type & 0xfb) != 0)) {\n        *(undefined2 *)((int)pvVar11 + 0x3c) = 0xb;\n        if (uVar18 < 0xc) {\n          *(undefined4 *)((int)pvVar11 + 0x54) = *(undefined4 *)(&DAT_0001e180 + uVar18 * 4);\n          uVar12 = 1;\n        }\n        else {\n          *(undefined4 *)((int)pvVar11 + 0x54) = 0;\n          uVar12 = 1;\n        }\n      }\n      else {\n        *(undefined2 *)((int)pvVar11 + 0x3c) = 0xb;\n        if (uVar18 < 0xc) {\n          *(undefined4 *)((int)pvVar11 + 0x54) = *(undefined4 *)(&DAT_0001e180 + uVar18 * 4);\n          uVar12 = 2;\n        }\n        else {\n          *(undefined4 *)((int)pvVar11 + 0x54) = 0;\n          uVar12 = 2;\n        }\n      }" if (parenthesized_expression "(((uVar14 & 0x18) == 0x18) && ((pdVar9->d_type & 0xfb) != 0))" ( (binary_expression "((uVar14 & 0x18) == 0x18) && ((pdVar9->d_type & 0xfb) != 0)" (parenthesized_expression "((uVar14 & 0x18) == 0x18)" ( (binary_expression "(uVar14 & 0x18) == 0x18" (parenthesized_expression "(uVar14 & 0x18)" ( (binary_expression "uVar14 & 0x18" identifier & number_literal) )) == number_literal) )) && (parenthesized_expression "((pdVar9->d_type & 0xfb) != 0)" ( (binary_expression "(pdVar9->d_type & 0xfb) != 0" (parenthesized_expression "(pdVar9->d_type & 0xfb)" ( (binary_expression "pdVar9->d_type & 0xfb" (field_expression "pdVar9->d_type" identifier -> field_identifier) & number_literal) )) != number_literal) ))) )) (compound_statement "{\n        *(undefined2 *)((int)pvVar11 + 0x3c) = 0xb;\n        if (uVar18 < 0xc) {\n          *(undefined4 *)((int)pvVar11 + 0x54) = *(undefined4 *)(&DAT_0001e180 + uVar18 * 4);\n          uVar12 = 1;\n        }\n        else {\n          *(undefined4 *)((int)pvVar11 + 0x54) = 0;\n          uVar12 = 1;\n        }\n      }" { (expression_statement "*(undefined2 *)((int)pvVar11 + 0x3c) = 0xb;" (assignment_expression "*(undefined2 *)((int)pvVar11 + 0x3c) = 0xb" (pointer_expression "*(undefined2 *)((int)pvVar11 + 0x3c)" * (cast_expression "(undefined2 *)((int)pvVar11 + 0x3c)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pvVar11 + 0x3c)" ( (binary_expression "(int)pvVar11 + 0x3c" (cast_expression "(int)pvVar11" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (if_statement "if (uVar18 < 0xc) {\n          *(undefined4 *)((int)pvVar11 + 0x54) = *(undefined4 *)(&DAT_0001e180 + uVar18 * 4);\n          uVar12 = 1;\n        }\n        else {\n          *(undefined4 *)((int)pvVar11 + 0x54) = 0;\n          uVar12 = 1;\n        }" if (parenthesized_expression "(uVar18 < 0xc)" ( (binary_expression "uVar18 < 0xc" identifier < number_literal) )) (compound_statement "{\n          *(undefined4 *)((int)pvVar11 + 0x54) = *(undefined4 *)(&DAT_0001e180 + uVar18 * 4);\n          uVar12 = 1;\n        }" { (expression_statement "*(undefined4 *)((int)pvVar11 + 0x54) = *(undefined4 *)(&DAT_0001e180 + uVar18 * 4);" (assignment_expression "*(undefined4 *)((int)pvVar11 + 0x54) = *(undefined4 *)(&DAT_0001e180 + uVar18 * 4)" (pointer_expression "*(undefined4 *)((int)pvVar11 + 0x54)" * (cast_expression "(undefined4 *)((int)pvVar11 + 0x54)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pvVar11 + 0x54)" ( (binary_expression "(int)pvVar11 + 0x54" (cast_expression "(int)pvVar11" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (pointer_expression "*(undefined4 *)(&DAT_0001e180 + uVar18 * 4)" * (cast_expression "(undefined4 *)(&DAT_0001e180 + uVar18 * 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_0001e180 + uVar18 * 4)" ( (binary_expression "&DAT_0001e180 + uVar18 * 4" (pointer_expression "&DAT_0001e180" & identifier) + (binary_expression "uVar18 * 4" identifier * number_literal)) ))))) ;) (expression_statement "uVar12 = 1;" (assignment_expression "uVar12 = 1" identifier = number_literal) ;) }) (else_clause "else {\n          *(undefined4 *)((int)pvVar11 + 0x54) = 0;\n          uVar12 = 1;\n        }" else (compound_statement "{\n          *(undefined4 *)((int)pvVar11 + 0x54) = 0;\n          uVar12 = 1;\n        }" { (expression_statement "*(undefined4 *)((int)pvVar11 + 0x54) = 0;" (assignment_expression "*(undefined4 *)((int)pvVar11 + 0x54) = 0" (pointer_expression "*(undefined4 *)((int)pvVar11 + 0x54)" * (cast_expression "(undefined4 *)((int)pvVar11 + 0x54)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pvVar11 + 0x54)" ( (binary_expression "(int)pvVar11 + 0x54" (cast_expression "(int)pvVar11" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "uVar12 = 1;" (assignment_expression "uVar12 = 1" identifier = number_literal) ;) }))) }) (else_clause "else {\n        *(undefined2 *)((int)pvVar11 + 0x3c) = 0xb;\n        if (uVar18 < 0xc) {\n          *(undefined4 *)((int)pvVar11 + 0x54) = *(undefined4 *)(&DAT_0001e180 + uVar18 * 4);\n          uVar12 = 2;\n        }\n        else {\n          *(undefined4 *)((int)pvVar11 + 0x54) = 0;\n          uVar12 = 2;\n        }\n      }" else (compound_statement "{\n        *(undefined2 *)((int)pvVar11 + 0x3c) = 0xb;\n        if (uVar18 < 0xc) {\n          *(undefined4 *)((int)pvVar11 + 0x54) = *(undefined4 *)(&DAT_0001e180 + uVar18 * 4);\n          uVar12 = 2;\n        }\n        else {\n          *(undefined4 *)((int)pvVar11 + 0x54) = 0;\n          uVar12 = 2;\n        }\n      }" { (expression_statement "*(undefined2 *)((int)pvVar11 + 0x3c) = 0xb;" (assignment_expression "*(undefined2 *)((int)pvVar11 + 0x3c) = 0xb" (pointer_expression "*(undefined2 *)((int)pvVar11 + 0x3c)" * (cast_expression "(undefined2 *)((int)pvVar11 + 0x3c)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pvVar11 + 0x3c)" ( (binary_expression "(int)pvVar11 + 0x3c" (cast_expression "(int)pvVar11" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (if_statement "if (uVar18 < 0xc) {\n          *(undefined4 *)((int)pvVar11 + 0x54) = *(undefined4 *)(&DAT_0001e180 + uVar18 * 4);\n          uVar12 = 2;\n        }\n        else {\n          *(undefined4 *)((int)pvVar11 + 0x54) = 0;\n          uVar12 = 2;\n        }" if (parenthesized_expression "(uVar18 < 0xc)" ( (binary_expression "uVar18 < 0xc" identifier < number_literal) )) (compound_statement "{\n          *(undefined4 *)((int)pvVar11 + 0x54) = *(undefined4 *)(&DAT_0001e180 + uVar18 * 4);\n          uVar12 = 2;\n        }" { (expression_statement "*(undefined4 *)((int)pvVar11 + 0x54) = *(undefined4 *)(&DAT_0001e180 + uVar18 * 4);" (assignment_expression "*(undefined4 *)((int)pvVar11 + 0x54) = *(undefined4 *)(&DAT_0001e180 + uVar18 * 4)" (pointer_expression "*(undefined4 *)((int)pvVar11 + 0x54)" * (cast_expression "(undefined4 *)((int)pvVar11 + 0x54)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pvVar11 + 0x54)" ( (binary_expression "(int)pvVar11 + 0x54" (cast_expression "(int)pvVar11" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (pointer_expression "*(undefined4 *)(&DAT_0001e180 + uVar18 * 4)" * (cast_expression "(undefined4 *)(&DAT_0001e180 + uVar18 * 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_0001e180 + uVar18 * 4)" ( (binary_expression "&DAT_0001e180 + uVar18 * 4" (pointer_expression "&DAT_0001e180" & identifier) + (binary_expression "uVar18 * 4" identifier * number_literal)) ))))) ;) (expression_statement "uVar12 = 2;" (assignment_expression "uVar12 = 2" identifier = number_literal) ;) }) (else_clause "else {\n          *(undefined4 *)((int)pvVar11 + 0x54) = 0;\n          uVar12 = 2;\n        }" else (compound_statement "{\n          *(undefined4 *)((int)pvVar11 + 0x54) = 0;\n          uVar12 = 2;\n        }" { (expression_statement "*(undefined4 *)((int)pvVar11 + 0x54) = 0;" (assignment_expression "*(undefined4 *)((int)pvVar11 + 0x54) = 0" (pointer_expression "*(undefined4 *)((int)pvVar11 + 0x54)" * (cast_expression "(undefined4 *)((int)pvVar11 + 0x54)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pvVar11 + 0x54)" ( (binary_expression "(int)pvVar11 + 0x54" (cast_expression "(int)pvVar11" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "uVar12 = 2;" (assignment_expression "uVar12 = 2" identifier = number_literal) ;) }))) }))) (expression_statement "*(undefined4 *)((int)pvVar11 + 0x70) = uVar12;" (assignment_expression "*(undefined4 *)((int)pvVar11 + 0x70) = uVar12" (pointer_expression "*(undefined4 *)((int)pvVar11 + 0x70)" * (cast_expression "(undefined4 *)((int)pvVar11 + 0x70)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pvVar11 + 0x70)" ( (binary_expression "(int)pvVar11 + 0x70" (cast_expression "(int)pvVar11" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)((int)pvVar11 + 0x74) = 0;" (assignment_expression "*(undefined4 *)((int)pvVar11 + 0x74) = 0" (pointer_expression "*(undefined4 *)((int)pvVar11 + 0x74)" * (cast_expression "(undefined4 *)((int)pvVar11 + 0x74)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pvVar11 + 0x74)" ( (binary_expression "(int)pvVar11 + 0x74" (cast_expression "(int)pvVar11" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) }) (else_clause "else {\n      uVar6 = FUN_00018640();\n      *(undefined2 *)((int)pvVar11 + 0x3c) = uVar6;\n    }" else (compound_statement "{\n      uVar6 = FUN_00018640();\n      *(undefined2 *)((int)pvVar11 + 0x3c) = uVar6;\n    }" { (expression_statement "uVar6 = FUN_00018640();" (assignment_expression "uVar6 = FUN_00018640()" identifier = (call_expression "FUN_00018640()" identifier (argument_list "()" ( )))) ;) (expression_statement "*(undefined2 *)((int)pvVar11 + 0x3c) = uVar6;" (assignment_expression "*(undefined2 *)((int)pvVar11 + 0x3c) = uVar6" (pointer_expression "*(undefined2 *)((int)pvVar11 + 0x3c)" * (cast_expression "(undefined2 *)((int)pvVar11 + 0x3c)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pvVar11 + 0x3c)" ( (binary_expression "(int)pvVar11 + 0x3c" (cast_expression "(int)pvVar11" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) }))) (expression_statement "*(undefined4 *)((int)pvVar11 + 8) = 0;" (assignment_expression "*(undefined4 *)((int)pvVar11 + 8) = 0" (pointer_expression "*(undefined4 *)((int)pvVar11 + 8)" * (cast_expression "(undefined4 *)((int)pvVar11 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pvVar11 + 8)" ( (binary_expression "(int)pvVar11 + 8" (cast_expression "(int)pvVar11" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "pvVar16 = pvVar11;" (assignment_expression "pvVar16 = pvVar11" identifier = identifier) ;) (if_statement "if (local_48 != (void *)0x0) {\n      *(void **)((int)local_54 + 8) = pvVar11;\n      pvVar16 = local_48;\n    }" if (parenthesized_expression "(local_48 != (void *)0x0)" ( (binary_expression "local_48 != (void *)0x0" identifier != (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      *(void **)((int)local_54 + 8) = pvVar11;\n      pvVar16 = local_48;\n    }" { (expression_statement "*(void **)((int)local_54 + 8) = pvVar11;" (assignment_expression "*(void **)((int)local_54 + 8) = pvVar11" (pointer_expression "*(void **)((int)local_54 + 8)" * (cast_expression "(void **)((int)local_54 + 8)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)local_54 + 8)" ( (binary_expression "(int)local_54 + 8" (cast_expression "(int)local_54" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "pvVar16 = local_48;" (assignment_expression "pvVar16 = local_48" identifier = identifier) ;) })) (expression_statement "local_48 = pvVar16;" (assignment_expression "local_48 = pvVar16" identifier = identifier) ;) (expression_statement "local_54 = pvVar11;" (assignment_expression "local_54 = pvVar11" identifier = identifier) ;) (if_statement "if (local_5c == 10000) {\n      if ((param_1[10] != 0) ||\n         (((iVar15 = FUN_00018a00(), iVar15 != 0x6969 && (iVar15 != 0x1021994)) &&\n          (bVar2 = true, iVar15 != -0xacb2be)))) {\n        local_5c = 0x2711;\n        goto LAB_000193a8;\n      }\n      bVar2 = false;\n    }" if (parenthesized_expression "(local_5c == 10000)" ( (binary_expression "local_5c == 10000" identifier == number_literal) )) (compound_statement "{\n      if ((param_1[10] != 0) ||\n         (((iVar15 = FUN_00018a00(), iVar15 != 0x6969 && (iVar15 != 0x1021994)) &&\n          (bVar2 = true, iVar15 != -0xacb2be)))) {\n        local_5c = 0x2711;\n        goto LAB_000193a8;\n      }\n      bVar2 = false;\n    }" { (if_statement "if ((param_1[10] != 0) ||\n         (((iVar15 = FUN_00018a00(), iVar15 != 0x6969 && (iVar15 != 0x1021994)) &&\n          (bVar2 = true, iVar15 != -0xacb2be)))) {\n        local_5c = 0x2711;\n        goto LAB_000193a8;\n      }" if (parenthesized_expression "((param_1[10] != 0) ||\n         (((iVar15 = FUN_00018a00(), iVar15 != 0x6969 && (iVar15 != 0x1021994)) &&\n          (bVar2 = true, iVar15 != -0xacb2be))))" ( (binary_expression "(param_1[10] != 0) ||\n         (((iVar15 = FUN_00018a00(), iVar15 != 0x6969 && (iVar15 != 0x1021994)) &&\n          (bVar2 = true, iVar15 != -0xacb2be)))" (parenthesized_expression "(param_1[10] != 0)" ( (binary_expression "param_1[10] != 0" (subscript_expression "param_1[10]" identifier [ number_literal ]) != number_literal) )) || (parenthesized_expression "(((iVar15 = FUN_00018a00(), iVar15 != 0x6969 && (iVar15 != 0x1021994)) &&\n          (bVar2 = true, iVar15 != -0xacb2be)))" ( (parenthesized_expression "((iVar15 = FUN_00018a00(), iVar15 != 0x6969 && (iVar15 != 0x1021994)) &&\n          (bVar2 = true, iVar15 != -0xacb2be))" ( (binary_expression "(iVar15 = FUN_00018a00(), iVar15 != 0x6969 && (iVar15 != 0x1021994)) &&\n          (bVar2 = true, iVar15 != -0xacb2be)" (parenthesized_expression "(iVar15 = FUN_00018a00(), iVar15 != 0x6969 && (iVar15 != 0x1021994))" ( (comma_expression "iVar15 = FUN_00018a00(), iVar15 != 0x6969 && (iVar15 != 0x1021994)" (assignment_expression "iVar15 = FUN_00018a00()" identifier = (call_expression "FUN_00018a00()" identifier (argument_list "()" ( )))) , (binary_expression "iVar15 != 0x6969 && (iVar15 != 0x1021994)" (binary_expression "iVar15 != 0x6969" identifier != number_literal) && (parenthesized_expression "(iVar15 != 0x1021994)" ( (binary_expression "iVar15 != 0x1021994" identifier != number_literal) )))) )) && (parenthesized_expression "(bVar2 = true, iVar15 != -0xacb2be)" ( (comma_expression "bVar2 = true, iVar15 != -0xacb2be" (assignment_expression "bVar2 = true" identifier = true) , (binary_expression "iVar15 != -0xacb2be" identifier != number_literal)) ))) )) ))) )) (compound_statement "{\n        local_5c = 0x2711;\n        goto LAB_000193a8;\n      }" { (expression_statement "local_5c = 0x2711;" (assignment_expression "local_5c = 0x2711" identifier = number_literal) ;) (goto_statement "goto LAB_000193a8;" goto statement_identifier ;) })) (expression_statement "bVar2 = false;" (assignment_expression "bVar2 = false" identifier = false) ;) })) (expression_statement "local_5c = local_5c + 1;" (assignment_expression "local_5c = local_5c + 1" identifier = (binary_expression "local_5c + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(local_5c < local_34)" ( (binary_expression "local_5c < local_34" identifier < identifier) )) ;)) (labeled_statement "LAB_00019641:\n  if (local_1f != '\0') {\n    iVar15 = param_1[5];\n    for (iVar7 = param_1[1]; pvVar11 = local_48, iVar7 != 0; iVar7 = *(int *)(iVar7 + 8)) {\n      if (*(int *)(iVar7 + 0x18) != iVar7 + 0xa4) {\n        *(int *)(iVar7 + 0x18) = (*(int *)(iVar7 + 0x18) - *(int *)(iVar7 + 0x1c)) + iVar15;\n      }\n      *(int *)(iVar7 + 0x1c) = iVar15;\n    }\n    while (pvVar16 = pvVar11, -1 < *(int *)((int)pvVar16 + 0x30)) {\n      if (*(int *)((int)pvVar16 + 0x18) != (int)pvVar16 + 0xa4) {\n        *(int *)((int)pvVar16 + 0x18) =\n             (*(int *)((int)pvVar16 + 0x18) - *(int *)((int)pvVar16 + 0x1c)) + iVar15;\n      }\n      *(int *)((int)pvVar16 + 0x1c) = iVar15;\n      pvVar11 = *(void **)((int)pvVar16 + 8);\n      if (*(void **)((int)pvVar16 + 8) == (void *)0x0) {\n        pvVar11 = *(void **)((int)pvVar16 + 4);\n      }\n    }\n  }" statement_identifier : (if_statement "if (local_1f != '\0') {\n    iVar15 = param_1[5];\n    for (iVar7 = param_1[1]; pvVar11 = local_48, iVar7 != 0; iVar7 = *(int *)(iVar7 + 8)) {\n      if (*(int *)(iVar7 + 0x18) != iVar7 + 0xa4) {\n        *(int *)(iVar7 + 0x18) = (*(int *)(iVar7 + 0x18) - *(int *)(iVar7 + 0x1c)) + iVar15;\n      }\n      *(int *)(iVar7 + 0x1c) = iVar15;\n    }\n    while (pvVar16 = pvVar11, -1 < *(int *)((int)pvVar16 + 0x30)) {\n      if (*(int *)((int)pvVar16 + 0x18) != (int)pvVar16 + 0xa4) {\n        *(int *)((int)pvVar16 + 0x18) =\n             (*(int *)((int)pvVar16 + 0x18) - *(int *)((int)pvVar16 + 0x1c)) + iVar15;\n      }\n      *(int *)((int)pvVar16 + 0x1c) = iVar15;\n      pvVar11 = *(void **)((int)pvVar16 + 8);\n      if (*(void **)((int)pvVar16 + 8) == (void *)0x0) {\n        pvVar11 = *(void **)((int)pvVar16 + 4);\n      }\n    }\n  }" if (parenthesized_expression "(local_1f != '\0')" ( (binary_expression "local_1f != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    iVar15 = param_1[5];\n    for (iVar7 = param_1[1]; pvVar11 = local_48, iVar7 != 0; iVar7 = *(int *)(iVar7 + 8)) {\n      if (*(int *)(iVar7 + 0x18) != iVar7 + 0xa4) {\n        *(int *)(iVar7 + 0x18) = (*(int *)(iVar7 + 0x18) - *(int *)(iVar7 + 0x1c)) + iVar15;\n      }\n      *(int *)(iVar7 + 0x1c) = iVar15;\n    }\n    while (pvVar16 = pvVar11, -1 < *(int *)((int)pvVar16 + 0x30)) {\n      if (*(int *)((int)pvVar16 + 0x18) != (int)pvVar16 + 0xa4) {\n        *(int *)((int)pvVar16 + 0x18) =\n             (*(int *)((int)pvVar16 + 0x18) - *(int *)((int)pvVar16 + 0x1c)) + iVar15;\n      }\n      *(int *)((int)pvVar16 + 0x1c) = iVar15;\n      pvVar11 = *(void **)((int)pvVar16 + 8);\n      if (*(void **)((int)pvVar16 + 8) == (void *)0x0) {\n        pvVar11 = *(void **)((int)pvVar16 + 4);\n      }\n    }\n  }" { (expression_statement "iVar15 = param_1[5];" (assignment_expression "iVar15 = param_1[5]" identifier = (subscript_expression "param_1[5]" identifier [ number_literal ])) ;) (for_statement "for (iVar7 = param_1[1]; pvVar11 = local_48, iVar7 != 0; iVar7 = *(int *)(iVar7 + 8)) {\n      if (*(int *)(iVar7 + 0x18) != iVar7 + 0xa4) {\n        *(int *)(iVar7 + 0x18) = (*(int *)(iVar7 + 0x18) - *(int *)(iVar7 + 0x1c)) + iVar15;\n      }\n      *(int *)(iVar7 + 0x1c) = iVar15;\n    }" for ( (assignment_expression "iVar7 = param_1[1]" identifier = (subscript_expression "param_1[1]" identifier [ number_literal ])) ; (comma_expression "pvVar11 = local_48, iVar7 != 0" (assignment_expression "pvVar11 = local_48" identifier = identifier) , (binary_expression "iVar7 != 0" identifier != number_literal)) ; (assignment_expression "iVar7 = *(int *)(iVar7 + 8)" identifier = (pointer_expression "*(int *)(iVar7 + 8)" * (cast_expression "(int *)(iVar7 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + 8)" ( (binary_expression "iVar7 + 8" identifier + number_literal) ))))) ) (compound_statement "{\n      if (*(int *)(iVar7 + 0x18) != iVar7 + 0xa4) {\n        *(int *)(iVar7 + 0x18) = (*(int *)(iVar7 + 0x18) - *(int *)(iVar7 + 0x1c)) + iVar15;\n      }\n      *(int *)(iVar7 + 0x1c) = iVar15;\n    }" { (if_statement "if (*(int *)(iVar7 + 0x18) != iVar7 + 0xa4) {\n        *(int *)(iVar7 + 0x18) = (*(int *)(iVar7 + 0x18) - *(int *)(iVar7 + 0x1c)) + iVar15;\n      }" if (parenthesized_expression "(*(int *)(iVar7 + 0x18) != iVar7 + 0xa4)" ( (binary_expression "*(int *)(iVar7 + 0x18) != iVar7 + 0xa4" (pointer_expression "*(int *)(iVar7 + 0x18)" * (cast_expression "(int *)(iVar7 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + 0x18)" ( (binary_expression "iVar7 + 0x18" identifier + number_literal) )))) != (binary_expression "iVar7 + 0xa4" identifier + number_literal)) )) (compound_statement "{\n        *(int *)(iVar7 + 0x18) = (*(int *)(iVar7 + 0x18) - *(int *)(iVar7 + 0x1c)) + iVar15;\n      }" { (expression_statement "*(int *)(iVar7 + 0x18) = (*(int *)(iVar7 + 0x18) - *(int *)(iVar7 + 0x1c)) + iVar15;" (assignment_expression "*(int *)(iVar7 + 0x18) = (*(int *)(iVar7 + 0x18) - *(int *)(iVar7 + 0x1c)) + iVar15" (pointer_expression "*(int *)(iVar7 + 0x18)" * (cast_expression "(int *)(iVar7 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + 0x18)" ( (binary_expression "iVar7 + 0x18" identifier + number_literal) )))) = (binary_expression "(*(int *)(iVar7 + 0x18) - *(int *)(iVar7 + 0x1c)) + iVar15" (parenthesized_expression "(*(int *)(iVar7 + 0x18) - *(int *)(iVar7 + 0x1c))" ( (binary_expression "*(int *)(iVar7 + 0x18) - *(int *)(iVar7 + 0x1c)" (pointer_expression "*(int *)(iVar7 + 0x18)" * (cast_expression "(int *)(iVar7 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + 0x18)" ( (binary_expression "iVar7 + 0x18" identifier + number_literal) )))) - (pointer_expression "*(int *)(iVar7 + 0x1c)" * (cast_expression "(int *)(iVar7 + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + 0x1c)" ( (binary_expression "iVar7 + 0x1c" identifier + number_literal) ))))) )) + identifier)) ;) })) (expression_statement "*(int *)(iVar7 + 0x1c) = iVar15;" (assignment_expression "*(int *)(iVar7 + 0x1c) = iVar15" (pointer_expression "*(int *)(iVar7 + 0x1c)" * (cast_expression "(int *)(iVar7 + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + 0x1c)" ( (binary_expression "iVar7 + 0x1c" identifier + number_literal) )))) = identifier) ;) })) (while_statement "while (pvVar16 = pvVar11, -1 < *(int *)((int)pvVar16 + 0x30)) {\n      if (*(int *)((int)pvVar16 + 0x18) != (int)pvVar16 + 0xa4) {\n        *(int *)((int)pvVar16 + 0x18) =\n             (*(int *)((int)pvVar16 + 0x18) - *(int *)((int)pvVar16 + 0x1c)) + iVar15;\n      }\n      *(int *)((int)pvVar16 + 0x1c) = iVar15;\n      pvVar11 = *(void **)((int)pvVar16 + 8);\n      if (*(void **)((int)pvVar16 + 8) == (void *)0x0) {\n        pvVar11 = *(void **)((int)pvVar16 + 4);\n      }\n    }" while (parenthesized_expression "(pvVar16 = pvVar11, -1 < *(int *)((int)pvVar16 + 0x30))" ( (comma_expression "pvVar16 = pvVar11, -1 < *(int *)((int)pvVar16 + 0x30)" (assignment_expression "pvVar16 = pvVar11" identifier = identifier) , (binary_expression "-1 < *(int *)((int)pvVar16 + 0x30)" number_literal < (pointer_expression "*(int *)((int)pvVar16 + 0x30)" * (cast_expression "(int *)((int)pvVar16 + 0x30)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pvVar16 + 0x30)" ( (binary_expression "(int)pvVar16 + 0x30" (cast_expression "(int)pvVar16" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))))) )) (compound_statement "{\n      if (*(int *)((int)pvVar16 + 0x18) != (int)pvVar16 + 0xa4) {\n        *(int *)((int)pvVar16 + 0x18) =\n             (*(int *)((int)pvVar16 + 0x18) - *(int *)((int)pvVar16 + 0x1c)) + iVar15;\n      }\n      *(int *)((int)pvVar16 + 0x1c) = iVar15;\n      pvVar11 = *(void **)((int)pvVar16 + 8);\n      if (*(void **)((int)pvVar16 + 8) == (void *)0x0) {\n        pvVar11 = *(void **)((int)pvVar16 + 4);\n      }\n    }" { (if_statement "if (*(int *)((int)pvVar16 + 0x18) != (int)pvVar16 + 0xa4) {\n        *(int *)((int)pvVar16 + 0x18) =\n             (*(int *)((int)pvVar16 + 0x18) - *(int *)((int)pvVar16 + 0x1c)) + iVar15;\n      }" if (parenthesized_expression "(*(int *)((int)pvVar16 + 0x18) != (int)pvVar16 + 0xa4)" ( (binary_expression "*(int *)((int)pvVar16 + 0x18) != (int)pvVar16 + 0xa4" (pointer_expression "*(int *)((int)pvVar16 + 0x18)" * (cast_expression "(int *)((int)pvVar16 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pvVar16 + 0x18)" ( (binary_expression "(int)pvVar16 + 0x18" (cast_expression "(int)pvVar16" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) != (binary_expression "(int)pvVar16 + 0xa4" (cast_expression "(int)pvVar16" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal)) )) (compound_statement "{\n        *(int *)((int)pvVar16 + 0x18) =\n             (*(int *)((int)pvVar16 + 0x18) - *(int *)((int)pvVar16 + 0x1c)) + iVar15;\n      }" { (expression_statement "*(int *)((int)pvVar16 + 0x18) =\n             (*(int *)((int)pvVar16 + 0x18) - *(int *)((int)pvVar16 + 0x1c)) + iVar15;" (assignment_expression "*(int *)((int)pvVar16 + 0x18) =\n             (*(int *)((int)pvVar16 + 0x18) - *(int *)((int)pvVar16 + 0x1c)) + iVar15" (pointer_expression "*(int *)((int)pvVar16 + 0x18)" * (cast_expression "(int *)((int)pvVar16 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pvVar16 + 0x18)" ( (binary_expression "(int)pvVar16 + 0x18" (cast_expression "(int)pvVar16" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (binary_expression "(*(int *)((int)pvVar16 + 0x18) - *(int *)((int)pvVar16 + 0x1c)) + iVar15" (parenthesized_expression "(*(int *)((int)pvVar16 + 0x18) - *(int *)((int)pvVar16 + 0x1c))" ( (binary_expression "*(int *)((int)pvVar16 + 0x18) - *(int *)((int)pvVar16 + 0x1c)" (pointer_expression "*(int *)((int)pvVar16 + 0x18)" * (cast_expression "(int *)((int)pvVar16 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pvVar16 + 0x18)" ( (binary_expression "(int)pvVar16 + 0x18" (cast_expression "(int)pvVar16" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) - (pointer_expression "*(int *)((int)pvVar16 + 0x1c)" * (cast_expression "(int *)((int)pvVar16 + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pvVar16 + 0x1c)" ( (binary_expression "(int)pvVar16 + 0x1c" (cast_expression "(int)pvVar16" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) )) + identifier)) ;) })) (expression_statement "*(int *)((int)pvVar16 + 0x1c) = iVar15;" (assignment_expression "*(int *)((int)pvVar16 + 0x1c) = iVar15" (pointer_expression "*(int *)((int)pvVar16 + 0x1c)" * (cast_expression "(int *)((int)pvVar16 + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pvVar16 + 0x1c)" ( (binary_expression "(int)pvVar16 + 0x1c" (cast_expression "(int)pvVar16" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "pvVar11 = *(void **)((int)pvVar16 + 8);" (assignment_expression "pvVar11 = *(void **)((int)pvVar16 + 8)" identifier = (pointer_expression "*(void **)((int)pvVar16 + 8)" * (cast_expression "(void **)((int)pvVar16 + 8)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)pvVar16 + 8)" ( (binary_expression "(int)pvVar16 + 8" (cast_expression "(int)pvVar16" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (if_statement "if (*(void **)((int)pvVar16 + 8) == (void *)0x0) {\n        pvVar11 = *(void **)((int)pvVar16 + 4);\n      }" if (parenthesized_expression "(*(void **)((int)pvVar16 + 8) == (void *)0x0)" ( (binary_expression "*(void **)((int)pvVar16 + 8) == (void *)0x0" (pointer_expression "*(void **)((int)pvVar16 + 8)" * (cast_expression "(void **)((int)pvVar16 + 8)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)pvVar16 + 8)" ( (binary_expression "(int)pvVar16 + 8" (cast_expression "(int)pvVar16" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) == (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        pvVar11 = *(void **)((int)pvVar16 + 4);\n      }" { (expression_statement "pvVar11 = *(void **)((int)pvVar16 + 4);" (assignment_expression "pvVar11 = *(void **)((int)pvVar16 + 4)" identifier = (pointer_expression "*(void **)((int)pvVar16 + 4)" * (cast_expression "(void **)((int)pvVar16 + 4)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)pvVar16 + 4)" ( (binary_expression "(int)pvVar16 + 4" (cast_expression "(int)pvVar16" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) })) })) }))) (if_statement "if ((*(byte *)(param_1 + 0xb) & 4) != 0) {\n    if ((param_1[8] == local_4c) || (local_5c == 0)) {\n      local_38 = local_38 + -1;\n    }\n    *local_38 = 0;\n  }" if (parenthesized_expression "((*(byte *)(param_1 + 0xb) & 4) != 0)" ( (binary_expression "(*(byte *)(param_1 + 0xb) & 4) != 0" (parenthesized_expression "(*(byte *)(param_1 + 0xb) & 4)" ( (binary_expression "*(byte *)(param_1 + 0xb) & 4" (pointer_expression "*(byte *)(param_1 + 0xb)" * (cast_expression "(byte *)(param_1 + 0xb)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xb)" ( (binary_expression "param_1 + 0xb" identifier + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n    if ((param_1[8] == local_4c) || (local_5c == 0)) {\n      local_38 = local_38 + -1;\n    }\n    *local_38 = 0;\n  }" { (if_statement "if ((param_1[8] == local_4c) || (local_5c == 0)) {\n      local_38 = local_38 + -1;\n    }" if (parenthesized_expression "((param_1[8] == local_4c) || (local_5c == 0))" ( (binary_expression "(param_1[8] == local_4c) || (local_5c == 0)" (parenthesized_expression "(param_1[8] == local_4c)" ( (binary_expression "param_1[8] == local_4c" (subscript_expression "param_1[8]" identifier [ number_literal ]) == identifier) )) || (parenthesized_expression "(local_5c == 0)" ( (binary_expression "local_5c == 0" identifier == number_literal) ))) )) (compound_statement "{\n      local_38 = local_38 + -1;\n    }" { (expression_statement "local_38 = local_38 + -1;" (assignment_expression "local_38 = local_38 + -1" identifier = (binary_expression "local_38 + -1" identifier + number_literal)) ;) })) (expression_statement "*local_38 = 0;" (assignment_expression "*local_38 = 0" (pointer_expression "*local_38" * identifier) = number_literal) ;) })) (if_statement "if ((__dirp == (DIR *)0x0) && (bVar19)) {\n    if ((param_2 != 1) && (local_5c != 0)) goto LAB_000196b9;\n    if (*(int *)(iVar1 + 0x30) == 0) {\n      iVar7 = FUN_00018c40();\n    }\n    else {\n      iVar7 = FUN_00018e20(&DAT_0001e166);\n    }\n    if (iVar7 != 0) {\n      *(undefined2 *)(iVar1 + 0x3c) = 7;\n      param_1[0xb] = param_1[0xb] | 0x4000;\n      FUN_00018960();\n      return (void *)0x0;\n    }\n  }" if (parenthesized_expression "((__dirp == (DIR *)0x0) && (bVar19))" ( (binary_expression "(__dirp == (DIR *)0x0) && (bVar19)" (parenthesized_expression "(__dirp == (DIR *)0x0)" ( (binary_expression "__dirp == (DIR *)0x0" identifier == (cast_expression "(DIR *)0x0" ( (type_descriptor "DIR *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(bVar19)" ( identifier ))) )) (compound_statement "{\n    if ((param_2 != 1) && (local_5c != 0)) goto LAB_000196b9;\n    if (*(int *)(iVar1 + 0x30) == 0) {\n      iVar7 = FUN_00018c40();\n    }\n    else {\n      iVar7 = FUN_00018e20(&DAT_0001e166);\n    }\n    if (iVar7 != 0) {\n      *(undefined2 *)(iVar1 + 0x3c) = 7;\n      param_1[0xb] = param_1[0xb] | 0x4000;\n      FUN_00018960();\n      return (void *)0x0;\n    }\n  }" { (if_statement "if ((param_2 != 1) && (local_5c != 0)) goto LAB_000196b9;" if (parenthesized_expression "((param_2 != 1) && (local_5c != 0))" ( (binary_expression "(param_2 != 1) && (local_5c != 0)" (parenthesized_expression "(param_2 != 1)" ( (binary_expression "param_2 != 1" identifier != number_literal) )) && (parenthesized_expression "(local_5c != 0)" ( (binary_expression "local_5c != 0" identifier != number_literal) ))) )) (goto_statement "goto LAB_000196b9;" goto statement_identifier ;)) (if_statement "if (*(int *)(iVar1 + 0x30) == 0) {\n      iVar7 = FUN_00018c40();\n    }\n    else {\n      iVar7 = FUN_00018e20(&DAT_0001e166);\n    }" if (parenthesized_expression "(*(int *)(iVar1 + 0x30) == 0)" ( (binary_expression "*(int *)(iVar1 + 0x30) == 0" (pointer_expression "*(int *)(iVar1 + 0x30)" * (cast_expression "(int *)(iVar1 + 0x30)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x30)" ( (binary_expression "iVar1 + 0x30" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n      iVar7 = FUN_00018c40();\n    }" { (expression_statement "iVar7 = FUN_00018c40();" (assignment_expression "iVar7 = FUN_00018c40()" identifier = (call_expression "FUN_00018c40()" identifier (argument_list "()" ( )))) ;) }) (else_clause "else {\n      iVar7 = FUN_00018e20(&DAT_0001e166);\n    }" else (compound_statement "{\n      iVar7 = FUN_00018e20(&DAT_0001e166);\n    }" { (expression_statement "iVar7 = FUN_00018e20(&DAT_0001e166);" (assignment_expression "iVar7 = FUN_00018e20(&DAT_0001e166)" identifier = (call_expression "FUN_00018e20(&DAT_0001e166)" identifier (argument_list "(&DAT_0001e166)" ( (pointer_expression "&DAT_0001e166" & identifier) )))) ;) }))) (if_statement "if (iVar7 != 0) {\n      *(undefined2 *)(iVar1 + 0x3c) = 7;\n      param_1[0xb] = param_1[0xb] | 0x4000;\n      FUN_00018960();\n      return (void *)0x0;\n    }" if (parenthesized_expression "(iVar7 != 0)" ( (binary_expression "iVar7 != 0" identifier != number_literal) )) (compound_statement "{\n      *(undefined2 *)(iVar1 + 0x3c) = 7;\n      param_1[0xb] = param_1[0xb] | 0x4000;\n      FUN_00018960();\n      return (void *)0x0;\n    }" { (expression_statement "*(undefined2 *)(iVar1 + 0x3c) = 7;" (assignment_expression "*(undefined2 *)(iVar1 + 0x3c) = 7" (pointer_expression "*(undefined2 *)(iVar1 + 0x3c)" * (cast_expression "(undefined2 *)(iVar1 + 0x3c)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x3c)" ( (binary_expression "iVar1 + 0x3c" identifier + number_literal) )))) = number_literal) ;) (expression_statement "param_1[0xb] = param_1[0xb] | 0x4000;" (assignment_expression "param_1[0xb] = param_1[0xb] | 0x4000" (subscript_expression "param_1[0xb]" identifier [ number_literal ]) = (binary_expression "param_1[0xb] | 0x4000" (subscript_expression "param_1[0xb]" identifier [ number_literal ]) | number_literal)) ;) (expression_statement "FUN_00018960();" (call_expression "FUN_00018960()" identifier (argument_list "()" ( ))) ;) (return_statement "return (void *)0x0;" return (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) })) (if_statement "if (local_5c == 0) {\n    if (((param_2 == 3) && (*(short *)(iVar1 + 0x3c) != 4)) && (*(short *)(iVar1 + 0x3c) != 7)) {\n      *(undefined2 *)(iVar1 + 0x3c) = 6;\n    }\n    FUN_00018960();\n    return (void *)0x0;\n  }" if (parenthesized_expression "(local_5c == 0)" ( (binary_expression "local_5c == 0" identifier == number_literal) )) (compound_statement "{\n    if (((param_2 == 3) && (*(short *)(iVar1 + 0x3c) != 4)) && (*(short *)(iVar1 + 0x3c) != 7)) {\n      *(undefined2 *)(iVar1 + 0x3c) = 6;\n    }\n    FUN_00018960();\n    return (void *)0x0;\n  }" { (if_statement "if (((param_2 == 3) && (*(short *)(iVar1 + 0x3c) != 4)) && (*(short *)(iVar1 + 0x3c) != 7)) {\n      *(undefined2 *)(iVar1 + 0x3c) = 6;\n    }" if (parenthesized_expression "(((param_2 == 3) && (*(short *)(iVar1 + 0x3c) != 4)) && (*(short *)(iVar1 + 0x3c) != 7))" ( (binary_expression "((param_2 == 3) && (*(short *)(iVar1 + 0x3c) != 4)) && (*(short *)(iVar1 + 0x3c) != 7)" (parenthesized_expression "((param_2 == 3) && (*(short *)(iVar1 + 0x3c) != 4))" ( (binary_expression "(param_2 == 3) && (*(short *)(iVar1 + 0x3c) != 4)" (parenthesized_expression "(param_2 == 3)" ( (binary_expression "param_2 == 3" identifier == number_literal) )) && (parenthesized_expression "(*(short *)(iVar1 + 0x3c) != 4)" ( (binary_expression "*(short *)(iVar1 + 0x3c) != 4" (pointer_expression "*(short *)(iVar1 + 0x3c)" * (cast_expression "(short *)(iVar1 + 0x3c)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x3c)" ( (binary_expression "iVar1 + 0x3c" identifier + number_literal) )))) != number_literal) ))) )) && (parenthesized_expression "(*(short *)(iVar1 + 0x3c) != 7)" ( (binary_expression "*(short *)(iVar1 + 0x3c) != 7" (pointer_expression "*(short *)(iVar1 + 0x3c)" * (cast_expression "(short *)(iVar1 + 0x3c)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x3c)" ( (binary_expression "iVar1 + 0x3c" identifier + number_literal) )))) != number_literal) ))) )) (compound_statement "{\n      *(undefined2 *)(iVar1 + 0x3c) = 6;\n    }" { (expression_statement "*(undefined2 *)(iVar1 + 0x3c) = 6;" (assignment_expression "*(undefined2 *)(iVar1 + 0x3c) = 6" (pointer_expression "*(undefined2 *)(iVar1 + 0x3c)" * (cast_expression "(undefined2 *)(iVar1 + 0x3c)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x3c)" ( (binary_expression "iVar1 + 0x3c" identifier + number_literal) )))) = number_literal) ;) })) (expression_statement "FUN_00018960();" (call_expression "FUN_00018960()" identifier (argument_list "()" ( ))) ;) (return_statement "return (void *)0x0;" return (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (labeled_statement "LAB_000196b9:\n  if (bVar2) {\n    param_1[10] = (int)FUN_00018600;\n    pvVar11 = (void *)FUN_000187e0();\n    param_1[10] = 0;\n    return pvVar11;\n  }" statement_identifier : (if_statement "if (bVar2) {\n    param_1[10] = (int)FUN_00018600;\n    pvVar11 = (void *)FUN_000187e0();\n    param_1[10] = 0;\n    return pvVar11;\n  }" if (parenthesized_expression "(bVar2)" ( identifier )) (compound_statement "{\n    param_1[10] = (int)FUN_00018600;\n    pvVar11 = (void *)FUN_000187e0();\n    param_1[10] = 0;\n    return pvVar11;\n  }" { (expression_statement "param_1[10] = (int)FUN_00018600;" (assignment_expression "param_1[10] = (int)FUN_00018600" (subscript_expression "param_1[10]" identifier [ number_literal ]) = (cast_expression "(int)FUN_00018600" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "pvVar11 = (void *)FUN_000187e0();" (assignment_expression "pvVar11 = (void *)FUN_000187e0()" identifier = (cast_expression "(void *)FUN_000187e0()" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_000187e0()" identifier (argument_list "()" ( ))))) ;) (expression_statement "param_1[10] = 0;" (assignment_expression "param_1[10] = 0" (subscript_expression "param_1[10]" identifier [ number_literal ]) = number_literal) ;) (return_statement "return pvVar11;" return identifier ;) }))) (if_statement "if ((param_1[10] != 0) && (local_5c != 1)) {\n    pvVar11 = (void *)FUN_000187e0();\n    return pvVar11;\n  }" if (parenthesized_expression "((param_1[10] != 0) && (local_5c != 1))" ( (binary_expression "(param_1[10] != 0) && (local_5c != 1)" (parenthesized_expression "(param_1[10] != 0)" ( (binary_expression "param_1[10] != 0" (subscript_expression "param_1[10]" identifier [ number_literal ]) != number_literal) )) && (parenthesized_expression "(local_5c != 1)" ( (binary_expression "local_5c != 1" identifier != number_literal) ))) )) (compound_statement "{\n    pvVar11 = (void *)FUN_000187e0();\n    return pvVar11;\n  }" { (expression_statement "pvVar11 = (void *)FUN_000187e0();" (assignment_expression "pvVar11 = (void *)FUN_000187e0()" identifier = (cast_expression "(void *)FUN_000187e0()" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_000187e0()" identifier (argument_list "()" ( ))))) ;) (return_statement "return pvVar11;" return identifier ;) })) (return_statement "return local_48;" return identifier ;) })))
(translation_unit (function_definition TYPE (pointer_declarator * (ERROR IDENT) (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) )))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (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 = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT & LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != LIT) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = LIT) , (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT)) ))) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) , (binary_expression IDENT != LIT)) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (binary_expression (binary_expression (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) << LIT) | IDENT) | LIT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * IDENT)) ;) }))) (return_statement return (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT) ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier short) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) & LIT) )) != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (return_statement return (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT) ;) })) })))) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression (unary_expression - (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )))) & LIT) )) - LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = BOOL) ;)) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) & LIT) )) == LIT) )) && (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) ))) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) , (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 = BOOL) ;) (expression_statement (assignment_expression IDENT = BOOL) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT == LIT)) ;) (expression_statement (assignment_expression IDENT = BOOL) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) & LIT) )) == LIT) )) || (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , LIT , LIT )))) , (binary_expression LIT < IDENT)) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) | LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( IDENT )) && (parenthesized_expression ( IDENT ))) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;)) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) && (parenthesized_expression ( (binary_expression LIT < IDENT) ))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) | LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( IDENT )) && (parenthesized_expression ( IDENT ))) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;)) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * IDENT)) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) }))) (expression_statement (assignment_expression IDENT = BOOL) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) }) (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 (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = BOOL) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = BOOL) ;)) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) }))) }))) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;)) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) + IDENT) )))) != (char_literal ' character ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (subscript_expression IDENT [ LIT ])) ))) + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (subscript_expression IDENT [ LIT ])) )))) = LIT) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression (subscript_expression IDENT [ LIT ]) - IDENT)) ;) (expression_statement (assignment_expression IDENT = BOOL) ;) (expression_statement (assignment_expression IDENT = (char_literal ' escape_sequence ')) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (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 = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (labeled_statement statement_identifier : (do_statement do (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (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 { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) != LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (parenthesized_expression ( (binary_expression (unary_expression - (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) && (binary_expression IDENT == LIT)) )))) & LIT) )) + LIT)) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) })) (goto_statement goto statement_identifier ;) })) }) while (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (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 ( (binary_expression (subscript_expression (field_expression IDENT -> field_identifier) [ LIT ]) == (char_literal ' character ')) ))) )) && (parenthesized_expression ( (parenthesized_expression ( (binary_expression (binary_expression (subscript_expression (field_expression IDENT -> field_identifier) [ LIT ]) == (char_literal ' escape_sequence ')) || (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier short) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (field_expression IDENT -> field_identifier) + LIT) )))) == LIT) ))) )) ))) )) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (field_expression IDENT -> field_identifier) )))) ;) (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 { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;)) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (subscript_expression IDENT [ LIT ]) | LIT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (return_statement return (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (char_literal ' escape_sequence ')) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != IDENT) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = IDENT) , (comma_expression (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + IDENT) )))) , (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) == LIT))) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression (subscript_expression IDENT [ LIT ]) - IDENT)) ;) })) (if_statement if (parenthesized_expression ( (call_expression IDENT (argument_list ( IDENT , IDENT ))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (subscript_expression IDENT [ LIT ]) | LIT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (return_statement return (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (pointer_expression & (field_expression IDENT -> field_identifier))) + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (field_expression IDENT -> field_identifier)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) ))))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) ))) , (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) + LIT) ))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) || (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (field_expression IDENT -> field_identifier) - LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) && (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (field_expression IDENT -> field_identifier) & LIT) )) != LIT) ))) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression & IDENT) + (binary_expression IDENT * LIT)) ))))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }))) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression & IDENT) + (binary_expression IDENT * LIT)) ))))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }))) }))) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = IDENT) ;) }))) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = 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 { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != LIT) )) || (parenthesized_expression ( (parenthesized_expression ( (binary_expression (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) , (binary_expression (binary_expression IDENT != LIT) && (parenthesized_expression ( (binary_expression IDENT != LIT) )))) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = BOOL) , (binary_expression IDENT != LIT)) ))) )) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = BOOL) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT < IDENT) )) ;)) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT != (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (for_statement for ( (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ; (comma_expression (assignment_expression IDENT = IDENT) , (binary_expression IDENT != LIT)) ; (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != (binary_expression IDENT + LIT)) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) - (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) + IDENT)) ;) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) })) (while_statement while (parenthesized_expression ( (comma_expression (assignment_expression IDENT = IDENT) , (binary_expression LIT < (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))))) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) != (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT)) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) - (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) ))))) )) + IDENT)) ;) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = IDENT) ;) (expression_statement (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) + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (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) + LIT) ))))) ;) })) })) }))) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) != LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == IDENT) )) || (parenthesized_expression ( (binary_expression IDENT == LIT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) })) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) && (parenthesized_expression ( IDENT ))) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != LIT) )) && (parenthesized_expression ( (binary_expression IDENT != LIT) ))) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression & IDENT) )))) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (subscript_expression IDENT [ LIT ]) | LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (return_statement return (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT) ;) })) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (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 (sized_type_specifier short) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) ))) )) && (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier short) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) ))) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) })) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (return_statement return (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT) ;) })) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( IDENT )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( ))))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (return_statement return 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 { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( ))))) ;) (return_statement return IDENT ;) })) (return_statement return IDENT ;) })))
(function_definition "void * __regparm3 FUN_00019270(int *param_1,int param_2)\n\n{\n  int iVar1;\n  DIR *__dirp;\n  bool bVar2;\n  __ino64_t _Var3;\n  undefined1 *puVar4;\n  char cVar5;\n  undefined2 uVar6;\n  int iVar7;\n  int *piVar8;\n  dirent64 *pdVar9;\n  size_t sVar10;\n  void *pvVar11;\n  undefined4 uVar12;\n  DIR *pDVar13;\n  uint uVar14;\n  int iVar15;\n  void *pvVar16;\n  ushort uVar17;\n  uint uVar18;\n  bool bVar19;\n  uint local_5c;\n  void *local_54;\n  uint local_4c;\n  void *local_48;\n  uint local_44;\n  undefined1 *local_38;\n  uint local_34;\n  uint local_30;\n  int local_2c;\n  char local_1f;\n  \n  iVar1 = *param_1;\n  __dirp = *(DIR **)(iVar1 + 0xc);\n  if (__dirp == (DIR *)0x0) {\n    uVar14 = param_1[0xb];\n    uVar18 = uVar14 & 0x10;\n    if (((uVar18 != 0) && (uVar18 = 0x20000, (uVar14 & 1) != 0)) &&\n       (uVar18 = *(uint *)(iVar1 + 0x30), uVar18 != 0)) {\n      uVar18 = 0x20000;\n    }\n    iVar7 = -100;\n    if ((uVar14 & 0x204) == 0x200) {\n      iVar7 = param_1[7];\n    }\n    local_2c = FUN_0001c620(iVar7,*(undefined4 *)(iVar1 + 0x18),\n                            (uVar14 & 0x800) << 7 | uVar18 | 0x90900);\n    if (local_2c < 0) {\n      *(undefined4 *)(iVar1 + 0xc) = 0;\njoined_r0x00019b00:\n      if (param_2 == 3) {\n        *(undefined2 *)(iVar1 + 0x3c) = 4;\n        piVar8 = __errno_location();\n        *(int *)(iVar1 + 0x20) = *piVar8;\n      }\n      return (void *)0x0;\n    }\n    pDVar13 = fdopendir(local_2c);\n    if (pDVar13 == (DIR *)0x0) {\n      piVar8 = __errno_location();\n      iVar7 = *piVar8;\n      close(local_2c);\n      *piVar8 = iVar7;\n      *(undefined4 *)(iVar1 + 0xc) = 0;\n      goto joined_r0x00019b00;\n    }\n    *(DIR **)(iVar1 + 0xc) = pDVar13;\n    if (*(short *)(iVar1 + 0x3c) == 0xb) {\n      uVar6 = FUN_00018640();\n      *(undefined2 *)(iVar1 + 0x3c) = uVar6;\n    }\n    else if ((param_1[0xb] & 0x100U) != 0) {\n      FUN_00019160();\n      FUN_00018640();\n      cVar5 = FUN_00019090();\n      if (cVar5 == '\0') {\n        piVar8 = __errno_location();\n        *piVar8 = 0xc;\n        return (void *)0x0;\n      }\n    }\n    local_34 = (-(uint)(param_1[10] == 0) & 0x186a1) - 1;\n    if (param_2 == 2) {\nLAB_00019a90:\n      bVar19 = false;\n      uVar14 = param_1[0xb];\n      goto LAB_000192d4;\n    }\n    if ((((param_1[0xb] & 0x38U) == 0x18) && (*(int *)(iVar1 + 0x58) == 2)) &&\n       (iVar7 = FUN_00018b60(), iVar7 != 0)) {\n      if (param_2 != 3) goto LAB_00019a90;\n      bVar2 = false;\n      bVar19 = true;\n    }\n    else {\n      bVar19 = param_2 == 3;\n      bVar2 = true;\n    }\n    if (((*(byte *)((int)param_1 + 0x2d) & 2) == 0) ||\n       (local_2c = FUN_0001c780(local_2c,0x406,3), -1 < local_2c)) {\n      iVar7 = FUN_00018e20(0);\n      if (iVar7 == 0) goto LAB_000192cc;\n      pDVar13 = *(DIR **)(iVar1 + 0xc);\n      uVar17 = *(ushort *)(iVar1 + 0x3e) | 1;\n      if ((bVar19) && (bVar2)) goto LAB_0001980f;\nLAB_0001982f:\n      *(ushort *)(iVar1 + 0x3e) = uVar17;\n      closedir(pDVar13);\n      uVar14 = param_1[0xb];\n      *(undefined4 *)(iVar1 + 0xc) = 0;\n      if (((uVar14 & 0x200) != 0) && (-1 < local_2c)) {\n        close(local_2c);\n        uVar14 = param_1[0xb];\n      }\n    }\n    else {\n      pDVar13 = *(DIR **)(iVar1 + 0xc);\n      uVar17 = *(ushort *)(iVar1 + 0x3e) | 1;\n      if ((bVar19) && (bVar2)) {\nLAB_0001980f:\n        piVar8 = __errno_location();\n        *(int *)(iVar1 + 0x20) = *piVar8;\n        goto LAB_0001982f;\n      }\n      *(ushort *)(iVar1 + 0x3e) = uVar17;\n      closedir(pDVar13);\n      uVar14 = param_1[0xb];\n    }\n    bVar19 = false;\n    *(undefined4 *)(iVar1 + 0xc) = 0;\n  }\n  else {\n    iVar7 = dirfd(__dirp);\n    if (iVar7 < 0) {\n      closedir(*(DIR **)(iVar1 + 0xc));\n      *(undefined4 *)(iVar1 + 0xc) = 0;\n      goto joined_r0x00019b00;\n    }\n    if (param_1[10] == 0) {\n      local_34 = 100000;\n      uVar14 = param_1[0xb];\n      bVar19 = true;\n    }\n    else {\n      local_34 = 0xffffffff;\nLAB_000192cc:\n      bVar19 = true;\n      uVar14 = param_1[0xb];\n    }\n  }\nLAB_000192d4:\n  uVar18 = *(uint *)(iVar1 + 0x28);\n  local_4c = uVar18;\n  local_30 = uVar18 - 1;\n  if (*(char *)(*(int *)(iVar1 + 0x1c) + -1 + uVar18) != '/') {\n    local_4c = uVar18 + 1;\n    local_30 = uVar18;\n  }\n  local_38 = (undefined1 *)0x0;\n  if ((uVar14 & 4) != 0) {\n    local_38 = (undefined1 *)(local_30 + param_1[5]) + 1;\n    *(undefined1 *)(local_30 + param_1[5]) = 0x2f;\n  }\n  local_44 = param_1[8] - local_4c;\n  bVar2 = false;\n  local_1f = '\0';\n  iVar7 = *(int *)(iVar1 + 0x30);\n  local_54 = (void *)0x0;\n  local_5c = 0;\n  local_48 = (void *)0x0;\nLAB_000193a8:\n  do {\n    do {\n      pDVar13 = *(DIR **)(iVar1 + 0xc);\n      if (pDVar13 == (DIR *)0x0) goto LAB_00019641;\n      piVar8 = __errno_location();\n      *piVar8 = 0;\n      pdVar9 = readdir64(pDVar13);\n      if (pdVar9 == (dirent64 *)0x0) {\n        if (*piVar8 != 0) {\n          *(int *)(iVar1 + 0x20) = *piVar8;\n          *(ushort *)(iVar1 + 0x3c) =\n               (-(ushort)(__dirp == (DIR *)0x0 && local_5c == 0) & 0xfffd) + 7;\n        }\n        if (*(DIR **)(iVar1 + 0xc) != (DIR *)0x0) {\n          closedir(*(DIR **)(iVar1 + 0xc));\n          *(undefined4 *)(iVar1 + 0xc) = 0;\n        }\n        goto LAB_00019641;\n      }\n    } while ((((*(byte *)(param_1 + 0xb) & 0x20) == 0) && (pdVar9->d_name[0] == '.')) &&\n            ((pdVar9->d_name[1] == '\0' || (*(short *)(pdVar9->d_name + 1) == 0x2e))));\n    sVar10 = strlen(pdVar9->d_name);\n    pvVar11 = (void *)FUN_000188d0();\n    if (pvVar11 == (void *)0x0) {\nLAB_00019910:\n      iVar7 = *piVar8;\n      free(pvVar11);\n      FUN_00018960();\n      closedir(*(DIR **)(iVar1 + 0xc));\n      *(undefined4 *)(iVar1 + 0xc) = 0;\n      *(undefined2 *)(iVar1 + 0x3c) = 7;\n      param_1[0xb] = param_1[0xb] | 0x4000;\n      *piVar8 = iVar7;\n      return (void *)0x0;\n    }\n    if (local_44 <= sVar10) {\n      iVar15 = param_1[5];\n      cVar5 = FUN_00018cc0();\n      if (cVar5 == '\0') goto LAB_00019910;\n      puVar4 = local_38;\n      if ((param_1[5] != iVar15) &&\n         (local_1f = cVar5, puVar4 = (undefined1 *)(param_1[5] + local_4c),\n         (*(byte *)(param_1 + 0xb) & 4) == 0)) {\n        puVar4 = local_38;\n      }\n      local_38 = puVar4;\n      local_44 = param_1[8] - local_4c;\n    }\n    if (CARRY4(sVar10,local_4c)) {\n      free(pvVar11);\n      FUN_00018960();\n      closedir(*(DIR **)(iVar1 + 0xc));\n      *(undefined4 *)(iVar1 + 0xc) = 0;\n      *(undefined2 *)(iVar1 + 0x3c) = 7;\n      param_1[0xb] = param_1[0xb] | 0x4000;\n      *piVar8 = 0x24;\n      return (void *)0x0;\n    }\n    uVar12 = *(undefined4 *)((int)&pdVar9->d_ino + 4);\n    *(int *)((int)pvVar11 + 0x30) = iVar7 + 1;\n    iVar15 = *param_1;\n    *(size_t *)((int)pvVar11 + 0x28) = sVar10 + local_4c;\n    *(int *)((int)pvVar11 + 4) = iVar15;\n    _Var3 = pdVar9->d_ino;\n    *(undefined4 *)((int)pvVar11 + 0xa0) = uVar12;\n    *(int *)((int)pvVar11 + 0x9c) = (int)_Var3;\n    uVar14 = param_1[0xb];\n    if ((uVar14 & 4) == 0) {\n      *(void **)((int)pvVar11 + 0x18) = (void *)((int)pvVar11 + 0xa4);\n    }\n    else {\n      *(undefined4 *)((int)pvVar11 + 0x18) = *(undefined4 *)((int)pvVar11 + 0x1c);\n      memmove(local_38,(void *)((int)pvVar11 + 0xa4),*(int *)((int)pvVar11 + 0x34) + 1);\n      uVar14 = param_1[0xb];\n    }\n    if ((param_1[10] == 0) || ((uVar14 & 0x400) != 0)) {\n      uVar18 = pdVar9->d_type - 1;\n      if (((uVar14 & 0x18) == 0x18) && ((pdVar9->d_type & 0xfb) != 0)) {\n        *(undefined2 *)((int)pvVar11 + 0x3c) = 0xb;\n        if (uVar18 < 0xc) {\n          *(undefined4 *)((int)pvVar11 + 0x54) = *(undefined4 *)(&DAT_0001e180 + uVar18 * 4);\n          uVar12 = 1;\n        }\n        else {\n          *(undefined4 *)((int)pvVar11 + 0x54) = 0;\n          uVar12 = 1;\n        }\n      }\n      else {\n        *(undefined2 *)((int)pvVar11 + 0x3c) = 0xb;\n        if (uVar18 < 0xc) {\n          *(undefined4 *)((int)pvVar11 + 0x54) = *(undefined4 *)(&DAT_0001e180 + uVar18 * 4);\n          uVar12 = 2;\n        }\n        else {\n          *(undefined4 *)((int)pvVar11 + 0x54) = 0;\n          uVar12 = 2;\n        }\n      }\n      *(undefined4 *)((int)pvVar11 + 0x70) = uVar12;\n      *(undefined4 *)((int)pvVar11 + 0x74) = 0;\n    }\n    else {\n      uVar6 = FUN_00018640();\n      *(undefined2 *)((int)pvVar11 + 0x3c) = uVar6;\n    }\n    *(undefined4 *)((int)pvVar11 + 8) = 0;\n    pvVar16 = pvVar11;\n    if (local_48 != (void *)0x0) {\n      *(void **)((int)local_54 + 8) = pvVar11;\n      pvVar16 = local_48;\n    }\n    local_48 = pvVar16;\n    local_54 = pvVar11;\n    if (local_5c == 10000) {\n      if ((param_1[10] != 0) ||\n         (((iVar15 = FUN_00018a00(), iVar15 != 0x6969 && (iVar15 != 0x1021994)) &&\n          (bVar2 = true, iVar15 != -0xacb2be)))) {\n        local_5c = 0x2711;\n        goto LAB_000193a8;\n      }\n      bVar2 = false;\n    }\n    local_5c = local_5c + 1;\n  } while (local_5c < local_34);\nLAB_00019641:\n  if (local_1f != '\0') {\n    iVar15 = param_1[5];\n    for (iVar7 = param_1[1]; pvVar11 = local_48, iVar7 != 0; iVar7 = *(int *)(iVar7 + 8)) {\n      if (*(int *)(iVar7 + 0x18) != iVar7 + 0xa4) {\n        *(int *)(iVar7 + 0x18) = (*(int *)(iVar7 + 0x18) - *(int *)(iVar7 + 0x1c)) + iVar15;\n      }\n      *(int *)(iVar7 + 0x1c) = iVar15;\n    }\n    while (pvVar16 = pvVar11, -1 < *(int *)((int)pvVar16 + 0x30)) {\n      if (*(int *)((int)pvVar16 + 0x18) != (int)pvVar16 + 0xa4) {\n        *(int *)((int)pvVar16 + 0x18) =\n             (*(int *)((int)pvVar16 + 0x18) - *(int *)((int)pvVar16 + 0x1c)) + iVar15;\n      }\n      *(int *)((int)pvVar16 + 0x1c) = iVar15;\n      pvVar11 = *(void **)((int)pvVar16 + 8);\n      if (*(void **)((int)pvVar16 + 8) == (void *)0x0) {\n        pvVar11 = *(void **)((int)pvVar16 + 4);\n      }\n    }\n  }\n  if ((*(byte *)(param_1 + 0xb) & 4) != 0) {\n    if ((param_1[8] == local_4c) || (local_5c == 0)) {\n      local_38 = local_38 + -1;\n    }\n    *local_38 = 0;\n  }\n  if ((__dirp == (DIR *)0x0) && (bVar19)) {\n    if ((param_2 != 1) && (local_5c != 0)) goto LAB_000196b9;\n    if (*(int *)(iVar1 + 0x30) == 0) {\n      iVar7 = FUN_00018c40();\n    }\n    else {\n      iVar7 = FUN_00018e20(&DAT_0001e166);\n    }\n    if (iVar7 != 0) {\n      *(undefined2 *)(iVar1 + 0x3c) = 7;\n      param_1[0xb] = param_1[0xb] | 0x4000;\n      FUN_00018960();\n      return (void *)0x0;\n    }\n  }\n  if (local_5c == 0) {\n    if (((param_2 == 3) && (*(short *)(iVar1 + 0x3c) != 4)) && (*(short *)(iVar1 + 0x3c) != 7)) {\n      *(undefined2 *)(iVar1 + 0x3c) = 6;\n    }\n    FUN_00018960();\n    return (void *)0x0;\n  }\nLAB_000196b9:\n  if (bVar2) {\n    param_1[10] = (int)FUN_00018600;\n    pvVar11 = (void *)FUN_000187e0();\n    param_1[10] = 0;\n    return pvVar11;\n  }\n  if ((param_1[10] != 0) && (local_5c != 1)) {\n    pvVar11 = (void *)FUN_000187e0();\n    return pvVar11;\n  }\n  return local_48;\n}" (primitive_type "void") (pointer_declarator "* __regparm3 FUN_00019270(int *param_1,int param_2)" (* "*") (ERROR "__regparm3" (identifier "__regparm3")) (function_declarator "FUN_00019270(int *param_1,int param_2)" (identifier "FUN_00019270") (parameter_list "(int *param_1,int param_2)" (( "(") (parameter_declaration "int *param_1" (primitive_type "int") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "int param_2" (primitive_type "int") (identifier "param_2")) () ")")))) (compound_statement "{\n  int iVar1;\n  DIR *__dirp;\n  bool bVar2;\n  __ino64_t _Var3;\n  undefined1 *puVar4;\n  char cVar5;\n  undefined2 uVar6;\n  int iVar7;\n  int *piVar8;\n  dirent64 *pdVar9;\n  size_t sVar10;\n  void *pvVar11;\n  undefined4 uVar12;\n  DIR *pDVar13;\n  uint uVar14;\n  int iVar15;\n  void *pvVar16;\n  ushort uVar17;\n  uint uVar18;\n  bool bVar19;\n  uint local_5c;\n  void *local_54;\n  uint local_4c;\n  void *local_48;\n  uint local_44;\n  undefined1 *local_38;\n  uint local_34;\n  uint local_30;\n  int local_2c;\n  char local_1f;\n  \n  iVar1 = *param_1;\n  __dirp = *(DIR **)(iVar1 + 0xc);\n  if (__dirp == (DIR *)0x0) {\n    uVar14 = param_1[0xb];\n    uVar18 = uVar14 & 0x10;\n    if (((uVar18 != 0) && (uVar18 = 0x20000, (uVar14 & 1) != 0)) &&\n       (uVar18 = *(uint *)(iVar1 + 0x30), uVar18 != 0)) {\n      uVar18 = 0x20000;\n    }\n    iVar7 = -100;\n    if ((uVar14 & 0x204) == 0x200) {\n      iVar7 = param_1[7];\n    }\n    local_2c = FUN_0001c620(iVar7,*(undefined4 *)(iVar1 + 0x18),\n                            (uVar14 & 0x800) << 7 | uVar18 | 0x90900);\n    if (local_2c < 0) {\n      *(undefined4 *)(iVar1 + 0xc) = 0;\njoined_r0x00019b00:\n      if (param_2 == 3) {\n        *(undefined2 *)(iVar1 + 0x3c) = 4;\n        piVar8 = __errno_location();\n        *(int *)(iVar1 + 0x20) = *piVar8;\n      }\n      return (void *)0x0;\n    }\n    pDVar13 = fdopendir(local_2c);\n    if (pDVar13 == (DIR *)0x0) {\n      piVar8 = __errno_location();\n      iVar7 = *piVar8;\n      close(local_2c);\n      *piVar8 = iVar7;\n      *(undefined4 *)(iVar1 + 0xc) = 0;\n      goto joined_r0x00019b00;\n    }\n    *(DIR **)(iVar1 + 0xc) = pDVar13;\n    if (*(short *)(iVar1 + 0x3c) == 0xb) {\n      uVar6 = FUN_00018640();\n      *(undefined2 *)(iVar1 + 0x3c) = uVar6;\n    }\n    else if ((param_1[0xb] & 0x100U) != 0) {\n      FUN_00019160();\n      FUN_00018640();\n      cVar5 = FUN_00019090();\n      if (cVar5 == '\0') {\n        piVar8 = __errno_location();\n        *piVar8 = 0xc;\n        return (void *)0x0;\n      }\n    }\n    local_34 = (-(uint)(param_1[10] == 0) & 0x186a1) - 1;\n    if (param_2 == 2) {\nLAB_00019a90:\n      bVar19 = false;\n      uVar14 = param_1[0xb];\n      goto LAB_000192d4;\n    }\n    if ((((param_1[0xb] & 0x38U) == 0x18) && (*(int *)(iVar1 + 0x58) == 2)) &&\n       (iVar7 = FUN_00018b60(), iVar7 != 0)) {\n      if (param_2 != 3) goto LAB_00019a90;\n      bVar2 = false;\n      bVar19 = true;\n    }\n    else {\n      bVar19 = param_2 == 3;\n      bVar2 = true;\n    }\n    if (((*(byte *)((int)param_1 + 0x2d) & 2) == 0) ||\n       (local_2c = FUN_0001c780(local_2c,0x406,3), -1 < local_2c)) {\n      iVar7 = FUN_00018e20(0);\n      if (iVar7 == 0) goto LAB_000192cc;\n      pDVar13 = *(DIR **)(iVar1 + 0xc);\n      uVar17 = *(ushort *)(iVar1 + 0x3e) | 1;\n      if ((bVar19) && (bVar2)) goto LAB_0001980f;\nLAB_0001982f:\n      *(ushort *)(iVar1 + 0x3e) = uVar17;\n      closedir(pDVar13);\n      uVar14 = param_1[0xb];\n      *(undefined4 *)(iVar1 + 0xc) = 0;\n      if (((uVar14 & 0x200) != 0) && (-1 < local_2c)) {\n        close(local_2c);\n        uVar14 = param_1[0xb];\n      }\n    }\n    else {\n      pDVar13 = *(DIR **)(iVar1 + 0xc);\n      uVar17 = *(ushort *)(iVar1 + 0x3e) | 1;\n      if ((bVar19) && (bVar2)) {\nLAB_0001980f:\n        piVar8 = __errno_location();\n        *(int *)(iVar1 + 0x20) = *piVar8;\n        goto LAB_0001982f;\n      }\n      *(ushort *)(iVar1 + 0x3e) = uVar17;\n      closedir(pDVar13);\n      uVar14 = param_1[0xb];\n    }\n    bVar19 = false;\n    *(undefined4 *)(iVar1 + 0xc) = 0;\n  }\n  else {\n    iVar7 = dirfd(__dirp);\n    if (iVar7 < 0) {\n      closedir(*(DIR **)(iVar1 + 0xc));\n      *(undefined4 *)(iVar1 + 0xc) = 0;\n      goto joined_r0x00019b00;\n    }\n    if (param_1[10] == 0) {\n      local_34 = 100000;\n      uVar14 = param_1[0xb];\n      bVar19 = true;\n    }\n    else {\n      local_34 = 0xffffffff;\nLAB_000192cc:\n      bVar19 = true;\n      uVar14 = param_1[0xb];\n    }\n  }\nLAB_000192d4:\n  uVar18 = *(uint *)(iVar1 + 0x28);\n  local_4c = uVar18;\n  local_30 = uVar18 - 1;\n  if (*(char *)(*(int *)(iVar1 + 0x1c) + -1 + uVar18) != '/') {\n    local_4c = uVar18 + 1;\n    local_30 = uVar18;\n  }\n  local_38 = (undefined1 *)0x0;\n  if ((uVar14 & 4) != 0) {\n    local_38 = (undefined1 *)(local_30 + param_1[5]) + 1;\n    *(undefined1 *)(local_30 + param_1[5]) = 0x2f;\n  }\n  local_44 = param_1[8] - local_4c;\n  bVar2 = false;\n  local_1f = '\0';\n  iVar7 = *(int *)(iVar1 + 0x30);\n  local_54 = (void *)0x0;\n  local_5c = 0;\n  local_48 = (void *)0x0;\nLAB_000193a8:\n  do {\n    do {\n      pDVar13 = *(DIR **)(iVar1 + 0xc);\n      if (pDVar13 == (DIR *)0x0) goto LAB_00019641;\n      piVar8 = __errno_location();\n      *piVar8 = 0;\n      pdVar9 = readdir64(pDVar13);\n      if (pdVar9 == (dirent64 *)0x0) {\n        if (*piVar8 != 0) {\n          *(int *)(iVar1 + 0x20) = *piVar8;\n          *(ushort *)(iVar1 + 0x3c) =\n               (-(ushort)(__dirp == (DIR *)0x0 && local_5c == 0) & 0xfffd) + 7;\n        }\n        if (*(DIR **)(iVar1 + 0xc) != (DIR *)0x0) {\n          closedir(*(DIR **)(iVar1 + 0xc));\n          *(undefined4 *)(iVar1 + 0xc) = 0;\n        }\n        goto LAB_00019641;\n      }\n    } while ((((*(byte *)(param_1 + 0xb) & 0x20) == 0) && (pdVar9->d_name[0] == '.')) &&\n            ((pdVar9->d_name[1] == '\0' || (*(short *)(pdVar9->d_name + 1) == 0x2e))));\n    sVar10 = strlen(pdVar9->d_name);\n    pvVar11 = (void *)FUN_000188d0();\n    if (pvVar11 == (void *)0x0) {\nLAB_00019910:\n      iVar7 = *piVar8;\n      free(pvVar11);\n      FUN_00018960();\n      closedir(*(DIR **)(iVar1 + 0xc));\n      *(undefined4 *)(iVar1 + 0xc) = 0;\n      *(undefined2 *)(iVar1 + 0x3c) = 7;\n      param_1[0xb] = param_1[0xb] | 0x4000;\n      *piVar8 = iVar7;\n      return (void *)0x0;\n    }\n    if (local_44 <= sVar10) {\n      iVar15 = param_1[5];\n      cVar5 = FUN_00018cc0();\n      if (cVar5 == '\0') goto LAB_00019910;\n      puVar4 = local_38;\n      if ((param_1[5] != iVar15) &&\n         (local_1f = cVar5, puVar4 = (undefined1 *)(param_1[5] + local_4c),\n         (*(byte *)(param_1 + 0xb) & 4) == 0)) {\n        puVar4 = local_38;\n      }\n      local_38 = puVar4;\n      local_44 = param_1[8] - local_4c;\n    }\n    if (CARRY4(sVar10,local_4c)) {\n      free(pvVar11);\n      FUN_00018960();\n      closedir(*(DIR **)(iVar1 + 0xc));\n      *(undefined4 *)(iVar1 + 0xc) = 0;\n      *(undefined2 *)(iVar1 + 0x3c) = 7;\n      param_1[0xb] = param_1[0xb] | 0x4000;\n      *piVar8 = 0x24;\n      return (void *)0x0;\n    }\n    uVar12 = *(undefined4 *)((int)&pdVar9->d_ino + 4);\n    *(int *)((int)pvVar11 + 0x30) = iVar7 + 1;\n    iVar15 = *param_1;\n    *(size_t *)((int)pvVar11 + 0x28) = sVar10 + local_4c;\n    *(int *)((int)pvVar11 + 4) = iVar15;\n    _Var3 = pdVar9->d_ino;\n    *(undefined4 *)((int)pvVar11 + 0xa0) = uVar12;\n    *(int *)((int)pvVar11 + 0x9c) = (int)_Var3;\n    uVar14 = param_1[0xb];\n    if ((uVar14 & 4) == 0) {\n      *(void **)((int)pvVar11 + 0x18) = (void *)((int)pvVar11 + 0xa4);\n    }\n    else {\n      *(undefined4 *)((int)pvVar11 + 0x18) = *(undefined4 *)((int)pvVar11 + 0x1c);\n      memmove(local_38,(void *)((int)pvVar11 + 0xa4),*(int *)((int)pvVar11 + 0x34) + 1);\n      uVar14 = param_1[0xb];\n    }\n    if ((param_1[10] == 0) || ((uVar14 & 0x400) != 0)) {\n      uVar18 = pdVar9->d_type - 1;\n      if (((uVar14 & 0x18) == 0x18) && ((pdVar9->d_type & 0xfb) != 0)) {\n        *(undefined2 *)((int)pvVar11 + 0x3c) = 0xb;\n        if (uVar18 < 0xc) {\n          *(undefined4 *)((int)pvVar11 + 0x54) = *(undefined4 *)(&DAT_0001e180 + uVar18 * 4);\n          uVar12 = 1;\n        }\n        else {\n          *(undefined4 *)((int)pvVar11 + 0x54) = 0;\n          uVar12 = 1;\n        }\n      }\n      else {\n        *(undefined2 *)((int)pvVar11 + 0x3c) = 0xb;\n        if (uVar18 < 0xc) {\n          *(undefined4 *)((int)pvVar11 + 0x54) = *(undefined4 *)(&DAT_0001e180 + uVar18 * 4);\n          uVar12 = 2;\n        }\n        else {\n          *(undefined4 *)((int)pvVar11 + 0x54) = 0;\n          uVar12 = 2;\n        }\n      }\n      *(undefined4 *)((int)pvVar11 + 0x70) = uVar12;\n      *(undefined4 *)((int)pvVar11 + 0x74) = 0;\n    }\n    else {\n      uVar6 = FUN_00018640();\n      *(undefined2 *)((int)pvVar11 + 0x3c) = uVar6;\n    }\n    *(undefined4 *)((int)pvVar11 + 8) = 0;\n    pvVar16 = pvVar11;\n    if (local_48 != (void *)0x0) {\n      *(void **)((int)local_54 + 8) = pvVar11;\n      pvVar16 = local_48;\n    }\n    local_48 = pvVar16;\n    local_54 = pvVar11;\n    if (local_5c == 10000) {\n      if ((param_1[10] != 0) ||\n         (((iVar15 = FUN_00018a00(), iVar15 != 0x6969 && (iVar15 != 0x1021994)) &&\n          (bVar2 = true, iVar15 != -0xacb2be)))) {\n        local_5c = 0x2711;\n        goto LAB_000193a8;\n      }\n      bVar2 = false;\n    }\n    local_5c = local_5c + 1;\n  } while (local_5c < local_34);\nLAB_00019641:\n  if (local_1f != '\0') {\n    iVar15 = param_1[5];\n    for (iVar7 = param_1[1]; pvVar11 = local_48, iVar7 != 0; iVar7 = *(int *)(iVar7 + 8)) {\n      if (*(int *)(iVar7 + 0x18) != iVar7 + 0xa4) {\n        *(int *)(iVar7 + 0x18) = (*(int *)(iVar7 + 0x18) - *(int *)(iVar7 + 0x1c)) + iVar15;\n      }\n      *(int *)(iVar7 + 0x1c) = iVar15;\n    }\n    while (pvVar16 = pvVar11, -1 < *(int *)((int)pvVar16 + 0x30)) {\n      if (*(int *)((int)pvVar16 + 0x18) != (int)pvVar16 + 0xa4) {\n        *(int *)((int)pvVar16 + 0x18) =\n             (*(int *)((int)pvVar16 + 0x18) - *(int *)((int)pvVar16 + 0x1c)) + iVar15;\n      }\n      *(int *)((int)pvVar16 + 0x1c) = iVar15;\n      pvVar11 = *(void **)((int)pvVar16 + 8);\n      if (*(void **)((int)pvVar16 + 8) == (void *)0x0) {\n        pvVar11 = *(void **)((int)pvVar16 + 4);\n      }\n    }\n  }\n  if ((*(byte *)(param_1 + 0xb) & 4) != 0) {\n    if ((param_1[8] == local_4c) || (local_5c == 0)) {\n      local_38 = local_38 + -1;\n    }\n    *local_38 = 0;\n  }\n  if ((__dirp == (DIR *)0x0) && (bVar19)) {\n    if ((param_2 != 1) && (local_5c != 0)) goto LAB_000196b9;\n    if (*(int *)(iVar1 + 0x30) == 0) {\n      iVar7 = FUN_00018c40();\n    }\n    else {\n      iVar7 = FUN_00018e20(&DAT_0001e166);\n    }\n    if (iVar7 != 0) {\n      *(undefined2 *)(iVar1 + 0x3c) = 7;\n      param_1[0xb] = param_1[0xb] | 0x4000;\n      FUN_00018960();\n      return (void *)0x0;\n    }\n  }\n  if (local_5c == 0) {\n    if (((param_2 == 3) && (*(short *)(iVar1 + 0x3c) != 4)) && (*(short *)(iVar1 + 0x3c) != 7)) {\n      *(undefined2 *)(iVar1 + 0x3c) = 6;\n    }\n    FUN_00018960();\n    return (void *)0x0;\n  }\nLAB_000196b9:\n  if (bVar2) {\n    param_1[10] = (int)FUN_00018600;\n    pvVar11 = (void *)FUN_000187e0();\n    param_1[10] = 0;\n    return pvVar11;\n  }\n  if ((param_1[10] != 0) && (local_5c != 1)) {\n    pvVar11 = (void *)FUN_000187e0();\n    return pvVar11;\n  }\n  return local_48;\n}" ({ "{") (declaration "int iVar1;" (primitive_type "int") (identifier "iVar1") (; ";")) (declaration "DIR *__dirp;" (type_identifier "DIR") (pointer_declarator "*__dirp" (* "*") (identifier "__dirp")) (; ";")) (declaration "bool bVar2;" (primitive_type "bool") (identifier "bVar2") (; ";")) (declaration "__ino64_t _Var3;" (type_identifier "__ino64_t") (identifier "_Var3") (; ";")) (declaration "undefined1 *puVar4;" (type_identifier "undefined1") (pointer_declarator "*puVar4" (* "*") (identifier "puVar4")) (; ";")) (declaration "char cVar5;" (primitive_type "char") (identifier "cVar5") (; ";")) (declaration "undefined2 uVar6;" (type_identifier "undefined2") (identifier "uVar6") (; ";")) (declaration "int iVar7;" (primitive_type "int") (identifier "iVar7") (; ";")) (declaration "int *piVar8;" (primitive_type "int") (pointer_declarator "*piVar8" (* "*") (identifier "piVar8")) (; ";")) (declaration "dirent64 *pdVar9;" (type_identifier "dirent64") (pointer_declarator "*pdVar9" (* "*") (identifier "pdVar9")) (; ";")) (declaration "size_t sVar10;" (primitive_type "size_t") (identifier "sVar10") (; ";")) (declaration "void *pvVar11;" (primitive_type "void") (pointer_declarator "*pvVar11" (* "*") (identifier "pvVar11")) (; ";")) (declaration "undefined4 uVar12;" (type_identifier "undefined4") (identifier "uVar12") (; ";")) (declaration "DIR *pDVar13;" (type_identifier "DIR") (pointer_declarator "*pDVar13" (* "*") (identifier "pDVar13")) (; ";")) (declaration "uint uVar14;" (type_identifier "uint") (identifier "uVar14") (; ";")) (declaration "int iVar15;" (primitive_type "int") (identifier "iVar15") (; ";")) (declaration "void *pvVar16;" (primitive_type "void") (pointer_declarator "*pvVar16" (* "*") (identifier "pvVar16")) (; ";")) (declaration "ushort uVar17;" (type_identifier "ushort") (identifier "uVar17") (; ";")) (declaration "uint uVar18;" (type_identifier "uint") (identifier "uVar18") (; ";")) (declaration "bool bVar19;" (primitive_type "bool") (identifier "bVar19") (; ";")) (declaration "uint local_5c;" (type_identifier "uint") (identifier "local_5c") (; ";")) (declaration "void *local_54;" (primitive_type "void") (pointer_declarator "*local_54" (* "*") (identifier "local_54")) (; ";")) (declaration "uint local_4c;" (type_identifier "uint") (identifier "local_4c") (; ";")) (declaration "void *local_48;" (primitive_type "void") (pointer_declarator "*local_48" (* "*") (identifier "local_48")) (; ";")) (declaration "uint local_44;" (type_identifier "uint") (identifier "local_44") (; ";")) (declaration "undefined1 *local_38;" (type_identifier "undefined1") (pointer_declarator "*local_38" (* "*") (identifier "local_38")) (; ";")) (declaration "uint local_34;" (type_identifier "uint") (identifier "local_34") (; ";")) (declaration "uint local_30;" (type_identifier "uint") (identifier "local_30") (; ";")) (declaration "int local_2c;" (primitive_type "int") (identifier "local_2c") (; ";")) (declaration "char local_1f;" (primitive_type "char") (identifier "local_1f") (; ";")) (expression_statement "iVar1 = *param_1;" (assignment_expression "iVar1 = *param_1" (identifier "iVar1") (= "=") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (; ";")) (expression_statement "__dirp = *(DIR **)(iVar1 + 0xc);" (assignment_expression "__dirp = *(DIR **)(iVar1 + 0xc)" (identifier "__dirp") (= "=") (pointer_expression "*(DIR **)(iVar1 + 0xc)" (* "*") (cast_expression "(DIR **)(iVar1 + 0xc)" (( "(") (type_descriptor "DIR **" (type_identifier "DIR") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar1 + 0xc)" (( "(") (binary_expression "iVar1 + 0xc" (identifier "iVar1") (+ "+") (number_literal "0xc")) () ")"))))) (; ";")) (if_statement "if (__dirp == (DIR *)0x0) {\n    uVar14 = param_1[0xb];\n    uVar18 = uVar14 & 0x10;\n    if (((uVar18 != 0) && (uVar18 = 0x20000, (uVar14 & 1) != 0)) &&\n       (uVar18 = *(uint *)(iVar1 + 0x30), uVar18 != 0)) {\n      uVar18 = 0x20000;\n    }\n    iVar7 = -100;\n    if ((uVar14 & 0x204) == 0x200) {\n      iVar7 = param_1[7];\n    }\n    local_2c = FUN_0001c620(iVar7,*(undefined4 *)(iVar1 + 0x18),\n                            (uVar14 & 0x800) << 7 | uVar18 | 0x90900);\n    if (local_2c < 0) {\n      *(undefined4 *)(iVar1 + 0xc) = 0;\njoined_r0x00019b00:\n      if (param_2 == 3) {\n        *(undefined2 *)(iVar1 + 0x3c) = 4;\n        piVar8 = __errno_location();\n        *(int *)(iVar1 + 0x20) = *piVar8;\n      }\n      return (void *)0x0;\n    }\n    pDVar13 = fdopendir(local_2c);\n    if (pDVar13 == (DIR *)0x0) {\n      piVar8 = __errno_location();\n      iVar7 = *piVar8;\n      close(local_2c);\n      *piVar8 = iVar7;\n      *(undefined4 *)(iVar1 + 0xc) = 0;\n      goto joined_r0x00019b00;\n    }\n    *(DIR **)(iVar1 + 0xc) = pDVar13;\n    if (*(short *)(iVar1 + 0x3c) == 0xb) {\n      uVar6 = FUN_00018640();\n      *(undefined2 *)(iVar1 + 0x3c) = uVar6;\n    }\n    else if ((param_1[0xb] & 0x100U) != 0) {\n      FUN_00019160();\n      FUN_00018640();\n      cVar5 = FUN_00019090();\n      if (cVar5 == '\0') {\n        piVar8 = __errno_location();\n        *piVar8 = 0xc;\n        return (void *)0x0;\n      }\n    }\n    local_34 = (-(uint)(param_1[10] == 0) & 0x186a1) - 1;\n    if (param_2 == 2) {\nLAB_00019a90:\n      bVar19 = false;\n      uVar14 = param_1[0xb];\n      goto LAB_000192d4;\n    }\n    if ((((param_1[0xb] & 0x38U) == 0x18) && (*(int *)(iVar1 + 0x58) == 2)) &&\n       (iVar7 = FUN_00018b60(), iVar7 != 0)) {\n      if (param_2 != 3) goto LAB_00019a90;\n      bVar2 = false;\n      bVar19 = true;\n    }\n    else {\n      bVar19 = param_2 == 3;\n      bVar2 = true;\n    }\n    if (((*(byte *)((int)param_1 + 0x2d) & 2) == 0) ||\n       (local_2c = FUN_0001c780(local_2c,0x406,3), -1 < local_2c)) {\n      iVar7 = FUN_00018e20(0);\n      if (iVar7 == 0) goto LAB_000192cc;\n      pDVar13 = *(DIR **)(iVar1 + 0xc);\n      uVar17 = *(ushort *)(iVar1 + 0x3e) | 1;\n      if ((bVar19) && (bVar2)) goto LAB_0001980f;\nLAB_0001982f:\n      *(ushort *)(iVar1 + 0x3e) = uVar17;\n      closedir(pDVar13);\n      uVar14 = param_1[0xb];\n      *(undefined4 *)(iVar1 + 0xc) = 0;\n      if (((uVar14 & 0x200) != 0) && (-1 < local_2c)) {\n        close(local_2c);\n        uVar14 = param_1[0xb];\n      }\n    }\n    else {\n      pDVar13 = *(DIR **)(iVar1 + 0xc);\n      uVar17 = *(ushort *)(iVar1 + 0x3e) | 1;\n      if ((bVar19) && (bVar2)) {\nLAB_0001980f:\n        piVar8 = __errno_location();\n        *(int *)(iVar1 + 0x20) = *piVar8;\n        goto LAB_0001982f;\n      }\n      *(ushort *)(iVar1 + 0x3e) = uVar17;\n      closedir(pDVar13);\n      uVar14 = param_1[0xb];\n    }\n    bVar19 = false;\n    *(undefined4 *)(iVar1 + 0xc) = 0;\n  }\n  else {\n    iVar7 = dirfd(__dirp);\n    if (iVar7 < 0) {\n      closedir(*(DIR **)(iVar1 + 0xc));\n      *(undefined4 *)(iVar1 + 0xc) = 0;\n      goto joined_r0x00019b00;\n    }\n    if (param_1[10] == 0) {\n      local_34 = 100000;\n      uVar14 = param_1[0xb];\n      bVar19 = true;\n    }\n    else {\n      local_34 = 0xffffffff;\nLAB_000192cc:\n      bVar19 = true;\n      uVar14 = param_1[0xb];\n    }\n  }" (if "if") (parenthesized_expression "(__dirp == (DIR *)0x0)" (( "(") (binary_expression "__dirp == (DIR *)0x0" (identifier "__dirp") (== "==") (cast_expression "(DIR *)0x0" (( "(") (type_descriptor "DIR *" (type_identifier "DIR") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    uVar14 = param_1[0xb];\n    uVar18 = uVar14 & 0x10;\n    if (((uVar18 != 0) && (uVar18 = 0x20000, (uVar14 & 1) != 0)) &&\n       (uVar18 = *(uint *)(iVar1 + 0x30), uVar18 != 0)) {\n      uVar18 = 0x20000;\n    }\n    iVar7 = -100;\n    if ((uVar14 & 0x204) == 0x200) {\n      iVar7 = param_1[7];\n    }\n    local_2c = FUN_0001c620(iVar7,*(undefined4 *)(iVar1 + 0x18),\n                            (uVar14 & 0x800) << 7 | uVar18 | 0x90900);\n    if (local_2c < 0) {\n      *(undefined4 *)(iVar1 + 0xc) = 0;\njoined_r0x00019b00:\n      if (param_2 == 3) {\n        *(undefined2 *)(iVar1 + 0x3c) = 4;\n        piVar8 = __errno_location();\n        *(int *)(iVar1 + 0x20) = *piVar8;\n      }\n      return (void *)0x0;\n    }\n    pDVar13 = fdopendir(local_2c);\n    if (pDVar13 == (DIR *)0x0) {\n      piVar8 = __errno_location();\n      iVar7 = *piVar8;\n      close(local_2c);\n      *piVar8 = iVar7;\n      *(undefined4 *)(iVar1 + 0xc) = 0;\n      goto joined_r0x00019b00;\n    }\n    *(DIR **)(iVar1 + 0xc) = pDVar13;\n    if (*(short *)(iVar1 + 0x3c) == 0xb) {\n      uVar6 = FUN_00018640();\n      *(undefined2 *)(iVar1 + 0x3c) = uVar6;\n    }\n    else if ((param_1[0xb] & 0x100U) != 0) {\n      FUN_00019160();\n      FUN_00018640();\n      cVar5 = FUN_00019090();\n      if (cVar5 == '\0') {\n        piVar8 = __errno_location();\n        *piVar8 = 0xc;\n        return (void *)0x0;\n      }\n    }\n    local_34 = (-(uint)(param_1[10] == 0) & 0x186a1) - 1;\n    if (param_2 == 2) {\nLAB_00019a90:\n      bVar19 = false;\n      uVar14 = param_1[0xb];\n      goto LAB_000192d4;\n    }\n    if ((((param_1[0xb] & 0x38U) == 0x18) && (*(int *)(iVar1 + 0x58) == 2)) &&\n       (iVar7 = FUN_00018b60(), iVar7 != 0)) {\n      if (param_2 != 3) goto LAB_00019a90;\n      bVar2 = false;\n      bVar19 = true;\n    }\n    else {\n      bVar19 = param_2 == 3;\n      bVar2 = true;\n    }\n    if (((*(byte *)((int)param_1 + 0x2d) & 2) == 0) ||\n       (local_2c = FUN_0001c780(local_2c,0x406,3), -1 < local_2c)) {\n      iVar7 = FUN_00018e20(0);\n      if (iVar7 == 0) goto LAB_000192cc;\n      pDVar13 = *(DIR **)(iVar1 + 0xc);\n      uVar17 = *(ushort *)(iVar1 + 0x3e) | 1;\n      if ((bVar19) && (bVar2)) goto LAB_0001980f;\nLAB_0001982f:\n      *(ushort *)(iVar1 + 0x3e) = uVar17;\n      closedir(pDVar13);\n      uVar14 = param_1[0xb];\n      *(undefined4 *)(iVar1 + 0xc) = 0;\n      if (((uVar14 & 0x200) != 0) && (-1 < local_2c)) {\n        close(local_2c);\n        uVar14 = param_1[0xb];\n      }\n    }\n    else {\n      pDVar13 = *(DIR **)(iVar1 + 0xc);\n      uVar17 = *(ushort *)(iVar1 + 0x3e) | 1;\n      if ((bVar19) && (bVar2)) {\nLAB_0001980f:\n        piVar8 = __errno_location();\n        *(int *)(iVar1 + 0x20) = *piVar8;\n        goto LAB_0001982f;\n      }\n      *(ushort *)(iVar1 + 0x3e) = uVar17;\n      closedir(pDVar13);\n      uVar14 = param_1[0xb];\n    }\n    bVar19 = false;\n    *(undefined4 *)(iVar1 + 0xc) = 0;\n  }" ({ "{") (expression_statement "uVar14 = param_1[0xb];" (assignment_expression "uVar14 = param_1[0xb]" (identifier "uVar14") (= "=") (subscript_expression "param_1[0xb]" (identifier "param_1") ([ "[") (number_literal "0xb") (] "]"))) (; ";")) (expression_statement "uVar18 = uVar14 & 0x10;" (assignment_expression "uVar18 = uVar14 & 0x10" (identifier "uVar18") (= "=") (binary_expression "uVar14 & 0x10" (identifier "uVar14") (& "&") (number_literal "0x10"))) (; ";")) (if_statement "if (((uVar18 != 0) && (uVar18 = 0x20000, (uVar14 & 1) != 0)) &&\n       (uVar18 = *(uint *)(iVar1 + 0x30), uVar18 != 0)) {\n      uVar18 = 0x20000;\n    }" (if "if") (parenthesized_expression "(((uVar18 != 0) && (uVar18 = 0x20000, (uVar14 & 1) != 0)) &&\n       (uVar18 = *(uint *)(iVar1 + 0x30), uVar18 != 0))" (( "(") (binary_expression "((uVar18 != 0) && (uVar18 = 0x20000, (uVar14 & 1) != 0)) &&\n       (uVar18 = *(uint *)(iVar1 + 0x30), uVar18 != 0)" (parenthesized_expression "((uVar18 != 0) && (uVar18 = 0x20000, (uVar14 & 1) != 0))" (( "(") (binary_expression "(uVar18 != 0) && (uVar18 = 0x20000, (uVar14 & 1) != 0)" (parenthesized_expression "(uVar18 != 0)" (( "(") (binary_expression "uVar18 != 0" (identifier "uVar18") (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(uVar18 = 0x20000, (uVar14 & 1) != 0)" (( "(") (comma_expression "uVar18 = 0x20000, (uVar14 & 1) != 0" (assignment_expression "uVar18 = 0x20000" (identifier "uVar18") (= "=") (number_literal "0x20000")) (, ",") (binary_expression "(uVar14 & 1) != 0" (parenthesized_expression "(uVar14 & 1)" (( "(") (binary_expression "uVar14 & 1" (identifier "uVar14") (& "&") (number_literal "1")) () ")")) (!= "!=") (number_literal "0"))) () ")"))) () ")")) (&& "&&") (parenthesized_expression "(uVar18 = *(uint *)(iVar1 + 0x30), uVar18 != 0)" (( "(") (comma_expression "uVar18 = *(uint *)(iVar1 + 0x30), uVar18 != 0" (assignment_expression "uVar18 = *(uint *)(iVar1 + 0x30)" (identifier "uVar18") (= "=") (pointer_expression "*(uint *)(iVar1 + 0x30)" (* "*") (cast_expression "(uint *)(iVar1 + 0x30)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 0x30)" (( "(") (binary_expression "iVar1 + 0x30" (identifier "iVar1") (+ "+") (number_literal "0x30")) () ")"))))) (, ",") (binary_expression "uVar18 != 0" (identifier "uVar18") (!= "!=") (number_literal "0"))) () ")"))) () ")")) (compound_statement "{\n      uVar18 = 0x20000;\n    }" ({ "{") (expression_statement "uVar18 = 0x20000;" (assignment_expression "uVar18 = 0x20000" (identifier "uVar18") (= "=") (number_literal "0x20000")) (; ";")) (} "}"))) (expression_statement "iVar7 = -100;" (assignment_expression "iVar7 = -100" (identifier "iVar7") (= "=") (number_literal "-100")) (; ";")) (if_statement "if ((uVar14 & 0x204) == 0x200) {\n      iVar7 = param_1[7];\n    }" (if "if") (parenthesized_expression "((uVar14 & 0x204) == 0x200)" (( "(") (binary_expression "(uVar14 & 0x204) == 0x200" (parenthesized_expression "(uVar14 & 0x204)" (( "(") (binary_expression "uVar14 & 0x204" (identifier "uVar14") (& "&") (number_literal "0x204")) () ")")) (== "==") (number_literal "0x200")) () ")")) (compound_statement "{\n      iVar7 = param_1[7];\n    }" ({ "{") (expression_statement "iVar7 = param_1[7];" (assignment_expression "iVar7 = param_1[7]" (identifier "iVar7") (= "=") (subscript_expression "param_1[7]" (identifier "param_1") ([ "[") (number_literal "7") (] "]"))) (; ";")) (} "}"))) (expression_statement "local_2c = FUN_0001c620(iVar7,*(undefined4 *)(iVar1 + 0x18),\n                            (uVar14 & 0x800) << 7 | uVar18 | 0x90900);" (assignment_expression "local_2c = FUN_0001c620(iVar7,*(undefined4 *)(iVar1 + 0x18),\n                            (uVar14 & 0x800) << 7 | uVar18 | 0x90900)" (identifier "local_2c") (= "=") (call_expression "FUN_0001c620(iVar7,*(undefined4 *)(iVar1 + 0x18),\n                            (uVar14 & 0x800) << 7 | uVar18 | 0x90900)" (identifier "FUN_0001c620") (argument_list "(iVar7,*(undefined4 *)(iVar1 + 0x18),\n                            (uVar14 & 0x800) << 7 | uVar18 | 0x90900)" (( "(") (identifier "iVar7") (, ",") (pointer_expression "*(undefined4 *)(iVar1 + 0x18)" (* "*") (cast_expression "(undefined4 *)(iVar1 + 0x18)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 0x18)" (( "(") (binary_expression "iVar1 + 0x18" (identifier "iVar1") (+ "+") (number_literal "0x18")) () ")")))) (, ",") (binary_expression "(uVar14 & 0x800) << 7 | uVar18 | 0x90900" (binary_expression "(uVar14 & 0x800) << 7 | uVar18" (binary_expression "(uVar14 & 0x800) << 7" (parenthesized_expression "(uVar14 & 0x800)" (( "(") (binary_expression "uVar14 & 0x800" (identifier "uVar14") (& "&") (number_literal "0x800")) () ")")) (<< "<<") (number_literal "7")) (| "|") (identifier "uVar18")) (| "|") (number_literal "0x90900")) () ")")))) (; ";")) (if_statement "if (local_2c < 0) {\n      *(undefined4 *)(iVar1 + 0xc) = 0;\njoined_r0x00019b00:\n      if (param_2 == 3) {\n        *(undefined2 *)(iVar1 + 0x3c) = 4;\n        piVar8 = __errno_location();\n        *(int *)(iVar1 + 0x20) = *piVar8;\n      }\n      return (void *)0x0;\n    }" (if "if") (parenthesized_expression "(local_2c < 0)" (( "(") (binary_expression "local_2c < 0" (identifier "local_2c") (< "<") (number_literal "0")) () ")")) (compound_statement "{\n      *(undefined4 *)(iVar1 + 0xc) = 0;\njoined_r0x00019b00:\n      if (param_2 == 3) {\n        *(undefined2 *)(iVar1 + 0x3c) = 4;\n        piVar8 = __errno_location();\n        *(int *)(iVar1 + 0x20) = *piVar8;\n      }\n      return (void *)0x0;\n    }" ({ "{") (expression_statement "*(undefined4 *)(iVar1 + 0xc) = 0;" (assignment_expression "*(undefined4 *)(iVar1 + 0xc) = 0" (pointer_expression "*(undefined4 *)(iVar1 + 0xc)" (* "*") (cast_expression "(undefined4 *)(iVar1 + 0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 0xc)" (( "(") (binary_expression "iVar1 + 0xc" (identifier "iVar1") (+ "+") (number_literal "0xc")) () ")")))) (= "=") (number_literal "0")) (; ";")) (labeled_statement "joined_r0x00019b00:\n      if (param_2 == 3) {\n        *(undefined2 *)(iVar1 + 0x3c) = 4;\n        piVar8 = __errno_location();\n        *(int *)(iVar1 + 0x20) = *piVar8;\n      }" (statement_identifier "joined_r0x00019b00") (: ":") (if_statement "if (param_2 == 3) {\n        *(undefined2 *)(iVar1 + 0x3c) = 4;\n        piVar8 = __errno_location();\n        *(int *)(iVar1 + 0x20) = *piVar8;\n      }" (if "if") (parenthesized_expression "(param_2 == 3)" (( "(") (binary_expression "param_2 == 3" (identifier "param_2") (== "==") (number_literal "3")) () ")")) (compound_statement "{\n        *(undefined2 *)(iVar1 + 0x3c) = 4;\n        piVar8 = __errno_location();\n        *(int *)(iVar1 + 0x20) = *piVar8;\n      }" ({ "{") (expression_statement "*(undefined2 *)(iVar1 + 0x3c) = 4;" (assignment_expression "*(undefined2 *)(iVar1 + 0x3c) = 4" (pointer_expression "*(undefined2 *)(iVar1 + 0x3c)" (* "*") (cast_expression "(undefined2 *)(iVar1 + 0x3c)" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 0x3c)" (( "(") (binary_expression "iVar1 + 0x3c" (identifier "iVar1") (+ "+") (number_literal "0x3c")) () ")")))) (= "=") (number_literal "4")) (; ";")) (expression_statement "piVar8 = __errno_location();" (assignment_expression "piVar8 = __errno_location()" (identifier "piVar8") (= "=") (call_expression "__errno_location()" (identifier "__errno_location") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "*(int *)(iVar1 + 0x20) = *piVar8;" (assignment_expression "*(int *)(iVar1 + 0x20) = *piVar8" (pointer_expression "*(int *)(iVar1 + 0x20)" (* "*") (cast_expression "(int *)(iVar1 + 0x20)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 0x20)" (( "(") (binary_expression "iVar1 + 0x20" (identifier "iVar1") (+ "+") (number_literal "0x20")) () ")")))) (= "=") (pointer_expression "*piVar8" (* "*") (identifier "piVar8"))) (; ";")) (} "}")))) (return_statement "return (void *)0x0;" (return "return") (cast_expression "(void *)0x0" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")) (; ";")) (} "}"))) (expression_statement "pDVar13 = fdopendir(local_2c);" (assignment_expression "pDVar13 = fdopendir(local_2c)" (identifier "pDVar13") (= "=") (call_expression "fdopendir(local_2c)" (identifier "fdopendir") (argument_list "(local_2c)" (( "(") (identifier "local_2c") () ")")))) (; ";")) (if_statement "if (pDVar13 == (DIR *)0x0) {\n      piVar8 = __errno_location();\n      iVar7 = *piVar8;\n      close(local_2c);\n      *piVar8 = iVar7;\n      *(undefined4 *)(iVar1 + 0xc) = 0;\n      goto joined_r0x00019b00;\n    }" (if "if") (parenthesized_expression "(pDVar13 == (DIR *)0x0)" (( "(") (binary_expression "pDVar13 == (DIR *)0x0" (identifier "pDVar13") (== "==") (cast_expression "(DIR *)0x0" (( "(") (type_descriptor "DIR *" (type_identifier "DIR") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n      piVar8 = __errno_location();\n      iVar7 = *piVar8;\n      close(local_2c);\n      *piVar8 = iVar7;\n      *(undefined4 *)(iVar1 + 0xc) = 0;\n      goto joined_r0x00019b00;\n    }" ({ "{") (expression_statement "piVar8 = __errno_location();" (assignment_expression "piVar8 = __errno_location()" (identifier "piVar8") (= "=") (call_expression "__errno_location()" (identifier "__errno_location") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "iVar7 = *piVar8;" (assignment_expression "iVar7 = *piVar8" (identifier "iVar7") (= "=") (pointer_expression "*piVar8" (* "*") (identifier "piVar8"))) (; ";")) (expression_statement "close(local_2c);" (call_expression "close(local_2c)" (identifier "close") (argument_list "(local_2c)" (( "(") (identifier "local_2c") () ")"))) (; ";")) (expression_statement "*piVar8 = iVar7;" (assignment_expression "*piVar8 = iVar7" (pointer_expression "*piVar8" (* "*") (identifier "piVar8")) (= "=") (identifier "iVar7")) (; ";")) (expression_statement "*(undefined4 *)(iVar1 + 0xc) = 0;" (assignment_expression "*(undefined4 *)(iVar1 + 0xc) = 0" (pointer_expression "*(undefined4 *)(iVar1 + 0xc)" (* "*") (cast_expression "(undefined4 *)(iVar1 + 0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 0xc)" (( "(") (binary_expression "iVar1 + 0xc" (identifier "iVar1") (+ "+") (number_literal "0xc")) () ")")))) (= "=") (number_literal "0")) (; ";")) (goto_statement "goto joined_r0x00019b00;" (goto "goto") (statement_identifier "joined_r0x00019b00") (; ";")) (} "}"))) (expression_statement "*(DIR **)(iVar1 + 0xc) = pDVar13;" (assignment_expression "*(DIR **)(iVar1 + 0xc) = pDVar13" (pointer_expression "*(DIR **)(iVar1 + 0xc)" (* "*") (cast_expression "(DIR **)(iVar1 + 0xc)" (( "(") (type_descriptor "DIR **" (type_identifier "DIR") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar1 + 0xc)" (( "(") (binary_expression "iVar1 + 0xc" (identifier "iVar1") (+ "+") (number_literal "0xc")) () ")")))) (= "=") (identifier "pDVar13")) (; ";")) (if_statement "if (*(short *)(iVar1 + 0x3c) == 0xb) {\n      uVar6 = FUN_00018640();\n      *(undefined2 *)(iVar1 + 0x3c) = uVar6;\n    }\n    else if ((param_1[0xb] & 0x100U) != 0) {\n      FUN_00019160();\n      FUN_00018640();\n      cVar5 = FUN_00019090();\n      if (cVar5 == '\0') {\n        piVar8 = __errno_location();\n        *piVar8 = 0xc;\n        return (void *)0x0;\n      }\n    }" (if "if") (parenthesized_expression "(*(short *)(iVar1 + 0x3c) == 0xb)" (( "(") (binary_expression "*(short *)(iVar1 + 0x3c) == 0xb" (pointer_expression "*(short *)(iVar1 + 0x3c)" (* "*") (cast_expression "(short *)(iVar1 + 0x3c)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 0x3c)" (( "(") (binary_expression "iVar1 + 0x3c" (identifier "iVar1") (+ "+") (number_literal "0x3c")) () ")")))) (== "==") (number_literal "0xb")) () ")")) (compound_statement "{\n      uVar6 = FUN_00018640();\n      *(undefined2 *)(iVar1 + 0x3c) = uVar6;\n    }" ({ "{") (expression_statement "uVar6 = FUN_00018640();" (assignment_expression "uVar6 = FUN_00018640()" (identifier "uVar6") (= "=") (call_expression "FUN_00018640()" (identifier "FUN_00018640") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "*(undefined2 *)(iVar1 + 0x3c) = uVar6;" (assignment_expression "*(undefined2 *)(iVar1 + 0x3c) = uVar6" (pointer_expression "*(undefined2 *)(iVar1 + 0x3c)" (* "*") (cast_expression "(undefined2 *)(iVar1 + 0x3c)" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 0x3c)" (( "(") (binary_expression "iVar1 + 0x3c" (identifier "iVar1") (+ "+") (number_literal "0x3c")) () ")")))) (= "=") (identifier "uVar6")) (; ";")) (} "}")) (else_clause "else if ((param_1[0xb] & 0x100U) != 0) {\n      FUN_00019160();\n      FUN_00018640();\n      cVar5 = FUN_00019090();\n      if (cVar5 == '\0') {\n        piVar8 = __errno_location();\n        *piVar8 = 0xc;\n        return (void *)0x0;\n      }\n    }" (else "else") (if_statement "if ((param_1[0xb] & 0x100U) != 0) {\n      FUN_00019160();\n      FUN_00018640();\n      cVar5 = FUN_00019090();\n      if (cVar5 == '\0') {\n        piVar8 = __errno_location();\n        *piVar8 = 0xc;\n        return (void *)0x0;\n      }\n    }" (if "if") (parenthesized_expression "((param_1[0xb] & 0x100U) != 0)" (( "(") (binary_expression "(param_1[0xb] & 0x100U) != 0" (parenthesized_expression "(param_1[0xb] & 0x100U)" (( "(") (binary_expression "param_1[0xb] & 0x100U" (subscript_expression "param_1[0xb]" (identifier "param_1") ([ "[") (number_literal "0xb") (] "]")) (& "&") (number_literal "0x100U")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      FUN_00019160();\n      FUN_00018640();\n      cVar5 = FUN_00019090();\n      if (cVar5 == '\0') {\n        piVar8 = __errno_location();\n        *piVar8 = 0xc;\n        return (void *)0x0;\n      }\n    }" ({ "{") (expression_statement "FUN_00019160();" (call_expression "FUN_00019160()" (identifier "FUN_00019160") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "FUN_00018640();" (call_expression "FUN_00018640()" (identifier "FUN_00018640") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "cVar5 = FUN_00019090();" (assignment_expression "cVar5 = FUN_00019090()" (identifier "cVar5") (= "=") (call_expression "FUN_00019090()" (identifier "FUN_00019090") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if (cVar5 == '\0') {\n        piVar8 = __errno_location();\n        *piVar8 = 0xc;\n        return (void *)0x0;\n      }" (if "if") (parenthesized_expression "(cVar5 == '\0')" (( "(") (binary_expression "cVar5 == '\0'" (identifier "cVar5") (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n        piVar8 = __errno_location();\n        *piVar8 = 0xc;\n        return (void *)0x0;\n      }" ({ "{") (expression_statement "piVar8 = __errno_location();" (assignment_expression "piVar8 = __errno_location()" (identifier "piVar8") (= "=") (call_expression "__errno_location()" (identifier "__errno_location") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "*piVar8 = 0xc;" (assignment_expression "*piVar8 = 0xc" (pointer_expression "*piVar8" (* "*") (identifier "piVar8")) (= "=") (number_literal "0xc")) (; ";")) (return_statement "return (void *)0x0;" (return "return") (cast_expression "(void *)0x0" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")) (; ";")) (} "}"))) (} "}"))))) (expression_statement "local_34 = (-(uint)(param_1[10] == 0) & 0x186a1) - 1;" (assignment_expression "local_34 = (-(uint)(param_1[10] == 0) & 0x186a1) - 1" (identifier "local_34") (= "=") (binary_expression "(-(uint)(param_1[10] == 0) & 0x186a1) - 1" (parenthesized_expression "(-(uint)(param_1[10] == 0) & 0x186a1)" (( "(") (binary_expression "-(uint)(param_1[10] == 0) & 0x186a1" (unary_expression "-(uint)(param_1[10] == 0)" (- "-") (call_expression "(uint)(param_1[10] == 0)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(param_1[10] == 0)" (( "(") (binary_expression "param_1[10] == 0" (subscript_expression "param_1[10]" (identifier "param_1") ([ "[") (number_literal "10") (] "]")) (== "==") (number_literal "0")) () ")")))) (& "&") (number_literal "0x186a1")) () ")")) (- "-") (number_literal "1"))) (; ";")) (if_statement "if (param_2 == 2) {\nLAB_00019a90:\n      bVar19 = false;\n      uVar14 = param_1[0xb];\n      goto LAB_000192d4;\n    }" (if "if") (parenthesized_expression "(param_2 == 2)" (( "(") (binary_expression "param_2 == 2" (identifier "param_2") (== "==") (number_literal "2")) () ")")) (compound_statement "{\nLAB_00019a90:\n      bVar19 = false;\n      uVar14 = param_1[0xb];\n      goto LAB_000192d4;\n    }" ({ "{") (labeled_statement "LAB_00019a90:\n      bVar19 = false;" (statement_identifier "LAB_00019a90") (: ":") (expression_statement "bVar19 = false;" (assignment_expression "bVar19 = false" (identifier "bVar19") (= "=") (false "false")) (; ";"))) (expression_statement "uVar14 = param_1[0xb];" (assignment_expression "uVar14 = param_1[0xb]" (identifier "uVar14") (= "=") (subscript_expression "param_1[0xb]" (identifier "param_1") ([ "[") (number_literal "0xb") (] "]"))) (; ";")) (goto_statement "goto LAB_000192d4;" (goto "goto") (statement_identifier "LAB_000192d4") (; ";")) (} "}"))) (if_statement "if ((((param_1[0xb] & 0x38U) == 0x18) && (*(int *)(iVar1 + 0x58) == 2)) &&\n       (iVar7 = FUN_00018b60(), iVar7 != 0)) {\n      if (param_2 != 3) goto LAB_00019a90;\n      bVar2 = false;\n      bVar19 = true;\n    }\n    else {\n      bVar19 = param_2 == 3;\n      bVar2 = true;\n    }" (if "if") (parenthesized_expression "((((param_1[0xb] & 0x38U) == 0x18) && (*(int *)(iVar1 + 0x58) == 2)) &&\n       (iVar7 = FUN_00018b60(), iVar7 != 0))" (( "(") (binary_expression "(((param_1[0xb] & 0x38U) == 0x18) && (*(int *)(iVar1 + 0x58) == 2)) &&\n       (iVar7 = FUN_00018b60(), iVar7 != 0)" (parenthesized_expression "(((param_1[0xb] & 0x38U) == 0x18) && (*(int *)(iVar1 + 0x58) == 2))" (( "(") (binary_expression "((param_1[0xb] & 0x38U) == 0x18) && (*(int *)(iVar1 + 0x58) == 2)" (parenthesized_expression "((param_1[0xb] & 0x38U) == 0x18)" (( "(") (binary_expression "(param_1[0xb] & 0x38U) == 0x18" (parenthesized_expression "(param_1[0xb] & 0x38U)" (( "(") (binary_expression "param_1[0xb] & 0x38U" (subscript_expression "param_1[0xb]" (identifier "param_1") ([ "[") (number_literal "0xb") (] "]")) (& "&") (number_literal "0x38U")) () ")")) (== "==") (number_literal "0x18")) () ")")) (&& "&&") (parenthesized_expression "(*(int *)(iVar1 + 0x58) == 2)" (( "(") (binary_expression "*(int *)(iVar1 + 0x58) == 2" (pointer_expression "*(int *)(iVar1 + 0x58)" (* "*") (cast_expression "(int *)(iVar1 + 0x58)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 0x58)" (( "(") (binary_expression "iVar1 + 0x58" (identifier "iVar1") (+ "+") (number_literal "0x58")) () ")")))) (== "==") (number_literal "2")) () ")"))) () ")")) (&& "&&") (parenthesized_expression "(iVar7 = FUN_00018b60(), iVar7 != 0)" (( "(") (comma_expression "iVar7 = FUN_00018b60(), iVar7 != 0" (assignment_expression "iVar7 = FUN_00018b60()" (identifier "iVar7") (= "=") (call_expression "FUN_00018b60()" (identifier "FUN_00018b60") (argument_list "()" (( "(") () ")")))) (, ",") (binary_expression "iVar7 != 0" (identifier "iVar7") (!= "!=") (number_literal "0"))) () ")"))) () ")")) (compound_statement "{\n      if (param_2 != 3) goto LAB_00019a90;\n      bVar2 = false;\n      bVar19 = true;\n    }" ({ "{") (if_statement "if (param_2 != 3) goto LAB_00019a90;" (if "if") (parenthesized_expression "(param_2 != 3)" (( "(") (binary_expression "param_2 != 3" (identifier "param_2") (!= "!=") (number_literal "3")) () ")")) (goto_statement "goto LAB_00019a90;" (goto "goto") (statement_identifier "LAB_00019a90") (; ";"))) (expression_statement "bVar2 = false;" (assignment_expression "bVar2 = false" (identifier "bVar2") (= "=") (false "false")) (; ";")) (expression_statement "bVar19 = true;" (assignment_expression "bVar19 = true" (identifier "bVar19") (= "=") (true "true")) (; ";")) (} "}")) (else_clause "else {\n      bVar19 = param_2 == 3;\n      bVar2 = true;\n    }" (else "else") (compound_statement "{\n      bVar19 = param_2 == 3;\n      bVar2 = true;\n    }" ({ "{") (expression_statement "bVar19 = param_2 == 3;" (assignment_expression "bVar19 = param_2 == 3" (identifier "bVar19") (= "=") (binary_expression "param_2 == 3" (identifier "param_2") (== "==") (number_literal "3"))) (; ";")) (expression_statement "bVar2 = true;" (assignment_expression "bVar2 = true" (identifier "bVar2") (= "=") (true "true")) (; ";")) (} "}")))) (if_statement "if (((*(byte *)((int)param_1 + 0x2d) & 2) == 0) ||\n       (local_2c = FUN_0001c780(local_2c,0x406,3), -1 < local_2c)) {\n      iVar7 = FUN_00018e20(0);\n      if (iVar7 == 0) goto LAB_000192cc;\n      pDVar13 = *(DIR **)(iVar1 + 0xc);\n      uVar17 = *(ushort *)(iVar1 + 0x3e) | 1;\n      if ((bVar19) && (bVar2)) goto LAB_0001980f;\nLAB_0001982f:\n      *(ushort *)(iVar1 + 0x3e) = uVar17;\n      closedir(pDVar13);\n      uVar14 = param_1[0xb];\n      *(undefined4 *)(iVar1 + 0xc) = 0;\n      if (((uVar14 & 0x200) != 0) && (-1 < local_2c)) {\n        close(local_2c);\n        uVar14 = param_1[0xb];\n      }\n    }\n    else {\n      pDVar13 = *(DIR **)(iVar1 + 0xc);\n      uVar17 = *(ushort *)(iVar1 + 0x3e) | 1;\n      if ((bVar19) && (bVar2)) {\nLAB_0001980f:\n        piVar8 = __errno_location();\n        *(int *)(iVar1 + 0x20) = *piVar8;\n        goto LAB_0001982f;\n      }\n      *(ushort *)(iVar1 + 0x3e) = uVar17;\n      closedir(pDVar13);\n      uVar14 = param_1[0xb];\n    }" (if "if") (parenthesized_expression "(((*(byte *)((int)param_1 + 0x2d) & 2) == 0) ||\n       (local_2c = FUN_0001c780(local_2c,0x406,3), -1 < local_2c))" (( "(") (binary_expression "((*(byte *)((int)param_1 + 0x2d) & 2) == 0) ||\n       (local_2c = FUN_0001c780(local_2c,0x406,3), -1 < local_2c)" (parenthesized_expression "((*(byte *)((int)param_1 + 0x2d) & 2) == 0)" (( "(") (binary_expression "(*(byte *)((int)param_1 + 0x2d) & 2) == 0" (parenthesized_expression "(*(byte *)((int)param_1 + 0x2d) & 2)" (( "(") (binary_expression "*(byte *)((int)param_1 + 0x2d) & 2" (pointer_expression "*(byte *)((int)param_1 + 0x2d)" (* "*") (cast_expression "(byte *)((int)param_1 + 0x2d)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_1 + 0x2d)" (( "(") (binary_expression "(int)param_1 + 0x2d" (cast_expression "(int)param_1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_1")) (+ "+") (number_literal "0x2d")) () ")")))) (& "&") (number_literal "2")) () ")")) (== "==") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(local_2c = FUN_0001c780(local_2c,0x406,3), -1 < local_2c)" (( "(") (comma_expression "local_2c = FUN_0001c780(local_2c,0x406,3), -1 < local_2c" (assignment_expression "local_2c = FUN_0001c780(local_2c,0x406,3)" (identifier "local_2c") (= "=") (call_expression "FUN_0001c780(local_2c,0x406,3)" (identifier "FUN_0001c780") (argument_list "(local_2c,0x406,3)" (( "(") (identifier "local_2c") (, ",") (number_literal "0x406") (, ",") (number_literal "3") () ")")))) (, ",") (binary_expression "-1 < local_2c" (number_literal "-1") (< "<") (identifier "local_2c"))) () ")"))) () ")")) (compound_statement "{\n      iVar7 = FUN_00018e20(0);\n      if (iVar7 == 0) goto LAB_000192cc;\n      pDVar13 = *(DIR **)(iVar1 + 0xc);\n      uVar17 = *(ushort *)(iVar1 + 0x3e) | 1;\n      if ((bVar19) && (bVar2)) goto LAB_0001980f;\nLAB_0001982f:\n      *(ushort *)(iVar1 + 0x3e) = uVar17;\n      closedir(pDVar13);\n      uVar14 = param_1[0xb];\n      *(undefined4 *)(iVar1 + 0xc) = 0;\n      if (((uVar14 & 0x200) != 0) && (-1 < local_2c)) {\n        close(local_2c);\n        uVar14 = param_1[0xb];\n      }\n    }" ({ "{") (expression_statement "iVar7 = FUN_00018e20(0);" (assignment_expression "iVar7 = FUN_00018e20(0)" (identifier "iVar7") (= "=") (call_expression "FUN_00018e20(0)" (identifier "FUN_00018e20") (argument_list "(0)" (( "(") (number_literal "0") () ")")))) (; ";")) (if_statement "if (iVar7 == 0) goto LAB_000192cc;" (if "if") (parenthesized_expression "(iVar7 == 0)" (( "(") (binary_expression "iVar7 == 0" (identifier "iVar7") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_000192cc;" (goto "goto") (statement_identifier "LAB_000192cc") (; ";"))) (expression_statement "pDVar13 = *(DIR **)(iVar1 + 0xc);" (assignment_expression "pDVar13 = *(DIR **)(iVar1 + 0xc)" (identifier "pDVar13") (= "=") (pointer_expression "*(DIR **)(iVar1 + 0xc)" (* "*") (cast_expression "(DIR **)(iVar1 + 0xc)" (( "(") (type_descriptor "DIR **" (type_identifier "DIR") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar1 + 0xc)" (( "(") (binary_expression "iVar1 + 0xc" (identifier "iVar1") (+ "+") (number_literal "0xc")) () ")"))))) (; ";")) (expression_statement "uVar17 = *(ushort *)(iVar1 + 0x3e) | 1;" (assignment_expression "uVar17 = *(ushort *)(iVar1 + 0x3e) | 1" (identifier "uVar17") (= "=") (binary_expression "*(ushort *)(iVar1 + 0x3e) | 1" (pointer_expression "*(ushort *)(iVar1 + 0x3e)" (* "*") (cast_expression "(ushort *)(iVar1 + 0x3e)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 0x3e)" (( "(") (binary_expression "iVar1 + 0x3e" (identifier "iVar1") (+ "+") (number_literal "0x3e")) () ")")))) (| "|") (number_literal "1"))) (; ";")) (if_statement "if ((bVar19) && (bVar2)) goto LAB_0001980f;" (if "if") (parenthesized_expression "((bVar19) && (bVar2))" (( "(") (binary_expression "(bVar19) && (bVar2)" (parenthesized_expression "(bVar19)" (( "(") (identifier "bVar19") () ")")) (&& "&&") (parenthesized_expression "(bVar2)" (( "(") (identifier "bVar2") () ")"))) () ")")) (goto_statement "goto LAB_0001980f;" (goto "goto") (statement_identifier "LAB_0001980f") (; ";"))) (labeled_statement "LAB_0001982f:\n      *(ushort *)(iVar1 + 0x3e) = uVar17;" (statement_identifier "LAB_0001982f") (: ":") (expression_statement "*(ushort *)(iVar1 + 0x3e) = uVar17;" (assignment_expression "*(ushort *)(iVar1 + 0x3e) = uVar17" (pointer_expression "*(ushort *)(iVar1 + 0x3e)" (* "*") (cast_expression "(ushort *)(iVar1 + 0x3e)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 0x3e)" (( "(") (binary_expression "iVar1 + 0x3e" (identifier "iVar1") (+ "+") (number_literal "0x3e")) () ")")))) (= "=") (identifier "uVar17")) (; ";"))) (expression_statement "closedir(pDVar13);" (call_expression "closedir(pDVar13)" (identifier "closedir") (argument_list "(pDVar13)" (( "(") (identifier "pDVar13") () ")"))) (; ";")) (expression_statement "uVar14 = param_1[0xb];" (assignment_expression "uVar14 = param_1[0xb]" (identifier "uVar14") (= "=") (subscript_expression "param_1[0xb]" (identifier "param_1") ([ "[") (number_literal "0xb") (] "]"))) (; ";")) (expression_statement "*(undefined4 *)(iVar1 + 0xc) = 0;" (assignment_expression "*(undefined4 *)(iVar1 + 0xc) = 0" (pointer_expression "*(undefined4 *)(iVar1 + 0xc)" (* "*") (cast_expression "(undefined4 *)(iVar1 + 0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 0xc)" (( "(") (binary_expression "iVar1 + 0xc" (identifier "iVar1") (+ "+") (number_literal "0xc")) () ")")))) (= "=") (number_literal "0")) (; ";")) (if_statement "if (((uVar14 & 0x200) != 0) && (-1 < local_2c)) {\n        close(local_2c);\n        uVar14 = param_1[0xb];\n      }" (if "if") (parenthesized_expression "(((uVar14 & 0x200) != 0) && (-1 < local_2c))" (( "(") (binary_expression "((uVar14 & 0x200) != 0) && (-1 < local_2c)" (parenthesized_expression "((uVar14 & 0x200) != 0)" (( "(") (binary_expression "(uVar14 & 0x200) != 0" (parenthesized_expression "(uVar14 & 0x200)" (( "(") (binary_expression "uVar14 & 0x200" (identifier "uVar14") (& "&") (number_literal "0x200")) () ")")) (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(-1 < local_2c)" (( "(") (binary_expression "-1 < local_2c" (number_literal "-1") (< "<") (identifier "local_2c")) () ")"))) () ")")) (compound_statement "{\n        close(local_2c);\n        uVar14 = param_1[0xb];\n      }" ({ "{") (expression_statement "close(local_2c);" (call_expression "close(local_2c)" (identifier "close") (argument_list "(local_2c)" (( "(") (identifier "local_2c") () ")"))) (; ";")) (expression_statement "uVar14 = param_1[0xb];" (assignment_expression "uVar14 = param_1[0xb]" (identifier "uVar14") (= "=") (subscript_expression "param_1[0xb]" (identifier "param_1") ([ "[") (number_literal "0xb") (] "]"))) (; ";")) (} "}"))) (} "}")) (else_clause "else {\n      pDVar13 = *(DIR **)(iVar1 + 0xc);\n      uVar17 = *(ushort *)(iVar1 + 0x3e) | 1;\n      if ((bVar19) && (bVar2)) {\nLAB_0001980f:\n        piVar8 = __errno_location();\n        *(int *)(iVar1 + 0x20) = *piVar8;\n        goto LAB_0001982f;\n      }\n      *(ushort *)(iVar1 + 0x3e) = uVar17;\n      closedir(pDVar13);\n      uVar14 = param_1[0xb];\n    }" (else "else") (compound_statement "{\n      pDVar13 = *(DIR **)(iVar1 + 0xc);\n      uVar17 = *(ushort *)(iVar1 + 0x3e) | 1;\n      if ((bVar19) && (bVar2)) {\nLAB_0001980f:\n        piVar8 = __errno_location();\n        *(int *)(iVar1 + 0x20) = *piVar8;\n        goto LAB_0001982f;\n      }\n      *(ushort *)(iVar1 + 0x3e) = uVar17;\n      closedir(pDVar13);\n      uVar14 = param_1[0xb];\n    }" ({ "{") (expression_statement "pDVar13 = *(DIR **)(iVar1 + 0xc);" (assignment_expression "pDVar13 = *(DIR **)(iVar1 + 0xc)" (identifier "pDVar13") (= "=") (pointer_expression "*(DIR **)(iVar1 + 0xc)" (* "*") (cast_expression "(DIR **)(iVar1 + 0xc)" (( "(") (type_descriptor "DIR **" (type_identifier "DIR") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar1 + 0xc)" (( "(") (binary_expression "iVar1 + 0xc" (identifier "iVar1") (+ "+") (number_literal "0xc")) () ")"))))) (; ";")) (expression_statement "uVar17 = *(ushort *)(iVar1 + 0x3e) | 1;" (assignment_expression "uVar17 = *(ushort *)(iVar1 + 0x3e) | 1" (identifier "uVar17") (= "=") (binary_expression "*(ushort *)(iVar1 + 0x3e) | 1" (pointer_expression "*(ushort *)(iVar1 + 0x3e)" (* "*") (cast_expression "(ushort *)(iVar1 + 0x3e)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 0x3e)" (( "(") (binary_expression "iVar1 + 0x3e" (identifier "iVar1") (+ "+") (number_literal "0x3e")) () ")")))) (| "|") (number_literal "1"))) (; ";")) (if_statement "if ((bVar19) && (bVar2)) {\nLAB_0001980f:\n        piVar8 = __errno_location();\n        *(int *)(iVar1 + 0x20) = *piVar8;\n        goto LAB_0001982f;\n      }" (if "if") (parenthesized_expression "((bVar19) && (bVar2))" (( "(") (binary_expression "(bVar19) && (bVar2)" (parenthesized_expression "(bVar19)" (( "(") (identifier "bVar19") () ")")) (&& "&&") (parenthesized_expression "(bVar2)" (( "(") (identifier "bVar2") () ")"))) () ")")) (compound_statement "{\nLAB_0001980f:\n        piVar8 = __errno_location();\n        *(int *)(iVar1 + 0x20) = *piVar8;\n        goto LAB_0001982f;\n      }" ({ "{") (labeled_statement "LAB_0001980f:\n        piVar8 = __errno_location();" (statement_identifier "LAB_0001980f") (: ":") (expression_statement "piVar8 = __errno_location();" (assignment_expression "piVar8 = __errno_location()" (identifier "piVar8") (= "=") (call_expression "__errno_location()" (identifier "__errno_location") (argument_list "()" (( "(") () ")")))) (; ";"))) (expression_statement "*(int *)(iVar1 + 0x20) = *piVar8;" (assignment_expression "*(int *)(iVar1 + 0x20) = *piVar8" (pointer_expression "*(int *)(iVar1 + 0x20)" (* "*") (cast_expression "(int *)(iVar1 + 0x20)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 0x20)" (( "(") (binary_expression "iVar1 + 0x20" (identifier "iVar1") (+ "+") (number_literal "0x20")) () ")")))) (= "=") (pointer_expression "*piVar8" (* "*") (identifier "piVar8"))) (; ";")) (goto_statement "goto LAB_0001982f;" (goto "goto") (statement_identifier "LAB_0001982f") (; ";")) (} "}"))) (expression_statement "*(ushort *)(iVar1 + 0x3e) = uVar17;" (assignment_expression "*(ushort *)(iVar1 + 0x3e) = uVar17" (pointer_expression "*(ushort *)(iVar1 + 0x3e)" (* "*") (cast_expression "(ushort *)(iVar1 + 0x3e)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 0x3e)" (( "(") (binary_expression "iVar1 + 0x3e" (identifier "iVar1") (+ "+") (number_literal "0x3e")) () ")")))) (= "=") (identifier "uVar17")) (; ";")) (expression_statement "closedir(pDVar13);" (call_expression "closedir(pDVar13)" (identifier "closedir") (argument_list "(pDVar13)" (( "(") (identifier "pDVar13") () ")"))) (; ";")) (expression_statement "uVar14 = param_1[0xb];" (assignment_expression "uVar14 = param_1[0xb]" (identifier "uVar14") (= "=") (subscript_expression "param_1[0xb]" (identifier "param_1") ([ "[") (number_literal "0xb") (] "]"))) (; ";")) (} "}")))) (expression_statement "bVar19 = false;" (assignment_expression "bVar19 = false" (identifier "bVar19") (= "=") (false "false")) (; ";")) (expression_statement "*(undefined4 *)(iVar1 + 0xc) = 0;" (assignment_expression "*(undefined4 *)(iVar1 + 0xc) = 0" (pointer_expression "*(undefined4 *)(iVar1 + 0xc)" (* "*") (cast_expression "(undefined4 *)(iVar1 + 0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 0xc)" (( "(") (binary_expression "iVar1 + 0xc" (identifier "iVar1") (+ "+") (number_literal "0xc")) () ")")))) (= "=") (number_literal "0")) (; ";")) (} "}")) (else_clause "else {\n    iVar7 = dirfd(__dirp);\n    if (iVar7 < 0) {\n      closedir(*(DIR **)(iVar1 + 0xc));\n      *(undefined4 *)(iVar1 + 0xc) = 0;\n      goto joined_r0x00019b00;\n    }\n    if (param_1[10] == 0) {\n      local_34 = 100000;\n      uVar14 = param_1[0xb];\n      bVar19 = true;\n    }\n    else {\n      local_34 = 0xffffffff;\nLAB_000192cc:\n      bVar19 = true;\n      uVar14 = param_1[0xb];\n    }\n  }" (else "else") (compound_statement "{\n    iVar7 = dirfd(__dirp);\n    if (iVar7 < 0) {\n      closedir(*(DIR **)(iVar1 + 0xc));\n      *(undefined4 *)(iVar1 + 0xc) = 0;\n      goto joined_r0x00019b00;\n    }\n    if (param_1[10] == 0) {\n      local_34 = 100000;\n      uVar14 = param_1[0xb];\n      bVar19 = true;\n    }\n    else {\n      local_34 = 0xffffffff;\nLAB_000192cc:\n      bVar19 = true;\n      uVar14 = param_1[0xb];\n    }\n  }" ({ "{") (expression_statement "iVar7 = dirfd(__dirp);" (assignment_expression "iVar7 = dirfd(__dirp)" (identifier "iVar7") (= "=") (call_expression "dirfd(__dirp)" (identifier "dirfd") (argument_list "(__dirp)" (( "(") (identifier "__dirp") () ")")))) (; ";")) (if_statement "if (iVar7 < 0) {\n      closedir(*(DIR **)(iVar1 + 0xc));\n      *(undefined4 *)(iVar1 + 0xc) = 0;\n      goto joined_r0x00019b00;\n    }" (if "if") (parenthesized_expression "(iVar7 < 0)" (( "(") (binary_expression "iVar7 < 0" (identifier "iVar7") (< "<") (number_literal "0")) () ")")) (compound_statement "{\n      closedir(*(DIR **)(iVar1 + 0xc));\n      *(undefined4 *)(iVar1 + 0xc) = 0;\n      goto joined_r0x00019b00;\n    }" ({ "{") (expression_statement "closedir(*(DIR **)(iVar1 + 0xc));" (call_expression "closedir(*(DIR **)(iVar1 + 0xc))" (identifier "closedir") (argument_list "(*(DIR **)(iVar1 + 0xc))" (( "(") (pointer_expression "*(DIR **)(iVar1 + 0xc)" (* "*") (cast_expression "(DIR **)(iVar1 + 0xc)" (( "(") (type_descriptor "DIR **" (type_identifier "DIR") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar1 + 0xc)" (( "(") (binary_expression "iVar1 + 0xc" (identifier "iVar1") (+ "+") (number_literal "0xc")) () ")")))) () ")"))) (; ";")) (expression_statement "*(undefined4 *)(iVar1 + 0xc) = 0;" (assignment_expression "*(undefined4 *)(iVar1 + 0xc) = 0" (pointer_expression "*(undefined4 *)(iVar1 + 0xc)" (* "*") (cast_expression "(undefined4 *)(iVar1 + 0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 0xc)" (( "(") (binary_expression "iVar1 + 0xc" (identifier "iVar1") (+ "+") (number_literal "0xc")) () ")")))) (= "=") (number_literal "0")) (; ";")) (goto_statement "goto joined_r0x00019b00;" (goto "goto") (statement_identifier "joined_r0x00019b00") (; ";")) (} "}"))) (if_statement "if (param_1[10] == 0) {\n      local_34 = 100000;\n      uVar14 = param_1[0xb];\n      bVar19 = true;\n    }\n    else {\n      local_34 = 0xffffffff;\nLAB_000192cc:\n      bVar19 = true;\n      uVar14 = param_1[0xb];\n    }" (if "if") (parenthesized_expression "(param_1[10] == 0)" (( "(") (binary_expression "param_1[10] == 0" (subscript_expression "param_1[10]" (identifier "param_1") ([ "[") (number_literal "10") (] "]")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      local_34 = 100000;\n      uVar14 = param_1[0xb];\n      bVar19 = true;\n    }" ({ "{") (expression_statement "local_34 = 100000;" (assignment_expression "local_34 = 100000" (identifier "local_34") (= "=") (number_literal "100000")) (; ";")) (expression_statement "uVar14 = param_1[0xb];" (assignment_expression "uVar14 = param_1[0xb]" (identifier "uVar14") (= "=") (subscript_expression "param_1[0xb]" (identifier "param_1") ([ "[") (number_literal "0xb") (] "]"))) (; ";")) (expression_statement "bVar19 = true;" (assignment_expression "bVar19 = true" (identifier "bVar19") (= "=") (true "true")) (; ";")) (} "}")) (else_clause "else {\n      local_34 = 0xffffffff;\nLAB_000192cc:\n      bVar19 = true;\n      uVar14 = param_1[0xb];\n    }" (else "else") (compound_statement "{\n      local_34 = 0xffffffff;\nLAB_000192cc:\n      bVar19 = true;\n      uVar14 = param_1[0xb];\n    }" ({ "{") (expression_statement "local_34 = 0xffffffff;" (assignment_expression "local_34 = 0xffffffff" (identifier "local_34") (= "=") (number_literal "0xffffffff")) (; ";")) (labeled_statement "LAB_000192cc:\n      bVar19 = true;" (statement_identifier "LAB_000192cc") (: ":") (expression_statement "bVar19 = true;" (assignment_expression "bVar19 = true" (identifier "bVar19") (= "=") (true "true")) (; ";"))) (expression_statement "uVar14 = param_1[0xb];" (assignment_expression "uVar14 = param_1[0xb]" (identifier "uVar14") (= "=") (subscript_expression "param_1[0xb]" (identifier "param_1") ([ "[") (number_literal "0xb") (] "]"))) (; ";")) (} "}")))) (} "}")))) (labeled_statement "LAB_000192d4:\n  uVar18 = *(uint *)(iVar1 + 0x28);" (statement_identifier "LAB_000192d4") (: ":") (expression_statement "uVar18 = *(uint *)(iVar1 + 0x28);" (assignment_expression "uVar18 = *(uint *)(iVar1 + 0x28)" (identifier "uVar18") (= "=") (pointer_expression "*(uint *)(iVar1 + 0x28)" (* "*") (cast_expression "(uint *)(iVar1 + 0x28)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 0x28)" (( "(") (binary_expression "iVar1 + 0x28" (identifier "iVar1") (+ "+") (number_literal "0x28")) () ")"))))) (; ";"))) (expression_statement "local_4c = uVar18;" (assignment_expression "local_4c = uVar18" (identifier "local_4c") (= "=") (identifier "uVar18")) (; ";")) (expression_statement "local_30 = uVar18 - 1;" (assignment_expression "local_30 = uVar18 - 1" (identifier "local_30") (= "=") (binary_expression "uVar18 - 1" (identifier "uVar18") (- "-") (number_literal "1"))) (; ";")) (if_statement "if (*(char *)(*(int *)(iVar1 + 0x1c) + -1 + uVar18) != '/') {\n    local_4c = uVar18 + 1;\n    local_30 = uVar18;\n  }" (if "if") (parenthesized_expression "(*(char *)(*(int *)(iVar1 + 0x1c) + -1 + uVar18) != '/')" (( "(") (binary_expression "*(char *)(*(int *)(iVar1 + 0x1c) + -1 + uVar18) != '/'" (pointer_expression "*(char *)(*(int *)(iVar1 + 0x1c) + -1 + uVar18)" (* "*") (cast_expression "(char *)(*(int *)(iVar1 + 0x1c) + -1 + uVar18)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(iVar1 + 0x1c) + -1 + uVar18)" (( "(") (binary_expression "*(int *)(iVar1 + 0x1c) + -1 + uVar18" (binary_expression "*(int *)(iVar1 + 0x1c) + -1" (pointer_expression "*(int *)(iVar1 + 0x1c)" (* "*") (cast_expression "(int *)(iVar1 + 0x1c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 0x1c)" (( "(") (binary_expression "iVar1 + 0x1c" (identifier "iVar1") (+ "+") (number_literal "0x1c")) () ")")))) (+ "+") (number_literal "-1")) (+ "+") (identifier "uVar18")) () ")")))) (!= "!=") (char_literal "'/'" (' "'") (character "/") (' "'"))) () ")")) (compound_statement "{\n    local_4c = uVar18 + 1;\n    local_30 = uVar18;\n  }" ({ "{") (expression_statement "local_4c = uVar18 + 1;" (assignment_expression "local_4c = uVar18 + 1" (identifier "local_4c") (= "=") (binary_expression "uVar18 + 1" (identifier "uVar18") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "local_30 = uVar18;" (assignment_expression "local_30 = uVar18" (identifier "local_30") (= "=") (identifier "uVar18")) (; ";")) (} "}"))) (expression_statement "local_38 = (undefined1 *)0x0;" (assignment_expression "local_38 = (undefined1 *)0x0" (identifier "local_38") (= "=") (cast_expression "(undefined1 *)0x0" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (if_statement "if ((uVar14 & 4) != 0) {\n    local_38 = (undefined1 *)(local_30 + param_1[5]) + 1;\n    *(undefined1 *)(local_30 + param_1[5]) = 0x2f;\n  }" (if "if") (parenthesized_expression "((uVar14 & 4) != 0)" (( "(") (binary_expression "(uVar14 & 4) != 0" (parenthesized_expression "(uVar14 & 4)" (( "(") (binary_expression "uVar14 & 4" (identifier "uVar14") (& "&") (number_literal "4")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    local_38 = (undefined1 *)(local_30 + param_1[5]) + 1;\n    *(undefined1 *)(local_30 + param_1[5]) = 0x2f;\n  }" ({ "{") (expression_statement "local_38 = (undefined1 *)(local_30 + param_1[5]) + 1;" (assignment_expression "local_38 = (undefined1 *)(local_30 + param_1[5]) + 1" (identifier "local_38") (= "=") (binary_expression "(undefined1 *)(local_30 + param_1[5]) + 1" (cast_expression "(undefined1 *)(local_30 + param_1[5])" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_30 + param_1[5])" (( "(") (binary_expression "local_30 + param_1[5]" (identifier "local_30") (+ "+") (subscript_expression "param_1[5]" (identifier "param_1") ([ "[") (number_literal "5") (] "]"))) () ")"))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*(undefined1 *)(local_30 + param_1[5]) = 0x2f;" (assignment_expression "*(undefined1 *)(local_30 + param_1[5]) = 0x2f" (pointer_expression "*(undefined1 *)(local_30 + param_1[5])" (* "*") (cast_expression "(undefined1 *)(local_30 + param_1[5])" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_30 + param_1[5])" (( "(") (binary_expression "local_30 + param_1[5]" (identifier "local_30") (+ "+") (subscript_expression "param_1[5]" (identifier "param_1") ([ "[") (number_literal "5") (] "]"))) () ")")))) (= "=") (number_literal "0x2f")) (; ";")) (} "}"))) (expression_statement "local_44 = param_1[8] - local_4c;" (assignment_expression "local_44 = param_1[8] - local_4c" (identifier "local_44") (= "=") (binary_expression "param_1[8] - local_4c" (subscript_expression "param_1[8]" (identifier "param_1") ([ "[") (number_literal "8") (] "]")) (- "-") (identifier "local_4c"))) (; ";")) (expression_statement "bVar2 = false;" (assignment_expression "bVar2 = false" (identifier "bVar2") (= "=") (false "false")) (; ";")) (expression_statement "local_1f = '\0';" (assignment_expression "local_1f = '\0'" (identifier "local_1f") (= "=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) (; ";")) (expression_statement "iVar7 = *(int *)(iVar1 + 0x30);" (assignment_expression "iVar7 = *(int *)(iVar1 + 0x30)" (identifier "iVar7") (= "=") (pointer_expression "*(int *)(iVar1 + 0x30)" (* "*") (cast_expression "(int *)(iVar1 + 0x30)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 0x30)" (( "(") (binary_expression "iVar1 + 0x30" (identifier "iVar1") (+ "+") (number_literal "0x30")) () ")"))))) (; ";")) (expression_statement "local_54 = (void *)0x0;" (assignment_expression "local_54 = (void *)0x0" (identifier "local_54") (= "=") (cast_expression "(void *)0x0" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "local_5c = 0;" (assignment_expression "local_5c = 0" (identifier "local_5c") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_48 = (void *)0x0;" (assignment_expression "local_48 = (void *)0x0" (identifier "local_48") (= "=") (cast_expression "(void *)0x0" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (labeled_statement "LAB_000193a8:\n  do {\n    do {\n      pDVar13 = *(DIR **)(iVar1 + 0xc);\n      if (pDVar13 == (DIR *)0x0) goto LAB_00019641;\n      piVar8 = __errno_location();\n      *piVar8 = 0;\n      pdVar9 = readdir64(pDVar13);\n      if (pdVar9 == (dirent64 *)0x0) {\n        if (*piVar8 != 0) {\n          *(int *)(iVar1 + 0x20) = *piVar8;\n          *(ushort *)(iVar1 + 0x3c) =\n               (-(ushort)(__dirp == (DIR *)0x0 && local_5c == 0) & 0xfffd) + 7;\n        }\n        if (*(DIR **)(iVar1 + 0xc) != (DIR *)0x0) {\n          closedir(*(DIR **)(iVar1 + 0xc));\n          *(undefined4 *)(iVar1 + 0xc) = 0;\n        }\n        goto LAB_00019641;\n      }\n    } while ((((*(byte *)(param_1 + 0xb) & 0x20) == 0) && (pdVar9->d_name[0] == '.')) &&\n            ((pdVar9->d_name[1] == '\0' || (*(short *)(pdVar9->d_name + 1) == 0x2e))));\n    sVar10 = strlen(pdVar9->d_name);\n    pvVar11 = (void *)FUN_000188d0();\n    if (pvVar11 == (void *)0x0) {\nLAB_00019910:\n      iVar7 = *piVar8;\n      free(pvVar11);\n      FUN_00018960();\n      closedir(*(DIR **)(iVar1 + 0xc));\n      *(undefined4 *)(iVar1 + 0xc) = 0;\n      *(undefined2 *)(iVar1 + 0x3c) = 7;\n      param_1[0xb] = param_1[0xb] | 0x4000;\n      *piVar8 = iVar7;\n      return (void *)0x0;\n    }\n    if (local_44 <= sVar10) {\n      iVar15 = param_1[5];\n      cVar5 = FUN_00018cc0();\n      if (cVar5 == '\0') goto LAB_00019910;\n      puVar4 = local_38;\n      if ((param_1[5] != iVar15) &&\n         (local_1f = cVar5, puVar4 = (undefined1 *)(param_1[5] + local_4c),\n         (*(byte *)(param_1 + 0xb) & 4) == 0)) {\n        puVar4 = local_38;\n      }\n      local_38 = puVar4;\n      local_44 = param_1[8] - local_4c;\n    }\n    if (CARRY4(sVar10,local_4c)) {\n      free(pvVar11);\n      FUN_00018960();\n      closedir(*(DIR **)(iVar1 + 0xc));\n      *(undefined4 *)(iVar1 + 0xc) = 0;\n      *(undefined2 *)(iVar1 + 0x3c) = 7;\n      param_1[0xb] = param_1[0xb] | 0x4000;\n      *piVar8 = 0x24;\n      return (void *)0x0;\n    }\n    uVar12 = *(undefined4 *)((int)&pdVar9->d_ino + 4);\n    *(int *)((int)pvVar11 + 0x30) = iVar7 + 1;\n    iVar15 = *param_1;\n    *(size_t *)((int)pvVar11 + 0x28) = sVar10 + local_4c;\n    *(int *)((int)pvVar11 + 4) = iVar15;\n    _Var3 = pdVar9->d_ino;\n    *(undefined4 *)((int)pvVar11 + 0xa0) = uVar12;\n    *(int *)((int)pvVar11 + 0x9c) = (int)_Var3;\n    uVar14 = param_1[0xb];\n    if ((uVar14 & 4) == 0) {\n      *(void **)((int)pvVar11 + 0x18) = (void *)((int)pvVar11 + 0xa4);\n    }\n    else {\n      *(undefined4 *)((int)pvVar11 + 0x18) = *(undefined4 *)((int)pvVar11 + 0x1c);\n      memmove(local_38,(void *)((int)pvVar11 + 0xa4),*(int *)((int)pvVar11 + 0x34) + 1);\n      uVar14 = param_1[0xb];\n    }\n    if ((param_1[10] == 0) || ((uVar14 & 0x400) != 0)) {\n      uVar18 = pdVar9->d_type - 1;\n      if (((uVar14 & 0x18) == 0x18) && ((pdVar9->d_type & 0xfb) != 0)) {\n        *(undefined2 *)((int)pvVar11 + 0x3c) = 0xb;\n        if (uVar18 < 0xc) {\n          *(undefined4 *)((int)pvVar11 + 0x54) = *(undefined4 *)(&DAT_0001e180 + uVar18 * 4);\n          uVar12 = 1;\n        }\n        else {\n          *(undefined4 *)((int)pvVar11 + 0x54) = 0;\n          uVar12 = 1;\n        }\n      }\n      else {\n        *(undefined2 *)((int)pvVar11 + 0x3c) = 0xb;\n        if (uVar18 < 0xc) {\n          *(undefined4 *)((int)pvVar11 + 0x54) = *(undefined4 *)(&DAT_0001e180 + uVar18 * 4);\n          uVar12 = 2;\n        }\n        else {\n          *(undefined4 *)((int)pvVar11 + 0x54) = 0;\n          uVar12 = 2;\n        }\n      }\n      *(undefined4 *)((int)pvVar11 + 0x70) = uVar12;\n      *(undefined4 *)((int)pvVar11 + 0x74) = 0;\n    }\n    else {\n      uVar6 = FUN_00018640();\n      *(undefined2 *)((int)pvVar11 + 0x3c) = uVar6;\n    }\n    *(undefined4 *)((int)pvVar11 + 8) = 0;\n    pvVar16 = pvVar11;\n    if (local_48 != (void *)0x0) {\n      *(void **)((int)local_54 + 8) = pvVar11;\n      pvVar16 = local_48;\n    }\n    local_48 = pvVar16;\n    local_54 = pvVar11;\n    if (local_5c == 10000) {\n      if ((param_1[10] != 0) ||\n         (((iVar15 = FUN_00018a00(), iVar15 != 0x6969 && (iVar15 != 0x1021994)) &&\n          (bVar2 = true, iVar15 != -0xacb2be)))) {\n        local_5c = 0x2711;\n        goto LAB_000193a8;\n      }\n      bVar2 = false;\n    }\n    local_5c = local_5c + 1;\n  } while (local_5c < local_34);" (statement_identifier "LAB_000193a8") (: ":") (do_statement "do {\n    do {\n      pDVar13 = *(DIR **)(iVar1 + 0xc);\n      if (pDVar13 == (DIR *)0x0) goto LAB_00019641;\n      piVar8 = __errno_location();\n      *piVar8 = 0;\n      pdVar9 = readdir64(pDVar13);\n      if (pdVar9 == (dirent64 *)0x0) {\n        if (*piVar8 != 0) {\n          *(int *)(iVar1 + 0x20) = *piVar8;\n          *(ushort *)(iVar1 + 0x3c) =\n               (-(ushort)(__dirp == (DIR *)0x0 && local_5c == 0) & 0xfffd) + 7;\n        }\n        if (*(DIR **)(iVar1 + 0xc) != (DIR *)0x0) {\n          closedir(*(DIR **)(iVar1 + 0xc));\n          *(undefined4 *)(iVar1 + 0xc) = 0;\n        }\n        goto LAB_00019641;\n      }\n    } while ((((*(byte *)(param_1 + 0xb) & 0x20) == 0) && (pdVar9->d_name[0] == '.')) &&\n            ((pdVar9->d_name[1] == '\0' || (*(short *)(pdVar9->d_name + 1) == 0x2e))));\n    sVar10 = strlen(pdVar9->d_name);\n    pvVar11 = (void *)FUN_000188d0();\n    if (pvVar11 == (void *)0x0) {\nLAB_00019910:\n      iVar7 = *piVar8;\n      free(pvVar11);\n      FUN_00018960();\n      closedir(*(DIR **)(iVar1 + 0xc));\n      *(undefined4 *)(iVar1 + 0xc) = 0;\n      *(undefined2 *)(iVar1 + 0x3c) = 7;\n      param_1[0xb] = param_1[0xb] | 0x4000;\n      *piVar8 = iVar7;\n      return (void *)0x0;\n    }\n    if (local_44 <= sVar10) {\n      iVar15 = param_1[5];\n      cVar5 = FUN_00018cc0();\n      if (cVar5 == '\0') goto LAB_00019910;\n      puVar4 = local_38;\n      if ((param_1[5] != iVar15) &&\n         (local_1f = cVar5, puVar4 = (undefined1 *)(param_1[5] + local_4c),\n         (*(byte *)(param_1 + 0xb) & 4) == 0)) {\n        puVar4 = local_38;\n      }\n      local_38 = puVar4;\n      local_44 = param_1[8] - local_4c;\n    }\n    if (CARRY4(sVar10,local_4c)) {\n      free(pvVar11);\n      FUN_00018960();\n      closedir(*(DIR **)(iVar1 + 0xc));\n      *(undefined4 *)(iVar1 + 0xc) = 0;\n      *(undefined2 *)(iVar1 + 0x3c) = 7;\n      param_1[0xb] = param_1[0xb] | 0x4000;\n      *piVar8 = 0x24;\n      return (void *)0x0;\n    }\n    uVar12 = *(undefined4 *)((int)&pdVar9->d_ino + 4);\n    *(int *)((int)pvVar11 + 0x30) = iVar7 + 1;\n    iVar15 = *param_1;\n    *(size_t *)((int)pvVar11 + 0x28) = sVar10 + local_4c;\n    *(int *)((int)pvVar11 + 4) = iVar15;\n    _Var3 = pdVar9->d_ino;\n    *(undefined4 *)((int)pvVar11 + 0xa0) = uVar12;\n    *(int *)((int)pvVar11 + 0x9c) = (int)_Var3;\n    uVar14 = param_1[0xb];\n    if ((uVar14 & 4) == 0) {\n      *(void **)((int)pvVar11 + 0x18) = (void *)((int)pvVar11 + 0xa4);\n    }\n    else {\n      *(undefined4 *)((int)pvVar11 + 0x18) = *(undefined4 *)((int)pvVar11 + 0x1c);\n      memmove(local_38,(void *)((int)pvVar11 + 0xa4),*(int *)((int)pvVar11 + 0x34) + 1);\n      uVar14 = param_1[0xb];\n    }\n    if ((param_1[10] == 0) || ((uVar14 & 0x400) != 0)) {\n      uVar18 = pdVar9->d_type - 1;\n      if (((uVar14 & 0x18) == 0x18) && ((pdVar9->d_type & 0xfb) != 0)) {\n        *(undefined2 *)((int)pvVar11 + 0x3c) = 0xb;\n        if (uVar18 < 0xc) {\n          *(undefined4 *)((int)pvVar11 + 0x54) = *(undefined4 *)(&DAT_0001e180 + uVar18 * 4);\n          uVar12 = 1;\n        }\n        else {\n          *(undefined4 *)((int)pvVar11 + 0x54) = 0;\n          uVar12 = 1;\n        }\n      }\n      else {\n        *(undefined2 *)((int)pvVar11 + 0x3c) = 0xb;\n        if (uVar18 < 0xc) {\n          *(undefined4 *)((int)pvVar11 + 0x54) = *(undefined4 *)(&DAT_0001e180 + uVar18 * 4);\n          uVar12 = 2;\n        }\n        else {\n          *(undefined4 *)((int)pvVar11 + 0x54) = 0;\n          uVar12 = 2;\n        }\n      }\n      *(undefined4 *)((int)pvVar11 + 0x70) = uVar12;\n      *(undefined4 *)((int)pvVar11 + 0x74) = 0;\n    }\n    else {\n      uVar6 = FUN_00018640();\n      *(undefined2 *)((int)pvVar11 + 0x3c) = uVar6;\n    }\n    *(undefined4 *)((int)pvVar11 + 8) = 0;\n    pvVar16 = pvVar11;\n    if (local_48 != (void *)0x0) {\n      *(void **)((int)local_54 + 8) = pvVar11;\n      pvVar16 = local_48;\n    }\n    local_48 = pvVar16;\n    local_54 = pvVar11;\n    if (local_5c == 10000) {\n      if ((param_1[10] != 0) ||\n         (((iVar15 = FUN_00018a00(), iVar15 != 0x6969 && (iVar15 != 0x1021994)) &&\n          (bVar2 = true, iVar15 != -0xacb2be)))) {\n        local_5c = 0x2711;\n        goto LAB_000193a8;\n      }\n      bVar2 = false;\n    }\n    local_5c = local_5c + 1;\n  } while (local_5c < local_34);" (do "do") (compound_statement "{\n    do {\n      pDVar13 = *(DIR **)(iVar1 + 0xc);\n      if (pDVar13 == (DIR *)0x0) goto LAB_00019641;\n      piVar8 = __errno_location();\n      *piVar8 = 0;\n      pdVar9 = readdir64(pDVar13);\n      if (pdVar9 == (dirent64 *)0x0) {\n        if (*piVar8 != 0) {\n          *(int *)(iVar1 + 0x20) = *piVar8;\n          *(ushort *)(iVar1 + 0x3c) =\n               (-(ushort)(__dirp == (DIR *)0x0 && local_5c == 0) & 0xfffd) + 7;\n        }\n        if (*(DIR **)(iVar1 + 0xc) != (DIR *)0x0) {\n          closedir(*(DIR **)(iVar1 + 0xc));\n          *(undefined4 *)(iVar1 + 0xc) = 0;\n        }\n        goto LAB_00019641;\n      }\n    } while ((((*(byte *)(param_1 + 0xb) & 0x20) == 0) && (pdVar9->d_name[0] == '.')) &&\n            ((pdVar9->d_name[1] == '\0' || (*(short *)(pdVar9->d_name + 1) == 0x2e))));\n    sVar10 = strlen(pdVar9->d_name);\n    pvVar11 = (void *)FUN_000188d0();\n    if (pvVar11 == (void *)0x0) {\nLAB_00019910:\n      iVar7 = *piVar8;\n      free(pvVar11);\n      FUN_00018960();\n      closedir(*(DIR **)(iVar1 + 0xc));\n      *(undefined4 *)(iVar1 + 0xc) = 0;\n      *(undefined2 *)(iVar1 + 0x3c) = 7;\n      param_1[0xb] = param_1[0xb] | 0x4000;\n      *piVar8 = iVar7;\n      return (void *)0x0;\n    }\n    if (local_44 <= sVar10) {\n      iVar15 = param_1[5];\n      cVar5 = FUN_00018cc0();\n      if (cVar5 == '\0') goto LAB_00019910;\n      puVar4 = local_38;\n      if ((param_1[5] != iVar15) &&\n         (local_1f = cVar5, puVar4 = (undefined1 *)(param_1[5] + local_4c),\n         (*(byte *)(param_1 + 0xb) & 4) == 0)) {\n        puVar4 = local_38;\n      }\n      local_38 = puVar4;\n      local_44 = param_1[8] - local_4c;\n    }\n    if (CARRY4(sVar10,local_4c)) {\n      free(pvVar11);\n      FUN_00018960();\n      closedir(*(DIR **)(iVar1 + 0xc));\n      *(undefined4 *)(iVar1 + 0xc) = 0;\n      *(undefined2 *)(iVar1 + 0x3c) = 7;\n      param_1[0xb] = param_1[0xb] | 0x4000;\n      *piVar8 = 0x24;\n      return (void *)0x0;\n    }\n    uVar12 = *(undefined4 *)((int)&pdVar9->d_ino + 4);\n    *(int *)((int)pvVar11 + 0x30) = iVar7 + 1;\n    iVar15 = *param_1;\n    *(size_t *)((int)pvVar11 + 0x28) = sVar10 + local_4c;\n    *(int *)((int)pvVar11 + 4) = iVar15;\n    _Var3 = pdVar9->d_ino;\n    *(undefined4 *)((int)pvVar11 + 0xa0) = uVar12;\n    *(int *)((int)pvVar11 + 0x9c) = (int)_Var3;\n    uVar14 = param_1[0xb];\n    if ((uVar14 & 4) == 0) {\n      *(void **)((int)pvVar11 + 0x18) = (void *)((int)pvVar11 + 0xa4);\n    }\n    else {\n      *(undefined4 *)((int)pvVar11 + 0x18) = *(undefined4 *)((int)pvVar11 + 0x1c);\n      memmove(local_38,(void *)((int)pvVar11 + 0xa4),*(int *)((int)pvVar11 + 0x34) + 1);\n      uVar14 = param_1[0xb];\n    }\n    if ((param_1[10] == 0) || ((uVar14 & 0x400) != 0)) {\n      uVar18 = pdVar9->d_type - 1;\n      if (((uVar14 & 0x18) == 0x18) && ((pdVar9->d_type & 0xfb) != 0)) {\n        *(undefined2 *)((int)pvVar11 + 0x3c) = 0xb;\n        if (uVar18 < 0xc) {\n          *(undefined4 *)((int)pvVar11 + 0x54) = *(undefined4 *)(&DAT_0001e180 + uVar18 * 4);\n          uVar12 = 1;\n        }\n        else {\n          *(undefined4 *)((int)pvVar11 + 0x54) = 0;\n          uVar12 = 1;\n        }\n      }\n      else {\n        *(undefined2 *)((int)pvVar11 + 0x3c) = 0xb;\n        if (uVar18 < 0xc) {\n          *(undefined4 *)((int)pvVar11 + 0x54) = *(undefined4 *)(&DAT_0001e180 + uVar18 * 4);\n          uVar12 = 2;\n        }\n        else {\n          *(undefined4 *)((int)pvVar11 + 0x54) = 0;\n          uVar12 = 2;\n        }\n      }\n      *(undefined4 *)((int)pvVar11 + 0x70) = uVar12;\n      *(undefined4 *)((int)pvVar11 + 0x74) = 0;\n    }\n    else {\n      uVar6 = FUN_00018640();\n      *(undefined2 *)((int)pvVar11 + 0x3c) = uVar6;\n    }\n    *(undefined4 *)((int)pvVar11 + 8) = 0;\n    pvVar16 = pvVar11;\n    if (local_48 != (void *)0x0) {\n      *(void **)((int)local_54 + 8) = pvVar11;\n      pvVar16 = local_48;\n    }\n    local_48 = pvVar16;\n    local_54 = pvVar11;\n    if (local_5c == 10000) {\n      if ((param_1[10] != 0) ||\n         (((iVar15 = FUN_00018a00(), iVar15 != 0x6969 && (iVar15 != 0x1021994)) &&\n          (bVar2 = true, iVar15 != -0xacb2be)))) {\n        local_5c = 0x2711;\n        goto LAB_000193a8;\n      }\n      bVar2 = false;\n    }\n    local_5c = local_5c + 1;\n  }" ({ "{") (do_statement "do {\n      pDVar13 = *(DIR **)(iVar1 + 0xc);\n      if (pDVar13 == (DIR *)0x0) goto LAB_00019641;\n      piVar8 = __errno_location();\n      *piVar8 = 0;\n      pdVar9 = readdir64(pDVar13);\n      if (pdVar9 == (dirent64 *)0x0) {\n        if (*piVar8 != 0) {\n          *(int *)(iVar1 + 0x20) = *piVar8;\n          *(ushort *)(iVar1 + 0x3c) =\n               (-(ushort)(__dirp == (DIR *)0x0 && local_5c == 0) & 0xfffd) + 7;\n        }\n        if (*(DIR **)(iVar1 + 0xc) != (DIR *)0x0) {\n          closedir(*(DIR **)(iVar1 + 0xc));\n          *(undefined4 *)(iVar1 + 0xc) = 0;\n        }\n        goto LAB_00019641;\n      }\n    } while ((((*(byte *)(param_1 + 0xb) & 0x20) == 0) && (pdVar9->d_name[0] == '.')) &&\n            ((pdVar9->d_name[1] == '\0' || (*(short *)(pdVar9->d_name + 1) == 0x2e))));" (do "do") (compound_statement "{\n      pDVar13 = *(DIR **)(iVar1 + 0xc);\n      if (pDVar13 == (DIR *)0x0) goto LAB_00019641;\n      piVar8 = __errno_location();\n      *piVar8 = 0;\n      pdVar9 = readdir64(pDVar13);\n      if (pdVar9 == (dirent64 *)0x0) {\n        if (*piVar8 != 0) {\n          *(int *)(iVar1 + 0x20) = *piVar8;\n          *(ushort *)(iVar1 + 0x3c) =\n               (-(ushort)(__dirp == (DIR *)0x0 && local_5c == 0) & 0xfffd) + 7;\n        }\n        if (*(DIR **)(iVar1 + 0xc) != (DIR *)0x0) {\n          closedir(*(DIR **)(iVar1 + 0xc));\n          *(undefined4 *)(iVar1 + 0xc) = 0;\n        }\n        goto LAB_00019641;\n      }\n    }" ({ "{") (expression_statement "pDVar13 = *(DIR **)(iVar1 + 0xc);" (assignment_expression "pDVar13 = *(DIR **)(iVar1 + 0xc)" (identifier "pDVar13") (= "=") (pointer_expression "*(DIR **)(iVar1 + 0xc)" (* "*") (cast_expression "(DIR **)(iVar1 + 0xc)" (( "(") (type_descriptor "DIR **" (type_identifier "DIR") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar1 + 0xc)" (( "(") (binary_expression "iVar1 + 0xc" (identifier "iVar1") (+ "+") (number_literal "0xc")) () ")"))))) (; ";")) (if_statement "if (pDVar13 == (DIR *)0x0) goto LAB_00019641;" (if "if") (parenthesized_expression "(pDVar13 == (DIR *)0x0)" (( "(") (binary_expression "pDVar13 == (DIR *)0x0" (identifier "pDVar13") (== "==") (cast_expression "(DIR *)0x0" (( "(") (type_descriptor "DIR *" (type_identifier "DIR") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (goto_statement "goto LAB_00019641;" (goto "goto") (statement_identifier "LAB_00019641") (; ";"))) (expression_statement "piVar8 = __errno_location();" (assignment_expression "piVar8 = __errno_location()" (identifier "piVar8") (= "=") (call_expression "__errno_location()" (identifier "__errno_location") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "*piVar8 = 0;" (assignment_expression "*piVar8 = 0" (pointer_expression "*piVar8" (* "*") (identifier "piVar8")) (= "=") (number_literal "0")) (; ";")) (expression_statement "pdVar9 = readdir64(pDVar13);" (assignment_expression "pdVar9 = readdir64(pDVar13)" (identifier "pdVar9") (= "=") (call_expression "readdir64(pDVar13)" (identifier "readdir64") (argument_list "(pDVar13)" (( "(") (identifier "pDVar13") () ")")))) (; ";")) (if_statement "if (pdVar9 == (dirent64 *)0x0) {\n        if (*piVar8 != 0) {\n          *(int *)(iVar1 + 0x20) = *piVar8;\n          *(ushort *)(iVar1 + 0x3c) =\n               (-(ushort)(__dirp == (DIR *)0x0 && local_5c == 0) & 0xfffd) + 7;\n        }\n        if (*(DIR **)(iVar1 + 0xc) != (DIR *)0x0) {\n          closedir(*(DIR **)(iVar1 + 0xc));\n          *(undefined4 *)(iVar1 + 0xc) = 0;\n        }\n        goto LAB_00019641;\n      }" (if "if") (parenthesized_expression "(pdVar9 == (dirent64 *)0x0)" (( "(") (binary_expression "pdVar9 == (dirent64 *)0x0" (identifier "pdVar9") (== "==") (cast_expression "(dirent64 *)0x0" (( "(") (type_descriptor "dirent64 *" (type_identifier "dirent64") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n        if (*piVar8 != 0) {\n          *(int *)(iVar1 + 0x20) = *piVar8;\n          *(ushort *)(iVar1 + 0x3c) =\n               (-(ushort)(__dirp == (DIR *)0x0 && local_5c == 0) & 0xfffd) + 7;\n        }\n        if (*(DIR **)(iVar1 + 0xc) != (DIR *)0x0) {\n          closedir(*(DIR **)(iVar1 + 0xc));\n          *(undefined4 *)(iVar1 + 0xc) = 0;\n        }\n        goto LAB_00019641;\n      }" ({ "{") (if_statement "if (*piVar8 != 0) {\n          *(int *)(iVar1 + 0x20) = *piVar8;\n          *(ushort *)(iVar1 + 0x3c) =\n               (-(ushort)(__dirp == (DIR *)0x0 && local_5c == 0) & 0xfffd) + 7;\n        }" (if "if") (parenthesized_expression "(*piVar8 != 0)" (( "(") (binary_expression "*piVar8 != 0" (pointer_expression "*piVar8" (* "*") (identifier "piVar8")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          *(int *)(iVar1 + 0x20) = *piVar8;\n          *(ushort *)(iVar1 + 0x3c) =\n               (-(ushort)(__dirp == (DIR *)0x0 && local_5c == 0) & 0xfffd) + 7;\n        }" ({ "{") (expression_statement "*(int *)(iVar1 + 0x20) = *piVar8;" (assignment_expression "*(int *)(iVar1 + 0x20) = *piVar8" (pointer_expression "*(int *)(iVar1 + 0x20)" (* "*") (cast_expression "(int *)(iVar1 + 0x20)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 0x20)" (( "(") (binary_expression "iVar1 + 0x20" (identifier "iVar1") (+ "+") (number_literal "0x20")) () ")")))) (= "=") (pointer_expression "*piVar8" (* "*") (identifier "piVar8"))) (; ";")) (expression_statement "*(ushort *)(iVar1 + 0x3c) =\n               (-(ushort)(__dirp == (DIR *)0x0 && local_5c == 0) & 0xfffd) + 7;" (assignment_expression "*(ushort *)(iVar1 + 0x3c) =\n               (-(ushort)(__dirp == (DIR *)0x0 && local_5c == 0) & 0xfffd) + 7" (pointer_expression "*(ushort *)(iVar1 + 0x3c)" (* "*") (cast_expression "(ushort *)(iVar1 + 0x3c)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 0x3c)" (( "(") (binary_expression "iVar1 + 0x3c" (identifier "iVar1") (+ "+") (number_literal "0x3c")) () ")")))) (= "=") (binary_expression "(-(ushort)(__dirp == (DIR *)0x0 && local_5c == 0) & 0xfffd) + 7" (parenthesized_expression "(-(ushort)(__dirp == (DIR *)0x0 && local_5c == 0) & 0xfffd)" (( "(") (binary_expression "-(ushort)(__dirp == (DIR *)0x0 && local_5c == 0) & 0xfffd" (unary_expression "-(ushort)(__dirp == (DIR *)0x0 && local_5c == 0)" (- "-") (call_expression "(ushort)(__dirp == (DIR *)0x0 && local_5c == 0)" (parenthesized_expression "(ushort)" (( "(") (identifier "ushort") () ")")) (argument_list "(__dirp == (DIR *)0x0 && local_5c == 0)" (( "(") (binary_expression "__dirp == (DIR *)0x0 && local_5c == 0" (binary_expression "__dirp == (DIR *)0x0" (identifier "__dirp") (== "==") (cast_expression "(DIR *)0x0" (( "(") (type_descriptor "DIR *" (type_identifier "DIR") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (&& "&&") (binary_expression "local_5c == 0" (identifier "local_5c") (== "==") (number_literal "0"))) () ")")))) (& "&") (number_literal "0xfffd")) () ")")) (+ "+") (number_literal "7"))) (; ";")) (} "}"))) (if_statement "if (*(DIR **)(iVar1 + 0xc) != (DIR *)0x0) {\n          closedir(*(DIR **)(iVar1 + 0xc));\n          *(undefined4 *)(iVar1 + 0xc) = 0;\n        }" (if "if") (parenthesized_expression "(*(DIR **)(iVar1 + 0xc) != (DIR *)0x0)" (( "(") (binary_expression "*(DIR **)(iVar1 + 0xc) != (DIR *)0x0" (pointer_expression "*(DIR **)(iVar1 + 0xc)" (* "*") (cast_expression "(DIR **)(iVar1 + 0xc)" (( "(") (type_descriptor "DIR **" (type_identifier "DIR") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar1 + 0xc)" (( "(") (binary_expression "iVar1 + 0xc" (identifier "iVar1") (+ "+") (number_literal "0xc")) () ")")))) (!= "!=") (cast_expression "(DIR *)0x0" (( "(") (type_descriptor "DIR *" (type_identifier "DIR") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n          closedir(*(DIR **)(iVar1 + 0xc));\n          *(undefined4 *)(iVar1 + 0xc) = 0;\n        }" ({ "{") (expression_statement "closedir(*(DIR **)(iVar1 + 0xc));" (call_expression "closedir(*(DIR **)(iVar1 + 0xc))" (identifier "closedir") (argument_list "(*(DIR **)(iVar1 + 0xc))" (( "(") (pointer_expression "*(DIR **)(iVar1 + 0xc)" (* "*") (cast_expression "(DIR **)(iVar1 + 0xc)" (( "(") (type_descriptor "DIR **" (type_identifier "DIR") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar1 + 0xc)" (( "(") (binary_expression "iVar1 + 0xc" (identifier "iVar1") (+ "+") (number_literal "0xc")) () ")")))) () ")"))) (; ";")) (expression_statement "*(undefined4 *)(iVar1 + 0xc) = 0;" (assignment_expression "*(undefined4 *)(iVar1 + 0xc) = 0" (pointer_expression "*(undefined4 *)(iVar1 + 0xc)" (* "*") (cast_expression "(undefined4 *)(iVar1 + 0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 0xc)" (( "(") (binary_expression "iVar1 + 0xc" (identifier "iVar1") (+ "+") (number_literal "0xc")) () ")")))) (= "=") (number_literal "0")) (; ";")) (} "}"))) (goto_statement "goto LAB_00019641;" (goto "goto") (statement_identifier "LAB_00019641") (; ";")) (} "}"))) (} "}")) (while "while") (parenthesized_expression "((((*(byte *)(param_1 + 0xb) & 0x20) == 0) && (pdVar9->d_name[0] == '.')) &&\n            ((pdVar9->d_name[1] == '\0' || (*(short *)(pdVar9->d_name + 1) == 0x2e))))" (( "(") (binary_expression "(((*(byte *)(param_1 + 0xb) & 0x20) == 0) && (pdVar9->d_name[0] == '.')) &&\n            ((pdVar9->d_name[1] == '\0' || (*(short *)(pdVar9->d_name + 1) == 0x2e)))" (parenthesized_expression "(((*(byte *)(param_1 + 0xb) & 0x20) == 0) && (pdVar9->d_name[0] == '.'))" (( "(") (binary_expression "((*(byte *)(param_1 + 0xb) & 0x20) == 0) && (pdVar9->d_name[0] == '.')" (parenthesized_expression "((*(byte *)(param_1 + 0xb) & 0x20) == 0)" (( "(") (binary_expression "(*(byte *)(param_1 + 0xb) & 0x20) == 0" (parenthesized_expression "(*(byte *)(param_1 + 0xb) & 0x20)" (( "(") (binary_expression "*(byte *)(param_1 + 0xb) & 0x20" (pointer_expression "*(byte *)(param_1 + 0xb)" (* "*") (cast_expression "(byte *)(param_1 + 0xb)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xb)" (( "(") (binary_expression "param_1 + 0xb" (identifier "param_1") (+ "+") (number_literal "0xb")) () ")")))) (& "&") (number_literal "0x20")) () ")")) (== "==") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(pdVar9->d_name[0] == '.')" (( "(") (binary_expression "pdVar9->d_name[0] == '.'" (subscript_expression "pdVar9->d_name[0]" (field_expression "pdVar9->d_name" (identifier "pdVar9") (-> "->") (field_identifier "d_name")) ([ "[") (number_literal "0") (] "]")) (== "==") (char_literal "'.'" (' "'") (character ".") (' "'"))) () ")"))) () ")")) (&& "&&") (parenthesized_expression "((pdVar9->d_name[1] == '\0' || (*(short *)(pdVar9->d_name + 1) == 0x2e)))" (( "(") (parenthesized_expression "(pdVar9->d_name[1] == '\0' || (*(short *)(pdVar9->d_name + 1) == 0x2e))" (( "(") (binary_expression "pdVar9->d_name[1] == '\0' || (*(short *)(pdVar9->d_name + 1) == 0x2e)" (binary_expression "pdVar9->d_name[1] == '\0'" (subscript_expression "pdVar9->d_name[1]" (field_expression "pdVar9->d_name" (identifier "pdVar9") (-> "->") (field_identifier "d_name")) ([ "[") (number_literal "1") (] "]")) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) (|| "||") (parenthesized_expression "(*(short *)(pdVar9->d_name + 1) == 0x2e)" (( "(") (binary_expression "*(short *)(pdVar9->d_name + 1) == 0x2e" (pointer_expression "*(short *)(pdVar9->d_name + 1)" (* "*") (cast_expression "(short *)(pdVar9->d_name + 1)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pdVar9->d_name + 1)" (( "(") (binary_expression "pdVar9->d_name + 1" (field_expression "pdVar9->d_name" (identifier "pdVar9") (-> "->") (field_identifier "d_name")) (+ "+") (number_literal "1")) () ")")))) (== "==") (number_literal "0x2e")) () ")"))) () ")")) () ")"))) () ")")) (; ";")) (expression_statement "sVar10 = strlen(pdVar9->d_name);" (assignment_expression "sVar10 = strlen(pdVar9->d_name)" (identifier "sVar10") (= "=") (call_expression "strlen(pdVar9->d_name)" (identifier "strlen") (argument_list "(pdVar9->d_name)" (( "(") (field_expression "pdVar9->d_name" (identifier "pdVar9") (-> "->") (field_identifier "d_name")) () ")")))) (; ";")) (expression_statement "pvVar11 = (void *)FUN_000188d0();" (assignment_expression "pvVar11 = (void *)FUN_000188d0()" (identifier "pvVar11") (= "=") (cast_expression "(void *)FUN_000188d0()" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_000188d0()" (identifier "FUN_000188d0") (argument_list "()" (( "(") () ")"))))) (; ";")) (if_statement "if (pvVar11 == (void *)0x0) {\nLAB_00019910:\n      iVar7 = *piVar8;\n      free(pvVar11);\n      FUN_00018960();\n      closedir(*(DIR **)(iVar1 + 0xc));\n      *(undefined4 *)(iVar1 + 0xc) = 0;\n      *(undefined2 *)(iVar1 + 0x3c) = 7;\n      param_1[0xb] = param_1[0xb] | 0x4000;\n      *piVar8 = iVar7;\n      return (void *)0x0;\n    }" (if "if") (parenthesized_expression "(pvVar11 == (void *)0x0)" (( "(") (binary_expression "pvVar11 == (void *)0x0" (identifier "pvVar11") (== "==") (cast_expression "(void *)0x0" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\nLAB_00019910:\n      iVar7 = *piVar8;\n      free(pvVar11);\n      FUN_00018960();\n      closedir(*(DIR **)(iVar1 + 0xc));\n      *(undefined4 *)(iVar1 + 0xc) = 0;\n      *(undefined2 *)(iVar1 + 0x3c) = 7;\n      param_1[0xb] = param_1[0xb] | 0x4000;\n      *piVar8 = iVar7;\n      return (void *)0x0;\n    }" ({ "{") (labeled_statement "LAB_00019910:\n      iVar7 = *piVar8;" (statement_identifier "LAB_00019910") (: ":") (expression_statement "iVar7 = *piVar8;" (assignment_expression "iVar7 = *piVar8" (identifier "iVar7") (= "=") (pointer_expression "*piVar8" (* "*") (identifier "piVar8"))) (; ";"))) (expression_statement "free(pvVar11);" (call_expression "free(pvVar11)" (identifier "free") (argument_list "(pvVar11)" (( "(") (identifier "pvVar11") () ")"))) (; ";")) (expression_statement "FUN_00018960();" (call_expression "FUN_00018960()" (identifier "FUN_00018960") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "closedir(*(DIR **)(iVar1 + 0xc));" (call_expression "closedir(*(DIR **)(iVar1 + 0xc))" (identifier "closedir") (argument_list "(*(DIR **)(iVar1 + 0xc))" (( "(") (pointer_expression "*(DIR **)(iVar1 + 0xc)" (* "*") (cast_expression "(DIR **)(iVar1 + 0xc)" (( "(") (type_descriptor "DIR **" (type_identifier "DIR") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar1 + 0xc)" (( "(") (binary_expression "iVar1 + 0xc" (identifier "iVar1") (+ "+") (number_literal "0xc")) () ")")))) () ")"))) (; ";")) (expression_statement "*(undefined4 *)(iVar1 + 0xc) = 0;" (assignment_expression "*(undefined4 *)(iVar1 + 0xc) = 0" (pointer_expression "*(undefined4 *)(iVar1 + 0xc)" (* "*") (cast_expression "(undefined4 *)(iVar1 + 0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 0xc)" (( "(") (binary_expression "iVar1 + 0xc" (identifier "iVar1") (+ "+") (number_literal "0xc")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined2 *)(iVar1 + 0x3c) = 7;" (assignment_expression "*(undefined2 *)(iVar1 + 0x3c) = 7" (pointer_expression "*(undefined2 *)(iVar1 + 0x3c)" (* "*") (cast_expression "(undefined2 *)(iVar1 + 0x3c)" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 0x3c)" (( "(") (binary_expression "iVar1 + 0x3c" (identifier "iVar1") (+ "+") (number_literal "0x3c")) () ")")))) (= "=") (number_literal "7")) (; ";")) (expression_statement "param_1[0xb] = param_1[0xb] | 0x4000;" (assignment_expression "param_1[0xb] = param_1[0xb] | 0x4000" (subscript_expression "param_1[0xb]" (identifier "param_1") ([ "[") (number_literal "0xb") (] "]")) (= "=") (binary_expression "param_1[0xb] | 0x4000" (subscript_expression "param_1[0xb]" (identifier "param_1") ([ "[") (number_literal "0xb") (] "]")) (| "|") (number_literal "0x4000"))) (; ";")) (expression_statement "*piVar8 = iVar7;" (assignment_expression "*piVar8 = iVar7" (pointer_expression "*piVar8" (* "*") (identifier "piVar8")) (= "=") (identifier "iVar7")) (; ";")) (return_statement "return (void *)0x0;" (return "return") (cast_expression "(void *)0x0" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")) (; ";")) (} "}"))) (if_statement "if (local_44 <= sVar10) {\n      iVar15 = param_1[5];\n      cVar5 = FUN_00018cc0();\n      if (cVar5 == '\0') goto LAB_00019910;\n      puVar4 = local_38;\n      if ((param_1[5] != iVar15) &&\n         (local_1f = cVar5, puVar4 = (undefined1 *)(param_1[5] + local_4c),\n         (*(byte *)(param_1 + 0xb) & 4) == 0)) {\n        puVar4 = local_38;\n      }\n      local_38 = puVar4;\n      local_44 = param_1[8] - local_4c;\n    }" (if "if") (parenthesized_expression "(local_44 <= sVar10)" (( "(") (binary_expression "local_44 <= sVar10" (identifier "local_44") (<= "<=") (identifier "sVar10")) () ")")) (compound_statement "{\n      iVar15 = param_1[5];\n      cVar5 = FUN_00018cc0();\n      if (cVar5 == '\0') goto LAB_00019910;\n      puVar4 = local_38;\n      if ((param_1[5] != iVar15) &&\n         (local_1f = cVar5, puVar4 = (undefined1 *)(param_1[5] + local_4c),\n         (*(byte *)(param_1 + 0xb) & 4) == 0)) {\n        puVar4 = local_38;\n      }\n      local_38 = puVar4;\n      local_44 = param_1[8] - local_4c;\n    }" ({ "{") (expression_statement "iVar15 = param_1[5];" (assignment_expression "iVar15 = param_1[5]" (identifier "iVar15") (= "=") (subscript_expression "param_1[5]" (identifier "param_1") ([ "[") (number_literal "5") (] "]"))) (; ";")) (expression_statement "cVar5 = FUN_00018cc0();" (assignment_expression "cVar5 = FUN_00018cc0()" (identifier "cVar5") (= "=") (call_expression "FUN_00018cc0()" (identifier "FUN_00018cc0") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if (cVar5 == '\0') goto LAB_00019910;" (if "if") (parenthesized_expression "(cVar5 == '\0')" (( "(") (binary_expression "cVar5 == '\0'" (identifier "cVar5") (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (goto_statement "goto LAB_00019910;" (goto "goto") (statement_identifier "LAB_00019910") (; ";"))) (expression_statement "puVar4 = local_38;" (assignment_expression "puVar4 = local_38" (identifier "puVar4") (= "=") (identifier "local_38")) (; ";")) (if_statement "if ((param_1[5] != iVar15) &&\n         (local_1f = cVar5, puVar4 = (undefined1 *)(param_1[5] + local_4c),\n         (*(byte *)(param_1 + 0xb) & 4) == 0)) {\n        puVar4 = local_38;\n      }" (if "if") (parenthesized_expression "((param_1[5] != iVar15) &&\n         (local_1f = cVar5, puVar4 = (undefined1 *)(param_1[5] + local_4c),\n         (*(byte *)(param_1 + 0xb) & 4) == 0))" (( "(") (binary_expression "(param_1[5] != iVar15) &&\n         (local_1f = cVar5, puVar4 = (undefined1 *)(param_1[5] + local_4c),\n         (*(byte *)(param_1 + 0xb) & 4) == 0)" (parenthesized_expression "(param_1[5] != iVar15)" (( "(") (binary_expression "param_1[5] != iVar15" (subscript_expression "param_1[5]" (identifier "param_1") ([ "[") (number_literal "5") (] "]")) (!= "!=") (identifier "iVar15")) () ")")) (&& "&&") (parenthesized_expression "(local_1f = cVar5, puVar4 = (undefined1 *)(param_1[5] + local_4c),\n         (*(byte *)(param_1 + 0xb) & 4) == 0)" (( "(") (comma_expression "local_1f = cVar5, puVar4 = (undefined1 *)(param_1[5] + local_4c),\n         (*(byte *)(param_1 + 0xb) & 4) == 0" (assignment_expression "local_1f = cVar5" (identifier "local_1f") (= "=") (identifier "cVar5")) (, ",") (comma_expression "puVar4 = (undefined1 *)(param_1[5] + local_4c),\n         (*(byte *)(param_1 + 0xb) & 4) == 0" (assignment_expression "puVar4 = (undefined1 *)(param_1[5] + local_4c)" (identifier "puVar4") (= "=") (cast_expression "(undefined1 *)(param_1[5] + local_4c)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1[5] + local_4c)" (( "(") (binary_expression "param_1[5] + local_4c" (subscript_expression "param_1[5]" (identifier "param_1") ([ "[") (number_literal "5") (] "]")) (+ "+") (identifier "local_4c")) () ")")))) (, ",") (binary_expression "(*(byte *)(param_1 + 0xb) & 4) == 0" (parenthesized_expression "(*(byte *)(param_1 + 0xb) & 4)" (( "(") (binary_expression "*(byte *)(param_1 + 0xb) & 4" (pointer_expression "*(byte *)(param_1 + 0xb)" (* "*") (cast_expression "(byte *)(param_1 + 0xb)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xb)" (( "(") (binary_expression "param_1 + 0xb" (identifier "param_1") (+ "+") (number_literal "0xb")) () ")")))) (& "&") (number_literal "4")) () ")")) (== "==") (number_literal "0")))) () ")"))) () ")")) (compound_statement "{\n        puVar4 = local_38;\n      }" ({ "{") (expression_statement "puVar4 = local_38;" (assignment_expression "puVar4 = local_38" (identifier "puVar4") (= "=") (identifier "local_38")) (; ";")) (} "}"))) (expression_statement "local_38 = puVar4;" (assignment_expression "local_38 = puVar4" (identifier "local_38") (= "=") (identifier "puVar4")) (; ";")) (expression_statement "local_44 = param_1[8] - local_4c;" (assignment_expression "local_44 = param_1[8] - local_4c" (identifier "local_44") (= "=") (binary_expression "param_1[8] - local_4c" (subscript_expression "param_1[8]" (identifier "param_1") ([ "[") (number_literal "8") (] "]")) (- "-") (identifier "local_4c"))) (; ";")) (} "}"))) (if_statement "if (CARRY4(sVar10,local_4c)) {\n      free(pvVar11);\n      FUN_00018960();\n      closedir(*(DIR **)(iVar1 + 0xc));\n      *(undefined4 *)(iVar1 + 0xc) = 0;\n      *(undefined2 *)(iVar1 + 0x3c) = 7;\n      param_1[0xb] = param_1[0xb] | 0x4000;\n      *piVar8 = 0x24;\n      return (void *)0x0;\n    }" (if "if") (parenthesized_expression "(CARRY4(sVar10,local_4c))" (( "(") (call_expression "CARRY4(sVar10,local_4c)" (identifier "CARRY4") (argument_list "(sVar10,local_4c)" (( "(") (identifier "sVar10") (, ",") (identifier "local_4c") () ")"))) () ")")) (compound_statement "{\n      free(pvVar11);\n      FUN_00018960();\n      closedir(*(DIR **)(iVar1 + 0xc));\n      *(undefined4 *)(iVar1 + 0xc) = 0;\n      *(undefined2 *)(iVar1 + 0x3c) = 7;\n      param_1[0xb] = param_1[0xb] | 0x4000;\n      *piVar8 = 0x24;\n      return (void *)0x0;\n    }" ({ "{") (expression_statement "free(pvVar11);" (call_expression "free(pvVar11)" (identifier "free") (argument_list "(pvVar11)" (( "(") (identifier "pvVar11") () ")"))) (; ";")) (expression_statement "FUN_00018960();" (call_expression "FUN_00018960()" (identifier "FUN_00018960") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "closedir(*(DIR **)(iVar1 + 0xc));" (call_expression "closedir(*(DIR **)(iVar1 + 0xc))" (identifier "closedir") (argument_list "(*(DIR **)(iVar1 + 0xc))" (( "(") (pointer_expression "*(DIR **)(iVar1 + 0xc)" (* "*") (cast_expression "(DIR **)(iVar1 + 0xc)" (( "(") (type_descriptor "DIR **" (type_identifier "DIR") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar1 + 0xc)" (( "(") (binary_expression "iVar1 + 0xc" (identifier "iVar1") (+ "+") (number_literal "0xc")) () ")")))) () ")"))) (; ";")) (expression_statement "*(undefined4 *)(iVar1 + 0xc) = 0;" (assignment_expression "*(undefined4 *)(iVar1 + 0xc) = 0" (pointer_expression "*(undefined4 *)(iVar1 + 0xc)" (* "*") (cast_expression "(undefined4 *)(iVar1 + 0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 0xc)" (( "(") (binary_expression "iVar1 + 0xc" (identifier "iVar1") (+ "+") (number_literal "0xc")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined2 *)(iVar1 + 0x3c) = 7;" (assignment_expression "*(undefined2 *)(iVar1 + 0x3c) = 7" (pointer_expression "*(undefined2 *)(iVar1 + 0x3c)" (* "*") (cast_expression "(undefined2 *)(iVar1 + 0x3c)" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 0x3c)" (( "(") (binary_expression "iVar1 + 0x3c" (identifier "iVar1") (+ "+") (number_literal "0x3c")) () ")")))) (= "=") (number_literal "7")) (; ";")) (expression_statement "param_1[0xb] = param_1[0xb] | 0x4000;" (assignment_expression "param_1[0xb] = param_1[0xb] | 0x4000" (subscript_expression "param_1[0xb]" (identifier "param_1") ([ "[") (number_literal "0xb") (] "]")) (= "=") (binary_expression "param_1[0xb] | 0x4000" (subscript_expression "param_1[0xb]" (identifier "param_1") ([ "[") (number_literal "0xb") (] "]")) (| "|") (number_literal "0x4000"))) (; ";")) (expression_statement "*piVar8 = 0x24;" (assignment_expression "*piVar8 = 0x24" (pointer_expression "*piVar8" (* "*") (identifier "piVar8")) (= "=") (number_literal "0x24")) (; ";")) (return_statement "return (void *)0x0;" (return "return") (cast_expression "(void *)0x0" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")) (; ";")) (} "}"))) (expression_statement "uVar12 = *(undefined4 *)((int)&pdVar9->d_ino + 4);" (assignment_expression "uVar12 = *(undefined4 *)((int)&pdVar9->d_ino + 4)" (identifier "uVar12") (= "=") (pointer_expression "*(undefined4 *)((int)&pdVar9->d_ino + 4)" (* "*") (cast_expression "(undefined4 *)((int)&pdVar9->d_ino + 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)&pdVar9->d_ino + 4)" (( "(") (binary_expression "(int)&pdVar9->d_ino + 4" (cast_expression "(int)&pdVar9->d_ino" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (pointer_expression "&pdVar9->d_ino" (& "&") (field_expression "pdVar9->d_ino" (identifier "pdVar9") (-> "->") (field_identifier "d_ino")))) (+ "+") (number_literal "4")) () ")"))))) (; ";")) (expression_statement "*(int *)((int)pvVar11 + 0x30) = iVar7 + 1;" (assignment_expression "*(int *)((int)pvVar11 + 0x30) = iVar7 + 1" (pointer_expression "*(int *)((int)pvVar11 + 0x30)" (* "*") (cast_expression "(int *)((int)pvVar11 + 0x30)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)pvVar11 + 0x30)" (( "(") (binary_expression "(int)pvVar11 + 0x30" (cast_expression "(int)pvVar11" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pvVar11")) (+ "+") (number_literal "0x30")) () ")")))) (= "=") (binary_expression "iVar7 + 1" (identifier "iVar7") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "iVar15 = *param_1;" (assignment_expression "iVar15 = *param_1" (identifier "iVar15") (= "=") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (; ";")) (expression_statement "*(size_t *)((int)pvVar11 + 0x28) = sVar10 + local_4c;" (assignment_expression "*(size_t *)((int)pvVar11 + 0x28) = sVar10 + local_4c" (pointer_expression "*(size_t *)((int)pvVar11 + 0x28)" (* "*") (cast_expression "(size_t *)((int)pvVar11 + 0x28)" (( "(") (type_descriptor "size_t *" (primitive_type "size_t") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)pvVar11 + 0x28)" (( "(") (binary_expression "(int)pvVar11 + 0x28" (cast_expression "(int)pvVar11" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pvVar11")) (+ "+") (number_literal "0x28")) () ")")))) (= "=") (binary_expression "sVar10 + local_4c" (identifier "sVar10") (+ "+") (identifier "local_4c"))) (; ";")) (expression_statement "*(int *)((int)pvVar11 + 4) = iVar15;" (assignment_expression "*(int *)((int)pvVar11 + 4) = iVar15" (pointer_expression "*(int *)((int)pvVar11 + 4)" (* "*") (cast_expression "(int *)((int)pvVar11 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)pvVar11 + 4)" (( "(") (binary_expression "(int)pvVar11 + 4" (cast_expression "(int)pvVar11" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pvVar11")) (+ "+") (number_literal "4")) () ")")))) (= "=") (identifier "iVar15")) (; ";")) (expression_statement "_Var3 = pdVar9->d_ino;" (assignment_expression "_Var3 = pdVar9->d_ino" (identifier "_Var3") (= "=") (field_expression "pdVar9->d_ino" (identifier "pdVar9") (-> "->") (field_identifier "d_ino"))) (; ";")) (expression_statement "*(undefined4 *)((int)pvVar11 + 0xa0) = uVar12;" (assignment_expression "*(undefined4 *)((int)pvVar11 + 0xa0) = uVar12" (pointer_expression "*(undefined4 *)((int)pvVar11 + 0xa0)" (* "*") (cast_expression "(undefined4 *)((int)pvVar11 + 0xa0)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)pvVar11 + 0xa0)" (( "(") (binary_expression "(int)pvVar11 + 0xa0" (cast_expression "(int)pvVar11" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pvVar11")) (+ "+") (number_literal "0xa0")) () ")")))) (= "=") (identifier "uVar12")) (; ";")) (expression_statement "*(int *)((int)pvVar11 + 0x9c) = (int)_Var3;" (assignment_expression "*(int *)((int)pvVar11 + 0x9c) = (int)_Var3" (pointer_expression "*(int *)((int)pvVar11 + 0x9c)" (* "*") (cast_expression "(int *)((int)pvVar11 + 0x9c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)pvVar11 + 0x9c)" (( "(") (binary_expression "(int)pvVar11 + 0x9c" (cast_expression "(int)pvVar11" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pvVar11")) (+ "+") (number_literal "0x9c")) () ")")))) (= "=") (cast_expression "(int)_Var3" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "_Var3"))) (; ";")) (expression_statement "uVar14 = param_1[0xb];" (assignment_expression "uVar14 = param_1[0xb]" (identifier "uVar14") (= "=") (subscript_expression "param_1[0xb]" (identifier "param_1") ([ "[") (number_literal "0xb") (] "]"))) (; ";")) (if_statement "if ((uVar14 & 4) == 0) {\n      *(void **)((int)pvVar11 + 0x18) = (void *)((int)pvVar11 + 0xa4);\n    }\n    else {\n      *(undefined4 *)((int)pvVar11 + 0x18) = *(undefined4 *)((int)pvVar11 + 0x1c);\n      memmove(local_38,(void *)((int)pvVar11 + 0xa4),*(int *)((int)pvVar11 + 0x34) + 1);\n      uVar14 = param_1[0xb];\n    }" (if "if") (parenthesized_expression "((uVar14 & 4) == 0)" (( "(") (binary_expression "(uVar14 & 4) == 0" (parenthesized_expression "(uVar14 & 4)" (( "(") (binary_expression "uVar14 & 4" (identifier "uVar14") (& "&") (number_literal "4")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      *(void **)((int)pvVar11 + 0x18) = (void *)((int)pvVar11 + 0xa4);\n    }" ({ "{") (expression_statement "*(void **)((int)pvVar11 + 0x18) = (void *)((int)pvVar11 + 0xa4);" (assignment_expression "*(void **)((int)pvVar11 + 0x18) = (void *)((int)pvVar11 + 0xa4)" (pointer_expression "*(void **)((int)pvVar11 + 0x18)" (* "*") (cast_expression "(void **)((int)pvVar11 + 0x18)" (( "(") (type_descriptor "void **" (primitive_type "void") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "((int)pvVar11 + 0x18)" (( "(") (binary_expression "(int)pvVar11 + 0x18" (cast_expression "(int)pvVar11" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pvVar11")) (+ "+") (number_literal "0x18")) () ")")))) (= "=") (cast_expression "(void *)((int)pvVar11 + 0xa4)" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)pvVar11 + 0xa4)" (( "(") (binary_expression "(int)pvVar11 + 0xa4" (cast_expression "(int)pvVar11" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pvVar11")) (+ "+") (number_literal "0xa4")) () ")")))) (; ";")) (} "}")) (else_clause "else {\n      *(undefined4 *)((int)pvVar11 + 0x18) = *(undefined4 *)((int)pvVar11 + 0x1c);\n      memmove(local_38,(void *)((int)pvVar11 + 0xa4),*(int *)((int)pvVar11 + 0x34) + 1);\n      uVar14 = param_1[0xb];\n    }" (else "else") (compound_statement "{\n      *(undefined4 *)((int)pvVar11 + 0x18) = *(undefined4 *)((int)pvVar11 + 0x1c);\n      memmove(local_38,(void *)((int)pvVar11 + 0xa4),*(int *)((int)pvVar11 + 0x34) + 1);\n      uVar14 = param_1[0xb];\n    }" ({ "{") (expression_statement "*(undefined4 *)((int)pvVar11 + 0x18) = *(undefined4 *)((int)pvVar11 + 0x1c);" (assignment_expression "*(undefined4 *)((int)pvVar11 + 0x18) = *(undefined4 *)((int)pvVar11 + 0x1c)" (pointer_expression "*(undefined4 *)((int)pvVar11 + 0x18)" (* "*") (cast_expression "(undefined4 *)((int)pvVar11 + 0x18)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)pvVar11 + 0x18)" (( "(") (binary_expression "(int)pvVar11 + 0x18" (cast_expression "(int)pvVar11" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pvVar11")) (+ "+") (number_literal "0x18")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)((int)pvVar11 + 0x1c)" (* "*") (cast_expression "(undefined4 *)((int)pvVar11 + 0x1c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)pvVar11 + 0x1c)" (( "(") (binary_expression "(int)pvVar11 + 0x1c" (cast_expression "(int)pvVar11" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pvVar11")) (+ "+") (number_literal "0x1c")) () ")"))))) (; ";")) (expression_statement "memmove(local_38,(void *)((int)pvVar11 + 0xa4),*(int *)((int)pvVar11 + 0x34) + 1);" (call_expression "memmove(local_38,(void *)((int)pvVar11 + 0xa4),*(int *)((int)pvVar11 + 0x34) + 1)" (identifier "memmove") (argument_list "(local_38,(void *)((int)pvVar11 + 0xa4),*(int *)((int)pvVar11 + 0x34) + 1)" (( "(") (identifier "local_38") (, ",") (cast_expression "(void *)((int)pvVar11 + 0xa4)" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)pvVar11 + 0xa4)" (( "(") (binary_expression "(int)pvVar11 + 0xa4" (cast_expression "(int)pvVar11" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pvVar11")) (+ "+") (number_literal "0xa4")) () ")"))) (, ",") (binary_expression "*(int *)((int)pvVar11 + 0x34) + 1" (pointer_expression "*(int *)((int)pvVar11 + 0x34)" (* "*") (cast_expression "(int *)((int)pvVar11 + 0x34)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)pvVar11 + 0x34)" (( "(") (binary_expression "(int)pvVar11 + 0x34" (cast_expression "(int)pvVar11" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pvVar11")) (+ "+") (number_literal "0x34")) () ")")))) (+ "+") (number_literal "1")) () ")"))) (; ";")) (expression_statement "uVar14 = param_1[0xb];" (assignment_expression "uVar14 = param_1[0xb]" (identifier "uVar14") (= "=") (subscript_expression "param_1[0xb]" (identifier "param_1") ([ "[") (number_literal "0xb") (] "]"))) (; ";")) (} "}")))) (if_statement "if ((param_1[10] == 0) || ((uVar14 & 0x400) != 0)) {\n      uVar18 = pdVar9->d_type - 1;\n      if (((uVar14 & 0x18) == 0x18) && ((pdVar9->d_type & 0xfb) != 0)) {\n        *(undefined2 *)((int)pvVar11 + 0x3c) = 0xb;\n        if (uVar18 < 0xc) {\n          *(undefined4 *)((int)pvVar11 + 0x54) = *(undefined4 *)(&DAT_0001e180 + uVar18 * 4);\n          uVar12 = 1;\n        }\n        else {\n          *(undefined4 *)((int)pvVar11 + 0x54) = 0;\n          uVar12 = 1;\n        }\n      }\n      else {\n        *(undefined2 *)((int)pvVar11 + 0x3c) = 0xb;\n        if (uVar18 < 0xc) {\n          *(undefined4 *)((int)pvVar11 + 0x54) = *(undefined4 *)(&DAT_0001e180 + uVar18 * 4);\n          uVar12 = 2;\n        }\n        else {\n          *(undefined4 *)((int)pvVar11 + 0x54) = 0;\n          uVar12 = 2;\n        }\n      }\n      *(undefined4 *)((int)pvVar11 + 0x70) = uVar12;\n      *(undefined4 *)((int)pvVar11 + 0x74) = 0;\n    }\n    else {\n      uVar6 = FUN_00018640();\n      *(undefined2 *)((int)pvVar11 + 0x3c) = uVar6;\n    }" (if "if") (parenthesized_expression "((param_1[10] == 0) || ((uVar14 & 0x400) != 0))" (( "(") (binary_expression "(param_1[10] == 0) || ((uVar14 & 0x400) != 0)" (parenthesized_expression "(param_1[10] == 0)" (( "(") (binary_expression "param_1[10] == 0" (subscript_expression "param_1[10]" (identifier "param_1") ([ "[") (number_literal "10") (] "]")) (== "==") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "((uVar14 & 0x400) != 0)" (( "(") (binary_expression "(uVar14 & 0x400) != 0" (parenthesized_expression "(uVar14 & 0x400)" (( "(") (binary_expression "uVar14 & 0x400" (identifier "uVar14") (& "&") (number_literal "0x400")) () ")")) (!= "!=") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n      uVar18 = pdVar9->d_type - 1;\n      if (((uVar14 & 0x18) == 0x18) && ((pdVar9->d_type & 0xfb) != 0)) {\n        *(undefined2 *)((int)pvVar11 + 0x3c) = 0xb;\n        if (uVar18 < 0xc) {\n          *(undefined4 *)((int)pvVar11 + 0x54) = *(undefined4 *)(&DAT_0001e180 + uVar18 * 4);\n          uVar12 = 1;\n        }\n        else {\n          *(undefined4 *)((int)pvVar11 + 0x54) = 0;\n          uVar12 = 1;\n        }\n      }\n      else {\n        *(undefined2 *)((int)pvVar11 + 0x3c) = 0xb;\n        if (uVar18 < 0xc) {\n          *(undefined4 *)((int)pvVar11 + 0x54) = *(undefined4 *)(&DAT_0001e180 + uVar18 * 4);\n          uVar12 = 2;\n        }\n        else {\n          *(undefined4 *)((int)pvVar11 + 0x54) = 0;\n          uVar12 = 2;\n        }\n      }\n      *(undefined4 *)((int)pvVar11 + 0x70) = uVar12;\n      *(undefined4 *)((int)pvVar11 + 0x74) = 0;\n    }" ({ "{") (expression_statement "uVar18 = pdVar9->d_type - 1;" (assignment_expression "uVar18 = pdVar9->d_type - 1" (identifier "uVar18") (= "=") (binary_expression "pdVar9->d_type - 1" (field_expression "pdVar9->d_type" (identifier "pdVar9") (-> "->") (field_identifier "d_type")) (- "-") (number_literal "1"))) (; ";")) (if_statement "if (((uVar14 & 0x18) == 0x18) && ((pdVar9->d_type & 0xfb) != 0)) {\n        *(undefined2 *)((int)pvVar11 + 0x3c) = 0xb;\n        if (uVar18 < 0xc) {\n          *(undefined4 *)((int)pvVar11 + 0x54) = *(undefined4 *)(&DAT_0001e180 + uVar18 * 4);\n          uVar12 = 1;\n        }\n        else {\n          *(undefined4 *)((int)pvVar11 + 0x54) = 0;\n          uVar12 = 1;\n        }\n      }\n      else {\n        *(undefined2 *)((int)pvVar11 + 0x3c) = 0xb;\n        if (uVar18 < 0xc) {\n          *(undefined4 *)((int)pvVar11 + 0x54) = *(undefined4 *)(&DAT_0001e180 + uVar18 * 4);\n          uVar12 = 2;\n        }\n        else {\n          *(undefined4 *)((int)pvVar11 + 0x54) = 0;\n          uVar12 = 2;\n        }\n      }" (if "if") (parenthesized_expression "(((uVar14 & 0x18) == 0x18) && ((pdVar9->d_type & 0xfb) != 0))" (( "(") (binary_expression "((uVar14 & 0x18) == 0x18) && ((pdVar9->d_type & 0xfb) != 0)" (parenthesized_expression "((uVar14 & 0x18) == 0x18)" (( "(") (binary_expression "(uVar14 & 0x18) == 0x18" (parenthesized_expression "(uVar14 & 0x18)" (( "(") (binary_expression "uVar14 & 0x18" (identifier "uVar14") (& "&") (number_literal "0x18")) () ")")) (== "==") (number_literal "0x18")) () ")")) (&& "&&") (parenthesized_expression "((pdVar9->d_type & 0xfb) != 0)" (( "(") (binary_expression "(pdVar9->d_type & 0xfb) != 0" (parenthesized_expression "(pdVar9->d_type & 0xfb)" (( "(") (binary_expression "pdVar9->d_type & 0xfb" (field_expression "pdVar9->d_type" (identifier "pdVar9") (-> "->") (field_identifier "d_type")) (& "&") (number_literal "0xfb")) () ")")) (!= "!=") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n        *(undefined2 *)((int)pvVar11 + 0x3c) = 0xb;\n        if (uVar18 < 0xc) {\n          *(undefined4 *)((int)pvVar11 + 0x54) = *(undefined4 *)(&DAT_0001e180 + uVar18 * 4);\n          uVar12 = 1;\n        }\n        else {\n          *(undefined4 *)((int)pvVar11 + 0x54) = 0;\n          uVar12 = 1;\n        }\n      }" ({ "{") (expression_statement "*(undefined2 *)((int)pvVar11 + 0x3c) = 0xb;" (assignment_expression "*(undefined2 *)((int)pvVar11 + 0x3c) = 0xb" (pointer_expression "*(undefined2 *)((int)pvVar11 + 0x3c)" (* "*") (cast_expression "(undefined2 *)((int)pvVar11 + 0x3c)" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)pvVar11 + 0x3c)" (( "(") (binary_expression "(int)pvVar11 + 0x3c" (cast_expression "(int)pvVar11" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pvVar11")) (+ "+") (number_literal "0x3c")) () ")")))) (= "=") (number_literal "0xb")) (; ";")) (if_statement "if (uVar18 < 0xc) {\n          *(undefined4 *)((int)pvVar11 + 0x54) = *(undefined4 *)(&DAT_0001e180 + uVar18 * 4);\n          uVar12 = 1;\n        }\n        else {\n          *(undefined4 *)((int)pvVar11 + 0x54) = 0;\n          uVar12 = 1;\n        }" (if "if") (parenthesized_expression "(uVar18 < 0xc)" (( "(") (binary_expression "uVar18 < 0xc" (identifier "uVar18") (< "<") (number_literal "0xc")) () ")")) (compound_statement "{\n          *(undefined4 *)((int)pvVar11 + 0x54) = *(undefined4 *)(&DAT_0001e180 + uVar18 * 4);\n          uVar12 = 1;\n        }" ({ "{") (expression_statement "*(undefined4 *)((int)pvVar11 + 0x54) = *(undefined4 *)(&DAT_0001e180 + uVar18 * 4);" (assignment_expression "*(undefined4 *)((int)pvVar11 + 0x54) = *(undefined4 *)(&DAT_0001e180 + uVar18 * 4)" (pointer_expression "*(undefined4 *)((int)pvVar11 + 0x54)" (* "*") (cast_expression "(undefined4 *)((int)pvVar11 + 0x54)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)pvVar11 + 0x54)" (( "(") (binary_expression "(int)pvVar11 + 0x54" (cast_expression "(int)pvVar11" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pvVar11")) (+ "+") (number_literal "0x54")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(&DAT_0001e180 + uVar18 * 4)" (* "*") (cast_expression "(undefined4 *)(&DAT_0001e180 + uVar18 * 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(&DAT_0001e180 + uVar18 * 4)" (( "(") (binary_expression "&DAT_0001e180 + uVar18 * 4" (pointer_expression "&DAT_0001e180" (& "&") (identifier "DAT_0001e180")) (+ "+") (binary_expression "uVar18 * 4" (identifier "uVar18") (* "*") (number_literal "4"))) () ")"))))) (; ";")) (expression_statement "uVar12 = 1;" (assignment_expression "uVar12 = 1" (identifier "uVar12") (= "=") (number_literal "1")) (; ";")) (} "}")) (else_clause "else {\n          *(undefined4 *)((int)pvVar11 + 0x54) = 0;\n          uVar12 = 1;\n        }" (else "else") (compound_statement "{\n          *(undefined4 *)((int)pvVar11 + 0x54) = 0;\n          uVar12 = 1;\n        }" ({ "{") (expression_statement "*(undefined4 *)((int)pvVar11 + 0x54) = 0;" (assignment_expression "*(undefined4 *)((int)pvVar11 + 0x54) = 0" (pointer_expression "*(undefined4 *)((int)pvVar11 + 0x54)" (* "*") (cast_expression "(undefined4 *)((int)pvVar11 + 0x54)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)pvVar11 + 0x54)" (( "(") (binary_expression "(int)pvVar11 + 0x54" (cast_expression "(int)pvVar11" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pvVar11")) (+ "+") (number_literal "0x54")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar12 = 1;" (assignment_expression "uVar12 = 1" (identifier "uVar12") (= "=") (number_literal "1")) (; ";")) (} "}")))) (} "}")) (else_clause "else {\n        *(undefined2 *)((int)pvVar11 + 0x3c) = 0xb;\n        if (uVar18 < 0xc) {\n          *(undefined4 *)((int)pvVar11 + 0x54) = *(undefined4 *)(&DAT_0001e180 + uVar18 * 4);\n          uVar12 = 2;\n        }\n        else {\n          *(undefined4 *)((int)pvVar11 + 0x54) = 0;\n          uVar12 = 2;\n        }\n      }" (else "else") (compound_statement "{\n        *(undefined2 *)((int)pvVar11 + 0x3c) = 0xb;\n        if (uVar18 < 0xc) {\n          *(undefined4 *)((int)pvVar11 + 0x54) = *(undefined4 *)(&DAT_0001e180 + uVar18 * 4);\n          uVar12 = 2;\n        }\n        else {\n          *(undefined4 *)((int)pvVar11 + 0x54) = 0;\n          uVar12 = 2;\n        }\n      }" ({ "{") (expression_statement "*(undefined2 *)((int)pvVar11 + 0x3c) = 0xb;" (assignment_expression "*(undefined2 *)((int)pvVar11 + 0x3c) = 0xb" (pointer_expression "*(undefined2 *)((int)pvVar11 + 0x3c)" (* "*") (cast_expression "(undefined2 *)((int)pvVar11 + 0x3c)" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)pvVar11 + 0x3c)" (( "(") (binary_expression "(int)pvVar11 + 0x3c" (cast_expression "(int)pvVar11" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pvVar11")) (+ "+") (number_literal "0x3c")) () ")")))) (= "=") (number_literal "0xb")) (; ";")) (if_statement "if (uVar18 < 0xc) {\n          *(undefined4 *)((int)pvVar11 + 0x54) = *(undefined4 *)(&DAT_0001e180 + uVar18 * 4);\n          uVar12 = 2;\n        }\n        else {\n          *(undefined4 *)((int)pvVar11 + 0x54) = 0;\n          uVar12 = 2;\n        }" (if "if") (parenthesized_expression "(uVar18 < 0xc)" (( "(") (binary_expression "uVar18 < 0xc" (identifier "uVar18") (< "<") (number_literal "0xc")) () ")")) (compound_statement "{\n          *(undefined4 *)((int)pvVar11 + 0x54) = *(undefined4 *)(&DAT_0001e180 + uVar18 * 4);\n          uVar12 = 2;\n        }" ({ "{") (expression_statement "*(undefined4 *)((int)pvVar11 + 0x54) = *(undefined4 *)(&DAT_0001e180 + uVar18 * 4);" (assignment_expression "*(undefined4 *)((int)pvVar11 + 0x54) = *(undefined4 *)(&DAT_0001e180 + uVar18 * 4)" (pointer_expression "*(undefined4 *)((int)pvVar11 + 0x54)" (* "*") (cast_expression "(undefined4 *)((int)pvVar11 + 0x54)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)pvVar11 + 0x54)" (( "(") (binary_expression "(int)pvVar11 + 0x54" (cast_expression "(int)pvVar11" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pvVar11")) (+ "+") (number_literal "0x54")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(&DAT_0001e180 + uVar18 * 4)" (* "*") (cast_expression "(undefined4 *)(&DAT_0001e180 + uVar18 * 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(&DAT_0001e180 + uVar18 * 4)" (( "(") (binary_expression "&DAT_0001e180 + uVar18 * 4" (pointer_expression "&DAT_0001e180" (& "&") (identifier "DAT_0001e180")) (+ "+") (binary_expression "uVar18 * 4" (identifier "uVar18") (* "*") (number_literal "4"))) () ")"))))) (; ";")) (expression_statement "uVar12 = 2;" (assignment_expression "uVar12 = 2" (identifier "uVar12") (= "=") (number_literal "2")) (; ";")) (} "}")) (else_clause "else {\n          *(undefined4 *)((int)pvVar11 + 0x54) = 0;\n          uVar12 = 2;\n        }" (else "else") (compound_statement "{\n          *(undefined4 *)((int)pvVar11 + 0x54) = 0;\n          uVar12 = 2;\n        }" ({ "{") (expression_statement "*(undefined4 *)((int)pvVar11 + 0x54) = 0;" (assignment_expression "*(undefined4 *)((int)pvVar11 + 0x54) = 0" (pointer_expression "*(undefined4 *)((int)pvVar11 + 0x54)" (* "*") (cast_expression "(undefined4 *)((int)pvVar11 + 0x54)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)pvVar11 + 0x54)" (( "(") (binary_expression "(int)pvVar11 + 0x54" (cast_expression "(int)pvVar11" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pvVar11")) (+ "+") (number_literal "0x54")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar12 = 2;" (assignment_expression "uVar12 = 2" (identifier "uVar12") (= "=") (number_literal "2")) (; ";")) (} "}")))) (} "}")))) (expression_statement "*(undefined4 *)((int)pvVar11 + 0x70) = uVar12;" (assignment_expression "*(undefined4 *)((int)pvVar11 + 0x70) = uVar12" (pointer_expression "*(undefined4 *)((int)pvVar11 + 0x70)" (* "*") (cast_expression "(undefined4 *)((int)pvVar11 + 0x70)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)pvVar11 + 0x70)" (( "(") (binary_expression "(int)pvVar11 + 0x70" (cast_expression "(int)pvVar11" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pvVar11")) (+ "+") (number_literal "0x70")) () ")")))) (= "=") (identifier "uVar12")) (; ";")) (expression_statement "*(undefined4 *)((int)pvVar11 + 0x74) = 0;" (assignment_expression "*(undefined4 *)((int)pvVar11 + 0x74) = 0" (pointer_expression "*(undefined4 *)((int)pvVar11 + 0x74)" (* "*") (cast_expression "(undefined4 *)((int)pvVar11 + 0x74)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)pvVar11 + 0x74)" (( "(") (binary_expression "(int)pvVar11 + 0x74" (cast_expression "(int)pvVar11" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pvVar11")) (+ "+") (number_literal "0x74")) () ")")))) (= "=") (number_literal "0")) (; ";")) (} "}")) (else_clause "else {\n      uVar6 = FUN_00018640();\n      *(undefined2 *)((int)pvVar11 + 0x3c) = uVar6;\n    }" (else "else") (compound_statement "{\n      uVar6 = FUN_00018640();\n      *(undefined2 *)((int)pvVar11 + 0x3c) = uVar6;\n    }" ({ "{") (expression_statement "uVar6 = FUN_00018640();" (assignment_expression "uVar6 = FUN_00018640()" (identifier "uVar6") (= "=") (call_expression "FUN_00018640()" (identifier "FUN_00018640") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "*(undefined2 *)((int)pvVar11 + 0x3c) = uVar6;" (assignment_expression "*(undefined2 *)((int)pvVar11 + 0x3c) = uVar6" (pointer_expression "*(undefined2 *)((int)pvVar11 + 0x3c)" (* "*") (cast_expression "(undefined2 *)((int)pvVar11 + 0x3c)" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)pvVar11 + 0x3c)" (( "(") (binary_expression "(int)pvVar11 + 0x3c" (cast_expression "(int)pvVar11" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pvVar11")) (+ "+") (number_literal "0x3c")) () ")")))) (= "=") (identifier "uVar6")) (; ";")) (} "}")))) (expression_statement "*(undefined4 *)((int)pvVar11 + 8) = 0;" (assignment_expression "*(undefined4 *)((int)pvVar11 + 8) = 0" (pointer_expression "*(undefined4 *)((int)pvVar11 + 8)" (* "*") (cast_expression "(undefined4 *)((int)pvVar11 + 8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)pvVar11 + 8)" (( "(") (binary_expression "(int)pvVar11 + 8" (cast_expression "(int)pvVar11" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pvVar11")) (+ "+") (number_literal "8")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "pvVar16 = pvVar11;" (assignment_expression "pvVar16 = pvVar11" (identifier "pvVar16") (= "=") (identifier "pvVar11")) (; ";")) (if_statement "if (local_48 != (void *)0x0) {\n      *(void **)((int)local_54 + 8) = pvVar11;\n      pvVar16 = local_48;\n    }" (if "if") (parenthesized_expression "(local_48 != (void *)0x0)" (( "(") (binary_expression "local_48 != (void *)0x0" (identifier "local_48") (!= "!=") (cast_expression "(void *)0x0" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n      *(void **)((int)local_54 + 8) = pvVar11;\n      pvVar16 = local_48;\n    }" ({ "{") (expression_statement "*(void **)((int)local_54 + 8) = pvVar11;" (assignment_expression "*(void **)((int)local_54 + 8) = pvVar11" (pointer_expression "*(void **)((int)local_54 + 8)" (* "*") (cast_expression "(void **)((int)local_54 + 8)" (( "(") (type_descriptor "void **" (primitive_type "void") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "((int)local_54 + 8)" (( "(") (binary_expression "(int)local_54 + 8" (cast_expression "(int)local_54" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_54")) (+ "+") (number_literal "8")) () ")")))) (= "=") (identifier "pvVar11")) (; ";")) (expression_statement "pvVar16 = local_48;" (assignment_expression "pvVar16 = local_48" (identifier "pvVar16") (= "=") (identifier "local_48")) (; ";")) (} "}"))) (expression_statement "local_48 = pvVar16;" (assignment_expression "local_48 = pvVar16" (identifier "local_48") (= "=") (identifier "pvVar16")) (; ";")) (expression_statement "local_54 = pvVar11;" (assignment_expression "local_54 = pvVar11" (identifier "local_54") (= "=") (identifier "pvVar11")) (; ";")) (if_statement "if (local_5c == 10000) {\n      if ((param_1[10] != 0) ||\n         (((iVar15 = FUN_00018a00(), iVar15 != 0x6969 && (iVar15 != 0x1021994)) &&\n          (bVar2 = true, iVar15 != -0xacb2be)))) {\n        local_5c = 0x2711;\n        goto LAB_000193a8;\n      }\n      bVar2 = false;\n    }" (if "if") (parenthesized_expression "(local_5c == 10000)" (( "(") (binary_expression "local_5c == 10000" (identifier "local_5c") (== "==") (number_literal "10000")) () ")")) (compound_statement "{\n      if ((param_1[10] != 0) ||\n         (((iVar15 = FUN_00018a00(), iVar15 != 0x6969 && (iVar15 != 0x1021994)) &&\n          (bVar2 = true, iVar15 != -0xacb2be)))) {\n        local_5c = 0x2711;\n        goto LAB_000193a8;\n      }\n      bVar2 = false;\n    }" ({ "{") (if_statement "if ((param_1[10] != 0) ||\n         (((iVar15 = FUN_00018a00(), iVar15 != 0x6969 && (iVar15 != 0x1021994)) &&\n          (bVar2 = true, iVar15 != -0xacb2be)))) {\n        local_5c = 0x2711;\n        goto LAB_000193a8;\n      }" (if "if") (parenthesized_expression "((param_1[10] != 0) ||\n         (((iVar15 = FUN_00018a00(), iVar15 != 0x6969 && (iVar15 != 0x1021994)) &&\n          (bVar2 = true, iVar15 != -0xacb2be))))" (( "(") (binary_expression "(param_1[10] != 0) ||\n         (((iVar15 = FUN_00018a00(), iVar15 != 0x6969 && (iVar15 != 0x1021994)) &&\n          (bVar2 = true, iVar15 != -0xacb2be)))" (parenthesized_expression "(param_1[10] != 0)" (( "(") (binary_expression "param_1[10] != 0" (subscript_expression "param_1[10]" (identifier "param_1") ([ "[") (number_literal "10") (] "]")) (!= "!=") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(((iVar15 = FUN_00018a00(), iVar15 != 0x6969 && (iVar15 != 0x1021994)) &&\n          (bVar2 = true, iVar15 != -0xacb2be)))" (( "(") (parenthesized_expression "((iVar15 = FUN_00018a00(), iVar15 != 0x6969 && (iVar15 != 0x1021994)) &&\n          (bVar2 = true, iVar15 != -0xacb2be))" (( "(") (binary_expression "(iVar15 = FUN_00018a00(), iVar15 != 0x6969 && (iVar15 != 0x1021994)) &&\n          (bVar2 = true, iVar15 != -0xacb2be)" (parenthesized_expression "(iVar15 = FUN_00018a00(), iVar15 != 0x6969 && (iVar15 != 0x1021994))" (( "(") (comma_expression "iVar15 = FUN_00018a00(), iVar15 != 0x6969 && (iVar15 != 0x1021994)" (assignment_expression "iVar15 = FUN_00018a00()" (identifier "iVar15") (= "=") (call_expression "FUN_00018a00()" (identifier "FUN_00018a00") (argument_list "()" (( "(") () ")")))) (, ",") (binary_expression "iVar15 != 0x6969 && (iVar15 != 0x1021994)" (binary_expression "iVar15 != 0x6969" (identifier "iVar15") (!= "!=") (number_literal "0x6969")) (&& "&&") (parenthesized_expression "(iVar15 != 0x1021994)" (( "(") (binary_expression "iVar15 != 0x1021994" (identifier "iVar15") (!= "!=") (number_literal "0x1021994")) () ")")))) () ")")) (&& "&&") (parenthesized_expression "(bVar2 = true, iVar15 != -0xacb2be)" (( "(") (comma_expression "bVar2 = true, iVar15 != -0xacb2be" (assignment_expression "bVar2 = true" (identifier "bVar2") (= "=") (true "true")) (, ",") (binary_expression "iVar15 != -0xacb2be" (identifier "iVar15") (!= "!=") (number_literal "-0xacb2be"))) () ")"))) () ")")) () ")"))) () ")")) (compound_statement "{\n        local_5c = 0x2711;\n        goto LAB_000193a8;\n      }" ({ "{") (expression_statement "local_5c = 0x2711;" (assignment_expression "local_5c = 0x2711" (identifier "local_5c") (= "=") (number_literal "0x2711")) (; ";")) (goto_statement "goto LAB_000193a8;" (goto "goto") (statement_identifier "LAB_000193a8") (; ";")) (} "}"))) (expression_statement "bVar2 = false;" (assignment_expression "bVar2 = false" (identifier "bVar2") (= "=") (false "false")) (; ";")) (} "}"))) (expression_statement "local_5c = local_5c + 1;" (assignment_expression "local_5c = local_5c + 1" (identifier "local_5c") (= "=") (binary_expression "local_5c + 1" (identifier "local_5c") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(local_5c < local_34)" (( "(") (binary_expression "local_5c < local_34" (identifier "local_5c") (< "<") (identifier "local_34")) () ")")) (; ";"))) (labeled_statement "LAB_00019641:\n  if (local_1f != '\0') {\n    iVar15 = param_1[5];\n    for (iVar7 = param_1[1]; pvVar11 = local_48, iVar7 != 0; iVar7 = *(int *)(iVar7 + 8)) {\n      if (*(int *)(iVar7 + 0x18) != iVar7 + 0xa4) {\n        *(int *)(iVar7 + 0x18) = (*(int *)(iVar7 + 0x18) - *(int *)(iVar7 + 0x1c)) + iVar15;\n      }\n      *(int *)(iVar7 + 0x1c) = iVar15;\n    }\n    while (pvVar16 = pvVar11, -1 < *(int *)((int)pvVar16 + 0x30)) {\n      if (*(int *)((int)pvVar16 + 0x18) != (int)pvVar16 + 0xa4) {\n        *(int *)((int)pvVar16 + 0x18) =\n             (*(int *)((int)pvVar16 + 0x18) - *(int *)((int)pvVar16 + 0x1c)) + iVar15;\n      }\n      *(int *)((int)pvVar16 + 0x1c) = iVar15;\n      pvVar11 = *(void **)((int)pvVar16 + 8);\n      if (*(void **)((int)pvVar16 + 8) == (void *)0x0) {\n        pvVar11 = *(void **)((int)pvVar16 + 4);\n      }\n    }\n  }" (statement_identifier "LAB_00019641") (: ":") (if_statement "if (local_1f != '\0') {\n    iVar15 = param_1[5];\n    for (iVar7 = param_1[1]; pvVar11 = local_48, iVar7 != 0; iVar7 = *(int *)(iVar7 + 8)) {\n      if (*(int *)(iVar7 + 0x18) != iVar7 + 0xa4) {\n        *(int *)(iVar7 + 0x18) = (*(int *)(iVar7 + 0x18) - *(int *)(iVar7 + 0x1c)) + iVar15;\n      }\n      *(int *)(iVar7 + 0x1c) = iVar15;\n    }\n    while (pvVar16 = pvVar11, -1 < *(int *)((int)pvVar16 + 0x30)) {\n      if (*(int *)((int)pvVar16 + 0x18) != (int)pvVar16 + 0xa4) {\n        *(int *)((int)pvVar16 + 0x18) =\n             (*(int *)((int)pvVar16 + 0x18) - *(int *)((int)pvVar16 + 0x1c)) + iVar15;\n      }\n      *(int *)((int)pvVar16 + 0x1c) = iVar15;\n      pvVar11 = *(void **)((int)pvVar16 + 8);\n      if (*(void **)((int)pvVar16 + 8) == (void *)0x0) {\n        pvVar11 = *(void **)((int)pvVar16 + 4);\n      }\n    }\n  }" (if "if") (parenthesized_expression "(local_1f != '\0')" (( "(") (binary_expression "local_1f != '\0'" (identifier "local_1f") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n    iVar15 = param_1[5];\n    for (iVar7 = param_1[1]; pvVar11 = local_48, iVar7 != 0; iVar7 = *(int *)(iVar7 + 8)) {\n      if (*(int *)(iVar7 + 0x18) != iVar7 + 0xa4) {\n        *(int *)(iVar7 + 0x18) = (*(int *)(iVar7 + 0x18) - *(int *)(iVar7 + 0x1c)) + iVar15;\n      }\n      *(int *)(iVar7 + 0x1c) = iVar15;\n    }\n    while (pvVar16 = pvVar11, -1 < *(int *)((int)pvVar16 + 0x30)) {\n      if (*(int *)((int)pvVar16 + 0x18) != (int)pvVar16 + 0xa4) {\n        *(int *)((int)pvVar16 + 0x18) =\n             (*(int *)((int)pvVar16 + 0x18) - *(int *)((int)pvVar16 + 0x1c)) + iVar15;\n      }\n      *(int *)((int)pvVar16 + 0x1c) = iVar15;\n      pvVar11 = *(void **)((int)pvVar16 + 8);\n      if (*(void **)((int)pvVar16 + 8) == (void *)0x0) {\n        pvVar11 = *(void **)((int)pvVar16 + 4);\n      }\n    }\n  }" ({ "{") (expression_statement "iVar15 = param_1[5];" (assignment_expression "iVar15 = param_1[5]" (identifier "iVar15") (= "=") (subscript_expression "param_1[5]" (identifier "param_1") ([ "[") (number_literal "5") (] "]"))) (; ";")) (for_statement "for (iVar7 = param_1[1]; pvVar11 = local_48, iVar7 != 0; iVar7 = *(int *)(iVar7 + 8)) {\n      if (*(int *)(iVar7 + 0x18) != iVar7 + 0xa4) {\n        *(int *)(iVar7 + 0x18) = (*(int *)(iVar7 + 0x18) - *(int *)(iVar7 + 0x1c)) + iVar15;\n      }\n      *(int *)(iVar7 + 0x1c) = iVar15;\n    }" (for "for") (( "(") (assignment_expression "iVar7 = param_1[1]" (identifier "iVar7") (= "=") (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]"))) (; ";") (comma_expression "pvVar11 = local_48, iVar7 != 0" (assignment_expression "pvVar11 = local_48" (identifier "pvVar11") (= "=") (identifier "local_48")) (, ",") (binary_expression "iVar7 != 0" (identifier "iVar7") (!= "!=") (number_literal "0"))) (; ";") (assignment_expression "iVar7 = *(int *)(iVar7 + 8)" (identifier "iVar7") (= "=") (pointer_expression "*(int *)(iVar7 + 8)" (* "*") (cast_expression "(int *)(iVar7 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar7 + 8)" (( "(") (binary_expression "iVar7 + 8" (identifier "iVar7") (+ "+") (number_literal "8")) () ")"))))) () ")") (compound_statement "{\n      if (*(int *)(iVar7 + 0x18) != iVar7 + 0xa4) {\n        *(int *)(iVar7 + 0x18) = (*(int *)(iVar7 + 0x18) - *(int *)(iVar7 + 0x1c)) + iVar15;\n      }\n      *(int *)(iVar7 + 0x1c) = iVar15;\n    }" ({ "{") (if_statement "if (*(int *)(iVar7 + 0x18) != iVar7 + 0xa4) {\n        *(int *)(iVar7 + 0x18) = (*(int *)(iVar7 + 0x18) - *(int *)(iVar7 + 0x1c)) + iVar15;\n      }" (if "if") (parenthesized_expression "(*(int *)(iVar7 + 0x18) != iVar7 + 0xa4)" (( "(") (binary_expression "*(int *)(iVar7 + 0x18) != iVar7 + 0xa4" (pointer_expression "*(int *)(iVar7 + 0x18)" (* "*") (cast_expression "(int *)(iVar7 + 0x18)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar7 + 0x18)" (( "(") (binary_expression "iVar7 + 0x18" (identifier "iVar7") (+ "+") (number_literal "0x18")) () ")")))) (!= "!=") (binary_expression "iVar7 + 0xa4" (identifier "iVar7") (+ "+") (number_literal "0xa4"))) () ")")) (compound_statement "{\n        *(int *)(iVar7 + 0x18) = (*(int *)(iVar7 + 0x18) - *(int *)(iVar7 + 0x1c)) + iVar15;\n      }" ({ "{") (expression_statement "*(int *)(iVar7 + 0x18) = (*(int *)(iVar7 + 0x18) - *(int *)(iVar7 + 0x1c)) + iVar15;" (assignment_expression "*(int *)(iVar7 + 0x18) = (*(int *)(iVar7 + 0x18) - *(int *)(iVar7 + 0x1c)) + iVar15" (pointer_expression "*(int *)(iVar7 + 0x18)" (* "*") (cast_expression "(int *)(iVar7 + 0x18)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar7 + 0x18)" (( "(") (binary_expression "iVar7 + 0x18" (identifier "iVar7") (+ "+") (number_literal "0x18")) () ")")))) (= "=") (binary_expression "(*(int *)(iVar7 + 0x18) - *(int *)(iVar7 + 0x1c)) + iVar15" (parenthesized_expression "(*(int *)(iVar7 + 0x18) - *(int *)(iVar7 + 0x1c))" (( "(") (binary_expression "*(int *)(iVar7 + 0x18) - *(int *)(iVar7 + 0x1c)" (pointer_expression "*(int *)(iVar7 + 0x18)" (* "*") (cast_expression "(int *)(iVar7 + 0x18)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar7 + 0x18)" (( "(") (binary_expression "iVar7 + 0x18" (identifier "iVar7") (+ "+") (number_literal "0x18")) () ")")))) (- "-") (pointer_expression "*(int *)(iVar7 + 0x1c)" (* "*") (cast_expression "(int *)(iVar7 + 0x1c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar7 + 0x1c)" (( "(") (binary_expression "iVar7 + 0x1c" (identifier "iVar7") (+ "+") (number_literal "0x1c")) () ")"))))) () ")")) (+ "+") (identifier "iVar15"))) (; ";")) (} "}"))) (expression_statement "*(int *)(iVar7 + 0x1c) = iVar15;" (assignment_expression "*(int *)(iVar7 + 0x1c) = iVar15" (pointer_expression "*(int *)(iVar7 + 0x1c)" (* "*") (cast_expression "(int *)(iVar7 + 0x1c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar7 + 0x1c)" (( "(") (binary_expression "iVar7 + 0x1c" (identifier "iVar7") (+ "+") (number_literal "0x1c")) () ")")))) (= "=") (identifier "iVar15")) (; ";")) (} "}"))) (while_statement "while (pvVar16 = pvVar11, -1 < *(int *)((int)pvVar16 + 0x30)) {\n      if (*(int *)((int)pvVar16 + 0x18) != (int)pvVar16 + 0xa4) {\n        *(int *)((int)pvVar16 + 0x18) =\n             (*(int *)((int)pvVar16 + 0x18) - *(int *)((int)pvVar16 + 0x1c)) + iVar15;\n      }\n      *(int *)((int)pvVar16 + 0x1c) = iVar15;\n      pvVar11 = *(void **)((int)pvVar16 + 8);\n      if (*(void **)((int)pvVar16 + 8) == (void *)0x0) {\n        pvVar11 = *(void **)((int)pvVar16 + 4);\n      }\n    }" (while "while") (parenthesized_expression "(pvVar16 = pvVar11, -1 < *(int *)((int)pvVar16 + 0x30))" (( "(") (comma_expression "pvVar16 = pvVar11, -1 < *(int *)((int)pvVar16 + 0x30)" (assignment_expression "pvVar16 = pvVar11" (identifier "pvVar16") (= "=") (identifier "pvVar11")) (, ",") (binary_expression "-1 < *(int *)((int)pvVar16 + 0x30)" (number_literal "-1") (< "<") (pointer_expression "*(int *)((int)pvVar16 + 0x30)" (* "*") (cast_expression "(int *)((int)pvVar16 + 0x30)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)pvVar16 + 0x30)" (( "(") (binary_expression "(int)pvVar16 + 0x30" (cast_expression "(int)pvVar16" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pvVar16")) (+ "+") (number_literal "0x30")) () ")")))))) () ")")) (compound_statement "{\n      if (*(int *)((int)pvVar16 + 0x18) != (int)pvVar16 + 0xa4) {\n        *(int *)((int)pvVar16 + 0x18) =\n             (*(int *)((int)pvVar16 + 0x18) - *(int *)((int)pvVar16 + 0x1c)) + iVar15;\n      }\n      *(int *)((int)pvVar16 + 0x1c) = iVar15;\n      pvVar11 = *(void **)((int)pvVar16 + 8);\n      if (*(void **)((int)pvVar16 + 8) == (void *)0x0) {\n        pvVar11 = *(void **)((int)pvVar16 + 4);\n      }\n    }" ({ "{") (if_statement "if (*(int *)((int)pvVar16 + 0x18) != (int)pvVar16 + 0xa4) {\n        *(int *)((int)pvVar16 + 0x18) =\n             (*(int *)((int)pvVar16 + 0x18) - *(int *)((int)pvVar16 + 0x1c)) + iVar15;\n      }" (if "if") (parenthesized_expression "(*(int *)((int)pvVar16 + 0x18) != (int)pvVar16 + 0xa4)" (( "(") (binary_expression "*(int *)((int)pvVar16 + 0x18) != (int)pvVar16 + 0xa4" (pointer_expression "*(int *)((int)pvVar16 + 0x18)" (* "*") (cast_expression "(int *)((int)pvVar16 + 0x18)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)pvVar16 + 0x18)" (( "(") (binary_expression "(int)pvVar16 + 0x18" (cast_expression "(int)pvVar16" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pvVar16")) (+ "+") (number_literal "0x18")) () ")")))) (!= "!=") (binary_expression "(int)pvVar16 + 0xa4" (cast_expression "(int)pvVar16" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pvVar16")) (+ "+") (number_literal "0xa4"))) () ")")) (compound_statement "{\n        *(int *)((int)pvVar16 + 0x18) =\n             (*(int *)((int)pvVar16 + 0x18) - *(int *)((int)pvVar16 + 0x1c)) + iVar15;\n      }" ({ "{") (expression_statement "*(int *)((int)pvVar16 + 0x18) =\n             (*(int *)((int)pvVar16 + 0x18) - *(int *)((int)pvVar16 + 0x1c)) + iVar15;" (assignment_expression "*(int *)((int)pvVar16 + 0x18) =\n             (*(int *)((int)pvVar16 + 0x18) - *(int *)((int)pvVar16 + 0x1c)) + iVar15" (pointer_expression "*(int *)((int)pvVar16 + 0x18)" (* "*") (cast_expression "(int *)((int)pvVar16 + 0x18)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)pvVar16 + 0x18)" (( "(") (binary_expression "(int)pvVar16 + 0x18" (cast_expression "(int)pvVar16" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pvVar16")) (+ "+") (number_literal "0x18")) () ")")))) (= "=") (binary_expression "(*(int *)((int)pvVar16 + 0x18) - *(int *)((int)pvVar16 + 0x1c)) + iVar15" (parenthesized_expression "(*(int *)((int)pvVar16 + 0x18) - *(int *)((int)pvVar16 + 0x1c))" (( "(") (binary_expression "*(int *)((int)pvVar16 + 0x18) - *(int *)((int)pvVar16 + 0x1c)" (pointer_expression "*(int *)((int)pvVar16 + 0x18)" (* "*") (cast_expression "(int *)((int)pvVar16 + 0x18)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)pvVar16 + 0x18)" (( "(") (binary_expression "(int)pvVar16 + 0x18" (cast_expression "(int)pvVar16" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pvVar16")) (+ "+") (number_literal "0x18")) () ")")))) (- "-") (pointer_expression "*(int *)((int)pvVar16 + 0x1c)" (* "*") (cast_expression "(int *)((int)pvVar16 + 0x1c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)pvVar16 + 0x1c)" (( "(") (binary_expression "(int)pvVar16 + 0x1c" (cast_expression "(int)pvVar16" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pvVar16")) (+ "+") (number_literal "0x1c")) () ")"))))) () ")")) (+ "+") (identifier "iVar15"))) (; ";")) (} "}"))) (expression_statement "*(int *)((int)pvVar16 + 0x1c) = iVar15;" (assignment_expression "*(int *)((int)pvVar16 + 0x1c) = iVar15" (pointer_expression "*(int *)((int)pvVar16 + 0x1c)" (* "*") (cast_expression "(int *)((int)pvVar16 + 0x1c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)pvVar16 + 0x1c)" (( "(") (binary_expression "(int)pvVar16 + 0x1c" (cast_expression "(int)pvVar16" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pvVar16")) (+ "+") (number_literal "0x1c")) () ")")))) (= "=") (identifier "iVar15")) (; ";")) (expression_statement "pvVar11 = *(void **)((int)pvVar16 + 8);" (assignment_expression "pvVar11 = *(void **)((int)pvVar16 + 8)" (identifier "pvVar11") (= "=") (pointer_expression "*(void **)((int)pvVar16 + 8)" (* "*") (cast_expression "(void **)((int)pvVar16 + 8)" (( "(") (type_descriptor "void **" (primitive_type "void") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "((int)pvVar16 + 8)" (( "(") (binary_expression "(int)pvVar16 + 8" (cast_expression "(int)pvVar16" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pvVar16")) (+ "+") (number_literal "8")) () ")"))))) (; ";")) (if_statement "if (*(void **)((int)pvVar16 + 8) == (void *)0x0) {\n        pvVar11 = *(void **)((int)pvVar16 + 4);\n      }" (if "if") (parenthesized_expression "(*(void **)((int)pvVar16 + 8) == (void *)0x0)" (( "(") (binary_expression "*(void **)((int)pvVar16 + 8) == (void *)0x0" (pointer_expression "*(void **)((int)pvVar16 + 8)" (* "*") (cast_expression "(void **)((int)pvVar16 + 8)" (( "(") (type_descriptor "void **" (primitive_type "void") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "((int)pvVar16 + 8)" (( "(") (binary_expression "(int)pvVar16 + 8" (cast_expression "(int)pvVar16" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pvVar16")) (+ "+") (number_literal "8")) () ")")))) (== "==") (cast_expression "(void *)0x0" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n        pvVar11 = *(void **)((int)pvVar16 + 4);\n      }" ({ "{") (expression_statement "pvVar11 = *(void **)((int)pvVar16 + 4);" (assignment_expression "pvVar11 = *(void **)((int)pvVar16 + 4)" (identifier "pvVar11") (= "=") (pointer_expression "*(void **)((int)pvVar16 + 4)" (* "*") (cast_expression "(void **)((int)pvVar16 + 4)" (( "(") (type_descriptor "void **" (primitive_type "void") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "((int)pvVar16 + 4)" (( "(") (binary_expression "(int)pvVar16 + 4" (cast_expression "(int)pvVar16" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pvVar16")) (+ "+") (number_literal "4")) () ")"))))) (; ";")) (} "}"))) (} "}"))) (} "}")))) (if_statement "if ((*(byte *)(param_1 + 0xb) & 4) != 0) {\n    if ((param_1[8] == local_4c) || (local_5c == 0)) {\n      local_38 = local_38 + -1;\n    }\n    *local_38 = 0;\n  }" (if "if") (parenthesized_expression "((*(byte *)(param_1 + 0xb) & 4) != 0)" (( "(") (binary_expression "(*(byte *)(param_1 + 0xb) & 4) != 0" (parenthesized_expression "(*(byte *)(param_1 + 0xb) & 4)" (( "(") (binary_expression "*(byte *)(param_1 + 0xb) & 4" (pointer_expression "*(byte *)(param_1 + 0xb)" (* "*") (cast_expression "(byte *)(param_1 + 0xb)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xb)" (( "(") (binary_expression "param_1 + 0xb" (identifier "param_1") (+ "+") (number_literal "0xb")) () ")")))) (& "&") (number_literal "4")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    if ((param_1[8] == local_4c) || (local_5c == 0)) {\n      local_38 = local_38 + -1;\n    }\n    *local_38 = 0;\n  }" ({ "{") (if_statement "if ((param_1[8] == local_4c) || (local_5c == 0)) {\n      local_38 = local_38 + -1;\n    }" (if "if") (parenthesized_expression "((param_1[8] == local_4c) || (local_5c == 0))" (( "(") (binary_expression "(param_1[8] == local_4c) || (local_5c == 0)" (parenthesized_expression "(param_1[8] == local_4c)" (( "(") (binary_expression "param_1[8] == local_4c" (subscript_expression "param_1[8]" (identifier "param_1") ([ "[") (number_literal "8") (] "]")) (== "==") (identifier "local_4c")) () ")")) (|| "||") (parenthesized_expression "(local_5c == 0)" (( "(") (binary_expression "local_5c == 0" (identifier "local_5c") (== "==") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n      local_38 = local_38 + -1;\n    }" ({ "{") (expression_statement "local_38 = local_38 + -1;" (assignment_expression "local_38 = local_38 + -1" (identifier "local_38") (= "=") (binary_expression "local_38 + -1" (identifier "local_38") (+ "+") (number_literal "-1"))) (; ";")) (} "}"))) (expression_statement "*local_38 = 0;" (assignment_expression "*local_38 = 0" (pointer_expression "*local_38" (* "*") (identifier "local_38")) (= "=") (number_literal "0")) (; ";")) (} "}"))) (if_statement "if ((__dirp == (DIR *)0x0) && (bVar19)) {\n    if ((param_2 != 1) && (local_5c != 0)) goto LAB_000196b9;\n    if (*(int *)(iVar1 + 0x30) == 0) {\n      iVar7 = FUN_00018c40();\n    }\n    else {\n      iVar7 = FUN_00018e20(&DAT_0001e166);\n    }\n    if (iVar7 != 0) {\n      *(undefined2 *)(iVar1 + 0x3c) = 7;\n      param_1[0xb] = param_1[0xb] | 0x4000;\n      FUN_00018960();\n      return (void *)0x0;\n    }\n  }" (if "if") (parenthesized_expression "((__dirp == (DIR *)0x0) && (bVar19))" (( "(") (binary_expression "(__dirp == (DIR *)0x0) && (bVar19)" (parenthesized_expression "(__dirp == (DIR *)0x0)" (( "(") (binary_expression "__dirp == (DIR *)0x0" (identifier "__dirp") (== "==") (cast_expression "(DIR *)0x0" (( "(") (type_descriptor "DIR *" (type_identifier "DIR") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (&& "&&") (parenthesized_expression "(bVar19)" (( "(") (identifier "bVar19") () ")"))) () ")")) (compound_statement "{\n    if ((param_2 != 1) && (local_5c != 0)) goto LAB_000196b9;\n    if (*(int *)(iVar1 + 0x30) == 0) {\n      iVar7 = FUN_00018c40();\n    }\n    else {\n      iVar7 = FUN_00018e20(&DAT_0001e166);\n    }\n    if (iVar7 != 0) {\n      *(undefined2 *)(iVar1 + 0x3c) = 7;\n      param_1[0xb] = param_1[0xb] | 0x4000;\n      FUN_00018960();\n      return (void *)0x0;\n    }\n  }" ({ "{") (if_statement "if ((param_2 != 1) && (local_5c != 0)) goto LAB_000196b9;" (if "if") (parenthesized_expression "((param_2 != 1) && (local_5c != 0))" (( "(") (binary_expression "(param_2 != 1) && (local_5c != 0)" (parenthesized_expression "(param_2 != 1)" (( "(") (binary_expression "param_2 != 1" (identifier "param_2") (!= "!=") (number_literal "1")) () ")")) (&& "&&") (parenthesized_expression "(local_5c != 0)" (( "(") (binary_expression "local_5c != 0" (identifier "local_5c") (!= "!=") (number_literal "0")) () ")"))) () ")")) (goto_statement "goto LAB_000196b9;" (goto "goto") (statement_identifier "LAB_000196b9") (; ";"))) (if_statement "if (*(int *)(iVar1 + 0x30) == 0) {\n      iVar7 = FUN_00018c40();\n    }\n    else {\n      iVar7 = FUN_00018e20(&DAT_0001e166);\n    }" (if "if") (parenthesized_expression "(*(int *)(iVar1 + 0x30) == 0)" (( "(") (binary_expression "*(int *)(iVar1 + 0x30) == 0" (pointer_expression "*(int *)(iVar1 + 0x30)" (* "*") (cast_expression "(int *)(iVar1 + 0x30)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 0x30)" (( "(") (binary_expression "iVar1 + 0x30" (identifier "iVar1") (+ "+") (number_literal "0x30")) () ")")))) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      iVar7 = FUN_00018c40();\n    }" ({ "{") (expression_statement "iVar7 = FUN_00018c40();" (assignment_expression "iVar7 = FUN_00018c40()" (identifier "iVar7") (= "=") (call_expression "FUN_00018c40()" (identifier "FUN_00018c40") (argument_list "()" (( "(") () ")")))) (; ";")) (} "}")) (else_clause "else {\n      iVar7 = FUN_00018e20(&DAT_0001e166);\n    }" (else "else") (compound_statement "{\n      iVar7 = FUN_00018e20(&DAT_0001e166);\n    }" ({ "{") (expression_statement "iVar7 = FUN_00018e20(&DAT_0001e166);" (assignment_expression "iVar7 = FUN_00018e20(&DAT_0001e166)" (identifier "iVar7") (= "=") (call_expression "FUN_00018e20(&DAT_0001e166)" (identifier "FUN_00018e20") (argument_list "(&DAT_0001e166)" (( "(") (pointer_expression "&DAT_0001e166" (& "&") (identifier "DAT_0001e166")) () ")")))) (; ";")) (} "}")))) (if_statement "if (iVar7 != 0) {\n      *(undefined2 *)(iVar1 + 0x3c) = 7;\n      param_1[0xb] = param_1[0xb] | 0x4000;\n      FUN_00018960();\n      return (void *)0x0;\n    }" (if "if") (parenthesized_expression "(iVar7 != 0)" (( "(") (binary_expression "iVar7 != 0" (identifier "iVar7") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      *(undefined2 *)(iVar1 + 0x3c) = 7;\n      param_1[0xb] = param_1[0xb] | 0x4000;\n      FUN_00018960();\n      return (void *)0x0;\n    }" ({ "{") (expression_statement "*(undefined2 *)(iVar1 + 0x3c) = 7;" (assignment_expression "*(undefined2 *)(iVar1 + 0x3c) = 7" (pointer_expression "*(undefined2 *)(iVar1 + 0x3c)" (* "*") (cast_expression "(undefined2 *)(iVar1 + 0x3c)" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 0x3c)" (( "(") (binary_expression "iVar1 + 0x3c" (identifier "iVar1") (+ "+") (number_literal "0x3c")) () ")")))) (= "=") (number_literal "7")) (; ";")) (expression_statement "param_1[0xb] = param_1[0xb] | 0x4000;" (assignment_expression "param_1[0xb] = param_1[0xb] | 0x4000" (subscript_expression "param_1[0xb]" (identifier "param_1") ([ "[") (number_literal "0xb") (] "]")) (= "=") (binary_expression "param_1[0xb] | 0x4000" (subscript_expression "param_1[0xb]" (identifier "param_1") ([ "[") (number_literal "0xb") (] "]")) (| "|") (number_literal "0x4000"))) (; ";")) (expression_statement "FUN_00018960();" (call_expression "FUN_00018960()" (identifier "FUN_00018960") (argument_list "()" (( "(") () ")"))) (; ";")) (return_statement "return (void *)0x0;" (return "return") (cast_expression "(void *)0x0" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")) (; ";")) (} "}"))) (} "}"))) (if_statement "if (local_5c == 0) {\n    if (((param_2 == 3) && (*(short *)(iVar1 + 0x3c) != 4)) && (*(short *)(iVar1 + 0x3c) != 7)) {\n      *(undefined2 *)(iVar1 + 0x3c) = 6;\n    }\n    FUN_00018960();\n    return (void *)0x0;\n  }" (if "if") (parenthesized_expression "(local_5c == 0)" (( "(") (binary_expression "local_5c == 0" (identifier "local_5c") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    if (((param_2 == 3) && (*(short *)(iVar1 + 0x3c) != 4)) && (*(short *)(iVar1 + 0x3c) != 7)) {\n      *(undefined2 *)(iVar1 + 0x3c) = 6;\n    }\n    FUN_00018960();\n    return (void *)0x0;\n  }" ({ "{") (if_statement "if (((param_2 == 3) && (*(short *)(iVar1 + 0x3c) != 4)) && (*(short *)(iVar1 + 0x3c) != 7)) {\n      *(undefined2 *)(iVar1 + 0x3c) = 6;\n    }" (if "if") (parenthesized_expression "(((param_2 == 3) && (*(short *)(iVar1 + 0x3c) != 4)) && (*(short *)(iVar1 + 0x3c) != 7))" (( "(") (binary_expression "((param_2 == 3) && (*(short *)(iVar1 + 0x3c) != 4)) && (*(short *)(iVar1 + 0x3c) != 7)" (parenthesized_expression "((param_2 == 3) && (*(short *)(iVar1 + 0x3c) != 4))" (( "(") (binary_expression "(param_2 == 3) && (*(short *)(iVar1 + 0x3c) != 4)" (parenthesized_expression "(param_2 == 3)" (( "(") (binary_expression "param_2 == 3" (identifier "param_2") (== "==") (number_literal "3")) () ")")) (&& "&&") (parenthesized_expression "(*(short *)(iVar1 + 0x3c) != 4)" (( "(") (binary_expression "*(short *)(iVar1 + 0x3c) != 4" (pointer_expression "*(short *)(iVar1 + 0x3c)" (* "*") (cast_expression "(short *)(iVar1 + 0x3c)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 0x3c)" (( "(") (binary_expression "iVar1 + 0x3c" (identifier "iVar1") (+ "+") (number_literal "0x3c")) () ")")))) (!= "!=") (number_literal "4")) () ")"))) () ")")) (&& "&&") (parenthesized_expression "(*(short *)(iVar1 + 0x3c) != 7)" (( "(") (binary_expression "*(short *)(iVar1 + 0x3c) != 7" (pointer_expression "*(short *)(iVar1 + 0x3c)" (* "*") (cast_expression "(short *)(iVar1 + 0x3c)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 0x3c)" (( "(") (binary_expression "iVar1 + 0x3c" (identifier "iVar1") (+ "+") (number_literal "0x3c")) () ")")))) (!= "!=") (number_literal "7")) () ")"))) () ")")) (compound_statement "{\n      *(undefined2 *)(iVar1 + 0x3c) = 6;\n    }" ({ "{") (expression_statement "*(undefined2 *)(iVar1 + 0x3c) = 6;" (assignment_expression "*(undefined2 *)(iVar1 + 0x3c) = 6" (pointer_expression "*(undefined2 *)(iVar1 + 0x3c)" (* "*") (cast_expression "(undefined2 *)(iVar1 + 0x3c)" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 0x3c)" (( "(") (binary_expression "iVar1 + 0x3c" (identifier "iVar1") (+ "+") (number_literal "0x3c")) () ")")))) (= "=") (number_literal "6")) (; ";")) (} "}"))) (expression_statement "FUN_00018960();" (call_expression "FUN_00018960()" (identifier "FUN_00018960") (argument_list "()" (( "(") () ")"))) (; ";")) (return_statement "return (void *)0x0;" (return "return") (cast_expression "(void *)0x0" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")) (; ";")) (} "}"))) (labeled_statement "LAB_000196b9:\n  if (bVar2) {\n    param_1[10] = (int)FUN_00018600;\n    pvVar11 = (void *)FUN_000187e0();\n    param_1[10] = 0;\n    return pvVar11;\n  }" (statement_identifier "LAB_000196b9") (: ":") (if_statement "if (bVar2) {\n    param_1[10] = (int)FUN_00018600;\n    pvVar11 = (void *)FUN_000187e0();\n    param_1[10] = 0;\n    return pvVar11;\n  }" (if "if") (parenthesized_expression "(bVar2)" (( "(") (identifier "bVar2") () ")")) (compound_statement "{\n    param_1[10] = (int)FUN_00018600;\n    pvVar11 = (void *)FUN_000187e0();\n    param_1[10] = 0;\n    return pvVar11;\n  }" ({ "{") (expression_statement "param_1[10] = (int)FUN_00018600;" (assignment_expression "param_1[10] = (int)FUN_00018600" (subscript_expression "param_1[10]" (identifier "param_1") ([ "[") (number_literal "10") (] "]")) (= "=") (cast_expression "(int)FUN_00018600" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "FUN_00018600"))) (; ";")) (expression_statement "pvVar11 = (void *)FUN_000187e0();" (assignment_expression "pvVar11 = (void *)FUN_000187e0()" (identifier "pvVar11") (= "=") (cast_expression "(void *)FUN_000187e0()" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_000187e0()" (identifier "FUN_000187e0") (argument_list "()" (( "(") () ")"))))) (; ";")) (expression_statement "param_1[10] = 0;" (assignment_expression "param_1[10] = 0" (subscript_expression "param_1[10]" (identifier "param_1") ([ "[") (number_literal "10") (] "]")) (= "=") (number_literal "0")) (; ";")) (return_statement "return pvVar11;" (return "return") (identifier "pvVar11") (; ";")) (} "}")))) (if_statement "if ((param_1[10] != 0) && (local_5c != 1)) {\n    pvVar11 = (void *)FUN_000187e0();\n    return pvVar11;\n  }" (if "if") (parenthesized_expression "((param_1[10] != 0) && (local_5c != 1))" (( "(") (binary_expression "(param_1[10] != 0) && (local_5c != 1)" (parenthesized_expression "(param_1[10] != 0)" (( "(") (binary_expression "param_1[10] != 0" (subscript_expression "param_1[10]" (identifier "param_1") ([ "[") (number_literal "10") (] "]")) (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(local_5c != 1)" (( "(") (binary_expression "local_5c != 1" (identifier "local_5c") (!= "!=") (number_literal "1")) () ")"))) () ")")) (compound_statement "{\n    pvVar11 = (void *)FUN_000187e0();\n    return pvVar11;\n  }" ({ "{") (expression_statement "pvVar11 = (void *)FUN_000187e0();" (assignment_expression "pvVar11 = (void *)FUN_000187e0()" (identifier "pvVar11") (= "=") (cast_expression "(void *)FUN_000187e0()" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_000187e0()" (identifier "FUN_000187e0") (argument_list "()" (( "(") () ")"))))) (; ";")) (return_statement "return pvVar11;" (return "return") (identifier "pvVar11") (; ";")) (} "}"))) (return_statement "return local_48;" (return "return") (identifier "local_48") (; ";")) (} "}")))

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

type_4 * __regparm3 fts_build(type_12 *sp,int var_6)

{
  type_1 *var_1;
  size_t var_21;
  type_2 *var_44;
  char *var_35;
  bool bVar4;
  type_3 _Var5;
  type_2 *p_Var6;
  type_4 *pFVar7;
  char *pcVar8;
  type_5 _Var9;
  type_6 uVar10;
  int *piVar11;
  type_7 *var_25;
  size_t var_33;
  type_4 *var_29;
  type_8 uVar14;
  int var_18;
  type_4 *pFVar16;
  type_1 *var_9;
  type_9 var_2;
  type_10 var_41;
  type_11 var_14;
  type_9 var_3;
  type_1 *__dirp_00;
  bool bVar22;
  type_9 var_26;
  type_4 *local_54;
  type_9 var_23;
  type_4 *var_39;
  type_9 var_32;
  char *var_45;
  type_9 var_42;
  size_t var_22;
  int var_5;
  type_5 var_43;
  
  pFVar16 = sp->fts_cur;
  var_1 = (type_1 *)pFVar16->fts_dirp;
  if (var_1 == (type_1 *)0x0) {
    var_2 = sp->fts_options;
    var_3 = var_2 & 0x10;
    if (((var_3 != 0) && (var_3 = 0x20000, (var_2 & 1) != 0)) &&
       (var_3 = pFVar16->fts_level, var_3 != 0)) {
      var_3 = 0x20000;
    }
    var_18 = -100;
    if ((var_2 & 0x204) == 0x200) {
      var_18 = sp->fts_cwd_fd;
    }
    var_5 = var_4(var_18,pFVar16->fts_accpath,(var_2 & 0x800) << 7 | var_3 | 0x90900);
    if (var_5 < 0) {
      pFVar16->fts_dirp = (type_1 *)0x0;
joined_r0x00019b00:
      if (var_6 == 3) {
        pFVar16->fts_info = 4;
        piVar11 = var_7();
        pFVar16->fts_errno = *piVar11;
      }
      return (type_4 *)0x0;
    }
    var_9 = var_8(var_5);
    if (var_9 == (type_1 *)0x0) {
      piVar11 = var_7();
      var_18 = *piVar11;
      var_10(var_5);
      *piVar11 = var_18;
      pFVar16->fts_dirp = (type_1 *)0x0;
      goto joined_r0x00019b00;
    }
    pFVar16->fts_dirp = (type_1 *)var_9;
    if (pFVar16->fts_info == 0xb) {
      uVar10 = var_11(sp,pFVar16,false);
      pFVar16->fts_info = uVar10;
    }
    else if (((type_9)sp->fts_options & 0x100) != 0) {
      var_12((type_12 *)sp->fts_options,(type_4 *)&sp->fts_cycle,(type_12 *)pFVar16);
      var_11(sp,pFVar16,false);
      _Var9 = var_13((type_12 *)sp->fts_options,(type_4 *)&sp->fts_cycle,(type_12 *)pFVar16);
      if (!_Var9) {
        piVar11 = var_7();
        *piVar11 = 0xc;
        return (type_4 *)0x0;
      }
    }
    var_42 = (-(type_9)(sp->fts_compar == (type_13 *)0x0) &
               0x186a1) - 1;
    if (var_6 == 2) {
LAB_00019a90:
      bVar22 = false;
      var_2 = sp->fts_options;
      goto LAB_000192d4;
    }
    if ((((sp->fts_options & 0x38U) == 0x18) && (pFVar16->fts_statp[0].st_nlink == 2)) &&
       (var_14 = type_11(pFVar16,var_5), var_14 != var_15)) {
      if (var_6 != 3) goto LAB_00019a90;
      bVar4 = false;
      bVar22 = true;
    }
    else {
      bVar22 = var_6 == 3;
      bVar4 = true;
    }
    if (((sp->fts_options & 0x200) == 0) || (var_5 = var_16(var_5,0x406,3), -1 < var_5))
    {
      var_18 = var_17(sp,pFVar16,var_5,(char *)0x0);
      if (var_18 == 0) goto LAB_000192cc;
      __dirp_00 = pFVar16->fts_dirp;
      uVar10 = pFVar16->fts_flags | 1;
      if ((bVar22) && (bVar4)) goto LAB_0001980f;
LAB_0001982f:
      pFVar16->fts_flags = uVar10;
      var_19((type_1 *)__dirp_00);
      var_2 = sp->fts_options;
      pFVar16->fts_dirp = (type_1 *)0x0;
      if (((var_2 & 0x200) != 0) && (-1 < var_5)) {
        var_10(var_5);
        var_2 = sp->fts_options;
      }
    }
    else {
      __dirp_00 = pFVar16->fts_dirp;
      uVar10 = pFVar16->fts_flags | 1;
      if ((bVar22) && (bVar4)) {
LAB_0001980f:
        piVar11 = var_7();
        pFVar16->fts_errno = *piVar11;
        goto LAB_0001982f;
      }
      pFVar16->fts_flags = uVar10;
      var_19((type_1 *)__dirp_00);
      var_2 = sp->fts_options;
    }
    bVar22 = false;
    pFVar16->fts_dirp = (type_1 *)0x0;
  }
  else {
    var_5 = var_20(var_1);
    if (var_5 < 0) {
      var_19((type_1 *)pFVar16->fts_dirp);
      pFVar16->fts_dirp = (type_1 *)0x0;
      goto joined_r0x00019b00;
    }
    if (sp->fts_compar == (type_13 *)0x0) {
      var_42 = 100000;
      var_2 = sp->fts_options;
      bVar22 = true;
    }
    else {
      var_42 = 0xffffffff;
LAB_000192cc:
      bVar22 = true;
      var_2 = sp->fts_options;
    }
  }
LAB_000192d4:
  var_21 = pFVar16->fts_pathlen;
  var_23 = var_21;
  var_22 = var_21 - 1;
  if (pFVar16->fts_path[var_21 - 1] != '/') {
    var_23 = var_21 + 1;
    var_22 = var_21;
  }
  var_45 = (char *)0x0;
  if ((var_2 & 4) != 0) {
    var_45 = sp->fts_path + var_22 + 1;
    sp->fts_path[var_22] = '/';
  }
  var_32 = sp->fts_pathlen - var_23;
  bVar4 = false;
  var_43 = false;
  var_18 = pFVar16->fts_level;
  local_54 = (type_4 *)0x0;
  var_26 = 0;
  var_39 = (type_4 *)0x0;
LAB_000193a8:
  do {
    do {
      var_9 = (type_1 *)pFVar16->fts_dirp;
      if (var_9 == (type_1 *)0x0) goto LAB_00019641;
      piVar11 = var_7();
      *piVar11 = 0;
      var_25 = var_24(var_9);
      if (var_25 == (type_7 *)0x0) {
        if (*piVar11 != 0) {
          pFVar16->fts_errno = *piVar11;
          pFVar16->fts_info = (-(type_6)(var_1 == (type_1 *)0x0 && var_26 == 0) & 0xfffd) + 7;
        }
        if ((type_1 *)pFVar16->fts_dirp != (type_1 *)0x0) {
          var_19((type_1 *)pFVar16->fts_dirp);
          pFVar16->fts_dirp = (type_1 *)0x0;
        }
        goto LAB_00019641;
      }
    } while ((((sp->fts_options & 0x20) == 0) && (var_25->d_name[0] == '.')) &&
            ((var_25->d_name[1] == '\0' || (*(short *)(var_25->d_name + 1) == 0x2e))));
    var_33 = var_27(var_25->d_name);
    var_29 = var_28(sp,var_25->d_name,var_33);
    if (var_29 == (type_4 *)0x0) {
LAB_00019910:
      var_18 = *piVar11;
      var_30(var_29);
      var_31(var_39);
      var_19((type_1 *)pFVar16->fts_dirp);
      pFVar16->fts_dirp = (type_1 *)0x0;
      pFVar16->fts_info = 7;
      sp->fts_options = sp->fts_options | 0x4000;
      *piVar11 = var_18;
      return (type_4 *)0x0;
    }
    if (var_32 <= var_33) {
      var_35 = sp->fts_path;
      _Var9 = var_34((type_12 *)&sp->fts_path,(size_t)&sp->fts_pathlen,
                         (type_12 *)(var_22 + 2 + var_33));
      if (!_Var9) goto LAB_00019910;
      pcVar8 = var_45;
      if ((sp->fts_path != var_35) &&
         (var_43 = _Var9, pcVar8 = sp->fts_path + var_23, (sp->fts_options & 4) == 0)) {
        pcVar8 = var_45;
      }
      var_45 = pcVar8;
      var_32 = sp->fts_pathlen - var_23;
    }
    if (var_36(var_33,var_23)) {
      var_30(var_29);
      var_31(var_39);
      var_19((type_1 *)pFVar16->fts_dirp);
      pFVar16->fts_dirp = (type_1 *)0x0;
      pFVar16->fts_info = 7;
      sp->fts_options = sp->fts_options | 0x4000;
      *piVar11 = 0x24;
      return (type_4 *)0x0;
    }
    uVar14 = *(type_8 *)((int)&var_25->d_ino + 4);
    var_29->fts_level = var_18 + 1;
    var_44 = sp->fts_cur;
    var_29->fts_pathlen = var_33 + var_23;
    var_29->fts_parent = var_44;
    _Var5 = var_25->d_ino;
    *(type_8 *)((int)&var_29->fts_statp[0].st_ino + 4) = uVar14;
    *(int *)&var_29->fts_statp[0].st_ino = (int)_Var5;
    var_2 = sp->fts_options;
    if ((var_2 & 4) == 0) {
      var_29->fts_accpath = (char *)(var_29 + 1);
    }
    else {
      var_29->fts_accpath = var_29->fts_path;
      var_37(var_45,var_29 + 1,var_29->fts_namelen + 1);
      var_2 = sp->fts_options;
    }
    if ((sp->fts_compar == (type_13 *)0x0) ||
       ((var_2 & 0x400) != 0)) {
      var_3 = var_25->d_type - 1;
      if (((var_2 & 0x18) == 0x18) && ((var_25->d_type & 0xfb) != 0)) {
        var_29->fts_info = 0xb;
        if (var_3 < 0xc) {
          var_29->fts_statp[0].st_mode = *(type_14 *)(var_38 + var_3 * 4);
          uVar14 = 1;
        }
        else {
          var_29->fts_statp[0].st_mode = 0;
          uVar14 = 1;
        }
      }
      else {
        var_29->fts_info = 0xb;
        if (var_3 < 0xc) {
          var_29->fts_statp[0].st_mode = *(type_14 *)(var_38 + var_3 * 4);
          uVar14 = 2;
        }
        else {
          var_29->fts_statp[0].st_mode = 0;
          uVar14 = 2;
        }
      }
      *(type_8 *)&var_29->fts_statp[0].st_size = uVar14;
      *(type_8 *)((int)&var_29->fts_statp[0].st_size + 4) = 0;
    }
    else {
      uVar10 = var_11(sp,var_29,false);
      var_29->fts_info = uVar10;
    }
    var_29->fts_link = (type_2 *)0x0;
    pFVar7 = var_29;
    if (var_39 != (type_4 *)0x0) {
      local_54->fts_link = var_29;
      pFVar7 = var_39;
    }
    var_39 = pFVar7;
    local_54 = var_29;
    if (var_26 == 10000) {
      if ((sp->fts_compar != (type_13 *)0x0) ||
         (((var_41 = var_40(pFVar16,var_5), var_41 != 0x6969 && (var_41 != 0x1021994))
          && (bVar4 = true, var_41 != -0xacb2be)))) {
        var_26 = 0x2711;
        goto LAB_000193a8;
      }
      bVar4 = false;
    }
    var_26 = var_26 + 1;
  } while (var_26 < var_42);
LAB_00019641:
  if (var_43 != false) {
    var_35 = sp->fts_path;
    for (var_44 = sp->fts_child; p_Var6 = var_39, var_44 != (type_2 *)0x0;
        var_44 = var_44->fts_link) {
      if ((type_2 *)var_44->fts_accpath != var_44 + 1) {
        var_44->fts_accpath = var_35 + ((int)var_44->fts_accpath - (int)var_44->fts_path);
      }
      var_44->fts_path = var_35;
    }
    while (var_29 = p_Var6, -1 < var_29->fts_level) {
      if ((type_4 *)var_29->fts_accpath != var_29 + 1) {
        var_29->fts_accpath = var_35 + ((int)var_29->fts_accpath - (int)var_29->fts_path);
      }
      var_29->fts_path = var_35;
      p_Var6 = var_29->fts_link;
      if (var_29->fts_link == (type_2 *)0x0) {
        p_Var6 = var_29->fts_parent;
      }
    }
  }
  if ((sp->fts_options & 4) != 0) {
    if ((sp->fts_pathlen == var_23) || (var_26 == 0)) {
      var_45 = var_45 + -1;
    }
    *var_45 = '\0';
  }
  if ((var_1 == (type_1 *)0x0) && (bVar22)) {
    if ((var_6 != 1) && (var_26 != 0)) goto LAB_000196b9;
    if (pFVar16->fts_level == 0) {
      var_18 = var_46(sp);
    }
    else {
      var_18 = var_17(sp,pFVar16->fts_parent,-1,"..");
    }
    if (var_18 != 0) {
      pFVar16->fts_info = 7;
      sp->fts_options = sp->fts_options | 0x4000;
      var_31(var_39);
      return (type_4 *)0x0;
    }
  }
  if (var_26 == 0) {
    if (((var_6 == 3) && (pFVar16->fts_info != 4)) && (pFVar16->fts_info != 7)) {
      pFVar16->fts_info = 6;
    }
    var_31(var_39);
    return (type_4 *)0x0;
  }
LAB_000196b9:
  if (bVar4) {
    sp->fts_compar = fts_compare_ino;
    pFVar16 = var_47(sp,var_39,var_26);
    sp->fts_compar = (type_13 *)0x0;
    return pFVar16;
  }
  if ((sp->fts_compar != (type_13 *)0x0) && (var_26 != 1)) {
    pFVar16 = var_47(sp,var_39,var_26);
    return pFVar16;
  }
  return var_39;
}


(translation_unit (function_definition type: (primitive_type) declarator: (pointer_declarator (ERROR (identifier)) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (primitive_type) declarator: (identifier))))) body: (compound_statement (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) 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: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator 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: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (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: (identifier) right: (number_literal))))))) (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 (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (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 (comma_expression left: (assignment_expression left: (identifier) right: (number_literal)) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (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)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) 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: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (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))))) (binary_expression left: (binary_expression left: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal)) right: (identifier)) right: (number_literal)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_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))) (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_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))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list)))) (expression_statement (assignment_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: (number_literal))))) right: (pointer_expression argument: (identifier))))))) (return_statement (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (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: (call_expression function: (identifier) arguments: (argument_list)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier))) (expression_statement (assignment_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))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (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: (identifier) right: (number_literal))))) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list)))) (expression_statement (assignment_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: (identifier)))) alternative: (else_clause (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (char_literal (escape_sequence)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) (return_statement (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal))))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (binary_expression left: (unary_expression argument: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))))) right: (number_literal))) right: (number_literal)))) (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: (false)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (goto_statement label: (statement_identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (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: (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: (number_literal))))) right: (number_literal))))) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list))) right: (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: (false))) (expression_statement (assignment_expression left: (identifier) right: (true)))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (true)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (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: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))) right: (number_literal))) right: (number_literal))) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (number_literal) (number_literal)))) right: (binary_expression left: (number_literal) right: (identifier)))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (number_literal))))) (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: (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: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (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)))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (identifier)) right: (parenthesized_expression (identifier)))) consequence: (goto_statement label: (statement_identifier))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_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: (identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_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))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) right: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier))))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal))))))) alternative: (else_clause (compound_statement (expression_statement (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: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (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)))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (identifier)) right: (parenthesized_expression (identifier)))) consequence: (compound_statement (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list))))) (expression_statement (assignment_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: (number_literal))))) right: (pointer_expression argument: (identifier)))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_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: (identifier))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (false))) (expression_statement (assignment_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)))) 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 (call_expression function: (identifier) arguments: (argument_list (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: (identifier) right: (number_literal)))))))) (expression_statement (assignment_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))) (goto_statement label: (statement_identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (true)))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (true)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))))))))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (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)))))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (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: (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: (number_literal))))) right: (number_literal)) right: (identifier))))) right: (char_literal (character)))) consequence: (compound_statement (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: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal))))) right: (number_literal)))) (expression_statement (assignment_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: (subscript_expression argument: (identifier) index: (number_literal)))))) right: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (false))) (expression_statement (assignment_expression left: (identifier) right: (char_literal (escape_sequence)))) (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))))))) (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: (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) (do_statement body: (compound_statement (do_statement body: (compound_statement (expression_statement (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: (identifier) right: (number_literal))))))) (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: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_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: (number_literal))))) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_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: (binary_expression left: (parenthesized_expression (binary_expression left: (unary_expression argument: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal))) right: (binary_expression left: (identifier) right: (number_literal)))))) right: (number_literal))) right: (number_literal)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (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: (identifier) right: (number_literal))))) 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 (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: (identifier) right: (number_literal)))))))) (expression_statement (assignment_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))))) (goto_statement label: (statement_identifier))))) condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (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 (binary_expression left: (subscript_expression argument: (field_expression argument: (identifier) field: (field_identifier)) index: (number_literal)) right: (char_literal (character)))))) right: (parenthesized_expression (parenthesized_expression (binary_expression left: (binary_expression left: (subscript_expression argument: (field_expression argument: (identifier) field: (field_identifier)) index: (number_literal)) right: (char_literal (escape_sequence))) right: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (field_expression argument: (identifier) field: (field_identifier)) right: (number_literal))))) right: (number_literal))))))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (field_expression argument: (identifier) field: (field_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 (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (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: (identifier) right: (number_literal)))))))) (expression_statement (assignment_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))) (expression_statement (assignment_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))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier))) (return_statement (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (char_literal (escape_sequence)))) consequence: (goto_statement label: (statement_identifier))) (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: (identifier))) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (identifier)) right: (comma_expression left: (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))))) right: (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))))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier)))))) (if_statement condition: (parenthesized_expression (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier)))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (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: (identifier) right: (number_literal)))))))) (expression_statement (assignment_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))) (expression_statement (assignment_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))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) (return_statement (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (pointer_expression argument: (field_expression argument: (identifier) field: (field_identifier)))) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (field_expression argument: (identifier) field: (field_identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) 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: (number_literal))))) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal)))) (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))) right: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) right: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (field_expression argument: (identifier) field: (field_identifier)) right: (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: (number_literal))) right: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (field_expression argument: (identifier) field: (field_identifier)) right: (number_literal))) right: (number_literal))))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (identifier) right: (number_literal)))))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal)))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (identifier) right: (number_literal)))))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal)))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))) right: (number_literal)))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))) right: (identifier)))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) 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: (number_literal))))) 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 (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 (parenthesized_expression (binary_expression left: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list))) right: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (true)) right: (binary_expression left: (identifier) right: (number_literal))))))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (false))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))))) (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (char_literal (escape_sequence)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (for_statement initializer: (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal))) condition: (comma_expression left: (assignment_expression left: (identifier) right: (identifier)) right: (binary_expression left: (identifier) right: (number_literal))) update: (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)))))) body: (compound_statement (if_statement condition: (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: (number_literal))))) right: (binary_expression left: (identifier) right: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_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: (number_literal))))) right: (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) 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))))))) right: (identifier)))))) (expression_statement (assignment_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: (number_literal))))) right: (identifier))))) (while_statement condition: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (identifier)) right: (binary_expression left: (number_literal) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal)))))))) body: (compound_statement (if_statement condition: (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: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))) right: (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))))) right: (identifier)))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) 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: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) 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: (number_literal))))) 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: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) 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: (number_literal)))))))))))))) (if_statement condition: (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))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (pointer_expression argument: (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: (number_literal)))) right: (parenthesized_expression (identifier)))) consequence: (compound_statement (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: (goto_statement label: (statement_identifier))) (if_statement condition: (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: (number_literal))))) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (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 (pointer_expression argument: (identifier))))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_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))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (return_statement (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (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: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))))) right: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))))) consequence: (compound_statement (expression_statement (assignment_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))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (return_statement (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 (identifier)) consequence: (compound_statement (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (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))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (return_statement (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 (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))))) (return_statement (identifier)))) (return_statement (identifier)))))

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

void * __regparm3 MASKED(int *param_1,int param_2)

{
  int iVar1;
  DIR *__dirp;
  bool bVar2;
  __ino64_t _Var3;
  undefined1 *puVar4;
  char cVar5;
  undefined2 uVar6;
  int iVar7;
  int *piVar8;
  dirent64 *pdVar9;
  size_t sVar10;
  void *pvVar11;
  undefined4 uVar12;
  DIR *pDVar13;
  uint uVar14;
  int iVar15;
  void *pvVar16;
  ushort uVar17;
  uint uVar18;
  bool bVar19;
  uint local_5c;
  void *local_54;
  uint local_4c;
  void *local_48;
  uint local_44;
  undefined1 *local_38;
  uint local_34;
  uint local_30;
  int local_2c;
  char local_1f;
  
  iVar1 = *param_1;
  __dirp = *(DIR **)(iVar1 + 0xc);
  if (__dirp == (DIR *)0x0) {
    uVar14 = param_1[0xb];
    uVar18 = uVar14 & 0x10;
    if (((uVar18 != 0) && (uVar18 = 0x20000, (uVar14 & 1) != 0)) &&
       (uVar18 = *(uint *)(iVar1 + 0x30), uVar18 != 0)) {
      uVar18 = 0x20000;
    }
    iVar7 = -100;
    if ((uVar14 & 0x204) == 0x200) {
      iVar7 = param_1[7];
    }
    local_2c = FUN_0001c620(iVar7,*(undefined4 *)(iVar1 + 0x18),
                            (uVar14 & 0x800) << 7 | uVar18 | 0x90900);
    if (local_2c < 0) {
      *(undefined4 *)(iVar1 + 0xc) = 0;
joined_r0x00019b00:
      if (param_2 == 3) {
        *(undefined2 *)(iVar1 + 0x3c) = 4;
        piVar8 = __errno_location();
        *(int *)(iVar1 + 0x20) = *piVar8;
      }
      return (void *)0x0;
    }
    pDVar13 = fdopendir(local_2c);
    if (pDVar13 == (DIR *)0x0) {
      piVar8 = __errno_location();
      iVar7 = *piVar8;
      close(local_2c);
      *piVar8 = iVar7;
      *(undefined4 *)(iVar1 + 0xc) = 0;
      goto joined_r0x00019b00;
    }
    *(DIR **)(iVar1 + 0xc) = pDVar13;
    if (*(short *)(iVar1 + 0x3c) == 0xb) {
      uVar6 = FUN_00018640();
      *(undefined2 *)(iVar1 + 0x3c) = uVar6;
    }
    else if ((param_1[0xb] & 0x100U) != 0) {
      FUN_00019160();
      FUN_00018640();
      cVar5 = FUN_00019090();
      if (cVar5 == '\0') {
        piVar8 = __errno_location();
        *piVar8 = 0xc;
        return (void *)0x0;
      }
    }
    local_34 = (-(uint)(param_1[10] == 0) & 0x186a1) - 1;
    if (param_2 == 2) {
LAB_00019a90:
      bVar19 = false;
      uVar14 = param_1[0xb];
      goto LAB_000192d4;
    }
    if ((((param_1[0xb] & 0x38U) == 0x18) && (*(int *)(iVar1 + 0x58) == 2)) &&
       (iVar7 = FUN_00018b60(), iVar7 != 0)) {
      if (param_2 != 3) goto LAB_00019a90;
      bVar2 = false;
      bVar19 = true;
    }
    else {
      bVar19 = param_2 == 3;
      bVar2 = true;
    }
    if (((*(byte *)((int)param_1 + 0x2d) & 2) == 0) ||
       (local_2c = FUN_0001c780(local_2c,0x406,3), -1 < local_2c)) {
      iVar7 = FUN_00018e20(0);
      if (iVar7 == 0) goto LAB_000192cc;
      pDVar13 = *(DIR **)(iVar1 + 0xc);
      uVar17 = *(ushort *)(iVar1 + 0x3e) | 1;
      if ((bVar19) && (bVar2)) goto LAB_0001980f;
LAB_0001982f:
      *(ushort *)(iVar1 + 0x3e) = uVar17;
      closedir(pDVar13);
      uVar14 = param_1[0xb];
      *(undefined4 *)(iVar1 + 0xc) = 0;
      if (((uVar14 & 0x200) != 0) && (-1 < local_2c)) {
        close(local_2c);
        uVar14 = param_1[0xb];
      }
    }
    else {
      pDVar13 = *(DIR **)(iVar1 + 0xc);
      uVar17 = *(ushort *)(iVar1 + 0x3e) | 1;
      if ((bVar19) && (bVar2)) {
LAB_0001980f:
        piVar8 = __errno_location();
        *(int *)(iVar1 + 0x20) = *piVar8;
        goto LAB_0001982f;
      }
      *(ushort *)(iVar1 + 0x3e) = uVar17;
      closedir(pDVar13);
      uVar14 = param_1[0xb];
    }
    bVar19 = false;
    *(undefined4 *)(iVar1 + 0xc) = 0;
  }
  else {
    iVar7 = dirfd(__dirp);
    if (iVar7 < 0) {
      closedir(*(DIR **)(iVar1 + 0xc));
      *(undefined4 *)(iVar1 + 0xc) = 0;
      goto joined_r0x00019b00;
    }
    if (param_1[10] == 0) {
      local_34 = 100000;
      uVar14 = param_1[0xb];
      bVar19 = true;
    }
    else {
      local_34 = 0xffffffff;
LAB_000192cc:
      bVar19 = true;
      uVar14 = param_1[0xb];
    }
  }
LAB_000192d4:
  uVar18 = *(uint *)(iVar1 + 0x28);
  local_4c = uVar18;
  local_30 = uVar18 - 1;
  if (*(char *)(*(int *)(iVar1 + 0x1c) + -1 + uVar18) != '/') {
    local_4c = uVar18 + 1;
    local_30 = uVar18;
  }
  local_38 = (undefined1 *)0x0;
  if ((uVar14 & 4) != 0) {
    local_38 = (undefined1 *)(local_30 + param_1[5]) + 1;
    *(undefined1 *)(local_30 + param_1[5]) = 0x2f;
  }
  local_44 = param_1[8] - local_4c;
  bVar2 = false;
  local_1f = '\0';
  iVar7 = *(int *)(iVar1 + 0x30);
  local_54 = (void *)0x0;
  local_5c = 0;
  local_48 = (void *)0x0;
LAB_000193a8:
  do {
    do {
      pDVar13 = *(DIR **)(iVar1 + 0xc);
      if (pDVar13 == (DIR *)0x0) goto LAB_00019641;
      piVar8 = __errno_location();
      *piVar8 = 0;
      pdVar9 = readdir64(pDVar13);
      if (pdVar9 == (dirent64 *)0x0) {
        if (*piVar8 != 0) {
          *(int *)(iVar1 + 0x20) = *piVar8;
          *(ushort *)(iVar1 + 0x3c) =
               (-(ushort)(__dirp == (DIR *)0x0 && local_5c == 0) & 0xfffd) + 7;
        }
        if (*(DIR **)(iVar1 + 0xc) != (DIR *)0x0) {
          closedir(*(DIR **)(iVar1 + 0xc));
          *(undefined4 *)(iVar1 + 0xc) = 0;
        }
        goto LAB_00019641;
      }
    } while ((((*(byte *)(param_1 + 0xb) & 0x20) == 0) && (pdVar9->d_name[0] == '.')) &&
            ((pdVar9->d_name[1] == '\0' || (*(short *)(pdVar9->d_name + 1) == 0x2e))));
    sVar10 = strlen(pdVar9->d_name);
    pvVar11 = (void *)FUN_000188d0();
    if (pvVar11 == (void *)0x0) {
LAB_00019910:
      iVar7 = *piVar8;
      free(pvVar11);
      FUN_00018960();
      closedir(*(DIR **)(iVar1 + 0xc));
      *(undefined4 *)(iVar1 + 0xc) = 0;
      *(undefined2 *)(iVar1 + 0x3c) = 7;
      param_1[0xb] = param_1[0xb] | 0x4000;
      *piVar8 = iVar7;
      return (void *)0x0;
    }
    if (local_44 <= sVar10) {
      iVar15 = param_1[5];
      cVar5 = FUN_00018cc0();
      if (cVar5 == '\0') goto LAB_00019910;
      puVar4 = local_38;
      if ((param_1[5] != iVar15) &&
         (local_1f = cVar5, puVar4 = (undefined1 *)(param_1[5] + local_4c),
         (*(byte *)(param_1 + 0xb) & 4) == 0)) {
        puVar4 = local_38;
      }
      local_38 = puVar4;
      local_44 = param_1[8] - local_4c;
    }
    if (CARRY4(sVar10,local_4c)) {
      free(pvVar11);
      FUN_00018960();
      closedir(*(DIR **)(iVar1 + 0xc));
      *(undefined4 *)(iVar1 + 0xc) = 0;
      *(undefined2 *)(iVar1 + 0x3c) = 7;
      param_1[0xb] = param_1[0xb] | 0x4000;
      *piVar8 = 0x24;
      return (void *)0x0;
    }
    uVar12 = *(undefined4 *)((int)&pdVar9->d_ino + 4);
    *(int *)((int)pvVar11 + 0x30) = iVar7 + 1;
    iVar15 = *param_1;
    *(size_t *)((int)pvVar11 + 0x28) = sVar10 + local_4c;
    *(int *)((int)pvVar11 + 4) = iVar15;
    _Var3 = pdVar9->d_ino;
    *(undefined4 *)((int)pvVar11 + 0xa0) = uVar12;
    *(int *)((int)pvVar11 + 0x9c) = (int)_Var3;
    uVar14 = param_1[0xb];
    if ((uVar14 & 4) == 0) {
      *(void **)((int)pvVar11 + 0x18) = (void *)((int)pvVar11 + 0xa4);
    }
    else {
      *(undefined4 *)((int)pvVar11 + 0x18) = *(undefined4 *)((int)pvVar11 + 0x1c);
      memmove(local_38,(void *)((int)pvVar11 + 0xa4),*(int *)((int)pvVar11 + 0x34) + 1);
      uVar14 = param_1[0xb];
    }
    if ((param_1[10] == 0) || ((uVar14 & 0x400) != 0)) {
      uVar18 = pdVar9->d_type - 1;
      if (((uVar14 & 0x18) == 0x18) && ((pdVar9->d_type & 0xfb) != 0)) {
        *(undefined2 *)((int)pvVar11 + 0x3c) = 0xb;
        if (uVar18 < 0xc) {
          *(undefined4 *)((int)pvVar11 + 0x54) = *(undefined4 *)(&DAT_0001e180 + uVar18 * 4);
          uVar12 = 1;
        }
        else {
          *(undefined4 *)((int)pvVar11 + 0x54) = 0;
          uVar12 = 1;
        }
      }
      else {
        *(undefined2 *)((int)pvVar11 + 0x3c) = 0xb;
        if (uVar18 < 0xc) {
          *(undefined4 *)((int)pvVar11 + 0x54) = *(undefined4 *)(&DAT_0001e180 + uVar18 * 4);
          uVar12 = 2;
        }
        else {
          *(undefined4 *)((int)pvVar11 + 0x54) = 0;
          uVar12 = 2;
        }
      }
      *(undefined4 *)((int)pvVar11 + 0x70) = uVar12;
      *(undefined4 *)((int)pvVar11 + 0x74) = 0;
    }
    else {
      uVar6 = FUN_00018640();
      *(undefined2 *)((int)pvVar11 + 0x3c) = uVar6;
    }
    *(undefined4 *)((int)pvVar11 + 8) = 0;
    pvVar16 = pvVar11;
    if (local_48 != (void *)0x0) {
      *(void **)((int)local_54 + 8) = pvVar11;
      pvVar16 = local_48;
    }
    local_48 = pvVar16;
    local_54 = pvVar11;
    if (local_5c == 10000) {
      if ((param_1[10] != 0) ||
         (((iVar15 = FUN_00018a00(), iVar15 != 0x6969 && (iVar15 != 0x1021994)) &&
          (bVar2 = true, iVar15 != -0xacb2be)))) {
        local_5c = 0x2711;
        goto LAB_000193a8;
      }
      bVar2 = false;
    }
    local_5c = local_5c + 1;
  } while (local_5c < local_34);
LAB_00019641:
  if (local_1f != '\0') {
    iVar15 = param_1[5];
    for (iVar7 = param_1[1]; pvVar11 = local_48, iVar7 != 0; iVar7 = *(int *)(iVar7 + 8)) {
      if (*(int *)(iVar7 + 0x18) != iVar7 + 0xa4) {
        *(int *)(iVar7 + 0x18) = (*(int *)(iVar7 + 0x18) - *(int *)(iVar7 + 0x1c)) + iVar15;
      }
      *(int *)(iVar7 + 0x1c) = iVar15;
    }
    while (pvVar16 = pvVar11, -1 < *(int *)((int)pvVar16 + 0x30)) {
      if (*(int *)((int)pvVar16 + 0x18) != (int)pvVar16 + 0xa4) {
        *(int *)((int)pvVar16 + 0x18) =
             (*(int *)((int)pvVar16 + 0x18) - *(int *)((int)pvVar16 + 0x1c)) + iVar15;
      }
      *(int *)((int)pvVar16 + 0x1c) = iVar15;
      pvVar11 = *(void **)((int)pvVar16 + 8);
      if (*(void **)((int)pvVar16 + 8) == (void *)0x0) {
        pvVar11 = *(void **)((int)pvVar16 + 4);
      }
    }
  }
  if ((*(byte *)(param_1 + 0xb) & 4) != 0) {
    if ((param_1[8] == local_4c) || (local_5c == 0)) {
      local_38 = local_38 + -1;
    }
    *local_38 = 0;
  }
  if ((__dirp == (DIR *)0x0) && (bVar19)) {
    if ((param_2 != 1) && (local_5c != 0)) goto LAB_000196b9;
    if (*(int *)(iVar1 + 0x30) == 0) {
      iVar7 = FUN_00018c40();
    }
    else {
      iVar7 = FUN_00018e20(&DAT_0001e166);
    }
    if (iVar7 != 0) {
      *(undefined2 *)(iVar1 + 0x3c) = 7;
      param_1[0xb] = param_1[0xb] | 0x4000;
      FUN_00018960();
      return (void *)0x0;
    }
  }
  if (local_5c == 0) {
    if (((param_2 == 3) && (*(short *)(iVar1 + 0x3c) != 4)) && (*(short *)(iVar1 + 0x3c) != 7)) {
      *(undefined2 *)(iVar1 + 0x3c) = 6;
    }
    FUN_00018960();
    return (void *)0x0;
  }
LAB_000196b9:
  if (bVar2) {
    param_1[10] = (int)FUN_00018600;
    pvVar11 = (void *)FUN_000187e0();
    param_1[10] = 0;
    return pvVar11;
  }
  if ((param_1[10] != 0) && (local_5c != 1)) {
    pvVar11 = (void *)FUN_000187e0();
    return pvVar11;
  }
  return local_48;
}

