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

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

{
  int iVar1;
  size_t sVar2;
  char *pcVar3;
  FTS *pFVar4;
  _ftsent *p_Var5;
  bool bVar6;
  bool bVar7;
  __ino64_t _Var8;
  __dev_t _Var9;
  undefined *data_freer;
  __fsword_t _Var10;
  FTSENT *pFVar11;
  _Bool _Var12;
  ushort uVar13;
  int *piVar14;
  dirent64 *pdVar15;
  size_t __n;
  FTSENT *p;
  undefined4 uVar16;
  uint uVar17;
  char *pcVar18;
  int iVar19;
  DIR *pDVar20;
  void *pvVar21;
  hash_table *table;
  int iVar22;
  undefined4 *entry;
  undefined4 *puVar23;
  leaf_optimization lVar24;
  _ftsent *p_Var25;
  DIR *pDVar26;
  DIR *pDVar27;
  size_t sVar28;
  uint uVar29;
  FTSENT *pFVar30;
  int in_GS_OFFSET;
  bool bVar31;
  uint local_d4;
  uint local_d0;
  FTSENT *local_c4;
  FTSENT *local_b8;
  uint local_b0;
  uint local_a8;
  char *local_a4;
  int local_9c;
  dev_type tmp;
  statfs fs_buf;
  
  iVar1 = *(int *)(in_GS_OFFSET + 0x14);
  pFVar30 = sp->fts_cur;
  pDVar26 = (DIR *)pFVar30->fts_dirp;
  if (pDVar26 == (DIR *)0x0) {
    uVar17 = sp->fts_options;
    uVar29 = uVar17 & 0x10;
    if (((uVar29 != 0) && (uVar29 = 0x20000, (uVar17 & 1) != 0)) &&
       (uVar29 = pFVar30->fts_level, uVar29 != 0)) {
      uVar29 = 0x20000;
    }
    iVar19 = -100;
    if ((uVar17 & 0x204) == 0x200) {
      iVar19 = sp->fts_cwd_fd;
    }
    local_9c = openat_safer(iVar19,pFVar30->fts_accpath,(uVar17 & 0x800) << 7 | uVar29 | 0x90900);
    if (local_9c < 0) {
      pFVar30->fts_dirp = (DIR *)0x0;
    }
    else {
      pDVar20 = fdopendir(local_9c);
      if (pDVar20 != (DIR *)0x0) {
        pFVar30->fts_dirp = (DIR *)pDVar20;
        if (pFVar30->fts_info == 0xb) {
          uVar13 = fts_stat(sp,pFVar30,false);
          pFVar30->fts_info = uVar13;
        }
        else if (((uint)sp->fts_options & 0x100) != 0) {
          leave_dir((FTS *)sp->fts_options,(FTSENT *)&sp->fts_cycle,(FTS *)pFVar30);
          fts_stat(sp,pFVar30,false);
          _Var12 = enter_dir((FTS *)sp->fts_options,(FTSENT *)&sp->fts_cycle,(FTS *)pFVar30);
          if (!_Var12) {
            piVar14 = __errno_location();
            local_b8 = (FTSENT *)0x0;
            *piVar14 = 0xc;
            goto LAB_0002563f;
          }
        }
        local_a8 = (-(uint)(sp->fts_compar == (_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *)0x0) &
                   0x186a1) - 1;
        if (type == 2) {
LAB_00025bc8:
          bVar31 = false;
          uVar17 = sp->fts_options;
          goto LAB_00025223;
        }
        if ((((sp->fts_options & 0x38U) == 0x18) && (pFVar30->fts_statp[0].st_nlink == 2)) &&
           (lVar24 = leaf_optimization(pFVar30,local_9c), lVar24 != NO_LEAF_OPTIMIZATION)) {
          if (type != 3) goto LAB_00025bc8;
          bVar31 = false;
        }
        else {
          bVar31 = type == 3;
        }
        if (((sp->fts_options & 0x200) == 0) ||
           (local_9c = rpl_fcntl(local_9c,0x406,3), -1 < local_9c)) {
          iVar19 = fts_safe_changedir(sp,pFVar30,local_9c,(char *)0x0);
          if (iVar19 == 0) goto LAB_0002521b;
          pDVar27 = pFVar30->fts_dirp;
          uVar13 = pFVar30->fts_flags | 1;
          if (bVar31) goto LAB_000258a0;
LAB_000258ae:
          pFVar30->fts_flags = uVar13;
          closedir((DIR *)pDVar27);
          pFVar30->fts_dirp = (DIR *)0x0;
          uVar17 = sp->fts_options;
          if (((uVar17 & 0x200) != 0) && (-1 < local_9c)) {
            close(local_9c);
            uVar17 = sp->fts_options;
          }
        }
        else {
          pDVar27 = pFVar30->fts_dirp;
          uVar13 = pFVar30->fts_flags | 1;
          if (bVar31) {
LAB_000258a0:
            piVar14 = __errno_location();
            pFVar30->fts_errno = *piVar14;
            goto LAB_000258ae;
          }
          pFVar30->fts_flags = uVar13;
          closedir((DIR *)pDVar27);
          uVar17 = sp->fts_options;
        }
        bVar31 = false;
        pFVar30->fts_dirp = (DIR *)0x0;
        goto LAB_00025223;
      }
      piVar14 = __errno_location();
      iVar19 = *piVar14;
      close(local_9c);
      *piVar14 = iVar19;
      pFVar30->fts_dirp = (DIR *)0x0;
    }
joined_r0x00025c30:
    if (type == 3) {
      pFVar30->fts_info = 4;
      piVar14 = __errno_location();
      pFVar30->fts_errno = *piVar14;
    }
LAB_00025c40:
    local_b8 = (FTSENT *)0x0;
  }
  else {
    local_9c = dirfd(pDVar26);
    if (local_9c < 0) {
      closedir((DIR *)pFVar30->fts_dirp);
      pFVar30->fts_dirp = (DIR *)0x0;
      goto joined_r0x00025c30;
    }
    if (sp->fts_compar == (_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *)0x0) {
      local_a8 = 100000;
      uVar17 = sp->fts_options;
      bVar31 = true;
    }
    else {
      local_a8 = 0xffffffff;
LAB_0002521b:
      bVar31 = true;
      uVar17 = sp->fts_options;
    }
LAB_00025223:
    sVar2 = pFVar30->fts_pathlen;
    sVar28 = sVar2 - 1;
    local_d0 = sVar2;
    if (pFVar30->fts_path[sVar2 - 1] != '/') {
      local_d0 = sVar2 + 1;
      sVar28 = sVar2;
    }
    local_a4 = (char *)0x0;
    if ((uVar17 & 4) != 0) {
      local_a4 = sp->fts_path + sVar28 + 1;
      sp->fts_path[sVar28] = '/';
    }
    data_freer = PTR_free_0003afa8;
    local_b0 = sp->fts_pathlen - local_d0;
    bVar7 = false;
    bVar6 = false;
    iVar19 = pFVar30->fts_level;
    local_c4 = (FTSENT *)0x0;
    local_d4 = 0;
    local_b8 = (FTSENT *)0x0;
LAB_000252fb:
    do {
      do {
        pDVar20 = (DIR *)pFVar30->fts_dirp;
        if (pDVar20 == (DIR *)0x0) goto LAB_000256de;
        piVar14 = __errno_location();
        *piVar14 = 0;
        pdVar15 = readdir64(pDVar20);
        if (pdVar15 == (dirent64 *)0x0) {
          if (*piVar14 != 0) {
            pFVar30->fts_errno = *piVar14;
            pFVar30->fts_info = (-(ushort)(pDVar26 == (DIR *)0x0 && local_d4 == 0) & 0xfffd) + 7;
          }
          if ((DIR *)pFVar30->fts_dirp != (DIR *)0x0) {
            closedir((DIR *)pFVar30->fts_dirp);
            pFVar30->fts_dirp = (DIR *)0x0;
          }
          goto LAB_000256de;
        }
      } while ((((sp->fts_options & 0x20) == 0) && (pdVar15->d_name[0] == '.')) &&
              ((pdVar15->d_name[1] == '\0' || (*(short *)(pdVar15->d_name + 1) == 0x2e))));
      __n = strlen(pdVar15->d_name);
      p = (FTSENT *)malloc(__n + 0xa8 & 0xfffffffc);
      if (p == (FTSENT *)0x0) {
        iVar19 = *piVar14;
LAB_000255a6:
        free(p);
        if (local_b8 != (FTSENT *)0x0) {
          pDVar27 = local_b8->fts_dirp;
          p_Var25 = local_b8->fts_link;
          if (pDVar27 == (DIR *)0x0) goto LAB_000255f4;
          do {
            closedir((DIR *)pDVar27);
            free(local_b8);
            local_b8 = p_Var25;
            while( true ) {
              if (local_b8 == (FTSENT *)0x0) goto LAB_00025608;
              pDVar27 = local_b8->fts_dirp;
              p_Var25 = local_b8->fts_link;
              if (pDVar27 != (DIR *)0x0) break;
LAB_000255f4:
              free(local_b8);
              local_b8 = p_Var25;
            }
          } while( true );
        }
LAB_00025608:
        closedir((DIR *)pFVar30->fts_dirp);
        pFVar30->fts_dirp = (DIR *)0x0;
        pFVar30->fts_info = 7;
        local_b8 = (FTSENT *)0x0;
        sp->fts_options = sp->fts_options | 0x4000;
        *piVar14 = iVar19;
        goto LAB_0002563f;
      }
      pFVar11 = p + 1;
      memcpy(pFVar11,pdVar15->d_name,__n);
      pcVar3 = sp->fts_path;
      *(undefined1 *)((int)p[1].fts_statp + (__n - 0x44)) = 0;
      p->fts_namelen = __n;
      p->fts_fts = sp;
      p->fts_path = pcVar3;
      p->fts_errno = 0;
      p->fts_dirp = (DIR *)0x0;
      p->fts_flags = 0;
      p->fts_instr = 3;
      p->fts_number = 0;
      p->fts_pointer = (void *)0x0;
      if (local_b0 <= __n) {
        uVar17 = local_d0 + 0x101 + sp->fts_pathlen + __n;
        if (uVar17 < sp->fts_pathlen) {
          iVar19 = 0x24;
          free(pcVar3);
          sp->fts_path = (char *)0x0;
          *piVar14 = 0x24;
        }
        else {
          sp->fts_pathlen = uVar17;
          pcVar18 = (char *)realloc(pcVar3,uVar17);
          if (pcVar18 != (char *)0x0) {
            sp->fts_path = pcVar18;
            if ((pcVar3 != pcVar18) && (bVar6 = true, (sp->fts_options & 4) != 0)) {
              local_a4 = pcVar18 + local_d0;
            }
            local_b0 = sp->fts_pathlen - local_d0;
            goto LAB_000253d8;
          }
          free(sp->fts_path);
          sp->fts_path = (char *)0x0;
          iVar19 = *piVar14;
        }
        goto LAB_000255a6;
      }
LAB_000253d8:
      if (CARRY4(__n,local_d0)) {
        free(p);
        if (local_b8 != (FTSENT *)0x0) {
          pDVar27 = local_b8->fts_dirp;
          p_Var25 = local_b8->fts_link;
          if (pDVar27 == (DIR *)0x0) goto LAB_00025e84;
          do {
            closedir((DIR *)pDVar27);
            free(local_b8);
            local_b8 = p_Var25;
            while( true ) {
              if (local_b8 == (FTSENT *)0x0) goto LAB_00025e94;
              pDVar27 = local_b8->fts_dirp;
              p_Var25 = local_b8->fts_link;
              if (pDVar27 != (DIR *)0x0) break;
LAB_00025e84:
              free(local_b8);
              local_b8 = p_Var25;
            }
          } while( true );
        }
LAB_00025e94:
        closedir((DIR *)pFVar30->fts_dirp);
        pFVar30->fts_dirp = (DIR *)0x0;
        pFVar30->fts_info = 7;
        local_b8 = (FTSENT *)0x0;
        sp->fts_options = sp->fts_options | 0x4000;
        *piVar14 = 0x24;
        goto LAB_0002563f;
      }
      uVar16 = *(undefined4 *)((int)&pdVar15->d_ino + 4);
      p->fts_pathlen = __n + local_d0;
      p->fts_level = iVar19 + 1;
      p->fts_parent = sp->fts_cur;
      _Var8 = pdVar15->d_ino;
      *(undefined4 *)((int)&p->fts_statp[0].st_ino + 4) = uVar16;
      *(int *)&p->fts_statp[0].st_ino = (int)_Var8;
      uVar17 = sp->fts_options;
      if ((uVar17 & 4) == 0) {
        p->fts_accpath = (char *)pFVar11;
      }
      else {
        p->fts_accpath = p->fts_path;
        memmove(local_a4,pFVar11,p->fts_namelen + 1);
        uVar17 = sp->fts_options;
      }
      if ((sp->fts_compar == (_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *)0x0) ||
         ((uVar17 & 0x400) != 0)) {
        uVar29 = pdVar15->d_type - 1;
        if (((uVar17 & 0x18) == 0x18) && ((pdVar15->d_type & 0xfb) != 0)) {
          p->fts_info = 0xb;
          if (uVar29 < 0xc) {
            p->fts_statp[0].st_mode = *(__mode_t *)(CSWTCH_40 + uVar29 * 4);
            uVar16 = 1;
          }
          else {
            p->fts_statp[0].st_mode = 0;
            uVar16 = 1;
          }
        }
        else {
          p->fts_info = 0xb;
          if (uVar29 < 0xc) {
            p->fts_statp[0].st_mode = *(__mode_t *)(CSWTCH_40 + uVar29 * 4);
            uVar16 = 2;
          }
          else {
            p->fts_statp[0].st_mode = 0;
            uVar16 = 2;
          }
        }
        *(undefined4 *)&p->fts_statp[0].st_size = uVar16;
        *(undefined4 *)((int)&p->fts_statp[0].st_size + 4) = 0;
      }
      else {
        uVar13 = fts_stat(sp,p,false);
        p->fts_info = uVar13;
      }
      p->fts_link = (_ftsent *)0x0;
      pFVar11 = p;
      if (local_b8 != (FTSENT *)0x0) {
        local_c4->fts_link = p;
        pFVar11 = local_b8;
      }
      local_b8 = pFVar11;
      local_c4 = p;
      if (local_d4 == 10000) {
        if (sp->fts_compar == (_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *)0x0) {
          pFVar4 = pFVar30->fts_fts;
          if ((pFVar4->fts_options & 0x200) != 0) {
            table = pFVar4->fts_leaf_optimization_works_ht;
            if (table == (hash_table *)0x0) {
              table = hash_initialize(0xd,(Hash_tuning *)0x0,dev_type_hash,dev_type_compare,
                                      (Hash_data_freer)data_freer);
              pFVar4->fts_leaf_optimization_works_ht = table;
              if (table != (Hash_table *)0x0) goto LAB_00025920;
LAB_000259b0:
              if ((local_9c < 0) ||
                 (iVar22 = fstatfs64(local_9c,(statfs64 *)&fs_buf), _Var10 = fs_buf.f_type,
                 iVar22 != 0)) goto LAB_00025a48;
              local_d4 = fs_buf.f_type;
              if ((table != (Hash_table *)0x0) &&
                 (entry = (undefined4 *)malloc(0xc), entry != (undefined4 *)0x0)) {
                _Var9 = pFVar30->fts_statp[0].st_dev;
                entry[1] = *(undefined4 *)((int)&pFVar30->fts_statp[0].st_dev + 4);
                *entry = (int)_Var9;
                entry[2] = _Var10;
                puVar23 = (undefined4 *)hash_insert(table,entry);
                if (puVar23 == (undefined4 *)0x0) {
                  free(entry);
                  local_d4 = fs_buf.f_type;
                }
                else {
                  if (entry != puVar23) {
                    /* WARNING: Subroutine does not return */
                    abort();
                  }
                  local_d4 = fs_buf.f_type;
                }
              }
            }
            else {
LAB_00025920:
              tmp.st_dev._4_4_ = *(undefined4 *)((int)&pFVar30->fts_statp[0].st_dev + 4);
              tmp.st_dev._0_4_ = (undefined4)pFVar30->fts_statp[0].st_dev;
              pvVar21 = hash_lookup(table,&tmp);
              if (pvVar21 == (void *)0x0) goto LAB_000259b0;
              local_d4 = *(int *)((int)pvVar21 + 8);
            }
            if (((local_d4 == 0x6969) || (local_d4 == 0x1021994)) || (local_d4 == -0xacb2be)) {
              bVar7 = false;
              goto LAB_00025473;
            }
          }
LAB_00025a48:
          bVar7 = true;
        }
LAB_00025473:
        local_d4 = 0x2711;
        goto LAB_000252fb;
      }
      local_d4 = local_d4 + 1;
    } while (local_d4 < local_a8);
LAB_000256de:
    if (bVar6) {
      pcVar3 = sp->fts_path;
      for (p_Var25 = sp->fts_child; p_Var25 != (_ftsent *)0x0; p_Var25 = p_Var25->fts_link) {
        while ((_ftsent *)p_Var25->fts_accpath != p_Var25 + 1) {
          pcVar18 = p_Var25->fts_path;
          p_Var25->fts_path = pcVar3;
          p_Var25->fts_accpath = pcVar3 + ((int)p_Var25->fts_accpath - (int)pcVar18);
          p_Var25 = p_Var25->fts_link;
          if (p_Var25 == (_ftsent *)0x0) goto LAB_00025aef;
        }
        p_Var25->fts_path = pcVar3;
      }
LAB_00025aef:
      iVar19 = local_b8->fts_level;
      p_Var25 = local_b8;
      while (-1 < iVar19) {
        while( true ) {
          if ((FTSENT *)p_Var25->fts_accpath != p_Var25 + 1) {
            p_Var25->fts_accpath = pcVar3 + ((int)p_Var25->fts_accpath - (int)p_Var25->fts_path);
          }
          p_Var5 = p_Var25->fts_link;
          p_Var25->fts_path = pcVar3;
          if (p_Var5 == (_ftsent *)0x0) break;
          p_Var25 = p_Var5;
          if (p_Var5->fts_level < 0) goto LAB_000256e9;
        }
        p_Var25 = p_Var25->fts_parent;
        iVar19 = p_Var25->fts_level;
      }
    }
LAB_000256e9:
    if ((sp->fts_options & 4) != 0) {
      if ((sp->fts_pathlen == local_d0) || (local_d4 == 0)) {
        local_a4 = local_a4 + -1;
      }
      *local_a4 = '\0';
    }
    if ((pDVar26 == (DIR *)0x0) && (bVar31)) {
      if ((type == 1) || (local_d4 == 0)) {
        if (pFVar30->fts_level == 0) {
          iVar19 = restore_initial_cwd(sp);
        }
        else {
          iVar19 = fts_safe_changedir(sp,pFVar30->fts_parent,-1,"..");
        }
        if (iVar19 != 0) {
          pFVar30->fts_info = 7;
          sp->fts_options = sp->fts_options | 0x4000;
          while (pFVar30 = local_b8, local_b8 != (FTSENT *)0x0) {
            while( true ) {
              local_b8 = pFVar30->fts_link;
              if ((DIR *)pFVar30->fts_dirp == (DIR *)0x0) break;
              closedir((DIR *)pFVar30->fts_dirp);
              free(pFVar30);
              pFVar30 = local_b8;
              if (local_b8 == (_ftsent *)0x0) goto LAB_00025c40;
            }
            free(pFVar30);
          }
          goto LAB_00025c40;
        }
        goto LAB_0002574d;
      }
    }
    else {
LAB_0002574d:
      if (local_d4 == 0) {
        if (((type == 3) && (pFVar30->fts_info != 4)) && (pFVar30->fts_info != 7)) {
          pFVar30->fts_info = 6;
        }
        if (local_b8 != (FTSENT *)0x0) {
          pDVar26 = (DIR *)local_b8->fts_dirp;
          p_Var25 = local_b8->fts_link;
          if (pDVar26 == (DIR *)0x0) goto LAB_00025c94;
          do {
            closedir(pDVar26);
            free(local_b8);
            local_b8 = p_Var25;
            while( true ) {
              if (local_b8 == (FTSENT *)0x0) goto LAB_00025c40;
              pDVar26 = (DIR *)local_b8->fts_dirp;
              p_Var25 = local_b8->fts_link;
              if (pDVar26 != (DIR *)0x0) break;
LAB_00025c94:
              free(local_b8);
              local_b8 = p_Var25;
            }
          } while( true );
        }
        goto LAB_00025c40;
      }
    }
    if (bVar7) {
      sp->fts_compar = fts_compare_ino;
      local_b8 = fts_sort(sp,local_b8,local_d4);
      sp->fts_compar = (_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *)0x0;
    }
    else if ((sp->fts_compar != (_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *)0x0) && (local_d4 != 1)
            ) {
      local_b8 = fts_sort(sp,local_b8,local_d4);
    }
  }
LAB_0002563f:
  if (iVar1 == *(int *)(in_GS_OFFSET + 0x14)) {
    return local_b8;
  }
                    /* WARNING: Subroutine does not return */
  __stack_chk_fail_local();
}



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

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

{
  void *pvVar1;
  int iVar2;
  void *__ptr;
  bool bVar3;
  bool bVar4;
  __ino64_t _Var5;
  undefined *puVar6;
  char cVar7;
  undefined2 uVar8;
  int *piVar9;
  dirent64 *pdVar10;
  size_t __n;
  void *pvVar11;
  undefined4 uVar12;
  uint uVar13;
  void *pvVar14;
  int iVar15;
  DIR *pDVar16;
  int iVar17;
  int iVar18;
  int iVar19;
  undefined4 *__ptr_00;
  undefined4 *puVar20;
  DIR *pDVar21;
  uint uVar22;
  uint uVar23;
  ushort uVar24;
  int in_GS_OFFSET;
  bool bVar25;
  uint local_d4;
  uint local_d0;
  void *local_c4;
  void *local_b8;
  uint local_b0;
  uint local_a8;
  undefined1 *local_a4;
  int local_9c;
  undefined4 local_80;
  undefined4 local_7c;
  statfs64 local_74;
  int local_20;
  undefined4 uStack_14;
  
  uStack_14 = 0x251bb;
  local_20 = *(int *)(in_GS_OFFSET + 0x14);
  iVar2 = *param_1;
  pDVar21 = *(DIR **)(iVar2 + 0xc);
  if (pDVar21 == (DIR *)0x0) {
    uVar13 = param_1[0xb];
    uVar23 = uVar13 & 0x10;
    if (((uVar23 != 0) && (uVar23 = 0x20000, (uVar13 & 1) != 0)) &&
       (uVar23 = *(uint *)(iVar2 + 0x30), uVar23 != 0)) {
      uVar23 = 0x20000;
    }
    iVar15 = -100;
    if ((uVar13 & 0x204) == 0x200) {
      iVar15 = param_1[7];
    }
    local_9c = FUN_00029520(iVar15,*(undefined4 *)(iVar2 + 0x18),
                            (uVar13 & 0x800) << 7 | uVar23 | 0x90900);
    if (local_9c < 0) {
      *(undefined4 *)(iVar2 + 0xc) = 0;
    }
    else {
      pDVar16 = fdopendir(local_9c);
      if (pDVar16 != (DIR *)0x0) {
        *(DIR **)(iVar2 + 0xc) = pDVar16;
        if (*(short *)(iVar2 + 0x3c) == 0xb) {
          uVar8 = FUN_00024740();
          *(undefined2 *)(iVar2 + 0x3c) = uVar8;
        }
        else if ((param_1[0xb] & 0x100U) != 0) {
          FUN_00024aa0();
          FUN_00024740();
          cVar7 = FUN_000249d0();
          if (cVar7 == '\0') {
            piVar9 = __errno_location();
            local_b8 = (void *)0x0;
            *piVar9 = 0xc;
            goto LAB_0002563f;
          }
        }
        local_a8 = (-(uint)(param_1[10] == 0) & 0x186a1) - 1;
        if (param_2 == 2) {
LAB_00025bc8:
          bVar25 = false;
          uVar13 = param_1[0xb];
          goto LAB_00025223;
        }
        if ((((param_1[0xb] & 0x38U) == 0x18) && (*(int *)(iVar2 + 0x58) == 2)) &&
           (iVar15 = FUN_00024ca0(), iVar15 != 0)) {
          if (param_2 != 3) goto LAB_00025bc8;
          bVar25 = false;
        }
        else {
          bVar25 = param_2 == 3;
        }
        if (((*(byte *)((int)param_1 + 0x2d) & 2) == 0) ||
           (local_9c = FUN_000243f0(local_9c,0x406,3), -1 < local_9c)) {
          iVar15 = FUN_00024e60(0);
          if (iVar15 == 0) goto LAB_0002521b;
          pDVar16 = *(DIR **)(iVar2 + 0xc);
          uVar24 = *(ushort *)(iVar2 + 0x3e) | 1;
          if (bVar25) goto LAB_000258a0;
LAB_000258ae:
          *(ushort *)(iVar2 + 0x3e) = uVar24;
          closedir(pDVar16);
          *(undefined4 *)(iVar2 + 0xc) = 0;
          uVar13 = param_1[0xb];
          if (((uVar13 & 0x200) != 0) && (-1 < local_9c)) {
            close(local_9c);
            uVar13 = param_1[0xb];
          }
        }
        else {
          pDVar16 = *(DIR **)(iVar2 + 0xc);
          uVar24 = *(ushort *)(iVar2 + 0x3e) | 1;
          if (bVar25) {
LAB_000258a0:
            piVar9 = __errno_location();
            *(int *)(iVar2 + 0x20) = *piVar9;
            goto LAB_000258ae;
          }
          *(ushort *)(iVar2 + 0x3e) = uVar24;
          closedir(pDVar16);
          uVar13 = param_1[0xb];
        }
        bVar25 = false;
        *(undefined4 *)(iVar2 + 0xc) = 0;
        goto LAB_00025223;
      }
      piVar9 = __errno_location();
      iVar15 = *piVar9;
      close(local_9c);
      *piVar9 = iVar15;
      *(undefined4 *)(iVar2 + 0xc) = 0;
    }
joined_r0x00025c30:
    if (param_2 == 3) {
      *(undefined2 *)(iVar2 + 0x3c) = 4;
      piVar9 = __errno_location();
      *(int *)(iVar2 + 0x20) = *piVar9;
    }
LAB_00025c40:
    local_b8 = (void *)0x0;
  }
  else {
    local_9c = dirfd(pDVar21);
    if (local_9c < 0) {
      closedir(*(DIR **)(iVar2 + 0xc));
      *(undefined4 *)(iVar2 + 0xc) = 0;
      goto joined_r0x00025c30;
    }
    if (param_1[10] == 0) {
      local_a8 = 100000;
      uVar13 = param_1[0xb];
      bVar25 = true;
    }
    else {
      local_a8 = 0xffffffff;
LAB_0002521b:
      bVar25 = true;
      uVar13 = param_1[0xb];
    }
LAB_00025223:
    uVar23 = *(uint *)(iVar2 + 0x28);
    uVar22 = uVar23 - 1;
    local_d0 = uVar23;
    if (*(char *)(*(int *)(iVar2 + 0x1c) + -1 + uVar23) != '/') {
      local_d0 = uVar23 + 1;
      uVar22 = uVar23;
    }
    local_a4 = (undefined1 *)0x0;
    if ((uVar13 & 4) != 0) {
      local_a4 = (undefined1 *)(uVar22 + param_1[5]) + 1;
      *(undefined1 *)(uVar22 + param_1[5]) = 0x2f;
    }
    puVar6 = PTR_free_0003afa8;
    local_b0 = param_1[8] - local_d0;
    bVar4 = false;
    bVar3 = false;
    iVar15 = *(int *)(iVar2 + 0x30);
    local_c4 = (void *)0x0;
    local_d4 = 0;
    local_b8 = (void *)0x0;
LAB_000252fb:
    do {
      do {
        pDVar16 = *(DIR **)(iVar2 + 0xc);
        if (pDVar16 == (DIR *)0x0) goto LAB_000256de;
        piVar9 = __errno_location();
        *piVar9 = 0;
        pdVar10 = readdir64(pDVar16);
        if (pdVar10 == (dirent64 *)0x0) {
          if (*piVar9 != 0) {
            *(int *)(iVar2 + 0x20) = *piVar9;
            *(ushort *)(iVar2 + 0x3c) =
                 (-(ushort)(pDVar21 == (DIR *)0x0 && local_d4 == 0) & 0xfffd) + 7;
          }
          if (*(DIR **)(iVar2 + 0xc) != (DIR *)0x0) {
            closedir(*(DIR **)(iVar2 + 0xc));
            *(undefined4 *)(iVar2 + 0xc) = 0;
          }
          goto LAB_000256de;
        }
      } while ((((*(byte *)(param_1 + 0xb) & 0x20) == 0) && (pdVar10->d_name[0] == '.')) &&
              ((pdVar10->d_name[1] == '\0' || (*(short *)(pdVar10->d_name + 1) == 0x2e))));
      __n = strlen(pdVar10->d_name);
      pvVar11 = malloc(__n + 0xa8 & 0xfffffffc);
      if (pvVar11 == (void *)0x0) {
        iVar15 = *piVar9;
LAB_000255a6:
        free(pvVar11);
        if (local_b8 != (void *)0x0) {
          pDVar21 = *(DIR **)((int)local_b8 + 0xc);
          pvVar11 = *(void **)((int)local_b8 + 8);
          if (pDVar21 == (DIR *)0x0) goto LAB_000255f4;
          do {
            closedir(pDVar21);
            free(local_b8);
            local_b8 = pvVar11;
            while( true ) {
              if (local_b8 == (void *)0x0) goto LAB_00025608;
              pDVar21 = *(DIR **)((int)local_b8 + 0xc);
              pvVar11 = *(void **)((int)local_b8 + 8);
              if (pDVar21 != (DIR *)0x0) break;
LAB_000255f4:
              free(local_b8);
              local_b8 = pvVar11;
            }
          } while( true );
        }
LAB_00025608:
        closedir(*(DIR **)(iVar2 + 0xc));
        *(undefined4 *)(iVar2 + 0xc) = 0;
        *(undefined2 *)(iVar2 + 0x3c) = 7;
        local_b8 = (void *)0x0;
        param_1[0xb] = param_1[0xb] | 0x4000;
        *piVar9 = iVar15;
        goto LAB_0002563f;
      }
      pvVar1 = (void *)((int)pvVar11 + 0xa4);
      memcpy(pvVar1,pdVar10->d_name,__n);
      __ptr = (void *)param_1[5];
      *(undefined1 *)((int)pvVar11 + __n + 0xa4) = 0;
      *(size_t *)((int)pvVar11 + 0x34) = __n;
      *(int **)((int)pvVar11 + 0x2c) = param_1;
      *(void **)((int)pvVar11 + 0x1c) = __ptr;
      *(undefined4 *)((int)pvVar11 + 0x20) = 0;
      *(undefined4 *)((int)pvVar11 + 0xc) = 0;
      *(undefined4 *)((int)pvVar11 + 0x3e) = 0x30000;
      *(undefined4 *)((int)pvVar11 + 0x10) = 0;
      *(undefined4 *)((int)pvVar11 + 0x14) = 0;
      if (local_b0 <= __n) {
        uVar13 = local_d0 + 0x101 + param_1[8] + __n;
        if (uVar13 < (uint)param_1[8]) {
          iVar15 = 0x24;
          free(__ptr);
          param_1[5] = 0;
          *piVar9 = 0x24;
        }
        else {
          param_1[8] = uVar13;
          pvVar14 = realloc(__ptr,uVar13);
          if (pvVar14 != (void *)0x0) {
            param_1[5] = (int)pvVar14;
            if ((__ptr != pvVar14) && (bVar3 = true, (*(byte *)(param_1 + 0xb) & 4) != 0)) {
              local_a4 = (undefined1 *)((int)pvVar14 + local_d0);
            }
            local_b0 = param_1[8] - local_d0;
            goto LAB_000253d8;
          }
          free((void *)param_1[5]);
          param_1[5] = 0;
          iVar15 = *piVar9;
        }
        goto LAB_000255a6;
      }
LAB_000253d8:
      if (CARRY4(__n,local_d0)) {
        free(pvVar11);
        if (local_b8 != (void *)0x0) {
          pDVar21 = *(DIR **)((int)local_b8 + 0xc);
          pvVar11 = *(void **)((int)local_b8 + 8);
          if (pDVar21 == (DIR *)0x0) goto LAB_00025e84;
          do {
            closedir(pDVar21);
            free(local_b8);
            local_b8 = pvVar11;
            while( true ) {
              if (local_b8 == (void *)0x0) goto LAB_00025e94;
              pDVar21 = *(DIR **)((int)local_b8 + 0xc);
              pvVar11 = *(void **)((int)local_b8 + 8);
              if (pDVar21 != (DIR *)0x0) break;
LAB_00025e84:
              free(local_b8);
              local_b8 = pvVar11;
            }
          } while( true );
        }
LAB_00025e94:
        closedir(*(DIR **)(iVar2 + 0xc));
        *(undefined4 *)(iVar2 + 0xc) = 0;
        *(undefined2 *)(iVar2 + 0x3c) = 7;
        local_b8 = (void *)0x0;
        param_1[0xb] = param_1[0xb] | 0x4000;
        *piVar9 = 0x24;
        goto LAB_0002563f;
      }
      uVar12 = *(undefined4 *)((int)&pdVar10->d_ino + 4);
      *(size_t *)((int)pvVar11 + 0x28) = __n + local_d0;
      *(int *)((int)pvVar11 + 0x30) = iVar15 + 1;
      *(int *)((int)pvVar11 + 4) = *param_1;
      _Var5 = pdVar10->d_ino;
      *(undefined4 *)((int)pvVar11 + 0xa0) = uVar12;
      *(int *)((int)pvVar11 + 0x9c) = (int)_Var5;
      uVar13 = param_1[0xb];
      if ((uVar13 & 4) == 0) {
        *(void **)((int)pvVar11 + 0x18) = pvVar1;
      }
      else {
        *(undefined4 *)((int)pvVar11 + 0x18) = *(undefined4 *)((int)pvVar11 + 0x1c);
        memmove(local_a4,pvVar1,*(int *)((int)pvVar11 + 0x34) + 1);
        uVar13 = param_1[0xb];
      }
      if ((param_1[10] == 0) || ((uVar13 & 0x400) != 0)) {
        uVar23 = pdVar10->d_type - 1;
        if (((uVar13 & 0x18) == 0x18) && ((pdVar10->d_type & 0xfb) != 0)) {
          *(undefined2 *)((int)pvVar11 + 0x3c) = 0xb;
          if (uVar23 < 0xc) {
            *(undefined4 *)((int)pvVar11 + 0x54) = *(undefined4 *)(&DAT_00031560 + uVar23 * 4);
            uVar12 = 1;
          }
          else {
            *(undefined4 *)((int)pvVar11 + 0x54) = 0;
            uVar12 = 1;
          }
        }
        else {
          *(undefined2 *)((int)pvVar11 + 0x3c) = 0xb;
          if (uVar23 < 0xc) {
            *(undefined4 *)((int)pvVar11 + 0x54) = *(undefined4 *)(&DAT_00031560 + uVar23 * 4);
            uVar12 = 2;
          }
          else {
            *(undefined4 *)((int)pvVar11 + 0x54) = 0;
            uVar12 = 2;
          }
        }
        *(undefined4 *)((int)pvVar11 + 0x70) = uVar12;
        *(undefined4 *)((int)pvVar11 + 0x74) = 0;
      }
      else {
        uVar8 = FUN_00024740();
        *(undefined2 *)((int)pvVar11 + 0x3c) = uVar8;
      }
      *(undefined4 *)((int)pvVar11 + 8) = 0;
      pvVar1 = pvVar11;
      if (local_b8 != (void *)0x0) {
        *(void **)((int)local_c4 + 8) = pvVar11;
        pvVar1 = local_b8;
      }
      local_b8 = pvVar1;
      local_c4 = pvVar11;
      if (local_d4 == 10000) {
        if (param_1[10] == 0) {
          iVar17 = *(int *)(iVar2 + 0x2c);
          if ((*(byte *)(iVar17 + 0x2d) & 2) != 0) {
            iVar18 = *(int *)(iVar17 + 0x30);
            if (iVar18 == 0) {
              iVar18 = FUN_0001df90(0xd,0,FUN_000246b0,FUN_000246e0,puVar6);
              *(int *)(iVar17 + 0x30) = iVar18;
              if (iVar18 != 0) goto LAB_00025920;
LAB_000259b0:
              if ((local_9c < 0) ||
                 (iVar19 = fstatfs64(local_9c,&local_74), iVar17 = local_74.f_type, iVar19 != 0))
              goto LAB_00025a48;
              local_d4 = local_74.f_type;
              if ((iVar18 != 0) &&
                 (__ptr_00 = (undefined4 *)malloc(0xc), __ptr_00 != (undefined4 *)0x0)) {
                uVar12 = *(undefined4 *)(iVar2 + 0x44);
                __ptr_00[1] = *(undefined4 *)(iVar2 + 0x48);
                *__ptr_00 = uVar12;
                __ptr_00[2] = iVar17;
                puVar20 = (undefined4 *)FUN_0001e8d0(iVar18,__ptr_00);
                if (puVar20 == (undefined4 *)0x0) {
                  free(__ptr_00);
                  local_d4 = local_74.f_type;
                }
                else {
                  if (__ptr_00 != puVar20) {
                    /* WARNING: Subroutine does not return */
                    abort();
                  }
                  local_d4 = local_74.f_type;
                }
              }
            }
            else {
LAB_00025920:
              local_7c = *(undefined4 *)(iVar2 + 0x48);
              local_80 = *(undefined4 *)(iVar2 + 0x44);
              iVar17 = FUN_0001dce0(iVar18,&local_80);
              if (iVar17 == 0) goto LAB_000259b0;
              local_d4 = *(int *)(iVar17 + 8);
            }
            if (((local_d4 == 0x6969) || (local_d4 == 0x1021994)) || (local_d4 == -0xacb2be)) {
              bVar4 = false;
              goto LAB_00025473;
            }
          }
LAB_00025a48:
          bVar4 = true;
        }
LAB_00025473:
        local_d4 = 0x2711;
        goto LAB_000252fb;
      }
      local_d4 = local_d4 + 1;
    } while (local_d4 < local_a8);
LAB_000256de:
    if (bVar3) {
      iVar15 = param_1[5];
      for (iVar17 = param_1[1]; iVar17 != 0; iVar17 = *(int *)(iVar17 + 8)) {
        while (*(int *)(iVar17 + 0x18) != iVar17 + 0xa4) {
          iVar18 = *(int *)(iVar17 + 0x1c);
          *(int *)(iVar17 + 0x1c) = iVar15;
          *(int *)(iVar17 + 0x18) = (*(int *)(iVar17 + 0x18) - iVar18) + iVar15;
          iVar17 = *(int *)(iVar17 + 8);
          if (iVar17 == 0) goto LAB_00025aef;
        }
        *(int *)(iVar17 + 0x1c) = iVar15;
      }
LAB_00025aef:
      iVar17 = *(int *)((int)local_b8 + 0x30);
      pvVar11 = local_b8;
      while (-1 < iVar17) {
        while( true ) {
          if (*(int *)((int)pvVar11 + 0x18) != (int)pvVar11 + 0xa4) {
            *(int *)((int)pvVar11 + 0x18) =
                 (*(int *)((int)pvVar11 + 0x18) - *(int *)((int)pvVar11 + 0x1c)) + iVar15;
          }
          pvVar1 = *(void **)((int)pvVar11 + 8);
          *(int *)((int)pvVar11 + 0x1c) = iVar15;
          if (pvVar1 == (void *)0x0) break;
          pvVar11 = pvVar1;
          if (*(int *)((int)pvVar1 + 0x30) < 0) goto LAB_000256e9;
        }
        pvVar11 = *(void **)((int)pvVar11 + 4);
        iVar17 = *(int *)((int)pvVar11 + 0x30);
      }
    }
LAB_000256e9:
    if ((*(byte *)(param_1 + 0xb) & 4) != 0) {
      if ((param_1[8] == local_d0) || (local_d4 == 0)) {
        local_a4 = local_a4 + -1;
      }
      *local_a4 = 0;
    }
    if ((pDVar21 == (DIR *)0x0) && (bVar25)) {
      if ((param_2 == 1) || (local_d4 == 0)) {
        if (*(int *)(iVar2 + 0x30) == 0) {
          iVar15 = FUN_00024bb0();
        }
        else {
          iVar15 = FUN_00024e60(&DAT_0002e141);
        }
        if (iVar15 != 0) {
          *(undefined2 *)(iVar2 + 0x3c) = 7;
          param_1[0xb] = param_1[0xb] | 0x4000;
          while (pvVar11 = local_b8, local_b8 != (void *)0x0) {
            while( true ) {
              local_b8 = *(void **)((int)pvVar11 + 8);
              if (*(DIR **)((int)pvVar11 + 0xc) == (DIR *)0x0) break;
              closedir(*(DIR **)((int)pvVar11 + 0xc));
              free(pvVar11);
              pvVar11 = local_b8;
              if (local_b8 == (void *)0x0) goto LAB_00025c40;
            }
            free(pvVar11);
          }
          goto LAB_00025c40;
        }
        goto LAB_0002574d;
      }
    }
    else {
LAB_0002574d:
      if (local_d4 == 0) {
        if (((param_2 == 3) && (*(short *)(iVar2 + 0x3c) != 4)) && (*(short *)(iVar2 + 0x3c) != 7))
        {
          *(undefined2 *)(iVar2 + 0x3c) = 6;
        }
        if (local_b8 != (void *)0x0) {
          pDVar21 = *(DIR **)((int)local_b8 + 0xc);
          pvVar11 = *(void **)((int)local_b8 + 8);
          if (pDVar21 == (DIR *)0x0) goto LAB_00025c94;
          do {
            closedir(pDVar21);
            free(local_b8);
            local_b8 = pvVar11;
            while( true ) {
              if (local_b8 == (void *)0x0) goto LAB_00025c40;
              pDVar21 = *(DIR **)((int)local_b8 + 0xc);
              pvVar11 = *(void **)((int)local_b8 + 8);
              if (pDVar21 != (DIR *)0x0) break;
LAB_00025c94:
              free(local_b8);
              local_b8 = pvVar11;
            }
          } while( true );
        }
        goto LAB_00025c40;
      }
    }
    if (bVar4) {
      param_1[10] = (int)FUN_00024700;
      local_b8 = (void *)FUN_000248e0();
      param_1[10] = 0;
    }
    else if ((param_1[10] != 0) && (local_d4 != 1)) {
      local_b8 = (void *)FUN_000248e0();
    }
  }
LAB_0002563f:
  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {
    return local_b8;
  }
                    /* WARNING: Subroutine does not return */
  FUN_0002d5d0();
}


PUSH EBP
MOV EBP,EAX
PUSH EDI
PUSH ESI
PUSH EBX
CALL 0x000132d0
ADD EBX,0x15e45
SUB ESP,0xcc
MOV dword ptr [ESP + 0x3c],EDX
MOV EAX,GS:[0x14]
MOV dword ptr [ESP + 0xbc],EAX
XOR EAX,EAX
MOV EAX,dword ptr [EBP]
MOV dword ptr [ESP + 0x20],EAX
MOV EAX,dword ptr [EAX + 0xc]
MOV dword ptr [ESP + 0x44],EAX
TEST EAX,EAX
JZ 0x00025790
SUB ESP,0xc
PUSH EAX
CALL 0x00012130
MOV dword ptr [ESP + 0x50],EAX
ADD ESP,0x10
TEST EAX,EAX
JS 0x00025d68
MOV EAX,dword ptr [EBP + 0x28]
TEST EAX,EAX
JZ 0x00025bb0
MOV dword ptr [ESP + 0x34],0xffffffff
MOV byte ptr [ESP + 0x4b],0x1
MOV EAX,dword ptr [EBP + 0x2c]
MOV ECX,dword ptr [ESP + 0x20]
MOV EDI,dword ptr [ECX + 0x28]
MOV ECX,dword ptr [ECX + 0x1c]
CMP byte ptr [ECX + EDI*0x1 + -0x1],0x2f
MOV dword ptr [ESP + 0xc],EDI
LEA EDX,[EDI + -0x1]
JZ 0x00025244
LEA ECX,[EDI + 0x1]
MOV EDX,EDI
MOV dword ptr [ESP + 0xc],ECX
MOV dword ptr [ESP + 0x38],0x0
TEST AL,0x4
JZ 0x0002525d
ADD EDX,dword ptr [EBP + 0x14]
LEA EAX,[EDX + 0x1]
MOV byte ptr [EDX],0x2f
MOV dword ptr [ESP + 0x38],EAX
MOV EAX,dword ptr [EBP + 0x20]
SUB EAX,dword ptr [ESP + 0xc]
MOV byte ptr [ESP + 0x4a],0x0
MOV dword ptr [ESP + 0x2c],EAX
MOV EAX,dword ptr [ESP + 0x20]
MOV byte ptr [ESP + 0x49],0x0
MOV EAX,dword ptr [EAX + 0x30]
MOV dword ptr [ESP + 0x18],0x0
MOV dword ptr [ESP + 0x8],0x0
ADD EAX,0x1
MOV dword ptr [ESP + 0x24],0x0
MOV dword ptr [ESP + 0x30],EAX
MOV EAX,dword ptr [EBX + 0xffffffa8]
MOV dword ptr [ESP + 0x4c],EAX
JMP 0x000252fb
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 EAX,dword ptr [ESP + 0x24]
MOV dword ptr [ESI + 0x8],0x0
TEST EAX,EAX
JZ 0x00025520
MOV EAX,dword ptr [ESP + 0x18]
MOV dword ptr [EAX + 0x8],ESI
CMP dword ptr [ESP + 0x8],0x2710
JZ 0x00025468
ADD dword ptr [ESP + 0x8],0x1
MOV EAX,dword ptr [ESP + 0x8]
CMP EAX,dword ptr [ESP + 0x34]
JNC 0x000256de
MOV dword ptr [ESP + 0x18],ESI
MOV EAX,dword ptr [ESP + 0x20]
MOV ESI,dword ptr [EAX + 0xc]
TEST ESI,ESI
JZ 0x000256de
CALL 0x00012590
SUB ESP,0xc
MOV dword ptr [ESP + 0x34],EAX
MOV dword ptr [EAX],0x0
PUSH ESI
CALL 0x000127a0
ADD ESP,0x10
MOV ECX,EAX
TEST EAX,EAX
JZ 0x00025698
TEST byte ptr [EBP + 0x2c],0x20
JNZ 0x0002533f
CMP byte ptr [EAX + 0x13],0x2e
JZ 0x00025530
MOV dword ptr [ESP + 0x14],ECX
LEA EDX,[ECX + 0x13]
SUB ESP,0xc
PUSH EDX
MOV dword ptr [ESP + 0x20],EDX
CALL 0x000124c0
MOV EDI,EAX
LEA EAX,[EAX + 0xa8]
AND EAX,0xfffffffc
MOV dword ptr [ESP],EAX
CALL 0x000123e0
ADD ESP,0x10
MOV ESI,EAX
TEST EAX,EAX
JZ 0x000255a0
LEA EAX,[EAX + 0xa4]
SUB ESP,0x4
MOV dword ptr [ESP + 0x20],EAX
PUSH EDI
MOV EDX,dword ptr [ESP + 0x18]
PUSH EDX
PUSH EAX
CALL 0x00012150
MOV EAX,dword ptr [EBP + 0x14]
MOV byte ptr [ESI + EDI*0x1 + 0xa4],0x0
MOV dword ptr [ESI + 0x34],EDI
MOV dword ptr [ESP + 0x20],EAX
ADD ESP,0x10
MOV ECX,dword ptr [ESP + 0x14]
CMP dword ptr [ESP + 0x2c],EDI
MOV dword ptr [ESI + 0x2c],EBP
MOV dword ptr [ESI + 0x1c],EAX
MOV dword ptr [ESI + 0x20],0x0
MOV dword ptr [ESI + 0xc],0x0
MOV dword ptr [ESI + 0x3e],0x30000
MOV dword ptr [ESI + 0x10],0x0
MOV dword ptr [ESI + 0x14],0x0
JBE 0x00025480
ADD EDI,dword ptr [ESP + 0xc]
JC 0x00025e3c
MOV EAX,dword ptr [ESP + 0x30]
MOV EDX,dword ptr [ECX + 0x4]
MOV dword ptr [ESI + 0x28],EDI
MOV dword ptr [ESI + 0x30],EAX
MOV EAX,dword ptr [EBP]
MOV dword ptr [ESI + 0x4],EAX
MOV EAX,dword ptr [ECX]
MOV dword ptr [ESI + 0xa0],EDX
MOV dword ptr [ESI + 0x9c],EAX
MOV EAX,dword ptr [EBP + 0x2c]
TEST AL,0x4
JNZ 0x000254f0
MOV EDI,dword ptr [ESP + 0x1c]
MOV dword ptr [ESI + 0x18],EDI
MOV EDX,dword ptr [EBP + 0x28]
TEST EDX,EDX
JZ 0x00025425
TEST AH,0x4
JZ 0x00025588
MOVZX EDX,byte ptr [ECX + 0x12]
AND EAX,0x18
MOV ECX,EDX
SUB EDX,0x1
CMP EAX,0x18
JZ 0x00025550
MOV ECX,0xb
MOV word ptr [ESI + 0x3c],CX
CMP EDX,0xb
JA 0x000252a8
MOV EAX,dword ptr [EBX + EDX*0x4 + 0xffff6560]
XOR EDX,EDX
MOV dword ptr [ESI + 0x54],EAX
MOV EAX,0x2
JMP 0x000252b6
MOV EDI,dword ptr [EBP + 0x28]
TEST EDI,EDI
JZ 0x00025908
MOV dword ptr [ESP + 0x8],0x2711
JMP 0x000252f7
MOV EAX,dword ptr [ESP + 0xc]
MOV EDX,dword ptr [EBP + 0x20]
LEA EAX,[EAX + EDX*0x1 + 0x101]
ADD EAX,EDI
CMP EDX,EAX
JA 0x00025668
MOV dword ptr [ESP + 0x14],ECX
SUB ESP,0x8
PUSH EAX
MOV dword ptr [EBP + 0x20],EAX
PUSH dword ptr [ESP + 0x1c]
CALL 0x000123c0
ADD ESP,0x10
MOV ECX,dword ptr [ESP + 0x14]
TEST EAX,EAX
JZ 0x00025b60
MOV dword ptr [EBP + 0x14],EAX
CMP dword ptr [ESP + 0x10],EAX
JZ 0x000254d7
MOV byte ptr [ESP + 0x49],0x1
TEST byte ptr [EBP + 0x2c],0x4
JZ 0x000254d7
ADD EAX,dword ptr [ESP + 0xc]
MOV dword ptr [ESP + 0x38],EAX
MOV EAX,dword ptr [EBP + 0x20]
SUB EAX,dword ptr [ESP + 0xc]
MOV dword ptr [ESP + 0x2c],EAX
JMP 0x000253d8
MOV EAX,dword ptr [ESI + 0x1c]
MOV dword ptr [ESP + 0x10],ECX
SUB ESP,0x4
MOV dword ptr [ESI + 0x18],EAX
MOV EAX,dword ptr [ESI + 0x34]
ADD EAX,0x1
PUSH EAX
PUSH dword ptr [ESP + 0x24]
PUSH dword ptr [ESP + 0x44]
CALL 0x00012140
ADD ESP,0x10
MOV EAX,dword ptr [EBP + 0x2c]
MOV ECX,dword ptr [ESP + 0x10]
JMP 0x00025415
MOV dword ptr [ESP + 0x24],ESI
JMP 0x000252d6
CMP byte ptr [EAX + 0x14],0x0
JZ 0x00025541
CMP word ptr [EAX + 0x14],0x2e
JNZ 0x0002533f
MOV ESI,dword ptr [ESP + 0x18]
JMP 0x000252f7
AND ECX,0xfb
JZ 0x0002543a
MOV EDI,0xb
MOV word ptr [ESI + 0x3c],DI
CMP EDX,0xb
JBE 0x00025a58
MOV dword ptr [ESI + 0x54],0x0
MOV EAX,0x1
XOR EDX,EDX
JMP 0x000252b6
XOR ECX,ECX
MOV EDX,ESI
MOV EAX,EBP
CALL 0x00024740
MOV word ptr [ESI + 0x3c],AX
JMP 0x000252bc
MOV EAX,dword ptr [ESP + 0x28]
MOV EDI,dword ptr [EAX]
SUB ESP,0xc
PUSH ESI
CALL 0x00012970
ADD ESP,0x10
MOV ECX,dword ptr [ESP + 0x24]
TEST ECX,ECX
JZ 0x00025608
MOV ESI,dword ptr [ESP + 0x24]
MOV dword ptr [ESP + 0x8],EDI
MOV EAX,dword ptr [ESI + 0xc]
MOV EDI,dword ptr [ESI + 0x8]
TEST EAX,EAX
JZ 0x000255f4
LEA ESI,[ESI]
SUB ESP,0xc
PUSH EAX
CALL 0x000128c0
MOV dword ptr [ESP],ESI
CALL 0x00012970
ADD ESP,0x10
TEST EDI,EDI
JZ 0x00025604
MOV ESI,EDI
MOV EAX,dword ptr [ESI + 0xc]
MOV EDI,dword ptr [ESI + 0x8]
TEST EAX,EAX
JNZ 0x000255d0
SUB ESP,0xc
PUSH ESI
CALL 0x00012970
ADD ESP,0x10
TEST EDI,EDI
JNZ 0x000255e8
MOV EDI,dword ptr [ESP + 0x8]
SUB ESP,0xc
MOV ESI,dword ptr [ESP + 0x2c]
PUSH dword ptr [ESI + 0xc]
CALL 0x000128c0
MOV EAX,dword ptr [ESP + 0x38]
ADD ESP,0x10
MOV EDX,0x7
MOV dword ptr [ESI + 0xc],0x0
MOV word ptr [ESI + 0x3c],DX
MOV dword ptr [ESP + 0x24],0x0
OR dword ptr [EBP + 0x2c],0x4000
MOV dword ptr [EAX],EDI
MOV EDX,dword ptr [ESP + 0xbc]
XOR EDX,dword ptr GS:[0x14]
MOV EAX,dword ptr [ESP + 0x24]
JNZ 0x00025ef0
ADD ESP,0xcc
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOV EDX,dword ptr [ESP + 0x10]
SUB ESP,0xc
MOV EDI,0x24
PUSH EDX
CALL 0x00012970
MOV EAX,dword ptr [ESP + 0x38]
MOV dword ptr [EBP + 0x14],0x0
ADD ESP,0x10
MOV dword ptr [EAX],0x24
JMP 0x000255a6
MOV EAX,dword ptr [ESP + 0x28]
MOV EAX,dword ptr [EAX]
TEST EAX,EAX
JZ 0x000256c0
MOV EDX,dword ptr [ESP + 0x20]
MOV dword ptr [EDX + 0x20],EAX
MOV EAX,dword ptr [ESP + 0x44]
OR EAX,dword ptr [ESP + 0x8]
CMP EAX,0x1
SBB EAX,EAX
AND EAX,0xfffffffd
ADD EAX,0x7
MOV word ptr [EDX + 0x3c],AX
MOV EDI,dword ptr [ESP + 0x20]
MOV EAX,dword ptr [EDI + 0xc]
TEST EAX,EAX
JZ 0x000256de
SUB ESP,0xc
PUSH EAX
CALL 0x000128c0
MOV dword ptr [EDI + 0xc],0x0
ADD ESP,0x10
CMP byte ptr [ESP + 0x49],0x0
JNZ 0x00025ac0
TEST byte ptr [EBP + 0x2c],0x4
JZ 0x0002570c
MOV EAX,dword ptr [ESP + 0xc]
CMP dword ptr [EBP + 0x20],EAX
JZ 0x00025700
MOV EAX,dword ptr [ESP + 0x8]
TEST EAX,EAX
JNZ 0x00025705
SUB dword ptr [ESP + 0x38],0x1
MOV EAX,dword ptr [ESP + 0x38]
MOV byte ptr [EAX],0x0
MOV EAX,dword ptr [ESP + 0x44]
TEST EAX,EAX
JNZ 0x0002574d
CMP byte ptr [ESP + 0x4b],0x0
JZ 0x0002574d
CMP dword ptr [ESP + 0x3c],0x1
JZ 0x0002572a
MOV EDI,dword ptr [ESP + 0x8]
TEST EDI,EDI
JNZ 0x00025759
MOV EAX,dword ptr [ESP + 0x20]
MOV ESI,dword ptr [EAX + 0x30]
TEST ESI,ESI
JNZ 0x00025d18
MOV EAX,EBP
CALL 0x00024bb0
TEST EAX,EAX
SETNZ AL
TEST AL,AL
JNZ 0x00025da8
MOV EAX,dword ptr [ESP + 0x8]
TEST EAX,EAX
JZ 0x00025c4d
CMP byte ptr [ESP + 0x4a],0x0
JNZ 0x00025b80
MOV EAX,dword ptr [EBP + 0x28]
TEST EAX,EAX
JZ 0x0002563f
MOV ECX,dword ptr [ESP + 0x8]
CMP ECX,0x1
JZ 0x0002563f
MOV EDX,dword ptr [ESP + 0x24]
MOV EAX,EBP
CALL 0x000248e0
MOV dword ptr [ESP + 0x24],EAX
JMP 0x0002563f
MOV EDX,dword ptr [EBP + 0x2c]
MOV ECX,EDX
AND ECX,0x10
JZ 0x000257a8
MOV ECX,0x20000
TEST DL,0x1
JNZ 0x00025a70
MOV EAX,EDX
AND EDX,0x204
SHL EAX,0x7
AND EAX,0x40000
OR EAX,ECX
MOV ECX,dword ptr [ESP + 0x20]
MOV ESI,dword ptr [ECX + 0x18]
MOV ECX,0xffffff9c
CMP EDX,0x200
JNZ 0x000257d1
MOV ECX,dword ptr [EBP + 0x1c]
SUB ESP,0x4
OR EAX,0x90900
PUSH EAX
PUSH ESI
PUSH ECX
CALL 0x00029520
MOV dword ptr [ESP + 0x50],EAX
ADD ESP,0x10
TEST EAX,EAX
JS 0x00025c20
SUB ESP,0xc
PUSH dword ptr [ESP + 0x4c]
CALL 0x00012700
ADD ESP,0x10
TEST EAX,EAX
JZ 0x00025d3e
MOV ECX,dword ptr [ESP + 0x20]
CMP word ptr [ECX + 0x3c],0xb
MOV dword ptr [ECX + 0xc],EAX
JZ 0x00025ca8
MOV EAX,dword ptr [EBP + 0x2c]
TEST AH,0x1
JNZ 0x00025bd8
CMP dword ptr [EBP + 0x28],0x1
SBB EAX,EAX
AND EAX,0x186a1
SUB EAX,0x1
CMP dword ptr [ESP + 0x3c],0x2
MOV dword ptr [ESP + 0x34],EAX
JZ 0x00025bc8
MOV EAX,dword ptr [EBP + 0x2c]
AND EAX,0x38
CMP EAX,0x18
JZ 0x00025a86
CMP dword ptr [ESP + 0x3c],0x3
SETZ byte ptr [ESP + 0x8]
TEST byte ptr [EBP + 0x2d],0x2
JNZ 0x00025cbe
SUB ESP,0xc
MOV EAX,EBP
PUSH 0x0
MOV EDI,dword ptr [ESP + 0x30]
MOV ECX,dword ptr [ESP + 0x50]
MOV EDX,EDI
CALL 0x00024e60
ADD ESP,0x10
TEST EAX,EAX
JZ 0x0002521b
MOVZX EDX,word ptr [EDI + 0x3e]
MOV EAX,EDI
MOV ESI,dword ptr [EAX + 0xc]
MOV EDI,EDX
MOV word ptr [ESP + 0xc],DX
OR EDI,0x1
CMP byte ptr [ESP + 0x8],0x0
JZ 0x000258ae
CALL 0x00012590
MOV EDX,dword ptr [ESP + 0x20]
MOV EAX,dword ptr [EAX]
MOV dword ptr [EDX + 0x20],EAX
MOV EAX,dword ptr [ESP + 0x20]
SUB ESP,0xc
MOV word ptr [EAX + 0x3e],DI
PUSH ESI
CALL 0x000128c0
MOV EAX,dword ptr [ESP + 0x30]
ADD ESP,0x10
MOV dword ptr [EAX + 0xc],0x0
MOV EAX,dword ptr [EBP + 0x2c]
TEST AH,0x2
JZ 0x000258ec
MOV EDX,dword ptr [ESP + 0x40]
TEST EDX,EDX
JS 0x000258ec
SUB ESP,0xc
PUSH EDX
CALL 0x000128b0
MOV EAX,dword ptr [EBP + 0x2c]
ADD ESP,0x10
MOV EDX,dword ptr [ESP + 0x20]
MOV byte ptr [ESP + 0x4b],0x0
MOV dword ptr [EDX + 0xc],0x0
JMP 0x00025223
MOV EAX,dword ptr [ESP + 0x20]
MOV EDX,dword ptr [EAX + 0x2c]
TEST byte ptr [EDX + 0x2d],0x2
JZ 0x00025a48
MOV EDI,dword ptr [EDX + 0x30]
TEST EDI,EDI
JZ 0x0002597a
MOV EAX,dword ptr [ESP + 0x20]
SUB ESP,0x8
MOV EDX,dword ptr [EAX + 0x48]
MOV EAX,dword ptr [EAX + 0x44]
MOV dword ptr [ESP + 0x68],EDX
MOV dword ptr [ESP + 0x64],EAX
LEA EAX,[ESP + 0x64]
PUSH EAX
PUSH EDI
CALL 0x0001dce0
ADD ESP,0x10
TEST EAX,EAX
JZ 0x000259b0
MOV EAX,dword ptr [EAX + 0x8]
MOV dword ptr [ESP + 0x8],EAX
CMP dword ptr [ESP + 0x8],0x6969
JZ 0x00025970
CMP dword ptr [ESP + 0x8],0x1021994
JZ 0x00025970
CMP dword ptr [ESP + 0x8],0xff534d42
JNZ 0x00025a48
MOV byte ptr [ESP + 0x4a],0x0
JMP 0x00025473
MOV dword ptr [ESP + 0x8],EDX
LEA EAX,[EBX + 0xfffe96e0]
SUB ESP,0xc
PUSH dword ptr [ESP + 0x58]
PUSH EAX
LEA EAX,[EBX + 0xfffe96b0]
PUSH EAX
PUSH 0x0
PUSH 0xd
CALL 0x0001df90
MOV EDX,dword ptr [ESP + 0x28]
ADD ESP,0x20
MOV EDI,EAX
MOV dword ptr [EDX + 0x30],EAX
TEST EAX,EAX
JNZ 0x00025920
MOV ECX,dword ptr [ESP + 0x40]
TEST ECX,ECX
JS 0x00025a48
SUB ESP,0x8
LEA EAX,[ESP + 0x70]
PUSH EAX
PUSH dword ptr [ESP + 0x4c]
CALL 0x000124a0
ADD ESP,0x10
TEST EAX,EAX
JNZ 0x00025a48
MOV EAX,dword ptr [ESP + 0x68]
MOV dword ptr [ESP + 0x8],EAX
TEST EDI,EDI
JZ 0x0002594e
SUB ESP,0xc
PUSH 0xc
CALL 0x000123e0
ADD ESP,0x10
MOV ECX,EAX
TEST EAX,EAX
JZ 0x0002594e
MOV EAX,dword ptr [ESP + 0x20]
SUB ESP,0x8
MOV EDX,dword ptr [EAX + 0x48]
MOV EAX,dword ptr [EAX + 0x44]
MOV dword ptr [ECX + 0x4],EDX
MOV EDX,dword ptr [ESP + 0x10]
MOV dword ptr [ECX],EAX
MOV dword ptr [ESP + 0x10],ECX
MOV dword ptr [ECX + 0x8],EDX
PUSH ECX
PUSH EDI
CALL 0x0001e8d0
ADD ESP,0x10
TEST EAX,EAX
JZ 0x00025ed4
CMP dword ptr [ESP + 0x8],EAX
JNZ 0x000129d8
MOV EAX,dword ptr [ESP + 0x68]
MOV dword ptr [ESP + 0x8],EAX
JMP 0x0002594e
MOV byte ptr [ESP + 0x4a],0x1
JMP 0x00025473
MOV EAX,dword ptr [EBX + EDX*0x4 + 0xffff6560]
XOR EDX,EDX
MOV dword ptr [ESI + 0x54],EAX
MOV EAX,0x1
JMP 0x000252b6
MOV EAX,dword ptr [ESP + 0x20]
MOV ECX,dword ptr [EAX + 0x30]
MOV EAX,0x20000
TEST ECX,ECX
CMOVNZ ECX,EAX
JMP 0x000257a8
MOV EAX,dword ptr [ESP + 0x20]
CMP dword ptr [EAX + 0x58],0x2
JNZ 0x00025851
MOV EDX,dword ptr [ESP + 0x40]
CALL 0x00024ca0
TEST EAX,EAX
JZ 0x00025851
CMP dword ptr [ESP + 0x3c],0x3
JNZ 0x00025bc8
MOV byte ptr [ESP + 0x8],0x0
JMP 0x0002585b
MOV EAX,dword ptr [EBP + 0x4]
MOV ECX,dword ptr [EBP + 0x14]
TEST EAX,EAX
JZ 0x00025aef
LEA ESI,[ESI]
MOV EDX,dword ptr [EAX + 0x18]
LEA ESI,[EAX + 0xa4]
CMP EDX,ESI
JZ 0x00025b48
SUB EDX,dword ptr [EAX + 0x1c]
MOV dword ptr [EAX + 0x1c],ECX
ADD EDX,ECX
MOV dword ptr [EAX + 0x18],EDX
MOV EAX,dword ptr [EAX + 0x8]
TEST EAX,EAX
JNZ 0x00025ad0
MOV EDX,dword ptr [ESP + 0x24]
MOV EAX,EDX
MOV EDX,dword ptr [EDX + 0x30]
TEST EDX,EDX
JS 0x000256e9
MOV EDX,dword ptr [EAX + 0x18]
LEA ESI,[EAX + 0xa4]
CMP EDX,ESI
JZ 0x00025b15
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 0x00025b30
MOV EAX,dword ptr [EDX + 0x30]
TEST EAX,EAX
JS 0x000256e9
MOV EAX,EDX
JMP 0x00025b00
MOV EDX,dword ptr [EAX + 0x4]
MOV EAX,dword ptr [EDX + 0x30]
TEST EAX,EAX
JS 0x000256e9
MOV EAX,EDX
JMP 0x00025b00
MOV dword ptr [EAX + 0x1c],ECX
MOV EAX,dword ptr [EAX + 0x8]
TEST EAX,EAX
JNZ 0x00025ad0
JMP 0x00025aef
SUB ESP,0xc
PUSH dword ptr [EBP + 0x14]
CALL 0x00012970
MOV EAX,dword ptr [ESP + 0x38]
MOV dword ptr [EBP + 0x14],0x0
ADD ESP,0x10
MOV EDI,dword ptr [EAX]
JMP 0x000255a6
LEA EAX,[EBX + 0xfffe9700]
MOV ECX,dword ptr [ESP + 0x8]
MOV EDX,dword ptr [ESP + 0x24]
MOV dword ptr [EBP + 0x28],EAX
MOV EAX,EBP
CALL 0x000248e0
MOV dword ptr [EBP + 0x28],0x0
MOV dword ptr [ESP + 0x24],EAX
JMP 0x0002563f
MOV dword ptr [ESP + 0x34],0x186a0
MOV EAX,dword ptr [EBP + 0x2c]
MOV byte ptr [ESP + 0x4b],0x1
JMP 0x00025223
MOV byte ptr [ESP + 0x4b],0x0
MOV EAX,dword ptr [EBP + 0x2c]
JMP 0x00025223
LEA ESI,[EBP + 0x34]
MOV EDI,ECX
MOV EDX,ESI
CALL 0x00024aa0
XOR ECX,ECX
MOV EDX,EDI
MOV EAX,EBP
CALL 0x00024740
MOV EAX,dword ptr [EBP + 0x2c]
MOV ECX,EDI
MOV EDX,ESI
CALL 0x000249d0
TEST AL,AL
JNZ 0x00025825
CALL 0x00012590
MOV dword ptr [ESP + 0x24],0x0
MOV dword ptr [EAX],0xc
JMP 0x0002563f
MOV EAX,dword ptr [ESP + 0x20]
MOV dword ptr [EAX + 0xc],0x0
CMP dword ptr [ESP + 0x3c],0x3
JZ 0x00025d8c
LEA ESI,[ESI]
LEA ESI,[ESI]
MOV dword ptr [ESP + 0x24],0x0
JMP 0x0002563f
CMP dword ptr [ESP + 0x3c],0x3
JZ 0x00025e12
MOV EAX,dword ptr [ESP + 0x24]
MOV ESI,dword ptr [ESP + 0x24]
TEST EAX,EAX
JZ 0x00025c40
MOV EAX,dword ptr [ESI + 0xc]
MOV EDI,dword ptr [ESI + 0x8]
TEST EAX,EAX
JZ 0x00025c94
NOP
SUB ESP,0xc
PUSH EAX
CALL 0x000128c0
MOV dword ptr [ESP],ESI
CALL 0x00012970
ADD ESP,0x10
TEST EDI,EDI
JZ 0x00025c40
MOV ESI,EDI
MOV EAX,dword ptr [ESI + 0xc]
MOV EDI,dword ptr [ESI + 0x8]
TEST EAX,EAX
JNZ 0x00025c70
SUB ESP,0xc
PUSH ESI
CALL 0x00012970
ADD ESP,0x10
TEST EDI,EDI
JZ 0x00025c40
MOV ESI,EDI
JMP 0x00025c8a
MOV EDI,ECX
MOV EAX,EBP
XOR ECX,ECX
MOV EDX,EDI
CALL 0x00024740
MOV word ptr [EDI + 0x3c],AX
JMP 0x00025825
SUB ESP,0x4
PUSH 0x3
PUSH 0x406
PUSH dword ptr [ESP + 0x4c]
CALL 0x000243f0
MOV dword ptr [ESP + 0x50],EAX
ADD ESP,0x10
TEST EAX,EAX
JNS 0x00025865
MOV EAX,dword ptr [ESP + 0x20]
MOVZX EDX,word ptr [EAX + 0x3e]
MOV ESI,dword ptr [EAX + 0xc]
MOV EDI,EDX
MOV word ptr [ESP + 0xc],DX
OR EDI,0x1
CMP byte ptr [ESP + 0x8],0x0
JNZ 0x000258a0
SUB ESP,0xc
MOV word ptr [EAX + 0x3e],DI
PUSH ESI
CALL 0x000128c0
ADD ESP,0x10
MOV EAX,dword ptr [EBP + 0x2c]
JMP 0x000258ec
SUB ESP,0xc
MOV EDX,dword ptr [EAX + 0x4]
LEA EAX,[EBX + 0xffff3141]
MOV ECX,0xffffffff
PUSH EAX
MOV EAX,EBP
CALL 0x00024e60
ADD ESP,0x10
TEST EAX,EAX
SETNZ AL
JMP 0x00025745
CALL 0x00012590
SUB ESP,0xc
MOV EDI,dword ptr [EAX]
PUSH dword ptr [ESP + 0x4c]
MOV ESI,EAX
CALL 0x000128b0
MOV EAX,dword ptr [ESP + 0x30]
MOV dword ptr [ESI],EDI
ADD ESP,0x10
MOV dword ptr [EAX + 0xc],0x0
JMP 0x00025c2b
SUB ESP,0xc
MOV EDI,dword ptr [ESP + 0x2c]
PUSH dword ptr [EDI + 0xc]
CALL 0x000128c0
ADD ESP,0x10
MOV dword ptr [EDI + 0xc],0x0
CMP dword ptr [ESP + 0x3c],0x3
JNZ 0x00025c40
MOV EDI,dword ptr [ESP + 0x20]
MOV ESI,0x4
MOV word ptr [EDI + 0x3c],SI
CALL 0x00012590
MOV EAX,dword ptr [EAX]
MOV dword ptr [EDI + 0x20],EAX
JMP 0x00025c40
MOV EAX,dword ptr [ESP + 0x20]
MOV ECX,dword ptr [ESP + 0x24]
MOV EDX,0x7
MOV ESI,dword ptr [ESP + 0x24]
MOV word ptr [EAX + 0x3c],DX
OR dword ptr [EBP + 0x2c],0x4000
TEST ECX,ECX
JZ 0x00025c40
LEA ESI,[ESI]
MOV EAX,dword ptr [ESI + 0xc]
MOV EDI,dword ptr [ESI + 0x8]
TEST EAX,EAX
JZ 0x00025dfa
SUB ESP,0xc
PUSH EAX
CALL 0x000128c0
MOV dword ptr [ESP],ESI
CALL 0x00012970
ADD ESP,0x10
TEST EDI,EDI
JZ 0x00025c40
MOV ESI,EDI
JMP 0x00025dd0
SUB ESP,0xc
PUSH ESI
CALL 0x00012970
ADD ESP,0x10
TEST EDI,EDI
JZ 0x00025c40
MOV ESI,EDI
JMP 0x00025dd0
MOV EDX,dword ptr [ESP + 0x20]
MOVZX EAX,word ptr [EDX + 0x3c]
CMP AX,0x4
JZ 0x00025c58
CMP AX,0x7
JZ 0x00025c58
MOV EAX,0x6
MOV word ptr [EDX + 0x3c],AX
JMP 0x00025c58
SUB ESP,0xc
PUSH ESI
CALL 0x00012970
ADD ESP,0x10
MOV ESI,dword ptr [ESP + 0x24]
TEST ESI,ESI
JZ 0x00025e94
MOV ESI,dword ptr [ESP + 0x24]
MOV EAX,dword ptr [ESI + 0xc]
MOV EDI,dword ptr [ESI + 0x8]
TEST EAX,EAX
JZ 0x00025e84
NOP
SUB ESP,0xc
PUSH EAX
CALL 0x000128c0
MOV dword ptr [ESP],ESI
CALL 0x00012970
ADD ESP,0x10
TEST EDI,EDI
JZ 0x00025e94
MOV ESI,EDI
MOV EAX,dword ptr [ESI + 0xc]
MOV EDI,dword ptr [ESI + 0x8]
TEST EAX,EAX
JNZ 0x00025e60
SUB ESP,0xc
PUSH ESI
CALL 0x00012970
ADD ESP,0x10
TEST EDI,EDI
JNZ 0x00025e78
SUB ESP,0xc
MOV EDI,dword ptr [ESP + 0x2c]
PUSH dword ptr [EDI + 0xc]
CALL 0x000128c0
MOV EAX,dword ptr [ESP + 0x38]
ADD ESP,0x10
MOV ECX,0x7
MOV dword ptr [EDI + 0xc],0x0
MOV word ptr [EDI + 0x3c],CX
MOV dword ptr [ESP + 0x24],0x0
OR dword ptr [EBP + 0x2c],0x4000
MOV dword ptr [EAX],0x24
JMP 0x0002563f
SUB ESP,0xc
PUSH dword ptr [ESP + 0x14]
CALL 0x00012970
MOV EAX,dword ptr [ESP + 0x78]
MOV dword ptr [ESP + 0x18],EAX
ADD ESP,0x10
JMP 0x0002594e
CALL 0x0002d5d0
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nvoid * __regparm3 FUN_000251b0(int *param_1,int param_2)\n\n{\n  void *pvVar1;\n  int iVar2;\n  void *__ptr;\n  bool bVar3;\n  bool bVar4;\n  __ino64_t _Var5;\n  undefined *puVar6;\n  char cVar7;\n  undefined2 uVar8;\n  int *piVar9;\n  dirent64 *pdVar10;\n  size_t __n;\n  void *pvVar11;\n  undefined4 uVar12;\n  uint uVar13;\n  void *pvVar14;\n  int iVar15;\n  DIR *pDVar16;\n  int iVar17;\n  int iVar18;\n  int iVar19;\n  undefined4 *__ptr_00;\n  undefined4 *puVar20;\n  DIR *pDVar21;\n  uint uVar22;\n  uint uVar23;\n  ushort uVar24;\n  int in_GS_OFFSET;\n  bool bVar25;\n  uint local_d4;\n  uint local_d0;\n  void *local_c4;\n  void *local_b8;\n  uint local_b0;\n  uint local_a8;\n  undefined1 *local_a4;\n  int local_9c;\n  undefined4 local_80;\n  undefined4 local_7c;\n  statfs64 local_74;\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x251bb;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  iVar2 = *param_1;\n  pDVar21 = *(DIR **)(iVar2 + 0xc);\n  if (pDVar21 == (DIR *)0x0) {\n    uVar13 = param_1[0xb];\n    uVar23 = uVar13 & 0x10;\n    if (((uVar23 != 0) && (uVar23 = 0x20000, (uVar13 & 1) != 0)) &&\n       (uVar23 = *(uint *)(iVar2 + 0x30), uVar23 != 0)) {\n      uVar23 = 0x20000;\n    }\n    iVar15 = -100;\n    if ((uVar13 & 0x204) == 0x200) {\n      iVar15 = param_1[7];\n    }\n    local_9c = FUN_00029520(iVar15,*(undefined4 *)(iVar2 + 0x18),\n                            (uVar13 & 0x800) << 7 | uVar23 | 0x90900);\n    if (local_9c < 0) {\n      *(undefined4 *)(iVar2 + 0xc) = 0;\n    }\n    else {\n      pDVar16 = fdopendir(local_9c);\n      if (pDVar16 != (DIR *)0x0) {\n        *(DIR **)(iVar2 + 0xc) = pDVar16;\n        if (*(short *)(iVar2 + 0x3c) == 0xb) {\n          uVar8 = FUN_00024740();\n          *(undefined2 *)(iVar2 + 0x3c) = uVar8;\n        }\n        else if ((param_1[0xb] & 0x100U) != 0) {\n          FUN_00024aa0();\n          FUN_00024740();\n          cVar7 = FUN_000249d0();\n          if (cVar7 == '\0') {\n            piVar9 = __errno_location();\n            local_b8 = (void *)0x0;\n            *piVar9 = 0xc;\n            goto LAB_0002563f;\n          }\n        }\n        local_a8 = (-(uint)(param_1[10] == 0) & 0x186a1) - 1;\n        if (param_2 == 2) {\nLAB_00025bc8:\n          bVar25 = false;\n          uVar13 = param_1[0xb];\n          goto LAB_00025223;\n        }\n        if ((((param_1[0xb] & 0x38U) == 0x18) && (*(int *)(iVar2 + 0x58) == 2)) &&\n           (iVar15 = FUN_00024ca0(), iVar15 != 0)) {\n          if (param_2 != 3) goto LAB_00025bc8;\n          bVar25 = false;\n        }\n        else {\n          bVar25 = param_2 == 3;\n        }\n        if (((*(byte *)((int)param_1 + 0x2d) & 2) == 0) ||\n           (local_9c = FUN_000243f0(local_9c,0x406,3), -1 < local_9c)) {\n          iVar15 = FUN_00024e60(0);\n          if (iVar15 == 0) goto LAB_0002521b;\n          pDVar16 = *(DIR **)(iVar2 + 0xc);\n          uVar24 = *(ushort *)(iVar2 + 0x3e) | 1;\n          if (bVar25) goto LAB_000258a0;\nLAB_000258ae:\n          *(ushort *)(iVar2 + 0x3e) = uVar24;\n          closedir(pDVar16);\n          *(undefined4 *)(iVar2 + 0xc) = 0;\n          uVar13 = param_1[0xb];\n          if (((uVar13 & 0x200) != 0) && (-1 < local_9c)) {\n            close(local_9c);\n            uVar13 = param_1[0xb];\n          }\n        }\n        else {\n          pDVar16 = *(DIR **)(iVar2 + 0xc);\n          uVar24 = *(ushort *)(iVar2 + 0x3e) | 1;\n          if (bVar25) {\nLAB_000258a0:\n            piVar9 = __errno_location();\n            *(int *)(iVar2 + 0x20) = *piVar9;\n            goto LAB_000258ae;\n          }\n          *(ushort *)(iVar2 + 0x3e) = uVar24;\n          closedir(pDVar16);\n          uVar13 = param_1[0xb];\n        }\n        bVar25 = false;\n        *(undefined4 *)(iVar2 + 0xc) = 0;\n        goto LAB_00025223;\n      }\n      piVar9 = __errno_location();\n      iVar15 = *piVar9;\n      close(local_9c);\n      *piVar9 = iVar15;\n      *(undefined4 *)(iVar2 + 0xc) = 0;\n    }\njoined_r0x00025c30:\n    if (param_2 == 3) {\n      *(undefined2 *)(iVar2 + 0x3c) = 4;\n      piVar9 = __errno_location();\n      *(int *)(iVar2 + 0x20) = *piVar9;\n    }\nLAB_00025c40:\n    local_b8 = (void *)0x0;\n  }\n  else {\n    local_9c = dirfd(pDVar21);\n    if (local_9c < 0) {\n      closedir(*(DIR **)(iVar2 + 0xc));\n      *(undefined4 *)(iVar2 + 0xc) = 0;\n      goto joined_r0x00025c30;\n    }\n    if (param_1[10] == 0) {\n      local_a8 = 100000;\n      uVar13 = param_1[0xb];\n      bVar25 = true;\n    }\n    else {\n      local_a8 = 0xffffffff;\nLAB_0002521b:\n      bVar25 = true;\n      uVar13 = param_1[0xb];\n    }\nLAB_00025223:\n    uVar23 = *(uint *)(iVar2 + 0x28);\n    uVar22 = uVar23 - 1;\n    local_d0 = uVar23;\n    if (*(char *)(*(int *)(iVar2 + 0x1c) + -1 + uVar23) != '/') {\n      local_d0 = uVar23 + 1;\n      uVar22 = uVar23;\n    }\n    local_a4 = (undefined1 *)0x0;\n    if ((uVar13 & 4) != 0) {\n      local_a4 = (undefined1 *)(uVar22 + param_1[5]) + 1;\n      *(undefined1 *)(uVar22 + param_1[5]) = 0x2f;\n    }\n    puVar6 = PTR_free_0003afa8;\n    local_b0 = param_1[8] - local_d0;\n    bVar4 = false;\n    bVar3 = false;\n    iVar15 = *(int *)(iVar2 + 0x30);\n    local_c4 = (void *)0x0;\n    local_d4 = 0;\n    local_b8 = (void *)0x0;\nLAB_000252fb:\n    do {\n      do {\n        pDVar16 = *(DIR **)(iVar2 + 0xc);\n        if (pDVar16 == (DIR *)0x0) goto LAB_000256de;\n        piVar9 = __errno_location();\n        *piVar9 = 0;\n        pdVar10 = readdir64(pDVar16);\n        if (pdVar10 == (dirent64 *)0x0) {\n          if (*piVar9 != 0) {\n            *(int *)(iVar2 + 0x20) = *piVar9;\n            *(ushort *)(iVar2 + 0x3c) =\n                 (-(ushort)(pDVar21 == (DIR *)0x0 && local_d4 == 0) & 0xfffd) + 7;\n          }\n          if (*(DIR **)(iVar2 + 0xc) != (DIR *)0x0) {\n            closedir(*(DIR **)(iVar2 + 0xc));\n            *(undefined4 *)(iVar2 + 0xc) = 0;\n          }\n          goto LAB_000256de;\n        }\n      } while ((((*(byte *)(param_1 + 0xb) & 0x20) == 0) && (pdVar10->d_name[0] == '.')) &&\n              ((pdVar10->d_name[1] == '\0' || (*(short *)(pdVar10->d_name + 1) == 0x2e))));\n      __n = strlen(pdVar10->d_name);\n      pvVar11 = malloc(__n + 0xa8 & 0xfffffffc);\n      if (pvVar11 == (void *)0x0) {\n        iVar15 = *piVar9;\nLAB_000255a6:\n        free(pvVar11);\n        if (local_b8 != (void *)0x0) {\n          pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n          pvVar11 = *(void **)((int)local_b8 + 8);\n          if (pDVar21 == (DIR *)0x0) goto LAB_000255f4;\n          do {\n            closedir(pDVar21);\n            free(local_b8);\n            local_b8 = pvVar11;\n            while( true ) {\n              if (local_b8 == (void *)0x0) goto LAB_00025608;\n              pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n              pvVar11 = *(void **)((int)local_b8 + 8);\n              if (pDVar21 != (DIR *)0x0) break;\nLAB_000255f4:\n              free(local_b8);\n              local_b8 = pvVar11;\n            }\n          } while( true );\n        }\nLAB_00025608:\n        closedir(*(DIR **)(iVar2 + 0xc));\n        *(undefined4 *)(iVar2 + 0xc) = 0;\n        *(undefined2 *)(iVar2 + 0x3c) = 7;\n        local_b8 = (void *)0x0;\n        param_1[0xb] = param_1[0xb] | 0x4000;\n        *piVar9 = iVar15;\n        goto LAB_0002563f;\n      }\n      pvVar1 = (void *)((int)pvVar11 + 0xa4);\n      memcpy(pvVar1,pdVar10->d_name,__n);\n      __ptr = (void *)param_1[5];\n      *(undefined1 *)((int)pvVar11 + __n + 0xa4) = 0;\n      *(size_t *)((int)pvVar11 + 0x34) = __n;\n      *(int **)((int)pvVar11 + 0x2c) = param_1;\n      *(void **)((int)pvVar11 + 0x1c) = __ptr;\n      *(undefined4 *)((int)pvVar11 + 0x20) = 0;\n      *(undefined4 *)((int)pvVar11 + 0xc) = 0;\n      *(undefined4 *)((int)pvVar11 + 0x3e) = 0x30000;\n      *(undefined4 *)((int)pvVar11 + 0x10) = 0;\n      *(undefined4 *)((int)pvVar11 + 0x14) = 0;\n      if (local_b0 <= __n) {\n        uVar13 = local_d0 + 0x101 + param_1[8] + __n;\n        if (uVar13 < (uint)param_1[8]) {\n          iVar15 = 0x24;\n          free(__ptr);\n          param_1[5] = 0;\n          *piVar9 = 0x24;\n        }\n        else {\n          param_1[8] = uVar13;\n          pvVar14 = realloc(__ptr,uVar13);\n          if (pvVar14 != (void *)0x0) {\n            param_1[5] = (int)pvVar14;\n            if ((__ptr != pvVar14) && (bVar3 = true, (*(byte *)(param_1 + 0xb) & 4) != 0)) {\n              local_a4 = (undefined1 *)((int)pvVar14 + local_d0);\n            }\n            local_b0 = param_1[8] - local_d0;\n            goto LAB_000253d8;\n          }\n          free((void *)param_1[5]);\n          param_1[5] = 0;\n          iVar15 = *piVar9;\n        }\n        goto LAB_000255a6;\n      }\nLAB_000253d8:\n      if (CARRY4(__n,local_d0)) {\n        free(pvVar11);\n        if (local_b8 != (void *)0x0) {\n          pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n          pvVar11 = *(void **)((int)local_b8 + 8);\n          if (pDVar21 == (DIR *)0x0) goto LAB_00025e84;\n          do {\n            closedir(pDVar21);\n            free(local_b8);\n            local_b8 = pvVar11;\n            while( true ) {\n              if (local_b8 == (void *)0x0) goto LAB_00025e94;\n              pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n              pvVar11 = *(void **)((int)local_b8 + 8);\n              if (pDVar21 != (DIR *)0x0) break;\nLAB_00025e84:\n              free(local_b8);\n              local_b8 = pvVar11;\n            }\n          } while( true );\n        }\nLAB_00025e94:\n        closedir(*(DIR **)(iVar2 + 0xc));\n        *(undefined4 *)(iVar2 + 0xc) = 0;\n        *(undefined2 *)(iVar2 + 0x3c) = 7;\n        local_b8 = (void *)0x0;\n        param_1[0xb] = param_1[0xb] | 0x4000;\n        *piVar9 = 0x24;\n        goto LAB_0002563f;\n      }\n      uVar12 = *(undefined4 *)((int)&pdVar10->d_ino + 4);\n      *(size_t *)((int)pvVar11 + 0x28) = __n + local_d0;\n      *(int *)((int)pvVar11 + 0x30) = iVar15 + 1;\n      *(int *)((int)pvVar11 + 4) = *param_1;\n      _Var5 = pdVar10->d_ino;\n      *(undefined4 *)((int)pvVar11 + 0xa0) = uVar12;\n      *(int *)((int)pvVar11 + 0x9c) = (int)_Var5;\n      uVar13 = param_1[0xb];\n      if ((uVar13 & 4) == 0) {\n        *(void **)((int)pvVar11 + 0x18) = pvVar1;\n      }\n      else {\n        *(undefined4 *)((int)pvVar11 + 0x18) = *(undefined4 *)((int)pvVar11 + 0x1c);\n        memmove(local_a4,pvVar1,*(int *)((int)pvVar11 + 0x34) + 1);\n        uVar13 = param_1[0xb];\n      }\n      if ((param_1[10] == 0) || ((uVar13 & 0x400) != 0)) {\n        uVar23 = pdVar10->d_type - 1;\n        if (((uVar13 & 0x18) == 0x18) && ((pdVar10->d_type & 0xfb) != 0)) {\n          *(undefined2 *)((int)pvVar11 + 0x3c) = 0xb;\n          if (uVar23 < 0xc) {\n            *(undefined4 *)((int)pvVar11 + 0x54) = *(undefined4 *)(&DAT_00031560 + uVar23 * 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 (uVar23 < 0xc) {\n            *(undefined4 *)((int)pvVar11 + 0x54) = *(undefined4 *)(&DAT_00031560 + uVar23 * 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        uVar8 = FUN_00024740();\n        *(undefined2 *)((int)pvVar11 + 0x3c) = uVar8;\n      }\n      *(undefined4 *)((int)pvVar11 + 8) = 0;\n      pvVar1 = pvVar11;\n      if (local_b8 != (void *)0x0) {\n        *(void **)((int)local_c4 + 8) = pvVar11;\n        pvVar1 = local_b8;\n      }\n      local_b8 = pvVar1;\n      local_c4 = pvVar11;\n      if (local_d4 == 10000) {\n        if (param_1[10] == 0) {\n          iVar17 = *(int *)(iVar2 + 0x2c);\n          if ((*(byte *)(iVar17 + 0x2d) & 2) != 0) {\n            iVar18 = *(int *)(iVar17 + 0x30);\n            if (iVar18 == 0) {\n              iVar18 = FUN_0001df90(0xd,0,FUN_000246b0,FUN_000246e0,puVar6);\n              *(int *)(iVar17 + 0x30) = iVar18;\n              if (iVar18 != 0) goto LAB_00025920;\nLAB_000259b0:\n              if ((local_9c < 0) ||\n                 (iVar19 = fstatfs64(local_9c,&local_74), iVar17 = local_74.f_type, iVar19 != 0))\n              goto LAB_00025a48;\n              local_d4 = local_74.f_type;\n              if ((iVar18 != 0) &&\n                 (__ptr_00 = (undefined4 *)malloc(0xc), __ptr_00 != (undefined4 *)0x0)) {\n                uVar12 = *(undefined4 *)(iVar2 + 0x44);\n                __ptr_00[1] = *(undefined4 *)(iVar2 + 0x48);\n                *__ptr_00 = uVar12;\n                __ptr_00[2] = iVar17;\n                puVar20 = (undefined4 *)FUN_0001e8d0(iVar18,__ptr_00);\n                if (puVar20 == (undefined4 *)0x0) {\n                  free(__ptr_00);\n                  local_d4 = local_74.f_type;\n                }\n                else {\n                  if (__ptr_00 != puVar20) {\n                    /* WARNING: Subroutine does not return */\n                    abort();\n                  }\n                  local_d4 = local_74.f_type;\n                }\n              }\n            }\n            else {\nLAB_00025920:\n              local_7c = *(undefined4 *)(iVar2 + 0x48);\n              local_80 = *(undefined4 *)(iVar2 + 0x44);\n              iVar17 = FUN_0001dce0(iVar18,&local_80);\n              if (iVar17 == 0) goto LAB_000259b0;\n              local_d4 = *(int *)(iVar17 + 8);\n            }\n            if (((local_d4 == 0x6969) || (local_d4 == 0x1021994)) || (local_d4 == -0xacb2be)) {\n              bVar4 = false;\n              goto LAB_00025473;\n            }\n          }\nLAB_00025a48:\n          bVar4 = true;\n        }\nLAB_00025473:\n        local_d4 = 0x2711;\n        goto LAB_000252fb;\n      }\n      local_d4 = local_d4 + 1;\n    } while (local_d4 < local_a8);\nLAB_000256de:\n    if (bVar3) {\n      iVar15 = param_1[5];\n      for (iVar17 = param_1[1]; iVar17 != 0; iVar17 = *(int *)(iVar17 + 8)) {\n        while (*(int *)(iVar17 + 0x18) != iVar17 + 0xa4) {\n          iVar18 = *(int *)(iVar17 + 0x1c);\n          *(int *)(iVar17 + 0x1c) = iVar15;\n          *(int *)(iVar17 + 0x18) = (*(int *)(iVar17 + 0x18) - iVar18) + iVar15;\n          iVar17 = *(int *)(iVar17 + 8);\n          if (iVar17 == 0) goto LAB_00025aef;\n        }\n        *(int *)(iVar17 + 0x1c) = iVar15;\n      }\nLAB_00025aef:\n      iVar17 = *(int *)((int)local_b8 + 0x30);\n      pvVar11 = local_b8;\n      while (-1 < iVar17) {\n        while( true ) {\n          if (*(int *)((int)pvVar11 + 0x18) != (int)pvVar11 + 0xa4) {\n            *(int *)((int)pvVar11 + 0x18) =\n                 (*(int *)((int)pvVar11 + 0x18) - *(int *)((int)pvVar11 + 0x1c)) + iVar15;\n          }\n          pvVar1 = *(void **)((int)pvVar11 + 8);\n          *(int *)((int)pvVar11 + 0x1c) = iVar15;\n          if (pvVar1 == (void *)0x0) break;\n          pvVar11 = pvVar1;\n          if (*(int *)((int)pvVar1 + 0x30) < 0) goto LAB_000256e9;\n        }\n        pvVar11 = *(void **)((int)pvVar11 + 4);\n        iVar17 = *(int *)((int)pvVar11 + 0x30);\n      }\n    }\nLAB_000256e9:\n    if ((*(byte *)(param_1 + 0xb) & 4) != 0) {\n      if ((param_1[8] == local_d0) || (local_d4 == 0)) {\n        local_a4 = local_a4 + -1;\n      }\n      *local_a4 = 0;\n    }\n    if ((pDVar21 == (DIR *)0x0) && (bVar25)) {\n      if ((param_2 == 1) || (local_d4 == 0)) {\n        if (*(int *)(iVar2 + 0x30) == 0) {\n          iVar15 = FUN_00024bb0();\n        }\n        else {\n          iVar15 = FUN_00024e60(&DAT_0002e141);\n        }\n        if (iVar15 != 0) {\n          *(undefined2 *)(iVar2 + 0x3c) = 7;\n          param_1[0xb] = param_1[0xb] | 0x4000;\n          while (pvVar11 = local_b8, local_b8 != (void *)0x0) {\n            while( true ) {\n              local_b8 = *(void **)((int)pvVar11 + 8);\n              if (*(DIR **)((int)pvVar11 + 0xc) == (DIR *)0x0) break;\n              closedir(*(DIR **)((int)pvVar11 + 0xc));\n              free(pvVar11);\n              pvVar11 = local_b8;\n              if (local_b8 == (void *)0x0) goto LAB_00025c40;\n            }\n            free(pvVar11);\n          }\n          goto LAB_00025c40;\n        }\n        goto LAB_0002574d;\n      }\n    }\n    else {\nLAB_0002574d:\n      if (local_d4 == 0) {\n        if (((param_2 == 3) && (*(short *)(iVar2 + 0x3c) != 4)) && (*(short *)(iVar2 + 0x3c) != 7))\n        {\n          *(undefined2 *)(iVar2 + 0x3c) = 6;\n        }\n        if (local_b8 != (void *)0x0) {\n          pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n          pvVar11 = *(void **)((int)local_b8 + 8);\n          if (pDVar21 == (DIR *)0x0) goto LAB_00025c94;\n          do {\n            closedir(pDVar21);\n            free(local_b8);\n            local_b8 = pvVar11;\n            while( true ) {\n              if (local_b8 == (void *)0x0) goto LAB_00025c40;\n              pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n              pvVar11 = *(void **)((int)local_b8 + 8);\n              if (pDVar21 != (DIR *)0x0) break;\nLAB_00025c94:\n              free(local_b8);\n              local_b8 = pvVar11;\n            }\n          } while( true );\n        }\n        goto LAB_00025c40;\n      }\n    }\n    if (bVar4) {\n      param_1[10] = (int)FUN_00024700;\n      local_b8 = (void *)FUN_000248e0();\n      param_1[10] = 0;\n    }\n    else if ((param_1[10] != 0) && (local_d4 != 1)) {\n      local_b8 = (void *)FUN_000248e0();\n    }\n  }\nLAB_0002563f:\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return local_b8;\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_0002d5d0();\n}\n\n" comment (function_definition "void * __regparm3 FUN_000251b0(int *param_1,int param_2)\n\n{\n  void *pvVar1;\n  int iVar2;\n  void *__ptr;\n  bool bVar3;\n  bool bVar4;\n  __ino64_t _Var5;\n  undefined *puVar6;\n  char cVar7;\n  undefined2 uVar8;\n  int *piVar9;\n  dirent64 *pdVar10;\n  size_t __n;\n  void *pvVar11;\n  undefined4 uVar12;\n  uint uVar13;\n  void *pvVar14;\n  int iVar15;\n  DIR *pDVar16;\n  int iVar17;\n  int iVar18;\n  int iVar19;\n  undefined4 *__ptr_00;\n  undefined4 *puVar20;\n  DIR *pDVar21;\n  uint uVar22;\n  uint uVar23;\n  ushort uVar24;\n  int in_GS_OFFSET;\n  bool bVar25;\n  uint local_d4;\n  uint local_d0;\n  void *local_c4;\n  void *local_b8;\n  uint local_b0;\n  uint local_a8;\n  undefined1 *local_a4;\n  int local_9c;\n  undefined4 local_80;\n  undefined4 local_7c;\n  statfs64 local_74;\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x251bb;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  iVar2 = *param_1;\n  pDVar21 = *(DIR **)(iVar2 + 0xc);\n  if (pDVar21 == (DIR *)0x0) {\n    uVar13 = param_1[0xb];\n    uVar23 = uVar13 & 0x10;\n    if (((uVar23 != 0) && (uVar23 = 0x20000, (uVar13 & 1) != 0)) &&\n       (uVar23 = *(uint *)(iVar2 + 0x30), uVar23 != 0)) {\n      uVar23 = 0x20000;\n    }\n    iVar15 = -100;\n    if ((uVar13 & 0x204) == 0x200) {\n      iVar15 = param_1[7];\n    }\n    local_9c = FUN_00029520(iVar15,*(undefined4 *)(iVar2 + 0x18),\n                            (uVar13 & 0x800) << 7 | uVar23 | 0x90900);\n    if (local_9c < 0) {\n      *(undefined4 *)(iVar2 + 0xc) = 0;\n    }\n    else {\n      pDVar16 = fdopendir(local_9c);\n      if (pDVar16 != (DIR *)0x0) {\n        *(DIR **)(iVar2 + 0xc) = pDVar16;\n        if (*(short *)(iVar2 + 0x3c) == 0xb) {\n          uVar8 = FUN_00024740();\n          *(undefined2 *)(iVar2 + 0x3c) = uVar8;\n        }\n        else if ((param_1[0xb] & 0x100U) != 0) {\n          FUN_00024aa0();\n          FUN_00024740();\n          cVar7 = FUN_000249d0();\n          if (cVar7 == '\0') {\n            piVar9 = __errno_location();\n            local_b8 = (void *)0x0;\n            *piVar9 = 0xc;\n            goto LAB_0002563f;\n          }\n        }\n        local_a8 = (-(uint)(param_1[10] == 0) & 0x186a1) - 1;\n        if (param_2 == 2) {\nLAB_00025bc8:\n          bVar25 = false;\n          uVar13 = param_1[0xb];\n          goto LAB_00025223;\n        }\n        if ((((param_1[0xb] & 0x38U) == 0x18) && (*(int *)(iVar2 + 0x58) == 2)) &&\n           (iVar15 = FUN_00024ca0(), iVar15 != 0)) {\n          if (param_2 != 3) goto LAB_00025bc8;\n          bVar25 = false;\n        }\n        else {\n          bVar25 = param_2 == 3;\n        }\n        if (((*(byte *)((int)param_1 + 0x2d) & 2) == 0) ||\n           (local_9c = FUN_000243f0(local_9c,0x406,3), -1 < local_9c)) {\n          iVar15 = FUN_00024e60(0);\n          if (iVar15 == 0) goto LAB_0002521b;\n          pDVar16 = *(DIR **)(iVar2 + 0xc);\n          uVar24 = *(ushort *)(iVar2 + 0x3e) | 1;\n          if (bVar25) goto LAB_000258a0;\nLAB_000258ae:\n          *(ushort *)(iVar2 + 0x3e) = uVar24;\n          closedir(pDVar16);\n          *(undefined4 *)(iVar2 + 0xc) = 0;\n          uVar13 = param_1[0xb];\n          if (((uVar13 & 0x200) != 0) && (-1 < local_9c)) {\n            close(local_9c);\n            uVar13 = param_1[0xb];\n          }\n        }\n        else {\n          pDVar16 = *(DIR **)(iVar2 + 0xc);\n          uVar24 = *(ushort *)(iVar2 + 0x3e) | 1;\n          if (bVar25) {\nLAB_000258a0:\n            piVar9 = __errno_location();\n            *(int *)(iVar2 + 0x20) = *piVar9;\n            goto LAB_000258ae;\n          }\n          *(ushort *)(iVar2 + 0x3e) = uVar24;\n          closedir(pDVar16);\n          uVar13 = param_1[0xb];\n        }\n        bVar25 = false;\n        *(undefined4 *)(iVar2 + 0xc) = 0;\n        goto LAB_00025223;\n      }\n      piVar9 = __errno_location();\n      iVar15 = *piVar9;\n      close(local_9c);\n      *piVar9 = iVar15;\n      *(undefined4 *)(iVar2 + 0xc) = 0;\n    }\njoined_r0x00025c30:\n    if (param_2 == 3) {\n      *(undefined2 *)(iVar2 + 0x3c) = 4;\n      piVar9 = __errno_location();\n      *(int *)(iVar2 + 0x20) = *piVar9;\n    }\nLAB_00025c40:\n    local_b8 = (void *)0x0;\n  }\n  else {\n    local_9c = dirfd(pDVar21);\n    if (local_9c < 0) {\n      closedir(*(DIR **)(iVar2 + 0xc));\n      *(undefined4 *)(iVar2 + 0xc) = 0;\n      goto joined_r0x00025c30;\n    }\n    if (param_1[10] == 0) {\n      local_a8 = 100000;\n      uVar13 = param_1[0xb];\n      bVar25 = true;\n    }\n    else {\n      local_a8 = 0xffffffff;\nLAB_0002521b:\n      bVar25 = true;\n      uVar13 = param_1[0xb];\n    }\nLAB_00025223:\n    uVar23 = *(uint *)(iVar2 + 0x28);\n    uVar22 = uVar23 - 1;\n    local_d0 = uVar23;\n    if (*(char *)(*(int *)(iVar2 + 0x1c) + -1 + uVar23) != '/') {\n      local_d0 = uVar23 + 1;\n      uVar22 = uVar23;\n    }\n    local_a4 = (undefined1 *)0x0;\n    if ((uVar13 & 4) != 0) {\n      local_a4 = (undefined1 *)(uVar22 + param_1[5]) + 1;\n      *(undefined1 *)(uVar22 + param_1[5]) = 0x2f;\n    }\n    puVar6 = PTR_free_0003afa8;\n    local_b0 = param_1[8] - local_d0;\n    bVar4 = false;\n    bVar3 = false;\n    iVar15 = *(int *)(iVar2 + 0x30);\n    local_c4 = (void *)0x0;\n    local_d4 = 0;\n    local_b8 = (void *)0x0;\nLAB_000252fb:\n    do {\n      do {\n        pDVar16 = *(DIR **)(iVar2 + 0xc);\n        if (pDVar16 == (DIR *)0x0) goto LAB_000256de;\n        piVar9 = __errno_location();\n        *piVar9 = 0;\n        pdVar10 = readdir64(pDVar16);\n        if (pdVar10 == (dirent64 *)0x0) {\n          if (*piVar9 != 0) {\n            *(int *)(iVar2 + 0x20) = *piVar9;\n            *(ushort *)(iVar2 + 0x3c) =\n                 (-(ushort)(pDVar21 == (DIR *)0x0 && local_d4 == 0) & 0xfffd) + 7;\n          }\n          if (*(DIR **)(iVar2 + 0xc) != (DIR *)0x0) {\n            closedir(*(DIR **)(iVar2 + 0xc));\n            *(undefined4 *)(iVar2 + 0xc) = 0;\n          }\n          goto LAB_000256de;\n        }\n      } while ((((*(byte *)(param_1 + 0xb) & 0x20) == 0) && (pdVar10->d_name[0] == '.')) &&\n              ((pdVar10->d_name[1] == '\0' || (*(short *)(pdVar10->d_name + 1) == 0x2e))));\n      __n = strlen(pdVar10->d_name);\n      pvVar11 = malloc(__n + 0xa8 & 0xfffffffc);\n      if (pvVar11 == (void *)0x0) {\n        iVar15 = *piVar9;\nLAB_000255a6:\n        free(pvVar11);\n        if (local_b8 != (void *)0x0) {\n          pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n          pvVar11 = *(void **)((int)local_b8 + 8);\n          if (pDVar21 == (DIR *)0x0) goto LAB_000255f4;\n          do {\n            closedir(pDVar21);\n            free(local_b8);\n            local_b8 = pvVar11;\n            while( true ) {\n              if (local_b8 == (void *)0x0) goto LAB_00025608;\n              pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n              pvVar11 = *(void **)((int)local_b8 + 8);\n              if (pDVar21 != (DIR *)0x0) break;\nLAB_000255f4:\n              free(local_b8);\n              local_b8 = pvVar11;\n            }\n          } while( true );\n        }\nLAB_00025608:\n        closedir(*(DIR **)(iVar2 + 0xc));\n        *(undefined4 *)(iVar2 + 0xc) = 0;\n        *(undefined2 *)(iVar2 + 0x3c) = 7;\n        local_b8 = (void *)0x0;\n        param_1[0xb] = param_1[0xb] | 0x4000;\n        *piVar9 = iVar15;\n        goto LAB_0002563f;\n      }\n      pvVar1 = (void *)((int)pvVar11 + 0xa4);\n      memcpy(pvVar1,pdVar10->d_name,__n);\n      __ptr = (void *)param_1[5];\n      *(undefined1 *)((int)pvVar11 + __n + 0xa4) = 0;\n      *(size_t *)((int)pvVar11 + 0x34) = __n;\n      *(int **)((int)pvVar11 + 0x2c) = param_1;\n      *(void **)((int)pvVar11 + 0x1c) = __ptr;\n      *(undefined4 *)((int)pvVar11 + 0x20) = 0;\n      *(undefined4 *)((int)pvVar11 + 0xc) = 0;\n      *(undefined4 *)((int)pvVar11 + 0x3e) = 0x30000;\n      *(undefined4 *)((int)pvVar11 + 0x10) = 0;\n      *(undefined4 *)((int)pvVar11 + 0x14) = 0;\n      if (local_b0 <= __n) {\n        uVar13 = local_d0 + 0x101 + param_1[8] + __n;\n        if (uVar13 < (uint)param_1[8]) {\n          iVar15 = 0x24;\n          free(__ptr);\n          param_1[5] = 0;\n          *piVar9 = 0x24;\n        }\n        else {\n          param_1[8] = uVar13;\n          pvVar14 = realloc(__ptr,uVar13);\n          if (pvVar14 != (void *)0x0) {\n            param_1[5] = (int)pvVar14;\n            if ((__ptr != pvVar14) && (bVar3 = true, (*(byte *)(param_1 + 0xb) & 4) != 0)) {\n              local_a4 = (undefined1 *)((int)pvVar14 + local_d0);\n            }\n            local_b0 = param_1[8] - local_d0;\n            goto LAB_000253d8;\n          }\n          free((void *)param_1[5]);\n          param_1[5] = 0;\n          iVar15 = *piVar9;\n        }\n        goto LAB_000255a6;\n      }\nLAB_000253d8:\n      if (CARRY4(__n,local_d0)) {\n        free(pvVar11);\n        if (local_b8 != (void *)0x0) {\n          pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n          pvVar11 = *(void **)((int)local_b8 + 8);\n          if (pDVar21 == (DIR *)0x0) goto LAB_00025e84;\n          do {\n            closedir(pDVar21);\n            free(local_b8);\n            local_b8 = pvVar11;\n            while( true ) {\n              if (local_b8 == (void *)0x0) goto LAB_00025e94;\n              pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n              pvVar11 = *(void **)((int)local_b8 + 8);\n              if (pDVar21 != (DIR *)0x0) break;\nLAB_00025e84:\n              free(local_b8);\n              local_b8 = pvVar11;\n            }\n          } while( true );\n        }\nLAB_00025e94:\n        closedir(*(DIR **)(iVar2 + 0xc));\n        *(undefined4 *)(iVar2 + 0xc) = 0;\n        *(undefined2 *)(iVar2 + 0x3c) = 7;\n        local_b8 = (void *)0x0;\n        param_1[0xb] = param_1[0xb] | 0x4000;\n        *piVar9 = 0x24;\n        goto LAB_0002563f;\n      }\n      uVar12 = *(undefined4 *)((int)&pdVar10->d_ino + 4);\n      *(size_t *)((int)pvVar11 + 0x28) = __n + local_d0;\n      *(int *)((int)pvVar11 + 0x30) = iVar15 + 1;\n      *(int *)((int)pvVar11 + 4) = *param_1;\n      _Var5 = pdVar10->d_ino;\n      *(undefined4 *)((int)pvVar11 + 0xa0) = uVar12;\n      *(int *)((int)pvVar11 + 0x9c) = (int)_Var5;\n      uVar13 = param_1[0xb];\n      if ((uVar13 & 4) == 0) {\n        *(void **)((int)pvVar11 + 0x18) = pvVar1;\n      }\n      else {\n        *(undefined4 *)((int)pvVar11 + 0x18) = *(undefined4 *)((int)pvVar11 + 0x1c);\n        memmove(local_a4,pvVar1,*(int *)((int)pvVar11 + 0x34) + 1);\n        uVar13 = param_1[0xb];\n      }\n      if ((param_1[10] == 0) || ((uVar13 & 0x400) != 0)) {\n        uVar23 = pdVar10->d_type - 1;\n        if (((uVar13 & 0x18) == 0x18) && ((pdVar10->d_type & 0xfb) != 0)) {\n          *(undefined2 *)((int)pvVar11 + 0x3c) = 0xb;\n          if (uVar23 < 0xc) {\n            *(undefined4 *)((int)pvVar11 + 0x54) = *(undefined4 *)(&DAT_00031560 + uVar23 * 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 (uVar23 < 0xc) {\n            *(undefined4 *)((int)pvVar11 + 0x54) = *(undefined4 *)(&DAT_00031560 + uVar23 * 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        uVar8 = FUN_00024740();\n        *(undefined2 *)((int)pvVar11 + 0x3c) = uVar8;\n      }\n      *(undefined4 *)((int)pvVar11 + 8) = 0;\n      pvVar1 = pvVar11;\n      if (local_b8 != (void *)0x0) {\n        *(void **)((int)local_c4 + 8) = pvVar11;\n        pvVar1 = local_b8;\n      }\n      local_b8 = pvVar1;\n      local_c4 = pvVar11;\n      if (local_d4 == 10000) {\n        if (param_1[10] == 0) {\n          iVar17 = *(int *)(iVar2 + 0x2c);\n          if ((*(byte *)(iVar17 + 0x2d) & 2) != 0) {\n            iVar18 = *(int *)(iVar17 + 0x30);\n            if (iVar18 == 0) {\n              iVar18 = FUN_0001df90(0xd,0,FUN_000246b0,FUN_000246e0,puVar6);\n              *(int *)(iVar17 + 0x30) = iVar18;\n              if (iVar18 != 0) goto LAB_00025920;\nLAB_000259b0:\n              if ((local_9c < 0) ||\n                 (iVar19 = fstatfs64(local_9c,&local_74), iVar17 = local_74.f_type, iVar19 != 0))\n              goto LAB_00025a48;\n              local_d4 = local_74.f_type;\n              if ((iVar18 != 0) &&\n                 (__ptr_00 = (undefined4 *)malloc(0xc), __ptr_00 != (undefined4 *)0x0)) {\n                uVar12 = *(undefined4 *)(iVar2 + 0x44);\n                __ptr_00[1] = *(undefined4 *)(iVar2 + 0x48);\n                *__ptr_00 = uVar12;\n                __ptr_00[2] = iVar17;\n                puVar20 = (undefined4 *)FUN_0001e8d0(iVar18,__ptr_00);\n                if (puVar20 == (undefined4 *)0x0) {\n                  free(__ptr_00);\n                  local_d4 = local_74.f_type;\n                }\n                else {\n                  if (__ptr_00 != puVar20) {\n                    /* WARNING: Subroutine does not return */\n                    abort();\n                  }\n                  local_d4 = local_74.f_type;\n                }\n              }\n            }\n            else {\nLAB_00025920:\n              local_7c = *(undefined4 *)(iVar2 + 0x48);\n              local_80 = *(undefined4 *)(iVar2 + 0x44);\n              iVar17 = FUN_0001dce0(iVar18,&local_80);\n              if (iVar17 == 0) goto LAB_000259b0;\n              local_d4 = *(int *)(iVar17 + 8);\n            }\n            if (((local_d4 == 0x6969) || (local_d4 == 0x1021994)) || (local_d4 == -0xacb2be)) {\n              bVar4 = false;\n              goto LAB_00025473;\n            }\n          }\nLAB_00025a48:\n          bVar4 = true;\n        }\nLAB_00025473:\n        local_d4 = 0x2711;\n        goto LAB_000252fb;\n      }\n      local_d4 = local_d4 + 1;\n    } while (local_d4 < local_a8);\nLAB_000256de:\n    if (bVar3) {\n      iVar15 = param_1[5];\n      for (iVar17 = param_1[1]; iVar17 != 0; iVar17 = *(int *)(iVar17 + 8)) {\n        while (*(int *)(iVar17 + 0x18) != iVar17 + 0xa4) {\n          iVar18 = *(int *)(iVar17 + 0x1c);\n          *(int *)(iVar17 + 0x1c) = iVar15;\n          *(int *)(iVar17 + 0x18) = (*(int *)(iVar17 + 0x18) - iVar18) + iVar15;\n          iVar17 = *(int *)(iVar17 + 8);\n          if (iVar17 == 0) goto LAB_00025aef;\n        }\n        *(int *)(iVar17 + 0x1c) = iVar15;\n      }\nLAB_00025aef:\n      iVar17 = *(int *)((int)local_b8 + 0x30);\n      pvVar11 = local_b8;\n      while (-1 < iVar17) {\n        while( true ) {\n          if (*(int *)((int)pvVar11 + 0x18) != (int)pvVar11 + 0xa4) {\n            *(int *)((int)pvVar11 + 0x18) =\n                 (*(int *)((int)pvVar11 + 0x18) - *(int *)((int)pvVar11 + 0x1c)) + iVar15;\n          }\n          pvVar1 = *(void **)((int)pvVar11 + 8);\n          *(int *)((int)pvVar11 + 0x1c) = iVar15;\n          if (pvVar1 == (void *)0x0) break;\n          pvVar11 = pvVar1;\n          if (*(int *)((int)pvVar1 + 0x30) < 0) goto LAB_000256e9;\n        }\n        pvVar11 = *(void **)((int)pvVar11 + 4);\n        iVar17 = *(int *)((int)pvVar11 + 0x30);\n      }\n    }\nLAB_000256e9:\n    if ((*(byte *)(param_1 + 0xb) & 4) != 0) {\n      if ((param_1[8] == local_d0) || (local_d4 == 0)) {\n        local_a4 = local_a4 + -1;\n      }\n      *local_a4 = 0;\n    }\n    if ((pDVar21 == (DIR *)0x0) && (bVar25)) {\n      if ((param_2 == 1) || (local_d4 == 0)) {\n        if (*(int *)(iVar2 + 0x30) == 0) {\n          iVar15 = FUN_00024bb0();\n        }\n        else {\n          iVar15 = FUN_00024e60(&DAT_0002e141);\n        }\n        if (iVar15 != 0) {\n          *(undefined2 *)(iVar2 + 0x3c) = 7;\n          param_1[0xb] = param_1[0xb] | 0x4000;\n          while (pvVar11 = local_b8, local_b8 != (void *)0x0) {\n            while( true ) {\n              local_b8 = *(void **)((int)pvVar11 + 8);\n              if (*(DIR **)((int)pvVar11 + 0xc) == (DIR *)0x0) break;\n              closedir(*(DIR **)((int)pvVar11 + 0xc));\n              free(pvVar11);\n              pvVar11 = local_b8;\n              if (local_b8 == (void *)0x0) goto LAB_00025c40;\n            }\n            free(pvVar11);\n          }\n          goto LAB_00025c40;\n        }\n        goto LAB_0002574d;\n      }\n    }\n    else {\nLAB_0002574d:\n      if (local_d4 == 0) {\n        if (((param_2 == 3) && (*(short *)(iVar2 + 0x3c) != 4)) && (*(short *)(iVar2 + 0x3c) != 7))\n        {\n          *(undefined2 *)(iVar2 + 0x3c) = 6;\n        }\n        if (local_b8 != (void *)0x0) {\n          pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n          pvVar11 = *(void **)((int)local_b8 + 8);\n          if (pDVar21 == (DIR *)0x0) goto LAB_00025c94;\n          do {\n            closedir(pDVar21);\n            free(local_b8);\n            local_b8 = pvVar11;\n            while( true ) {\n              if (local_b8 == (void *)0x0) goto LAB_00025c40;\n              pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n              pvVar11 = *(void **)((int)local_b8 + 8);\n              if (pDVar21 != (DIR *)0x0) break;\nLAB_00025c94:\n              free(local_b8);\n              local_b8 = pvVar11;\n            }\n          } while( true );\n        }\n        goto LAB_00025c40;\n      }\n    }\n    if (bVar4) {\n      param_1[10] = (int)FUN_00024700;\n      local_b8 = (void *)FUN_000248e0();\n      param_1[10] = 0;\n    }\n    else if ((param_1[10] != 0) && (local_d4 != 1)) {\n      local_b8 = (void *)FUN_000248e0();\n    }\n  }\nLAB_0002563f:\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return local_b8;\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_0002d5d0();\n}" primitive_type (pointer_declarator "* __regparm3 FUN_000251b0(int *param_1,int param_2)" * (ERROR "__regparm3" identifier) (function_declarator "FUN_000251b0(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  void *pvVar1;\n  int iVar2;\n  void *__ptr;\n  bool bVar3;\n  bool bVar4;\n  __ino64_t _Var5;\n  undefined *puVar6;\n  char cVar7;\n  undefined2 uVar8;\n  int *piVar9;\n  dirent64 *pdVar10;\n  size_t __n;\n  void *pvVar11;\n  undefined4 uVar12;\n  uint uVar13;\n  void *pvVar14;\n  int iVar15;\n  DIR *pDVar16;\n  int iVar17;\n  int iVar18;\n  int iVar19;\n  undefined4 *__ptr_00;\n  undefined4 *puVar20;\n  DIR *pDVar21;\n  uint uVar22;\n  uint uVar23;\n  ushort uVar24;\n  int in_GS_OFFSET;\n  bool bVar25;\n  uint local_d4;\n  uint local_d0;\n  void *local_c4;\n  void *local_b8;\n  uint local_b0;\n  uint local_a8;\n  undefined1 *local_a4;\n  int local_9c;\n  undefined4 local_80;\n  undefined4 local_7c;\n  statfs64 local_74;\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x251bb;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  iVar2 = *param_1;\n  pDVar21 = *(DIR **)(iVar2 + 0xc);\n  if (pDVar21 == (DIR *)0x0) {\n    uVar13 = param_1[0xb];\n    uVar23 = uVar13 & 0x10;\n    if (((uVar23 != 0) && (uVar23 = 0x20000, (uVar13 & 1) != 0)) &&\n       (uVar23 = *(uint *)(iVar2 + 0x30), uVar23 != 0)) {\n      uVar23 = 0x20000;\n    }\n    iVar15 = -100;\n    if ((uVar13 & 0x204) == 0x200) {\n      iVar15 = param_1[7];\n    }\n    local_9c = FUN_00029520(iVar15,*(undefined4 *)(iVar2 + 0x18),\n                            (uVar13 & 0x800) << 7 | uVar23 | 0x90900);\n    if (local_9c < 0) {\n      *(undefined4 *)(iVar2 + 0xc) = 0;\n    }\n    else {\n      pDVar16 = fdopendir(local_9c);\n      if (pDVar16 != (DIR *)0x0) {\n        *(DIR **)(iVar2 + 0xc) = pDVar16;\n        if (*(short *)(iVar2 + 0x3c) == 0xb) {\n          uVar8 = FUN_00024740();\n          *(undefined2 *)(iVar2 + 0x3c) = uVar8;\n        }\n        else if ((param_1[0xb] & 0x100U) != 0) {\n          FUN_00024aa0();\n          FUN_00024740();\n          cVar7 = FUN_000249d0();\n          if (cVar7 == '\0') {\n            piVar9 = __errno_location();\n            local_b8 = (void *)0x0;\n            *piVar9 = 0xc;\n            goto LAB_0002563f;\n          }\n        }\n        local_a8 = (-(uint)(param_1[10] == 0) & 0x186a1) - 1;\n        if (param_2 == 2) {\nLAB_00025bc8:\n          bVar25 = false;\n          uVar13 = param_1[0xb];\n          goto LAB_00025223;\n        }\n        if ((((param_1[0xb] & 0x38U) == 0x18) && (*(int *)(iVar2 + 0x58) == 2)) &&\n           (iVar15 = FUN_00024ca0(), iVar15 != 0)) {\n          if (param_2 != 3) goto LAB_00025bc8;\n          bVar25 = false;\n        }\n        else {\n          bVar25 = param_2 == 3;\n        }\n        if (((*(byte *)((int)param_1 + 0x2d) & 2) == 0) ||\n           (local_9c = FUN_000243f0(local_9c,0x406,3), -1 < local_9c)) {\n          iVar15 = FUN_00024e60(0);\n          if (iVar15 == 0) goto LAB_0002521b;\n          pDVar16 = *(DIR **)(iVar2 + 0xc);\n          uVar24 = *(ushort *)(iVar2 + 0x3e) | 1;\n          if (bVar25) goto LAB_000258a0;\nLAB_000258ae:\n          *(ushort *)(iVar2 + 0x3e) = uVar24;\n          closedir(pDVar16);\n          *(undefined4 *)(iVar2 + 0xc) = 0;\n          uVar13 = param_1[0xb];\n          if (((uVar13 & 0x200) != 0) && (-1 < local_9c)) {\n            close(local_9c);\n            uVar13 = param_1[0xb];\n          }\n        }\n        else {\n          pDVar16 = *(DIR **)(iVar2 + 0xc);\n          uVar24 = *(ushort *)(iVar2 + 0x3e) | 1;\n          if (bVar25) {\nLAB_000258a0:\n            piVar9 = __errno_location();\n            *(int *)(iVar2 + 0x20) = *piVar9;\n            goto LAB_000258ae;\n          }\n          *(ushort *)(iVar2 + 0x3e) = uVar24;\n          closedir(pDVar16);\n          uVar13 = param_1[0xb];\n        }\n        bVar25 = false;\n        *(undefined4 *)(iVar2 + 0xc) = 0;\n        goto LAB_00025223;\n      }\n      piVar9 = __errno_location();\n      iVar15 = *piVar9;\n      close(local_9c);\n      *piVar9 = iVar15;\n      *(undefined4 *)(iVar2 + 0xc) = 0;\n    }\njoined_r0x00025c30:\n    if (param_2 == 3) {\n      *(undefined2 *)(iVar2 + 0x3c) = 4;\n      piVar9 = __errno_location();\n      *(int *)(iVar2 + 0x20) = *piVar9;\n    }\nLAB_00025c40:\n    local_b8 = (void *)0x0;\n  }\n  else {\n    local_9c = dirfd(pDVar21);\n    if (local_9c < 0) {\n      closedir(*(DIR **)(iVar2 + 0xc));\n      *(undefined4 *)(iVar2 + 0xc) = 0;\n      goto joined_r0x00025c30;\n    }\n    if (param_1[10] == 0) {\n      local_a8 = 100000;\n      uVar13 = param_1[0xb];\n      bVar25 = true;\n    }\n    else {\n      local_a8 = 0xffffffff;\nLAB_0002521b:\n      bVar25 = true;\n      uVar13 = param_1[0xb];\n    }\nLAB_00025223:\n    uVar23 = *(uint *)(iVar2 + 0x28);\n    uVar22 = uVar23 - 1;\n    local_d0 = uVar23;\n    if (*(char *)(*(int *)(iVar2 + 0x1c) + -1 + uVar23) != '/') {\n      local_d0 = uVar23 + 1;\n      uVar22 = uVar23;\n    }\n    local_a4 = (undefined1 *)0x0;\n    if ((uVar13 & 4) != 0) {\n      local_a4 = (undefined1 *)(uVar22 + param_1[5]) + 1;\n      *(undefined1 *)(uVar22 + param_1[5]) = 0x2f;\n    }\n    puVar6 = PTR_free_0003afa8;\n    local_b0 = param_1[8] - local_d0;\n    bVar4 = false;\n    bVar3 = false;\n    iVar15 = *(int *)(iVar2 + 0x30);\n    local_c4 = (void *)0x0;\n    local_d4 = 0;\n    local_b8 = (void *)0x0;\nLAB_000252fb:\n    do {\n      do {\n        pDVar16 = *(DIR **)(iVar2 + 0xc);\n        if (pDVar16 == (DIR *)0x0) goto LAB_000256de;\n        piVar9 = __errno_location();\n        *piVar9 = 0;\n        pdVar10 = readdir64(pDVar16);\n        if (pdVar10 == (dirent64 *)0x0) {\n          if (*piVar9 != 0) {\n            *(int *)(iVar2 + 0x20) = *piVar9;\n            *(ushort *)(iVar2 + 0x3c) =\n                 (-(ushort)(pDVar21 == (DIR *)0x0 && local_d4 == 0) & 0xfffd) + 7;\n          }\n          if (*(DIR **)(iVar2 + 0xc) != (DIR *)0x0) {\n            closedir(*(DIR **)(iVar2 + 0xc));\n            *(undefined4 *)(iVar2 + 0xc) = 0;\n          }\n          goto LAB_000256de;\n        }\n      } while ((((*(byte *)(param_1 + 0xb) & 0x20) == 0) && (pdVar10->d_name[0] == '.')) &&\n              ((pdVar10->d_name[1] == '\0' || (*(short *)(pdVar10->d_name + 1) == 0x2e))));\n      __n = strlen(pdVar10->d_name);\n      pvVar11 = malloc(__n + 0xa8 & 0xfffffffc);\n      if (pvVar11 == (void *)0x0) {\n        iVar15 = *piVar9;\nLAB_000255a6:\n        free(pvVar11);\n        if (local_b8 != (void *)0x0) {\n          pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n          pvVar11 = *(void **)((int)local_b8 + 8);\n          if (pDVar21 == (DIR *)0x0) goto LAB_000255f4;\n          do {\n            closedir(pDVar21);\n            free(local_b8);\n            local_b8 = pvVar11;\n            while( true ) {\n              if (local_b8 == (void *)0x0) goto LAB_00025608;\n              pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n              pvVar11 = *(void **)((int)local_b8 + 8);\n              if (pDVar21 != (DIR *)0x0) break;\nLAB_000255f4:\n              free(local_b8);\n              local_b8 = pvVar11;\n            }\n          } while( true );\n        }\nLAB_00025608:\n        closedir(*(DIR **)(iVar2 + 0xc));\n        *(undefined4 *)(iVar2 + 0xc) = 0;\n        *(undefined2 *)(iVar2 + 0x3c) = 7;\n        local_b8 = (void *)0x0;\n        param_1[0xb] = param_1[0xb] | 0x4000;\n        *piVar9 = iVar15;\n        goto LAB_0002563f;\n      }\n      pvVar1 = (void *)((int)pvVar11 + 0xa4);\n      memcpy(pvVar1,pdVar10->d_name,__n);\n      __ptr = (void *)param_1[5];\n      *(undefined1 *)((int)pvVar11 + __n + 0xa4) = 0;\n      *(size_t *)((int)pvVar11 + 0x34) = __n;\n      *(int **)((int)pvVar11 + 0x2c) = param_1;\n      *(void **)((int)pvVar11 + 0x1c) = __ptr;\n      *(undefined4 *)((int)pvVar11 + 0x20) = 0;\n      *(undefined4 *)((int)pvVar11 + 0xc) = 0;\n      *(undefined4 *)((int)pvVar11 + 0x3e) = 0x30000;\n      *(undefined4 *)((int)pvVar11 + 0x10) = 0;\n      *(undefined4 *)((int)pvVar11 + 0x14) = 0;\n      if (local_b0 <= __n) {\n        uVar13 = local_d0 + 0x101 + param_1[8] + __n;\n        if (uVar13 < (uint)param_1[8]) {\n          iVar15 = 0x24;\n          free(__ptr);\n          param_1[5] = 0;\n          *piVar9 = 0x24;\n        }\n        else {\n          param_1[8] = uVar13;\n          pvVar14 = realloc(__ptr,uVar13);\n          if (pvVar14 != (void *)0x0) {\n            param_1[5] = (int)pvVar14;\n            if ((__ptr != pvVar14) && (bVar3 = true, (*(byte *)(param_1 + 0xb) & 4) != 0)) {\n              local_a4 = (undefined1 *)((int)pvVar14 + local_d0);\n            }\n            local_b0 = param_1[8] - local_d0;\n            goto LAB_000253d8;\n          }\n          free((void *)param_1[5]);\n          param_1[5] = 0;\n          iVar15 = *piVar9;\n        }\n        goto LAB_000255a6;\n      }\nLAB_000253d8:\n      if (CARRY4(__n,local_d0)) {\n        free(pvVar11);\n        if (local_b8 != (void *)0x0) {\n          pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n          pvVar11 = *(void **)((int)local_b8 + 8);\n          if (pDVar21 == (DIR *)0x0) goto LAB_00025e84;\n          do {\n            closedir(pDVar21);\n            free(local_b8);\n            local_b8 = pvVar11;\n            while( true ) {\n              if (local_b8 == (void *)0x0) goto LAB_00025e94;\n              pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n              pvVar11 = *(void **)((int)local_b8 + 8);\n              if (pDVar21 != (DIR *)0x0) break;\nLAB_00025e84:\n              free(local_b8);\n              local_b8 = pvVar11;\n            }\n          } while( true );\n        }\nLAB_00025e94:\n        closedir(*(DIR **)(iVar2 + 0xc));\n        *(undefined4 *)(iVar2 + 0xc) = 0;\n        *(undefined2 *)(iVar2 + 0x3c) = 7;\n        local_b8 = (void *)0x0;\n        param_1[0xb] = param_1[0xb] | 0x4000;\n        *piVar9 = 0x24;\n        goto LAB_0002563f;\n      }\n      uVar12 = *(undefined4 *)((int)&pdVar10->d_ino + 4);\n      *(size_t *)((int)pvVar11 + 0x28) = __n + local_d0;\n      *(int *)((int)pvVar11 + 0x30) = iVar15 + 1;\n      *(int *)((int)pvVar11 + 4) = *param_1;\n      _Var5 = pdVar10->d_ino;\n      *(undefined4 *)((int)pvVar11 + 0xa0) = uVar12;\n      *(int *)((int)pvVar11 + 0x9c) = (int)_Var5;\n      uVar13 = param_1[0xb];\n      if ((uVar13 & 4) == 0) {\n        *(void **)((int)pvVar11 + 0x18) = pvVar1;\n      }\n      else {\n        *(undefined4 *)((int)pvVar11 + 0x18) = *(undefined4 *)((int)pvVar11 + 0x1c);\n        memmove(local_a4,pvVar1,*(int *)((int)pvVar11 + 0x34) + 1);\n        uVar13 = param_1[0xb];\n      }\n      if ((param_1[10] == 0) || ((uVar13 & 0x400) != 0)) {\n        uVar23 = pdVar10->d_type - 1;\n        if (((uVar13 & 0x18) == 0x18) && ((pdVar10->d_type & 0xfb) != 0)) {\n          *(undefined2 *)((int)pvVar11 + 0x3c) = 0xb;\n          if (uVar23 < 0xc) {\n            *(undefined4 *)((int)pvVar11 + 0x54) = *(undefined4 *)(&DAT_00031560 + uVar23 * 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 (uVar23 < 0xc) {\n            *(undefined4 *)((int)pvVar11 + 0x54) = *(undefined4 *)(&DAT_00031560 + uVar23 * 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        uVar8 = FUN_00024740();\n        *(undefined2 *)((int)pvVar11 + 0x3c) = uVar8;\n      }\n      *(undefined4 *)((int)pvVar11 + 8) = 0;\n      pvVar1 = pvVar11;\n      if (local_b8 != (void *)0x0) {\n        *(void **)((int)local_c4 + 8) = pvVar11;\n        pvVar1 = local_b8;\n      }\n      local_b8 = pvVar1;\n      local_c4 = pvVar11;\n      if (local_d4 == 10000) {\n        if (param_1[10] == 0) {\n          iVar17 = *(int *)(iVar2 + 0x2c);\n          if ((*(byte *)(iVar17 + 0x2d) & 2) != 0) {\n            iVar18 = *(int *)(iVar17 + 0x30);\n            if (iVar18 == 0) {\n              iVar18 = FUN_0001df90(0xd,0,FUN_000246b0,FUN_000246e0,puVar6);\n              *(int *)(iVar17 + 0x30) = iVar18;\n              if (iVar18 != 0) goto LAB_00025920;\nLAB_000259b0:\n              if ((local_9c < 0) ||\n                 (iVar19 = fstatfs64(local_9c,&local_74), iVar17 = local_74.f_type, iVar19 != 0))\n              goto LAB_00025a48;\n              local_d4 = local_74.f_type;\n              if ((iVar18 != 0) &&\n                 (__ptr_00 = (undefined4 *)malloc(0xc), __ptr_00 != (undefined4 *)0x0)) {\n                uVar12 = *(undefined4 *)(iVar2 + 0x44);\n                __ptr_00[1] = *(undefined4 *)(iVar2 + 0x48);\n                *__ptr_00 = uVar12;\n                __ptr_00[2] = iVar17;\n                puVar20 = (undefined4 *)FUN_0001e8d0(iVar18,__ptr_00);\n                if (puVar20 == (undefined4 *)0x0) {\n                  free(__ptr_00);\n                  local_d4 = local_74.f_type;\n                }\n                else {\n                  if (__ptr_00 != puVar20) {\n                    /* WARNING: Subroutine does not return */\n                    abort();\n                  }\n                  local_d4 = local_74.f_type;\n                }\n              }\n            }\n            else {\nLAB_00025920:\n              local_7c = *(undefined4 *)(iVar2 + 0x48);\n              local_80 = *(undefined4 *)(iVar2 + 0x44);\n              iVar17 = FUN_0001dce0(iVar18,&local_80);\n              if (iVar17 == 0) goto LAB_000259b0;\n              local_d4 = *(int *)(iVar17 + 8);\n            }\n            if (((local_d4 == 0x6969) || (local_d4 == 0x1021994)) || (local_d4 == -0xacb2be)) {\n              bVar4 = false;\n              goto LAB_00025473;\n            }\n          }\nLAB_00025a48:\n          bVar4 = true;\n        }\nLAB_00025473:\n        local_d4 = 0x2711;\n        goto LAB_000252fb;\n      }\n      local_d4 = local_d4 + 1;\n    } while (local_d4 < local_a8);\nLAB_000256de:\n    if (bVar3) {\n      iVar15 = param_1[5];\n      for (iVar17 = param_1[1]; iVar17 != 0; iVar17 = *(int *)(iVar17 + 8)) {\n        while (*(int *)(iVar17 + 0x18) != iVar17 + 0xa4) {\n          iVar18 = *(int *)(iVar17 + 0x1c);\n          *(int *)(iVar17 + 0x1c) = iVar15;\n          *(int *)(iVar17 + 0x18) = (*(int *)(iVar17 + 0x18) - iVar18) + iVar15;\n          iVar17 = *(int *)(iVar17 + 8);\n          if (iVar17 == 0) goto LAB_00025aef;\n        }\n        *(int *)(iVar17 + 0x1c) = iVar15;\n      }\nLAB_00025aef:\n      iVar17 = *(int *)((int)local_b8 + 0x30);\n      pvVar11 = local_b8;\n      while (-1 < iVar17) {\n        while( true ) {\n          if (*(int *)((int)pvVar11 + 0x18) != (int)pvVar11 + 0xa4) {\n            *(int *)((int)pvVar11 + 0x18) =\n                 (*(int *)((int)pvVar11 + 0x18) - *(int *)((int)pvVar11 + 0x1c)) + iVar15;\n          }\n          pvVar1 = *(void **)((int)pvVar11 + 8);\n          *(int *)((int)pvVar11 + 0x1c) = iVar15;\n          if (pvVar1 == (void *)0x0) break;\n          pvVar11 = pvVar1;\n          if (*(int *)((int)pvVar1 + 0x30) < 0) goto LAB_000256e9;\n        }\n        pvVar11 = *(void **)((int)pvVar11 + 4);\n        iVar17 = *(int *)((int)pvVar11 + 0x30);\n      }\n    }\nLAB_000256e9:\n    if ((*(byte *)(param_1 + 0xb) & 4) != 0) {\n      if ((param_1[8] == local_d0) || (local_d4 == 0)) {\n        local_a4 = local_a4 + -1;\n      }\n      *local_a4 = 0;\n    }\n    if ((pDVar21 == (DIR *)0x0) && (bVar25)) {\n      if ((param_2 == 1) || (local_d4 == 0)) {\n        if (*(int *)(iVar2 + 0x30) == 0) {\n          iVar15 = FUN_00024bb0();\n        }\n        else {\n          iVar15 = FUN_00024e60(&DAT_0002e141);\n        }\n        if (iVar15 != 0) {\n          *(undefined2 *)(iVar2 + 0x3c) = 7;\n          param_1[0xb] = param_1[0xb] | 0x4000;\n          while (pvVar11 = local_b8, local_b8 != (void *)0x0) {\n            while( true ) {\n              local_b8 = *(void **)((int)pvVar11 + 8);\n              if (*(DIR **)((int)pvVar11 + 0xc) == (DIR *)0x0) break;\n              closedir(*(DIR **)((int)pvVar11 + 0xc));\n              free(pvVar11);\n              pvVar11 = local_b8;\n              if (local_b8 == (void *)0x0) goto LAB_00025c40;\n            }\n            free(pvVar11);\n          }\n          goto LAB_00025c40;\n        }\n        goto LAB_0002574d;\n      }\n    }\n    else {\nLAB_0002574d:\n      if (local_d4 == 0) {\n        if (((param_2 == 3) && (*(short *)(iVar2 + 0x3c) != 4)) && (*(short *)(iVar2 + 0x3c) != 7))\n        {\n          *(undefined2 *)(iVar2 + 0x3c) = 6;\n        }\n        if (local_b8 != (void *)0x0) {\n          pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n          pvVar11 = *(void **)((int)local_b8 + 8);\n          if (pDVar21 == (DIR *)0x0) goto LAB_00025c94;\n          do {\n            closedir(pDVar21);\n            free(local_b8);\n            local_b8 = pvVar11;\n            while( true ) {\n              if (local_b8 == (void *)0x0) goto LAB_00025c40;\n              pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n              pvVar11 = *(void **)((int)local_b8 + 8);\n              if (pDVar21 != (DIR *)0x0) break;\nLAB_00025c94:\n              free(local_b8);\n              local_b8 = pvVar11;\n            }\n          } while( true );\n        }\n        goto LAB_00025c40;\n      }\n    }\n    if (bVar4) {\n      param_1[10] = (int)FUN_00024700;\n      local_b8 = (void *)FUN_000248e0();\n      param_1[10] = 0;\n    }\n    else if ((param_1[10] != 0) && (local_d4 != 1)) {\n      local_b8 = (void *)FUN_000248e0();\n    }\n  }\nLAB_0002563f:\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return local_b8;\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_0002d5d0();\n}" { (declaration "void *pvVar1;" primitive_type (pointer_declarator "*pvVar1" * identifier) ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "void *__ptr;" primitive_type (pointer_declarator "*__ptr" * identifier) ;) (declaration "bool bVar3;" primitive_type identifier ;) (declaration "bool bVar4;" primitive_type identifier ;) (declaration "__ino64_t _Var5;" type_identifier identifier ;) (declaration "undefined *puVar6;" type_identifier (pointer_declarator "*puVar6" * identifier) ;) (declaration "char cVar7;" primitive_type identifier ;) (declaration "undefined2 uVar8;" type_identifier identifier ;) (declaration "int *piVar9;" primitive_type (pointer_declarator "*piVar9" * identifier) ;) (declaration "dirent64 *pdVar10;" type_identifier (pointer_declarator "*pdVar10" * identifier) ;) (declaration "size_t __n;" primitive_type identifier ;) (declaration "void *pvVar11;" primitive_type (pointer_declarator "*pvVar11" * identifier) ;) (declaration "undefined4 uVar12;" type_identifier identifier ;) (declaration "uint uVar13;" type_identifier identifier ;) (declaration "void *pvVar14;" primitive_type (pointer_declarator "*pvVar14" * identifier) ;) (declaration "int iVar15;" primitive_type identifier ;) (declaration "DIR *pDVar16;" type_identifier (pointer_declarator "*pDVar16" * identifier) ;) (declaration "int iVar17;" primitive_type identifier ;) (declaration "int iVar18;" primitive_type identifier ;) (declaration "int iVar19;" primitive_type identifier ;) (declaration "undefined4 *__ptr_00;" type_identifier (pointer_declarator "*__ptr_00" * identifier) ;) (declaration "undefined4 *puVar20;" type_identifier (pointer_declarator "*puVar20" * identifier) ;) (declaration "DIR *pDVar21;" type_identifier (pointer_declarator "*pDVar21" * identifier) ;) (declaration "uint uVar22;" type_identifier identifier ;) (declaration "uint uVar23;" type_identifier identifier ;) (declaration "ushort uVar24;" type_identifier identifier ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "bool bVar25;" primitive_type identifier ;) (declaration "uint local_d4;" type_identifier identifier ;) (declaration "uint local_d0;" type_identifier identifier ;) (declaration "void *local_c4;" primitive_type (pointer_declarator "*local_c4" * identifier) ;) (declaration "void *local_b8;" primitive_type (pointer_declarator "*local_b8" * identifier) ;) (declaration "uint local_b0;" type_identifier identifier ;) (declaration "uint local_a8;" type_identifier identifier ;) (declaration "undefined1 *local_a4;" type_identifier (pointer_declarator "*local_a4" * identifier) ;) (declaration "int local_9c;" primitive_type identifier ;) (declaration "undefined4 local_80;" type_identifier identifier ;) (declaration "undefined4 local_7c;" type_identifier identifier ;) (declaration "statfs64 local_74;" type_identifier identifier ;) (declaration "int local_20;" primitive_type identifier ;) (declaration "undefined4 uStack_14;" type_identifier identifier ;) (expression_statement "uStack_14 = 0x251bb;" (assignment_expression "uStack_14 = 0x251bb" identifier = number_literal) ;) (expression_statement "local_20 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "local_20 = *(int *)(in_GS_OFFSET + 0x14)" identifier = (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) ;) (expression_statement "iVar2 = *param_1;" (assignment_expression "iVar2 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "pDVar21 = *(DIR **)(iVar2 + 0xc);" (assignment_expression "pDVar21 = *(DIR **)(iVar2 + 0xc)" identifier = (pointer_expression "*(DIR **)(iVar2 + 0xc)" * (cast_expression "(DIR **)(iVar2 + 0xc)" ( (type_descriptor "DIR **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar2 + 0xc)" ( (binary_expression "iVar2 + 0xc" identifier + number_literal) ))))) ;) (if_statement "if (pDVar21 == (DIR *)0x0) {\n    uVar13 = param_1[0xb];\n    uVar23 = uVar13 & 0x10;\n    if (((uVar23 != 0) && (uVar23 = 0x20000, (uVar13 & 1) != 0)) &&\n       (uVar23 = *(uint *)(iVar2 + 0x30), uVar23 != 0)) {\n      uVar23 = 0x20000;\n    }\n    iVar15 = -100;\n    if ((uVar13 & 0x204) == 0x200) {\n      iVar15 = param_1[7];\n    }\n    local_9c = FUN_00029520(iVar15,*(undefined4 *)(iVar2 + 0x18),\n                            (uVar13 & 0x800) << 7 | uVar23 | 0x90900);\n    if (local_9c < 0) {\n      *(undefined4 *)(iVar2 + 0xc) = 0;\n    }\n    else {\n      pDVar16 = fdopendir(local_9c);\n      if (pDVar16 != (DIR *)0x0) {\n        *(DIR **)(iVar2 + 0xc) = pDVar16;\n        if (*(short *)(iVar2 + 0x3c) == 0xb) {\n          uVar8 = FUN_00024740();\n          *(undefined2 *)(iVar2 + 0x3c) = uVar8;\n        }\n        else if ((param_1[0xb] & 0x100U) != 0) {\n          FUN_00024aa0();\n          FUN_00024740();\n          cVar7 = FUN_000249d0();\n          if (cVar7 == '\0') {\n            piVar9 = __errno_location();\n            local_b8 = (void *)0x0;\n            *piVar9 = 0xc;\n            goto LAB_0002563f;\n          }\n        }\n        local_a8 = (-(uint)(param_1[10] == 0) & 0x186a1) - 1;\n        if (param_2 == 2) {\nLAB_00025bc8:\n          bVar25 = false;\n          uVar13 = param_1[0xb];\n          goto LAB_00025223;\n        }\n        if ((((param_1[0xb] & 0x38U) == 0x18) && (*(int *)(iVar2 + 0x58) == 2)) &&\n           (iVar15 = FUN_00024ca0(), iVar15 != 0)) {\n          if (param_2 != 3) goto LAB_00025bc8;\n          bVar25 = false;\n        }\n        else {\n          bVar25 = param_2 == 3;\n        }\n        if (((*(byte *)((int)param_1 + 0x2d) & 2) == 0) ||\n           (local_9c = FUN_000243f0(local_9c,0x406,3), -1 < local_9c)) {\n          iVar15 = FUN_00024e60(0);\n          if (iVar15 == 0) goto LAB_0002521b;\n          pDVar16 = *(DIR **)(iVar2 + 0xc);\n          uVar24 = *(ushort *)(iVar2 + 0x3e) | 1;\n          if (bVar25) goto LAB_000258a0;\nLAB_000258ae:\n          *(ushort *)(iVar2 + 0x3e) = uVar24;\n          closedir(pDVar16);\n          *(undefined4 *)(iVar2 + 0xc) = 0;\n          uVar13 = param_1[0xb];\n          if (((uVar13 & 0x200) != 0) && (-1 < local_9c)) {\n            close(local_9c);\n            uVar13 = param_1[0xb];\n          }\n        }\n        else {\n          pDVar16 = *(DIR **)(iVar2 + 0xc);\n          uVar24 = *(ushort *)(iVar2 + 0x3e) | 1;\n          if (bVar25) {\nLAB_000258a0:\n            piVar9 = __errno_location();\n            *(int *)(iVar2 + 0x20) = *piVar9;\n            goto LAB_000258ae;\n          }\n          *(ushort *)(iVar2 + 0x3e) = uVar24;\n          closedir(pDVar16);\n          uVar13 = param_1[0xb];\n        }\n        bVar25 = false;\n        *(undefined4 *)(iVar2 + 0xc) = 0;\n        goto LAB_00025223;\n      }\n      piVar9 = __errno_location();\n      iVar15 = *piVar9;\n      close(local_9c);\n      *piVar9 = iVar15;\n      *(undefined4 *)(iVar2 + 0xc) = 0;\n    }\njoined_r0x00025c30:\n    if (param_2 == 3) {\n      *(undefined2 *)(iVar2 + 0x3c) = 4;\n      piVar9 = __errno_location();\n      *(int *)(iVar2 + 0x20) = *piVar9;\n    }\nLAB_00025c40:\n    local_b8 = (void *)0x0;\n  }\n  else {\n    local_9c = dirfd(pDVar21);\n    if (local_9c < 0) {\n      closedir(*(DIR **)(iVar2 + 0xc));\n      *(undefined4 *)(iVar2 + 0xc) = 0;\n      goto joined_r0x00025c30;\n    }\n    if (param_1[10] == 0) {\n      local_a8 = 100000;\n      uVar13 = param_1[0xb];\n      bVar25 = true;\n    }\n    else {\n      local_a8 = 0xffffffff;\nLAB_0002521b:\n      bVar25 = true;\n      uVar13 = param_1[0xb];\n    }\nLAB_00025223:\n    uVar23 = *(uint *)(iVar2 + 0x28);\n    uVar22 = uVar23 - 1;\n    local_d0 = uVar23;\n    if (*(char *)(*(int *)(iVar2 + 0x1c) + -1 + uVar23) != '/') {\n      local_d0 = uVar23 + 1;\n      uVar22 = uVar23;\n    }\n    local_a4 = (undefined1 *)0x0;\n    if ((uVar13 & 4) != 0) {\n      local_a4 = (undefined1 *)(uVar22 + param_1[5]) + 1;\n      *(undefined1 *)(uVar22 + param_1[5]) = 0x2f;\n    }\n    puVar6 = PTR_free_0003afa8;\n    local_b0 = param_1[8] - local_d0;\n    bVar4 = false;\n    bVar3 = false;\n    iVar15 = *(int *)(iVar2 + 0x30);\n    local_c4 = (void *)0x0;\n    local_d4 = 0;\n    local_b8 = (void *)0x0;\nLAB_000252fb:\n    do {\n      do {\n        pDVar16 = *(DIR **)(iVar2 + 0xc);\n        if (pDVar16 == (DIR *)0x0) goto LAB_000256de;\n        piVar9 = __errno_location();\n        *piVar9 = 0;\n        pdVar10 = readdir64(pDVar16);\n        if (pdVar10 == (dirent64 *)0x0) {\n          if (*piVar9 != 0) {\n            *(int *)(iVar2 + 0x20) = *piVar9;\n            *(ushort *)(iVar2 + 0x3c) =\n                 (-(ushort)(pDVar21 == (DIR *)0x0 && local_d4 == 0) & 0xfffd) + 7;\n          }\n          if (*(DIR **)(iVar2 + 0xc) != (DIR *)0x0) {\n            closedir(*(DIR **)(iVar2 + 0xc));\n            *(undefined4 *)(iVar2 + 0xc) = 0;\n          }\n          goto LAB_000256de;\n        }\n      } while ((((*(byte *)(param_1 + 0xb) & 0x20) == 0) && (pdVar10->d_name[0] == '.')) &&\n              ((pdVar10->d_name[1] == '\0' || (*(short *)(pdVar10->d_name + 1) == 0x2e))));\n      __n = strlen(pdVar10->d_name);\n      pvVar11 = malloc(__n + 0xa8 & 0xfffffffc);\n      if (pvVar11 == (void *)0x0) {\n        iVar15 = *piVar9;\nLAB_000255a6:\n        free(pvVar11);\n        if (local_b8 != (void *)0x0) {\n          pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n          pvVar11 = *(void **)((int)local_b8 + 8);\n          if (pDVar21 == (DIR *)0x0) goto LAB_000255f4;\n          do {\n            closedir(pDVar21);\n            free(local_b8);\n            local_b8 = pvVar11;\n            while( true ) {\n              if (local_b8 == (void *)0x0) goto LAB_00025608;\n              pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n              pvVar11 = *(void **)((int)local_b8 + 8);\n              if (pDVar21 != (DIR *)0x0) break;\nLAB_000255f4:\n              free(local_b8);\n              local_b8 = pvVar11;\n            }\n          } while( true );\n        }\nLAB_00025608:\n        closedir(*(DIR **)(iVar2 + 0xc));\n        *(undefined4 *)(iVar2 + 0xc) = 0;\n        *(undefined2 *)(iVar2 + 0x3c) = 7;\n        local_b8 = (void *)0x0;\n        param_1[0xb] = param_1[0xb] | 0x4000;\n        *piVar9 = iVar15;\n        goto LAB_0002563f;\n      }\n      pvVar1 = (void *)((int)pvVar11 + 0xa4);\n      memcpy(pvVar1,pdVar10->d_name,__n);\n      __ptr = (void *)param_1[5];\n      *(undefined1 *)((int)pvVar11 + __n + 0xa4) = 0;\n      *(size_t *)((int)pvVar11 + 0x34) = __n;\n      *(int **)((int)pvVar11 + 0x2c) = param_1;\n      *(void **)((int)pvVar11 + 0x1c) = __ptr;\n      *(undefined4 *)((int)pvVar11 + 0x20) = 0;\n      *(undefined4 *)((int)pvVar11 + 0xc) = 0;\n      *(undefined4 *)((int)pvVar11 + 0x3e) = 0x30000;\n      *(undefined4 *)((int)pvVar11 + 0x10) = 0;\n      *(undefined4 *)((int)pvVar11 + 0x14) = 0;\n      if (local_b0 <= __n) {\n        uVar13 = local_d0 + 0x101 + param_1[8] + __n;\n        if (uVar13 < (uint)param_1[8]) {\n          iVar15 = 0x24;\n          free(__ptr);\n          param_1[5] = 0;\n          *piVar9 = 0x24;\n        }\n        else {\n          param_1[8] = uVar13;\n          pvVar14 = realloc(__ptr,uVar13);\n          if (pvVar14 != (void *)0x0) {\n            param_1[5] = (int)pvVar14;\n            if ((__ptr != pvVar14) && (bVar3 = true, (*(byte *)(param_1 + 0xb) & 4) != 0)) {\n              local_a4 = (undefined1 *)((int)pvVar14 + local_d0);\n            }\n            local_b0 = param_1[8] - local_d0;\n            goto LAB_000253d8;\n          }\n          free((void *)param_1[5]);\n          param_1[5] = 0;\n          iVar15 = *piVar9;\n        }\n        goto LAB_000255a6;\n      }\nLAB_000253d8:\n      if (CARRY4(__n,local_d0)) {\n        free(pvVar11);\n        if (local_b8 != (void *)0x0) {\n          pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n          pvVar11 = *(void **)((int)local_b8 + 8);\n          if (pDVar21 == (DIR *)0x0) goto LAB_00025e84;\n          do {\n            closedir(pDVar21);\n            free(local_b8);\n            local_b8 = pvVar11;\n            while( true ) {\n              if (local_b8 == (void *)0x0) goto LAB_00025e94;\n              pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n              pvVar11 = *(void **)((int)local_b8 + 8);\n              if (pDVar21 != (DIR *)0x0) break;\nLAB_00025e84:\n              free(local_b8);\n              local_b8 = pvVar11;\n            }\n          } while( true );\n        }\nLAB_00025e94:\n        closedir(*(DIR **)(iVar2 + 0xc));\n        *(undefined4 *)(iVar2 + 0xc) = 0;\n        *(undefined2 *)(iVar2 + 0x3c) = 7;\n        local_b8 = (void *)0x0;\n        param_1[0xb] = param_1[0xb] | 0x4000;\n        *piVar9 = 0x24;\n        goto LAB_0002563f;\n      }\n      uVar12 = *(undefined4 *)((int)&pdVar10->d_ino + 4);\n      *(size_t *)((int)pvVar11 + 0x28) = __n + local_d0;\n      *(int *)((int)pvVar11 + 0x30) = iVar15 + 1;\n      *(int *)((int)pvVar11 + 4) = *param_1;\n      _Var5 = pdVar10->d_ino;\n      *(undefined4 *)((int)pvVar11 + 0xa0) = uVar12;\n      *(int *)((int)pvVar11 + 0x9c) = (int)_Var5;\n      uVar13 = param_1[0xb];\n      if ((uVar13 & 4) == 0) {\n        *(void **)((int)pvVar11 + 0x18) = pvVar1;\n      }\n      else {\n        *(undefined4 *)((int)pvVar11 + 0x18) = *(undefined4 *)((int)pvVar11 + 0x1c);\n        memmove(local_a4,pvVar1,*(int *)((int)pvVar11 + 0x34) + 1);\n        uVar13 = param_1[0xb];\n      }\n      if ((param_1[10] == 0) || ((uVar13 & 0x400) != 0)) {\n        uVar23 = pdVar10->d_type - 1;\n        if (((uVar13 & 0x18) == 0x18) && ((pdVar10->d_type & 0xfb) != 0)) {\n          *(undefined2 *)((int)pvVar11 + 0x3c) = 0xb;\n          if (uVar23 < 0xc) {\n            *(undefined4 *)((int)pvVar11 + 0x54) = *(undefined4 *)(&DAT_00031560 + uVar23 * 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 (uVar23 < 0xc) {\n            *(undefined4 *)((int)pvVar11 + 0x54) = *(undefined4 *)(&DAT_00031560 + uVar23 * 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        uVar8 = FUN_00024740();\n        *(undefined2 *)((int)pvVar11 + 0x3c) = uVar8;\n      }\n      *(undefined4 *)((int)pvVar11 + 8) = 0;\n      pvVar1 = pvVar11;\n      if (local_b8 != (void *)0x0) {\n        *(void **)((int)local_c4 + 8) = pvVar11;\n        pvVar1 = local_b8;\n      }\n      local_b8 = pvVar1;\n      local_c4 = pvVar11;\n      if (local_d4 == 10000) {\n        if (param_1[10] == 0) {\n          iVar17 = *(int *)(iVar2 + 0x2c);\n          if ((*(byte *)(iVar17 + 0x2d) & 2) != 0) {\n            iVar18 = *(int *)(iVar17 + 0x30);\n            if (iVar18 == 0) {\n              iVar18 = FUN_0001df90(0xd,0,FUN_000246b0,FUN_000246e0,puVar6);\n              *(int *)(iVar17 + 0x30) = iVar18;\n              if (iVar18 != 0) goto LAB_00025920;\nLAB_000259b0:\n              if ((local_9c < 0) ||\n                 (iVar19 = fstatfs64(local_9c,&local_74), iVar17 = local_74.f_type, iVar19 != 0))\n              goto LAB_00025a48;\n              local_d4 = local_74.f_type;\n              if ((iVar18 != 0) &&\n                 (__ptr_00 = (undefined4 *)malloc(0xc), __ptr_00 != (undefined4 *)0x0)) {\n                uVar12 = *(undefined4 *)(iVar2 + 0x44);\n                __ptr_00[1] = *(undefined4 *)(iVar2 + 0x48);\n                *__ptr_00 = uVar12;\n                __ptr_00[2] = iVar17;\n                puVar20 = (undefined4 *)FUN_0001e8d0(iVar18,__ptr_00);\n                if (puVar20 == (undefined4 *)0x0) {\n                  free(__ptr_00);\n                  local_d4 = local_74.f_type;\n                }\n                else {\n                  if (__ptr_00 != puVar20) {\n                    /* WARNING: Subroutine does not return */\n                    abort();\n                  }\n                  local_d4 = local_74.f_type;\n                }\n              }\n            }\n            else {\nLAB_00025920:\n              local_7c = *(undefined4 *)(iVar2 + 0x48);\n              local_80 = *(undefined4 *)(iVar2 + 0x44);\n              iVar17 = FUN_0001dce0(iVar18,&local_80);\n              if (iVar17 == 0) goto LAB_000259b0;\n              local_d4 = *(int *)(iVar17 + 8);\n            }\n            if (((local_d4 == 0x6969) || (local_d4 == 0x1021994)) || (local_d4 == -0xacb2be)) {\n              bVar4 = false;\n              goto LAB_00025473;\n            }\n          }\nLAB_00025a48:\n          bVar4 = true;\n        }\nLAB_00025473:\n        local_d4 = 0x2711;\n        goto LAB_000252fb;\n      }\n      local_d4 = local_d4 + 1;\n    } while (local_d4 < local_a8);\nLAB_000256de:\n    if (bVar3) {\n      iVar15 = param_1[5];\n      for (iVar17 = param_1[1]; iVar17 != 0; iVar17 = *(int *)(iVar17 + 8)) {\n        while (*(int *)(iVar17 + 0x18) != iVar17 + 0xa4) {\n          iVar18 = *(int *)(iVar17 + 0x1c);\n          *(int *)(iVar17 + 0x1c) = iVar15;\n          *(int *)(iVar17 + 0x18) = (*(int *)(iVar17 + 0x18) - iVar18) + iVar15;\n          iVar17 = *(int *)(iVar17 + 8);\n          if (iVar17 == 0) goto LAB_00025aef;\n        }\n        *(int *)(iVar17 + 0x1c) = iVar15;\n      }\nLAB_00025aef:\n      iVar17 = *(int *)((int)local_b8 + 0x30);\n      pvVar11 = local_b8;\n      while (-1 < iVar17) {\n        while( true ) {\n          if (*(int *)((int)pvVar11 + 0x18) != (int)pvVar11 + 0xa4) {\n            *(int *)((int)pvVar11 + 0x18) =\n                 (*(int *)((int)pvVar11 + 0x18) - *(int *)((int)pvVar11 + 0x1c)) + iVar15;\n          }\n          pvVar1 = *(void **)((int)pvVar11 + 8);\n          *(int *)((int)pvVar11 + 0x1c) = iVar15;\n          if (pvVar1 == (void *)0x0) break;\n          pvVar11 = pvVar1;\n          if (*(int *)((int)pvVar1 + 0x30) < 0) goto LAB_000256e9;\n        }\n        pvVar11 = *(void **)((int)pvVar11 + 4);\n        iVar17 = *(int *)((int)pvVar11 + 0x30);\n      }\n    }\nLAB_000256e9:\n    if ((*(byte *)(param_1 + 0xb) & 4) != 0) {\n      if ((param_1[8] == local_d0) || (local_d4 == 0)) {\n        local_a4 = local_a4 + -1;\n      }\n      *local_a4 = 0;\n    }\n    if ((pDVar21 == (DIR *)0x0) && (bVar25)) {\n      if ((param_2 == 1) || (local_d4 == 0)) {\n        if (*(int *)(iVar2 + 0x30) == 0) {\n          iVar15 = FUN_00024bb0();\n        }\n        else {\n          iVar15 = FUN_00024e60(&DAT_0002e141);\n        }\n        if (iVar15 != 0) {\n          *(undefined2 *)(iVar2 + 0x3c) = 7;\n          param_1[0xb] = param_1[0xb] | 0x4000;\n          while (pvVar11 = local_b8, local_b8 != (void *)0x0) {\n            while( true ) {\n              local_b8 = *(void **)((int)pvVar11 + 8);\n              if (*(DIR **)((int)pvVar11 + 0xc) == (DIR *)0x0) break;\n              closedir(*(DIR **)((int)pvVar11 + 0xc));\n              free(pvVar11);\n              pvVar11 = local_b8;\n              if (local_b8 == (void *)0x0) goto LAB_00025c40;\n            }\n            free(pvVar11);\n          }\n          goto LAB_00025c40;\n        }\n        goto LAB_0002574d;\n      }\n    }\n    else {\nLAB_0002574d:\n      if (local_d4 == 0) {\n        if (((param_2 == 3) && (*(short *)(iVar2 + 0x3c) != 4)) && (*(short *)(iVar2 + 0x3c) != 7))\n        {\n          *(undefined2 *)(iVar2 + 0x3c) = 6;\n        }\n        if (local_b8 != (void *)0x0) {\n          pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n          pvVar11 = *(void **)((int)local_b8 + 8);\n          if (pDVar21 == (DIR *)0x0) goto LAB_00025c94;\n          do {\n            closedir(pDVar21);\n            free(local_b8);\n            local_b8 = pvVar11;\n            while( true ) {\n              if (local_b8 == (void *)0x0) goto LAB_00025c40;\n              pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n              pvVar11 = *(void **)((int)local_b8 + 8);\n              if (pDVar21 != (DIR *)0x0) break;\nLAB_00025c94:\n              free(local_b8);\n              local_b8 = pvVar11;\n            }\n          } while( true );\n        }\n        goto LAB_00025c40;\n      }\n    }\n    if (bVar4) {\n      param_1[10] = (int)FUN_00024700;\n      local_b8 = (void *)FUN_000248e0();\n      param_1[10] = 0;\n    }\n    else if ((param_1[10] != 0) && (local_d4 != 1)) {\n      local_b8 = (void *)FUN_000248e0();\n    }\n  }" if (parenthesized_expression "(pDVar21 == (DIR *)0x0)" ( (binary_expression "pDVar21 == (DIR *)0x0" identifier == (cast_expression "(DIR *)0x0" ( (type_descriptor "DIR *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    uVar13 = param_1[0xb];\n    uVar23 = uVar13 & 0x10;\n    if (((uVar23 != 0) && (uVar23 = 0x20000, (uVar13 & 1) != 0)) &&\n       (uVar23 = *(uint *)(iVar2 + 0x30), uVar23 != 0)) {\n      uVar23 = 0x20000;\n    }\n    iVar15 = -100;\n    if ((uVar13 & 0x204) == 0x200) {\n      iVar15 = param_1[7];\n    }\n    local_9c = FUN_00029520(iVar15,*(undefined4 *)(iVar2 + 0x18),\n                            (uVar13 & 0x800) << 7 | uVar23 | 0x90900);\n    if (local_9c < 0) {\n      *(undefined4 *)(iVar2 + 0xc) = 0;\n    }\n    else {\n      pDVar16 = fdopendir(local_9c);\n      if (pDVar16 != (DIR *)0x0) {\n        *(DIR **)(iVar2 + 0xc) = pDVar16;\n        if (*(short *)(iVar2 + 0x3c) == 0xb) {\n          uVar8 = FUN_00024740();\n          *(undefined2 *)(iVar2 + 0x3c) = uVar8;\n        }\n        else if ((param_1[0xb] & 0x100U) != 0) {\n          FUN_00024aa0();\n          FUN_00024740();\n          cVar7 = FUN_000249d0();\n          if (cVar7 == '\0') {\n            piVar9 = __errno_location();\n            local_b8 = (void *)0x0;\n            *piVar9 = 0xc;\n            goto LAB_0002563f;\n          }\n        }\n        local_a8 = (-(uint)(param_1[10] == 0) & 0x186a1) - 1;\n        if (param_2 == 2) {\nLAB_00025bc8:\n          bVar25 = false;\n          uVar13 = param_1[0xb];\n          goto LAB_00025223;\n        }\n        if ((((param_1[0xb] & 0x38U) == 0x18) && (*(int *)(iVar2 + 0x58) == 2)) &&\n           (iVar15 = FUN_00024ca0(), iVar15 != 0)) {\n          if (param_2 != 3) goto LAB_00025bc8;\n          bVar25 = false;\n        }\n        else {\n          bVar25 = param_2 == 3;\n        }\n        if (((*(byte *)((int)param_1 + 0x2d) & 2) == 0) ||\n           (local_9c = FUN_000243f0(local_9c,0x406,3), -1 < local_9c)) {\n          iVar15 = FUN_00024e60(0);\n          if (iVar15 == 0) goto LAB_0002521b;\n          pDVar16 = *(DIR **)(iVar2 + 0xc);\n          uVar24 = *(ushort *)(iVar2 + 0x3e) | 1;\n          if (bVar25) goto LAB_000258a0;\nLAB_000258ae:\n          *(ushort *)(iVar2 + 0x3e) = uVar24;\n          closedir(pDVar16);\n          *(undefined4 *)(iVar2 + 0xc) = 0;\n          uVar13 = param_1[0xb];\n          if (((uVar13 & 0x200) != 0) && (-1 < local_9c)) {\n            close(local_9c);\n            uVar13 = param_1[0xb];\n          }\n        }\n        else {\n          pDVar16 = *(DIR **)(iVar2 + 0xc);\n          uVar24 = *(ushort *)(iVar2 + 0x3e) | 1;\n          if (bVar25) {\nLAB_000258a0:\n            piVar9 = __errno_location();\n            *(int *)(iVar2 + 0x20) = *piVar9;\n            goto LAB_000258ae;\n          }\n          *(ushort *)(iVar2 + 0x3e) = uVar24;\n          closedir(pDVar16);\n          uVar13 = param_1[0xb];\n        }\n        bVar25 = false;\n        *(undefined4 *)(iVar2 + 0xc) = 0;\n        goto LAB_00025223;\n      }\n      piVar9 = __errno_location();\n      iVar15 = *piVar9;\n      close(local_9c);\n      *piVar9 = iVar15;\n      *(undefined4 *)(iVar2 + 0xc) = 0;\n    }\njoined_r0x00025c30:\n    if (param_2 == 3) {\n      *(undefined2 *)(iVar2 + 0x3c) = 4;\n      piVar9 = __errno_location();\n      *(int *)(iVar2 + 0x20) = *piVar9;\n    }\nLAB_00025c40:\n    local_b8 = (void *)0x0;\n  }" { (expression_statement "uVar13 = param_1[0xb];" (assignment_expression "uVar13 = param_1[0xb]" identifier = (subscript_expression "param_1[0xb]" identifier [ number_literal ])) ;) (expression_statement "uVar23 = uVar13 & 0x10;" (assignment_expression "uVar23 = uVar13 & 0x10" identifier = (binary_expression "uVar13 & 0x10" identifier & number_literal)) ;) (if_statement "if (((uVar23 != 0) && (uVar23 = 0x20000, (uVar13 & 1) != 0)) &&\n       (uVar23 = *(uint *)(iVar2 + 0x30), uVar23 != 0)) {\n      uVar23 = 0x20000;\n    }" if (parenthesized_expression "(((uVar23 != 0) && (uVar23 = 0x20000, (uVar13 & 1) != 0)) &&\n       (uVar23 = *(uint *)(iVar2 + 0x30), uVar23 != 0))" ( (binary_expression "((uVar23 != 0) && (uVar23 = 0x20000, (uVar13 & 1) != 0)) &&\n       (uVar23 = *(uint *)(iVar2 + 0x30), uVar23 != 0)" (parenthesized_expression "((uVar23 != 0) && (uVar23 = 0x20000, (uVar13 & 1) != 0))" ( (binary_expression "(uVar23 != 0) && (uVar23 = 0x20000, (uVar13 & 1) != 0)" (parenthesized_expression "(uVar23 != 0)" ( (binary_expression "uVar23 != 0" identifier != number_literal) )) && (parenthesized_expression "(uVar23 = 0x20000, (uVar13 & 1) != 0)" ( (comma_expression "uVar23 = 0x20000, (uVar13 & 1) != 0" (assignment_expression "uVar23 = 0x20000" identifier = number_literal) , (binary_expression "(uVar13 & 1) != 0" (parenthesized_expression "(uVar13 & 1)" ( (binary_expression "uVar13 & 1" identifier & number_literal) )) != number_literal)) ))) )) && (parenthesized_expression "(uVar23 = *(uint *)(iVar2 + 0x30), uVar23 != 0)" ( (comma_expression "uVar23 = *(uint *)(iVar2 + 0x30), uVar23 != 0" (assignment_expression "uVar23 = *(uint *)(iVar2 + 0x30)" identifier = (pointer_expression "*(uint *)(iVar2 + 0x30)" * (cast_expression "(uint *)(iVar2 + 0x30)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x30)" ( (binary_expression "iVar2 + 0x30" identifier + number_literal) ))))) , (binary_expression "uVar23 != 0" identifier != number_literal)) ))) )) (compound_statement "{\n      uVar23 = 0x20000;\n    }" { (expression_statement "uVar23 = 0x20000;" (assignment_expression "uVar23 = 0x20000" identifier = number_literal) ;) })) (expression_statement "iVar15 = -100;" (assignment_expression "iVar15 = -100" identifier = number_literal) ;) (if_statement "if ((uVar13 & 0x204) == 0x200) {\n      iVar15 = param_1[7];\n    }" if (parenthesized_expression "((uVar13 & 0x204) == 0x200)" ( (binary_expression "(uVar13 & 0x204) == 0x200" (parenthesized_expression "(uVar13 & 0x204)" ( (binary_expression "uVar13 & 0x204" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n      iVar15 = param_1[7];\n    }" { (expression_statement "iVar15 = param_1[7];" (assignment_expression "iVar15 = param_1[7]" identifier = (subscript_expression "param_1[7]" identifier [ number_literal ])) ;) })) (expression_statement "local_9c = FUN_00029520(iVar15,*(undefined4 *)(iVar2 + 0x18),\n                            (uVar13 & 0x800) << 7 | uVar23 | 0x90900);" (assignment_expression "local_9c = FUN_00029520(iVar15,*(undefined4 *)(iVar2 + 0x18),\n                            (uVar13 & 0x800) << 7 | uVar23 | 0x90900)" identifier = (call_expression "FUN_00029520(iVar15,*(undefined4 *)(iVar2 + 0x18),\n                            (uVar13 & 0x800) << 7 | uVar23 | 0x90900)" identifier (argument_list "(iVar15,*(undefined4 *)(iVar2 + 0x18),\n                            (uVar13 & 0x800) << 7 | uVar23 | 0x90900)" ( identifier , (pointer_expression "*(undefined4 *)(iVar2 + 0x18)" * (cast_expression "(undefined4 *)(iVar2 + 0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x18)" ( (binary_expression "iVar2 + 0x18" identifier + number_literal) )))) , (binary_expression "(uVar13 & 0x800) << 7 | uVar23 | 0x90900" (binary_expression "(uVar13 & 0x800) << 7 | uVar23" (binary_expression "(uVar13 & 0x800) << 7" (parenthesized_expression "(uVar13 & 0x800)" ( (binary_expression "uVar13 & 0x800" identifier & number_literal) )) << number_literal) | identifier) | number_literal) )))) ;) (if_statement "if (local_9c < 0) {\n      *(undefined4 *)(iVar2 + 0xc) = 0;\n    }\n    else {\n      pDVar16 = fdopendir(local_9c);\n      if (pDVar16 != (DIR *)0x0) {\n        *(DIR **)(iVar2 + 0xc) = pDVar16;\n        if (*(short *)(iVar2 + 0x3c) == 0xb) {\n          uVar8 = FUN_00024740();\n          *(undefined2 *)(iVar2 + 0x3c) = uVar8;\n        }\n        else if ((param_1[0xb] & 0x100U) != 0) {\n          FUN_00024aa0();\n          FUN_00024740();\n          cVar7 = FUN_000249d0();\n          if (cVar7 == '\0') {\n            piVar9 = __errno_location();\n            local_b8 = (void *)0x0;\n            *piVar9 = 0xc;\n            goto LAB_0002563f;\n          }\n        }\n        local_a8 = (-(uint)(param_1[10] == 0) & 0x186a1) - 1;\n        if (param_2 == 2) {\nLAB_00025bc8:\n          bVar25 = false;\n          uVar13 = param_1[0xb];\n          goto LAB_00025223;\n        }\n        if ((((param_1[0xb] & 0x38U) == 0x18) && (*(int *)(iVar2 + 0x58) == 2)) &&\n           (iVar15 = FUN_00024ca0(), iVar15 != 0)) {\n          if (param_2 != 3) goto LAB_00025bc8;\n          bVar25 = false;\n        }\n        else {\n          bVar25 = param_2 == 3;\n        }\n        if (((*(byte *)((int)param_1 + 0x2d) & 2) == 0) ||\n           (local_9c = FUN_000243f0(local_9c,0x406,3), -1 < local_9c)) {\n          iVar15 = FUN_00024e60(0);\n          if (iVar15 == 0) goto LAB_0002521b;\n          pDVar16 = *(DIR **)(iVar2 + 0xc);\n          uVar24 = *(ushort *)(iVar2 + 0x3e) | 1;\n          if (bVar25) goto LAB_000258a0;\nLAB_000258ae:\n          *(ushort *)(iVar2 + 0x3e) = uVar24;\n          closedir(pDVar16);\n          *(undefined4 *)(iVar2 + 0xc) = 0;\n          uVar13 = param_1[0xb];\n          if (((uVar13 & 0x200) != 0) && (-1 < local_9c)) {\n            close(local_9c);\n            uVar13 = param_1[0xb];\n          }\n        }\n        else {\n          pDVar16 = *(DIR **)(iVar2 + 0xc);\n          uVar24 = *(ushort *)(iVar2 + 0x3e) | 1;\n          if (bVar25) {\nLAB_000258a0:\n            piVar9 = __errno_location();\n            *(int *)(iVar2 + 0x20) = *piVar9;\n            goto LAB_000258ae;\n          }\n          *(ushort *)(iVar2 + 0x3e) = uVar24;\n          closedir(pDVar16);\n          uVar13 = param_1[0xb];\n        }\n        bVar25 = false;\n        *(undefined4 *)(iVar2 + 0xc) = 0;\n        goto LAB_00025223;\n      }\n      piVar9 = __errno_location();\n      iVar15 = *piVar9;\n      close(local_9c);\n      *piVar9 = iVar15;\n      *(undefined4 *)(iVar2 + 0xc) = 0;\n    }" if (parenthesized_expression "(local_9c < 0)" ( (binary_expression "local_9c < 0" identifier < number_literal) )) (compound_statement "{\n      *(undefined4 *)(iVar2 + 0xc) = 0;\n    }" { (expression_statement "*(undefined4 *)(iVar2 + 0xc) = 0;" (assignment_expression "*(undefined4 *)(iVar2 + 0xc) = 0" (pointer_expression "*(undefined4 *)(iVar2 + 0xc)" * (cast_expression "(undefined4 *)(iVar2 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0xc)" ( (binary_expression "iVar2 + 0xc" identifier + number_literal) )))) = number_literal) ;) }) (else_clause "else {\n      pDVar16 = fdopendir(local_9c);\n      if (pDVar16 != (DIR *)0x0) {\n        *(DIR **)(iVar2 + 0xc) = pDVar16;\n        if (*(short *)(iVar2 + 0x3c) == 0xb) {\n          uVar8 = FUN_00024740();\n          *(undefined2 *)(iVar2 + 0x3c) = uVar8;\n        }\n        else if ((param_1[0xb] & 0x100U) != 0) {\n          FUN_00024aa0();\n          FUN_00024740();\n          cVar7 = FUN_000249d0();\n          if (cVar7 == '\0') {\n            piVar9 = __errno_location();\n            local_b8 = (void *)0x0;\n            *piVar9 = 0xc;\n            goto LAB_0002563f;\n          }\n        }\n        local_a8 = (-(uint)(param_1[10] == 0) & 0x186a1) - 1;\n        if (param_2 == 2) {\nLAB_00025bc8:\n          bVar25 = false;\n          uVar13 = param_1[0xb];\n          goto LAB_00025223;\n        }\n        if ((((param_1[0xb] & 0x38U) == 0x18) && (*(int *)(iVar2 + 0x58) == 2)) &&\n           (iVar15 = FUN_00024ca0(), iVar15 != 0)) {\n          if (param_2 != 3) goto LAB_00025bc8;\n          bVar25 = false;\n        }\n        else {\n          bVar25 = param_2 == 3;\n        }\n        if (((*(byte *)((int)param_1 + 0x2d) & 2) == 0) ||\n           (local_9c = FUN_000243f0(local_9c,0x406,3), -1 < local_9c)) {\n          iVar15 = FUN_00024e60(0);\n          if (iVar15 == 0) goto LAB_0002521b;\n          pDVar16 = *(DIR **)(iVar2 + 0xc);\n          uVar24 = *(ushort *)(iVar2 + 0x3e) | 1;\n          if (bVar25) goto LAB_000258a0;\nLAB_000258ae:\n          *(ushort *)(iVar2 + 0x3e) = uVar24;\n          closedir(pDVar16);\n          *(undefined4 *)(iVar2 + 0xc) = 0;\n          uVar13 = param_1[0xb];\n          if (((uVar13 & 0x200) != 0) && (-1 < local_9c)) {\n            close(local_9c);\n            uVar13 = param_1[0xb];\n          }\n        }\n        else {\n          pDVar16 = *(DIR **)(iVar2 + 0xc);\n          uVar24 = *(ushort *)(iVar2 + 0x3e) | 1;\n          if (bVar25) {\nLAB_000258a0:\n            piVar9 = __errno_location();\n            *(int *)(iVar2 + 0x20) = *piVar9;\n            goto LAB_000258ae;\n          }\n          *(ushort *)(iVar2 + 0x3e) = uVar24;\n          closedir(pDVar16);\n          uVar13 = param_1[0xb];\n        }\n        bVar25 = false;\n        *(undefined4 *)(iVar2 + 0xc) = 0;\n        goto LAB_00025223;\n      }\n      piVar9 = __errno_location();\n      iVar15 = *piVar9;\n      close(local_9c);\n      *piVar9 = iVar15;\n      *(undefined4 *)(iVar2 + 0xc) = 0;\n    }" else (compound_statement "{\n      pDVar16 = fdopendir(local_9c);\n      if (pDVar16 != (DIR *)0x0) {\n        *(DIR **)(iVar2 + 0xc) = pDVar16;\n        if (*(short *)(iVar2 + 0x3c) == 0xb) {\n          uVar8 = FUN_00024740();\n          *(undefined2 *)(iVar2 + 0x3c) = uVar8;\n        }\n        else if ((param_1[0xb] & 0x100U) != 0) {\n          FUN_00024aa0();\n          FUN_00024740();\n          cVar7 = FUN_000249d0();\n          if (cVar7 == '\0') {\n            piVar9 = __errno_location();\n            local_b8 = (void *)0x0;\n            *piVar9 = 0xc;\n            goto LAB_0002563f;\n          }\n        }\n        local_a8 = (-(uint)(param_1[10] == 0) & 0x186a1) - 1;\n        if (param_2 == 2) {\nLAB_00025bc8:\n          bVar25 = false;\n          uVar13 = param_1[0xb];\n          goto LAB_00025223;\n        }\n        if ((((param_1[0xb] & 0x38U) == 0x18) && (*(int *)(iVar2 + 0x58) == 2)) &&\n           (iVar15 = FUN_00024ca0(), iVar15 != 0)) {\n          if (param_2 != 3) goto LAB_00025bc8;\n          bVar25 = false;\n        }\n        else {\n          bVar25 = param_2 == 3;\n        }\n        if (((*(byte *)((int)param_1 + 0x2d) & 2) == 0) ||\n           (local_9c = FUN_000243f0(local_9c,0x406,3), -1 < local_9c)) {\n          iVar15 = FUN_00024e60(0);\n          if (iVar15 == 0) goto LAB_0002521b;\n          pDVar16 = *(DIR **)(iVar2 + 0xc);\n          uVar24 = *(ushort *)(iVar2 + 0x3e) | 1;\n          if (bVar25) goto LAB_000258a0;\nLAB_000258ae:\n          *(ushort *)(iVar2 + 0x3e) = uVar24;\n          closedir(pDVar16);\n          *(undefined4 *)(iVar2 + 0xc) = 0;\n          uVar13 = param_1[0xb];\n          if (((uVar13 & 0x200) != 0) && (-1 < local_9c)) {\n            close(local_9c);\n            uVar13 = param_1[0xb];\n          }\n        }\n        else {\n          pDVar16 = *(DIR **)(iVar2 + 0xc);\n          uVar24 = *(ushort *)(iVar2 + 0x3e) | 1;\n          if (bVar25) {\nLAB_000258a0:\n            piVar9 = __errno_location();\n            *(int *)(iVar2 + 0x20) = *piVar9;\n            goto LAB_000258ae;\n          }\n          *(ushort *)(iVar2 + 0x3e) = uVar24;\n          closedir(pDVar16);\n          uVar13 = param_1[0xb];\n        }\n        bVar25 = false;\n        *(undefined4 *)(iVar2 + 0xc) = 0;\n        goto LAB_00025223;\n      }\n      piVar9 = __errno_location();\n      iVar15 = *piVar9;\n      close(local_9c);\n      *piVar9 = iVar15;\n      *(undefined4 *)(iVar2 + 0xc) = 0;\n    }" { (expression_statement "pDVar16 = fdopendir(local_9c);" (assignment_expression "pDVar16 = fdopendir(local_9c)" identifier = (call_expression "fdopendir(local_9c)" identifier (argument_list "(local_9c)" ( identifier )))) ;) (if_statement "if (pDVar16 != (DIR *)0x0) {\n        *(DIR **)(iVar2 + 0xc) = pDVar16;\n        if (*(short *)(iVar2 + 0x3c) == 0xb) {\n          uVar8 = FUN_00024740();\n          *(undefined2 *)(iVar2 + 0x3c) = uVar8;\n        }\n        else if ((param_1[0xb] & 0x100U) != 0) {\n          FUN_00024aa0();\n          FUN_00024740();\n          cVar7 = FUN_000249d0();\n          if (cVar7 == '\0') {\n            piVar9 = __errno_location();\n            local_b8 = (void *)0x0;\n            *piVar9 = 0xc;\n            goto LAB_0002563f;\n          }\n        }\n        local_a8 = (-(uint)(param_1[10] == 0) & 0x186a1) - 1;\n        if (param_2 == 2) {\nLAB_00025bc8:\n          bVar25 = false;\n          uVar13 = param_1[0xb];\n          goto LAB_00025223;\n        }\n        if ((((param_1[0xb] & 0x38U) == 0x18) && (*(int *)(iVar2 + 0x58) == 2)) &&\n           (iVar15 = FUN_00024ca0(), iVar15 != 0)) {\n          if (param_2 != 3) goto LAB_00025bc8;\n          bVar25 = false;\n        }\n        else {\n          bVar25 = param_2 == 3;\n        }\n        if (((*(byte *)((int)param_1 + 0x2d) & 2) == 0) ||\n           (local_9c = FUN_000243f0(local_9c,0x406,3), -1 < local_9c)) {\n          iVar15 = FUN_00024e60(0);\n          if (iVar15 == 0) goto LAB_0002521b;\n          pDVar16 = *(DIR **)(iVar2 + 0xc);\n          uVar24 = *(ushort *)(iVar2 + 0x3e) | 1;\n          if (bVar25) goto LAB_000258a0;\nLAB_000258ae:\n          *(ushort *)(iVar2 + 0x3e) = uVar24;\n          closedir(pDVar16);\n          *(undefined4 *)(iVar2 + 0xc) = 0;\n          uVar13 = param_1[0xb];\n          if (((uVar13 & 0x200) != 0) && (-1 < local_9c)) {\n            close(local_9c);\n            uVar13 = param_1[0xb];\n          }\n        }\n        else {\n          pDVar16 = *(DIR **)(iVar2 + 0xc);\n          uVar24 = *(ushort *)(iVar2 + 0x3e) | 1;\n          if (bVar25) {\nLAB_000258a0:\n            piVar9 = __errno_location();\n            *(int *)(iVar2 + 0x20) = *piVar9;\n            goto LAB_000258ae;\n          }\n          *(ushort *)(iVar2 + 0x3e) = uVar24;\n          closedir(pDVar16);\n          uVar13 = param_1[0xb];\n        }\n        bVar25 = false;\n        *(undefined4 *)(iVar2 + 0xc) = 0;\n        goto LAB_00025223;\n      }" if (parenthesized_expression "(pDVar16 != (DIR *)0x0)" ( (binary_expression "pDVar16 != (DIR *)0x0" identifier != (cast_expression "(DIR *)0x0" ( (type_descriptor "DIR *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        *(DIR **)(iVar2 + 0xc) = pDVar16;\n        if (*(short *)(iVar2 + 0x3c) == 0xb) {\n          uVar8 = FUN_00024740();\n          *(undefined2 *)(iVar2 + 0x3c) = uVar8;\n        }\n        else if ((param_1[0xb] & 0x100U) != 0) {\n          FUN_00024aa0();\n          FUN_00024740();\n          cVar7 = FUN_000249d0();\n          if (cVar7 == '\0') {\n            piVar9 = __errno_location();\n            local_b8 = (void *)0x0;\n            *piVar9 = 0xc;\n            goto LAB_0002563f;\n          }\n        }\n        local_a8 = (-(uint)(param_1[10] == 0) & 0x186a1) - 1;\n        if (param_2 == 2) {\nLAB_00025bc8:\n          bVar25 = false;\n          uVar13 = param_1[0xb];\n          goto LAB_00025223;\n        }\n        if ((((param_1[0xb] & 0x38U) == 0x18) && (*(int *)(iVar2 + 0x58) == 2)) &&\n           (iVar15 = FUN_00024ca0(), iVar15 != 0)) {\n          if (param_2 != 3) goto LAB_00025bc8;\n          bVar25 = false;\n        }\n        else {\n          bVar25 = param_2 == 3;\n        }\n        if (((*(byte *)((int)param_1 + 0x2d) & 2) == 0) ||\n           (local_9c = FUN_000243f0(local_9c,0x406,3), -1 < local_9c)) {\n          iVar15 = FUN_00024e60(0);\n          if (iVar15 == 0) goto LAB_0002521b;\n          pDVar16 = *(DIR **)(iVar2 + 0xc);\n          uVar24 = *(ushort *)(iVar2 + 0x3e) | 1;\n          if (bVar25) goto LAB_000258a0;\nLAB_000258ae:\n          *(ushort *)(iVar2 + 0x3e) = uVar24;\n          closedir(pDVar16);\n          *(undefined4 *)(iVar2 + 0xc) = 0;\n          uVar13 = param_1[0xb];\n          if (((uVar13 & 0x200) != 0) && (-1 < local_9c)) {\n            close(local_9c);\n            uVar13 = param_1[0xb];\n          }\n        }\n        else {\n          pDVar16 = *(DIR **)(iVar2 + 0xc);\n          uVar24 = *(ushort *)(iVar2 + 0x3e) | 1;\n          if (bVar25) {\nLAB_000258a0:\n            piVar9 = __errno_location();\n            *(int *)(iVar2 + 0x20) = *piVar9;\n            goto LAB_000258ae;\n          }\n          *(ushort *)(iVar2 + 0x3e) = uVar24;\n          closedir(pDVar16);\n          uVar13 = param_1[0xb];\n        }\n        bVar25 = false;\n        *(undefined4 *)(iVar2 + 0xc) = 0;\n        goto LAB_00025223;\n      }" { (expression_statement "*(DIR **)(iVar2 + 0xc) = pDVar16;" (assignment_expression "*(DIR **)(iVar2 + 0xc) = pDVar16" (pointer_expression "*(DIR **)(iVar2 + 0xc)" * (cast_expression "(DIR **)(iVar2 + 0xc)" ( (type_descriptor "DIR **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar2 + 0xc)" ( (binary_expression "iVar2 + 0xc" identifier + number_literal) )))) = identifier) ;) (if_statement "if (*(short *)(iVar2 + 0x3c) == 0xb) {\n          uVar8 = FUN_00024740();\n          *(undefined2 *)(iVar2 + 0x3c) = uVar8;\n        }\n        else if ((param_1[0xb] & 0x100U) != 0) {\n          FUN_00024aa0();\n          FUN_00024740();\n          cVar7 = FUN_000249d0();\n          if (cVar7 == '\0') {\n            piVar9 = __errno_location();\n            local_b8 = (void *)0x0;\n            *piVar9 = 0xc;\n            goto LAB_0002563f;\n          }\n        }" if (parenthesized_expression "(*(short *)(iVar2 + 0x3c) == 0xb)" ( (binary_expression "*(short *)(iVar2 + 0x3c) == 0xb" (pointer_expression "*(short *)(iVar2 + 0x3c)" * (cast_expression "(short *)(iVar2 + 0x3c)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x3c)" ( (binary_expression "iVar2 + 0x3c" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n          uVar8 = FUN_00024740();\n          *(undefined2 *)(iVar2 + 0x3c) = uVar8;\n        }" { (expression_statement "uVar8 = FUN_00024740();" (assignment_expression "uVar8 = FUN_00024740()" identifier = (call_expression "FUN_00024740()" identifier (argument_list "()" ( )))) ;) (expression_statement "*(undefined2 *)(iVar2 + 0x3c) = uVar8;" (assignment_expression "*(undefined2 *)(iVar2 + 0x3c) = uVar8" (pointer_expression "*(undefined2 *)(iVar2 + 0x3c)" * (cast_expression "(undefined2 *)(iVar2 + 0x3c)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x3c)" ( (binary_expression "iVar2 + 0x3c" identifier + number_literal) )))) = identifier) ;) }) (else_clause "else if ((param_1[0xb] & 0x100U) != 0) {\n          FUN_00024aa0();\n          FUN_00024740();\n          cVar7 = FUN_000249d0();\n          if (cVar7 == '\0') {\n            piVar9 = __errno_location();\n            local_b8 = (void *)0x0;\n            *piVar9 = 0xc;\n            goto LAB_0002563f;\n          }\n        }" else (if_statement "if ((param_1[0xb] & 0x100U) != 0) {\n          FUN_00024aa0();\n          FUN_00024740();\n          cVar7 = FUN_000249d0();\n          if (cVar7 == '\0') {\n            piVar9 = __errno_location();\n            local_b8 = (void *)0x0;\n            *piVar9 = 0xc;\n            goto LAB_0002563f;\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_00024aa0();\n          FUN_00024740();\n          cVar7 = FUN_000249d0();\n          if (cVar7 == '\0') {\n            piVar9 = __errno_location();\n            local_b8 = (void *)0x0;\n            *piVar9 = 0xc;\n            goto LAB_0002563f;\n          }\n        }" { (expression_statement "FUN_00024aa0();" (call_expression "FUN_00024aa0()" identifier (argument_list "()" ( ))) ;) (expression_statement "FUN_00024740();" (call_expression "FUN_00024740()" identifier (argument_list "()" ( ))) ;) (expression_statement "cVar7 = FUN_000249d0();" (assignment_expression "cVar7 = FUN_000249d0()" identifier = (call_expression "FUN_000249d0()" identifier (argument_list "()" ( )))) ;) (if_statement "if (cVar7 == '\0') {\n            piVar9 = __errno_location();\n            local_b8 = (void *)0x0;\n            *piVar9 = 0xc;\n            goto LAB_0002563f;\n          }" if (parenthesized_expression "(cVar7 == '\0')" ( (binary_expression "cVar7 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n            piVar9 = __errno_location();\n            local_b8 = (void *)0x0;\n            *piVar9 = 0xc;\n            goto LAB_0002563f;\n          }" { (expression_statement "piVar9 = __errno_location();" (assignment_expression "piVar9 = __errno_location()" identifier = (call_expression "__errno_location()" identifier (argument_list "()" ( )))) ;) (expression_statement "local_b8 = (void *)0x0;" (assignment_expression "local_b8 = (void *)0x0" identifier = (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "*piVar9 = 0xc;" (assignment_expression "*piVar9 = 0xc" (pointer_expression "*piVar9" * identifier) = number_literal) ;) (goto_statement "goto LAB_0002563f;" goto statement_identifier ;) })) })))) (expression_statement "local_a8 = (-(uint)(param_1[10] == 0) & 0x186a1) - 1;" (assignment_expression "local_a8 = (-(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_00025bc8:\n          bVar25 = false;\n          uVar13 = param_1[0xb];\n          goto LAB_00025223;\n        }" if (parenthesized_expression "(param_2 == 2)" ( (binary_expression "param_2 == 2" identifier == number_literal) )) (compound_statement "{\nLAB_00025bc8:\n          bVar25 = false;\n          uVar13 = param_1[0xb];\n          goto LAB_00025223;\n        }" { (labeled_statement "LAB_00025bc8:\n          bVar25 = false;" statement_identifier : (expression_statement "bVar25 = false;" (assignment_expression "bVar25 = false" identifier = false) ;)) (expression_statement "uVar13 = param_1[0xb];" (assignment_expression "uVar13 = param_1[0xb]" identifier = (subscript_expression "param_1[0xb]" identifier [ number_literal ])) ;) (goto_statement "goto LAB_00025223;" goto statement_identifier ;) })) (if_statement "if ((((param_1[0xb] & 0x38U) == 0x18) && (*(int *)(iVar2 + 0x58) == 2)) &&\n           (iVar15 = FUN_00024ca0(), iVar15 != 0)) {\n          if (param_2 != 3) goto LAB_00025bc8;\n          bVar25 = false;\n        }\n        else {\n          bVar25 = param_2 == 3;\n        }" if (parenthesized_expression "((((param_1[0xb] & 0x38U) == 0x18) && (*(int *)(iVar2 + 0x58) == 2)) &&\n           (iVar15 = FUN_00024ca0(), iVar15 != 0))" ( (binary_expression "(((param_1[0xb] & 0x38U) == 0x18) && (*(int *)(iVar2 + 0x58) == 2)) &&\n           (iVar15 = FUN_00024ca0(), iVar15 != 0)" (parenthesized_expression "(((param_1[0xb] & 0x38U) == 0x18) && (*(int *)(iVar2 + 0x58) == 2))" ( (binary_expression "((param_1[0xb] & 0x38U) == 0x18) && (*(int *)(iVar2 + 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 *)(iVar2 + 0x58) == 2)" ( (binary_expression "*(int *)(iVar2 + 0x58) == 2" (pointer_expression "*(int *)(iVar2 + 0x58)" * (cast_expression "(int *)(iVar2 + 0x58)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x58)" ( (binary_expression "iVar2 + 0x58" identifier + number_literal) )))) == number_literal) ))) )) && (parenthesized_expression "(iVar15 = FUN_00024ca0(), iVar15 != 0)" ( (comma_expression "iVar15 = FUN_00024ca0(), iVar15 != 0" (assignment_expression "iVar15 = FUN_00024ca0()" identifier = (call_expression "FUN_00024ca0()" identifier (argument_list "()" ( )))) , (binary_expression "iVar15 != 0" identifier != number_literal)) ))) )) (compound_statement "{\n          if (param_2 != 3) goto LAB_00025bc8;\n          bVar25 = false;\n        }" { (if_statement "if (param_2 != 3) goto LAB_00025bc8;" if (parenthesized_expression "(param_2 != 3)" ( (binary_expression "param_2 != 3" identifier != number_literal) )) (goto_statement "goto LAB_00025bc8;" goto statement_identifier ;)) (expression_statement "bVar25 = false;" (assignment_expression "bVar25 = false" identifier = false) ;) }) (else_clause "else {\n          bVar25 = param_2 == 3;\n        }" else (compound_statement "{\n          bVar25 = param_2 == 3;\n        }" { (expression_statement "bVar25 = param_2 == 3;" (assignment_expression "bVar25 = param_2 == 3" identifier = (binary_expression "param_2 == 3" identifier == number_literal)) ;) }))) (if_statement "if (((*(byte *)((int)param_1 + 0x2d) & 2) == 0) ||\n           (local_9c = FUN_000243f0(local_9c,0x406,3), -1 < local_9c)) {\n          iVar15 = FUN_00024e60(0);\n          if (iVar15 == 0) goto LAB_0002521b;\n          pDVar16 = *(DIR **)(iVar2 + 0xc);\n          uVar24 = *(ushort *)(iVar2 + 0x3e) | 1;\n          if (bVar25) goto LAB_000258a0;\nLAB_000258ae:\n          *(ushort *)(iVar2 + 0x3e) = uVar24;\n          closedir(pDVar16);\n          *(undefined4 *)(iVar2 + 0xc) = 0;\n          uVar13 = param_1[0xb];\n          if (((uVar13 & 0x200) != 0) && (-1 < local_9c)) {\n            close(local_9c);\n            uVar13 = param_1[0xb];\n          }\n        }\n        else {\n          pDVar16 = *(DIR **)(iVar2 + 0xc);\n          uVar24 = *(ushort *)(iVar2 + 0x3e) | 1;\n          if (bVar25) {\nLAB_000258a0:\n            piVar9 = __errno_location();\n            *(int *)(iVar2 + 0x20) = *piVar9;\n            goto LAB_000258ae;\n          }\n          *(ushort *)(iVar2 + 0x3e) = uVar24;\n          closedir(pDVar16);\n          uVar13 = param_1[0xb];\n        }" if (parenthesized_expression "(((*(byte *)((int)param_1 + 0x2d) & 2) == 0) ||\n           (local_9c = FUN_000243f0(local_9c,0x406,3), -1 < local_9c))" ( (binary_expression "((*(byte *)((int)param_1 + 0x2d) & 2) == 0) ||\n           (local_9c = FUN_000243f0(local_9c,0x406,3), -1 < local_9c)" (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_9c = FUN_000243f0(local_9c,0x406,3), -1 < local_9c)" ( (comma_expression "local_9c = FUN_000243f0(local_9c,0x406,3), -1 < local_9c" (assignment_expression "local_9c = FUN_000243f0(local_9c,0x406,3)" identifier = (call_expression "FUN_000243f0(local_9c,0x406,3)" identifier (argument_list "(local_9c,0x406,3)" ( identifier , number_literal , number_literal )))) , (binary_expression "-1 < local_9c" number_literal < identifier)) ))) )) (compound_statement "{\n          iVar15 = FUN_00024e60(0);\n          if (iVar15 == 0) goto LAB_0002521b;\n          pDVar16 = *(DIR **)(iVar2 + 0xc);\n          uVar24 = *(ushort *)(iVar2 + 0x3e) | 1;\n          if (bVar25) goto LAB_000258a0;\nLAB_000258ae:\n          *(ushort *)(iVar2 + 0x3e) = uVar24;\n          closedir(pDVar16);\n          *(undefined4 *)(iVar2 + 0xc) = 0;\n          uVar13 = param_1[0xb];\n          if (((uVar13 & 0x200) != 0) && (-1 < local_9c)) {\n            close(local_9c);\n            uVar13 = param_1[0xb];\n          }\n        }" { (expression_statement "iVar15 = FUN_00024e60(0);" (assignment_expression "iVar15 = FUN_00024e60(0)" identifier = (call_expression "FUN_00024e60(0)" identifier (argument_list "(0)" ( number_literal )))) ;) (if_statement "if (iVar15 == 0) goto LAB_0002521b;" if (parenthesized_expression "(iVar15 == 0)" ( (binary_expression "iVar15 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0002521b;" goto statement_identifier ;)) (expression_statement "pDVar16 = *(DIR **)(iVar2 + 0xc);" (assignment_expression "pDVar16 = *(DIR **)(iVar2 + 0xc)" identifier = (pointer_expression "*(DIR **)(iVar2 + 0xc)" * (cast_expression "(DIR **)(iVar2 + 0xc)" ( (type_descriptor "DIR **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar2 + 0xc)" ( (binary_expression "iVar2 + 0xc" identifier + number_literal) ))))) ;) (expression_statement "uVar24 = *(ushort *)(iVar2 + 0x3e) | 1;" (assignment_expression "uVar24 = *(ushort *)(iVar2 + 0x3e) | 1" identifier = (binary_expression "*(ushort *)(iVar2 + 0x3e) | 1" (pointer_expression "*(ushort *)(iVar2 + 0x3e)" * (cast_expression "(ushort *)(iVar2 + 0x3e)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x3e)" ( (binary_expression "iVar2 + 0x3e" identifier + number_literal) )))) | number_literal)) ;) (if_statement "if (bVar25) goto LAB_000258a0;" if (parenthesized_expression "(bVar25)" ( identifier )) (goto_statement "goto LAB_000258a0;" goto statement_identifier ;)) (labeled_statement "LAB_000258ae:\n          *(ushort *)(iVar2 + 0x3e) = uVar24;" statement_identifier : (expression_statement "*(ushort *)(iVar2 + 0x3e) = uVar24;" (assignment_expression "*(ushort *)(iVar2 + 0x3e) = uVar24" (pointer_expression "*(ushort *)(iVar2 + 0x3e)" * (cast_expression "(ushort *)(iVar2 + 0x3e)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x3e)" ( (binary_expression "iVar2 + 0x3e" identifier + number_literal) )))) = identifier) ;)) (expression_statement "closedir(pDVar16);" (call_expression "closedir(pDVar16)" identifier (argument_list "(pDVar16)" ( identifier ))) ;) (expression_statement "*(undefined4 *)(iVar2 + 0xc) = 0;" (assignment_expression "*(undefined4 *)(iVar2 + 0xc) = 0" (pointer_expression "*(undefined4 *)(iVar2 + 0xc)" * (cast_expression "(undefined4 *)(iVar2 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0xc)" ( (binary_expression "iVar2 + 0xc" identifier + number_literal) )))) = number_literal) ;) (expression_statement "uVar13 = param_1[0xb];" (assignment_expression "uVar13 = param_1[0xb]" identifier = (subscript_expression "param_1[0xb]" identifier [ number_literal ])) ;) (if_statement "if (((uVar13 & 0x200) != 0) && (-1 < local_9c)) {\n            close(local_9c);\n            uVar13 = param_1[0xb];\n          }" if (parenthesized_expression "(((uVar13 & 0x200) != 0) && (-1 < local_9c))" ( (binary_expression "((uVar13 & 0x200) != 0) && (-1 < local_9c)" (parenthesized_expression "((uVar13 & 0x200) != 0)" ( (binary_expression "(uVar13 & 0x200) != 0" (parenthesized_expression "(uVar13 & 0x200)" ( (binary_expression "uVar13 & 0x200" identifier & number_literal) )) != number_literal) )) && (parenthesized_expression "(-1 < local_9c)" ( (binary_expression "-1 < local_9c" number_literal < identifier) ))) )) (compound_statement "{\n            close(local_9c);\n            uVar13 = param_1[0xb];\n          }" { (expression_statement "close(local_9c);" (call_expression "close(local_9c)" identifier (argument_list "(local_9c)" ( identifier ))) ;) (expression_statement "uVar13 = param_1[0xb];" (assignment_expression "uVar13 = param_1[0xb]" identifier = (subscript_expression "param_1[0xb]" identifier [ number_literal ])) ;) })) }) (else_clause "else {\n          pDVar16 = *(DIR **)(iVar2 + 0xc);\n          uVar24 = *(ushort *)(iVar2 + 0x3e) | 1;\n          if (bVar25) {\nLAB_000258a0:\n            piVar9 = __errno_location();\n            *(int *)(iVar2 + 0x20) = *piVar9;\n            goto LAB_000258ae;\n          }\n          *(ushort *)(iVar2 + 0x3e) = uVar24;\n          closedir(pDVar16);\n          uVar13 = param_1[0xb];\n        }" else (compound_statement "{\n          pDVar16 = *(DIR **)(iVar2 + 0xc);\n          uVar24 = *(ushort *)(iVar2 + 0x3e) | 1;\n          if (bVar25) {\nLAB_000258a0:\n            piVar9 = __errno_location();\n            *(int *)(iVar2 + 0x20) = *piVar9;\n            goto LAB_000258ae;\n          }\n          *(ushort *)(iVar2 + 0x3e) = uVar24;\n          closedir(pDVar16);\n          uVar13 = param_1[0xb];\n        }" { (expression_statement "pDVar16 = *(DIR **)(iVar2 + 0xc);" (assignment_expression "pDVar16 = *(DIR **)(iVar2 + 0xc)" identifier = (pointer_expression "*(DIR **)(iVar2 + 0xc)" * (cast_expression "(DIR **)(iVar2 + 0xc)" ( (type_descriptor "DIR **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar2 + 0xc)" ( (binary_expression "iVar2 + 0xc" identifier + number_literal) ))))) ;) (expression_statement "uVar24 = *(ushort *)(iVar2 + 0x3e) | 1;" (assignment_expression "uVar24 = *(ushort *)(iVar2 + 0x3e) | 1" identifier = (binary_expression "*(ushort *)(iVar2 + 0x3e) | 1" (pointer_expression "*(ushort *)(iVar2 + 0x3e)" * (cast_expression "(ushort *)(iVar2 + 0x3e)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x3e)" ( (binary_expression "iVar2 + 0x3e" identifier + number_literal) )))) | number_literal)) ;) (if_statement "if (bVar25) {\nLAB_000258a0:\n            piVar9 = __errno_location();\n            *(int *)(iVar2 + 0x20) = *piVar9;\n            goto LAB_000258ae;\n          }" if (parenthesized_expression "(bVar25)" ( identifier )) (compound_statement "{\nLAB_000258a0:\n            piVar9 = __errno_location();\n            *(int *)(iVar2 + 0x20) = *piVar9;\n            goto LAB_000258ae;\n          }" { (labeled_statement "LAB_000258a0:\n            piVar9 = __errno_location();" statement_identifier : (expression_statement "piVar9 = __errno_location();" (assignment_expression "piVar9 = __errno_location()" identifier = (call_expression "__errno_location()" identifier (argument_list "()" ( )))) ;)) (expression_statement "*(int *)(iVar2 + 0x20) = *piVar9;" (assignment_expression "*(int *)(iVar2 + 0x20) = *piVar9" (pointer_expression "*(int *)(iVar2 + 0x20)" * (cast_expression "(int *)(iVar2 + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x20)" ( (binary_expression "iVar2 + 0x20" identifier + number_literal) )))) = (pointer_expression "*piVar9" * identifier)) ;) (goto_statement "goto LAB_000258ae;" goto statement_identifier ;) })) (expression_statement "*(ushort *)(iVar2 + 0x3e) = uVar24;" (assignment_expression "*(ushort *)(iVar2 + 0x3e) = uVar24" (pointer_expression "*(ushort *)(iVar2 + 0x3e)" * (cast_expression "(ushort *)(iVar2 + 0x3e)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x3e)" ( (binary_expression "iVar2 + 0x3e" identifier + number_literal) )))) = identifier) ;) (expression_statement "closedir(pDVar16);" (call_expression "closedir(pDVar16)" identifier (argument_list "(pDVar16)" ( identifier ))) ;) (expression_statement "uVar13 = param_1[0xb];" (assignment_expression "uVar13 = param_1[0xb]" identifier = (subscript_expression "param_1[0xb]" identifier [ number_literal ])) ;) }))) (expression_statement "bVar25 = false;" (assignment_expression "bVar25 = false" identifier = false) ;) (expression_statement "*(undefined4 *)(iVar2 + 0xc) = 0;" (assignment_expression "*(undefined4 *)(iVar2 + 0xc) = 0" (pointer_expression "*(undefined4 *)(iVar2 + 0xc)" * (cast_expression "(undefined4 *)(iVar2 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0xc)" ( (binary_expression "iVar2 + 0xc" identifier + number_literal) )))) = number_literal) ;) (goto_statement "goto LAB_00025223;" goto statement_identifier ;) })) (expression_statement "piVar9 = __errno_location();" (assignment_expression "piVar9 = __errno_location()" identifier = (call_expression "__errno_location()" identifier (argument_list "()" ( )))) ;) (expression_statement "iVar15 = *piVar9;" (assignment_expression "iVar15 = *piVar9" identifier = (pointer_expression "*piVar9" * identifier)) ;) (expression_statement "close(local_9c);" (call_expression "close(local_9c)" identifier (argument_list "(local_9c)" ( identifier ))) ;) (expression_statement "*piVar9 = iVar15;" (assignment_expression "*piVar9 = iVar15" (pointer_expression "*piVar9" * identifier) = identifier) ;) (expression_statement "*(undefined4 *)(iVar2 + 0xc) = 0;" (assignment_expression "*(undefined4 *)(iVar2 + 0xc) = 0" (pointer_expression "*(undefined4 *)(iVar2 + 0xc)" * (cast_expression "(undefined4 *)(iVar2 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0xc)" ( (binary_expression "iVar2 + 0xc" identifier + number_literal) )))) = number_literal) ;) }))) (labeled_statement "joined_r0x00025c30:\n    if (param_2 == 3) {\n      *(undefined2 *)(iVar2 + 0x3c) = 4;\n      piVar9 = __errno_location();\n      *(int *)(iVar2 + 0x20) = *piVar9;\n    }" statement_identifier : (if_statement "if (param_2 == 3) {\n      *(undefined2 *)(iVar2 + 0x3c) = 4;\n      piVar9 = __errno_location();\n      *(int *)(iVar2 + 0x20) = *piVar9;\n    }" if (parenthesized_expression "(param_2 == 3)" ( (binary_expression "param_2 == 3" identifier == number_literal) )) (compound_statement "{\n      *(undefined2 *)(iVar2 + 0x3c) = 4;\n      piVar9 = __errno_location();\n      *(int *)(iVar2 + 0x20) = *piVar9;\n    }" { (expression_statement "*(undefined2 *)(iVar2 + 0x3c) = 4;" (assignment_expression "*(undefined2 *)(iVar2 + 0x3c) = 4" (pointer_expression "*(undefined2 *)(iVar2 + 0x3c)" * (cast_expression "(undefined2 *)(iVar2 + 0x3c)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x3c)" ( (binary_expression "iVar2 + 0x3c" identifier + number_literal) )))) = number_literal) ;) (expression_statement "piVar9 = __errno_location();" (assignment_expression "piVar9 = __errno_location()" identifier = (call_expression "__errno_location()" identifier (argument_list "()" ( )))) ;) (expression_statement "*(int *)(iVar2 + 0x20) = *piVar9;" (assignment_expression "*(int *)(iVar2 + 0x20) = *piVar9" (pointer_expression "*(int *)(iVar2 + 0x20)" * (cast_expression "(int *)(iVar2 + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x20)" ( (binary_expression "iVar2 + 0x20" identifier + number_literal) )))) = (pointer_expression "*piVar9" * identifier)) ;) }))) (labeled_statement "LAB_00025c40:\n    local_b8 = (void *)0x0;" statement_identifier : (expression_statement "local_b8 = (void *)0x0;" (assignment_expression "local_b8 = (void *)0x0" identifier = (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;)) }) (else_clause "else {\n    local_9c = dirfd(pDVar21);\n    if (local_9c < 0) {\n      closedir(*(DIR **)(iVar2 + 0xc));\n      *(undefined4 *)(iVar2 + 0xc) = 0;\n      goto joined_r0x00025c30;\n    }\n    if (param_1[10] == 0) {\n      local_a8 = 100000;\n      uVar13 = param_1[0xb];\n      bVar25 = true;\n    }\n    else {\n      local_a8 = 0xffffffff;\nLAB_0002521b:\n      bVar25 = true;\n      uVar13 = param_1[0xb];\n    }\nLAB_00025223:\n    uVar23 = *(uint *)(iVar2 + 0x28);\n    uVar22 = uVar23 - 1;\n    local_d0 = uVar23;\n    if (*(char *)(*(int *)(iVar2 + 0x1c) + -1 + uVar23) != '/') {\n      local_d0 = uVar23 + 1;\n      uVar22 = uVar23;\n    }\n    local_a4 = (undefined1 *)0x0;\n    if ((uVar13 & 4) != 0) {\n      local_a4 = (undefined1 *)(uVar22 + param_1[5]) + 1;\n      *(undefined1 *)(uVar22 + param_1[5]) = 0x2f;\n    }\n    puVar6 = PTR_free_0003afa8;\n    local_b0 = param_1[8] - local_d0;\n    bVar4 = false;\n    bVar3 = false;\n    iVar15 = *(int *)(iVar2 + 0x30);\n    local_c4 = (void *)0x0;\n    local_d4 = 0;\n    local_b8 = (void *)0x0;\nLAB_000252fb:\n    do {\n      do {\n        pDVar16 = *(DIR **)(iVar2 + 0xc);\n        if (pDVar16 == (DIR *)0x0) goto LAB_000256de;\n        piVar9 = __errno_location();\n        *piVar9 = 0;\n        pdVar10 = readdir64(pDVar16);\n        if (pdVar10 == (dirent64 *)0x0) {\n          if (*piVar9 != 0) {\n            *(int *)(iVar2 + 0x20) = *piVar9;\n            *(ushort *)(iVar2 + 0x3c) =\n                 (-(ushort)(pDVar21 == (DIR *)0x0 && local_d4 == 0) & 0xfffd) + 7;\n          }\n          if (*(DIR **)(iVar2 + 0xc) != (DIR *)0x0) {\n            closedir(*(DIR **)(iVar2 + 0xc));\n            *(undefined4 *)(iVar2 + 0xc) = 0;\n          }\n          goto LAB_000256de;\n        }\n      } while ((((*(byte *)(param_1 + 0xb) & 0x20) == 0) && (pdVar10->d_name[0] == '.')) &&\n              ((pdVar10->d_name[1] == '\0' || (*(short *)(pdVar10->d_name + 1) == 0x2e))));\n      __n = strlen(pdVar10->d_name);\n      pvVar11 = malloc(__n + 0xa8 & 0xfffffffc);\n      if (pvVar11 == (void *)0x0) {\n        iVar15 = *piVar9;\nLAB_000255a6:\n        free(pvVar11);\n        if (local_b8 != (void *)0x0) {\n          pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n          pvVar11 = *(void **)((int)local_b8 + 8);\n          if (pDVar21 == (DIR *)0x0) goto LAB_000255f4;\n          do {\n            closedir(pDVar21);\n            free(local_b8);\n            local_b8 = pvVar11;\n            while( true ) {\n              if (local_b8 == (void *)0x0) goto LAB_00025608;\n              pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n              pvVar11 = *(void **)((int)local_b8 + 8);\n              if (pDVar21 != (DIR *)0x0) break;\nLAB_000255f4:\n              free(local_b8);\n              local_b8 = pvVar11;\n            }\n          } while( true );\n        }\nLAB_00025608:\n        closedir(*(DIR **)(iVar2 + 0xc));\n        *(undefined4 *)(iVar2 + 0xc) = 0;\n        *(undefined2 *)(iVar2 + 0x3c) = 7;\n        local_b8 = (void *)0x0;\n        param_1[0xb] = param_1[0xb] | 0x4000;\n        *piVar9 = iVar15;\n        goto LAB_0002563f;\n      }\n      pvVar1 = (void *)((int)pvVar11 + 0xa4);\n      memcpy(pvVar1,pdVar10->d_name,__n);\n      __ptr = (void *)param_1[5];\n      *(undefined1 *)((int)pvVar11 + __n + 0xa4) = 0;\n      *(size_t *)((int)pvVar11 + 0x34) = __n;\n      *(int **)((int)pvVar11 + 0x2c) = param_1;\n      *(void **)((int)pvVar11 + 0x1c) = __ptr;\n      *(undefined4 *)((int)pvVar11 + 0x20) = 0;\n      *(undefined4 *)((int)pvVar11 + 0xc) = 0;\n      *(undefined4 *)((int)pvVar11 + 0x3e) = 0x30000;\n      *(undefined4 *)((int)pvVar11 + 0x10) = 0;\n      *(undefined4 *)((int)pvVar11 + 0x14) = 0;\n      if (local_b0 <= __n) {\n        uVar13 = local_d0 + 0x101 + param_1[8] + __n;\n        if (uVar13 < (uint)param_1[8]) {\n          iVar15 = 0x24;\n          free(__ptr);\n          param_1[5] = 0;\n          *piVar9 = 0x24;\n        }\n        else {\n          param_1[8] = uVar13;\n          pvVar14 = realloc(__ptr,uVar13);\n          if (pvVar14 != (void *)0x0) {\n            param_1[5] = (int)pvVar14;\n            if ((__ptr != pvVar14) && (bVar3 = true, (*(byte *)(param_1 + 0xb) & 4) != 0)) {\n              local_a4 = (undefined1 *)((int)pvVar14 + local_d0);\n            }\n            local_b0 = param_1[8] - local_d0;\n            goto LAB_000253d8;\n          }\n          free((void *)param_1[5]);\n          param_1[5] = 0;\n          iVar15 = *piVar9;\n        }\n        goto LAB_000255a6;\n      }\nLAB_000253d8:\n      if (CARRY4(__n,local_d0)) {\n        free(pvVar11);\n        if (local_b8 != (void *)0x0) {\n          pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n          pvVar11 = *(void **)((int)local_b8 + 8);\n          if (pDVar21 == (DIR *)0x0) goto LAB_00025e84;\n          do {\n            closedir(pDVar21);\n            free(local_b8);\n            local_b8 = pvVar11;\n            while( true ) {\n              if (local_b8 == (void *)0x0) goto LAB_00025e94;\n              pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n              pvVar11 = *(void **)((int)local_b8 + 8);\n              if (pDVar21 != (DIR *)0x0) break;\nLAB_00025e84:\n              free(local_b8);\n              local_b8 = pvVar11;\n            }\n          } while( true );\n        }\nLAB_00025e94:\n        closedir(*(DIR **)(iVar2 + 0xc));\n        *(undefined4 *)(iVar2 + 0xc) = 0;\n        *(undefined2 *)(iVar2 + 0x3c) = 7;\n        local_b8 = (void *)0x0;\n        param_1[0xb] = param_1[0xb] | 0x4000;\n        *piVar9 = 0x24;\n        goto LAB_0002563f;\n      }\n      uVar12 = *(undefined4 *)((int)&pdVar10->d_ino + 4);\n      *(size_t *)((int)pvVar11 + 0x28) = __n + local_d0;\n      *(int *)((int)pvVar11 + 0x30) = iVar15 + 1;\n      *(int *)((int)pvVar11 + 4) = *param_1;\n      _Var5 = pdVar10->d_ino;\n      *(undefined4 *)((int)pvVar11 + 0xa0) = uVar12;\n      *(int *)((int)pvVar11 + 0x9c) = (int)_Var5;\n      uVar13 = param_1[0xb];\n      if ((uVar13 & 4) == 0) {\n        *(void **)((int)pvVar11 + 0x18) = pvVar1;\n      }\n      else {\n        *(undefined4 *)((int)pvVar11 + 0x18) = *(undefined4 *)((int)pvVar11 + 0x1c);\n        memmove(local_a4,pvVar1,*(int *)((int)pvVar11 + 0x34) + 1);\n        uVar13 = param_1[0xb];\n      }\n      if ((param_1[10] == 0) || ((uVar13 & 0x400) != 0)) {\n        uVar23 = pdVar10->d_type - 1;\n        if (((uVar13 & 0x18) == 0x18) && ((pdVar10->d_type & 0xfb) != 0)) {\n          *(undefined2 *)((int)pvVar11 + 0x3c) = 0xb;\n          if (uVar23 < 0xc) {\n            *(undefined4 *)((int)pvVar11 + 0x54) = *(undefined4 *)(&DAT_00031560 + uVar23 * 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 (uVar23 < 0xc) {\n            *(undefined4 *)((int)pvVar11 + 0x54) = *(undefined4 *)(&DAT_00031560 + uVar23 * 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        uVar8 = FUN_00024740();\n        *(undefined2 *)((int)pvVar11 + 0x3c) = uVar8;\n      }\n      *(undefined4 *)((int)pvVar11 + 8) = 0;\n      pvVar1 = pvVar11;\n      if (local_b8 != (void *)0x0) {\n        *(void **)((int)local_c4 + 8) = pvVar11;\n        pvVar1 = local_b8;\n      }\n      local_b8 = pvVar1;\n      local_c4 = pvVar11;\n      if (local_d4 == 10000) {\n        if (param_1[10] == 0) {\n          iVar17 = *(int *)(iVar2 + 0x2c);\n          if ((*(byte *)(iVar17 + 0x2d) & 2) != 0) {\n            iVar18 = *(int *)(iVar17 + 0x30);\n            if (iVar18 == 0) {\n              iVar18 = FUN_0001df90(0xd,0,FUN_000246b0,FUN_000246e0,puVar6);\n              *(int *)(iVar17 + 0x30) = iVar18;\n              if (iVar18 != 0) goto LAB_00025920;\nLAB_000259b0:\n              if ((local_9c < 0) ||\n                 (iVar19 = fstatfs64(local_9c,&local_74), iVar17 = local_74.f_type, iVar19 != 0))\n              goto LAB_00025a48;\n              local_d4 = local_74.f_type;\n              if ((iVar18 != 0) &&\n                 (__ptr_00 = (undefined4 *)malloc(0xc), __ptr_00 != (undefined4 *)0x0)) {\n                uVar12 = *(undefined4 *)(iVar2 + 0x44);\n                __ptr_00[1] = *(undefined4 *)(iVar2 + 0x48);\n                *__ptr_00 = uVar12;\n                __ptr_00[2] = iVar17;\n                puVar20 = (undefined4 *)FUN_0001e8d0(iVar18,__ptr_00);\n                if (puVar20 == (undefined4 *)0x0) {\n                  free(__ptr_00);\n                  local_d4 = local_74.f_type;\n                }\n                else {\n                  if (__ptr_00 != puVar20) {\n                    /* WARNING: Subroutine does not return */\n                    abort();\n                  }\n                  local_d4 = local_74.f_type;\n                }\n              }\n            }\n            else {\nLAB_00025920:\n              local_7c = *(undefined4 *)(iVar2 + 0x48);\n              local_80 = *(undefined4 *)(iVar2 + 0x44);\n              iVar17 = FUN_0001dce0(iVar18,&local_80);\n              if (iVar17 == 0) goto LAB_000259b0;\n              local_d4 = *(int *)(iVar17 + 8);\n            }\n            if (((local_d4 == 0x6969) || (local_d4 == 0x1021994)) || (local_d4 == -0xacb2be)) {\n              bVar4 = false;\n              goto LAB_00025473;\n            }\n          }\nLAB_00025a48:\n          bVar4 = true;\n        }\nLAB_00025473:\n        local_d4 = 0x2711;\n        goto LAB_000252fb;\n      }\n      local_d4 = local_d4 + 1;\n    } while (local_d4 < local_a8);\nLAB_000256de:\n    if (bVar3) {\n      iVar15 = param_1[5];\n      for (iVar17 = param_1[1]; iVar17 != 0; iVar17 = *(int *)(iVar17 + 8)) {\n        while (*(int *)(iVar17 + 0x18) != iVar17 + 0xa4) {\n          iVar18 = *(int *)(iVar17 + 0x1c);\n          *(int *)(iVar17 + 0x1c) = iVar15;\n          *(int *)(iVar17 + 0x18) = (*(int *)(iVar17 + 0x18) - iVar18) + iVar15;\n          iVar17 = *(int *)(iVar17 + 8);\n          if (iVar17 == 0) goto LAB_00025aef;\n        }\n        *(int *)(iVar17 + 0x1c) = iVar15;\n      }\nLAB_00025aef:\n      iVar17 = *(int *)((int)local_b8 + 0x30);\n      pvVar11 = local_b8;\n      while (-1 < iVar17) {\n        while( true ) {\n          if (*(int *)((int)pvVar11 + 0x18) != (int)pvVar11 + 0xa4) {\n            *(int *)((int)pvVar11 + 0x18) =\n                 (*(int *)((int)pvVar11 + 0x18) - *(int *)((int)pvVar11 + 0x1c)) + iVar15;\n          }\n          pvVar1 = *(void **)((int)pvVar11 + 8);\n          *(int *)((int)pvVar11 + 0x1c) = iVar15;\n          if (pvVar1 == (void *)0x0) break;\n          pvVar11 = pvVar1;\n          if (*(int *)((int)pvVar1 + 0x30) < 0) goto LAB_000256e9;\n        }\n        pvVar11 = *(void **)((int)pvVar11 + 4);\n        iVar17 = *(int *)((int)pvVar11 + 0x30);\n      }\n    }\nLAB_000256e9:\n    if ((*(byte *)(param_1 + 0xb) & 4) != 0) {\n      if ((param_1[8] == local_d0) || (local_d4 == 0)) {\n        local_a4 = local_a4 + -1;\n      }\n      *local_a4 = 0;\n    }\n    if ((pDVar21 == (DIR *)0x0) && (bVar25)) {\n      if ((param_2 == 1) || (local_d4 == 0)) {\n        if (*(int *)(iVar2 + 0x30) == 0) {\n          iVar15 = FUN_00024bb0();\n        }\n        else {\n          iVar15 = FUN_00024e60(&DAT_0002e141);\n        }\n        if (iVar15 != 0) {\n          *(undefined2 *)(iVar2 + 0x3c) = 7;\n          param_1[0xb] = param_1[0xb] | 0x4000;\n          while (pvVar11 = local_b8, local_b8 != (void *)0x0) {\n            while( true ) {\n              local_b8 = *(void **)((int)pvVar11 + 8);\n              if (*(DIR **)((int)pvVar11 + 0xc) == (DIR *)0x0) break;\n              closedir(*(DIR **)((int)pvVar11 + 0xc));\n              free(pvVar11);\n              pvVar11 = local_b8;\n              if (local_b8 == (void *)0x0) goto LAB_00025c40;\n            }\n            free(pvVar11);\n          }\n          goto LAB_00025c40;\n        }\n        goto LAB_0002574d;\n      }\n    }\n    else {\nLAB_0002574d:\n      if (local_d4 == 0) {\n        if (((param_2 == 3) && (*(short *)(iVar2 + 0x3c) != 4)) && (*(short *)(iVar2 + 0x3c) != 7))\n        {\n          *(undefined2 *)(iVar2 + 0x3c) = 6;\n        }\n        if (local_b8 != (void *)0x0) {\n          pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n          pvVar11 = *(void **)((int)local_b8 + 8);\n          if (pDVar21 == (DIR *)0x0) goto LAB_00025c94;\n          do {\n            closedir(pDVar21);\n            free(local_b8);\n            local_b8 = pvVar11;\n            while( true ) {\n              if (local_b8 == (void *)0x0) goto LAB_00025c40;\n              pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n              pvVar11 = *(void **)((int)local_b8 + 8);\n              if (pDVar21 != (DIR *)0x0) break;\nLAB_00025c94:\n              free(local_b8);\n              local_b8 = pvVar11;\n            }\n          } while( true );\n        }\n        goto LAB_00025c40;\n      }\n    }\n    if (bVar4) {\n      param_1[10] = (int)FUN_00024700;\n      local_b8 = (void *)FUN_000248e0();\n      param_1[10] = 0;\n    }\n    else if ((param_1[10] != 0) && (local_d4 != 1)) {\n      local_b8 = (void *)FUN_000248e0();\n    }\n  }" else (compound_statement "{\n    local_9c = dirfd(pDVar21);\n    if (local_9c < 0) {\n      closedir(*(DIR **)(iVar2 + 0xc));\n      *(undefined4 *)(iVar2 + 0xc) = 0;\n      goto joined_r0x00025c30;\n    }\n    if (param_1[10] == 0) {\n      local_a8 = 100000;\n      uVar13 = param_1[0xb];\n      bVar25 = true;\n    }\n    else {\n      local_a8 = 0xffffffff;\nLAB_0002521b:\n      bVar25 = true;\n      uVar13 = param_1[0xb];\n    }\nLAB_00025223:\n    uVar23 = *(uint *)(iVar2 + 0x28);\n    uVar22 = uVar23 - 1;\n    local_d0 = uVar23;\n    if (*(char *)(*(int *)(iVar2 + 0x1c) + -1 + uVar23) != '/') {\n      local_d0 = uVar23 + 1;\n      uVar22 = uVar23;\n    }\n    local_a4 = (undefined1 *)0x0;\n    if ((uVar13 & 4) != 0) {\n      local_a4 = (undefined1 *)(uVar22 + param_1[5]) + 1;\n      *(undefined1 *)(uVar22 + param_1[5]) = 0x2f;\n    }\n    puVar6 = PTR_free_0003afa8;\n    local_b0 = param_1[8] - local_d0;\n    bVar4 = false;\n    bVar3 = false;\n    iVar15 = *(int *)(iVar2 + 0x30);\n    local_c4 = (void *)0x0;\n    local_d4 = 0;\n    local_b8 = (void *)0x0;\nLAB_000252fb:\n    do {\n      do {\n        pDVar16 = *(DIR **)(iVar2 + 0xc);\n        if (pDVar16 == (DIR *)0x0) goto LAB_000256de;\n        piVar9 = __errno_location();\n        *piVar9 = 0;\n        pdVar10 = readdir64(pDVar16);\n        if (pdVar10 == (dirent64 *)0x0) {\n          if (*piVar9 != 0) {\n            *(int *)(iVar2 + 0x20) = *piVar9;\n            *(ushort *)(iVar2 + 0x3c) =\n                 (-(ushort)(pDVar21 == (DIR *)0x0 && local_d4 == 0) & 0xfffd) + 7;\n          }\n          if (*(DIR **)(iVar2 + 0xc) != (DIR *)0x0) {\n            closedir(*(DIR **)(iVar2 + 0xc));\n            *(undefined4 *)(iVar2 + 0xc) = 0;\n          }\n          goto LAB_000256de;\n        }\n      } while ((((*(byte *)(param_1 + 0xb) & 0x20) == 0) && (pdVar10->d_name[0] == '.')) &&\n              ((pdVar10->d_name[1] == '\0' || (*(short *)(pdVar10->d_name + 1) == 0x2e))));\n      __n = strlen(pdVar10->d_name);\n      pvVar11 = malloc(__n + 0xa8 & 0xfffffffc);\n      if (pvVar11 == (void *)0x0) {\n        iVar15 = *piVar9;\nLAB_000255a6:\n        free(pvVar11);\n        if (local_b8 != (void *)0x0) {\n          pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n          pvVar11 = *(void **)((int)local_b8 + 8);\n          if (pDVar21 == (DIR *)0x0) goto LAB_000255f4;\n          do {\n            closedir(pDVar21);\n            free(local_b8);\n            local_b8 = pvVar11;\n            while( true ) {\n              if (local_b8 == (void *)0x0) goto LAB_00025608;\n              pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n              pvVar11 = *(void **)((int)local_b8 + 8);\n              if (pDVar21 != (DIR *)0x0) break;\nLAB_000255f4:\n              free(local_b8);\n              local_b8 = pvVar11;\n            }\n          } while( true );\n        }\nLAB_00025608:\n        closedir(*(DIR **)(iVar2 + 0xc));\n        *(undefined4 *)(iVar2 + 0xc) = 0;\n        *(undefined2 *)(iVar2 + 0x3c) = 7;\n        local_b8 = (void *)0x0;\n        param_1[0xb] = param_1[0xb] | 0x4000;\n        *piVar9 = iVar15;\n        goto LAB_0002563f;\n      }\n      pvVar1 = (void *)((int)pvVar11 + 0xa4);\n      memcpy(pvVar1,pdVar10->d_name,__n);\n      __ptr = (void *)param_1[5];\n      *(undefined1 *)((int)pvVar11 + __n + 0xa4) = 0;\n      *(size_t *)((int)pvVar11 + 0x34) = __n;\n      *(int **)((int)pvVar11 + 0x2c) = param_1;\n      *(void **)((int)pvVar11 + 0x1c) = __ptr;\n      *(undefined4 *)((int)pvVar11 + 0x20) = 0;\n      *(undefined4 *)((int)pvVar11 + 0xc) = 0;\n      *(undefined4 *)((int)pvVar11 + 0x3e) = 0x30000;\n      *(undefined4 *)((int)pvVar11 + 0x10) = 0;\n      *(undefined4 *)((int)pvVar11 + 0x14) = 0;\n      if (local_b0 <= __n) {\n        uVar13 = local_d0 + 0x101 + param_1[8] + __n;\n        if (uVar13 < (uint)param_1[8]) {\n          iVar15 = 0x24;\n          free(__ptr);\n          param_1[5] = 0;\n          *piVar9 = 0x24;\n        }\n        else {\n          param_1[8] = uVar13;\n          pvVar14 = realloc(__ptr,uVar13);\n          if (pvVar14 != (void *)0x0) {\n            param_1[5] = (int)pvVar14;\n            if ((__ptr != pvVar14) && (bVar3 = true, (*(byte *)(param_1 + 0xb) & 4) != 0)) {\n              local_a4 = (undefined1 *)((int)pvVar14 + local_d0);\n            }\n            local_b0 = param_1[8] - local_d0;\n            goto LAB_000253d8;\n          }\n          free((void *)param_1[5]);\n          param_1[5] = 0;\n          iVar15 = *piVar9;\n        }\n        goto LAB_000255a6;\n      }\nLAB_000253d8:\n      if (CARRY4(__n,local_d0)) {\n        free(pvVar11);\n        if (local_b8 != (void *)0x0) {\n          pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n          pvVar11 = *(void **)((int)local_b8 + 8);\n          if (pDVar21 == (DIR *)0x0) goto LAB_00025e84;\n          do {\n            closedir(pDVar21);\n            free(local_b8);\n            local_b8 = pvVar11;\n            while( true ) {\n              if (local_b8 == (void *)0x0) goto LAB_00025e94;\n              pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n              pvVar11 = *(void **)((int)local_b8 + 8);\n              if (pDVar21 != (DIR *)0x0) break;\nLAB_00025e84:\n              free(local_b8);\n              local_b8 = pvVar11;\n            }\n          } while( true );\n        }\nLAB_00025e94:\n        closedir(*(DIR **)(iVar2 + 0xc));\n        *(undefined4 *)(iVar2 + 0xc) = 0;\n        *(undefined2 *)(iVar2 + 0x3c) = 7;\n        local_b8 = (void *)0x0;\n        param_1[0xb] = param_1[0xb] | 0x4000;\n        *piVar9 = 0x24;\n        goto LAB_0002563f;\n      }\n      uVar12 = *(undefined4 *)((int)&pdVar10->d_ino + 4);\n      *(size_t *)((int)pvVar11 + 0x28) = __n + local_d0;\n      *(int *)((int)pvVar11 + 0x30) = iVar15 + 1;\n      *(int *)((int)pvVar11 + 4) = *param_1;\n      _Var5 = pdVar10->d_ino;\n      *(undefined4 *)((int)pvVar11 + 0xa0) = uVar12;\n      *(int *)((int)pvVar11 + 0x9c) = (int)_Var5;\n      uVar13 = param_1[0xb];\n      if ((uVar13 & 4) == 0) {\n        *(void **)((int)pvVar11 + 0x18) = pvVar1;\n      }\n      else {\n        *(undefined4 *)((int)pvVar11 + 0x18) = *(undefined4 *)((int)pvVar11 + 0x1c);\n        memmove(local_a4,pvVar1,*(int *)((int)pvVar11 + 0x34) + 1);\n        uVar13 = param_1[0xb];\n      }\n      if ((param_1[10] == 0) || ((uVar13 & 0x400) != 0)) {\n        uVar23 = pdVar10->d_type - 1;\n        if (((uVar13 & 0x18) == 0x18) && ((pdVar10->d_type & 0xfb) != 0)) {\n          *(undefined2 *)((int)pvVar11 + 0x3c) = 0xb;\n          if (uVar23 < 0xc) {\n            *(undefined4 *)((int)pvVar11 + 0x54) = *(undefined4 *)(&DAT_00031560 + uVar23 * 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 (uVar23 < 0xc) {\n            *(undefined4 *)((int)pvVar11 + 0x54) = *(undefined4 *)(&DAT_00031560 + uVar23 * 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        uVar8 = FUN_00024740();\n        *(undefined2 *)((int)pvVar11 + 0x3c) = uVar8;\n      }\n      *(undefined4 *)((int)pvVar11 + 8) = 0;\n      pvVar1 = pvVar11;\n      if (local_b8 != (void *)0x0) {\n        *(void **)((int)local_c4 + 8) = pvVar11;\n        pvVar1 = local_b8;\n      }\n      local_b8 = pvVar1;\n      local_c4 = pvVar11;\n      if (local_d4 == 10000) {\n        if (param_1[10] == 0) {\n          iVar17 = *(int *)(iVar2 + 0x2c);\n          if ((*(byte *)(iVar17 + 0x2d) & 2) != 0) {\n            iVar18 = *(int *)(iVar17 + 0x30);\n            if (iVar18 == 0) {\n              iVar18 = FUN_0001df90(0xd,0,FUN_000246b0,FUN_000246e0,puVar6);\n              *(int *)(iVar17 + 0x30) = iVar18;\n              if (iVar18 != 0) goto LAB_00025920;\nLAB_000259b0:\n              if ((local_9c < 0) ||\n                 (iVar19 = fstatfs64(local_9c,&local_74), iVar17 = local_74.f_type, iVar19 != 0))\n              goto LAB_00025a48;\n              local_d4 = local_74.f_type;\n              if ((iVar18 != 0) &&\n                 (__ptr_00 = (undefined4 *)malloc(0xc), __ptr_00 != (undefined4 *)0x0)) {\n                uVar12 = *(undefined4 *)(iVar2 + 0x44);\n                __ptr_00[1] = *(undefined4 *)(iVar2 + 0x48);\n                *__ptr_00 = uVar12;\n                __ptr_00[2] = iVar17;\n                puVar20 = (undefined4 *)FUN_0001e8d0(iVar18,__ptr_00);\n                if (puVar20 == (undefined4 *)0x0) {\n                  free(__ptr_00);\n                  local_d4 = local_74.f_type;\n                }\n                else {\n                  if (__ptr_00 != puVar20) {\n                    /* WARNING: Subroutine does not return */\n                    abort();\n                  }\n                  local_d4 = local_74.f_type;\n                }\n              }\n            }\n            else {\nLAB_00025920:\n              local_7c = *(undefined4 *)(iVar2 + 0x48);\n              local_80 = *(undefined4 *)(iVar2 + 0x44);\n              iVar17 = FUN_0001dce0(iVar18,&local_80);\n              if (iVar17 == 0) goto LAB_000259b0;\n              local_d4 = *(int *)(iVar17 + 8);\n            }\n            if (((local_d4 == 0x6969) || (local_d4 == 0x1021994)) || (local_d4 == -0xacb2be)) {\n              bVar4 = false;\n              goto LAB_00025473;\n            }\n          }\nLAB_00025a48:\n          bVar4 = true;\n        }\nLAB_00025473:\n        local_d4 = 0x2711;\n        goto LAB_000252fb;\n      }\n      local_d4 = local_d4 + 1;\n    } while (local_d4 < local_a8);\nLAB_000256de:\n    if (bVar3) {\n      iVar15 = param_1[5];\n      for (iVar17 = param_1[1]; iVar17 != 0; iVar17 = *(int *)(iVar17 + 8)) {\n        while (*(int *)(iVar17 + 0x18) != iVar17 + 0xa4) {\n          iVar18 = *(int *)(iVar17 + 0x1c);\n          *(int *)(iVar17 + 0x1c) = iVar15;\n          *(int *)(iVar17 + 0x18) = (*(int *)(iVar17 + 0x18) - iVar18) + iVar15;\n          iVar17 = *(int *)(iVar17 + 8);\n          if (iVar17 == 0) goto LAB_00025aef;\n        }\n        *(int *)(iVar17 + 0x1c) = iVar15;\n      }\nLAB_00025aef:\n      iVar17 = *(int *)((int)local_b8 + 0x30);\n      pvVar11 = local_b8;\n      while (-1 < iVar17) {\n        while( true ) {\n          if (*(int *)((int)pvVar11 + 0x18) != (int)pvVar11 + 0xa4) {\n            *(int *)((int)pvVar11 + 0x18) =\n                 (*(int *)((int)pvVar11 + 0x18) - *(int *)((int)pvVar11 + 0x1c)) + iVar15;\n          }\n          pvVar1 = *(void **)((int)pvVar11 + 8);\n          *(int *)((int)pvVar11 + 0x1c) = iVar15;\n          if (pvVar1 == (void *)0x0) break;\n          pvVar11 = pvVar1;\n          if (*(int *)((int)pvVar1 + 0x30) < 0) goto LAB_000256e9;\n        }\n        pvVar11 = *(void **)((int)pvVar11 + 4);\n        iVar17 = *(int *)((int)pvVar11 + 0x30);\n      }\n    }\nLAB_000256e9:\n    if ((*(byte *)(param_1 + 0xb) & 4) != 0) {\n      if ((param_1[8] == local_d0) || (local_d4 == 0)) {\n        local_a4 = local_a4 + -1;\n      }\n      *local_a4 = 0;\n    }\n    if ((pDVar21 == (DIR *)0x0) && (bVar25)) {\n      if ((param_2 == 1) || (local_d4 == 0)) {\n        if (*(int *)(iVar2 + 0x30) == 0) {\n          iVar15 = FUN_00024bb0();\n        }\n        else {\n          iVar15 = FUN_00024e60(&DAT_0002e141);\n        }\n        if (iVar15 != 0) {\n          *(undefined2 *)(iVar2 + 0x3c) = 7;\n          param_1[0xb] = param_1[0xb] | 0x4000;\n          while (pvVar11 = local_b8, local_b8 != (void *)0x0) {\n            while( true ) {\n              local_b8 = *(void **)((int)pvVar11 + 8);\n              if (*(DIR **)((int)pvVar11 + 0xc) == (DIR *)0x0) break;\n              closedir(*(DIR **)((int)pvVar11 + 0xc));\n              free(pvVar11);\n              pvVar11 = local_b8;\n              if (local_b8 == (void *)0x0) goto LAB_00025c40;\n            }\n            free(pvVar11);\n          }\n          goto LAB_00025c40;\n        }\n        goto LAB_0002574d;\n      }\n    }\n    else {\nLAB_0002574d:\n      if (local_d4 == 0) {\n        if (((param_2 == 3) && (*(short *)(iVar2 + 0x3c) != 4)) && (*(short *)(iVar2 + 0x3c) != 7))\n        {\n          *(undefined2 *)(iVar2 + 0x3c) = 6;\n        }\n        if (local_b8 != (void *)0x0) {\n          pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n          pvVar11 = *(void **)((int)local_b8 + 8);\n          if (pDVar21 == (DIR *)0x0) goto LAB_00025c94;\n          do {\n            closedir(pDVar21);\n            free(local_b8);\n            local_b8 = pvVar11;\n            while( true ) {\n              if (local_b8 == (void *)0x0) goto LAB_00025c40;\n              pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n              pvVar11 = *(void **)((int)local_b8 + 8);\n              if (pDVar21 != (DIR *)0x0) break;\nLAB_00025c94:\n              free(local_b8);\n              local_b8 = pvVar11;\n            }\n          } while( true );\n        }\n        goto LAB_00025c40;\n      }\n    }\n    if (bVar4) {\n      param_1[10] = (int)FUN_00024700;\n      local_b8 = (void *)FUN_000248e0();\n      param_1[10] = 0;\n    }\n    else if ((param_1[10] != 0) && (local_d4 != 1)) {\n      local_b8 = (void *)FUN_000248e0();\n    }\n  }" { (expression_statement "local_9c = dirfd(pDVar21);" (assignment_expression "local_9c = dirfd(pDVar21)" identifier = (call_expression "dirfd(pDVar21)" identifier (argument_list "(pDVar21)" ( identifier )))) ;) (if_statement "if (local_9c < 0) {\n      closedir(*(DIR **)(iVar2 + 0xc));\n      *(undefined4 *)(iVar2 + 0xc) = 0;\n      goto joined_r0x00025c30;\n    }" if (parenthesized_expression "(local_9c < 0)" ( (binary_expression "local_9c < 0" identifier < number_literal) )) (compound_statement "{\n      closedir(*(DIR **)(iVar2 + 0xc));\n      *(undefined4 *)(iVar2 + 0xc) = 0;\n      goto joined_r0x00025c30;\n    }" { (expression_statement "closedir(*(DIR **)(iVar2 + 0xc));" (call_expression "closedir(*(DIR **)(iVar2 + 0xc))" identifier (argument_list "(*(DIR **)(iVar2 + 0xc))" ( (pointer_expression "*(DIR **)(iVar2 + 0xc)" * (cast_expression "(DIR **)(iVar2 + 0xc)" ( (type_descriptor "DIR **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar2 + 0xc)" ( (binary_expression "iVar2 + 0xc" identifier + number_literal) )))) ))) ;) (expression_statement "*(undefined4 *)(iVar2 + 0xc) = 0;" (assignment_expression "*(undefined4 *)(iVar2 + 0xc) = 0" (pointer_expression "*(undefined4 *)(iVar2 + 0xc)" * (cast_expression "(undefined4 *)(iVar2 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0xc)" ( (binary_expression "iVar2 + 0xc" identifier + number_literal) )))) = number_literal) ;) (goto_statement "goto joined_r0x00025c30;" goto statement_identifier ;) })) (if_statement "if (param_1[10] == 0) {\n      local_a8 = 100000;\n      uVar13 = param_1[0xb];\n      bVar25 = true;\n    }\n    else {\n      local_a8 = 0xffffffff;\nLAB_0002521b:\n      bVar25 = true;\n      uVar13 = 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_a8 = 100000;\n      uVar13 = param_1[0xb];\n      bVar25 = true;\n    }" { (expression_statement "local_a8 = 100000;" (assignment_expression "local_a8 = 100000" identifier = number_literal) ;) (expression_statement "uVar13 = param_1[0xb];" (assignment_expression "uVar13 = param_1[0xb]" identifier = (subscript_expression "param_1[0xb]" identifier [ number_literal ])) ;) (expression_statement "bVar25 = true;" (assignment_expression "bVar25 = true" identifier = true) ;) }) (else_clause "else {\n      local_a8 = 0xffffffff;\nLAB_0002521b:\n      bVar25 = true;\n      uVar13 = param_1[0xb];\n    }" else (compound_statement "{\n      local_a8 = 0xffffffff;\nLAB_0002521b:\n      bVar25 = true;\n      uVar13 = param_1[0xb];\n    }" { (expression_statement "local_a8 = 0xffffffff;" (assignment_expression "local_a8 = 0xffffffff" identifier = number_literal) ;) (labeled_statement "LAB_0002521b:\n      bVar25 = true;" statement_identifier : (expression_statement "bVar25 = true;" (assignment_expression "bVar25 = true" identifier = true) ;)) (expression_statement "uVar13 = param_1[0xb];" (assignment_expression "uVar13 = param_1[0xb]" identifier = (subscript_expression "param_1[0xb]" identifier [ number_literal ])) ;) }))) (labeled_statement "LAB_00025223:\n    uVar23 = *(uint *)(iVar2 + 0x28);" statement_identifier : (expression_statement "uVar23 = *(uint *)(iVar2 + 0x28);" (assignment_expression "uVar23 = *(uint *)(iVar2 + 0x28)" identifier = (pointer_expression "*(uint *)(iVar2 + 0x28)" * (cast_expression "(uint *)(iVar2 + 0x28)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x28)" ( (binary_expression "iVar2 + 0x28" identifier + number_literal) ))))) ;)) (expression_statement "uVar22 = uVar23 - 1;" (assignment_expression "uVar22 = uVar23 - 1" identifier = (binary_expression "uVar23 - 1" identifier - number_literal)) ;) (expression_statement "local_d0 = uVar23;" (assignment_expression "local_d0 = uVar23" identifier = identifier) ;) (if_statement "if (*(char *)(*(int *)(iVar2 + 0x1c) + -1 + uVar23) != '/') {\n      local_d0 = uVar23 + 1;\n      uVar22 = uVar23;\n    }" if (parenthesized_expression "(*(char *)(*(int *)(iVar2 + 0x1c) + -1 + uVar23) != '/')" ( (binary_expression "*(char *)(*(int *)(iVar2 + 0x1c) + -1 + uVar23) != '/'" (pointer_expression "*(char *)(*(int *)(iVar2 + 0x1c) + -1 + uVar23)" * (cast_expression "(char *)(*(int *)(iVar2 + 0x1c) + -1 + uVar23)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar2 + 0x1c) + -1 + uVar23)" ( (binary_expression "*(int *)(iVar2 + 0x1c) + -1 + uVar23" (binary_expression "*(int *)(iVar2 + 0x1c) + -1" (pointer_expression "*(int *)(iVar2 + 0x1c)" * (cast_expression "(int *)(iVar2 + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x1c)" ( (binary_expression "iVar2 + 0x1c" identifier + number_literal) )))) + number_literal) + identifier) )))) != (char_literal "'/'" ' character ')) )) (compound_statement "{\n      local_d0 = uVar23 + 1;\n      uVar22 = uVar23;\n    }" { (expression_statement "local_d0 = uVar23 + 1;" (assignment_expression "local_d0 = uVar23 + 1" identifier = (binary_expression "uVar23 + 1" identifier + number_literal)) ;) (expression_statement "uVar22 = uVar23;" (assignment_expression "uVar22 = uVar23" identifier = identifier) ;) })) (expression_statement "local_a4 = (undefined1 *)0x0;" (assignment_expression "local_a4 = (undefined1 *)0x0" identifier = (cast_expression "(undefined1 *)0x0" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if ((uVar13 & 4) != 0) {\n      local_a4 = (undefined1 *)(uVar22 + param_1[5]) + 1;\n      *(undefined1 *)(uVar22 + param_1[5]) = 0x2f;\n    }" if (parenthesized_expression "((uVar13 & 4) != 0)" ( (binary_expression "(uVar13 & 4) != 0" (parenthesized_expression "(uVar13 & 4)" ( (binary_expression "uVar13 & 4" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n      local_a4 = (undefined1 *)(uVar22 + param_1[5]) + 1;\n      *(undefined1 *)(uVar22 + param_1[5]) = 0x2f;\n    }" { (expression_statement "local_a4 = (undefined1 *)(uVar22 + param_1[5]) + 1;" (assignment_expression "local_a4 = (undefined1 *)(uVar22 + param_1[5]) + 1" identifier = (binary_expression "(undefined1 *)(uVar22 + param_1[5]) + 1" (cast_expression "(undefined1 *)(uVar22 + param_1[5])" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar22 + param_1[5])" ( (binary_expression "uVar22 + param_1[5]" identifier + (subscript_expression "param_1[5]" identifier [ number_literal ])) ))) + number_literal)) ;) (expression_statement "*(undefined1 *)(uVar22 + param_1[5]) = 0x2f;" (assignment_expression "*(undefined1 *)(uVar22 + param_1[5]) = 0x2f" (pointer_expression "*(undefined1 *)(uVar22 + param_1[5])" * (cast_expression "(undefined1 *)(uVar22 + param_1[5])" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar22 + param_1[5])" ( (binary_expression "uVar22 + param_1[5]" identifier + (subscript_expression "param_1[5]" identifier [ number_literal ])) )))) = number_literal) ;) })) (expression_statement "puVar6 = PTR_free_0003afa8;" (assignment_expression "puVar6 = PTR_free_0003afa8" identifier = identifier) ;) (expression_statement "local_b0 = param_1[8] - local_d0;" (assignment_expression "local_b0 = param_1[8] - local_d0" identifier = (binary_expression "param_1[8] - local_d0" (subscript_expression "param_1[8]" identifier [ number_literal ]) - identifier)) ;) (expression_statement "bVar4 = false;" (assignment_expression "bVar4 = false" identifier = false) ;) (expression_statement "bVar3 = false;" (assignment_expression "bVar3 = false" identifier = false) ;) (expression_statement "iVar15 = *(int *)(iVar2 + 0x30);" (assignment_expression "iVar15 = *(int *)(iVar2 + 0x30)" identifier = (pointer_expression "*(int *)(iVar2 + 0x30)" * (cast_expression "(int *)(iVar2 + 0x30)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x30)" ( (binary_expression "iVar2 + 0x30" identifier + number_literal) ))))) ;) (expression_statement "local_c4 = (void *)0x0;" (assignment_expression "local_c4 = (void *)0x0" identifier = (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_d4 = 0;" (assignment_expression "local_d4 = 0" identifier = number_literal) ;) (expression_statement "local_b8 = (void *)0x0;" (assignment_expression "local_b8 = (void *)0x0" identifier = (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (labeled_statement "LAB_000252fb:\n    do {\n      do {\n        pDVar16 = *(DIR **)(iVar2 + 0xc);\n        if (pDVar16 == (DIR *)0x0) goto LAB_000256de;\n        piVar9 = __errno_location();\n        *piVar9 = 0;\n        pdVar10 = readdir64(pDVar16);\n        if (pdVar10 == (dirent64 *)0x0) {\n          if (*piVar9 != 0) {\n            *(int *)(iVar2 + 0x20) = *piVar9;\n            *(ushort *)(iVar2 + 0x3c) =\n                 (-(ushort)(pDVar21 == (DIR *)0x0 && local_d4 == 0) & 0xfffd) + 7;\n          }\n          if (*(DIR **)(iVar2 + 0xc) != (DIR *)0x0) {\n            closedir(*(DIR **)(iVar2 + 0xc));\n            *(undefined4 *)(iVar2 + 0xc) = 0;\n          }\n          goto LAB_000256de;\n        }\n      } while ((((*(byte *)(param_1 + 0xb) & 0x20) == 0) && (pdVar10->d_name[0] == '.')) &&\n              ((pdVar10->d_name[1] == '\0' || (*(short *)(pdVar10->d_name + 1) == 0x2e))));\n      __n = strlen(pdVar10->d_name);\n      pvVar11 = malloc(__n + 0xa8 & 0xfffffffc);\n      if (pvVar11 == (void *)0x0) {\n        iVar15 = *piVar9;\nLAB_000255a6:\n        free(pvVar11);\n        if (local_b8 != (void *)0x0) {\n          pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n          pvVar11 = *(void **)((int)local_b8 + 8);\n          if (pDVar21 == (DIR *)0x0) goto LAB_000255f4;\n          do {\n            closedir(pDVar21);\n            free(local_b8);\n            local_b8 = pvVar11;\n            while( true ) {\n              if (local_b8 == (void *)0x0) goto LAB_00025608;\n              pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n              pvVar11 = *(void **)((int)local_b8 + 8);\n              if (pDVar21 != (DIR *)0x0) break;\nLAB_000255f4:\n              free(local_b8);\n              local_b8 = pvVar11;\n            }\n          } while( true );\n        }\nLAB_00025608:\n        closedir(*(DIR **)(iVar2 + 0xc));\n        *(undefined4 *)(iVar2 + 0xc) = 0;\n        *(undefined2 *)(iVar2 + 0x3c) = 7;\n        local_b8 = (void *)0x0;\n        param_1[0xb] = param_1[0xb] | 0x4000;\n        *piVar9 = iVar15;\n        goto LAB_0002563f;\n      }\n      pvVar1 = (void *)((int)pvVar11 + 0xa4);\n      memcpy(pvVar1,pdVar10->d_name,__n);\n      __ptr = (void *)param_1[5];\n      *(undefined1 *)((int)pvVar11 + __n + 0xa4) = 0;\n      *(size_t *)((int)pvVar11 + 0x34) = __n;\n      *(int **)((int)pvVar11 + 0x2c) = param_1;\n      *(void **)((int)pvVar11 + 0x1c) = __ptr;\n      *(undefined4 *)((int)pvVar11 + 0x20) = 0;\n      *(undefined4 *)((int)pvVar11 + 0xc) = 0;\n      *(undefined4 *)((int)pvVar11 + 0x3e) = 0x30000;\n      *(undefined4 *)((int)pvVar11 + 0x10) = 0;\n      *(undefined4 *)((int)pvVar11 + 0x14) = 0;\n      if (local_b0 <= __n) {\n        uVar13 = local_d0 + 0x101 + param_1[8] + __n;\n        if (uVar13 < (uint)param_1[8]) {\n          iVar15 = 0x24;\n          free(__ptr);\n          param_1[5] = 0;\n          *piVar9 = 0x24;\n        }\n        else {\n          param_1[8] = uVar13;\n          pvVar14 = realloc(__ptr,uVar13);\n          if (pvVar14 != (void *)0x0) {\n            param_1[5] = (int)pvVar14;\n            if ((__ptr != pvVar14) && (bVar3 = true, (*(byte *)(param_1 + 0xb) & 4) != 0)) {\n              local_a4 = (undefined1 *)((int)pvVar14 + local_d0);\n            }\n            local_b0 = param_1[8] - local_d0;\n            goto LAB_000253d8;\n          }\n          free((void *)param_1[5]);\n          param_1[5] = 0;\n          iVar15 = *piVar9;\n        }\n        goto LAB_000255a6;\n      }\nLAB_000253d8:\n      if (CARRY4(__n,local_d0)) {\n        free(pvVar11);\n        if (local_b8 != (void *)0x0) {\n          pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n          pvVar11 = *(void **)((int)local_b8 + 8);\n          if (pDVar21 == (DIR *)0x0) goto LAB_00025e84;\n          do {\n            closedir(pDVar21);\n            free(local_b8);\n            local_b8 = pvVar11;\n            while( true ) {\n              if (local_b8 == (void *)0x0) goto LAB_00025e94;\n              pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n              pvVar11 = *(void **)((int)local_b8 + 8);\n              if (pDVar21 != (DIR *)0x0) break;\nLAB_00025e84:\n              free(local_b8);\n              local_b8 = pvVar11;\n            }\n          } while( true );\n        }\nLAB_00025e94:\n        closedir(*(DIR **)(iVar2 + 0xc));\n        *(undefined4 *)(iVar2 + 0xc) = 0;\n        *(undefined2 *)(iVar2 + 0x3c) = 7;\n        local_b8 = (void *)0x0;\n        param_1[0xb] = param_1[0xb] | 0x4000;\n        *piVar9 = 0x24;\n        goto LAB_0002563f;\n      }\n      uVar12 = *(undefined4 *)((int)&pdVar10->d_ino + 4);\n      *(size_t *)((int)pvVar11 + 0x28) = __n + local_d0;\n      *(int *)((int)pvVar11 + 0x30) = iVar15 + 1;\n      *(int *)((int)pvVar11 + 4) = *param_1;\n      _Var5 = pdVar10->d_ino;\n      *(undefined4 *)((int)pvVar11 + 0xa0) = uVar12;\n      *(int *)((int)pvVar11 + 0x9c) = (int)_Var5;\n      uVar13 = param_1[0xb];\n      if ((uVar13 & 4) == 0) {\n        *(void **)((int)pvVar11 + 0x18) = pvVar1;\n      }\n      else {\n        *(undefined4 *)((int)pvVar11 + 0x18) = *(undefined4 *)((int)pvVar11 + 0x1c);\n        memmove(local_a4,pvVar1,*(int *)((int)pvVar11 + 0x34) + 1);\n        uVar13 = param_1[0xb];\n      }\n      if ((param_1[10] == 0) || ((uVar13 & 0x400) != 0)) {\n        uVar23 = pdVar10->d_type - 1;\n        if (((uVar13 & 0x18) == 0x18) && ((pdVar10->d_type & 0xfb) != 0)) {\n          *(undefined2 *)((int)pvVar11 + 0x3c) = 0xb;\n          if (uVar23 < 0xc) {\n            *(undefined4 *)((int)pvVar11 + 0x54) = *(undefined4 *)(&DAT_00031560 + uVar23 * 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 (uVar23 < 0xc) {\n            *(undefined4 *)((int)pvVar11 + 0x54) = *(undefined4 *)(&DAT_00031560 + uVar23 * 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        uVar8 = FUN_00024740();\n        *(undefined2 *)((int)pvVar11 + 0x3c) = uVar8;\n      }\n      *(undefined4 *)((int)pvVar11 + 8) = 0;\n      pvVar1 = pvVar11;\n      if (local_b8 != (void *)0x0) {\n        *(void **)((int)local_c4 + 8) = pvVar11;\n        pvVar1 = local_b8;\n      }\n      local_b8 = pvVar1;\n      local_c4 = pvVar11;\n      if (local_d4 == 10000) {\n        if (param_1[10] == 0) {\n          iVar17 = *(int *)(iVar2 + 0x2c);\n          if ((*(byte *)(iVar17 + 0x2d) & 2) != 0) {\n            iVar18 = *(int *)(iVar17 + 0x30);\n            if (iVar18 == 0) {\n              iVar18 = FUN_0001df90(0xd,0,FUN_000246b0,FUN_000246e0,puVar6);\n              *(int *)(iVar17 + 0x30) = iVar18;\n              if (iVar18 != 0) goto LAB_00025920;\nLAB_000259b0:\n              if ((local_9c < 0) ||\n                 (iVar19 = fstatfs64(local_9c,&local_74), iVar17 = local_74.f_type, iVar19 != 0))\n              goto LAB_00025a48;\n              local_d4 = local_74.f_type;\n              if ((iVar18 != 0) &&\n                 (__ptr_00 = (undefined4 *)malloc(0xc), __ptr_00 != (undefined4 *)0x0)) {\n                uVar12 = *(undefined4 *)(iVar2 + 0x44);\n                __ptr_00[1] = *(undefined4 *)(iVar2 + 0x48);\n                *__ptr_00 = uVar12;\n                __ptr_00[2] = iVar17;\n                puVar20 = (undefined4 *)FUN_0001e8d0(iVar18,__ptr_00);\n                if (puVar20 == (undefined4 *)0x0) {\n                  free(__ptr_00);\n                  local_d4 = local_74.f_type;\n                }\n                else {\n                  if (__ptr_00 != puVar20) {\n                    /* WARNING: Subroutine does not return */\n                    abort();\n                  }\n                  local_d4 = local_74.f_type;\n                }\n              }\n            }\n            else {\nLAB_00025920:\n              local_7c = *(undefined4 *)(iVar2 + 0x48);\n              local_80 = *(undefined4 *)(iVar2 + 0x44);\n              iVar17 = FUN_0001dce0(iVar18,&local_80);\n              if (iVar17 == 0) goto LAB_000259b0;\n              local_d4 = *(int *)(iVar17 + 8);\n            }\n            if (((local_d4 == 0x6969) || (local_d4 == 0x1021994)) || (local_d4 == -0xacb2be)) {\n              bVar4 = false;\n              goto LAB_00025473;\n            }\n          }\nLAB_00025a48:\n          bVar4 = true;\n        }\nLAB_00025473:\n        local_d4 = 0x2711;\n        goto LAB_000252fb;\n      }\n      local_d4 = local_d4 + 1;\n    } while (local_d4 < local_a8);" statement_identifier : (do_statement "do {\n      do {\n        pDVar16 = *(DIR **)(iVar2 + 0xc);\n        if (pDVar16 == (DIR *)0x0) goto LAB_000256de;\n        piVar9 = __errno_location();\n        *piVar9 = 0;\n        pdVar10 = readdir64(pDVar16);\n        if (pdVar10 == (dirent64 *)0x0) {\n          if (*piVar9 != 0) {\n            *(int *)(iVar2 + 0x20) = *piVar9;\n            *(ushort *)(iVar2 + 0x3c) =\n                 (-(ushort)(pDVar21 == (DIR *)0x0 && local_d4 == 0) & 0xfffd) + 7;\n          }\n          if (*(DIR **)(iVar2 + 0xc) != (DIR *)0x0) {\n            closedir(*(DIR **)(iVar2 + 0xc));\n            *(undefined4 *)(iVar2 + 0xc) = 0;\n          }\n          goto LAB_000256de;\n        }\n      } while ((((*(byte *)(param_1 + 0xb) & 0x20) == 0) && (pdVar10->d_name[0] == '.')) &&\n              ((pdVar10->d_name[1] == '\0' || (*(short *)(pdVar10->d_name + 1) == 0x2e))));\n      __n = strlen(pdVar10->d_name);\n      pvVar11 = malloc(__n + 0xa8 & 0xfffffffc);\n      if (pvVar11 == (void *)0x0) {\n        iVar15 = *piVar9;\nLAB_000255a6:\n        free(pvVar11);\n        if (local_b8 != (void *)0x0) {\n          pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n          pvVar11 = *(void **)((int)local_b8 + 8);\n          if (pDVar21 == (DIR *)0x0) goto LAB_000255f4;\n          do {\n            closedir(pDVar21);\n            free(local_b8);\n            local_b8 = pvVar11;\n            while( true ) {\n              if (local_b8 == (void *)0x0) goto LAB_00025608;\n              pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n              pvVar11 = *(void **)((int)local_b8 + 8);\n              if (pDVar21 != (DIR *)0x0) break;\nLAB_000255f4:\n              free(local_b8);\n              local_b8 = pvVar11;\n            }\n          } while( true );\n        }\nLAB_00025608:\n        closedir(*(DIR **)(iVar2 + 0xc));\n        *(undefined4 *)(iVar2 + 0xc) = 0;\n        *(undefined2 *)(iVar2 + 0x3c) = 7;\n        local_b8 = (void *)0x0;\n        param_1[0xb] = param_1[0xb] | 0x4000;\n        *piVar9 = iVar15;\n        goto LAB_0002563f;\n      }\n      pvVar1 = (void *)((int)pvVar11 + 0xa4);\n      memcpy(pvVar1,pdVar10->d_name,__n);\n      __ptr = (void *)param_1[5];\n      *(undefined1 *)((int)pvVar11 + __n + 0xa4) = 0;\n      *(size_t *)((int)pvVar11 + 0x34) = __n;\n      *(int **)((int)pvVar11 + 0x2c) = param_1;\n      *(void **)((int)pvVar11 + 0x1c) = __ptr;\n      *(undefined4 *)((int)pvVar11 + 0x20) = 0;\n      *(undefined4 *)((int)pvVar11 + 0xc) = 0;\n      *(undefined4 *)((int)pvVar11 + 0x3e) = 0x30000;\n      *(undefined4 *)((int)pvVar11 + 0x10) = 0;\n      *(undefined4 *)((int)pvVar11 + 0x14) = 0;\n      if (local_b0 <= __n) {\n        uVar13 = local_d0 + 0x101 + param_1[8] + __n;\n        if (uVar13 < (uint)param_1[8]) {\n          iVar15 = 0x24;\n          free(__ptr);\n          param_1[5] = 0;\n          *piVar9 = 0x24;\n        }\n        else {\n          param_1[8] = uVar13;\n          pvVar14 = realloc(__ptr,uVar13);\n          if (pvVar14 != (void *)0x0) {\n            param_1[5] = (int)pvVar14;\n            if ((__ptr != pvVar14) && (bVar3 = true, (*(byte *)(param_1 + 0xb) & 4) != 0)) {\n              local_a4 = (undefined1 *)((int)pvVar14 + local_d0);\n            }\n            local_b0 = param_1[8] - local_d0;\n            goto LAB_000253d8;\n          }\n          free((void *)param_1[5]);\n          param_1[5] = 0;\n          iVar15 = *piVar9;\n        }\n        goto LAB_000255a6;\n      }\nLAB_000253d8:\n      if (CARRY4(__n,local_d0)) {\n        free(pvVar11);\n        if (local_b8 != (void *)0x0) {\n          pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n          pvVar11 = *(void **)((int)local_b8 + 8);\n          if (pDVar21 == (DIR *)0x0) goto LAB_00025e84;\n          do {\n            closedir(pDVar21);\n            free(local_b8);\n            local_b8 = pvVar11;\n            while( true ) {\n              if (local_b8 == (void *)0x0) goto LAB_00025e94;\n              pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n              pvVar11 = *(void **)((int)local_b8 + 8);\n              if (pDVar21 != (DIR *)0x0) break;\nLAB_00025e84:\n              free(local_b8);\n              local_b8 = pvVar11;\n            }\n          } while( true );\n        }\nLAB_00025e94:\n        closedir(*(DIR **)(iVar2 + 0xc));\n        *(undefined4 *)(iVar2 + 0xc) = 0;\n        *(undefined2 *)(iVar2 + 0x3c) = 7;\n        local_b8 = (void *)0x0;\n        param_1[0xb] = param_1[0xb] | 0x4000;\n        *piVar9 = 0x24;\n        goto LAB_0002563f;\n      }\n      uVar12 = *(undefined4 *)((int)&pdVar10->d_ino + 4);\n      *(size_t *)((int)pvVar11 + 0x28) = __n + local_d0;\n      *(int *)((int)pvVar11 + 0x30) = iVar15 + 1;\n      *(int *)((int)pvVar11 + 4) = *param_1;\n      _Var5 = pdVar10->d_ino;\n      *(undefined4 *)((int)pvVar11 + 0xa0) = uVar12;\n      *(int *)((int)pvVar11 + 0x9c) = (int)_Var5;\n      uVar13 = param_1[0xb];\n      if ((uVar13 & 4) == 0) {\n        *(void **)((int)pvVar11 + 0x18) = pvVar1;\n      }\n      else {\n        *(undefined4 *)((int)pvVar11 + 0x18) = *(undefined4 *)((int)pvVar11 + 0x1c);\n        memmove(local_a4,pvVar1,*(int *)((int)pvVar11 + 0x34) + 1);\n        uVar13 = param_1[0xb];\n      }\n      if ((param_1[10] == 0) || ((uVar13 & 0x400) != 0)) {\n        uVar23 = pdVar10->d_type - 1;\n        if (((uVar13 & 0x18) == 0x18) && ((pdVar10->d_type & 0xfb) != 0)) {\n          *(undefined2 *)((int)pvVar11 + 0x3c) = 0xb;\n          if (uVar23 < 0xc) {\n            *(undefined4 *)((int)pvVar11 + 0x54) = *(undefined4 *)(&DAT_00031560 + uVar23 * 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 (uVar23 < 0xc) {\n            *(undefined4 *)((int)pvVar11 + 0x54) = *(undefined4 *)(&DAT_00031560 + uVar23 * 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        uVar8 = FUN_00024740();\n        *(undefined2 *)((int)pvVar11 + 0x3c) = uVar8;\n      }\n      *(undefined4 *)((int)pvVar11 + 8) = 0;\n      pvVar1 = pvVar11;\n      if (local_b8 != (void *)0x0) {\n        *(void **)((int)local_c4 + 8) = pvVar11;\n        pvVar1 = local_b8;\n      }\n      local_b8 = pvVar1;\n      local_c4 = pvVar11;\n      if (local_d4 == 10000) {\n        if (param_1[10] == 0) {\n          iVar17 = *(int *)(iVar2 + 0x2c);\n          if ((*(byte *)(iVar17 + 0x2d) & 2) != 0) {\n            iVar18 = *(int *)(iVar17 + 0x30);\n            if (iVar18 == 0) {\n              iVar18 = FUN_0001df90(0xd,0,FUN_000246b0,FUN_000246e0,puVar6);\n              *(int *)(iVar17 + 0x30) = iVar18;\n              if (iVar18 != 0) goto LAB_00025920;\nLAB_000259b0:\n              if ((local_9c < 0) ||\n                 (iVar19 = fstatfs64(local_9c,&local_74), iVar17 = local_74.f_type, iVar19 != 0))\n              goto LAB_00025a48;\n              local_d4 = local_74.f_type;\n              if ((iVar18 != 0) &&\n                 (__ptr_00 = (undefined4 *)malloc(0xc), __ptr_00 != (undefined4 *)0x0)) {\n                uVar12 = *(undefined4 *)(iVar2 + 0x44);\n                __ptr_00[1] = *(undefined4 *)(iVar2 + 0x48);\n                *__ptr_00 = uVar12;\n                __ptr_00[2] = iVar17;\n                puVar20 = (undefined4 *)FUN_0001e8d0(iVar18,__ptr_00);\n                if (puVar20 == (undefined4 *)0x0) {\n                  free(__ptr_00);\n                  local_d4 = local_74.f_type;\n                }\n                else {\n                  if (__ptr_00 != puVar20) {\n                    /* WARNING: Subroutine does not return */\n                    abort();\n                  }\n                  local_d4 = local_74.f_type;\n                }\n              }\n            }\n            else {\nLAB_00025920:\n              local_7c = *(undefined4 *)(iVar2 + 0x48);\n              local_80 = *(undefined4 *)(iVar2 + 0x44);\n              iVar17 = FUN_0001dce0(iVar18,&local_80);\n              if (iVar17 == 0) goto LAB_000259b0;\n              local_d4 = *(int *)(iVar17 + 8);\n            }\n            if (((local_d4 == 0x6969) || (local_d4 == 0x1021994)) || (local_d4 == -0xacb2be)) {\n              bVar4 = false;\n              goto LAB_00025473;\n            }\n          }\nLAB_00025a48:\n          bVar4 = true;\n        }\nLAB_00025473:\n        local_d4 = 0x2711;\n        goto LAB_000252fb;\n      }\n      local_d4 = local_d4 + 1;\n    } while (local_d4 < local_a8);" do (compound_statement "{\n      do {\n        pDVar16 = *(DIR **)(iVar2 + 0xc);\n        if (pDVar16 == (DIR *)0x0) goto LAB_000256de;\n        piVar9 = __errno_location();\n        *piVar9 = 0;\n        pdVar10 = readdir64(pDVar16);\n        if (pdVar10 == (dirent64 *)0x0) {\n          if (*piVar9 != 0) {\n            *(int *)(iVar2 + 0x20) = *piVar9;\n            *(ushort *)(iVar2 + 0x3c) =\n                 (-(ushort)(pDVar21 == (DIR *)0x0 && local_d4 == 0) & 0xfffd) + 7;\n          }\n          if (*(DIR **)(iVar2 + 0xc) != (DIR *)0x0) {\n            closedir(*(DIR **)(iVar2 + 0xc));\n            *(undefined4 *)(iVar2 + 0xc) = 0;\n          }\n          goto LAB_000256de;\n        }\n      } while ((((*(byte *)(param_1 + 0xb) & 0x20) == 0) && (pdVar10->d_name[0] == '.')) &&\n              ((pdVar10->d_name[1] == '\0' || (*(short *)(pdVar10->d_name + 1) == 0x2e))));\n      __n = strlen(pdVar10->d_name);\n      pvVar11 = malloc(__n + 0xa8 & 0xfffffffc);\n      if (pvVar11 == (void *)0x0) {\n        iVar15 = *piVar9;\nLAB_000255a6:\n        free(pvVar11);\n        if (local_b8 != (void *)0x0) {\n          pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n          pvVar11 = *(void **)((int)local_b8 + 8);\n          if (pDVar21 == (DIR *)0x0) goto LAB_000255f4;\n          do {\n            closedir(pDVar21);\n            free(local_b8);\n            local_b8 = pvVar11;\n            while( true ) {\n              if (local_b8 == (void *)0x0) goto LAB_00025608;\n              pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n              pvVar11 = *(void **)((int)local_b8 + 8);\n              if (pDVar21 != (DIR *)0x0) break;\nLAB_000255f4:\n              free(local_b8);\n              local_b8 = pvVar11;\n            }\n          } while( true );\n        }\nLAB_00025608:\n        closedir(*(DIR **)(iVar2 + 0xc));\n        *(undefined4 *)(iVar2 + 0xc) = 0;\n        *(undefined2 *)(iVar2 + 0x3c) = 7;\n        local_b8 = (void *)0x0;\n        param_1[0xb] = param_1[0xb] | 0x4000;\n        *piVar9 = iVar15;\n        goto LAB_0002563f;\n      }\n      pvVar1 = (void *)((int)pvVar11 + 0xa4);\n      memcpy(pvVar1,pdVar10->d_name,__n);\n      __ptr = (void *)param_1[5];\n      *(undefined1 *)((int)pvVar11 + __n + 0xa4) = 0;\n      *(size_t *)((int)pvVar11 + 0x34) = __n;\n      *(int **)((int)pvVar11 + 0x2c) = param_1;\n      *(void **)((int)pvVar11 + 0x1c) = __ptr;\n      *(undefined4 *)((int)pvVar11 + 0x20) = 0;\n      *(undefined4 *)((int)pvVar11 + 0xc) = 0;\n      *(undefined4 *)((int)pvVar11 + 0x3e) = 0x30000;\n      *(undefined4 *)((int)pvVar11 + 0x10) = 0;\n      *(undefined4 *)((int)pvVar11 + 0x14) = 0;\n      if (local_b0 <= __n) {\n        uVar13 = local_d0 + 0x101 + param_1[8] + __n;\n        if (uVar13 < (uint)param_1[8]) {\n          iVar15 = 0x24;\n          free(__ptr);\n          param_1[5] = 0;\n          *piVar9 = 0x24;\n        }\n        else {\n          param_1[8] = uVar13;\n          pvVar14 = realloc(__ptr,uVar13);\n          if (pvVar14 != (void *)0x0) {\n            param_1[5] = (int)pvVar14;\n            if ((__ptr != pvVar14) && (bVar3 = true, (*(byte *)(param_1 + 0xb) & 4) != 0)) {\n              local_a4 = (undefined1 *)((int)pvVar14 + local_d0);\n            }\n            local_b0 = param_1[8] - local_d0;\n            goto LAB_000253d8;\n          }\n          free((void *)param_1[5]);\n          param_1[5] = 0;\n          iVar15 = *piVar9;\n        }\n        goto LAB_000255a6;\n      }\nLAB_000253d8:\n      if (CARRY4(__n,local_d0)) {\n        free(pvVar11);\n        if (local_b8 != (void *)0x0) {\n          pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n          pvVar11 = *(void **)((int)local_b8 + 8);\n          if (pDVar21 == (DIR *)0x0) goto LAB_00025e84;\n          do {\n            closedir(pDVar21);\n            free(local_b8);\n            local_b8 = pvVar11;\n            while( true ) {\n              if (local_b8 == (void *)0x0) goto LAB_00025e94;\n              pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n              pvVar11 = *(void **)((int)local_b8 + 8);\n              if (pDVar21 != (DIR *)0x0) break;\nLAB_00025e84:\n              free(local_b8);\n              local_b8 = pvVar11;\n            }\n          } while( true );\n        }\nLAB_00025e94:\n        closedir(*(DIR **)(iVar2 + 0xc));\n        *(undefined4 *)(iVar2 + 0xc) = 0;\n        *(undefined2 *)(iVar2 + 0x3c) = 7;\n        local_b8 = (void *)0x0;\n        param_1[0xb] = param_1[0xb] | 0x4000;\n        *piVar9 = 0x24;\n        goto LAB_0002563f;\n      }\n      uVar12 = *(undefined4 *)((int)&pdVar10->d_ino + 4);\n      *(size_t *)((int)pvVar11 + 0x28) = __n + local_d0;\n      *(int *)((int)pvVar11 + 0x30) = iVar15 + 1;\n      *(int *)((int)pvVar11 + 4) = *param_1;\n      _Var5 = pdVar10->d_ino;\n      *(undefined4 *)((int)pvVar11 + 0xa0) = uVar12;\n      *(int *)((int)pvVar11 + 0x9c) = (int)_Var5;\n      uVar13 = param_1[0xb];\n      if ((uVar13 & 4) == 0) {\n        *(void **)((int)pvVar11 + 0x18) = pvVar1;\n      }\n      else {\n        *(undefined4 *)((int)pvVar11 + 0x18) = *(undefined4 *)((int)pvVar11 + 0x1c);\n        memmove(local_a4,pvVar1,*(int *)((int)pvVar11 + 0x34) + 1);\n        uVar13 = param_1[0xb];\n      }\n      if ((param_1[10] == 0) || ((uVar13 & 0x400) != 0)) {\n        uVar23 = pdVar10->d_type - 1;\n        if (((uVar13 & 0x18) == 0x18) && ((pdVar10->d_type & 0xfb) != 0)) {\n          *(undefined2 *)((int)pvVar11 + 0x3c) = 0xb;\n          if (uVar23 < 0xc) {\n            *(undefined4 *)((int)pvVar11 + 0x54) = *(undefined4 *)(&DAT_00031560 + uVar23 * 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 (uVar23 < 0xc) {\n            *(undefined4 *)((int)pvVar11 + 0x54) = *(undefined4 *)(&DAT_00031560 + uVar23 * 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        uVar8 = FUN_00024740();\n        *(undefined2 *)((int)pvVar11 + 0x3c) = uVar8;\n      }\n      *(undefined4 *)((int)pvVar11 + 8) = 0;\n      pvVar1 = pvVar11;\n      if (local_b8 != (void *)0x0) {\n        *(void **)((int)local_c4 + 8) = pvVar11;\n        pvVar1 = local_b8;\n      }\n      local_b8 = pvVar1;\n      local_c4 = pvVar11;\n      if (local_d4 == 10000) {\n        if (param_1[10] == 0) {\n          iVar17 = *(int *)(iVar2 + 0x2c);\n          if ((*(byte *)(iVar17 + 0x2d) & 2) != 0) {\n            iVar18 = *(int *)(iVar17 + 0x30);\n            if (iVar18 == 0) {\n              iVar18 = FUN_0001df90(0xd,0,FUN_000246b0,FUN_000246e0,puVar6);\n              *(int *)(iVar17 + 0x30) = iVar18;\n              if (iVar18 != 0) goto LAB_00025920;\nLAB_000259b0:\n              if ((local_9c < 0) ||\n                 (iVar19 = fstatfs64(local_9c,&local_74), iVar17 = local_74.f_type, iVar19 != 0))\n              goto LAB_00025a48;\n              local_d4 = local_74.f_type;\n              if ((iVar18 != 0) &&\n                 (__ptr_00 = (undefined4 *)malloc(0xc), __ptr_00 != (undefined4 *)0x0)) {\n                uVar12 = *(undefined4 *)(iVar2 + 0x44);\n                __ptr_00[1] = *(undefined4 *)(iVar2 + 0x48);\n                *__ptr_00 = uVar12;\n                __ptr_00[2] = iVar17;\n                puVar20 = (undefined4 *)FUN_0001e8d0(iVar18,__ptr_00);\n                if (puVar20 == (undefined4 *)0x0) {\n                  free(__ptr_00);\n                  local_d4 = local_74.f_type;\n                }\n                else {\n                  if (__ptr_00 != puVar20) {\n                    /* WARNING: Subroutine does not return */\n                    abort();\n                  }\n                  local_d4 = local_74.f_type;\n                }\n              }\n            }\n            else {\nLAB_00025920:\n              local_7c = *(undefined4 *)(iVar2 + 0x48);\n              local_80 = *(undefined4 *)(iVar2 + 0x44);\n              iVar17 = FUN_0001dce0(iVar18,&local_80);\n              if (iVar17 == 0) goto LAB_000259b0;\n              local_d4 = *(int *)(iVar17 + 8);\n            }\n            if (((local_d4 == 0x6969) || (local_d4 == 0x1021994)) || (local_d4 == -0xacb2be)) {\n              bVar4 = false;\n              goto LAB_00025473;\n            }\n          }\nLAB_00025a48:\n          bVar4 = true;\n        }\nLAB_00025473:\n        local_d4 = 0x2711;\n        goto LAB_000252fb;\n      }\n      local_d4 = local_d4 + 1;\n    }" { (do_statement "do {\n        pDVar16 = *(DIR **)(iVar2 + 0xc);\n        if (pDVar16 == (DIR *)0x0) goto LAB_000256de;\n        piVar9 = __errno_location();\n        *piVar9 = 0;\n        pdVar10 = readdir64(pDVar16);\n        if (pdVar10 == (dirent64 *)0x0) {\n          if (*piVar9 != 0) {\n            *(int *)(iVar2 + 0x20) = *piVar9;\n            *(ushort *)(iVar2 + 0x3c) =\n                 (-(ushort)(pDVar21 == (DIR *)0x0 && local_d4 == 0) & 0xfffd) + 7;\n          }\n          if (*(DIR **)(iVar2 + 0xc) != (DIR *)0x0) {\n            closedir(*(DIR **)(iVar2 + 0xc));\n            *(undefined4 *)(iVar2 + 0xc) = 0;\n          }\n          goto LAB_000256de;\n        }\n      } while ((((*(byte *)(param_1 + 0xb) & 0x20) == 0) && (pdVar10->d_name[0] == '.')) &&\n              ((pdVar10->d_name[1] == '\0' || (*(short *)(pdVar10->d_name + 1) == 0x2e))));" do (compound_statement "{\n        pDVar16 = *(DIR **)(iVar2 + 0xc);\n        if (pDVar16 == (DIR *)0x0) goto LAB_000256de;\n        piVar9 = __errno_location();\n        *piVar9 = 0;\n        pdVar10 = readdir64(pDVar16);\n        if (pdVar10 == (dirent64 *)0x0) {\n          if (*piVar9 != 0) {\n            *(int *)(iVar2 + 0x20) = *piVar9;\n            *(ushort *)(iVar2 + 0x3c) =\n                 (-(ushort)(pDVar21 == (DIR *)0x0 && local_d4 == 0) & 0xfffd) + 7;\n          }\n          if (*(DIR **)(iVar2 + 0xc) != (DIR *)0x0) {\n            closedir(*(DIR **)(iVar2 + 0xc));\n            *(undefined4 *)(iVar2 + 0xc) = 0;\n          }\n          goto LAB_000256de;\n        }\n      }" { (expression_statement "pDVar16 = *(DIR **)(iVar2 + 0xc);" (assignment_expression "pDVar16 = *(DIR **)(iVar2 + 0xc)" identifier = (pointer_expression "*(DIR **)(iVar2 + 0xc)" * (cast_expression "(DIR **)(iVar2 + 0xc)" ( (type_descriptor "DIR **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar2 + 0xc)" ( (binary_expression "iVar2 + 0xc" identifier + number_literal) ))))) ;) (if_statement "if (pDVar16 == (DIR *)0x0) goto LAB_000256de;" if (parenthesized_expression "(pDVar16 == (DIR *)0x0)" ( (binary_expression "pDVar16 == (DIR *)0x0" identifier == (cast_expression "(DIR *)0x0" ( (type_descriptor "DIR *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_000256de;" goto statement_identifier ;)) (expression_statement "piVar9 = __errno_location();" (assignment_expression "piVar9 = __errno_location()" identifier = (call_expression "__errno_location()" identifier (argument_list "()" ( )))) ;) (expression_statement "*piVar9 = 0;" (assignment_expression "*piVar9 = 0" (pointer_expression "*piVar9" * identifier) = number_literal) ;) (expression_statement "pdVar10 = readdir64(pDVar16);" (assignment_expression "pdVar10 = readdir64(pDVar16)" identifier = (call_expression "readdir64(pDVar16)" identifier (argument_list "(pDVar16)" ( identifier )))) ;) (if_statement "if (pdVar10 == (dirent64 *)0x0) {\n          if (*piVar9 != 0) {\n            *(int *)(iVar2 + 0x20) = *piVar9;\n            *(ushort *)(iVar2 + 0x3c) =\n                 (-(ushort)(pDVar21 == (DIR *)0x0 && local_d4 == 0) & 0xfffd) + 7;\n          }\n          if (*(DIR **)(iVar2 + 0xc) != (DIR *)0x0) {\n            closedir(*(DIR **)(iVar2 + 0xc));\n            *(undefined4 *)(iVar2 + 0xc) = 0;\n          }\n          goto LAB_000256de;\n        }" if (parenthesized_expression "(pdVar10 == (dirent64 *)0x0)" ( (binary_expression "pdVar10 == (dirent64 *)0x0" identifier == (cast_expression "(dirent64 *)0x0" ( (type_descriptor "dirent64 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          if (*piVar9 != 0) {\n            *(int *)(iVar2 + 0x20) = *piVar9;\n            *(ushort *)(iVar2 + 0x3c) =\n                 (-(ushort)(pDVar21 == (DIR *)0x0 && local_d4 == 0) & 0xfffd) + 7;\n          }\n          if (*(DIR **)(iVar2 + 0xc) != (DIR *)0x0) {\n            closedir(*(DIR **)(iVar2 + 0xc));\n            *(undefined4 *)(iVar2 + 0xc) = 0;\n          }\n          goto LAB_000256de;\n        }" { (if_statement "if (*piVar9 != 0) {\n            *(int *)(iVar2 + 0x20) = *piVar9;\n            *(ushort *)(iVar2 + 0x3c) =\n                 (-(ushort)(pDVar21 == (DIR *)0x0 && local_d4 == 0) & 0xfffd) + 7;\n          }" if (parenthesized_expression "(*piVar9 != 0)" ( (binary_expression "*piVar9 != 0" (pointer_expression "*piVar9" * identifier) != number_literal) )) (compound_statement "{\n            *(int *)(iVar2 + 0x20) = *piVar9;\n            *(ushort *)(iVar2 + 0x3c) =\n                 (-(ushort)(pDVar21 == (DIR *)0x0 && local_d4 == 0) & 0xfffd) + 7;\n          }" { (expression_statement "*(int *)(iVar2 + 0x20) = *piVar9;" (assignment_expression "*(int *)(iVar2 + 0x20) = *piVar9" (pointer_expression "*(int *)(iVar2 + 0x20)" * (cast_expression "(int *)(iVar2 + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x20)" ( (binary_expression "iVar2 + 0x20" identifier + number_literal) )))) = (pointer_expression "*piVar9" * identifier)) ;) (expression_statement "*(ushort *)(iVar2 + 0x3c) =\n                 (-(ushort)(pDVar21 == (DIR *)0x0 && local_d4 == 0) & 0xfffd) + 7;" (assignment_expression "*(ushort *)(iVar2 + 0x3c) =\n                 (-(ushort)(pDVar21 == (DIR *)0x0 && local_d4 == 0) & 0xfffd) + 7" (pointer_expression "*(ushort *)(iVar2 + 0x3c)" * (cast_expression "(ushort *)(iVar2 + 0x3c)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x3c)" ( (binary_expression "iVar2 + 0x3c" identifier + number_literal) )))) = (binary_expression "(-(ushort)(pDVar21 == (DIR *)0x0 && local_d4 == 0) & 0xfffd) + 7" (parenthesized_expression "(-(ushort)(pDVar21 == (DIR *)0x0 && local_d4 == 0) & 0xfffd)" ( (binary_expression "-(ushort)(pDVar21 == (DIR *)0x0 && local_d4 == 0) & 0xfffd" (unary_expression "-(ushort)(pDVar21 == (DIR *)0x0 && local_d4 == 0)" - (call_expression "(ushort)(pDVar21 == (DIR *)0x0 && local_d4 == 0)" (parenthesized_expression "(ushort)" ( identifier )) (argument_list "(pDVar21 == (DIR *)0x0 && local_d4 == 0)" ( (binary_expression "pDVar21 == (DIR *)0x0 && local_d4 == 0" (binary_expression "pDVar21 == (DIR *)0x0" identifier == (cast_expression "(DIR *)0x0" ( (type_descriptor "DIR *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) && (binary_expression "local_d4 == 0" identifier == number_literal)) )))) & number_literal) )) + number_literal)) ;) })) (if_statement "if (*(DIR **)(iVar2 + 0xc) != (DIR *)0x0) {\n            closedir(*(DIR **)(iVar2 + 0xc));\n            *(undefined4 *)(iVar2 + 0xc) = 0;\n          }" if (parenthesized_expression "(*(DIR **)(iVar2 + 0xc) != (DIR *)0x0)" ( (binary_expression "*(DIR **)(iVar2 + 0xc) != (DIR *)0x0" (pointer_expression "*(DIR **)(iVar2 + 0xc)" * (cast_expression "(DIR **)(iVar2 + 0xc)" ( (type_descriptor "DIR **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar2 + 0xc)" ( (binary_expression "iVar2 + 0xc" identifier + number_literal) )))) != (cast_expression "(DIR *)0x0" ( (type_descriptor "DIR *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            closedir(*(DIR **)(iVar2 + 0xc));\n            *(undefined4 *)(iVar2 + 0xc) = 0;\n          }" { (expression_statement "closedir(*(DIR **)(iVar2 + 0xc));" (call_expression "closedir(*(DIR **)(iVar2 + 0xc))" identifier (argument_list "(*(DIR **)(iVar2 + 0xc))" ( (pointer_expression "*(DIR **)(iVar2 + 0xc)" * (cast_expression "(DIR **)(iVar2 + 0xc)" ( (type_descriptor "DIR **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar2 + 0xc)" ( (binary_expression "iVar2 + 0xc" identifier + number_literal) )))) ))) ;) (expression_statement "*(undefined4 *)(iVar2 + 0xc) = 0;" (assignment_expression "*(undefined4 *)(iVar2 + 0xc) = 0" (pointer_expression "*(undefined4 *)(iVar2 + 0xc)" * (cast_expression "(undefined4 *)(iVar2 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0xc)" ( (binary_expression "iVar2 + 0xc" identifier + number_literal) )))) = number_literal) ;) })) (goto_statement "goto LAB_000256de;" goto statement_identifier ;) })) }) while (parenthesized_expression "((((*(byte *)(param_1 + 0xb) & 0x20) == 0) && (pdVar10->d_name[0] == '.')) &&\n              ((pdVar10->d_name[1] == '\0' || (*(short *)(pdVar10->d_name + 1) == 0x2e))))" ( (binary_expression "(((*(byte *)(param_1 + 0xb) & 0x20) == 0) && (pdVar10->d_name[0] == '.')) &&\n              ((pdVar10->d_name[1] == '\0' || (*(short *)(pdVar10->d_name + 1) == 0x2e)))" (parenthesized_expression "(((*(byte *)(param_1 + 0xb) & 0x20) == 0) && (pdVar10->d_name[0] == '.'))" ( (binary_expression "((*(byte *)(param_1 + 0xb) & 0x20) == 0) && (pdVar10->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 "(pdVar10->d_name[0] == '.')" ( (binary_expression "pdVar10->d_name[0] == '.'" (subscript_expression "pdVar10->d_name[0]" (field_expression "pdVar10->d_name" identifier -> field_identifier) [ number_literal ]) == (char_literal "'.'" ' character ')) ))) )) && (parenthesized_expression "((pdVar10->d_name[1] == '\0' || (*(short *)(pdVar10->d_name + 1) == 0x2e)))" ( (parenthesized_expression "(pdVar10->d_name[1] == '\0' || (*(short *)(pdVar10->d_name + 1) == 0x2e))" ( (binary_expression "pdVar10->d_name[1] == '\0' || (*(short *)(pdVar10->d_name + 1) == 0x2e)" (binary_expression "pdVar10->d_name[1] == '\0'" (subscript_expression "pdVar10->d_name[1]" (field_expression "pdVar10->d_name" identifier -> field_identifier) [ number_literal ]) == (char_literal "'\0'" ' escape_sequence ')) || (parenthesized_expression "(*(short *)(pdVar10->d_name + 1) == 0x2e)" ( (binary_expression "*(short *)(pdVar10->d_name + 1) == 0x2e" (pointer_expression "*(short *)(pdVar10->d_name + 1)" * (cast_expression "(short *)(pdVar10->d_name + 1)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pdVar10->d_name + 1)" ( (binary_expression "pdVar10->d_name + 1" (field_expression "pdVar10->d_name" identifier -> field_identifier) + number_literal) )))) == number_literal) ))) )) ))) )) ;) (expression_statement "__n = strlen(pdVar10->d_name);" (assignment_expression "__n = strlen(pdVar10->d_name)" identifier = (call_expression "strlen(pdVar10->d_name)" identifier (argument_list "(pdVar10->d_name)" ( (field_expression "pdVar10->d_name" identifier -> field_identifier) )))) ;) (expression_statement "pvVar11 = malloc(__n + 0xa8 & 0xfffffffc);" (assignment_expression "pvVar11 = malloc(__n + 0xa8 & 0xfffffffc)" identifier = (call_expression "malloc(__n + 0xa8 & 0xfffffffc)" identifier (argument_list "(__n + 0xa8 & 0xfffffffc)" ( (binary_expression "__n + 0xa8 & 0xfffffffc" (binary_expression "__n + 0xa8" identifier + number_literal) & number_literal) )))) ;) (if_statement "if (pvVar11 == (void *)0x0) {\n        iVar15 = *piVar9;\nLAB_000255a6:\n        free(pvVar11);\n        if (local_b8 != (void *)0x0) {\n          pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n          pvVar11 = *(void **)((int)local_b8 + 8);\n          if (pDVar21 == (DIR *)0x0) goto LAB_000255f4;\n          do {\n            closedir(pDVar21);\n            free(local_b8);\n            local_b8 = pvVar11;\n            while( true ) {\n              if (local_b8 == (void *)0x0) goto LAB_00025608;\n              pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n              pvVar11 = *(void **)((int)local_b8 + 8);\n              if (pDVar21 != (DIR *)0x0) break;\nLAB_000255f4:\n              free(local_b8);\n              local_b8 = pvVar11;\n            }\n          } while( true );\n        }\nLAB_00025608:\n        closedir(*(DIR **)(iVar2 + 0xc));\n        *(undefined4 *)(iVar2 + 0xc) = 0;\n        *(undefined2 *)(iVar2 + 0x3c) = 7;\n        local_b8 = (void *)0x0;\n        param_1[0xb] = param_1[0xb] | 0x4000;\n        *piVar9 = iVar15;\n        goto LAB_0002563f;\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 "{\n        iVar15 = *piVar9;\nLAB_000255a6:\n        free(pvVar11);\n        if (local_b8 != (void *)0x0) {\n          pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n          pvVar11 = *(void **)((int)local_b8 + 8);\n          if (pDVar21 == (DIR *)0x0) goto LAB_000255f4;\n          do {\n            closedir(pDVar21);\n            free(local_b8);\n            local_b8 = pvVar11;\n            while( true ) {\n              if (local_b8 == (void *)0x0) goto LAB_00025608;\n              pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n              pvVar11 = *(void **)((int)local_b8 + 8);\n              if (pDVar21 != (DIR *)0x0) break;\nLAB_000255f4:\n              free(local_b8);\n              local_b8 = pvVar11;\n            }\n          } while( true );\n        }\nLAB_00025608:\n        closedir(*(DIR **)(iVar2 + 0xc));\n        *(undefined4 *)(iVar2 + 0xc) = 0;\n        *(undefined2 *)(iVar2 + 0x3c) = 7;\n        local_b8 = (void *)0x0;\n        param_1[0xb] = param_1[0xb] | 0x4000;\n        *piVar9 = iVar15;\n        goto LAB_0002563f;\n      }" { (expression_statement "iVar15 = *piVar9;" (assignment_expression "iVar15 = *piVar9" identifier = (pointer_expression "*piVar9" * identifier)) ;) (labeled_statement "LAB_000255a6:\n        free(pvVar11);" statement_identifier : (expression_statement "free(pvVar11);" (call_expression "free(pvVar11)" identifier (argument_list "(pvVar11)" ( identifier ))) ;)) (if_statement "if (local_b8 != (void *)0x0) {\n          pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n          pvVar11 = *(void **)((int)local_b8 + 8);\n          if (pDVar21 == (DIR *)0x0) goto LAB_000255f4;\n          do {\n            closedir(pDVar21);\n            free(local_b8);\n            local_b8 = pvVar11;\n            while( true ) {\n              if (local_b8 == (void *)0x0) goto LAB_00025608;\n              pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n              pvVar11 = *(void **)((int)local_b8 + 8);\n              if (pDVar21 != (DIR *)0x0) break;\nLAB_000255f4:\n              free(local_b8);\n              local_b8 = pvVar11;\n            }\n          } while( true );\n        }" if (parenthesized_expression "(local_b8 != (void *)0x0)" ( (binary_expression "local_b8 != (void *)0x0" identifier != (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n          pvVar11 = *(void **)((int)local_b8 + 8);\n          if (pDVar21 == (DIR *)0x0) goto LAB_000255f4;\n          do {\n            closedir(pDVar21);\n            free(local_b8);\n            local_b8 = pvVar11;\n            while( true ) {\n              if (local_b8 == (void *)0x0) goto LAB_00025608;\n              pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n              pvVar11 = *(void **)((int)local_b8 + 8);\n              if (pDVar21 != (DIR *)0x0) break;\nLAB_000255f4:\n              free(local_b8);\n              local_b8 = pvVar11;\n            }\n          } while( true );\n        }" { (expression_statement "pDVar21 = *(DIR **)((int)local_b8 + 0xc);" (assignment_expression "pDVar21 = *(DIR **)((int)local_b8 + 0xc)" identifier = (pointer_expression "*(DIR **)((int)local_b8 + 0xc)" * (cast_expression "(DIR **)((int)local_b8 + 0xc)" ( (type_descriptor "DIR **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)local_b8 + 0xc)" ( (binary_expression "(int)local_b8 + 0xc" (cast_expression "(int)local_b8" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "pvVar11 = *(void **)((int)local_b8 + 8);" (assignment_expression "pvVar11 = *(void **)((int)local_b8 + 8)" identifier = (pointer_expression "*(void **)((int)local_b8 + 8)" * (cast_expression "(void **)((int)local_b8 + 8)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)local_b8 + 8)" ( (binary_expression "(int)local_b8 + 8" (cast_expression "(int)local_b8" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (if_statement "if (pDVar21 == (DIR *)0x0) goto LAB_000255f4;" if (parenthesized_expression "(pDVar21 == (DIR *)0x0)" ( (binary_expression "pDVar21 == (DIR *)0x0" identifier == (cast_expression "(DIR *)0x0" ( (type_descriptor "DIR *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_000255f4;" goto statement_identifier ;)) (do_statement "do {\n            closedir(pDVar21);\n            free(local_b8);\n            local_b8 = pvVar11;\n            while( true ) {\n              if (local_b8 == (void *)0x0) goto LAB_00025608;\n              pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n              pvVar11 = *(void **)((int)local_b8 + 8);\n              if (pDVar21 != (DIR *)0x0) break;\nLAB_000255f4:\n              free(local_b8);\n              local_b8 = pvVar11;\n            }\n          } while( true );" do (compound_statement "{\n            closedir(pDVar21);\n            free(local_b8);\n            local_b8 = pvVar11;\n            while( true ) {\n              if (local_b8 == (void *)0x0) goto LAB_00025608;\n              pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n              pvVar11 = *(void **)((int)local_b8 + 8);\n              if (pDVar21 != (DIR *)0x0) break;\nLAB_000255f4:\n              free(local_b8);\n              local_b8 = pvVar11;\n            }\n          }" { (expression_statement "closedir(pDVar21);" (call_expression "closedir(pDVar21)" identifier (argument_list "(pDVar21)" ( identifier ))) ;) (expression_statement "free(local_b8);" (call_expression "free(local_b8)" identifier (argument_list "(local_b8)" ( identifier ))) ;) (expression_statement "local_b8 = pvVar11;" (assignment_expression "local_b8 = pvVar11" identifier = identifier) ;) (while_statement "while( true ) {\n              if (local_b8 == (void *)0x0) goto LAB_00025608;\n              pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n              pvVar11 = *(void **)((int)local_b8 + 8);\n              if (pDVar21 != (DIR *)0x0) break;\nLAB_000255f4:\n              free(local_b8);\n              local_b8 = pvVar11;\n            }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n              if (local_b8 == (void *)0x0) goto LAB_00025608;\n              pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n              pvVar11 = *(void **)((int)local_b8 + 8);\n              if (pDVar21 != (DIR *)0x0) break;\nLAB_000255f4:\n              free(local_b8);\n              local_b8 = pvVar11;\n            }" { (if_statement "if (local_b8 == (void *)0x0) goto LAB_00025608;" if (parenthesized_expression "(local_b8 == (void *)0x0)" ( (binary_expression "local_b8 == (void *)0x0" identifier == (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00025608;" goto statement_identifier ;)) (expression_statement "pDVar21 = *(DIR **)((int)local_b8 + 0xc);" (assignment_expression "pDVar21 = *(DIR **)((int)local_b8 + 0xc)" identifier = (pointer_expression "*(DIR **)((int)local_b8 + 0xc)" * (cast_expression "(DIR **)((int)local_b8 + 0xc)" ( (type_descriptor "DIR **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)local_b8 + 0xc)" ( (binary_expression "(int)local_b8 + 0xc" (cast_expression "(int)local_b8" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "pvVar11 = *(void **)((int)local_b8 + 8);" (assignment_expression "pvVar11 = *(void **)((int)local_b8 + 8)" identifier = (pointer_expression "*(void **)((int)local_b8 + 8)" * (cast_expression "(void **)((int)local_b8 + 8)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)local_b8 + 8)" ( (binary_expression "(int)local_b8 + 8" (cast_expression "(int)local_b8" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (if_statement "if (pDVar21 != (DIR *)0x0) break;" if (parenthesized_expression "(pDVar21 != (DIR *)0x0)" ( (binary_expression "pDVar21 != (DIR *)0x0" identifier != (cast_expression "(DIR *)0x0" ( (type_descriptor "DIR *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (break_statement "break;" break ;)) (labeled_statement "LAB_000255f4:\n              free(local_b8);" statement_identifier : (expression_statement "free(local_b8);" (call_expression "free(local_b8)" identifier (argument_list "(local_b8)" ( identifier ))) ;)) (expression_statement "local_b8 = pvVar11;" (assignment_expression "local_b8 = pvVar11" identifier = identifier) ;) })) }) while (parenthesized_expression "( true )" ( true )) ;) })) (labeled_statement "LAB_00025608:\n        closedir(*(DIR **)(iVar2 + 0xc));" statement_identifier : (expression_statement "closedir(*(DIR **)(iVar2 + 0xc));" (call_expression "closedir(*(DIR **)(iVar2 + 0xc))" identifier (argument_list "(*(DIR **)(iVar2 + 0xc))" ( (pointer_expression "*(DIR **)(iVar2 + 0xc)" * (cast_expression "(DIR **)(iVar2 + 0xc)" ( (type_descriptor "DIR **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar2 + 0xc)" ( (binary_expression "iVar2 + 0xc" identifier + number_literal) )))) ))) ;)) (expression_statement "*(undefined4 *)(iVar2 + 0xc) = 0;" (assignment_expression "*(undefined4 *)(iVar2 + 0xc) = 0" (pointer_expression "*(undefined4 *)(iVar2 + 0xc)" * (cast_expression "(undefined4 *)(iVar2 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0xc)" ( (binary_expression "iVar2 + 0xc" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined2 *)(iVar2 + 0x3c) = 7;" (assignment_expression "*(undefined2 *)(iVar2 + 0x3c) = 7" (pointer_expression "*(undefined2 *)(iVar2 + 0x3c)" * (cast_expression "(undefined2 *)(iVar2 + 0x3c)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x3c)" ( (binary_expression "iVar2 + 0x3c" identifier + number_literal) )))) = number_literal) ;) (expression_statement "local_b8 = (void *)0x0;" (assignment_expression "local_b8 = (void *)0x0" identifier = (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) 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 "*piVar9 = iVar15;" (assignment_expression "*piVar9 = iVar15" (pointer_expression "*piVar9" * identifier) = identifier) ;) (goto_statement "goto LAB_0002563f;" goto statement_identifier ;) })) (expression_statement "pvVar1 = (void *)((int)pvVar11 + 0xa4);" (assignment_expression "pvVar1 = (void *)((int)pvVar11 + 0xa4)" 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) )))) ;) (expression_statement "memcpy(pvVar1,pdVar10->d_name,__n);" (call_expression "memcpy(pvVar1,pdVar10->d_name,__n)" identifier (argument_list "(pvVar1,pdVar10->d_name,__n)" ( identifier , (field_expression "pdVar10->d_name" identifier -> field_identifier) , identifier ))) ;) (expression_statement "__ptr = (void *)param_1[5];" (assignment_expression "__ptr = (void *)param_1[5]" identifier = (cast_expression "(void *)param_1[5]" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[5]" identifier [ number_literal ]))) ;) (expression_statement "*(undefined1 *)((int)pvVar11 + __n + 0xa4) = 0;" (assignment_expression "*(undefined1 *)((int)pvVar11 + __n + 0xa4) = 0" (pointer_expression "*(undefined1 *)((int)pvVar11 + __n + 0xa4)" * (cast_expression "(undefined1 *)((int)pvVar11 + __n + 0xa4)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pvVar11 + __n + 0xa4)" ( (binary_expression "(int)pvVar11 + __n + 0xa4" (binary_expression "(int)pvVar11 + __n" (cast_expression "(int)pvVar11" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) + number_literal) )))) = number_literal) ;) (expression_statement "*(size_t *)((int)pvVar11 + 0x34) = __n;" (assignment_expression "*(size_t *)((int)pvVar11 + 0x34) = __n" (pointer_expression "*(size_t *)((int)pvVar11 + 0x34)" * (cast_expression "(size_t *)((int)pvVar11 + 0x34)" ( (type_descriptor "size_t *" 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) )))) = identifier) ;) (expression_statement "*(int **)((int)pvVar11 + 0x2c) = param_1;" (assignment_expression "*(int **)((int)pvVar11 + 0x2c) = param_1" (pointer_expression "*(int **)((int)pvVar11 + 0x2c)" * (cast_expression "(int **)((int)pvVar11 + 0x2c)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)pvVar11 + 0x2c)" ( (binary_expression "(int)pvVar11 + 0x2c" (cast_expression "(int)pvVar11" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(void **)((int)pvVar11 + 0x1c) = __ptr;" (assignment_expression "*(void **)((int)pvVar11 + 0x1c) = __ptr" (pointer_expression "*(void **)((int)pvVar11 + 0x1c)" * (cast_expression "(void **)((int)pvVar11 + 0x1c)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (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) )))) = identifier) ;) (expression_statement "*(undefined4 *)((int)pvVar11 + 0x20) = 0;" (assignment_expression "*(undefined4 *)((int)pvVar11 + 0x20) = 0" (pointer_expression "*(undefined4 *)((int)pvVar11 + 0x20)" * (cast_expression "(undefined4 *)((int)pvVar11 + 0x20)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pvVar11 + 0x20)" ( (binary_expression "(int)pvVar11 + 0x20" (cast_expression "(int)pvVar11" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)((int)pvVar11 + 0xc) = 0;" (assignment_expression "*(undefined4 *)((int)pvVar11 + 0xc) = 0" (pointer_expression "*(undefined4 *)((int)pvVar11 + 0xc)" * (cast_expression "(undefined4 *)((int)pvVar11 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pvVar11 + 0xc)" ( (binary_expression "(int)pvVar11 + 0xc" (cast_expression "(int)pvVar11" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)((int)pvVar11 + 0x3e) = 0x30000;" (assignment_expression "*(undefined4 *)((int)pvVar11 + 0x3e) = 0x30000" (pointer_expression "*(undefined4 *)((int)pvVar11 + 0x3e)" * (cast_expression "(undefined4 *)((int)pvVar11 + 0x3e)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pvVar11 + 0x3e)" ( (binary_expression "(int)pvVar11 + 0x3e" (cast_expression "(int)pvVar11" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)((int)pvVar11 + 0x10) = 0;" (assignment_expression "*(undefined4 *)((int)pvVar11 + 0x10) = 0" (pointer_expression "*(undefined4 *)((int)pvVar11 + 0x10)" * (cast_expression "(undefined4 *)((int)pvVar11 + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pvVar11 + 0x10)" ( (binary_expression "(int)pvVar11 + 0x10" (cast_expression "(int)pvVar11" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)((int)pvVar11 + 0x14) = 0;" (assignment_expression "*(undefined4 *)((int)pvVar11 + 0x14) = 0" (pointer_expression "*(undefined4 *)((int)pvVar11 + 0x14)" * (cast_expression "(undefined4 *)((int)pvVar11 + 0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pvVar11 + 0x14)" ( (binary_expression "(int)pvVar11 + 0x14" (cast_expression "(int)pvVar11" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (if_statement "if (local_b0 <= __n) {\n        uVar13 = local_d0 + 0x101 + param_1[8] + __n;\n        if (uVar13 < (uint)param_1[8]) {\n          iVar15 = 0x24;\n          free(__ptr);\n          param_1[5] = 0;\n          *piVar9 = 0x24;\n        }\n        else {\n          param_1[8] = uVar13;\n          pvVar14 = realloc(__ptr,uVar13);\n          if (pvVar14 != (void *)0x0) {\n            param_1[5] = (int)pvVar14;\n            if ((__ptr != pvVar14) && (bVar3 = true, (*(byte *)(param_1 + 0xb) & 4) != 0)) {\n              local_a4 = (undefined1 *)((int)pvVar14 + local_d0);\n            }\n            local_b0 = param_1[8] - local_d0;\n            goto LAB_000253d8;\n          }\n          free((void *)param_1[5]);\n          param_1[5] = 0;\n          iVar15 = *piVar9;\n        }\n        goto LAB_000255a6;\n      }" if (parenthesized_expression "(local_b0 <= __n)" ( (binary_expression "local_b0 <= __n" identifier <= identifier) )) (compound_statement "{\n        uVar13 = local_d0 + 0x101 + param_1[8] + __n;\n        if (uVar13 < (uint)param_1[8]) {\n          iVar15 = 0x24;\n          free(__ptr);\n          param_1[5] = 0;\n          *piVar9 = 0x24;\n        }\n        else {\n          param_1[8] = uVar13;\n          pvVar14 = realloc(__ptr,uVar13);\n          if (pvVar14 != (void *)0x0) {\n            param_1[5] = (int)pvVar14;\n            if ((__ptr != pvVar14) && (bVar3 = true, (*(byte *)(param_1 + 0xb) & 4) != 0)) {\n              local_a4 = (undefined1 *)((int)pvVar14 + local_d0);\n            }\n            local_b0 = param_1[8] - local_d0;\n            goto LAB_000253d8;\n          }\n          free((void *)param_1[5]);\n          param_1[5] = 0;\n          iVar15 = *piVar9;\n        }\n        goto LAB_000255a6;\n      }" { (expression_statement "uVar13 = local_d0 + 0x101 + param_1[8] + __n;" (assignment_expression "uVar13 = local_d0 + 0x101 + param_1[8] + __n" identifier = (binary_expression "local_d0 + 0x101 + param_1[8] + __n" (binary_expression "local_d0 + 0x101 + param_1[8]" (binary_expression "local_d0 + 0x101" identifier + number_literal) + (subscript_expression "param_1[8]" identifier [ number_literal ])) + identifier)) ;) (if_statement "if (uVar13 < (uint)param_1[8]) {\n          iVar15 = 0x24;\n          free(__ptr);\n          param_1[5] = 0;\n          *piVar9 = 0x24;\n        }\n        else {\n          param_1[8] = uVar13;\n          pvVar14 = realloc(__ptr,uVar13);\n          if (pvVar14 != (void *)0x0) {\n            param_1[5] = (int)pvVar14;\n            if ((__ptr != pvVar14) && (bVar3 = true, (*(byte *)(param_1 + 0xb) & 4) != 0)) {\n              local_a4 = (undefined1 *)((int)pvVar14 + local_d0);\n            }\n            local_b0 = param_1[8] - local_d0;\n            goto LAB_000253d8;\n          }\n          free((void *)param_1[5]);\n          param_1[5] = 0;\n          iVar15 = *piVar9;\n        }" if (parenthesized_expression "(uVar13 < (uint)param_1[8])" ( (binary_expression "uVar13 < (uint)param_1[8]" identifier < (cast_expression "(uint)param_1[8]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_1[8]" identifier [ number_literal ]))) )) (compound_statement "{\n          iVar15 = 0x24;\n          free(__ptr);\n          param_1[5] = 0;\n          *piVar9 = 0x24;\n        }" { (expression_statement "iVar15 = 0x24;" (assignment_expression "iVar15 = 0x24" identifier = number_literal) ;) (expression_statement "free(__ptr);" (call_expression "free(__ptr)" identifier (argument_list "(__ptr)" ( identifier ))) ;) (expression_statement "param_1[5] = 0;" (assignment_expression "param_1[5] = 0" (subscript_expression "param_1[5]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*piVar9 = 0x24;" (assignment_expression "*piVar9 = 0x24" (pointer_expression "*piVar9" * identifier) = number_literal) ;) }) (else_clause "else {\n          param_1[8] = uVar13;\n          pvVar14 = realloc(__ptr,uVar13);\n          if (pvVar14 != (void *)0x0) {\n            param_1[5] = (int)pvVar14;\n            if ((__ptr != pvVar14) && (bVar3 = true, (*(byte *)(param_1 + 0xb) & 4) != 0)) {\n              local_a4 = (undefined1 *)((int)pvVar14 + local_d0);\n            }\n            local_b0 = param_1[8] - local_d0;\n            goto LAB_000253d8;\n          }\n          free((void *)param_1[5]);\n          param_1[5] = 0;\n          iVar15 = *piVar9;\n        }" else (compound_statement "{\n          param_1[8] = uVar13;\n          pvVar14 = realloc(__ptr,uVar13);\n          if (pvVar14 != (void *)0x0) {\n            param_1[5] = (int)pvVar14;\n            if ((__ptr != pvVar14) && (bVar3 = true, (*(byte *)(param_1 + 0xb) & 4) != 0)) {\n              local_a4 = (undefined1 *)((int)pvVar14 + local_d0);\n            }\n            local_b0 = param_1[8] - local_d0;\n            goto LAB_000253d8;\n          }\n          free((void *)param_1[5]);\n          param_1[5] = 0;\n          iVar15 = *piVar9;\n        }" { (expression_statement "param_1[8] = uVar13;" (assignment_expression "param_1[8] = uVar13" (subscript_expression "param_1[8]" identifier [ number_literal ]) = identifier) ;) (expression_statement "pvVar14 = realloc(__ptr,uVar13);" (assignment_expression "pvVar14 = realloc(__ptr,uVar13)" identifier = (call_expression "realloc(__ptr,uVar13)" identifier (argument_list "(__ptr,uVar13)" ( identifier , identifier )))) ;) (if_statement "if (pvVar14 != (void *)0x0) {\n            param_1[5] = (int)pvVar14;\n            if ((__ptr != pvVar14) && (bVar3 = true, (*(byte *)(param_1 + 0xb) & 4) != 0)) {\n              local_a4 = (undefined1 *)((int)pvVar14 + local_d0);\n            }\n            local_b0 = param_1[8] - local_d0;\n            goto LAB_000253d8;\n          }" if (parenthesized_expression "(pvVar14 != (void *)0x0)" ( (binary_expression "pvVar14 != (void *)0x0" identifier != (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            param_1[5] = (int)pvVar14;\n            if ((__ptr != pvVar14) && (bVar3 = true, (*(byte *)(param_1 + 0xb) & 4) != 0)) {\n              local_a4 = (undefined1 *)((int)pvVar14 + local_d0);\n            }\n            local_b0 = param_1[8] - local_d0;\n            goto LAB_000253d8;\n          }" { (expression_statement "param_1[5] = (int)pvVar14;" (assignment_expression "param_1[5] = (int)pvVar14" (subscript_expression "param_1[5]" identifier [ number_literal ]) = (cast_expression "(int)pvVar14" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (if_statement "if ((__ptr != pvVar14) && (bVar3 = true, (*(byte *)(param_1 + 0xb) & 4) != 0)) {\n              local_a4 = (undefined1 *)((int)pvVar14 + local_d0);\n            }" if (parenthesized_expression "((__ptr != pvVar14) && (bVar3 = true, (*(byte *)(param_1 + 0xb) & 4) != 0))" ( (binary_expression "(__ptr != pvVar14) && (bVar3 = true, (*(byte *)(param_1 + 0xb) & 4) != 0)" (parenthesized_expression "(__ptr != pvVar14)" ( (binary_expression "__ptr != pvVar14" identifier != identifier) )) && (parenthesized_expression "(bVar3 = true, (*(byte *)(param_1 + 0xb) & 4) != 0)" ( (comma_expression "bVar3 = true, (*(byte *)(param_1 + 0xb) & 4) != 0" (assignment_expression "bVar3 = true" identifier = true) , (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              local_a4 = (undefined1 *)((int)pvVar14 + local_d0);\n            }" { (expression_statement "local_a4 = (undefined1 *)((int)pvVar14 + local_d0);" (assignment_expression "local_a4 = (undefined1 *)((int)pvVar14 + local_d0)" identifier = (cast_expression "(undefined1 *)((int)pvVar14 + local_d0)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pvVar14 + local_d0)" ( (binary_expression "(int)pvVar14 + local_d0" (cast_expression "(int)pvVar14" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) })) (expression_statement "local_b0 = param_1[8] - local_d0;" (assignment_expression "local_b0 = param_1[8] - local_d0" identifier = (binary_expression "param_1[8] - local_d0" (subscript_expression "param_1[8]" identifier [ number_literal ]) - identifier)) ;) (goto_statement "goto LAB_000253d8;" goto statement_identifier ;) })) (expression_statement "free((void *)param_1[5]);" (call_expression "free((void *)param_1[5])" identifier (argument_list "((void *)param_1[5])" ( (cast_expression "(void *)param_1[5]" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[5]" identifier [ number_literal ])) ))) ;) (expression_statement "param_1[5] = 0;" (assignment_expression "param_1[5] = 0" (subscript_expression "param_1[5]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "iVar15 = *piVar9;" (assignment_expression "iVar15 = *piVar9" identifier = (pointer_expression "*piVar9" * identifier)) ;) }))) (goto_statement "goto LAB_000255a6;" goto statement_identifier ;) })) (labeled_statement "LAB_000253d8:\n      if (CARRY4(__n,local_d0)) {\n        free(pvVar11);\n        if (local_b8 != (void *)0x0) {\n          pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n          pvVar11 = *(void **)((int)local_b8 + 8);\n          if (pDVar21 == (DIR *)0x0) goto LAB_00025e84;\n          do {\n            closedir(pDVar21);\n            free(local_b8);\n            local_b8 = pvVar11;\n            while( true ) {\n              if (local_b8 == (void *)0x0) goto LAB_00025e94;\n              pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n              pvVar11 = *(void **)((int)local_b8 + 8);\n              if (pDVar21 != (DIR *)0x0) break;\nLAB_00025e84:\n              free(local_b8);\n              local_b8 = pvVar11;\n            }\n          } while( true );\n        }\nLAB_00025e94:\n        closedir(*(DIR **)(iVar2 + 0xc));\n        *(undefined4 *)(iVar2 + 0xc) = 0;\n        *(undefined2 *)(iVar2 + 0x3c) = 7;\n        local_b8 = (void *)0x0;\n        param_1[0xb] = param_1[0xb] | 0x4000;\n        *piVar9 = 0x24;\n        goto LAB_0002563f;\n      }" statement_identifier : (if_statement "if (CARRY4(__n,local_d0)) {\n        free(pvVar11);\n        if (local_b8 != (void *)0x0) {\n          pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n          pvVar11 = *(void **)((int)local_b8 + 8);\n          if (pDVar21 == (DIR *)0x0) goto LAB_00025e84;\n          do {\n            closedir(pDVar21);\n            free(local_b8);\n            local_b8 = pvVar11;\n            while( true ) {\n              if (local_b8 == (void *)0x0) goto LAB_00025e94;\n              pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n              pvVar11 = *(void **)((int)local_b8 + 8);\n              if (pDVar21 != (DIR *)0x0) break;\nLAB_00025e84:\n              free(local_b8);\n              local_b8 = pvVar11;\n            }\n          } while( true );\n        }\nLAB_00025e94:\n        closedir(*(DIR **)(iVar2 + 0xc));\n        *(undefined4 *)(iVar2 + 0xc) = 0;\n        *(undefined2 *)(iVar2 + 0x3c) = 7;\n        local_b8 = (void *)0x0;\n        param_1[0xb] = param_1[0xb] | 0x4000;\n        *piVar9 = 0x24;\n        goto LAB_0002563f;\n      }" if (parenthesized_expression "(CARRY4(__n,local_d0))" ( (call_expression "CARRY4(__n,local_d0)" identifier (argument_list "(__n,local_d0)" ( identifier , identifier ))) )) (compound_statement "{\n        free(pvVar11);\n        if (local_b8 != (void *)0x0) {\n          pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n          pvVar11 = *(void **)((int)local_b8 + 8);\n          if (pDVar21 == (DIR *)0x0) goto LAB_00025e84;\n          do {\n            closedir(pDVar21);\n            free(local_b8);\n            local_b8 = pvVar11;\n            while( true ) {\n              if (local_b8 == (void *)0x0) goto LAB_00025e94;\n              pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n              pvVar11 = *(void **)((int)local_b8 + 8);\n              if (pDVar21 != (DIR *)0x0) break;\nLAB_00025e84:\n              free(local_b8);\n              local_b8 = pvVar11;\n            }\n          } while( true );\n        }\nLAB_00025e94:\n        closedir(*(DIR **)(iVar2 + 0xc));\n        *(undefined4 *)(iVar2 + 0xc) = 0;\n        *(undefined2 *)(iVar2 + 0x3c) = 7;\n        local_b8 = (void *)0x0;\n        param_1[0xb] = param_1[0xb] | 0x4000;\n        *piVar9 = 0x24;\n        goto LAB_0002563f;\n      }" { (expression_statement "free(pvVar11);" (call_expression "free(pvVar11)" identifier (argument_list "(pvVar11)" ( identifier ))) ;) (if_statement "if (local_b8 != (void *)0x0) {\n          pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n          pvVar11 = *(void **)((int)local_b8 + 8);\n          if (pDVar21 == (DIR *)0x0) goto LAB_00025e84;\n          do {\n            closedir(pDVar21);\n            free(local_b8);\n            local_b8 = pvVar11;\n            while( true ) {\n              if (local_b8 == (void *)0x0) goto LAB_00025e94;\n              pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n              pvVar11 = *(void **)((int)local_b8 + 8);\n              if (pDVar21 != (DIR *)0x0) break;\nLAB_00025e84:\n              free(local_b8);\n              local_b8 = pvVar11;\n            }\n          } while( true );\n        }" if (parenthesized_expression "(local_b8 != (void *)0x0)" ( (binary_expression "local_b8 != (void *)0x0" identifier != (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n          pvVar11 = *(void **)((int)local_b8 + 8);\n          if (pDVar21 == (DIR *)0x0) goto LAB_00025e84;\n          do {\n            closedir(pDVar21);\n            free(local_b8);\n            local_b8 = pvVar11;\n            while( true ) {\n              if (local_b8 == (void *)0x0) goto LAB_00025e94;\n              pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n              pvVar11 = *(void **)((int)local_b8 + 8);\n              if (pDVar21 != (DIR *)0x0) break;\nLAB_00025e84:\n              free(local_b8);\n              local_b8 = pvVar11;\n            }\n          } while( true );\n        }" { (expression_statement "pDVar21 = *(DIR **)((int)local_b8 + 0xc);" (assignment_expression "pDVar21 = *(DIR **)((int)local_b8 + 0xc)" identifier = (pointer_expression "*(DIR **)((int)local_b8 + 0xc)" * (cast_expression "(DIR **)((int)local_b8 + 0xc)" ( (type_descriptor "DIR **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)local_b8 + 0xc)" ( (binary_expression "(int)local_b8 + 0xc" (cast_expression "(int)local_b8" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "pvVar11 = *(void **)((int)local_b8 + 8);" (assignment_expression "pvVar11 = *(void **)((int)local_b8 + 8)" identifier = (pointer_expression "*(void **)((int)local_b8 + 8)" * (cast_expression "(void **)((int)local_b8 + 8)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)local_b8 + 8)" ( (binary_expression "(int)local_b8 + 8" (cast_expression "(int)local_b8" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (if_statement "if (pDVar21 == (DIR *)0x0) goto LAB_00025e84;" if (parenthesized_expression "(pDVar21 == (DIR *)0x0)" ( (binary_expression "pDVar21 == (DIR *)0x0" identifier == (cast_expression "(DIR *)0x0" ( (type_descriptor "DIR *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00025e84;" goto statement_identifier ;)) (do_statement "do {\n            closedir(pDVar21);\n            free(local_b8);\n            local_b8 = pvVar11;\n            while( true ) {\n              if (local_b8 == (void *)0x0) goto LAB_00025e94;\n              pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n              pvVar11 = *(void **)((int)local_b8 + 8);\n              if (pDVar21 != (DIR *)0x0) break;\nLAB_00025e84:\n              free(local_b8);\n              local_b8 = pvVar11;\n            }\n          } while( true );" do (compound_statement "{\n            closedir(pDVar21);\n            free(local_b8);\n            local_b8 = pvVar11;\n            while( true ) {\n              if (local_b8 == (void *)0x0) goto LAB_00025e94;\n              pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n              pvVar11 = *(void **)((int)local_b8 + 8);\n              if (pDVar21 != (DIR *)0x0) break;\nLAB_00025e84:\n              free(local_b8);\n              local_b8 = pvVar11;\n            }\n          }" { (expression_statement "closedir(pDVar21);" (call_expression "closedir(pDVar21)" identifier (argument_list "(pDVar21)" ( identifier ))) ;) (expression_statement "free(local_b8);" (call_expression "free(local_b8)" identifier (argument_list "(local_b8)" ( identifier ))) ;) (expression_statement "local_b8 = pvVar11;" (assignment_expression "local_b8 = pvVar11" identifier = identifier) ;) (while_statement "while( true ) {\n              if (local_b8 == (void *)0x0) goto LAB_00025e94;\n              pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n              pvVar11 = *(void **)((int)local_b8 + 8);\n              if (pDVar21 != (DIR *)0x0) break;\nLAB_00025e84:\n              free(local_b8);\n              local_b8 = pvVar11;\n            }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n              if (local_b8 == (void *)0x0) goto LAB_00025e94;\n              pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n              pvVar11 = *(void **)((int)local_b8 + 8);\n              if (pDVar21 != (DIR *)0x0) break;\nLAB_00025e84:\n              free(local_b8);\n              local_b8 = pvVar11;\n            }" { (if_statement "if (local_b8 == (void *)0x0) goto LAB_00025e94;" if (parenthesized_expression "(local_b8 == (void *)0x0)" ( (binary_expression "local_b8 == (void *)0x0" identifier == (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00025e94;" goto statement_identifier ;)) (expression_statement "pDVar21 = *(DIR **)((int)local_b8 + 0xc);" (assignment_expression "pDVar21 = *(DIR **)((int)local_b8 + 0xc)" identifier = (pointer_expression "*(DIR **)((int)local_b8 + 0xc)" * (cast_expression "(DIR **)((int)local_b8 + 0xc)" ( (type_descriptor "DIR **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)local_b8 + 0xc)" ( (binary_expression "(int)local_b8 + 0xc" (cast_expression "(int)local_b8" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "pvVar11 = *(void **)((int)local_b8 + 8);" (assignment_expression "pvVar11 = *(void **)((int)local_b8 + 8)" identifier = (pointer_expression "*(void **)((int)local_b8 + 8)" * (cast_expression "(void **)((int)local_b8 + 8)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)local_b8 + 8)" ( (binary_expression "(int)local_b8 + 8" (cast_expression "(int)local_b8" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (if_statement "if (pDVar21 != (DIR *)0x0) break;" if (parenthesized_expression "(pDVar21 != (DIR *)0x0)" ( (binary_expression "pDVar21 != (DIR *)0x0" identifier != (cast_expression "(DIR *)0x0" ( (type_descriptor "DIR *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (break_statement "break;" break ;)) (labeled_statement "LAB_00025e84:\n              free(local_b8);" statement_identifier : (expression_statement "free(local_b8);" (call_expression "free(local_b8)" identifier (argument_list "(local_b8)" ( identifier ))) ;)) (expression_statement "local_b8 = pvVar11;" (assignment_expression "local_b8 = pvVar11" identifier = identifier) ;) })) }) while (parenthesized_expression "( true )" ( true )) ;) })) (labeled_statement "LAB_00025e94:\n        closedir(*(DIR **)(iVar2 + 0xc));" statement_identifier : (expression_statement "closedir(*(DIR **)(iVar2 + 0xc));" (call_expression "closedir(*(DIR **)(iVar2 + 0xc))" identifier (argument_list "(*(DIR **)(iVar2 + 0xc))" ( (pointer_expression "*(DIR **)(iVar2 + 0xc)" * (cast_expression "(DIR **)(iVar2 + 0xc)" ( (type_descriptor "DIR **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar2 + 0xc)" ( (binary_expression "iVar2 + 0xc" identifier + number_literal) )))) ))) ;)) (expression_statement "*(undefined4 *)(iVar2 + 0xc) = 0;" (assignment_expression "*(undefined4 *)(iVar2 + 0xc) = 0" (pointer_expression "*(undefined4 *)(iVar2 + 0xc)" * (cast_expression "(undefined4 *)(iVar2 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0xc)" ( (binary_expression "iVar2 + 0xc" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined2 *)(iVar2 + 0x3c) = 7;" (assignment_expression "*(undefined2 *)(iVar2 + 0x3c) = 7" (pointer_expression "*(undefined2 *)(iVar2 + 0x3c)" * (cast_expression "(undefined2 *)(iVar2 + 0x3c)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x3c)" ( (binary_expression "iVar2 + 0x3c" identifier + number_literal) )))) = number_literal) ;) (expression_statement "local_b8 = (void *)0x0;" (assignment_expression "local_b8 = (void *)0x0" identifier = (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) 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 "*piVar9 = 0x24;" (assignment_expression "*piVar9 = 0x24" (pointer_expression "*piVar9" * identifier) = number_literal) ;) (goto_statement "goto LAB_0002563f;" goto statement_identifier ;) }))) (expression_statement "uVar12 = *(undefined4 *)((int)&pdVar10->d_ino + 4);" (assignment_expression "uVar12 = *(undefined4 *)((int)&pdVar10->d_ino + 4)" identifier = (pointer_expression "*(undefined4 *)((int)&pdVar10->d_ino + 4)" * (cast_expression "(undefined4 *)((int)&pdVar10->d_ino + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&pdVar10->d_ino + 4)" ( (binary_expression "(int)&pdVar10->d_ino + 4" (cast_expression "(int)&pdVar10->d_ino" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&pdVar10->d_ino" & (field_expression "pdVar10->d_ino" identifier -> field_identifier))) + number_literal) ))))) ;) (expression_statement "*(size_t *)((int)pvVar11 + 0x28) = __n + local_d0;" (assignment_expression "*(size_t *)((int)pvVar11 + 0x28) = __n + local_d0" (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 "__n + local_d0" identifier + identifier)) ;) (expression_statement "*(int *)((int)pvVar11 + 0x30) = iVar15 + 1;" (assignment_expression "*(int *)((int)pvVar11 + 0x30) = iVar15 + 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 "iVar15 + 1" identifier + number_literal)) ;) (expression_statement "*(int *)((int)pvVar11 + 4) = *param_1;" (assignment_expression "*(int *)((int)pvVar11 + 4) = *param_1" (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) )))) = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "_Var5 = pdVar10->d_ino;" (assignment_expression "_Var5 = pdVar10->d_ino" identifier = (field_expression "pdVar10->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)_Var5;" (assignment_expression "*(int *)((int)pvVar11 + 0x9c) = (int)_Var5" (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)_Var5" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "uVar13 = param_1[0xb];" (assignment_expression "uVar13 = param_1[0xb]" identifier = (subscript_expression "param_1[0xb]" identifier [ number_literal ])) ;) (if_statement "if ((uVar13 & 4) == 0) {\n        *(void **)((int)pvVar11 + 0x18) = pvVar1;\n      }\n      else {\n        *(undefined4 *)((int)pvVar11 + 0x18) = *(undefined4 *)((int)pvVar11 + 0x1c);\n        memmove(local_a4,pvVar1,*(int *)((int)pvVar11 + 0x34) + 1);\n        uVar13 = param_1[0xb];\n      }" if (parenthesized_expression "((uVar13 & 4) == 0)" ( (binary_expression "(uVar13 & 4) == 0" (parenthesized_expression "(uVar13 & 4)" ( (binary_expression "uVar13 & 4" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n        *(void **)((int)pvVar11 + 0x18) = pvVar1;\n      }" { (expression_statement "*(void **)((int)pvVar11 + 0x18) = pvVar1;" (assignment_expression "*(void **)((int)pvVar11 + 0x18) = pvVar1" (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) )))) = identifier) ;) }) (else_clause "else {\n        *(undefined4 *)((int)pvVar11 + 0x18) = *(undefined4 *)((int)pvVar11 + 0x1c);\n        memmove(local_a4,pvVar1,*(int *)((int)pvVar11 + 0x34) + 1);\n        uVar13 = param_1[0xb];\n      }" else (compound_statement "{\n        *(undefined4 *)((int)pvVar11 + 0x18) = *(undefined4 *)((int)pvVar11 + 0x1c);\n        memmove(local_a4,pvVar1,*(int *)((int)pvVar11 + 0x34) + 1);\n        uVar13 = 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_a4,pvVar1,*(int *)((int)pvVar11 + 0x34) + 1);" (call_expression "memmove(local_a4,pvVar1,*(int *)((int)pvVar11 + 0x34) + 1)" identifier (argument_list "(local_a4,pvVar1,*(int *)((int)pvVar11 + 0x34) + 1)" ( identifier , identifier , (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 "uVar13 = param_1[0xb];" (assignment_expression "uVar13 = param_1[0xb]" identifier = (subscript_expression "param_1[0xb]" identifier [ number_literal ])) ;) }))) (if_statement "if ((param_1[10] == 0) || ((uVar13 & 0x400) != 0)) {\n        uVar23 = pdVar10->d_type - 1;\n        if (((uVar13 & 0x18) == 0x18) && ((pdVar10->d_type & 0xfb) != 0)) {\n          *(undefined2 *)((int)pvVar11 + 0x3c) = 0xb;\n          if (uVar23 < 0xc) {\n            *(undefined4 *)((int)pvVar11 + 0x54) = *(undefined4 *)(&DAT_00031560 + uVar23 * 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 (uVar23 < 0xc) {\n            *(undefined4 *)((int)pvVar11 + 0x54) = *(undefined4 *)(&DAT_00031560 + uVar23 * 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        uVar8 = FUN_00024740();\n        *(undefined2 *)((int)pvVar11 + 0x3c) = uVar8;\n      }" if (parenthesized_expression "((param_1[10] == 0) || ((uVar13 & 0x400) != 0))" ( (binary_expression "(param_1[10] == 0) || ((uVar13 & 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 "((uVar13 & 0x400) != 0)" ( (binary_expression "(uVar13 & 0x400) != 0" (parenthesized_expression "(uVar13 & 0x400)" ( (binary_expression "uVar13 & 0x400" identifier & number_literal) )) != number_literal) ))) )) (compound_statement "{\n        uVar23 = pdVar10->d_type - 1;\n        if (((uVar13 & 0x18) == 0x18) && ((pdVar10->d_type & 0xfb) != 0)) {\n          *(undefined2 *)((int)pvVar11 + 0x3c) = 0xb;\n          if (uVar23 < 0xc) {\n            *(undefined4 *)((int)pvVar11 + 0x54) = *(undefined4 *)(&DAT_00031560 + uVar23 * 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 (uVar23 < 0xc) {\n            *(undefined4 *)((int)pvVar11 + 0x54) = *(undefined4 *)(&DAT_00031560 + uVar23 * 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 "uVar23 = pdVar10->d_type - 1;" (assignment_expression "uVar23 = pdVar10->d_type - 1" identifier = (binary_expression "pdVar10->d_type - 1" (field_expression "pdVar10->d_type" identifier -> field_identifier) - number_literal)) ;) (if_statement "if (((uVar13 & 0x18) == 0x18) && ((pdVar10->d_type & 0xfb) != 0)) {\n          *(undefined2 *)((int)pvVar11 + 0x3c) = 0xb;\n          if (uVar23 < 0xc) {\n            *(undefined4 *)((int)pvVar11 + 0x54) = *(undefined4 *)(&DAT_00031560 + uVar23 * 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 (uVar23 < 0xc) {\n            *(undefined4 *)((int)pvVar11 + 0x54) = *(undefined4 *)(&DAT_00031560 + uVar23 * 4);\n            uVar12 = 2;\n          }\n          else {\n            *(undefined4 *)((int)pvVar11 + 0x54) = 0;\n            uVar12 = 2;\n          }\n        }" if (parenthesized_expression "(((uVar13 & 0x18) == 0x18) && ((pdVar10->d_type & 0xfb) != 0))" ( (binary_expression "((uVar13 & 0x18) == 0x18) && ((pdVar10->d_type & 0xfb) != 0)" (parenthesized_expression "((uVar13 & 0x18) == 0x18)" ( (binary_expression "(uVar13 & 0x18) == 0x18" (parenthesized_expression "(uVar13 & 0x18)" ( (binary_expression "uVar13 & 0x18" identifier & number_literal) )) == number_literal) )) && (parenthesized_expression "((pdVar10->d_type & 0xfb) != 0)" ( (binary_expression "(pdVar10->d_type & 0xfb) != 0" (parenthesized_expression "(pdVar10->d_type & 0xfb)" ( (binary_expression "pdVar10->d_type & 0xfb" (field_expression "pdVar10->d_type" identifier -> field_identifier) & number_literal) )) != number_literal) ))) )) (compound_statement "{\n          *(undefined2 *)((int)pvVar11 + 0x3c) = 0xb;\n          if (uVar23 < 0xc) {\n            *(undefined4 *)((int)pvVar11 + 0x54) = *(undefined4 *)(&DAT_00031560 + uVar23 * 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 (uVar23 < 0xc) {\n            *(undefined4 *)((int)pvVar11 + 0x54) = *(undefined4 *)(&DAT_00031560 + uVar23 * 4);\n            uVar12 = 1;\n          }\n          else {\n            *(undefined4 *)((int)pvVar11 + 0x54) = 0;\n            uVar12 = 1;\n          }" if (parenthesized_expression "(uVar23 < 0xc)" ( (binary_expression "uVar23 < 0xc" identifier < number_literal) )) (compound_statement "{\n            *(undefined4 *)((int)pvVar11 + 0x54) = *(undefined4 *)(&DAT_00031560 + uVar23 * 4);\n            uVar12 = 1;\n          }" { (expression_statement "*(undefined4 *)((int)pvVar11 + 0x54) = *(undefined4 *)(&DAT_00031560 + uVar23 * 4);" (assignment_expression "*(undefined4 *)((int)pvVar11 + 0x54) = *(undefined4 *)(&DAT_00031560 + uVar23 * 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_00031560 + uVar23 * 4)" * (cast_expression "(undefined4 *)(&DAT_00031560 + uVar23 * 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_00031560 + uVar23 * 4)" ( (binary_expression "&DAT_00031560 + uVar23 * 4" (pointer_expression "&DAT_00031560" & identifier) + (binary_expression "uVar23 * 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 (uVar23 < 0xc) {\n            *(undefined4 *)((int)pvVar11 + 0x54) = *(undefined4 *)(&DAT_00031560 + uVar23 * 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 (uVar23 < 0xc) {\n            *(undefined4 *)((int)pvVar11 + 0x54) = *(undefined4 *)(&DAT_00031560 + uVar23 * 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 (uVar23 < 0xc) {\n            *(undefined4 *)((int)pvVar11 + 0x54) = *(undefined4 *)(&DAT_00031560 + uVar23 * 4);\n            uVar12 = 2;\n          }\n          else {\n            *(undefined4 *)((int)pvVar11 + 0x54) = 0;\n            uVar12 = 2;\n          }" if (parenthesized_expression "(uVar23 < 0xc)" ( (binary_expression "uVar23 < 0xc" identifier < number_literal) )) (compound_statement "{\n            *(undefined4 *)((int)pvVar11 + 0x54) = *(undefined4 *)(&DAT_00031560 + uVar23 * 4);\n            uVar12 = 2;\n          }" { (expression_statement "*(undefined4 *)((int)pvVar11 + 0x54) = *(undefined4 *)(&DAT_00031560 + uVar23 * 4);" (assignment_expression "*(undefined4 *)((int)pvVar11 + 0x54) = *(undefined4 *)(&DAT_00031560 + uVar23 * 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_00031560 + uVar23 * 4)" * (cast_expression "(undefined4 *)(&DAT_00031560 + uVar23 * 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_00031560 + uVar23 * 4)" ( (binary_expression "&DAT_00031560 + uVar23 * 4" (pointer_expression "&DAT_00031560" & identifier) + (binary_expression "uVar23 * 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        uVar8 = FUN_00024740();\n        *(undefined2 *)((int)pvVar11 + 0x3c) = uVar8;\n      }" else (compound_statement "{\n        uVar8 = FUN_00024740();\n        *(undefined2 *)((int)pvVar11 + 0x3c) = uVar8;\n      }" { (expression_statement "uVar8 = FUN_00024740();" (assignment_expression "uVar8 = FUN_00024740()" identifier = (call_expression "FUN_00024740()" identifier (argument_list "()" ( )))) ;) (expression_statement "*(undefined2 *)((int)pvVar11 + 0x3c) = uVar8;" (assignment_expression "*(undefined2 *)((int)pvVar11 + 0x3c) = uVar8" (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 "pvVar1 = pvVar11;" (assignment_expression "pvVar1 = pvVar11" identifier = identifier) ;) (if_statement "if (local_b8 != (void *)0x0) {\n        *(void **)((int)local_c4 + 8) = pvVar11;\n        pvVar1 = local_b8;\n      }" if (parenthesized_expression "(local_b8 != (void *)0x0)" ( (binary_expression "local_b8 != (void *)0x0" identifier != (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        *(void **)((int)local_c4 + 8) = pvVar11;\n        pvVar1 = local_b8;\n      }" { (expression_statement "*(void **)((int)local_c4 + 8) = pvVar11;" (assignment_expression "*(void **)((int)local_c4 + 8) = pvVar11" (pointer_expression "*(void **)((int)local_c4 + 8)" * (cast_expression "(void **)((int)local_c4 + 8)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)local_c4 + 8)" ( (binary_expression "(int)local_c4 + 8" (cast_expression "(int)local_c4" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "pvVar1 = local_b8;" (assignment_expression "pvVar1 = local_b8" identifier = identifier) ;) })) (expression_statement "local_b8 = pvVar1;" (assignment_expression "local_b8 = pvVar1" identifier = identifier) ;) (expression_statement "local_c4 = pvVar11;" (assignment_expression "local_c4 = pvVar11" identifier = identifier) ;) (if_statement "if (local_d4 == 10000) {\n        if (param_1[10] == 0) {\n          iVar17 = *(int *)(iVar2 + 0x2c);\n          if ((*(byte *)(iVar17 + 0x2d) & 2) != 0) {\n            iVar18 = *(int *)(iVar17 + 0x30);\n            if (iVar18 == 0) {\n              iVar18 = FUN_0001df90(0xd,0,FUN_000246b0,FUN_000246e0,puVar6);\n              *(int *)(iVar17 + 0x30) = iVar18;\n              if (iVar18 != 0) goto LAB_00025920;\nLAB_000259b0:\n              if ((local_9c < 0) ||\n                 (iVar19 = fstatfs64(local_9c,&local_74), iVar17 = local_74.f_type, iVar19 != 0))\n              goto LAB_00025a48;\n              local_d4 = local_74.f_type;\n              if ((iVar18 != 0) &&\n                 (__ptr_00 = (undefined4 *)malloc(0xc), __ptr_00 != (undefined4 *)0x0)) {\n                uVar12 = *(undefined4 *)(iVar2 + 0x44);\n                __ptr_00[1] = *(undefined4 *)(iVar2 + 0x48);\n                *__ptr_00 = uVar12;\n                __ptr_00[2] = iVar17;\n                puVar20 = (undefined4 *)FUN_0001e8d0(iVar18,__ptr_00);\n                if (puVar20 == (undefined4 *)0x0) {\n                  free(__ptr_00);\n                  local_d4 = local_74.f_type;\n                }\n                else {\n                  if (__ptr_00 != puVar20) {\n                    /* WARNING: Subroutine does not return */\n                    abort();\n                  }\n                  local_d4 = local_74.f_type;\n                }\n              }\n            }\n            else {\nLAB_00025920:\n              local_7c = *(undefined4 *)(iVar2 + 0x48);\n              local_80 = *(undefined4 *)(iVar2 + 0x44);\n              iVar17 = FUN_0001dce0(iVar18,&local_80);\n              if (iVar17 == 0) goto LAB_000259b0;\n              local_d4 = *(int *)(iVar17 + 8);\n            }\n            if (((local_d4 == 0x6969) || (local_d4 == 0x1021994)) || (local_d4 == -0xacb2be)) {\n              bVar4 = false;\n              goto LAB_00025473;\n            }\n          }\nLAB_00025a48:\n          bVar4 = true;\n        }\nLAB_00025473:\n        local_d4 = 0x2711;\n        goto LAB_000252fb;\n      }" if (parenthesized_expression "(local_d4 == 10000)" ( (binary_expression "local_d4 == 10000" identifier == number_literal) )) (compound_statement "{\n        if (param_1[10] == 0) {\n          iVar17 = *(int *)(iVar2 + 0x2c);\n          if ((*(byte *)(iVar17 + 0x2d) & 2) != 0) {\n            iVar18 = *(int *)(iVar17 + 0x30);\n            if (iVar18 == 0) {\n              iVar18 = FUN_0001df90(0xd,0,FUN_000246b0,FUN_000246e0,puVar6);\n              *(int *)(iVar17 + 0x30) = iVar18;\n              if (iVar18 != 0) goto LAB_00025920;\nLAB_000259b0:\n              if ((local_9c < 0) ||\n                 (iVar19 = fstatfs64(local_9c,&local_74), iVar17 = local_74.f_type, iVar19 != 0))\n              goto LAB_00025a48;\n              local_d4 = local_74.f_type;\n              if ((iVar18 != 0) &&\n                 (__ptr_00 = (undefined4 *)malloc(0xc), __ptr_00 != (undefined4 *)0x0)) {\n                uVar12 = *(undefined4 *)(iVar2 + 0x44);\n                __ptr_00[1] = *(undefined4 *)(iVar2 + 0x48);\n                *__ptr_00 = uVar12;\n                __ptr_00[2] = iVar17;\n                puVar20 = (undefined4 *)FUN_0001e8d0(iVar18,__ptr_00);\n                if (puVar20 == (undefined4 *)0x0) {\n                  free(__ptr_00);\n                  local_d4 = local_74.f_type;\n                }\n                else {\n                  if (__ptr_00 != puVar20) {\n                    /* WARNING: Subroutine does not return */\n                    abort();\n                  }\n                  local_d4 = local_74.f_type;\n                }\n              }\n            }\n            else {\nLAB_00025920:\n              local_7c = *(undefined4 *)(iVar2 + 0x48);\n              local_80 = *(undefined4 *)(iVar2 + 0x44);\n              iVar17 = FUN_0001dce0(iVar18,&local_80);\n              if (iVar17 == 0) goto LAB_000259b0;\n              local_d4 = *(int *)(iVar17 + 8);\n            }\n            if (((local_d4 == 0x6969) || (local_d4 == 0x1021994)) || (local_d4 == -0xacb2be)) {\n              bVar4 = false;\n              goto LAB_00025473;\n            }\n          }\nLAB_00025a48:\n          bVar4 = true;\n        }\nLAB_00025473:\n        local_d4 = 0x2711;\n        goto LAB_000252fb;\n      }" { (if_statement "if (param_1[10] == 0) {\n          iVar17 = *(int *)(iVar2 + 0x2c);\n          if ((*(byte *)(iVar17 + 0x2d) & 2) != 0) {\n            iVar18 = *(int *)(iVar17 + 0x30);\n            if (iVar18 == 0) {\n              iVar18 = FUN_0001df90(0xd,0,FUN_000246b0,FUN_000246e0,puVar6);\n              *(int *)(iVar17 + 0x30) = iVar18;\n              if (iVar18 != 0) goto LAB_00025920;\nLAB_000259b0:\n              if ((local_9c < 0) ||\n                 (iVar19 = fstatfs64(local_9c,&local_74), iVar17 = local_74.f_type, iVar19 != 0))\n              goto LAB_00025a48;\n              local_d4 = local_74.f_type;\n              if ((iVar18 != 0) &&\n                 (__ptr_00 = (undefined4 *)malloc(0xc), __ptr_00 != (undefined4 *)0x0)) {\n                uVar12 = *(undefined4 *)(iVar2 + 0x44);\n                __ptr_00[1] = *(undefined4 *)(iVar2 + 0x48);\n                *__ptr_00 = uVar12;\n                __ptr_00[2] = iVar17;\n                puVar20 = (undefined4 *)FUN_0001e8d0(iVar18,__ptr_00);\n                if (puVar20 == (undefined4 *)0x0) {\n                  free(__ptr_00);\n                  local_d4 = local_74.f_type;\n                }\n                else {\n                  if (__ptr_00 != puVar20) {\n                    /* WARNING: Subroutine does not return */\n                    abort();\n                  }\n                  local_d4 = local_74.f_type;\n                }\n              }\n            }\n            else {\nLAB_00025920:\n              local_7c = *(undefined4 *)(iVar2 + 0x48);\n              local_80 = *(undefined4 *)(iVar2 + 0x44);\n              iVar17 = FUN_0001dce0(iVar18,&local_80);\n              if (iVar17 == 0) goto LAB_000259b0;\n              local_d4 = *(int *)(iVar17 + 8);\n            }\n            if (((local_d4 == 0x6969) || (local_d4 == 0x1021994)) || (local_d4 == -0xacb2be)) {\n              bVar4 = false;\n              goto LAB_00025473;\n            }\n          }\nLAB_00025a48:\n          bVar4 = true;\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          iVar17 = *(int *)(iVar2 + 0x2c);\n          if ((*(byte *)(iVar17 + 0x2d) & 2) != 0) {\n            iVar18 = *(int *)(iVar17 + 0x30);\n            if (iVar18 == 0) {\n              iVar18 = FUN_0001df90(0xd,0,FUN_000246b0,FUN_000246e0,puVar6);\n              *(int *)(iVar17 + 0x30) = iVar18;\n              if (iVar18 != 0) goto LAB_00025920;\nLAB_000259b0:\n              if ((local_9c < 0) ||\n                 (iVar19 = fstatfs64(local_9c,&local_74), iVar17 = local_74.f_type, iVar19 != 0))\n              goto LAB_00025a48;\n              local_d4 = local_74.f_type;\n              if ((iVar18 != 0) &&\n                 (__ptr_00 = (undefined4 *)malloc(0xc), __ptr_00 != (undefined4 *)0x0)) {\n                uVar12 = *(undefined4 *)(iVar2 + 0x44);\n                __ptr_00[1] = *(undefined4 *)(iVar2 + 0x48);\n                *__ptr_00 = uVar12;\n                __ptr_00[2] = iVar17;\n                puVar20 = (undefined4 *)FUN_0001e8d0(iVar18,__ptr_00);\n                if (puVar20 == (undefined4 *)0x0) {\n                  free(__ptr_00);\n                  local_d4 = local_74.f_type;\n                }\n                else {\n                  if (__ptr_00 != puVar20) {\n                    /* WARNING: Subroutine does not return */\n                    abort();\n                  }\n                  local_d4 = local_74.f_type;\n                }\n              }\n            }\n            else {\nLAB_00025920:\n              local_7c = *(undefined4 *)(iVar2 + 0x48);\n              local_80 = *(undefined4 *)(iVar2 + 0x44);\n              iVar17 = FUN_0001dce0(iVar18,&local_80);\n              if (iVar17 == 0) goto LAB_000259b0;\n              local_d4 = *(int *)(iVar17 + 8);\n            }\n            if (((local_d4 == 0x6969) || (local_d4 == 0x1021994)) || (local_d4 == -0xacb2be)) {\n              bVar4 = false;\n              goto LAB_00025473;\n            }\n          }\nLAB_00025a48:\n          bVar4 = true;\n        }" { (expression_statement "iVar17 = *(int *)(iVar2 + 0x2c);" (assignment_expression "iVar17 = *(int *)(iVar2 + 0x2c)" identifier = (pointer_expression "*(int *)(iVar2 + 0x2c)" * (cast_expression "(int *)(iVar2 + 0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x2c)" ( (binary_expression "iVar2 + 0x2c" identifier + number_literal) ))))) ;) (if_statement "if ((*(byte *)(iVar17 + 0x2d) & 2) != 0) {\n            iVar18 = *(int *)(iVar17 + 0x30);\n            if (iVar18 == 0) {\n              iVar18 = FUN_0001df90(0xd,0,FUN_000246b0,FUN_000246e0,puVar6);\n              *(int *)(iVar17 + 0x30) = iVar18;\n              if (iVar18 != 0) goto LAB_00025920;\nLAB_000259b0:\n              if ((local_9c < 0) ||\n                 (iVar19 = fstatfs64(local_9c,&local_74), iVar17 = local_74.f_type, iVar19 != 0))\n              goto LAB_00025a48;\n              local_d4 = local_74.f_type;\n              if ((iVar18 != 0) &&\n                 (__ptr_00 = (undefined4 *)malloc(0xc), __ptr_00 != (undefined4 *)0x0)) {\n                uVar12 = *(undefined4 *)(iVar2 + 0x44);\n                __ptr_00[1] = *(undefined4 *)(iVar2 + 0x48);\n                *__ptr_00 = uVar12;\n                __ptr_00[2] = iVar17;\n                puVar20 = (undefined4 *)FUN_0001e8d0(iVar18,__ptr_00);\n                if (puVar20 == (undefined4 *)0x0) {\n                  free(__ptr_00);\n                  local_d4 = local_74.f_type;\n                }\n                else {\n                  if (__ptr_00 != puVar20) {\n                    /* WARNING: Subroutine does not return */\n                    abort();\n                  }\n                  local_d4 = local_74.f_type;\n                }\n              }\n            }\n            else {\nLAB_00025920:\n              local_7c = *(undefined4 *)(iVar2 + 0x48);\n              local_80 = *(undefined4 *)(iVar2 + 0x44);\n              iVar17 = FUN_0001dce0(iVar18,&local_80);\n              if (iVar17 == 0) goto LAB_000259b0;\n              local_d4 = *(int *)(iVar17 + 8);\n            }\n            if (((local_d4 == 0x6969) || (local_d4 == 0x1021994)) || (local_d4 == -0xacb2be)) {\n              bVar4 = false;\n              goto LAB_00025473;\n            }\n          }" if (parenthesized_expression "((*(byte *)(iVar17 + 0x2d) & 2) != 0)" ( (binary_expression "(*(byte *)(iVar17 + 0x2d) & 2) != 0" (parenthesized_expression "(*(byte *)(iVar17 + 0x2d) & 2)" ( (binary_expression "*(byte *)(iVar17 + 0x2d) & 2" (pointer_expression "*(byte *)(iVar17 + 0x2d)" * (cast_expression "(byte *)(iVar17 + 0x2d)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar17 + 0x2d)" ( (binary_expression "iVar17 + 0x2d" identifier + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n            iVar18 = *(int *)(iVar17 + 0x30);\n            if (iVar18 == 0) {\n              iVar18 = FUN_0001df90(0xd,0,FUN_000246b0,FUN_000246e0,puVar6);\n              *(int *)(iVar17 + 0x30) = iVar18;\n              if (iVar18 != 0) goto LAB_00025920;\nLAB_000259b0:\n              if ((local_9c < 0) ||\n                 (iVar19 = fstatfs64(local_9c,&local_74), iVar17 = local_74.f_type, iVar19 != 0))\n              goto LAB_00025a48;\n              local_d4 = local_74.f_type;\n              if ((iVar18 != 0) &&\n                 (__ptr_00 = (undefined4 *)malloc(0xc), __ptr_00 != (undefined4 *)0x0)) {\n                uVar12 = *(undefined4 *)(iVar2 + 0x44);\n                __ptr_00[1] = *(undefined4 *)(iVar2 + 0x48);\n                *__ptr_00 = uVar12;\n                __ptr_00[2] = iVar17;\n                puVar20 = (undefined4 *)FUN_0001e8d0(iVar18,__ptr_00);\n                if (puVar20 == (undefined4 *)0x0) {\n                  free(__ptr_00);\n                  local_d4 = local_74.f_type;\n                }\n                else {\n                  if (__ptr_00 != puVar20) {\n                    /* WARNING: Subroutine does not return */\n                    abort();\n                  }\n                  local_d4 = local_74.f_type;\n                }\n              }\n            }\n            else {\nLAB_00025920:\n              local_7c = *(undefined4 *)(iVar2 + 0x48);\n              local_80 = *(undefined4 *)(iVar2 + 0x44);\n              iVar17 = FUN_0001dce0(iVar18,&local_80);\n              if (iVar17 == 0) goto LAB_000259b0;\n              local_d4 = *(int *)(iVar17 + 8);\n            }\n            if (((local_d4 == 0x6969) || (local_d4 == 0x1021994)) || (local_d4 == -0xacb2be)) {\n              bVar4 = false;\n              goto LAB_00025473;\n            }\n          }" { (expression_statement "iVar18 = *(int *)(iVar17 + 0x30);" (assignment_expression "iVar18 = *(int *)(iVar17 + 0x30)" identifier = (pointer_expression "*(int *)(iVar17 + 0x30)" * (cast_expression "(int *)(iVar17 + 0x30)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar17 + 0x30)" ( (binary_expression "iVar17 + 0x30" identifier + number_literal) ))))) ;) (if_statement "if (iVar18 == 0) {\n              iVar18 = FUN_0001df90(0xd,0,FUN_000246b0,FUN_000246e0,puVar6);\n              *(int *)(iVar17 + 0x30) = iVar18;\n              if (iVar18 != 0) goto LAB_00025920;\nLAB_000259b0:\n              if ((local_9c < 0) ||\n                 (iVar19 = fstatfs64(local_9c,&local_74), iVar17 = local_74.f_type, iVar19 != 0))\n              goto LAB_00025a48;\n              local_d4 = local_74.f_type;\n              if ((iVar18 != 0) &&\n                 (__ptr_00 = (undefined4 *)malloc(0xc), __ptr_00 != (undefined4 *)0x0)) {\n                uVar12 = *(undefined4 *)(iVar2 + 0x44);\n                __ptr_00[1] = *(undefined4 *)(iVar2 + 0x48);\n                *__ptr_00 = uVar12;\n                __ptr_00[2] = iVar17;\n                puVar20 = (undefined4 *)FUN_0001e8d0(iVar18,__ptr_00);\n                if (puVar20 == (undefined4 *)0x0) {\n                  free(__ptr_00);\n                  local_d4 = local_74.f_type;\n                }\n                else {\n                  if (__ptr_00 != puVar20) {\n                    /* WARNING: Subroutine does not return */\n                    abort();\n                  }\n                  local_d4 = local_74.f_type;\n                }\n              }\n            }\n            else {\nLAB_00025920:\n              local_7c = *(undefined4 *)(iVar2 + 0x48);\n              local_80 = *(undefined4 *)(iVar2 + 0x44);\n              iVar17 = FUN_0001dce0(iVar18,&local_80);\n              if (iVar17 == 0) goto LAB_000259b0;\n              local_d4 = *(int *)(iVar17 + 8);\n            }" if (parenthesized_expression "(iVar18 == 0)" ( (binary_expression "iVar18 == 0" identifier == number_literal) )) (compound_statement "{\n              iVar18 = FUN_0001df90(0xd,0,FUN_000246b0,FUN_000246e0,puVar6);\n              *(int *)(iVar17 + 0x30) = iVar18;\n              if (iVar18 != 0) goto LAB_00025920;\nLAB_000259b0:\n              if ((local_9c < 0) ||\n                 (iVar19 = fstatfs64(local_9c,&local_74), iVar17 = local_74.f_type, iVar19 != 0))\n              goto LAB_00025a48;\n              local_d4 = local_74.f_type;\n              if ((iVar18 != 0) &&\n                 (__ptr_00 = (undefined4 *)malloc(0xc), __ptr_00 != (undefined4 *)0x0)) {\n                uVar12 = *(undefined4 *)(iVar2 + 0x44);\n                __ptr_00[1] = *(undefined4 *)(iVar2 + 0x48);\n                *__ptr_00 = uVar12;\n                __ptr_00[2] = iVar17;\n                puVar20 = (undefined4 *)FUN_0001e8d0(iVar18,__ptr_00);\n                if (puVar20 == (undefined4 *)0x0) {\n                  free(__ptr_00);\n                  local_d4 = local_74.f_type;\n                }\n                else {\n                  if (__ptr_00 != puVar20) {\n                    /* WARNING: Subroutine does not return */\n                    abort();\n                  }\n                  local_d4 = local_74.f_type;\n                }\n              }\n            }" { (expression_statement "iVar18 = FUN_0001df90(0xd,0,FUN_000246b0,FUN_000246e0,puVar6);" (assignment_expression "iVar18 = FUN_0001df90(0xd,0,FUN_000246b0,FUN_000246e0,puVar6)" identifier = (call_expression "FUN_0001df90(0xd,0,FUN_000246b0,FUN_000246e0,puVar6)" identifier (argument_list "(0xd,0,FUN_000246b0,FUN_000246e0,puVar6)" ( number_literal , number_literal , identifier , identifier , identifier )))) ;) (expression_statement "*(int *)(iVar17 + 0x30) = iVar18;" (assignment_expression "*(int *)(iVar17 + 0x30) = iVar18" (pointer_expression "*(int *)(iVar17 + 0x30)" * (cast_expression "(int *)(iVar17 + 0x30)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar17 + 0x30)" ( (binary_expression "iVar17 + 0x30" identifier + number_literal) )))) = identifier) ;) (if_statement "if (iVar18 != 0) goto LAB_00025920;" if (parenthesized_expression "(iVar18 != 0)" ( (binary_expression "iVar18 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00025920;" goto statement_identifier ;)) (labeled_statement "LAB_000259b0:\n              if ((local_9c < 0) ||\n                 (iVar19 = fstatfs64(local_9c,&local_74), iVar17 = local_74.f_type, iVar19 != 0))\n              goto LAB_00025a48;" statement_identifier : (if_statement "if ((local_9c < 0) ||\n                 (iVar19 = fstatfs64(local_9c,&local_74), iVar17 = local_74.f_type, iVar19 != 0))\n              goto LAB_00025a48;" if (parenthesized_expression "((local_9c < 0) ||\n                 (iVar19 = fstatfs64(local_9c,&local_74), iVar17 = local_74.f_type, iVar19 != 0))" ( (binary_expression "(local_9c < 0) ||\n                 (iVar19 = fstatfs64(local_9c,&local_74), iVar17 = local_74.f_type, iVar19 != 0)" (parenthesized_expression "(local_9c < 0)" ( (binary_expression "local_9c < 0" identifier < number_literal) )) || (parenthesized_expression "(iVar19 = fstatfs64(local_9c,&local_74), iVar17 = local_74.f_type, iVar19 != 0)" ( (comma_expression "iVar19 = fstatfs64(local_9c,&local_74), iVar17 = local_74.f_type, iVar19 != 0" (assignment_expression "iVar19 = fstatfs64(local_9c,&local_74)" identifier = (call_expression "fstatfs64(local_9c,&local_74)" identifier (argument_list "(local_9c,&local_74)" ( identifier , (pointer_expression "&local_74" & identifier) )))) , (comma_expression "iVar17 = local_74.f_type, iVar19 != 0" (assignment_expression "iVar17 = local_74.f_type" identifier = (field_expression "local_74.f_type" identifier . field_identifier)) , (binary_expression "iVar19 != 0" identifier != number_literal))) ))) )) (goto_statement "goto LAB_00025a48;" goto statement_identifier ;))) (expression_statement "local_d4 = local_74.f_type;" (assignment_expression "local_d4 = local_74.f_type" identifier = (field_expression "local_74.f_type" identifier . field_identifier)) ;) (if_statement "if ((iVar18 != 0) &&\n                 (__ptr_00 = (undefined4 *)malloc(0xc), __ptr_00 != (undefined4 *)0x0)) {\n                uVar12 = *(undefined4 *)(iVar2 + 0x44);\n                __ptr_00[1] = *(undefined4 *)(iVar2 + 0x48);\n                *__ptr_00 = uVar12;\n                __ptr_00[2] = iVar17;\n                puVar20 = (undefined4 *)FUN_0001e8d0(iVar18,__ptr_00);\n                if (puVar20 == (undefined4 *)0x0) {\n                  free(__ptr_00);\n                  local_d4 = local_74.f_type;\n                }\n                else {\n                  if (__ptr_00 != puVar20) {\n                    /* WARNING: Subroutine does not return */\n                    abort();\n                  }\n                  local_d4 = local_74.f_type;\n                }\n              }" if (parenthesized_expression "((iVar18 != 0) &&\n                 (__ptr_00 = (undefined4 *)malloc(0xc), __ptr_00 != (undefined4 *)0x0))" ( (binary_expression "(iVar18 != 0) &&\n                 (__ptr_00 = (undefined4 *)malloc(0xc), __ptr_00 != (undefined4 *)0x0)" (parenthesized_expression "(iVar18 != 0)" ( (binary_expression "iVar18 != 0" identifier != number_literal) )) && (parenthesized_expression "(__ptr_00 = (undefined4 *)malloc(0xc), __ptr_00 != (undefined4 *)0x0)" ( (comma_expression "__ptr_00 = (undefined4 *)malloc(0xc), __ptr_00 != (undefined4 *)0x0" (assignment_expression "__ptr_00 = (undefined4 *)malloc(0xc)" identifier = (cast_expression "(undefined4 *)malloc(0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "malloc(0xc)" identifier (argument_list "(0xc)" ( number_literal ))))) , (binary_expression "__ptr_00 != (undefined4 *)0x0" identifier != (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) (compound_statement "{\n                uVar12 = *(undefined4 *)(iVar2 + 0x44);\n                __ptr_00[1] = *(undefined4 *)(iVar2 + 0x48);\n                *__ptr_00 = uVar12;\n                __ptr_00[2] = iVar17;\n                puVar20 = (undefined4 *)FUN_0001e8d0(iVar18,__ptr_00);\n                if (puVar20 == (undefined4 *)0x0) {\n                  free(__ptr_00);\n                  local_d4 = local_74.f_type;\n                }\n                else {\n                  if (__ptr_00 != puVar20) {\n                    /* WARNING: Subroutine does not return */\n                    abort();\n                  }\n                  local_d4 = local_74.f_type;\n                }\n              }" { (expression_statement "uVar12 = *(undefined4 *)(iVar2 + 0x44);" (assignment_expression "uVar12 = *(undefined4 *)(iVar2 + 0x44)" identifier = (pointer_expression "*(undefined4 *)(iVar2 + 0x44)" * (cast_expression "(undefined4 *)(iVar2 + 0x44)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x44)" ( (binary_expression "iVar2 + 0x44" identifier + number_literal) ))))) ;) (expression_statement "__ptr_00[1] = *(undefined4 *)(iVar2 + 0x48);" (assignment_expression "__ptr_00[1] = *(undefined4 *)(iVar2 + 0x48)" (subscript_expression "__ptr_00[1]" identifier [ number_literal ]) = (pointer_expression "*(undefined4 *)(iVar2 + 0x48)" * (cast_expression "(undefined4 *)(iVar2 + 0x48)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x48)" ( (binary_expression "iVar2 + 0x48" identifier + number_literal) ))))) ;) (expression_statement "*__ptr_00 = uVar12;" (assignment_expression "*__ptr_00 = uVar12" (pointer_expression "*__ptr_00" * identifier) = identifier) ;) (expression_statement "__ptr_00[2] = iVar17;" (assignment_expression "__ptr_00[2] = iVar17" (subscript_expression "__ptr_00[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar20 = (undefined4 *)FUN_0001e8d0(iVar18,__ptr_00);" (assignment_expression "puVar20 = (undefined4 *)FUN_0001e8d0(iVar18,__ptr_00)" identifier = (cast_expression "(undefined4 *)FUN_0001e8d0(iVar18,__ptr_00)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0001e8d0(iVar18,__ptr_00)" identifier (argument_list "(iVar18,__ptr_00)" ( identifier , identifier ))))) ;) (if_statement "if (puVar20 == (undefined4 *)0x0) {\n                  free(__ptr_00);\n                  local_d4 = local_74.f_type;\n                }\n                else {\n                  if (__ptr_00 != puVar20) {\n                    /* WARNING: Subroutine does not return */\n                    abort();\n                  }\n                  local_d4 = local_74.f_type;\n                }" if (parenthesized_expression "(puVar20 == (undefined4 *)0x0)" ( (binary_expression "puVar20 == (undefined4 *)0x0" identifier == (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                  free(__ptr_00);\n                  local_d4 = local_74.f_type;\n                }" { (expression_statement "free(__ptr_00);" (call_expression "free(__ptr_00)" identifier (argument_list "(__ptr_00)" ( identifier ))) ;) (expression_statement "local_d4 = local_74.f_type;" (assignment_expression "local_d4 = local_74.f_type" identifier = (field_expression "local_74.f_type" identifier . field_identifier)) ;) }) (else_clause "else {\n                  if (__ptr_00 != puVar20) {\n                    /* WARNING: Subroutine does not return */\n                    abort();\n                  }\n                  local_d4 = local_74.f_type;\n                }" else (compound_statement "{\n                  if (__ptr_00 != puVar20) {\n                    /* WARNING: Subroutine does not return */\n                    abort();\n                  }\n                  local_d4 = local_74.f_type;\n                }" { (if_statement "if (__ptr_00 != puVar20) {\n                    /* WARNING: Subroutine does not return */\n                    abort();\n                  }" if (parenthesized_expression "(__ptr_00 != puVar20)" ( (binary_expression "__ptr_00 != puVar20" identifier != identifier) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n                    abort();\n                  }" { comment (expression_statement "abort();" (call_expression "abort()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "local_d4 = local_74.f_type;" (assignment_expression "local_d4 = local_74.f_type" identifier = (field_expression "local_74.f_type" identifier . field_identifier)) ;) }))) })) }) (else_clause "else {\nLAB_00025920:\n              local_7c = *(undefined4 *)(iVar2 + 0x48);\n              local_80 = *(undefined4 *)(iVar2 + 0x44);\n              iVar17 = FUN_0001dce0(iVar18,&local_80);\n              if (iVar17 == 0) goto LAB_000259b0;\n              local_d4 = *(int *)(iVar17 + 8);\n            }" else (compound_statement "{\nLAB_00025920:\n              local_7c = *(undefined4 *)(iVar2 + 0x48);\n              local_80 = *(undefined4 *)(iVar2 + 0x44);\n              iVar17 = FUN_0001dce0(iVar18,&local_80);\n              if (iVar17 == 0) goto LAB_000259b0;\n              local_d4 = *(int *)(iVar17 + 8);\n            }" { (labeled_statement "LAB_00025920:\n              local_7c = *(undefined4 *)(iVar2 + 0x48);" statement_identifier : (expression_statement "local_7c = *(undefined4 *)(iVar2 + 0x48);" (assignment_expression "local_7c = *(undefined4 *)(iVar2 + 0x48)" identifier = (pointer_expression "*(undefined4 *)(iVar2 + 0x48)" * (cast_expression "(undefined4 *)(iVar2 + 0x48)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x48)" ( (binary_expression "iVar2 + 0x48" identifier + number_literal) ))))) ;)) (expression_statement "local_80 = *(undefined4 *)(iVar2 + 0x44);" (assignment_expression "local_80 = *(undefined4 *)(iVar2 + 0x44)" identifier = (pointer_expression "*(undefined4 *)(iVar2 + 0x44)" * (cast_expression "(undefined4 *)(iVar2 + 0x44)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x44)" ( (binary_expression "iVar2 + 0x44" identifier + number_literal) ))))) ;) (expression_statement "iVar17 = FUN_0001dce0(iVar18,&local_80);" (assignment_expression "iVar17 = FUN_0001dce0(iVar18,&local_80)" identifier = (call_expression "FUN_0001dce0(iVar18,&local_80)" identifier (argument_list "(iVar18,&local_80)" ( identifier , (pointer_expression "&local_80" & identifier) )))) ;) (if_statement "if (iVar17 == 0) goto LAB_000259b0;" if (parenthesized_expression "(iVar17 == 0)" ( (binary_expression "iVar17 == 0" identifier == number_literal) )) (goto_statement "goto LAB_000259b0;" goto statement_identifier ;)) (expression_statement "local_d4 = *(int *)(iVar17 + 8);" (assignment_expression "local_d4 = *(int *)(iVar17 + 8)" identifier = (pointer_expression "*(int *)(iVar17 + 8)" * (cast_expression "(int *)(iVar17 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar17 + 8)" ( (binary_expression "iVar17 + 8" identifier + number_literal) ))))) ;) }))) (if_statement "if (((local_d4 == 0x6969) || (local_d4 == 0x1021994)) || (local_d4 == -0xacb2be)) {\n              bVar4 = false;\n              goto LAB_00025473;\n            }" if (parenthesized_expression "(((local_d4 == 0x6969) || (local_d4 == 0x1021994)) || (local_d4 == -0xacb2be))" ( (binary_expression "((local_d4 == 0x6969) || (local_d4 == 0x1021994)) || (local_d4 == -0xacb2be)" (parenthesized_expression "((local_d4 == 0x6969) || (local_d4 == 0x1021994))" ( (binary_expression "(local_d4 == 0x6969) || (local_d4 == 0x1021994)" (parenthesized_expression "(local_d4 == 0x6969)" ( (binary_expression "local_d4 == 0x6969" identifier == number_literal) )) || (parenthesized_expression "(local_d4 == 0x1021994)" ( (binary_expression "local_d4 == 0x1021994" identifier == number_literal) ))) )) || (parenthesized_expression "(local_d4 == -0xacb2be)" ( (binary_expression "local_d4 == -0xacb2be" identifier == number_literal) ))) )) (compound_statement "{\n              bVar4 = false;\n              goto LAB_00025473;\n            }" { (expression_statement "bVar4 = false;" (assignment_expression "bVar4 = false" identifier = false) ;) (goto_statement "goto LAB_00025473;" goto statement_identifier ;) })) })) (labeled_statement "LAB_00025a48:\n          bVar4 = true;" statement_identifier : (expression_statement "bVar4 = true;" (assignment_expression "bVar4 = true" identifier = true) ;)) })) (labeled_statement "LAB_00025473:\n        local_d4 = 0x2711;" statement_identifier : (expression_statement "local_d4 = 0x2711;" (assignment_expression "local_d4 = 0x2711" identifier = number_literal) ;)) (goto_statement "goto LAB_000252fb;" goto statement_identifier ;) })) (expression_statement "local_d4 = local_d4 + 1;" (assignment_expression "local_d4 = local_d4 + 1" identifier = (binary_expression "local_d4 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(local_d4 < local_a8)" ( (binary_expression "local_d4 < local_a8" identifier < identifier) )) ;)) (labeled_statement "LAB_000256de:\n    if (bVar3) {\n      iVar15 = param_1[5];\n      for (iVar17 = param_1[1]; iVar17 != 0; iVar17 = *(int *)(iVar17 + 8)) {\n        while (*(int *)(iVar17 + 0x18) != iVar17 + 0xa4) {\n          iVar18 = *(int *)(iVar17 + 0x1c);\n          *(int *)(iVar17 + 0x1c) = iVar15;\n          *(int *)(iVar17 + 0x18) = (*(int *)(iVar17 + 0x18) - iVar18) + iVar15;\n          iVar17 = *(int *)(iVar17 + 8);\n          if (iVar17 == 0) goto LAB_00025aef;\n        }\n        *(int *)(iVar17 + 0x1c) = iVar15;\n      }\nLAB_00025aef:\n      iVar17 = *(int *)((int)local_b8 + 0x30);\n      pvVar11 = local_b8;\n      while (-1 < iVar17) {\n        while( true ) {\n          if (*(int *)((int)pvVar11 + 0x18) != (int)pvVar11 + 0xa4) {\n            *(int *)((int)pvVar11 + 0x18) =\n                 (*(int *)((int)pvVar11 + 0x18) - *(int *)((int)pvVar11 + 0x1c)) + iVar15;\n          }\n          pvVar1 = *(void **)((int)pvVar11 + 8);\n          *(int *)((int)pvVar11 + 0x1c) = iVar15;\n          if (pvVar1 == (void *)0x0) break;\n          pvVar11 = pvVar1;\n          if (*(int *)((int)pvVar1 + 0x30) < 0) goto LAB_000256e9;\n        }\n        pvVar11 = *(void **)((int)pvVar11 + 4);\n        iVar17 = *(int *)((int)pvVar11 + 0x30);\n      }\n    }" statement_identifier : (if_statement "if (bVar3) {\n      iVar15 = param_1[5];\n      for (iVar17 = param_1[1]; iVar17 != 0; iVar17 = *(int *)(iVar17 + 8)) {\n        while (*(int *)(iVar17 + 0x18) != iVar17 + 0xa4) {\n          iVar18 = *(int *)(iVar17 + 0x1c);\n          *(int *)(iVar17 + 0x1c) = iVar15;\n          *(int *)(iVar17 + 0x18) = (*(int *)(iVar17 + 0x18) - iVar18) + iVar15;\n          iVar17 = *(int *)(iVar17 + 8);\n          if (iVar17 == 0) goto LAB_00025aef;\n        }\n        *(int *)(iVar17 + 0x1c) = iVar15;\n      }\nLAB_00025aef:\n      iVar17 = *(int *)((int)local_b8 + 0x30);\n      pvVar11 = local_b8;\n      while (-1 < iVar17) {\n        while( true ) {\n          if (*(int *)((int)pvVar11 + 0x18) != (int)pvVar11 + 0xa4) {\n            *(int *)((int)pvVar11 + 0x18) =\n                 (*(int *)((int)pvVar11 + 0x18) - *(int *)((int)pvVar11 + 0x1c)) + iVar15;\n          }\n          pvVar1 = *(void **)((int)pvVar11 + 8);\n          *(int *)((int)pvVar11 + 0x1c) = iVar15;\n          if (pvVar1 == (void *)0x0) break;\n          pvVar11 = pvVar1;\n          if (*(int *)((int)pvVar1 + 0x30) < 0) goto LAB_000256e9;\n        }\n        pvVar11 = *(void **)((int)pvVar11 + 4);\n        iVar17 = *(int *)((int)pvVar11 + 0x30);\n      }\n    }" if (parenthesized_expression "(bVar3)" ( identifier )) (compound_statement "{\n      iVar15 = param_1[5];\n      for (iVar17 = param_1[1]; iVar17 != 0; iVar17 = *(int *)(iVar17 + 8)) {\n        while (*(int *)(iVar17 + 0x18) != iVar17 + 0xa4) {\n          iVar18 = *(int *)(iVar17 + 0x1c);\n          *(int *)(iVar17 + 0x1c) = iVar15;\n          *(int *)(iVar17 + 0x18) = (*(int *)(iVar17 + 0x18) - iVar18) + iVar15;\n          iVar17 = *(int *)(iVar17 + 8);\n          if (iVar17 == 0) goto LAB_00025aef;\n        }\n        *(int *)(iVar17 + 0x1c) = iVar15;\n      }\nLAB_00025aef:\n      iVar17 = *(int *)((int)local_b8 + 0x30);\n      pvVar11 = local_b8;\n      while (-1 < iVar17) {\n        while( true ) {\n          if (*(int *)((int)pvVar11 + 0x18) != (int)pvVar11 + 0xa4) {\n            *(int *)((int)pvVar11 + 0x18) =\n                 (*(int *)((int)pvVar11 + 0x18) - *(int *)((int)pvVar11 + 0x1c)) + iVar15;\n          }\n          pvVar1 = *(void **)((int)pvVar11 + 8);\n          *(int *)((int)pvVar11 + 0x1c) = iVar15;\n          if (pvVar1 == (void *)0x0) break;\n          pvVar11 = pvVar1;\n          if (*(int *)((int)pvVar1 + 0x30) < 0) goto LAB_000256e9;\n        }\n        pvVar11 = *(void **)((int)pvVar11 + 4);\n        iVar17 = *(int *)((int)pvVar11 + 0x30);\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 (iVar17 = param_1[1]; iVar17 != 0; iVar17 = *(int *)(iVar17 + 8)) {\n        while (*(int *)(iVar17 + 0x18) != iVar17 + 0xa4) {\n          iVar18 = *(int *)(iVar17 + 0x1c);\n          *(int *)(iVar17 + 0x1c) = iVar15;\n          *(int *)(iVar17 + 0x18) = (*(int *)(iVar17 + 0x18) - iVar18) + iVar15;\n          iVar17 = *(int *)(iVar17 + 8);\n          if (iVar17 == 0) goto LAB_00025aef;\n        }\n        *(int *)(iVar17 + 0x1c) = iVar15;\n      }" for ( (assignment_expression "iVar17 = param_1[1]" identifier = (subscript_expression "param_1[1]" identifier [ number_literal ])) ; (binary_expression "iVar17 != 0" identifier != number_literal) ; (assignment_expression "iVar17 = *(int *)(iVar17 + 8)" identifier = (pointer_expression "*(int *)(iVar17 + 8)" * (cast_expression "(int *)(iVar17 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar17 + 8)" ( (binary_expression "iVar17 + 8" identifier + number_literal) ))))) ) (compound_statement "{\n        while (*(int *)(iVar17 + 0x18) != iVar17 + 0xa4) {\n          iVar18 = *(int *)(iVar17 + 0x1c);\n          *(int *)(iVar17 + 0x1c) = iVar15;\n          *(int *)(iVar17 + 0x18) = (*(int *)(iVar17 + 0x18) - iVar18) + iVar15;\n          iVar17 = *(int *)(iVar17 + 8);\n          if (iVar17 == 0) goto LAB_00025aef;\n        }\n        *(int *)(iVar17 + 0x1c) = iVar15;\n      }" { (while_statement "while (*(int *)(iVar17 + 0x18) != iVar17 + 0xa4) {\n          iVar18 = *(int *)(iVar17 + 0x1c);\n          *(int *)(iVar17 + 0x1c) = iVar15;\n          *(int *)(iVar17 + 0x18) = (*(int *)(iVar17 + 0x18) - iVar18) + iVar15;\n          iVar17 = *(int *)(iVar17 + 8);\n          if (iVar17 == 0) goto LAB_00025aef;\n        }" while (parenthesized_expression "(*(int *)(iVar17 + 0x18) != iVar17 + 0xa4)" ( (binary_expression "*(int *)(iVar17 + 0x18) != iVar17 + 0xa4" (pointer_expression "*(int *)(iVar17 + 0x18)" * (cast_expression "(int *)(iVar17 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar17 + 0x18)" ( (binary_expression "iVar17 + 0x18" identifier + number_literal) )))) != (binary_expression "iVar17 + 0xa4" identifier + number_literal)) )) (compound_statement "{\n          iVar18 = *(int *)(iVar17 + 0x1c);\n          *(int *)(iVar17 + 0x1c) = iVar15;\n          *(int *)(iVar17 + 0x18) = (*(int *)(iVar17 + 0x18) - iVar18) + iVar15;\n          iVar17 = *(int *)(iVar17 + 8);\n          if (iVar17 == 0) goto LAB_00025aef;\n        }" { (expression_statement "iVar18 = *(int *)(iVar17 + 0x1c);" (assignment_expression "iVar18 = *(int *)(iVar17 + 0x1c)" identifier = (pointer_expression "*(int *)(iVar17 + 0x1c)" * (cast_expression "(int *)(iVar17 + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar17 + 0x1c)" ( (binary_expression "iVar17 + 0x1c" identifier + number_literal) ))))) ;) (expression_statement "*(int *)(iVar17 + 0x1c) = iVar15;" (assignment_expression "*(int *)(iVar17 + 0x1c) = iVar15" (pointer_expression "*(int *)(iVar17 + 0x1c)" * (cast_expression "(int *)(iVar17 + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar17 + 0x1c)" ( (binary_expression "iVar17 + 0x1c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(iVar17 + 0x18) = (*(int *)(iVar17 + 0x18) - iVar18) + iVar15;" (assignment_expression "*(int *)(iVar17 + 0x18) = (*(int *)(iVar17 + 0x18) - iVar18) + iVar15" (pointer_expression "*(int *)(iVar17 + 0x18)" * (cast_expression "(int *)(iVar17 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar17 + 0x18)" ( (binary_expression "iVar17 + 0x18" identifier + number_literal) )))) = (binary_expression "(*(int *)(iVar17 + 0x18) - iVar18) + iVar15" (parenthesized_expression "(*(int *)(iVar17 + 0x18) - iVar18)" ( (binary_expression "*(int *)(iVar17 + 0x18) - iVar18" (pointer_expression "*(int *)(iVar17 + 0x18)" * (cast_expression "(int *)(iVar17 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar17 + 0x18)" ( (binary_expression "iVar17 + 0x18" identifier + number_literal) )))) - identifier) )) + identifier)) ;) (expression_statement "iVar17 = *(int *)(iVar17 + 8);" (assignment_expression "iVar17 = *(int *)(iVar17 + 8)" identifier = (pointer_expression "*(int *)(iVar17 + 8)" * (cast_expression "(int *)(iVar17 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar17 + 8)" ( (binary_expression "iVar17 + 8" identifier + number_literal) ))))) ;) (if_statement "if (iVar17 == 0) goto LAB_00025aef;" if (parenthesized_expression "(iVar17 == 0)" ( (binary_expression "iVar17 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00025aef;" goto statement_identifier ;)) })) (expression_statement "*(int *)(iVar17 + 0x1c) = iVar15;" (assignment_expression "*(int *)(iVar17 + 0x1c) = iVar15" (pointer_expression "*(int *)(iVar17 + 0x1c)" * (cast_expression "(int *)(iVar17 + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar17 + 0x1c)" ( (binary_expression "iVar17 + 0x1c" identifier + number_literal) )))) = identifier) ;) })) (labeled_statement "LAB_00025aef:\n      iVar17 = *(int *)((int)local_b8 + 0x30);" statement_identifier : (expression_statement "iVar17 = *(int *)((int)local_b8 + 0x30);" (assignment_expression "iVar17 = *(int *)((int)local_b8 + 0x30)" identifier = (pointer_expression "*(int *)((int)local_b8 + 0x30)" * (cast_expression "(int *)((int)local_b8 + 0x30)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_b8 + 0x30)" ( (binary_expression "(int)local_b8 + 0x30" (cast_expression "(int)local_b8" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;)) (expression_statement "pvVar11 = local_b8;" (assignment_expression "pvVar11 = local_b8" identifier = identifier) ;) (while_statement "while (-1 < iVar17) {\n        while( true ) {\n          if (*(int *)((int)pvVar11 + 0x18) != (int)pvVar11 + 0xa4) {\n            *(int *)((int)pvVar11 + 0x18) =\n                 (*(int *)((int)pvVar11 + 0x18) - *(int *)((int)pvVar11 + 0x1c)) + iVar15;\n          }\n          pvVar1 = *(void **)((int)pvVar11 + 8);\n          *(int *)((int)pvVar11 + 0x1c) = iVar15;\n          if (pvVar1 == (void *)0x0) break;\n          pvVar11 = pvVar1;\n          if (*(int *)((int)pvVar1 + 0x30) < 0) goto LAB_000256e9;\n        }\n        pvVar11 = *(void **)((int)pvVar11 + 4);\n        iVar17 = *(int *)((int)pvVar11 + 0x30);\n      }" while (parenthesized_expression "(-1 < iVar17)" ( (binary_expression "-1 < iVar17" number_literal < identifier) )) (compound_statement "{\n        while( true ) {\n          if (*(int *)((int)pvVar11 + 0x18) != (int)pvVar11 + 0xa4) {\n            *(int *)((int)pvVar11 + 0x18) =\n                 (*(int *)((int)pvVar11 + 0x18) - *(int *)((int)pvVar11 + 0x1c)) + iVar15;\n          }\n          pvVar1 = *(void **)((int)pvVar11 + 8);\n          *(int *)((int)pvVar11 + 0x1c) = iVar15;\n          if (pvVar1 == (void *)0x0) break;\n          pvVar11 = pvVar1;\n          if (*(int *)((int)pvVar1 + 0x30) < 0) goto LAB_000256e9;\n        }\n        pvVar11 = *(void **)((int)pvVar11 + 4);\n        iVar17 = *(int *)((int)pvVar11 + 0x30);\n      }" { (while_statement "while( true ) {\n          if (*(int *)((int)pvVar11 + 0x18) != (int)pvVar11 + 0xa4) {\n            *(int *)((int)pvVar11 + 0x18) =\n                 (*(int *)((int)pvVar11 + 0x18) - *(int *)((int)pvVar11 + 0x1c)) + iVar15;\n          }\n          pvVar1 = *(void **)((int)pvVar11 + 8);\n          *(int *)((int)pvVar11 + 0x1c) = iVar15;\n          if (pvVar1 == (void *)0x0) break;\n          pvVar11 = pvVar1;\n          if (*(int *)((int)pvVar1 + 0x30) < 0) goto LAB_000256e9;\n        }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n          if (*(int *)((int)pvVar11 + 0x18) != (int)pvVar11 + 0xa4) {\n            *(int *)((int)pvVar11 + 0x18) =\n                 (*(int *)((int)pvVar11 + 0x18) - *(int *)((int)pvVar11 + 0x1c)) + iVar15;\n          }\n          pvVar1 = *(void **)((int)pvVar11 + 8);\n          *(int *)((int)pvVar11 + 0x1c) = iVar15;\n          if (pvVar1 == (void *)0x0) break;\n          pvVar11 = pvVar1;\n          if (*(int *)((int)pvVar1 + 0x30) < 0) goto LAB_000256e9;\n        }" { (if_statement "if (*(int *)((int)pvVar11 + 0x18) != (int)pvVar11 + 0xa4) {\n            *(int *)((int)pvVar11 + 0x18) =\n                 (*(int *)((int)pvVar11 + 0x18) - *(int *)((int)pvVar11 + 0x1c)) + iVar15;\n          }" if (parenthesized_expression "(*(int *)((int)pvVar11 + 0x18) != (int)pvVar11 + 0xa4)" ( (binary_expression "*(int *)((int)pvVar11 + 0x18) != (int)pvVar11 + 0xa4" (pointer_expression "*(int *)((int)pvVar11 + 0x18)" * (cast_expression "(int *)((int)pvVar11 + 0x18)" ( (type_descriptor "int *" primitive_type (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) )))) != (binary_expression "(int)pvVar11 + 0xa4" (cast_expression "(int)pvVar11" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal)) )) (compound_statement "{\n            *(int *)((int)pvVar11 + 0x18) =\n                 (*(int *)((int)pvVar11 + 0x18) - *(int *)((int)pvVar11 + 0x1c)) + iVar15;\n          }" { (expression_statement "*(int *)((int)pvVar11 + 0x18) =\n                 (*(int *)((int)pvVar11 + 0x18) - *(int *)((int)pvVar11 + 0x1c)) + iVar15;" (assignment_expression "*(int *)((int)pvVar11 + 0x18) =\n                 (*(int *)((int)pvVar11 + 0x18) - *(int *)((int)pvVar11 + 0x1c)) + iVar15" (pointer_expression "*(int *)((int)pvVar11 + 0x18)" * (cast_expression "(int *)((int)pvVar11 + 0x18)" ( (type_descriptor "int *" primitive_type (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) )))) = (binary_expression "(*(int *)((int)pvVar11 + 0x18) - *(int *)((int)pvVar11 + 0x1c)) + iVar15" (parenthesized_expression "(*(int *)((int)pvVar11 + 0x18) - *(int *)((int)pvVar11 + 0x1c))" ( (binary_expression "*(int *)((int)pvVar11 + 0x18) - *(int *)((int)pvVar11 + 0x1c)" (pointer_expression "*(int *)((int)pvVar11 + 0x18)" * (cast_expression "(int *)((int)pvVar11 + 0x18)" ( (type_descriptor "int *" primitive_type (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 "*(int *)((int)pvVar11 + 0x1c)" * (cast_expression "(int *)((int)pvVar11 + 0x1c)" ( (type_descriptor "int *" primitive_type (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) ))))) )) + identifier)) ;) })) (expression_statement "pvVar1 = *(void **)((int)pvVar11 + 8);" (assignment_expression "pvVar1 = *(void **)((int)pvVar11 + 8)" identifier = (pointer_expression "*(void **)((int)pvVar11 + 8)" * (cast_expression "(void **)((int)pvVar11 + 8)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (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) ))))) ;) (expression_statement "*(int *)((int)pvVar11 + 0x1c) = iVar15;" (assignment_expression "*(int *)((int)pvVar11 + 0x1c) = iVar15" (pointer_expression "*(int *)((int)pvVar11 + 0x1c)" * (cast_expression "(int *)((int)pvVar11 + 0x1c)" ( (type_descriptor "int *" primitive_type (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) )))) = identifier) ;) (if_statement "if (pvVar1 == (void *)0x0) break;" if (parenthesized_expression "(pvVar1 == (void *)0x0)" ( (binary_expression "pvVar1 == (void *)0x0" identifier == (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (break_statement "break;" break ;)) (expression_statement "pvVar11 = pvVar1;" (assignment_expression "pvVar11 = pvVar1" identifier = identifier) ;) (if_statement "if (*(int *)((int)pvVar1 + 0x30) < 0) goto LAB_000256e9;" if (parenthesized_expression "(*(int *)((int)pvVar1 + 0x30) < 0)" ( (binary_expression "*(int *)((int)pvVar1 + 0x30) < 0" (pointer_expression "*(int *)((int)pvVar1 + 0x30)" * (cast_expression "(int *)((int)pvVar1 + 0x30)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pvVar1 + 0x30)" ( (binary_expression "(int)pvVar1 + 0x30" (cast_expression "(int)pvVar1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) < number_literal) )) (goto_statement "goto LAB_000256e9;" goto statement_identifier ;)) })) (expression_statement "pvVar11 = *(void **)((int)pvVar11 + 4);" (assignment_expression "pvVar11 = *(void **)((int)pvVar11 + 4)" identifier = (pointer_expression "*(void **)((int)pvVar11 + 4)" * (cast_expression "(void **)((int)pvVar11 + 4)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (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) ))))) ;) (expression_statement "iVar17 = *(int *)((int)pvVar11 + 0x30);" (assignment_expression "iVar17 = *(int *)((int)pvVar11 + 0x30)" identifier = (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) ))))) ;) })) }))) (labeled_statement "LAB_000256e9:\n    if ((*(byte *)(param_1 + 0xb) & 4) != 0) {\n      if ((param_1[8] == local_d0) || (local_d4 == 0)) {\n        local_a4 = local_a4 + -1;\n      }\n      *local_a4 = 0;\n    }" statement_identifier : (if_statement "if ((*(byte *)(param_1 + 0xb) & 4) != 0) {\n      if ((param_1[8] == local_d0) || (local_d4 == 0)) {\n        local_a4 = local_a4 + -1;\n      }\n      *local_a4 = 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_d0) || (local_d4 == 0)) {\n        local_a4 = local_a4 + -1;\n      }\n      *local_a4 = 0;\n    }" { (if_statement "if ((param_1[8] == local_d0) || (local_d4 == 0)) {\n        local_a4 = local_a4 + -1;\n      }" if (parenthesized_expression "((param_1[8] == local_d0) || (local_d4 == 0))" ( (binary_expression "(param_1[8] == local_d0) || (local_d4 == 0)" (parenthesized_expression "(param_1[8] == local_d0)" ( (binary_expression "param_1[8] == local_d0" (subscript_expression "param_1[8]" identifier [ number_literal ]) == identifier) )) || (parenthesized_expression "(local_d4 == 0)" ( (binary_expression "local_d4 == 0" identifier == number_literal) ))) )) (compound_statement "{\n        local_a4 = local_a4 + -1;\n      }" { (expression_statement "local_a4 = local_a4 + -1;" (assignment_expression "local_a4 = local_a4 + -1" identifier = (binary_expression "local_a4 + -1" identifier + number_literal)) ;) })) (expression_statement "*local_a4 = 0;" (assignment_expression "*local_a4 = 0" (pointer_expression "*local_a4" * identifier) = number_literal) ;) }))) (if_statement "if ((pDVar21 == (DIR *)0x0) && (bVar25)) {\n      if ((param_2 == 1) || (local_d4 == 0)) {\n        if (*(int *)(iVar2 + 0x30) == 0) {\n          iVar15 = FUN_00024bb0();\n        }\n        else {\n          iVar15 = FUN_00024e60(&DAT_0002e141);\n        }\n        if (iVar15 != 0) {\n          *(undefined2 *)(iVar2 + 0x3c) = 7;\n          param_1[0xb] = param_1[0xb] | 0x4000;\n          while (pvVar11 = local_b8, local_b8 != (void *)0x0) {\n            while( true ) {\n              local_b8 = *(void **)((int)pvVar11 + 8);\n              if (*(DIR **)((int)pvVar11 + 0xc) == (DIR *)0x0) break;\n              closedir(*(DIR **)((int)pvVar11 + 0xc));\n              free(pvVar11);\n              pvVar11 = local_b8;\n              if (local_b8 == (void *)0x0) goto LAB_00025c40;\n            }\n            free(pvVar11);\n          }\n          goto LAB_00025c40;\n        }\n        goto LAB_0002574d;\n      }\n    }\n    else {\nLAB_0002574d:\n      if (local_d4 == 0) {\n        if (((param_2 == 3) && (*(short *)(iVar2 + 0x3c) != 4)) && (*(short *)(iVar2 + 0x3c) != 7))\n        {\n          *(undefined2 *)(iVar2 + 0x3c) = 6;\n        }\n        if (local_b8 != (void *)0x0) {\n          pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n          pvVar11 = *(void **)((int)local_b8 + 8);\n          if (pDVar21 == (DIR *)0x0) goto LAB_00025c94;\n          do {\n            closedir(pDVar21);\n            free(local_b8);\n            local_b8 = pvVar11;\n            while( true ) {\n              if (local_b8 == (void *)0x0) goto LAB_00025c40;\n              pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n              pvVar11 = *(void **)((int)local_b8 + 8);\n              if (pDVar21 != (DIR *)0x0) break;\nLAB_00025c94:\n              free(local_b8);\n              local_b8 = pvVar11;\n            }\n          } while( true );\n        }\n        goto LAB_00025c40;\n      }\n    }" if (parenthesized_expression "((pDVar21 == (DIR *)0x0) && (bVar25))" ( (binary_expression "(pDVar21 == (DIR *)0x0) && (bVar25)" (parenthesized_expression "(pDVar21 == (DIR *)0x0)" ( (binary_expression "pDVar21 == (DIR *)0x0" identifier == (cast_expression "(DIR *)0x0" ( (type_descriptor "DIR *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(bVar25)" ( identifier ))) )) (compound_statement "{\n      if ((param_2 == 1) || (local_d4 == 0)) {\n        if (*(int *)(iVar2 + 0x30) == 0) {\n          iVar15 = FUN_00024bb0();\n        }\n        else {\n          iVar15 = FUN_00024e60(&DAT_0002e141);\n        }\n        if (iVar15 != 0) {\n          *(undefined2 *)(iVar2 + 0x3c) = 7;\n          param_1[0xb] = param_1[0xb] | 0x4000;\n          while (pvVar11 = local_b8, local_b8 != (void *)0x0) {\n            while( true ) {\n              local_b8 = *(void **)((int)pvVar11 + 8);\n              if (*(DIR **)((int)pvVar11 + 0xc) == (DIR *)0x0) break;\n              closedir(*(DIR **)((int)pvVar11 + 0xc));\n              free(pvVar11);\n              pvVar11 = local_b8;\n              if (local_b8 == (void *)0x0) goto LAB_00025c40;\n            }\n            free(pvVar11);\n          }\n          goto LAB_00025c40;\n        }\n        goto LAB_0002574d;\n      }\n    }" { (if_statement "if ((param_2 == 1) || (local_d4 == 0)) {\n        if (*(int *)(iVar2 + 0x30) == 0) {\n          iVar15 = FUN_00024bb0();\n        }\n        else {\n          iVar15 = FUN_00024e60(&DAT_0002e141);\n        }\n        if (iVar15 != 0) {\n          *(undefined2 *)(iVar2 + 0x3c) = 7;\n          param_1[0xb] = param_1[0xb] | 0x4000;\n          while (pvVar11 = local_b8, local_b8 != (void *)0x0) {\n            while( true ) {\n              local_b8 = *(void **)((int)pvVar11 + 8);\n              if (*(DIR **)((int)pvVar11 + 0xc) == (DIR *)0x0) break;\n              closedir(*(DIR **)((int)pvVar11 + 0xc));\n              free(pvVar11);\n              pvVar11 = local_b8;\n              if (local_b8 == (void *)0x0) goto LAB_00025c40;\n            }\n            free(pvVar11);\n          }\n          goto LAB_00025c40;\n        }\n        goto LAB_0002574d;\n      }" if (parenthesized_expression "((param_2 == 1) || (local_d4 == 0))" ( (binary_expression "(param_2 == 1) || (local_d4 == 0)" (parenthesized_expression "(param_2 == 1)" ( (binary_expression "param_2 == 1" identifier == number_literal) )) || (parenthesized_expression "(local_d4 == 0)" ( (binary_expression "local_d4 == 0" identifier == number_literal) ))) )) (compound_statement "{\n        if (*(int *)(iVar2 + 0x30) == 0) {\n          iVar15 = FUN_00024bb0();\n        }\n        else {\n          iVar15 = FUN_00024e60(&DAT_0002e141);\n        }\n        if (iVar15 != 0) {\n          *(undefined2 *)(iVar2 + 0x3c) = 7;\n          param_1[0xb] = param_1[0xb] | 0x4000;\n          while (pvVar11 = local_b8, local_b8 != (void *)0x0) {\n            while( true ) {\n              local_b8 = *(void **)((int)pvVar11 + 8);\n              if (*(DIR **)((int)pvVar11 + 0xc) == (DIR *)0x0) break;\n              closedir(*(DIR **)((int)pvVar11 + 0xc));\n              free(pvVar11);\n              pvVar11 = local_b8;\n              if (local_b8 == (void *)0x0) goto LAB_00025c40;\n            }\n            free(pvVar11);\n          }\n          goto LAB_00025c40;\n        }\n        goto LAB_0002574d;\n      }" { (if_statement "if (*(int *)(iVar2 + 0x30) == 0) {\n          iVar15 = FUN_00024bb0();\n        }\n        else {\n          iVar15 = FUN_00024e60(&DAT_0002e141);\n        }" if (parenthesized_expression "(*(int *)(iVar2 + 0x30) == 0)" ( (binary_expression "*(int *)(iVar2 + 0x30) == 0" (pointer_expression "*(int *)(iVar2 + 0x30)" * (cast_expression "(int *)(iVar2 + 0x30)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x30)" ( (binary_expression "iVar2 + 0x30" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n          iVar15 = FUN_00024bb0();\n        }" { (expression_statement "iVar15 = FUN_00024bb0();" (assignment_expression "iVar15 = FUN_00024bb0()" identifier = (call_expression "FUN_00024bb0()" identifier (argument_list "()" ( )))) ;) }) (else_clause "else {\n          iVar15 = FUN_00024e60(&DAT_0002e141);\n        }" else (compound_statement "{\n          iVar15 = FUN_00024e60(&DAT_0002e141);\n        }" { (expression_statement "iVar15 = FUN_00024e60(&DAT_0002e141);" (assignment_expression "iVar15 = FUN_00024e60(&DAT_0002e141)" identifier = (call_expression "FUN_00024e60(&DAT_0002e141)" identifier (argument_list "(&DAT_0002e141)" ( (pointer_expression "&DAT_0002e141" & identifier) )))) ;) }))) (if_statement "if (iVar15 != 0) {\n          *(undefined2 *)(iVar2 + 0x3c) = 7;\n          param_1[0xb] = param_1[0xb] | 0x4000;\n          while (pvVar11 = local_b8, local_b8 != (void *)0x0) {\n            while( true ) {\n              local_b8 = *(void **)((int)pvVar11 + 8);\n              if (*(DIR **)((int)pvVar11 + 0xc) == (DIR *)0x0) break;\n              closedir(*(DIR **)((int)pvVar11 + 0xc));\n              free(pvVar11);\n              pvVar11 = local_b8;\n              if (local_b8 == (void *)0x0) goto LAB_00025c40;\n            }\n            free(pvVar11);\n          }\n          goto LAB_00025c40;\n        }" if (parenthesized_expression "(iVar15 != 0)" ( (binary_expression "iVar15 != 0" identifier != number_literal) )) (compound_statement "{\n          *(undefined2 *)(iVar2 + 0x3c) = 7;\n          param_1[0xb] = param_1[0xb] | 0x4000;\n          while (pvVar11 = local_b8, local_b8 != (void *)0x0) {\n            while( true ) {\n              local_b8 = *(void **)((int)pvVar11 + 8);\n              if (*(DIR **)((int)pvVar11 + 0xc) == (DIR *)0x0) break;\n              closedir(*(DIR **)((int)pvVar11 + 0xc));\n              free(pvVar11);\n              pvVar11 = local_b8;\n              if (local_b8 == (void *)0x0) goto LAB_00025c40;\n            }\n            free(pvVar11);\n          }\n          goto LAB_00025c40;\n        }" { (expression_statement "*(undefined2 *)(iVar2 + 0x3c) = 7;" (assignment_expression "*(undefined2 *)(iVar2 + 0x3c) = 7" (pointer_expression "*(undefined2 *)(iVar2 + 0x3c)" * (cast_expression "(undefined2 *)(iVar2 + 0x3c)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x3c)" ( (binary_expression "iVar2 + 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)) ;) (while_statement "while (pvVar11 = local_b8, local_b8 != (void *)0x0) {\n            while( true ) {\n              local_b8 = *(void **)((int)pvVar11 + 8);\n              if (*(DIR **)((int)pvVar11 + 0xc) == (DIR *)0x0) break;\n              closedir(*(DIR **)((int)pvVar11 + 0xc));\n              free(pvVar11);\n              pvVar11 = local_b8;\n              if (local_b8 == (void *)0x0) goto LAB_00025c40;\n            }\n            free(pvVar11);\n          }" while (parenthesized_expression "(pvVar11 = local_b8, local_b8 != (void *)0x0)" ( (comma_expression "pvVar11 = local_b8, local_b8 != (void *)0x0" (assignment_expression "pvVar11 = local_b8" identifier = identifier) , (binary_expression "local_b8 != (void *)0x0" identifier != (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal))) )) (compound_statement "{\n            while( true ) {\n              local_b8 = *(void **)((int)pvVar11 + 8);\n              if (*(DIR **)((int)pvVar11 + 0xc) == (DIR *)0x0) break;\n              closedir(*(DIR **)((int)pvVar11 + 0xc));\n              free(pvVar11);\n              pvVar11 = local_b8;\n              if (local_b8 == (void *)0x0) goto LAB_00025c40;\n            }\n            free(pvVar11);\n          }" { (while_statement "while( true ) {\n              local_b8 = *(void **)((int)pvVar11 + 8);\n              if (*(DIR **)((int)pvVar11 + 0xc) == (DIR *)0x0) break;\n              closedir(*(DIR **)((int)pvVar11 + 0xc));\n              free(pvVar11);\n              pvVar11 = local_b8;\n              if (local_b8 == (void *)0x0) goto LAB_00025c40;\n            }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n              local_b8 = *(void **)((int)pvVar11 + 8);\n              if (*(DIR **)((int)pvVar11 + 0xc) == (DIR *)0x0) break;\n              closedir(*(DIR **)((int)pvVar11 + 0xc));\n              free(pvVar11);\n              pvVar11 = local_b8;\n              if (local_b8 == (void *)0x0) goto LAB_00025c40;\n            }" { (expression_statement "local_b8 = *(void **)((int)pvVar11 + 8);" (assignment_expression "local_b8 = *(void **)((int)pvVar11 + 8)" identifier = (pointer_expression "*(void **)((int)pvVar11 + 8)" * (cast_expression "(void **)((int)pvVar11 + 8)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (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) ))))) ;) (if_statement "if (*(DIR **)((int)pvVar11 + 0xc) == (DIR *)0x0) break;" if (parenthesized_expression "(*(DIR **)((int)pvVar11 + 0xc) == (DIR *)0x0)" ( (binary_expression "*(DIR **)((int)pvVar11 + 0xc) == (DIR *)0x0" (pointer_expression "*(DIR **)((int)pvVar11 + 0xc)" * (cast_expression "(DIR **)((int)pvVar11 + 0xc)" ( (type_descriptor "DIR **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)pvVar11 + 0xc)" ( (binary_expression "(int)pvVar11 + 0xc" (cast_expression "(int)pvVar11" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) == (cast_expression "(DIR *)0x0" ( (type_descriptor "DIR *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (break_statement "break;" break ;)) (expression_statement "closedir(*(DIR **)((int)pvVar11 + 0xc));" (call_expression "closedir(*(DIR **)((int)pvVar11 + 0xc))" identifier (argument_list "(*(DIR **)((int)pvVar11 + 0xc))" ( (pointer_expression "*(DIR **)((int)pvVar11 + 0xc)" * (cast_expression "(DIR **)((int)pvVar11 + 0xc)" ( (type_descriptor "DIR **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)pvVar11 + 0xc)" ( (binary_expression "(int)pvVar11 + 0xc" (cast_expression "(int)pvVar11" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ))) ;) (expression_statement "free(pvVar11);" (call_expression "free(pvVar11)" identifier (argument_list "(pvVar11)" ( identifier ))) ;) (expression_statement "pvVar11 = local_b8;" (assignment_expression "pvVar11 = local_b8" identifier = identifier) ;) (if_statement "if (local_b8 == (void *)0x0) goto LAB_00025c40;" if (parenthesized_expression "(local_b8 == (void *)0x0)" ( (binary_expression "local_b8 == (void *)0x0" identifier == (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00025c40;" goto statement_identifier ;)) })) (expression_statement "free(pvVar11);" (call_expression "free(pvVar11)" identifier (argument_list "(pvVar11)" ( identifier ))) ;) })) (goto_statement "goto LAB_00025c40;" goto statement_identifier ;) })) (goto_statement "goto LAB_0002574d;" goto statement_identifier ;) })) }) (else_clause "else {\nLAB_0002574d:\n      if (local_d4 == 0) {\n        if (((param_2 == 3) && (*(short *)(iVar2 + 0x3c) != 4)) && (*(short *)(iVar2 + 0x3c) != 7))\n        {\n          *(undefined2 *)(iVar2 + 0x3c) = 6;\n        }\n        if (local_b8 != (void *)0x0) {\n          pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n          pvVar11 = *(void **)((int)local_b8 + 8);\n          if (pDVar21 == (DIR *)0x0) goto LAB_00025c94;\n          do {\n            closedir(pDVar21);\n            free(local_b8);\n            local_b8 = pvVar11;\n            while( true ) {\n              if (local_b8 == (void *)0x0) goto LAB_00025c40;\n              pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n              pvVar11 = *(void **)((int)local_b8 + 8);\n              if (pDVar21 != (DIR *)0x0) break;\nLAB_00025c94:\n              free(local_b8);\n              local_b8 = pvVar11;\n            }\n          } while( true );\n        }\n        goto LAB_00025c40;\n      }\n    }" else (compound_statement "{\nLAB_0002574d:\n      if (local_d4 == 0) {\n        if (((param_2 == 3) && (*(short *)(iVar2 + 0x3c) != 4)) && (*(short *)(iVar2 + 0x3c) != 7))\n        {\n          *(undefined2 *)(iVar2 + 0x3c) = 6;\n        }\n        if (local_b8 != (void *)0x0) {\n          pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n          pvVar11 = *(void **)((int)local_b8 + 8);\n          if (pDVar21 == (DIR *)0x0) goto LAB_00025c94;\n          do {\n            closedir(pDVar21);\n            free(local_b8);\n            local_b8 = pvVar11;\n            while( true ) {\n              if (local_b8 == (void *)0x0) goto LAB_00025c40;\n              pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n              pvVar11 = *(void **)((int)local_b8 + 8);\n              if (pDVar21 != (DIR *)0x0) break;\nLAB_00025c94:\n              free(local_b8);\n              local_b8 = pvVar11;\n            }\n          } while( true );\n        }\n        goto LAB_00025c40;\n      }\n    }" { (labeled_statement "LAB_0002574d:\n      if (local_d4 == 0) {\n        if (((param_2 == 3) && (*(short *)(iVar2 + 0x3c) != 4)) && (*(short *)(iVar2 + 0x3c) != 7))\n        {\n          *(undefined2 *)(iVar2 + 0x3c) = 6;\n        }\n        if (local_b8 != (void *)0x0) {\n          pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n          pvVar11 = *(void **)((int)local_b8 + 8);\n          if (pDVar21 == (DIR *)0x0) goto LAB_00025c94;\n          do {\n            closedir(pDVar21);\n            free(local_b8);\n            local_b8 = pvVar11;\n            while( true ) {\n              if (local_b8 == (void *)0x0) goto LAB_00025c40;\n              pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n              pvVar11 = *(void **)((int)local_b8 + 8);\n              if (pDVar21 != (DIR *)0x0) break;\nLAB_00025c94:\n              free(local_b8);\n              local_b8 = pvVar11;\n            }\n          } while( true );\n        }\n        goto LAB_00025c40;\n      }" statement_identifier : (if_statement "if (local_d4 == 0) {\n        if (((param_2 == 3) && (*(short *)(iVar2 + 0x3c) != 4)) && (*(short *)(iVar2 + 0x3c) != 7))\n        {\n          *(undefined2 *)(iVar2 + 0x3c) = 6;\n        }\n        if (local_b8 != (void *)0x0) {\n          pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n          pvVar11 = *(void **)((int)local_b8 + 8);\n          if (pDVar21 == (DIR *)0x0) goto LAB_00025c94;\n          do {\n            closedir(pDVar21);\n            free(local_b8);\n            local_b8 = pvVar11;\n            while( true ) {\n              if (local_b8 == (void *)0x0) goto LAB_00025c40;\n              pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n              pvVar11 = *(void **)((int)local_b8 + 8);\n              if (pDVar21 != (DIR *)0x0) break;\nLAB_00025c94:\n              free(local_b8);\n              local_b8 = pvVar11;\n            }\n          } while( true );\n        }\n        goto LAB_00025c40;\n      }" if (parenthesized_expression "(local_d4 == 0)" ( (binary_expression "local_d4 == 0" identifier == number_literal) )) (compound_statement "{\n        if (((param_2 == 3) && (*(short *)(iVar2 + 0x3c) != 4)) && (*(short *)(iVar2 + 0x3c) != 7))\n        {\n          *(undefined2 *)(iVar2 + 0x3c) = 6;\n        }\n        if (local_b8 != (void *)0x0) {\n          pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n          pvVar11 = *(void **)((int)local_b8 + 8);\n          if (pDVar21 == (DIR *)0x0) goto LAB_00025c94;\n          do {\n            closedir(pDVar21);\n            free(local_b8);\n            local_b8 = pvVar11;\n            while( true ) {\n              if (local_b8 == (void *)0x0) goto LAB_00025c40;\n              pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n              pvVar11 = *(void **)((int)local_b8 + 8);\n              if (pDVar21 != (DIR *)0x0) break;\nLAB_00025c94:\n              free(local_b8);\n              local_b8 = pvVar11;\n            }\n          } while( true );\n        }\n        goto LAB_00025c40;\n      }" { (if_statement "if (((param_2 == 3) && (*(short *)(iVar2 + 0x3c) != 4)) && (*(short *)(iVar2 + 0x3c) != 7))\n        {\n          *(undefined2 *)(iVar2 + 0x3c) = 6;\n        }" if (parenthesized_expression "(((param_2 == 3) && (*(short *)(iVar2 + 0x3c) != 4)) && (*(short *)(iVar2 + 0x3c) != 7))" ( (binary_expression "((param_2 == 3) && (*(short *)(iVar2 + 0x3c) != 4)) && (*(short *)(iVar2 + 0x3c) != 7)" (parenthesized_expression "((param_2 == 3) && (*(short *)(iVar2 + 0x3c) != 4))" ( (binary_expression "(param_2 == 3) && (*(short *)(iVar2 + 0x3c) != 4)" (parenthesized_expression "(param_2 == 3)" ( (binary_expression "param_2 == 3" identifier == number_literal) )) && (parenthesized_expression "(*(short *)(iVar2 + 0x3c) != 4)" ( (binary_expression "*(short *)(iVar2 + 0x3c) != 4" (pointer_expression "*(short *)(iVar2 + 0x3c)" * (cast_expression "(short *)(iVar2 + 0x3c)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x3c)" ( (binary_expression "iVar2 + 0x3c" identifier + number_literal) )))) != number_literal) ))) )) && (parenthesized_expression "(*(short *)(iVar2 + 0x3c) != 7)" ( (binary_expression "*(short *)(iVar2 + 0x3c) != 7" (pointer_expression "*(short *)(iVar2 + 0x3c)" * (cast_expression "(short *)(iVar2 + 0x3c)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x3c)" ( (binary_expression "iVar2 + 0x3c" identifier + number_literal) )))) != number_literal) ))) )) (compound_statement "{\n          *(undefined2 *)(iVar2 + 0x3c) = 6;\n        }" { (expression_statement "*(undefined2 *)(iVar2 + 0x3c) = 6;" (assignment_expression "*(undefined2 *)(iVar2 + 0x3c) = 6" (pointer_expression "*(undefined2 *)(iVar2 + 0x3c)" * (cast_expression "(undefined2 *)(iVar2 + 0x3c)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x3c)" ( (binary_expression "iVar2 + 0x3c" identifier + number_literal) )))) = number_literal) ;) })) (if_statement "if (local_b8 != (void *)0x0) {\n          pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n          pvVar11 = *(void **)((int)local_b8 + 8);\n          if (pDVar21 == (DIR *)0x0) goto LAB_00025c94;\n          do {\n            closedir(pDVar21);\n            free(local_b8);\n            local_b8 = pvVar11;\n            while( true ) {\n              if (local_b8 == (void *)0x0) goto LAB_00025c40;\n              pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n              pvVar11 = *(void **)((int)local_b8 + 8);\n              if (pDVar21 != (DIR *)0x0) break;\nLAB_00025c94:\n              free(local_b8);\n              local_b8 = pvVar11;\n            }\n          } while( true );\n        }" if (parenthesized_expression "(local_b8 != (void *)0x0)" ( (binary_expression "local_b8 != (void *)0x0" identifier != (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n          pvVar11 = *(void **)((int)local_b8 + 8);\n          if (pDVar21 == (DIR *)0x0) goto LAB_00025c94;\n          do {\n            closedir(pDVar21);\n            free(local_b8);\n            local_b8 = pvVar11;\n            while( true ) {\n              if (local_b8 == (void *)0x0) goto LAB_00025c40;\n              pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n              pvVar11 = *(void **)((int)local_b8 + 8);\n              if (pDVar21 != (DIR *)0x0) break;\nLAB_00025c94:\n              free(local_b8);\n              local_b8 = pvVar11;\n            }\n          } while( true );\n        }" { (expression_statement "pDVar21 = *(DIR **)((int)local_b8 + 0xc);" (assignment_expression "pDVar21 = *(DIR **)((int)local_b8 + 0xc)" identifier = (pointer_expression "*(DIR **)((int)local_b8 + 0xc)" * (cast_expression "(DIR **)((int)local_b8 + 0xc)" ( (type_descriptor "DIR **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)local_b8 + 0xc)" ( (binary_expression "(int)local_b8 + 0xc" (cast_expression "(int)local_b8" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "pvVar11 = *(void **)((int)local_b8 + 8);" (assignment_expression "pvVar11 = *(void **)((int)local_b8 + 8)" identifier = (pointer_expression "*(void **)((int)local_b8 + 8)" * (cast_expression "(void **)((int)local_b8 + 8)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)local_b8 + 8)" ( (binary_expression "(int)local_b8 + 8" (cast_expression "(int)local_b8" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (if_statement "if (pDVar21 == (DIR *)0x0) goto LAB_00025c94;" if (parenthesized_expression "(pDVar21 == (DIR *)0x0)" ( (binary_expression "pDVar21 == (DIR *)0x0" identifier == (cast_expression "(DIR *)0x0" ( (type_descriptor "DIR *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00025c94;" goto statement_identifier ;)) (do_statement "do {\n            closedir(pDVar21);\n            free(local_b8);\n            local_b8 = pvVar11;\n            while( true ) {\n              if (local_b8 == (void *)0x0) goto LAB_00025c40;\n              pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n              pvVar11 = *(void **)((int)local_b8 + 8);\n              if (pDVar21 != (DIR *)0x0) break;\nLAB_00025c94:\n              free(local_b8);\n              local_b8 = pvVar11;\n            }\n          } while( true );" do (compound_statement "{\n            closedir(pDVar21);\n            free(local_b8);\n            local_b8 = pvVar11;\n            while( true ) {\n              if (local_b8 == (void *)0x0) goto LAB_00025c40;\n              pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n              pvVar11 = *(void **)((int)local_b8 + 8);\n              if (pDVar21 != (DIR *)0x0) break;\nLAB_00025c94:\n              free(local_b8);\n              local_b8 = pvVar11;\n            }\n          }" { (expression_statement "closedir(pDVar21);" (call_expression "closedir(pDVar21)" identifier (argument_list "(pDVar21)" ( identifier ))) ;) (expression_statement "free(local_b8);" (call_expression "free(local_b8)" identifier (argument_list "(local_b8)" ( identifier ))) ;) (expression_statement "local_b8 = pvVar11;" (assignment_expression "local_b8 = pvVar11" identifier = identifier) ;) (while_statement "while( true ) {\n              if (local_b8 == (void *)0x0) goto LAB_00025c40;\n              pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n              pvVar11 = *(void **)((int)local_b8 + 8);\n              if (pDVar21 != (DIR *)0x0) break;\nLAB_00025c94:\n              free(local_b8);\n              local_b8 = pvVar11;\n            }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n              if (local_b8 == (void *)0x0) goto LAB_00025c40;\n              pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n              pvVar11 = *(void **)((int)local_b8 + 8);\n              if (pDVar21 != (DIR *)0x0) break;\nLAB_00025c94:\n              free(local_b8);\n              local_b8 = pvVar11;\n            }" { (if_statement "if (local_b8 == (void *)0x0) goto LAB_00025c40;" if (parenthesized_expression "(local_b8 == (void *)0x0)" ( (binary_expression "local_b8 == (void *)0x0" identifier == (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00025c40;" goto statement_identifier ;)) (expression_statement "pDVar21 = *(DIR **)((int)local_b8 + 0xc);" (assignment_expression "pDVar21 = *(DIR **)((int)local_b8 + 0xc)" identifier = (pointer_expression "*(DIR **)((int)local_b8 + 0xc)" * (cast_expression "(DIR **)((int)local_b8 + 0xc)" ( (type_descriptor "DIR **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)local_b8 + 0xc)" ( (binary_expression "(int)local_b8 + 0xc" (cast_expression "(int)local_b8" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "pvVar11 = *(void **)((int)local_b8 + 8);" (assignment_expression "pvVar11 = *(void **)((int)local_b8 + 8)" identifier = (pointer_expression "*(void **)((int)local_b8 + 8)" * (cast_expression "(void **)((int)local_b8 + 8)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)local_b8 + 8)" ( (binary_expression "(int)local_b8 + 8" (cast_expression "(int)local_b8" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (if_statement "if (pDVar21 != (DIR *)0x0) break;" if (parenthesized_expression "(pDVar21 != (DIR *)0x0)" ( (binary_expression "pDVar21 != (DIR *)0x0" identifier != (cast_expression "(DIR *)0x0" ( (type_descriptor "DIR *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (break_statement "break;" break ;)) (labeled_statement "LAB_00025c94:\n              free(local_b8);" statement_identifier : (expression_statement "free(local_b8);" (call_expression "free(local_b8)" identifier (argument_list "(local_b8)" ( identifier ))) ;)) (expression_statement "local_b8 = pvVar11;" (assignment_expression "local_b8 = pvVar11" identifier = identifier) ;) })) }) while (parenthesized_expression "( true )" ( true )) ;) })) (goto_statement "goto LAB_00025c40;" goto statement_identifier ;) }))) }))) (if_statement "if (bVar4) {\n      param_1[10] = (int)FUN_00024700;\n      local_b8 = (void *)FUN_000248e0();\n      param_1[10] = 0;\n    }\n    else if ((param_1[10] != 0) && (local_d4 != 1)) {\n      local_b8 = (void *)FUN_000248e0();\n    }" if (parenthesized_expression "(bVar4)" ( identifier )) (compound_statement "{\n      param_1[10] = (int)FUN_00024700;\n      local_b8 = (void *)FUN_000248e0();\n      param_1[10] = 0;\n    }" { (expression_statement "param_1[10] = (int)FUN_00024700;" (assignment_expression "param_1[10] = (int)FUN_00024700" (subscript_expression "param_1[10]" identifier [ number_literal ]) = (cast_expression "(int)FUN_00024700" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "local_b8 = (void *)FUN_000248e0();" (assignment_expression "local_b8 = (void *)FUN_000248e0()" identifier = (cast_expression "(void *)FUN_000248e0()" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_000248e0()" 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) ;) }) (else_clause "else if ((param_1[10] != 0) && (local_d4 != 1)) {\n      local_b8 = (void *)FUN_000248e0();\n    }" else (if_statement "if ((param_1[10] != 0) && (local_d4 != 1)) {\n      local_b8 = (void *)FUN_000248e0();\n    }" if (parenthesized_expression "((param_1[10] != 0) && (local_d4 != 1))" ( (binary_expression "(param_1[10] != 0) && (local_d4 != 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_d4 != 1)" ( (binary_expression "local_d4 != 1" identifier != number_literal) ))) )) (compound_statement "{\n      local_b8 = (void *)FUN_000248e0();\n    }" { (expression_statement "local_b8 = (void *)FUN_000248e0();" (assignment_expression "local_b8 = (void *)FUN_000248e0()" identifier = (cast_expression "(void *)FUN_000248e0()" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_000248e0()" identifier (argument_list "()" ( ))))) ;) })))) }))) (labeled_statement "LAB_0002563f:\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return local_b8;\n  }" statement_identifier : (if_statement "if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return local_b8;\n  }" if (parenthesized_expression "(local_20 == *(int *)(in_GS_OFFSET + 0x14))" ( (binary_expression "local_20 == *(int *)(in_GS_OFFSET + 0x14)" identifier == (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) )) (compound_statement "{\n    return local_b8;\n  }" { (return_statement "return local_b8;" return identifier ;) }))) comment (expression_statement "FUN_0002d5d0();" (call_expression "FUN_0002d5d0()" identifier (argument_list "()" ( ))) ;) })))
(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  int iVar1;\n  size_t sVar2;\n  char *pcVar3;\n  FTS *pFVar4;\n  _ftsent *p_Var5;\n  bool bVar6;\n  bool bVar7;\n  __ino64_t _Var8;\n  __dev_t _Var9;\n  undefined *data_freer;\n  __fsword_t _Var10;\n  FTSENT *pFVar11;\n  _Bool _Var12;\n  ushort uVar13;\n  int *piVar14;\n  dirent64 *pdVar15;\n  size_t __n;\n  FTSENT *p;\n  undefined4 uVar16;\n  uint uVar17;\n  char *pcVar18;\n  int iVar19;\n  DIR *pDVar20;\n  void *pvVar21;\n  hash_table *table;\n  int iVar22;\n  undefined4 *entry;\n  undefined4 *puVar23;\n  leaf_optimization lVar24;\n  _ftsent *p_Var25;\n  DIR *pDVar26;\n  DIR *pDVar27;\n  size_t sVar28;\n  uint uVar29;\n  FTSENT *pFVar30;\n  int in_GS_OFFSET;\n  bool bVar31;\n  uint local_d4;\n  uint local_d0;\n  FTSENT *local_c4;\n  FTSENT *local_b8;\n  uint local_b0;\n  uint local_a8;\n  char *local_a4;\n  int local_9c;\n  dev_type tmp;\n  statfs fs_buf;\n  \n  iVar1 = *(int *)(in_GS_OFFSET + 0x14);\n  pFVar30 = sp->fts_cur;\n  pDVar26 = (DIR *)pFVar30->fts_dirp;\n  if (pDVar26 == (DIR *)0x0) {\n    uVar17 = sp->fts_options;\n    uVar29 = uVar17 & 0x10;\n    if (((uVar29 != 0) && (uVar29 = 0x20000, (uVar17 & 1) != 0)) &&\n       (uVar29 = pFVar30->fts_level, uVar29 != 0)) {\n      uVar29 = 0x20000;\n    }\n    iVar19 = -100;\n    if ((uVar17 & 0x204) == 0x200) {\n      iVar19 = sp->fts_cwd_fd;\n    }\n    local_9c = openat_safer(iVar19,pFVar30->fts_accpath,(uVar17 & 0x800) << 7 | uVar29 | 0x90900);\n    if (local_9c < 0) {\n      pFVar30->fts_dirp = (DIR *)0x0;\n    }\n    else {\n      pDVar20 = fdopendir(local_9c);\n      if (pDVar20 != (DIR *)0x0) {\n        pFVar30->fts_dirp = (DIR *)pDVar20;\n        if (pFVar30->fts_info == 0xb) {\n          uVar13 = fts_stat(sp,pFVar30,false);\n          pFVar30->fts_info = uVar13;\n        }\n        else if (((uint)sp->fts_options & 0x100) != 0) {\n          leave_dir((FTS *)sp->fts_options,(FTSENT *)&sp->fts_cycle,(FTS *)pFVar30);\n          fts_stat(sp,pFVar30,false);\n          _Var12 = enter_dir((FTS *)sp->fts_options,(FTSENT *)&sp->fts_cycle,(FTS *)pFVar30);\n          if (!_Var12) {\n            piVar14 = __errno_location();\n            local_b8 = (FTSENT *)0x0;\n            *piVar14 = 0xc;\n            goto LAB_0002563f;\n          }\n        }\n        local_a8 = (-(uint)(sp->fts_compar == (_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *)0x0) &\n                   0x186a1) - 1;\n        if (type == 2) {\nLAB_00025bc8:\n          bVar31 = false;\n          uVar17 = sp->fts_options;\n          goto LAB_00025223;\n        }\n        if ((((sp->fts_options & 0x38U) == 0x18) && (pFVar30->fts_statp[0].st_nlink == 2)) &&\n           (lVar24 = leaf_optimization(pFVar30,local_9c), lVar24 != NO_LEAF_OPTIMIZATION)) {\n          if (type != 3) goto LAB_00025bc8;\n          bVar31 = false;\n        }\n        else {\n          bVar31 = type == 3;\n        }\n        if (((sp->fts_options & 0x200) == 0) ||\n           (local_9c = rpl_fcntl(local_9c,0x406,3), -1 < local_9c)) {\n          iVar19 = fts_safe_changedir(sp,pFVar30,local_9c,(char *)0x0);\n          if (iVar19 == 0) goto LAB_0002521b;\n          pDVar27 = pFVar30->fts_dirp;\n          uVar13 = pFVar30->fts_flags | 1;\n          if (bVar31) goto LAB_000258a0;\nLAB_000258ae:\n          pFVar30->fts_flags = uVar13;\n          closedir((DIR *)pDVar27);\n          pFVar30->fts_dirp = (DIR *)0x0;\n          uVar17 = sp->fts_options;\n          if (((uVar17 & 0x200) != 0) && (-1 < local_9c)) {\n            close(local_9c);\n            uVar17 = sp->fts_options;\n          }\n        }\n        else {\n          pDVar27 = pFVar30->fts_dirp;\n          uVar13 = pFVar30->fts_flags | 1;\n          if (bVar31) {\nLAB_000258a0:\n            piVar14 = __errno_location();\n            pFVar30->fts_errno = *piVar14;\n            goto LAB_000258ae;\n          }\n          pFVar30->fts_flags = uVar13;\n          closedir((DIR *)pDVar27);\n          uVar17 = sp->fts_options;\n        }\n        bVar31 = false;\n        pFVar30->fts_dirp = (DIR *)0x0;\n        goto LAB_00025223;\n      }\n      piVar14 = __errno_location();\n      iVar19 = *piVar14;\n      close(local_9c);\n      *piVar14 = iVar19;\n      pFVar30->fts_dirp = (DIR *)0x0;\n    }\njoined_r0x00025c30:\n    if (type == 3) {\n      pFVar30->fts_info = 4;\n      piVar14 = __errno_location();\n      pFVar30->fts_errno = *piVar14;\n    }\nLAB_00025c40:\n    local_b8 = (FTSENT *)0x0;\n  }\n  else {\n    local_9c = dirfd(pDVar26);\n    if (local_9c < 0) {\n      closedir((DIR *)pFVar30->fts_dirp);\n      pFVar30->fts_dirp = (DIR *)0x0;\n      goto joined_r0x00025c30;\n    }\n    if (sp->fts_compar == (_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *)0x0) {\n      local_a8 = 100000;\n      uVar17 = sp->fts_options;\n      bVar31 = true;\n    }\n    else {\n      local_a8 = 0xffffffff;\nLAB_0002521b:\n      bVar31 = true;\n      uVar17 = sp->fts_options;\n    }\nLAB_00025223:\n    sVar2 = pFVar30->fts_pathlen;\n    sVar28 = sVar2 - 1;\n    local_d0 = sVar2;\n    if (pFVar30->fts_path[sVar2 - 1] != '/') {\n      local_d0 = sVar2 + 1;\n      sVar28 = sVar2;\n    }\n    local_a4 = (char *)0x0;\n    if ((uVar17 & 4) != 0) {\n      local_a4 = sp->fts_path + sVar28 + 1;\n      sp->fts_path[sVar28] = '/';\n    }\n    data_freer = PTR_free_0003afa8;\n    local_b0 = sp->fts_pathlen - local_d0;\n    bVar7 = false;\n    bVar6 = false;\n    iVar19 = pFVar30->fts_level;\n    local_c4 = (FTSENT *)0x0;\n    local_d4 = 0;\n    local_b8 = (FTSENT *)0x0;\nLAB_000252fb:\n    do {\n      do {\n        pDVar20 = (DIR *)pFVar30->fts_dirp;\n        if (pDVar20 == (DIR *)0x0) goto LAB_000256de;\n        piVar14 = __errno_location();\n        *piVar14 = 0;\n        pdVar15 = readdir64(pDVar20);\n        if (pdVar15 == (dirent64 *)0x0) {\n          if (*piVar14 != 0) {\n            pFVar30->fts_errno = *piVar14;\n            pFVar30->fts_info = (-(ushort)(pDVar26 == (DIR *)0x0 && local_d4 == 0) & 0xfffd) + 7;\n          }\n          if ((DIR *)pFVar30->fts_dirp != (DIR *)0x0) {\n            closedir((DIR *)pFVar30->fts_dirp);\n            pFVar30->fts_dirp = (DIR *)0x0;\n          }\n          goto LAB_000256de;\n        }\n      } while ((((sp->fts_options & 0x20) == 0) && (pdVar15->d_name[0] == '.')) &&\n              ((pdVar15->d_name[1] == '\0' || (*(short *)(pdVar15->d_name + 1) == 0x2e))));\n      __n = strlen(pdVar15->d_name);\n      p = (FTSENT *)malloc(__n + 0xa8 & 0xfffffffc);\n      if (p == (FTSENT *)0x0) {\n        iVar19 = *piVar14;\nLAB_000255a6:\n        free(p);\n        if (local_b8 != (FTSENT *)0x0) {\n          pDVar27 = local_b8->fts_dirp;\n          p_Var25 = local_b8->fts_link;\n          if (pDVar27 == (DIR *)0x0) goto LAB_000255f4;\n          do {\n            closedir((DIR *)pDVar27);\n            free(local_b8);\n            local_b8 = p_Var25;\n            while( true ) {\n              if (local_b8 == (FTSENT *)0x0) goto LAB_00025608;\n              pDVar27 = local_b8->fts_dirp;\n              p_Var25 = local_b8->fts_link;\n              if (pDVar27 != (DIR *)0x0) break;\nLAB_000255f4:\n              free(local_b8);\n              local_b8 = p_Var25;\n            }\n          } while( true );\n        }\nLAB_00025608:\n        closedir((DIR *)pFVar30->fts_dirp);\n        pFVar30->fts_dirp = (DIR *)0x0;\n        pFVar30->fts_info = 7;\n        local_b8 = (FTSENT *)0x0;\n        sp->fts_options = sp->fts_options | 0x4000;\n        *piVar14 = iVar19;\n        goto LAB_0002563f;\n      }\n      pFVar11 = p + 1;\n      memcpy(pFVar11,pdVar15->d_name,__n);\n      pcVar3 = sp->fts_path;\n      *(undefined1 *)((int)p[1].fts_statp + (__n - 0x44)) = 0;\n      p->fts_namelen = __n;\n      p->fts_fts = sp;\n      p->fts_path = pcVar3;\n      p->fts_errno = 0;\n      p->fts_dirp = (DIR *)0x0;\n      p->fts_flags = 0;\n      p->fts_instr = 3;\n      p->fts_number = 0;\n      p->fts_pointer = (void *)0x0;\n      if (local_b0 <= __n) {\n        uVar17 = local_d0 + 0x101 + sp->fts_pathlen + __n;\n        if (uVar17 < sp->fts_pathlen) {\n          iVar19 = 0x24;\n          free(pcVar3);\n          sp->fts_path = (char *)0x0;\n          *piVar14 = 0x24;\n        }\n        else {\n          sp->fts_pathlen = uVar17;\n          pcVar18 = (char *)realloc(pcVar3,uVar17);\n          if (pcVar18 != (char *)0x0) {\n            sp->fts_path = pcVar18;\n            if ((pcVar3 != pcVar18) && (bVar6 = true, (sp->fts_options & 4) != 0)) {\n              local_a4 = pcVar18 + local_d0;\n            }\n            local_b0 = sp->fts_pathlen - local_d0;\n            goto LAB_000253d8;\n          }\n          free(sp->fts_path);\n          sp->fts_path = (char *)0x0;\n          iVar19 = *piVar14;\n        }\n        goto LAB_000255a6;\n      }\nLAB_000253d8:\n      if (CARRY4(__n,local_d0)) {\n        free(p);\n        if (local_b8 != (FTSENT *)0x0) {\n          pDVar27 = local_b8->fts_dirp;\n          p_Var25 = local_b8->fts_link;\n          if (pDVar27 == (DIR *)0x0) goto LAB_00025e84;\n          do {\n            closedir((DIR *)pDVar27);\n            free(local_b8);\n            local_b8 = p_Var25;\n            while( true ) {\n              if (local_b8 == (FTSENT *)0x0) goto LAB_00025e94;\n              pDVar27 = local_b8->fts_dirp;\n              p_Var25 = local_b8->fts_link;\n              if (pDVar27 != (DIR *)0x0) break;\nLAB_00025e84:\n              free(local_b8);\n              local_b8 = p_Var25;\n            }\n          } while( true );\n        }\nLAB_00025e94:\n        closedir((DIR *)pFVar30->fts_dirp);\n        pFVar30->fts_dirp = (DIR *)0x0;\n        pFVar30->fts_info = 7;\n        local_b8 = (FTSENT *)0x0;\n        sp->fts_options = sp->fts_options | 0x4000;\n        *piVar14 = 0x24;\n        goto LAB_0002563f;\n      }\n      uVar16 = *(undefined4 *)((int)&pdVar15->d_ino + 4);\n      p->fts_pathlen = __n + local_d0;\n      p->fts_level = iVar19 + 1;\n      p->fts_parent = sp->fts_cur;\n      _Var8 = pdVar15->d_ino;\n      *(undefined4 *)((int)&p->fts_statp[0].st_ino + 4) = uVar16;\n      *(int *)&p->fts_statp[0].st_ino = (int)_Var8;\n      uVar17 = sp->fts_options;\n      if ((uVar17 & 4) == 0) {\n        p->fts_accpath = (char *)pFVar11;\n      }\n      else {\n        p->fts_accpath = p->fts_path;\n        memmove(local_a4,pFVar11,p->fts_namelen + 1);\n        uVar17 = sp->fts_options;\n      }\n      if ((sp->fts_compar == (_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *)0x0) ||\n         ((uVar17 & 0x400) != 0)) {\n        uVar29 = pdVar15->d_type - 1;\n        if (((uVar17 & 0x18) == 0x18) && ((pdVar15->d_type & 0xfb) != 0)) {\n          p->fts_info = 0xb;\n          if (uVar29 < 0xc) {\n            p->fts_statp[0].st_mode = *(__mode_t *)(CSWTCH_40 + uVar29 * 4);\n            uVar16 = 1;\n          }\n          else {\n            p->fts_statp[0].st_mode = 0;\n            uVar16 = 1;\n          }\n        }\n        else {\n          p->fts_info = 0xb;\n          if (uVar29 < 0xc) {\n            p->fts_statp[0].st_mode = *(__mode_t *)(CSWTCH_40 + uVar29 * 4);\n            uVar16 = 2;\n          }\n          else {\n            p->fts_statp[0].st_mode = 0;\n            uVar16 = 2;\n          }\n        }\n        *(undefined4 *)&p->fts_statp[0].st_size = uVar16;\n        *(undefined4 *)((int)&p->fts_statp[0].st_size + 4) = 0;\n      }\n      else {\n        uVar13 = fts_stat(sp,p,false);\n        p->fts_info = uVar13;\n      }\n      p->fts_link = (_ftsent *)0x0;\n      pFVar11 = p;\n      if (local_b8 != (FTSENT *)0x0) {\n        local_c4->fts_link = p;\n        pFVar11 = local_b8;\n      }\n      local_b8 = pFVar11;\n      local_c4 = p;\n      if (local_d4 == 10000) {\n        if (sp->fts_compar == (_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *)0x0) {\n          pFVar4 = pFVar30->fts_fts;\n          if ((pFVar4->fts_options & 0x200) != 0) {\n            table = pFVar4->fts_leaf_optimization_works_ht;\n            if (table == (hash_table *)0x0) {\n              table = hash_initialize(0xd,(Hash_tuning *)0x0,dev_type_hash,dev_type_compare,\n                                      (Hash_data_freer)data_freer);\n              pFVar4->fts_leaf_optimization_works_ht = table;\n              if (table != (Hash_table *)0x0) goto LAB_00025920;\nLAB_000259b0:\n              if ((local_9c < 0) ||\n                 (iVar22 = fstatfs64(local_9c,(statfs64 *)&fs_buf), _Var10 = fs_buf.f_type,\n                 iVar22 != 0)) goto LAB_00025a48;\n              local_d4 = fs_buf.f_type;\n              if ((table != (Hash_table *)0x0) &&\n                 (entry = (undefined4 *)malloc(0xc), entry != (undefined4 *)0x0)) {\n                _Var9 = pFVar30->fts_statp[0].st_dev;\n                entry[1] = *(undefined4 *)((int)&pFVar30->fts_statp[0].st_dev + 4);\n                *entry = (int)_Var9;\n                entry[2] = _Var10;\n                puVar23 = (undefined4 *)hash_insert(table,entry);\n                if (puVar23 == (undefined4 *)0x0) {\n                  free(entry);\n                  local_d4 = fs_buf.f_type;\n                }\n                else {\n                  if (entry != puVar23) {\n                    /* WARNING: Subroutine does not return */\n                    abort();\n                  }\n                  local_d4 = fs_buf.f_type;\n                }\n              }\n            }\n            else {\nLAB_00025920:\n              tmp.st_dev._4_4_ = *(undefined4 *)((int)&pFVar30->fts_statp[0].st_dev + 4);\n              tmp.st_dev._0_4_ = (undefined4)pFVar30->fts_statp[0].st_dev;\n              pvVar21 = hash_lookup(table,&tmp);\n              if (pvVar21 == (void *)0x0) goto LAB_000259b0;\n              local_d4 = *(int *)((int)pvVar21 + 8);\n            }\n            if (((local_d4 == 0x6969) || (local_d4 == 0x1021994)) || (local_d4 == -0xacb2be)) {\n              bVar7 = false;\n              goto LAB_00025473;\n            }\n          }\nLAB_00025a48:\n          bVar7 = true;\n        }\nLAB_00025473:\n        local_d4 = 0x2711;\n        goto LAB_000252fb;\n      }\n      local_d4 = local_d4 + 1;\n    } while (local_d4 < local_a8);\nLAB_000256de:\n    if (bVar6) {\n      pcVar3 = sp->fts_path;\n      for (p_Var25 = sp->fts_child; p_Var25 != (_ftsent *)0x0; p_Var25 = p_Var25->fts_link) {\n        while ((_ftsent *)p_Var25->fts_accpath != p_Var25 + 1) {\n          pcVar18 = p_Var25->fts_path;\n          p_Var25->fts_path = pcVar3;\n          p_Var25->fts_accpath = pcVar3 + ((int)p_Var25->fts_accpath - (int)pcVar18);\n          p_Var25 = p_Var25->fts_link;\n          if (p_Var25 == (_ftsent *)0x0) goto LAB_00025aef;\n        }\n        p_Var25->fts_path = pcVar3;\n      }\nLAB_00025aef:\n      iVar19 = local_b8->fts_level;\n      p_Var25 = local_b8;\n      while (-1 < iVar19) {\n        while( true ) {\n          if ((FTSENT *)p_Var25->fts_accpath != p_Var25 + 1) {\n            p_Var25->fts_accpath = pcVar3 + ((int)p_Var25->fts_accpath - (int)p_Var25->fts_path);\n          }\n          p_Var5 = p_Var25->fts_link;\n          p_Var25->fts_path = pcVar3;\n          if (p_Var5 == (_ftsent *)0x0) break;\n          p_Var25 = p_Var5;\n          if (p_Var5->fts_level < 0) goto LAB_000256e9;\n        }\n        p_Var25 = p_Var25->fts_parent;\n        iVar19 = p_Var25->fts_level;\n      }\n    }\nLAB_000256e9:\n    if ((sp->fts_options & 4) != 0) {\n      if ((sp->fts_pathlen == local_d0) || (local_d4 == 0)) {\n        local_a4 = local_a4 + -1;\n      }\n      *local_a4 = '\0';\n    }\n    if ((pDVar26 == (DIR *)0x0) && (bVar31)) {\n      if ((type == 1) || (local_d4 == 0)) {\n        if (pFVar30->fts_level == 0) {\n          iVar19 = restore_initial_cwd(sp);\n        }\n        else {\n          iVar19 = fts_safe_changedir(sp,pFVar30->fts_parent,-1,"..");\n        }\n        if (iVar19 != 0) {\n          pFVar30->fts_info = 7;\n          sp->fts_options = sp->fts_options | 0x4000;\n          while (pFVar30 = local_b8, local_b8 != (FTSENT *)0x0) {\n            while( true ) {\n              local_b8 = pFVar30->fts_link;\n              if ((DIR *)pFVar30->fts_dirp == (DIR *)0x0) break;\n              closedir((DIR *)pFVar30->fts_dirp);\n              free(pFVar30);\n              pFVar30 = local_b8;\n              if (local_b8 == (_ftsent *)0x0) goto LAB_00025c40;\n            }\n            free(pFVar30);\n          }\n          goto LAB_00025c40;\n        }\n        goto LAB_0002574d;\n      }\n    }\n    else {\nLAB_0002574d:\n      if (local_d4 == 0) {\n        if (((type == 3) && (pFVar30->fts_info != 4)) && (pFVar30->fts_info != 7)) {\n          pFVar30->fts_info = 6;\n        }\n        if (local_b8 != (FTSENT *)0x0) {\n          pDVar26 = (DIR *)local_b8->fts_dirp;\n          p_Var25 = local_b8->fts_link;\n          if (pDVar26 == (DIR *)0x0) goto LAB_00025c94;\n          do {\n            closedir(pDVar26);\n            free(local_b8);\n            local_b8 = p_Var25;\n            while( true ) {\n              if (local_b8 == (FTSENT *)0x0) goto LAB_00025c40;\n              pDVar26 = (DIR *)local_b8->fts_dirp;\n              p_Var25 = local_b8->fts_link;\n              if (pDVar26 != (DIR *)0x0) break;\nLAB_00025c94:\n              free(local_b8);\n              local_b8 = p_Var25;\n            }\n          } while( true );\n        }\n        goto LAB_00025c40;\n      }\n    }\n    if (bVar7) {\n      sp->fts_compar = fts_compare_ino;\n      local_b8 = fts_sort(sp,local_b8,local_d4);\n      sp->fts_compar = (_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *)0x0;\n    }\n    else if ((sp->fts_compar != (_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *)0x0) && (local_d4 != 1)\n            ) {\n      local_b8 = fts_sort(sp,local_b8,local_d4);\n    }\n  }\nLAB_0002563f:\n  if (iVar1 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return local_b8;\n  }\n                    /* WARNING: Subroutine does not return */\n  __stack_chk_fail_local();\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  int iVar1;\n  size_t sVar2;\n  char *pcVar3;\n  FTS *pFVar4;\n  _ftsent *p_Var5;\n  bool bVar6;\n  bool bVar7;\n  __ino64_t _Var8;\n  __dev_t _Var9;\n  undefined *data_freer;\n  __fsword_t _Var10;\n  FTSENT *pFVar11;\n  _Bool _Var12;\n  ushort uVar13;\n  int *piVar14;\n  dirent64 *pdVar15;\n  size_t __n;\n  FTSENT *p;\n  undefined4 uVar16;\n  uint uVar17;\n  char *pcVar18;\n  int iVar19;\n  DIR *pDVar20;\n  void *pvVar21;\n  hash_table *table;\n  int iVar22;\n  undefined4 *entry;\n  undefined4 *puVar23;\n  leaf_optimization lVar24;\n  _ftsent *p_Var25;\n  DIR *pDVar26;\n  DIR *pDVar27;\n  size_t sVar28;\n  uint uVar29;\n  FTSENT *pFVar30;\n  int in_GS_OFFSET;\n  bool bVar31;\n  uint local_d4;\n  uint local_d0;\n  FTSENT *local_c4;\n  FTSENT *local_b8;\n  uint local_b0;\n  uint local_a8;\n  char *local_a4;\n  int local_9c;\n  dev_type tmp;\n  statfs fs_buf;\n  \n  iVar1 = *(int *)(in_GS_OFFSET + 0x14);\n  pFVar30 = sp->fts_cur;\n  pDVar26 = (DIR *)pFVar30->fts_dirp;\n  if (pDVar26 == (DIR *)0x0) {\n    uVar17 = sp->fts_options;\n    uVar29 = uVar17 & 0x10;\n    if (((uVar29 != 0) && (uVar29 = 0x20000, (uVar17 & 1) != 0)) &&\n       (uVar29 = pFVar30->fts_level, uVar29 != 0)) {\n      uVar29 = 0x20000;\n    }\n    iVar19 = -100;\n    if ((uVar17 & 0x204) == 0x200) {\n      iVar19 = sp->fts_cwd_fd;\n    }\n    local_9c = openat_safer(iVar19,pFVar30->fts_accpath,(uVar17 & 0x800) << 7 | uVar29 | 0x90900);\n    if (local_9c < 0) {\n      pFVar30->fts_dirp = (DIR *)0x0;\n    }\n    else {\n      pDVar20 = fdopendir(local_9c);\n      if (pDVar20 != (DIR *)0x0) {\n        pFVar30->fts_dirp = (DIR *)pDVar20;\n        if (pFVar30->fts_info == 0xb) {\n          uVar13 = fts_stat(sp,pFVar30,false);\n          pFVar30->fts_info = uVar13;\n        }\n        else if (((uint)sp->fts_options & 0x100) != 0) {\n          leave_dir((FTS *)sp->fts_options,(FTSENT *)&sp->fts_cycle,(FTS *)pFVar30);\n          fts_stat(sp,pFVar30,false);\n          _Var12 = enter_dir((FTS *)sp->fts_options,(FTSENT *)&sp->fts_cycle,(FTS *)pFVar30);\n          if (!_Var12) {\n            piVar14 = __errno_location();\n            local_b8 = (FTSENT *)0x0;\n            *piVar14 = 0xc;\n            goto LAB_0002563f;\n          }\n        }\n        local_a8 = (-(uint)(sp->fts_compar == (_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *)0x0) &\n                   0x186a1) - 1;\n        if (type == 2) {\nLAB_00025bc8:\n          bVar31 = false;\n          uVar17 = sp->fts_options;\n          goto LAB_00025223;\n        }\n        if ((((sp->fts_options & 0x38U) == 0x18) && (pFVar30->fts_statp[0].st_nlink == 2)) &&\n           (lVar24 = leaf_optimization(pFVar30,local_9c), lVar24 != NO_LEAF_OPTIMIZATION)) {\n          if (type != 3) goto LAB_00025bc8;\n          bVar31 = false;\n        }\n        else {\n          bVar31 = type == 3;\n        }\n        if (((sp->fts_options & 0x200) == 0) ||\n           (local_9c = rpl_fcntl(local_9c,0x406,3), -1 < local_9c)) {\n          iVar19 = fts_safe_changedir(sp,pFVar30,local_9c,(char *)0x0);\n          if (iVar19 == 0) goto LAB_0002521b;\n          pDVar27 = pFVar30->fts_dirp;\n          uVar13 = pFVar30->fts_flags | 1;\n          if (bVar31) goto LAB_000258a0;\nLAB_000258ae:\n          pFVar30->fts_flags = uVar13;\n          closedir((DIR *)pDVar27);\n          pFVar30->fts_dirp = (DIR *)0x0;\n          uVar17 = sp->fts_options;\n          if (((uVar17 & 0x200) != 0) && (-1 < local_9c)) {\n            close(local_9c);\n            uVar17 = sp->fts_options;\n          }\n        }\n        else {\n          pDVar27 = pFVar30->fts_dirp;\n          uVar13 = pFVar30->fts_flags | 1;\n          if (bVar31) {\nLAB_000258a0:\n            piVar14 = __errno_location();\n            pFVar30->fts_errno = *piVar14;\n            goto LAB_000258ae;\n          }\n          pFVar30->fts_flags = uVar13;\n          closedir((DIR *)pDVar27);\n          uVar17 = sp->fts_options;\n        }\n        bVar31 = false;\n        pFVar30->fts_dirp = (DIR *)0x0;\n        goto LAB_00025223;\n      }\n      piVar14 = __errno_location();\n      iVar19 = *piVar14;\n      close(local_9c);\n      *piVar14 = iVar19;\n      pFVar30->fts_dirp = (DIR *)0x0;\n    }\njoined_r0x00025c30:\n    if (type == 3) {\n      pFVar30->fts_info = 4;\n      piVar14 = __errno_location();\n      pFVar30->fts_errno = *piVar14;\n    }\nLAB_00025c40:\n    local_b8 = (FTSENT *)0x0;\n  }\n  else {\n    local_9c = dirfd(pDVar26);\n    if (local_9c < 0) {\n      closedir((DIR *)pFVar30->fts_dirp);\n      pFVar30->fts_dirp = (DIR *)0x0;\n      goto joined_r0x00025c30;\n    }\n    if (sp->fts_compar == (_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *)0x0) {\n      local_a8 = 100000;\n      uVar17 = sp->fts_options;\n      bVar31 = true;\n    }\n    else {\n      local_a8 = 0xffffffff;\nLAB_0002521b:\n      bVar31 = true;\n      uVar17 = sp->fts_options;\n    }\nLAB_00025223:\n    sVar2 = pFVar30->fts_pathlen;\n    sVar28 = sVar2 - 1;\n    local_d0 = sVar2;\n    if (pFVar30->fts_path[sVar2 - 1] != '/') {\n      local_d0 = sVar2 + 1;\n      sVar28 = sVar2;\n    }\n    local_a4 = (char *)0x0;\n    if ((uVar17 & 4) != 0) {\n      local_a4 = sp->fts_path + sVar28 + 1;\n      sp->fts_path[sVar28] = '/';\n    }\n    data_freer = PTR_free_0003afa8;\n    local_b0 = sp->fts_pathlen - local_d0;\n    bVar7 = false;\n    bVar6 = false;\n    iVar19 = pFVar30->fts_level;\n    local_c4 = (FTSENT *)0x0;\n    local_d4 = 0;\n    local_b8 = (FTSENT *)0x0;\nLAB_000252fb:\n    do {\n      do {\n        pDVar20 = (DIR *)pFVar30->fts_dirp;\n        if (pDVar20 == (DIR *)0x0) goto LAB_000256de;\n        piVar14 = __errno_location();\n        *piVar14 = 0;\n        pdVar15 = readdir64(pDVar20);\n        if (pdVar15 == (dirent64 *)0x0) {\n          if (*piVar14 != 0) {\n            pFVar30->fts_errno = *piVar14;\n            pFVar30->fts_info = (-(ushort)(pDVar26 == (DIR *)0x0 && local_d4 == 0) & 0xfffd) + 7;\n          }\n          if ((DIR *)pFVar30->fts_dirp != (DIR *)0x0) {\n            closedir((DIR *)pFVar30->fts_dirp);\n            pFVar30->fts_dirp = (DIR *)0x0;\n          }\n          goto LAB_000256de;\n        }\n      } while ((((sp->fts_options & 0x20) == 0) && (pdVar15->d_name[0] == '.')) &&\n              ((pdVar15->d_name[1] == '\0' || (*(short *)(pdVar15->d_name + 1) == 0x2e))));\n      __n = strlen(pdVar15->d_name);\n      p = (FTSENT *)malloc(__n + 0xa8 & 0xfffffffc);\n      if (p == (FTSENT *)0x0) {\n        iVar19 = *piVar14;\nLAB_000255a6:\n        free(p);\n        if (local_b8 != (FTSENT *)0x0) {\n          pDVar27 = local_b8->fts_dirp;\n          p_Var25 = local_b8->fts_link;\n          if (pDVar27 == (DIR *)0x0) goto LAB_000255f4;\n          do {\n            closedir((DIR *)pDVar27);\n            free(local_b8);\n            local_b8 = p_Var25;\n            while( true ) {\n              if (local_b8 == (FTSENT *)0x0) goto LAB_00025608;\n              pDVar27 = local_b8->fts_dirp;\n              p_Var25 = local_b8->fts_link;\n              if (pDVar27 != (DIR *)0x0) break;\nLAB_000255f4:\n              free(local_b8);\n              local_b8 = p_Var25;\n            }\n          } while( true );\n        }\nLAB_00025608:\n        closedir((DIR *)pFVar30->fts_dirp);\n        pFVar30->fts_dirp = (DIR *)0x0;\n        pFVar30->fts_info = 7;\n        local_b8 = (FTSENT *)0x0;\n        sp->fts_options = sp->fts_options | 0x4000;\n        *piVar14 = iVar19;\n        goto LAB_0002563f;\n      }\n      pFVar11 = p + 1;\n      memcpy(pFVar11,pdVar15->d_name,__n);\n      pcVar3 = sp->fts_path;\n      *(undefined1 *)((int)p[1].fts_statp + (__n - 0x44)) = 0;\n      p->fts_namelen = __n;\n      p->fts_fts = sp;\n      p->fts_path = pcVar3;\n      p->fts_errno = 0;\n      p->fts_dirp = (DIR *)0x0;\n      p->fts_flags = 0;\n      p->fts_instr = 3;\n      p->fts_number = 0;\n      p->fts_pointer = (void *)0x0;\n      if (local_b0 <= __n) {\n        uVar17 = local_d0 + 0x101 + sp->fts_pathlen + __n;\n        if (uVar17 < sp->fts_pathlen) {\n          iVar19 = 0x24;\n          free(pcVar3);\n          sp->fts_path = (char *)0x0;\n          *piVar14 = 0x24;\n        }\n        else {\n          sp->fts_pathlen = uVar17;\n          pcVar18 = (char *)realloc(pcVar3,uVar17);\n          if (pcVar18 != (char *)0x0) {\n            sp->fts_path = pcVar18;\n            if ((pcVar3 != pcVar18) && (bVar6 = true, (sp->fts_options & 4) != 0)) {\n              local_a4 = pcVar18 + local_d0;\n            }\n            local_b0 = sp->fts_pathlen - local_d0;\n            goto LAB_000253d8;\n          }\n          free(sp->fts_path);\n          sp->fts_path = (char *)0x0;\n          iVar19 = *piVar14;\n        }\n        goto LAB_000255a6;\n      }\nLAB_000253d8:\n      if (CARRY4(__n,local_d0)) {\n        free(p);\n        if (local_b8 != (FTSENT *)0x0) {\n          pDVar27 = local_b8->fts_dirp;\n          p_Var25 = local_b8->fts_link;\n          if (pDVar27 == (DIR *)0x0) goto LAB_00025e84;\n          do {\n            closedir((DIR *)pDVar27);\n            free(local_b8);\n            local_b8 = p_Var25;\n            while( true ) {\n              if (local_b8 == (FTSENT *)0x0) goto LAB_00025e94;\n              pDVar27 = local_b8->fts_dirp;\n              p_Var25 = local_b8->fts_link;\n              if (pDVar27 != (DIR *)0x0) break;\nLAB_00025e84:\n              free(local_b8);\n              local_b8 = p_Var25;\n            }\n          } while( true );\n        }\nLAB_00025e94:\n        closedir((DIR *)pFVar30->fts_dirp);\n        pFVar30->fts_dirp = (DIR *)0x0;\n        pFVar30->fts_info = 7;\n        local_b8 = (FTSENT *)0x0;\n        sp->fts_options = sp->fts_options | 0x4000;\n        *piVar14 = 0x24;\n        goto LAB_0002563f;\n      }\n      uVar16 = *(undefined4 *)((int)&pdVar15->d_ino + 4);\n      p->fts_pathlen = __n + local_d0;\n      p->fts_level = iVar19 + 1;\n      p->fts_parent = sp->fts_cur;\n      _Var8 = pdVar15->d_ino;\n      *(undefined4 *)((int)&p->fts_statp[0].st_ino + 4) = uVar16;\n      *(int *)&p->fts_statp[0].st_ino = (int)_Var8;\n      uVar17 = sp->fts_options;\n      if ((uVar17 & 4) == 0) {\n        p->fts_accpath = (char *)pFVar11;\n      }\n      else {\n        p->fts_accpath = p->fts_path;\n        memmove(local_a4,pFVar11,p->fts_namelen + 1);\n        uVar17 = sp->fts_options;\n      }\n      if ((sp->fts_compar == (_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *)0x0) ||\n         ((uVar17 & 0x400) != 0)) {\n        uVar29 = pdVar15->d_type - 1;\n        if (((uVar17 & 0x18) == 0x18) && ((pdVar15->d_type & 0xfb) != 0)) {\n          p->fts_info = 0xb;\n          if (uVar29 < 0xc) {\n            p->fts_statp[0].st_mode = *(__mode_t *)(CSWTCH_40 + uVar29 * 4);\n            uVar16 = 1;\n          }\n          else {\n            p->fts_statp[0].st_mode = 0;\n            uVar16 = 1;\n          }\n        }\n        else {\n          p->fts_info = 0xb;\n          if (uVar29 < 0xc) {\n            p->fts_statp[0].st_mode = *(__mode_t *)(CSWTCH_40 + uVar29 * 4);\n            uVar16 = 2;\n          }\n          else {\n            p->fts_statp[0].st_mode = 0;\n            uVar16 = 2;\n          }\n        }\n        *(undefined4 *)&p->fts_statp[0].st_size = uVar16;\n        *(undefined4 *)((int)&p->fts_statp[0].st_size + 4) = 0;\n      }\n      else {\n        uVar13 = fts_stat(sp,p,false);\n        p->fts_info = uVar13;\n      }\n      p->fts_link = (_ftsent *)0x0;\n      pFVar11 = p;\n      if (local_b8 != (FTSENT *)0x0) {\n        local_c4->fts_link = p;\n        pFVar11 = local_b8;\n      }\n      local_b8 = pFVar11;\n      local_c4 = p;\n      if (local_d4 == 10000) {\n        if (sp->fts_compar == (_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *)0x0) {\n          pFVar4 = pFVar30->fts_fts;\n          if ((pFVar4->fts_options & 0x200) != 0) {\n            table = pFVar4->fts_leaf_optimization_works_ht;\n            if (table == (hash_table *)0x0) {\n              table = hash_initialize(0xd,(Hash_tuning *)0x0,dev_type_hash,dev_type_compare,\n                                      (Hash_data_freer)data_freer);\n              pFVar4->fts_leaf_optimization_works_ht = table;\n              if (table != (Hash_table *)0x0) goto LAB_00025920;\nLAB_000259b0:\n              if ((local_9c < 0) ||\n                 (iVar22 = fstatfs64(local_9c,(statfs64 *)&fs_buf), _Var10 = fs_buf.f_type,\n                 iVar22 != 0)) goto LAB_00025a48;\n              local_d4 = fs_buf.f_type;\n              if ((table != (Hash_table *)0x0) &&\n                 (entry = (undefined4 *)malloc(0xc), entry != (undefined4 *)0x0)) {\n                _Var9 = pFVar30->fts_statp[0].st_dev;\n                entry[1] = *(undefined4 *)((int)&pFVar30->fts_statp[0].st_dev + 4);\n                *entry = (int)_Var9;\n                entry[2] = _Var10;\n                puVar23 = (undefined4 *)hash_insert(table,entry);\n                if (puVar23 == (undefined4 *)0x0) {\n                  free(entry);\n                  local_d4 = fs_buf.f_type;\n                }\n                else {\n                  if (entry != puVar23) {\n                    /* WARNING: Subroutine does not return */\n                    abort();\n                  }\n                  local_d4 = fs_buf.f_type;\n                }\n              }\n            }\n            else {\nLAB_00025920:\n              tmp.st_dev._4_4_ = *(undefined4 *)((int)&pFVar30->fts_statp[0].st_dev + 4);\n              tmp.st_dev._0_4_ = (undefined4)pFVar30->fts_statp[0].st_dev;\n              pvVar21 = hash_lookup(table,&tmp);\n              if (pvVar21 == (void *)0x0) goto LAB_000259b0;\n              local_d4 = *(int *)((int)pvVar21 + 8);\n            }\n            if (((local_d4 == 0x6969) || (local_d4 == 0x1021994)) || (local_d4 == -0xacb2be)) {\n              bVar7 = false;\n              goto LAB_00025473;\n            }\n          }\nLAB_00025a48:\n          bVar7 = true;\n        }\nLAB_00025473:\n        local_d4 = 0x2711;\n        goto LAB_000252fb;\n      }\n      local_d4 = local_d4 + 1;\n    } while (local_d4 < local_a8);\nLAB_000256de:\n    if (bVar6) {\n      pcVar3 = sp->fts_path;\n      for (p_Var25 = sp->fts_child; p_Var25 != (_ftsent *)0x0; p_Var25 = p_Var25->fts_link) {\n        while ((_ftsent *)p_Var25->fts_accpath != p_Var25 + 1) {\n          pcVar18 = p_Var25->fts_path;\n          p_Var25->fts_path = pcVar3;\n          p_Var25->fts_accpath = pcVar3 + ((int)p_Var25->fts_accpath - (int)pcVar18);\n          p_Var25 = p_Var25->fts_link;\n          if (p_Var25 == (_ftsent *)0x0) goto LAB_00025aef;\n        }\n        p_Var25->fts_path = pcVar3;\n      }\nLAB_00025aef:\n      iVar19 = local_b8->fts_level;\n      p_Var25 = local_b8;\n      while (-1 < iVar19) {\n        while( true ) {\n          if ((FTSENT *)p_Var25->fts_accpath != p_Var25 + 1) {\n            p_Var25->fts_accpath = pcVar3 + ((int)p_Var25->fts_accpath - (int)p_Var25->fts_path);\n          }\n          p_Var5 = p_Var25->fts_link;\n          p_Var25->fts_path = pcVar3;\n          if (p_Var5 == (_ftsent *)0x0) break;\n          p_Var25 = p_Var5;\n          if (p_Var5->fts_level < 0) goto LAB_000256e9;\n        }\n        p_Var25 = p_Var25->fts_parent;\n        iVar19 = p_Var25->fts_level;\n      }\n    }\nLAB_000256e9:\n    if ((sp->fts_options & 4) != 0) {\n      if ((sp->fts_pathlen == local_d0) || (local_d4 == 0)) {\n        local_a4 = local_a4 + -1;\n      }\n      *local_a4 = '\0';\n    }\n    if ((pDVar26 == (DIR *)0x0) && (bVar31)) {\n      if ((type == 1) || (local_d4 == 0)) {\n        if (pFVar30->fts_level == 0) {\n          iVar19 = restore_initial_cwd(sp);\n        }\n        else {\n          iVar19 = fts_safe_changedir(sp,pFVar30->fts_parent,-1,"..");\n        }\n        if (iVar19 != 0) {\n          pFVar30->fts_info = 7;\n          sp->fts_options = sp->fts_options | 0x4000;\n          while (pFVar30 = local_b8, local_b8 != (FTSENT *)0x0) {\n            while( true ) {\n              local_b8 = pFVar30->fts_link;\n              if ((DIR *)pFVar30->fts_dirp == (DIR *)0x0) break;\n              closedir((DIR *)pFVar30->fts_dirp);\n              free(pFVar30);\n              pFVar30 = local_b8;\n              if (local_b8 == (_ftsent *)0x0) goto LAB_00025c40;\n            }\n            free(pFVar30);\n          }\n          goto LAB_00025c40;\n        }\n        goto LAB_0002574d;\n      }\n    }\n    else {\nLAB_0002574d:\n      if (local_d4 == 0) {\n        if (((type == 3) && (pFVar30->fts_info != 4)) && (pFVar30->fts_info != 7)) {\n          pFVar30->fts_info = 6;\n        }\n        if (local_b8 != (FTSENT *)0x0) {\n          pDVar26 = (DIR *)local_b8->fts_dirp;\n          p_Var25 = local_b8->fts_link;\n          if (pDVar26 == (DIR *)0x0) goto LAB_00025c94;\n          do {\n            closedir(pDVar26);\n            free(local_b8);\n            local_b8 = p_Var25;\n            while( true ) {\n              if (local_b8 == (FTSENT *)0x0) goto LAB_00025c40;\n              pDVar26 = (DIR *)local_b8->fts_dirp;\n              p_Var25 = local_b8->fts_link;\n              if (pDVar26 != (DIR *)0x0) break;\nLAB_00025c94:\n              free(local_b8);\n              local_b8 = p_Var25;\n            }\n          } while( true );\n        }\n        goto LAB_00025c40;\n      }\n    }\n    if (bVar7) {\n      sp->fts_compar = fts_compare_ino;\n      local_b8 = fts_sort(sp,local_b8,local_d4);\n      sp->fts_compar = (_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *)0x0;\n    }\n    else if ((sp->fts_compar != (_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *)0x0) && (local_d4 != 1)\n            ) {\n      local_b8 = fts_sort(sp,local_b8,local_d4);\n    }\n  }\nLAB_0002563f:\n  if (iVar1 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return local_b8;\n  }\n                    /* WARNING: Subroutine does not return */\n  __stack_chk_fail_local();\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "size_t sVar2;" primitive_type identifier ;) (declaration "char *pcVar3;" primitive_type (pointer_declarator "*pcVar3" * identifier) ;) (declaration "FTS *pFVar4;" type_identifier (pointer_declarator "*pFVar4" * identifier) ;) (declaration "_ftsent *p_Var5;" type_identifier (pointer_declarator "*p_Var5" * identifier) ;) (declaration "bool bVar6;" primitive_type identifier ;) (declaration "bool bVar7;" primitive_type identifier ;) (declaration "__ino64_t _Var8;" type_identifier identifier ;) (declaration "__dev_t _Var9;" type_identifier identifier ;) (declaration "undefined *data_freer;" type_identifier (pointer_declarator "*data_freer" * identifier) ;) (declaration "__fsword_t _Var10;" type_identifier identifier ;) (declaration "FTSENT *pFVar11;" type_identifier (pointer_declarator "*pFVar11" * identifier) ;) (declaration "_Bool _Var12;" type_identifier identifier ;) (declaration "ushort uVar13;" type_identifier identifier ;) (declaration "int *piVar14;" primitive_type (pointer_declarator "*piVar14" * identifier) ;) (declaration "dirent64 *pdVar15;" type_identifier (pointer_declarator "*pdVar15" * identifier) ;) (declaration "size_t __n;" primitive_type identifier ;) (declaration "FTSENT *p;" type_identifier (pointer_declarator "*p" * identifier) ;) (declaration "undefined4 uVar16;" type_identifier identifier ;) (declaration "uint uVar17;" type_identifier identifier ;) (declaration "char *pcVar18;" primitive_type (pointer_declarator "*pcVar18" * identifier) ;) (declaration "int iVar19;" primitive_type identifier ;) (declaration "DIR *pDVar20;" type_identifier (pointer_declarator "*pDVar20" * identifier) ;) (declaration "void *pvVar21;" primitive_type (pointer_declarator "*pvVar21" * identifier) ;) (declaration "hash_table *table;" type_identifier (pointer_declarator "*table" * identifier) ;) (declaration "int iVar22;" primitive_type identifier ;) (declaration "undefined4 *entry;" type_identifier (pointer_declarator "*entry" * identifier) ;) (declaration "undefined4 *puVar23;" type_identifier (pointer_declarator "*puVar23" * identifier) ;) (declaration "leaf_optimization lVar24;" type_identifier identifier ;) (declaration "_ftsent *p_Var25;" type_identifier (pointer_declarator "*p_Var25" * identifier) ;) (declaration "DIR *pDVar26;" type_identifier (pointer_declarator "*pDVar26" * identifier) ;) (declaration "DIR *pDVar27;" type_identifier (pointer_declarator "*pDVar27" * identifier) ;) (declaration "size_t sVar28;" primitive_type identifier ;) (declaration "uint uVar29;" type_identifier identifier ;) (declaration "FTSENT *pFVar30;" type_identifier (pointer_declarator "*pFVar30" * identifier) ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "bool bVar31;" primitive_type identifier ;) (declaration "uint local_d4;" type_identifier identifier ;) (declaration "uint local_d0;" type_identifier identifier ;) (declaration "FTSENT *local_c4;" type_identifier (pointer_declarator "*local_c4" * identifier) ;) (declaration "FTSENT *local_b8;" type_identifier (pointer_declarator "*local_b8" * identifier) ;) (declaration "uint local_b0;" type_identifier identifier ;) (declaration "uint local_a8;" type_identifier identifier ;) (declaration "char *local_a4;" primitive_type (pointer_declarator "*local_a4" * identifier) ;) (declaration "int local_9c;" primitive_type identifier ;) (declaration "dev_type tmp;" type_identifier identifier ;) (declaration "statfs fs_buf;" type_identifier identifier ;) (expression_statement "iVar1 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "iVar1 = *(int *)(in_GS_OFFSET + 0x14)" identifier = (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) ;) (expression_statement "pFVar30 = sp->fts_cur;" (assignment_expression "pFVar30 = sp->fts_cur" identifier = (field_expression "sp->fts_cur" identifier -> field_identifier)) ;) (expression_statement "pDVar26 = (DIR *)pFVar30->fts_dirp;" (assignment_expression "pDVar26 = (DIR *)pFVar30->fts_dirp" identifier = (cast_expression "(DIR *)pFVar30->fts_dirp" ( (type_descriptor "DIR *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "pFVar30->fts_dirp" identifier -> field_identifier))) ;) (if_statement "if (pDVar26 == (DIR *)0x0) {\n    uVar17 = sp->fts_options;\n    uVar29 = uVar17 & 0x10;\n    if (((uVar29 != 0) && (uVar29 = 0x20000, (uVar17 & 1) != 0)) &&\n       (uVar29 = pFVar30->fts_level, uVar29 != 0)) {\n      uVar29 = 0x20000;\n    }\n    iVar19 = -100;\n    if ((uVar17 & 0x204) == 0x200) {\n      iVar19 = sp->fts_cwd_fd;\n    }\n    local_9c = openat_safer(iVar19,pFVar30->fts_accpath,(uVar17 & 0x800) << 7 | uVar29 | 0x90900);\n    if (local_9c < 0) {\n      pFVar30->fts_dirp = (DIR *)0x0;\n    }\n    else {\n      pDVar20 = fdopendir(local_9c);\n      if (pDVar20 != (DIR *)0x0) {\n        pFVar30->fts_dirp = (DIR *)pDVar20;\n        if (pFVar30->fts_info == 0xb) {\n          uVar13 = fts_stat(sp,pFVar30,false);\n          pFVar30->fts_info = uVar13;\n        }\n        else if (((uint)sp->fts_options & 0x100) != 0) {\n          leave_dir((FTS *)sp->fts_options,(FTSENT *)&sp->fts_cycle,(FTS *)pFVar30);\n          fts_stat(sp,pFVar30,false);\n          _Var12 = enter_dir((FTS *)sp->fts_options,(FTSENT *)&sp->fts_cycle,(FTS *)pFVar30);\n          if (!_Var12) {\n            piVar14 = __errno_location();\n            local_b8 = (FTSENT *)0x0;\n            *piVar14 = 0xc;\n            goto LAB_0002563f;\n          }\n        }\n        local_a8 = (-(uint)(sp->fts_compar == (_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *)0x0) &\n                   0x186a1) - 1;\n        if (type == 2) {\nLAB_00025bc8:\n          bVar31 = false;\n          uVar17 = sp->fts_options;\n          goto LAB_00025223;\n        }\n        if ((((sp->fts_options & 0x38U) == 0x18) && (pFVar30->fts_statp[0].st_nlink == 2)) &&\n           (lVar24 = leaf_optimization(pFVar30,local_9c), lVar24 != NO_LEAF_OPTIMIZATION)) {\n          if (type != 3) goto LAB_00025bc8;\n          bVar31 = false;\n        }\n        else {\n          bVar31 = type == 3;\n        }\n        if (((sp->fts_options & 0x200) == 0) ||\n           (local_9c = rpl_fcntl(local_9c,0x406,3), -1 < local_9c)) {\n          iVar19 = fts_safe_changedir(sp,pFVar30,local_9c,(char *)0x0);\n          if (iVar19 == 0) goto LAB_0002521b;\n          pDVar27 = pFVar30->fts_dirp;\n          uVar13 = pFVar30->fts_flags | 1;\n          if (bVar31) goto LAB_000258a0;\nLAB_000258ae:\n          pFVar30->fts_flags = uVar13;\n          closedir((DIR *)pDVar27);\n          pFVar30->fts_dirp = (DIR *)0x0;\n          uVar17 = sp->fts_options;\n          if (((uVar17 & 0x200) != 0) && (-1 < local_9c)) {\n            close(local_9c);\n            uVar17 = sp->fts_options;\n          }\n        }\n        else {\n          pDVar27 = pFVar30->fts_dirp;\n          uVar13 = pFVar30->fts_flags | 1;\n          if (bVar31) {\nLAB_000258a0:\n            piVar14 = __errno_location();\n            pFVar30->fts_errno = *piVar14;\n            goto LAB_000258ae;\n          }\n          pFVar30->fts_flags = uVar13;\n          closedir((DIR *)pDVar27);\n          uVar17 = sp->fts_options;\n        }\n        bVar31 = false;\n        pFVar30->fts_dirp = (DIR *)0x0;\n        goto LAB_00025223;\n      }\n      piVar14 = __errno_location();\n      iVar19 = *piVar14;\n      close(local_9c);\n      *piVar14 = iVar19;\n      pFVar30->fts_dirp = (DIR *)0x0;\n    }\njoined_r0x00025c30:\n    if (type == 3) {\n      pFVar30->fts_info = 4;\n      piVar14 = __errno_location();\n      pFVar30->fts_errno = *piVar14;\n    }\nLAB_00025c40:\n    local_b8 = (FTSENT *)0x0;\n  }\n  else {\n    local_9c = dirfd(pDVar26);\n    if (local_9c < 0) {\n      closedir((DIR *)pFVar30->fts_dirp);\n      pFVar30->fts_dirp = (DIR *)0x0;\n      goto joined_r0x00025c30;\n    }\n    if (sp->fts_compar == (_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *)0x0) {\n      local_a8 = 100000;\n      uVar17 = sp->fts_options;\n      bVar31 = true;\n    }\n    else {\n      local_a8 = 0xffffffff;\nLAB_0002521b:\n      bVar31 = true;\n      uVar17 = sp->fts_options;\n    }\nLAB_00025223:\n    sVar2 = pFVar30->fts_pathlen;\n    sVar28 = sVar2 - 1;\n    local_d0 = sVar2;\n    if (pFVar30->fts_path[sVar2 - 1] != '/') {\n      local_d0 = sVar2 + 1;\n      sVar28 = sVar2;\n    }\n    local_a4 = (char *)0x0;\n    if ((uVar17 & 4) != 0) {\n      local_a4 = sp->fts_path + sVar28 + 1;\n      sp->fts_path[sVar28] = '/';\n    }\n    data_freer = PTR_free_0003afa8;\n    local_b0 = sp->fts_pathlen - local_d0;\n    bVar7 = false;\n    bVar6 = false;\n    iVar19 = pFVar30->fts_level;\n    local_c4 = (FTSENT *)0x0;\n    local_d4 = 0;\n    local_b8 = (FTSENT *)0x0;\nLAB_000252fb:\n    do {\n      do {\n        pDVar20 = (DIR *)pFVar30->fts_dirp;\n        if (pDVar20 == (DIR *)0x0) goto LAB_000256de;\n        piVar14 = __errno_location();\n        *piVar14 = 0;\n        pdVar15 = readdir64(pDVar20);\n        if (pdVar15 == (dirent64 *)0x0) {\n          if (*piVar14 != 0) {\n            pFVar30->fts_errno = *piVar14;\n            pFVar30->fts_info = (-(ushort)(pDVar26 == (DIR *)0x0 && local_d4 == 0) & 0xfffd) + 7;\n          }\n          if ((DIR *)pFVar30->fts_dirp != (DIR *)0x0) {\n            closedir((DIR *)pFVar30->fts_dirp);\n            pFVar30->fts_dirp = (DIR *)0x0;\n          }\n          goto LAB_000256de;\n        }\n      } while ((((sp->fts_options & 0x20) == 0) && (pdVar15->d_name[0] == '.')) &&\n              ((pdVar15->d_name[1] == '\0' || (*(short *)(pdVar15->d_name + 1) == 0x2e))));\n      __n = strlen(pdVar15->d_name);\n      p = (FTSENT *)malloc(__n + 0xa8 & 0xfffffffc);\n      if (p == (FTSENT *)0x0) {\n        iVar19 = *piVar14;\nLAB_000255a6:\n        free(p);\n        if (local_b8 != (FTSENT *)0x0) {\n          pDVar27 = local_b8->fts_dirp;\n          p_Var25 = local_b8->fts_link;\n          if (pDVar27 == (DIR *)0x0) goto LAB_000255f4;\n          do {\n            closedir((DIR *)pDVar27);\n            free(local_b8);\n            local_b8 = p_Var25;\n            while( true ) {\n              if (local_b8 == (FTSENT *)0x0) goto LAB_00025608;\n              pDVar27 = local_b8->fts_dirp;\n              p_Var25 = local_b8->fts_link;\n              if (pDVar27 != (DIR *)0x0) break;\nLAB_000255f4:\n              free(local_b8);\n              local_b8 = p_Var25;\n            }\n          } while( true );\n        }\nLAB_00025608:\n        closedir((DIR *)pFVar30->fts_dirp);\n        pFVar30->fts_dirp = (DIR *)0x0;\n        pFVar30->fts_info = 7;\n        local_b8 = (FTSENT *)0x0;\n        sp->fts_options = sp->fts_options | 0x4000;\n        *piVar14 = iVar19;\n        goto LAB_0002563f;\n      }\n      pFVar11 = p + 1;\n      memcpy(pFVar11,pdVar15->d_name,__n);\n      pcVar3 = sp->fts_path;\n      *(undefined1 *)((int)p[1].fts_statp + (__n - 0x44)) = 0;\n      p->fts_namelen = __n;\n      p->fts_fts = sp;\n      p->fts_path = pcVar3;\n      p->fts_errno = 0;\n      p->fts_dirp = (DIR *)0x0;\n      p->fts_flags = 0;\n      p->fts_instr = 3;\n      p->fts_number = 0;\n      p->fts_pointer = (void *)0x0;\n      if (local_b0 <= __n) {\n        uVar17 = local_d0 + 0x101 + sp->fts_pathlen + __n;\n        if (uVar17 < sp->fts_pathlen) {\n          iVar19 = 0x24;\n          free(pcVar3);\n          sp->fts_path = (char *)0x0;\n          *piVar14 = 0x24;\n        }\n        else {\n          sp->fts_pathlen = uVar17;\n          pcVar18 = (char *)realloc(pcVar3,uVar17);\n          if (pcVar18 != (char *)0x0) {\n            sp->fts_path = pcVar18;\n            if ((pcVar3 != pcVar18) && (bVar6 = true, (sp->fts_options & 4) != 0)) {\n              local_a4 = pcVar18 + local_d0;\n            }\n            local_b0 = sp->fts_pathlen - local_d0;\n            goto LAB_000253d8;\n          }\n          free(sp->fts_path);\n          sp->fts_path = (char *)0x0;\n          iVar19 = *piVar14;\n        }\n        goto LAB_000255a6;\n      }\nLAB_000253d8:\n      if (CARRY4(__n,local_d0)) {\n        free(p);\n        if (local_b8 != (FTSENT *)0x0) {\n          pDVar27 = local_b8->fts_dirp;\n          p_Var25 = local_b8->fts_link;\n          if (pDVar27 == (DIR *)0x0) goto LAB_00025e84;\n          do {\n            closedir((DIR *)pDVar27);\n            free(local_b8);\n            local_b8 = p_Var25;\n            while( true ) {\n              if (local_b8 == (FTSENT *)0x0) goto LAB_00025e94;\n              pDVar27 = local_b8->fts_dirp;\n              p_Var25 = local_b8->fts_link;\n              if (pDVar27 != (DIR *)0x0) break;\nLAB_00025e84:\n              free(local_b8);\n              local_b8 = p_Var25;\n            }\n          } while( true );\n        }\nLAB_00025e94:\n        closedir((DIR *)pFVar30->fts_dirp);\n        pFVar30->fts_dirp = (DIR *)0x0;\n        pFVar30->fts_info = 7;\n        local_b8 = (FTSENT *)0x0;\n        sp->fts_options = sp->fts_options | 0x4000;\n        *piVar14 = 0x24;\n        goto LAB_0002563f;\n      }\n      uVar16 = *(undefined4 *)((int)&pdVar15->d_ino + 4);\n      p->fts_pathlen = __n + local_d0;\n      p->fts_level = iVar19 + 1;\n      p->fts_parent = sp->fts_cur;\n      _Var8 = pdVar15->d_ino;\n      *(undefined4 *)((int)&p->fts_statp[0].st_ino + 4) = uVar16;\n      *(int *)&p->fts_statp[0].st_ino = (int)_Var8;\n      uVar17 = sp->fts_options;\n      if ((uVar17 & 4) == 0) {\n        p->fts_accpath = (char *)pFVar11;\n      }\n      else {\n        p->fts_accpath = p->fts_path;\n        memmove(local_a4,pFVar11,p->fts_namelen + 1);\n        uVar17 = sp->fts_options;\n      }\n      if ((sp->fts_compar == (_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *)0x0) ||\n         ((uVar17 & 0x400) != 0)) {\n        uVar29 = pdVar15->d_type - 1;\n        if (((uVar17 & 0x18) == 0x18) && ((pdVar15->d_type & 0xfb) != 0)) {\n          p->fts_info = 0xb;\n          if (uVar29 < 0xc) {\n            p->fts_statp[0].st_mode = *(__mode_t *)(CSWTCH_40 + uVar29 * 4);\n            uVar16 = 1;\n          }\n          else {\n            p->fts_statp[0].st_mode = 0;\n            uVar16 = 1;\n          }\n        }\n        else {\n          p->fts_info = 0xb;\n          if (uVar29 < 0xc) {\n            p->fts_statp[0].st_mode = *(__mode_t *)(CSWTCH_40 + uVar29 * 4);\n            uVar16 = 2;\n          }\n          else {\n            p->fts_statp[0].st_mode = 0;\n            uVar16 = 2;\n          }\n        }\n        *(undefined4 *)&p->fts_statp[0].st_size = uVar16;\n        *(undefined4 *)((int)&p->fts_statp[0].st_size + 4) = 0;\n      }\n      else {\n        uVar13 = fts_stat(sp,p,false);\n        p->fts_info = uVar13;\n      }\n      p->fts_link = (_ftsent *)0x0;\n      pFVar11 = p;\n      if (local_b8 != (FTSENT *)0x0) {\n        local_c4->fts_link = p;\n        pFVar11 = local_b8;\n      }\n      local_b8 = pFVar11;\n      local_c4 = p;\n      if (local_d4 == 10000) {\n        if (sp->fts_compar == (_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *)0x0) {\n          pFVar4 = pFVar30->fts_fts;\n          if ((pFVar4->fts_options & 0x200) != 0) {\n            table = pFVar4->fts_leaf_optimization_works_ht;\n            if (table == (hash_table *)0x0) {\n              table = hash_initialize(0xd,(Hash_tuning *)0x0,dev_type_hash,dev_type_compare,\n                                      (Hash_data_freer)data_freer);\n              pFVar4->fts_leaf_optimization_works_ht = table;\n              if (table != (Hash_table *)0x0) goto LAB_00025920;\nLAB_000259b0:\n              if ((local_9c < 0) ||\n                 (iVar22 = fstatfs64(local_9c,(statfs64 *)&fs_buf), _Var10 = fs_buf.f_type,\n                 iVar22 != 0)) goto LAB_00025a48;\n              local_d4 = fs_buf.f_type;\n              if ((table != (Hash_table *)0x0) &&\n                 (entry = (undefined4 *)malloc(0xc), entry != (undefined4 *)0x0)) {\n                _Var9 = pFVar30->fts_statp[0].st_dev;\n                entry[1] = *(undefined4 *)((int)&pFVar30->fts_statp[0].st_dev + 4);\n                *entry = (int)_Var9;\n                entry[2] = _Var10;\n                puVar23 = (undefined4 *)hash_insert(table,entry);\n                if (puVar23 == (undefined4 *)0x0) {\n                  free(entry);\n                  local_d4 = fs_buf.f_type;\n                }\n                else {\n                  if (entry != puVar23) {\n                    /* WARNING: Subroutine does not return */\n                    abort();\n                  }\n                  local_d4 = fs_buf.f_type;\n                }\n              }\n            }\n            else {\nLAB_00025920:\n              tmp.st_dev._4_4_ = *(undefined4 *)((int)&pFVar30->fts_statp[0].st_dev + 4);\n              tmp.st_dev._0_4_ = (undefined4)pFVar30->fts_statp[0].st_dev;\n              pvVar21 = hash_lookup(table,&tmp);\n              if (pvVar21 == (void *)0x0) goto LAB_000259b0;\n              local_d4 = *(int *)((int)pvVar21 + 8);\n            }\n            if (((local_d4 == 0x6969) || (local_d4 == 0x1021994)) || (local_d4 == -0xacb2be)) {\n              bVar7 = false;\n              goto LAB_00025473;\n            }\n          }\nLAB_00025a48:\n          bVar7 = true;\n        }\nLAB_00025473:\n        local_d4 = 0x2711;\n        goto LAB_000252fb;\n      }\n      local_d4 = local_d4 + 1;\n    } while (local_d4 < local_a8);\nLAB_000256de:\n    if (bVar6) {\n      pcVar3 = sp->fts_path;\n      for (p_Var25 = sp->fts_child; p_Var25 != (_ftsent *)0x0; p_Var25 = p_Var25->fts_link) {\n        while ((_ftsent *)p_Var25->fts_accpath != p_Var25 + 1) {\n          pcVar18 = p_Var25->fts_path;\n          p_Var25->fts_path = pcVar3;\n          p_Var25->fts_accpath = pcVar3 + ((int)p_Var25->fts_accpath - (int)pcVar18);\n          p_Var25 = p_Var25->fts_link;\n          if (p_Var25 == (_ftsent *)0x0) goto LAB_00025aef;\n        }\n        p_Var25->fts_path = pcVar3;\n      }\nLAB_00025aef:\n      iVar19 = local_b8->fts_level;\n      p_Var25 = local_b8;\n      while (-1 < iVar19) {\n        while( true ) {\n          if ((FTSENT *)p_Var25->fts_accpath != p_Var25 + 1) {\n            p_Var25->fts_accpath = pcVar3 + ((int)p_Var25->fts_accpath - (int)p_Var25->fts_path);\n          }\n          p_Var5 = p_Var25->fts_link;\n          p_Var25->fts_path = pcVar3;\n          if (p_Var5 == (_ftsent *)0x0) break;\n          p_Var25 = p_Var5;\n          if (p_Var5->fts_level < 0) goto LAB_000256e9;\n        }\n        p_Var25 = p_Var25->fts_parent;\n        iVar19 = p_Var25->fts_level;\n      }\n    }\nLAB_000256e9:\n    if ((sp->fts_options & 4) != 0) {\n      if ((sp->fts_pathlen == local_d0) || (local_d4 == 0)) {\n        local_a4 = local_a4 + -1;\n      }\n      *local_a4 = '\0';\n    }\n    if ((pDVar26 == (DIR *)0x0) && (bVar31)) {\n      if ((type == 1) || (local_d4 == 0)) {\n        if (pFVar30->fts_level == 0) {\n          iVar19 = restore_initial_cwd(sp);\n        }\n        else {\n          iVar19 = fts_safe_changedir(sp,pFVar30->fts_parent,-1,"..");\n        }\n        if (iVar19 != 0) {\n          pFVar30->fts_info = 7;\n          sp->fts_options = sp->fts_options | 0x4000;\n          while (pFVar30 = local_b8, local_b8 != (FTSENT *)0x0) {\n            while( true ) {\n              local_b8 = pFVar30->fts_link;\n              if ((DIR *)pFVar30->fts_dirp == (DIR *)0x0) break;\n              closedir((DIR *)pFVar30->fts_dirp);\n              free(pFVar30);\n              pFVar30 = local_b8;\n              if (local_b8 == (_ftsent *)0x0) goto LAB_00025c40;\n            }\n            free(pFVar30);\n          }\n          goto LAB_00025c40;\n        }\n        goto LAB_0002574d;\n      }\n    }\n    else {\nLAB_0002574d:\n      if (local_d4 == 0) {\n        if (((type == 3) && (pFVar30->fts_info != 4)) && (pFVar30->fts_info != 7)) {\n          pFVar30->fts_info = 6;\n        }\n        if (local_b8 != (FTSENT *)0x0) {\n          pDVar26 = (DIR *)local_b8->fts_dirp;\n          p_Var25 = local_b8->fts_link;\n          if (pDVar26 == (DIR *)0x0) goto LAB_00025c94;\n          do {\n            closedir(pDVar26);\n            free(local_b8);\n            local_b8 = p_Var25;\n            while( true ) {\n              if (local_b8 == (FTSENT *)0x0) goto LAB_00025c40;\n              pDVar26 = (DIR *)local_b8->fts_dirp;\n              p_Var25 = local_b8->fts_link;\n              if (pDVar26 != (DIR *)0x0) break;\nLAB_00025c94:\n              free(local_b8);\n              local_b8 = p_Var25;\n            }\n          } while( true );\n        }\n        goto LAB_00025c40;\n      }\n    }\n    if (bVar7) {\n      sp->fts_compar = fts_compare_ino;\n      local_b8 = fts_sort(sp,local_b8,local_d4);\n      sp->fts_compar = (_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *)0x0;\n    }\n    else if ((sp->fts_compar != (_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *)0x0) && (local_d4 != 1)\n            ) {\n      local_b8 = fts_sort(sp,local_b8,local_d4);\n    }\n  }" if (parenthesized_expression "(pDVar26 == (DIR *)0x0)" ( (binary_expression "pDVar26 == (DIR *)0x0" identifier == (cast_expression "(DIR *)0x0" ( (type_descriptor "DIR *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    uVar17 = sp->fts_options;\n    uVar29 = uVar17 & 0x10;\n    if (((uVar29 != 0) && (uVar29 = 0x20000, (uVar17 & 1) != 0)) &&\n       (uVar29 = pFVar30->fts_level, uVar29 != 0)) {\n      uVar29 = 0x20000;\n    }\n    iVar19 = -100;\n    if ((uVar17 & 0x204) == 0x200) {\n      iVar19 = sp->fts_cwd_fd;\n    }\n    local_9c = openat_safer(iVar19,pFVar30->fts_accpath,(uVar17 & 0x800) << 7 | uVar29 | 0x90900);\n    if (local_9c < 0) {\n      pFVar30->fts_dirp = (DIR *)0x0;\n    }\n    else {\n      pDVar20 = fdopendir(local_9c);\n      if (pDVar20 != (DIR *)0x0) {\n        pFVar30->fts_dirp = (DIR *)pDVar20;\n        if (pFVar30->fts_info == 0xb) {\n          uVar13 = fts_stat(sp,pFVar30,false);\n          pFVar30->fts_info = uVar13;\n        }\n        else if (((uint)sp->fts_options & 0x100) != 0) {\n          leave_dir((FTS *)sp->fts_options,(FTSENT *)&sp->fts_cycle,(FTS *)pFVar30);\n          fts_stat(sp,pFVar30,false);\n          _Var12 = enter_dir((FTS *)sp->fts_options,(FTSENT *)&sp->fts_cycle,(FTS *)pFVar30);\n          if (!_Var12) {\n            piVar14 = __errno_location();\n            local_b8 = (FTSENT *)0x0;\n            *piVar14 = 0xc;\n            goto LAB_0002563f;\n          }\n        }\n        local_a8 = (-(uint)(sp->fts_compar == (_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *)0x0) &\n                   0x186a1) - 1;\n        if (type == 2) {\nLAB_00025bc8:\n          bVar31 = false;\n          uVar17 = sp->fts_options;\n          goto LAB_00025223;\n        }\n        if ((((sp->fts_options & 0x38U) == 0x18) && (pFVar30->fts_statp[0].st_nlink == 2)) &&\n           (lVar24 = leaf_optimization(pFVar30,local_9c), lVar24 != NO_LEAF_OPTIMIZATION)) {\n          if (type != 3) goto LAB_00025bc8;\n          bVar31 = false;\n        }\n        else {\n          bVar31 = type == 3;\n        }\n        if (((sp->fts_options & 0x200) == 0) ||\n           (local_9c = rpl_fcntl(local_9c,0x406,3), -1 < local_9c)) {\n          iVar19 = fts_safe_changedir(sp,pFVar30,local_9c,(char *)0x0);\n          if (iVar19 == 0) goto LAB_0002521b;\n          pDVar27 = pFVar30->fts_dirp;\n          uVar13 = pFVar30->fts_flags | 1;\n          if (bVar31) goto LAB_000258a0;\nLAB_000258ae:\n          pFVar30->fts_flags = uVar13;\n          closedir((DIR *)pDVar27);\n          pFVar30->fts_dirp = (DIR *)0x0;\n          uVar17 = sp->fts_options;\n          if (((uVar17 & 0x200) != 0) && (-1 < local_9c)) {\n            close(local_9c);\n            uVar17 = sp->fts_options;\n          }\n        }\n        else {\n          pDVar27 = pFVar30->fts_dirp;\n          uVar13 = pFVar30->fts_flags | 1;\n          if (bVar31) {\nLAB_000258a0:\n            piVar14 = __errno_location();\n            pFVar30->fts_errno = *piVar14;\n            goto LAB_000258ae;\n          }\n          pFVar30->fts_flags = uVar13;\n          closedir((DIR *)pDVar27);\n          uVar17 = sp->fts_options;\n        }\n        bVar31 = false;\n        pFVar30->fts_dirp = (DIR *)0x0;\n        goto LAB_00025223;\n      }\n      piVar14 = __errno_location();\n      iVar19 = *piVar14;\n      close(local_9c);\n      *piVar14 = iVar19;\n      pFVar30->fts_dirp = (DIR *)0x0;\n    }\njoined_r0x00025c30:\n    if (type == 3) {\n      pFVar30->fts_info = 4;\n      piVar14 = __errno_location();\n      pFVar30->fts_errno = *piVar14;\n    }\nLAB_00025c40:\n    local_b8 = (FTSENT *)0x0;\n  }" { (expression_statement "uVar17 = sp->fts_options;" (assignment_expression "uVar17 = sp->fts_options" identifier = (field_expression "sp->fts_options" identifier -> field_identifier)) ;) (expression_statement "uVar29 = uVar17 & 0x10;" (assignment_expression "uVar29 = uVar17 & 0x10" identifier = (binary_expression "uVar17 & 0x10" identifier & number_literal)) ;) (if_statement "if (((uVar29 != 0) && (uVar29 = 0x20000, (uVar17 & 1) != 0)) &&\n       (uVar29 = pFVar30->fts_level, uVar29 != 0)) {\n      uVar29 = 0x20000;\n    }" if (parenthesized_expression "(((uVar29 != 0) && (uVar29 = 0x20000, (uVar17 & 1) != 0)) &&\n       (uVar29 = pFVar30->fts_level, uVar29 != 0))" ( (binary_expression "((uVar29 != 0) && (uVar29 = 0x20000, (uVar17 & 1) != 0)) &&\n       (uVar29 = pFVar30->fts_level, uVar29 != 0)" (parenthesized_expression "((uVar29 != 0) && (uVar29 = 0x20000, (uVar17 & 1) != 0))" ( (binary_expression "(uVar29 != 0) && (uVar29 = 0x20000, (uVar17 & 1) != 0)" (parenthesized_expression "(uVar29 != 0)" ( (binary_expression "uVar29 != 0" identifier != number_literal) )) && (parenthesized_expression "(uVar29 = 0x20000, (uVar17 & 1) != 0)" ( (comma_expression "uVar29 = 0x20000, (uVar17 & 1) != 0" (assignment_expression "uVar29 = 0x20000" identifier = number_literal) , (binary_expression "(uVar17 & 1) != 0" (parenthesized_expression "(uVar17 & 1)" ( (binary_expression "uVar17 & 1" identifier & number_literal) )) != number_literal)) ))) )) && (parenthesized_expression "(uVar29 = pFVar30->fts_level, uVar29 != 0)" ( (comma_expression "uVar29 = pFVar30->fts_level, uVar29 != 0" (assignment_expression "uVar29 = pFVar30->fts_level" identifier = (field_expression "pFVar30->fts_level" identifier -> field_identifier)) , (binary_expression "uVar29 != 0" identifier != number_literal)) ))) )) (compound_statement "{\n      uVar29 = 0x20000;\n    }" { (expression_statement "uVar29 = 0x20000;" (assignment_expression "uVar29 = 0x20000" identifier = number_literal) ;) })) (expression_statement "iVar19 = -100;" (assignment_expression "iVar19 = -100" identifier = number_literal) ;) (if_statement "if ((uVar17 & 0x204) == 0x200) {\n      iVar19 = sp->fts_cwd_fd;\n    }" if (parenthesized_expression "((uVar17 & 0x204) == 0x200)" ( (binary_expression "(uVar17 & 0x204) == 0x200" (parenthesized_expression "(uVar17 & 0x204)" ( (binary_expression "uVar17 & 0x204" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n      iVar19 = sp->fts_cwd_fd;\n    }" { (expression_statement "iVar19 = sp->fts_cwd_fd;" (assignment_expression "iVar19 = sp->fts_cwd_fd" identifier = (field_expression "sp->fts_cwd_fd" identifier -> field_identifier)) ;) })) (expression_statement "local_9c = openat_safer(iVar19,pFVar30->fts_accpath,(uVar17 & 0x800) << 7 | uVar29 | 0x90900);" (assignment_expression "local_9c = openat_safer(iVar19,pFVar30->fts_accpath,(uVar17 & 0x800) << 7 | uVar29 | 0x90900)" identifier = (call_expression "openat_safer(iVar19,pFVar30->fts_accpath,(uVar17 & 0x800) << 7 | uVar29 | 0x90900)" identifier (argument_list "(iVar19,pFVar30->fts_accpath,(uVar17 & 0x800) << 7 | uVar29 | 0x90900)" ( identifier , (field_expression "pFVar30->fts_accpath" identifier -> field_identifier) , (binary_expression "(uVar17 & 0x800) << 7 | uVar29 | 0x90900" (binary_expression "(uVar17 & 0x800) << 7 | uVar29" (binary_expression "(uVar17 & 0x800) << 7" (parenthesized_expression "(uVar17 & 0x800)" ( (binary_expression "uVar17 & 0x800" identifier & number_literal) )) << number_literal) | identifier) | number_literal) )))) ;) (if_statement "if (local_9c < 0) {\n      pFVar30->fts_dirp = (DIR *)0x0;\n    }\n    else {\n      pDVar20 = fdopendir(local_9c);\n      if (pDVar20 != (DIR *)0x0) {\n        pFVar30->fts_dirp = (DIR *)pDVar20;\n        if (pFVar30->fts_info == 0xb) {\n          uVar13 = fts_stat(sp,pFVar30,false);\n          pFVar30->fts_info = uVar13;\n        }\n        else if (((uint)sp->fts_options & 0x100) != 0) {\n          leave_dir((FTS *)sp->fts_options,(FTSENT *)&sp->fts_cycle,(FTS *)pFVar30);\n          fts_stat(sp,pFVar30,false);\n          _Var12 = enter_dir((FTS *)sp->fts_options,(FTSENT *)&sp->fts_cycle,(FTS *)pFVar30);\n          if (!_Var12) {\n            piVar14 = __errno_location();\n            local_b8 = (FTSENT *)0x0;\n            *piVar14 = 0xc;\n            goto LAB_0002563f;\n          }\n        }\n        local_a8 = (-(uint)(sp->fts_compar == (_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *)0x0) &\n                   0x186a1) - 1;\n        if (type == 2) {\nLAB_00025bc8:\n          bVar31 = false;\n          uVar17 = sp->fts_options;\n          goto LAB_00025223;\n        }\n        if ((((sp->fts_options & 0x38U) == 0x18) && (pFVar30->fts_statp[0].st_nlink == 2)) &&\n           (lVar24 = leaf_optimization(pFVar30,local_9c), lVar24 != NO_LEAF_OPTIMIZATION)) {\n          if (type != 3) goto LAB_00025bc8;\n          bVar31 = false;\n        }\n        else {\n          bVar31 = type == 3;\n        }\n        if (((sp->fts_options & 0x200) == 0) ||\n           (local_9c = rpl_fcntl(local_9c,0x406,3), -1 < local_9c)) {\n          iVar19 = fts_safe_changedir(sp,pFVar30,local_9c,(char *)0x0);\n          if (iVar19 == 0) goto LAB_0002521b;\n          pDVar27 = pFVar30->fts_dirp;\n          uVar13 = pFVar30->fts_flags | 1;\n          if (bVar31) goto LAB_000258a0;\nLAB_000258ae:\n          pFVar30->fts_flags = uVar13;\n          closedir((DIR *)pDVar27);\n          pFVar30->fts_dirp = (DIR *)0x0;\n          uVar17 = sp->fts_options;\n          if (((uVar17 & 0x200) != 0) && (-1 < local_9c)) {\n            close(local_9c);\n            uVar17 = sp->fts_options;\n          }\n        }\n        else {\n          pDVar27 = pFVar30->fts_dirp;\n          uVar13 = pFVar30->fts_flags | 1;\n          if (bVar31) {\nLAB_000258a0:\n            piVar14 = __errno_location();\n            pFVar30->fts_errno = *piVar14;\n            goto LAB_000258ae;\n          }\n          pFVar30->fts_flags = uVar13;\n          closedir((DIR *)pDVar27);\n          uVar17 = sp->fts_options;\n        }\n        bVar31 = false;\n        pFVar30->fts_dirp = (DIR *)0x0;\n        goto LAB_00025223;\n      }\n      piVar14 = __errno_location();\n      iVar19 = *piVar14;\n      close(local_9c);\n      *piVar14 = iVar19;\n      pFVar30->fts_dirp = (DIR *)0x0;\n    }" if (parenthesized_expression "(local_9c < 0)" ( (binary_expression "local_9c < 0" identifier < number_literal) )) (compound_statement "{\n      pFVar30->fts_dirp = (DIR *)0x0;\n    }" { (expression_statement "pFVar30->fts_dirp = (DIR *)0x0;" (assignment_expression "pFVar30->fts_dirp = (DIR *)0x0" (field_expression "pFVar30->fts_dirp" identifier -> field_identifier) = (cast_expression "(DIR *)0x0" ( (type_descriptor "DIR *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }) (else_clause "else {\n      pDVar20 = fdopendir(local_9c);\n      if (pDVar20 != (DIR *)0x0) {\n        pFVar30->fts_dirp = (DIR *)pDVar20;\n        if (pFVar30->fts_info == 0xb) {\n          uVar13 = fts_stat(sp,pFVar30,false);\n          pFVar30->fts_info = uVar13;\n        }\n        else if (((uint)sp->fts_options & 0x100) != 0) {\n          leave_dir((FTS *)sp->fts_options,(FTSENT *)&sp->fts_cycle,(FTS *)pFVar30);\n          fts_stat(sp,pFVar30,false);\n          _Var12 = enter_dir((FTS *)sp->fts_options,(FTSENT *)&sp->fts_cycle,(FTS *)pFVar30);\n          if (!_Var12) {\n            piVar14 = __errno_location();\n            local_b8 = (FTSENT *)0x0;\n            *piVar14 = 0xc;\n            goto LAB_0002563f;\n          }\n        }\n        local_a8 = (-(uint)(sp->fts_compar == (_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *)0x0) &\n                   0x186a1) - 1;\n        if (type == 2) {\nLAB_00025bc8:\n          bVar31 = false;\n          uVar17 = sp->fts_options;\n          goto LAB_00025223;\n        }\n        if ((((sp->fts_options & 0x38U) == 0x18) && (pFVar30->fts_statp[0].st_nlink == 2)) &&\n           (lVar24 = leaf_optimization(pFVar30,local_9c), lVar24 != NO_LEAF_OPTIMIZATION)) {\n          if (type != 3) goto LAB_00025bc8;\n          bVar31 = false;\n        }\n        else {\n          bVar31 = type == 3;\n        }\n        if (((sp->fts_options & 0x200) == 0) ||\n           (local_9c = rpl_fcntl(local_9c,0x406,3), -1 < local_9c)) {\n          iVar19 = fts_safe_changedir(sp,pFVar30,local_9c,(char *)0x0);\n          if (iVar19 == 0) goto LAB_0002521b;\n          pDVar27 = pFVar30->fts_dirp;\n          uVar13 = pFVar30->fts_flags | 1;\n          if (bVar31) goto LAB_000258a0;\nLAB_000258ae:\n          pFVar30->fts_flags = uVar13;\n          closedir((DIR *)pDVar27);\n          pFVar30->fts_dirp = (DIR *)0x0;\n          uVar17 = sp->fts_options;\n          if (((uVar17 & 0x200) != 0) && (-1 < local_9c)) {\n            close(local_9c);\n            uVar17 = sp->fts_options;\n          }\n        }\n        else {\n          pDVar27 = pFVar30->fts_dirp;\n          uVar13 = pFVar30->fts_flags | 1;\n          if (bVar31) {\nLAB_000258a0:\n            piVar14 = __errno_location();\n            pFVar30->fts_errno = *piVar14;\n            goto LAB_000258ae;\n          }\n          pFVar30->fts_flags = uVar13;\n          closedir((DIR *)pDVar27);\n          uVar17 = sp->fts_options;\n        }\n        bVar31 = false;\n        pFVar30->fts_dirp = (DIR *)0x0;\n        goto LAB_00025223;\n      }\n      piVar14 = __errno_location();\n      iVar19 = *piVar14;\n      close(local_9c);\n      *piVar14 = iVar19;\n      pFVar30->fts_dirp = (DIR *)0x0;\n    }" else (compound_statement "{\n      pDVar20 = fdopendir(local_9c);\n      if (pDVar20 != (DIR *)0x0) {\n        pFVar30->fts_dirp = (DIR *)pDVar20;\n        if (pFVar30->fts_info == 0xb) {\n          uVar13 = fts_stat(sp,pFVar30,false);\n          pFVar30->fts_info = uVar13;\n        }\n        else if (((uint)sp->fts_options & 0x100) != 0) {\n          leave_dir((FTS *)sp->fts_options,(FTSENT *)&sp->fts_cycle,(FTS *)pFVar30);\n          fts_stat(sp,pFVar30,false);\n          _Var12 = enter_dir((FTS *)sp->fts_options,(FTSENT *)&sp->fts_cycle,(FTS *)pFVar30);\n          if (!_Var12) {\n            piVar14 = __errno_location();\n            local_b8 = (FTSENT *)0x0;\n            *piVar14 = 0xc;\n            goto LAB_0002563f;\n          }\n        }\n        local_a8 = (-(uint)(sp->fts_compar == (_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *)0x0) &\n                   0x186a1) - 1;\n        if (type == 2) {\nLAB_00025bc8:\n          bVar31 = false;\n          uVar17 = sp->fts_options;\n          goto LAB_00025223;\n        }\n        if ((((sp->fts_options & 0x38U) == 0x18) && (pFVar30->fts_statp[0].st_nlink == 2)) &&\n           (lVar24 = leaf_optimization(pFVar30,local_9c), lVar24 != NO_LEAF_OPTIMIZATION)) {\n          if (type != 3) goto LAB_00025bc8;\n          bVar31 = false;\n        }\n        else {\n          bVar31 = type == 3;\n        }\n        if (((sp->fts_options & 0x200) == 0) ||\n           (local_9c = rpl_fcntl(local_9c,0x406,3), -1 < local_9c)) {\n          iVar19 = fts_safe_changedir(sp,pFVar30,local_9c,(char *)0x0);\n          if (iVar19 == 0) goto LAB_0002521b;\n          pDVar27 = pFVar30->fts_dirp;\n          uVar13 = pFVar30->fts_flags | 1;\n          if (bVar31) goto LAB_000258a0;\nLAB_000258ae:\n          pFVar30->fts_flags = uVar13;\n          closedir((DIR *)pDVar27);\n          pFVar30->fts_dirp = (DIR *)0x0;\n          uVar17 = sp->fts_options;\n          if (((uVar17 & 0x200) != 0) && (-1 < local_9c)) {\n            close(local_9c);\n            uVar17 = sp->fts_options;\n          }\n        }\n        else {\n          pDVar27 = pFVar30->fts_dirp;\n          uVar13 = pFVar30->fts_flags | 1;\n          if (bVar31) {\nLAB_000258a0:\n            piVar14 = __errno_location();\n            pFVar30->fts_errno = *piVar14;\n            goto LAB_000258ae;\n          }\n          pFVar30->fts_flags = uVar13;\n          closedir((DIR *)pDVar27);\n          uVar17 = sp->fts_options;\n        }\n        bVar31 = false;\n        pFVar30->fts_dirp = (DIR *)0x0;\n        goto LAB_00025223;\n      }\n      piVar14 = __errno_location();\n      iVar19 = *piVar14;\n      close(local_9c);\n      *piVar14 = iVar19;\n      pFVar30->fts_dirp = (DIR *)0x0;\n    }" { (expression_statement "pDVar20 = fdopendir(local_9c);" (assignment_expression "pDVar20 = fdopendir(local_9c)" identifier = (call_expression "fdopendir(local_9c)" identifier (argument_list "(local_9c)" ( identifier )))) ;) (if_statement "if (pDVar20 != (DIR *)0x0) {\n        pFVar30->fts_dirp = (DIR *)pDVar20;\n        if (pFVar30->fts_info == 0xb) {\n          uVar13 = fts_stat(sp,pFVar30,false);\n          pFVar30->fts_info = uVar13;\n        }\n        else if (((uint)sp->fts_options & 0x100) != 0) {\n          leave_dir((FTS *)sp->fts_options,(FTSENT *)&sp->fts_cycle,(FTS *)pFVar30);\n          fts_stat(sp,pFVar30,false);\n          _Var12 = enter_dir((FTS *)sp->fts_options,(FTSENT *)&sp->fts_cycle,(FTS *)pFVar30);\n          if (!_Var12) {\n            piVar14 = __errno_location();\n            local_b8 = (FTSENT *)0x0;\n            *piVar14 = 0xc;\n            goto LAB_0002563f;\n          }\n        }\n        local_a8 = (-(uint)(sp->fts_compar == (_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *)0x0) &\n                   0x186a1) - 1;\n        if (type == 2) {\nLAB_00025bc8:\n          bVar31 = false;\n          uVar17 = sp->fts_options;\n          goto LAB_00025223;\n        }\n        if ((((sp->fts_options & 0x38U) == 0x18) && (pFVar30->fts_statp[0].st_nlink == 2)) &&\n           (lVar24 = leaf_optimization(pFVar30,local_9c), lVar24 != NO_LEAF_OPTIMIZATION)) {\n          if (type != 3) goto LAB_00025bc8;\n          bVar31 = false;\n        }\n        else {\n          bVar31 = type == 3;\n        }\n        if (((sp->fts_options & 0x200) == 0) ||\n           (local_9c = rpl_fcntl(local_9c,0x406,3), -1 < local_9c)) {\n          iVar19 = fts_safe_changedir(sp,pFVar30,local_9c,(char *)0x0);\n          if (iVar19 == 0) goto LAB_0002521b;\n          pDVar27 = pFVar30->fts_dirp;\n          uVar13 = pFVar30->fts_flags | 1;\n          if (bVar31) goto LAB_000258a0;\nLAB_000258ae:\n          pFVar30->fts_flags = uVar13;\n          closedir((DIR *)pDVar27);\n          pFVar30->fts_dirp = (DIR *)0x0;\n          uVar17 = sp->fts_options;\n          if (((uVar17 & 0x200) != 0) && (-1 < local_9c)) {\n            close(local_9c);\n            uVar17 = sp->fts_options;\n          }\n        }\n        else {\n          pDVar27 = pFVar30->fts_dirp;\n          uVar13 = pFVar30->fts_flags | 1;\n          if (bVar31) {\nLAB_000258a0:\n            piVar14 = __errno_location();\n            pFVar30->fts_errno = *piVar14;\n            goto LAB_000258ae;\n          }\n          pFVar30->fts_flags = uVar13;\n          closedir((DIR *)pDVar27);\n          uVar17 = sp->fts_options;\n        }\n        bVar31 = false;\n        pFVar30->fts_dirp = (DIR *)0x0;\n        goto LAB_00025223;\n      }" if (parenthesized_expression "(pDVar20 != (DIR *)0x0)" ( (binary_expression "pDVar20 != (DIR *)0x0" identifier != (cast_expression "(DIR *)0x0" ( (type_descriptor "DIR *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        pFVar30->fts_dirp = (DIR *)pDVar20;\n        if (pFVar30->fts_info == 0xb) {\n          uVar13 = fts_stat(sp,pFVar30,false);\n          pFVar30->fts_info = uVar13;\n        }\n        else if (((uint)sp->fts_options & 0x100) != 0) {\n          leave_dir((FTS *)sp->fts_options,(FTSENT *)&sp->fts_cycle,(FTS *)pFVar30);\n          fts_stat(sp,pFVar30,false);\n          _Var12 = enter_dir((FTS *)sp->fts_options,(FTSENT *)&sp->fts_cycle,(FTS *)pFVar30);\n          if (!_Var12) {\n            piVar14 = __errno_location();\n            local_b8 = (FTSENT *)0x0;\n            *piVar14 = 0xc;\n            goto LAB_0002563f;\n          }\n        }\n        local_a8 = (-(uint)(sp->fts_compar == (_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *)0x0) &\n                   0x186a1) - 1;\n        if (type == 2) {\nLAB_00025bc8:\n          bVar31 = false;\n          uVar17 = sp->fts_options;\n          goto LAB_00025223;\n        }\n        if ((((sp->fts_options & 0x38U) == 0x18) && (pFVar30->fts_statp[0].st_nlink == 2)) &&\n           (lVar24 = leaf_optimization(pFVar30,local_9c), lVar24 != NO_LEAF_OPTIMIZATION)) {\n          if (type != 3) goto LAB_00025bc8;\n          bVar31 = false;\n        }\n        else {\n          bVar31 = type == 3;\n        }\n        if (((sp->fts_options & 0x200) == 0) ||\n           (local_9c = rpl_fcntl(local_9c,0x406,3), -1 < local_9c)) {\n          iVar19 = fts_safe_changedir(sp,pFVar30,local_9c,(char *)0x0);\n          if (iVar19 == 0) goto LAB_0002521b;\n          pDVar27 = pFVar30->fts_dirp;\n          uVar13 = pFVar30->fts_flags | 1;\n          if (bVar31) goto LAB_000258a0;\nLAB_000258ae:\n          pFVar30->fts_flags = uVar13;\n          closedir((DIR *)pDVar27);\n          pFVar30->fts_dirp = (DIR *)0x0;\n          uVar17 = sp->fts_options;\n          if (((uVar17 & 0x200) != 0) && (-1 < local_9c)) {\n            close(local_9c);\n            uVar17 = sp->fts_options;\n          }\n        }\n        else {\n          pDVar27 = pFVar30->fts_dirp;\n          uVar13 = pFVar30->fts_flags | 1;\n          if (bVar31) {\nLAB_000258a0:\n            piVar14 = __errno_location();\n            pFVar30->fts_errno = *piVar14;\n            goto LAB_000258ae;\n          }\n          pFVar30->fts_flags = uVar13;\n          closedir((DIR *)pDVar27);\n          uVar17 = sp->fts_options;\n        }\n        bVar31 = false;\n        pFVar30->fts_dirp = (DIR *)0x0;\n        goto LAB_00025223;\n      }" { (expression_statement "pFVar30->fts_dirp = (DIR *)pDVar20;" (assignment_expression "pFVar30->fts_dirp = (DIR *)pDVar20" (field_expression "pFVar30->fts_dirp" identifier -> field_identifier) = (cast_expression "(DIR *)pDVar20" ( (type_descriptor "DIR *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (if_statement "if (pFVar30->fts_info == 0xb) {\n          uVar13 = fts_stat(sp,pFVar30,false);\n          pFVar30->fts_info = uVar13;\n        }\n        else if (((uint)sp->fts_options & 0x100) != 0) {\n          leave_dir((FTS *)sp->fts_options,(FTSENT *)&sp->fts_cycle,(FTS *)pFVar30);\n          fts_stat(sp,pFVar30,false);\n          _Var12 = enter_dir((FTS *)sp->fts_options,(FTSENT *)&sp->fts_cycle,(FTS *)pFVar30);\n          if (!_Var12) {\n            piVar14 = __errno_location();\n            local_b8 = (FTSENT *)0x0;\n            *piVar14 = 0xc;\n            goto LAB_0002563f;\n          }\n        }" if (parenthesized_expression "(pFVar30->fts_info == 0xb)" ( (binary_expression "pFVar30->fts_info == 0xb" (field_expression "pFVar30->fts_info" identifier -> field_identifier) == number_literal) )) (compound_statement "{\n          uVar13 = fts_stat(sp,pFVar30,false);\n          pFVar30->fts_info = uVar13;\n        }" { (expression_statement "uVar13 = fts_stat(sp,pFVar30,false);" (assignment_expression "uVar13 = fts_stat(sp,pFVar30,false)" identifier = (call_expression "fts_stat(sp,pFVar30,false)" identifier (argument_list "(sp,pFVar30,false)" ( identifier , identifier , false )))) ;) (expression_statement "pFVar30->fts_info = uVar13;" (assignment_expression "pFVar30->fts_info = uVar13" (field_expression "pFVar30->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 *)pFVar30);\n          fts_stat(sp,pFVar30,false);\n          _Var12 = enter_dir((FTS *)sp->fts_options,(FTSENT *)&sp->fts_cycle,(FTS *)pFVar30);\n          if (!_Var12) {\n            piVar14 = __errno_location();\n            local_b8 = (FTSENT *)0x0;\n            *piVar14 = 0xc;\n            goto LAB_0002563f;\n          }\n        }" else (if_statement "if (((uint)sp->fts_options & 0x100) != 0) {\n          leave_dir((FTS *)sp->fts_options,(FTSENT *)&sp->fts_cycle,(FTS *)pFVar30);\n          fts_stat(sp,pFVar30,false);\n          _Var12 = enter_dir((FTS *)sp->fts_options,(FTSENT *)&sp->fts_cycle,(FTS *)pFVar30);\n          if (!_Var12) {\n            piVar14 = __errno_location();\n            local_b8 = (FTSENT *)0x0;\n            *piVar14 = 0xc;\n            goto LAB_0002563f;\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 *)pFVar30);\n          fts_stat(sp,pFVar30,false);\n          _Var12 = enter_dir((FTS *)sp->fts_options,(FTSENT *)&sp->fts_cycle,(FTS *)pFVar30);\n          if (!_Var12) {\n            piVar14 = __errno_location();\n            local_b8 = (FTSENT *)0x0;\n            *piVar14 = 0xc;\n            goto LAB_0002563f;\n          }\n        }" { (expression_statement "leave_dir((FTS *)sp->fts_options,(FTSENT *)&sp->fts_cycle,(FTS *)pFVar30);" (call_expression "leave_dir((FTS *)sp->fts_options,(FTSENT *)&sp->fts_cycle,(FTS *)pFVar30)" identifier (argument_list "((FTS *)sp->fts_options,(FTSENT *)&sp->fts_cycle,(FTS *)pFVar30)" ( (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 *)pFVar30" ( (type_descriptor "FTS *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) ))) ;) (expression_statement "fts_stat(sp,pFVar30,false);" (call_expression "fts_stat(sp,pFVar30,false)" identifier (argument_list "(sp,pFVar30,false)" ( identifier , identifier , false ))) ;) (expression_statement "_Var12 = enter_dir((FTS *)sp->fts_options,(FTSENT *)&sp->fts_cycle,(FTS *)pFVar30);" (assignment_expression "_Var12 = enter_dir((FTS *)sp->fts_options,(FTSENT *)&sp->fts_cycle,(FTS *)pFVar30)" identifier = (call_expression "enter_dir((FTS *)sp->fts_options,(FTSENT *)&sp->fts_cycle,(FTS *)pFVar30)" identifier (argument_list "((FTS *)sp->fts_options,(FTSENT *)&sp->fts_cycle,(FTS *)pFVar30)" ( (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 *)pFVar30" ( (type_descriptor "FTS *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) )))) ;) (if_statement "if (!_Var12) {\n            piVar14 = __errno_location();\n            local_b8 = (FTSENT *)0x0;\n            *piVar14 = 0xc;\n            goto LAB_0002563f;\n          }" if (parenthesized_expression "(!_Var12)" ( (unary_expression "!_Var12" ! identifier) )) (compound_statement "{\n            piVar14 = __errno_location();\n            local_b8 = (FTSENT *)0x0;\n            *piVar14 = 0xc;\n            goto LAB_0002563f;\n          }" { (expression_statement "piVar14 = __errno_location();" (assignment_expression "piVar14 = __errno_location()" identifier = (call_expression "__errno_location()" identifier (argument_list "()" ( )))) ;) (expression_statement "local_b8 = (FTSENT *)0x0;" (assignment_expression "local_b8 = (FTSENT *)0x0" identifier = (cast_expression "(FTSENT *)0x0" ( (type_descriptor "FTSENT *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "*piVar14 = 0xc;" (assignment_expression "*piVar14 = 0xc" (pointer_expression "*piVar14" * identifier) = number_literal) ;) (goto_statement "goto LAB_0002563f;" goto statement_identifier ;) })) })))) (expression_statement "local_a8 = (-(uint)(sp->fts_compar == (_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *)0x0) &\n                   0x186a1) - 1;" (assignment_expression "local_a8 = (-(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_00025bc8:\n          bVar31 = false;\n          uVar17 = sp->fts_options;\n          goto LAB_00025223;\n        }" if (parenthesized_expression "(type == 2)" ( (binary_expression "type == 2" identifier == number_literal) )) (compound_statement "{\nLAB_00025bc8:\n          bVar31 = false;\n          uVar17 = sp->fts_options;\n          goto LAB_00025223;\n        }" { (labeled_statement "LAB_00025bc8:\n          bVar31 = false;" statement_identifier : (expression_statement "bVar31 = false;" (assignment_expression "bVar31 = false" identifier = false) ;)) (expression_statement "uVar17 = sp->fts_options;" (assignment_expression "uVar17 = sp->fts_options" identifier = (field_expression "sp->fts_options" identifier -> field_identifier)) ;) (goto_statement "goto LAB_00025223;" goto statement_identifier ;) })) (if_statement "if ((((sp->fts_options & 0x38U) == 0x18) && (pFVar30->fts_statp[0].st_nlink == 2)) &&\n           (lVar24 = leaf_optimization(pFVar30,local_9c), lVar24 != NO_LEAF_OPTIMIZATION)) {\n          if (type != 3) goto LAB_00025bc8;\n          bVar31 = false;\n        }\n        else {\n          bVar31 = type == 3;\n        }" if (parenthesized_expression "((((sp->fts_options & 0x38U) == 0x18) && (pFVar30->fts_statp[0].st_nlink == 2)) &&\n           (lVar24 = leaf_optimization(pFVar30,local_9c), lVar24 != NO_LEAF_OPTIMIZATION))" ( (binary_expression "(((sp->fts_options & 0x38U) == 0x18) && (pFVar30->fts_statp[0].st_nlink == 2)) &&\n           (lVar24 = leaf_optimization(pFVar30,local_9c), lVar24 != NO_LEAF_OPTIMIZATION)" (parenthesized_expression "(((sp->fts_options & 0x38U) == 0x18) && (pFVar30->fts_statp[0].st_nlink == 2))" ( (binary_expression "((sp->fts_options & 0x38U) == 0x18) && (pFVar30->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 "(pFVar30->fts_statp[0].st_nlink == 2)" ( (binary_expression "pFVar30->fts_statp[0].st_nlink == 2" (field_expression "pFVar30->fts_statp[0].st_nlink" (subscript_expression "pFVar30->fts_statp[0]" (field_expression "pFVar30->fts_statp" identifier -> field_identifier) [ number_literal ]) . field_identifier) == number_literal) ))) )) && (parenthesized_expression "(lVar24 = leaf_optimization(pFVar30,local_9c), lVar24 != NO_LEAF_OPTIMIZATION)" ( (comma_expression "lVar24 = leaf_optimization(pFVar30,local_9c), lVar24 != NO_LEAF_OPTIMIZATION" (assignment_expression "lVar24 = leaf_optimization(pFVar30,local_9c)" identifier = (call_expression "leaf_optimization(pFVar30,local_9c)" identifier (argument_list "(pFVar30,local_9c)" ( identifier , identifier )))) , (binary_expression "lVar24 != NO_LEAF_OPTIMIZATION" identifier != identifier)) ))) )) (compound_statement "{\n          if (type != 3) goto LAB_00025bc8;\n          bVar31 = false;\n        }" { (if_statement "if (type != 3) goto LAB_00025bc8;" if (parenthesized_expression "(type != 3)" ( (binary_expression "type != 3" identifier != number_literal) )) (goto_statement "goto LAB_00025bc8;" goto statement_identifier ;)) (expression_statement "bVar31 = false;" (assignment_expression "bVar31 = false" identifier = false) ;) }) (else_clause "else {\n          bVar31 = type == 3;\n        }" else (compound_statement "{\n          bVar31 = type == 3;\n        }" { (expression_statement "bVar31 = type == 3;" (assignment_expression "bVar31 = type == 3" identifier = (binary_expression "type == 3" identifier == number_literal)) ;) }))) (if_statement "if (((sp->fts_options & 0x200) == 0) ||\n           (local_9c = rpl_fcntl(local_9c,0x406,3), -1 < local_9c)) {\n          iVar19 = fts_safe_changedir(sp,pFVar30,local_9c,(char *)0x0);\n          if (iVar19 == 0) goto LAB_0002521b;\n          pDVar27 = pFVar30->fts_dirp;\n          uVar13 = pFVar30->fts_flags | 1;\n          if (bVar31) goto LAB_000258a0;\nLAB_000258ae:\n          pFVar30->fts_flags = uVar13;\n          closedir((DIR *)pDVar27);\n          pFVar30->fts_dirp = (DIR *)0x0;\n          uVar17 = sp->fts_options;\n          if (((uVar17 & 0x200) != 0) && (-1 < local_9c)) {\n            close(local_9c);\n            uVar17 = sp->fts_options;\n          }\n        }\n        else {\n          pDVar27 = pFVar30->fts_dirp;\n          uVar13 = pFVar30->fts_flags | 1;\n          if (bVar31) {\nLAB_000258a0:\n            piVar14 = __errno_location();\n            pFVar30->fts_errno = *piVar14;\n            goto LAB_000258ae;\n          }\n          pFVar30->fts_flags = uVar13;\n          closedir((DIR *)pDVar27);\n          uVar17 = sp->fts_options;\n        }" if (parenthesized_expression "(((sp->fts_options & 0x200) == 0) ||\n           (local_9c = rpl_fcntl(local_9c,0x406,3), -1 < local_9c))" ( (binary_expression "((sp->fts_options & 0x200) == 0) ||\n           (local_9c = rpl_fcntl(local_9c,0x406,3), -1 < local_9c)" (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_9c = rpl_fcntl(local_9c,0x406,3), -1 < local_9c)" ( (comma_expression "local_9c = rpl_fcntl(local_9c,0x406,3), -1 < local_9c" (assignment_expression "local_9c = rpl_fcntl(local_9c,0x406,3)" identifier = (call_expression "rpl_fcntl(local_9c,0x406,3)" identifier (argument_list "(local_9c,0x406,3)" ( identifier , number_literal , number_literal )))) , (binary_expression "-1 < local_9c" number_literal < identifier)) ))) )) (compound_statement "{\n          iVar19 = fts_safe_changedir(sp,pFVar30,local_9c,(char *)0x0);\n          if (iVar19 == 0) goto LAB_0002521b;\n          pDVar27 = pFVar30->fts_dirp;\n          uVar13 = pFVar30->fts_flags | 1;\n          if (bVar31) goto LAB_000258a0;\nLAB_000258ae:\n          pFVar30->fts_flags = uVar13;\n          closedir((DIR *)pDVar27);\n          pFVar30->fts_dirp = (DIR *)0x0;\n          uVar17 = sp->fts_options;\n          if (((uVar17 & 0x200) != 0) && (-1 < local_9c)) {\n            close(local_9c);\n            uVar17 = sp->fts_options;\n          }\n        }" { (expression_statement "iVar19 = fts_safe_changedir(sp,pFVar30,local_9c,(char *)0x0);" (assignment_expression "iVar19 = fts_safe_changedir(sp,pFVar30,local_9c,(char *)0x0)" identifier = (call_expression "fts_safe_changedir(sp,pFVar30,local_9c,(char *)0x0)" identifier (argument_list "(sp,pFVar30,local_9c,(char *)0x0)" ( identifier , identifier , identifier , (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) )))) ;) (if_statement "if (iVar19 == 0) goto LAB_0002521b;" if (parenthesized_expression "(iVar19 == 0)" ( (binary_expression "iVar19 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0002521b;" goto statement_identifier ;)) (expression_statement "pDVar27 = pFVar30->fts_dirp;" (assignment_expression "pDVar27 = pFVar30->fts_dirp" identifier = (field_expression "pFVar30->fts_dirp" identifier -> field_identifier)) ;) (expression_statement "uVar13 = pFVar30->fts_flags | 1;" (assignment_expression "uVar13 = pFVar30->fts_flags | 1" identifier = (binary_expression "pFVar30->fts_flags | 1" (field_expression "pFVar30->fts_flags" identifier -> field_identifier) | number_literal)) ;) (if_statement "if (bVar31) goto LAB_000258a0;" if (parenthesized_expression "(bVar31)" ( identifier )) (goto_statement "goto LAB_000258a0;" goto statement_identifier ;)) (labeled_statement "LAB_000258ae:\n          pFVar30->fts_flags = uVar13;" statement_identifier : (expression_statement "pFVar30->fts_flags = uVar13;" (assignment_expression "pFVar30->fts_flags = uVar13" (field_expression "pFVar30->fts_flags" identifier -> field_identifier) = identifier) ;)) (expression_statement "closedir((DIR *)pDVar27);" (call_expression "closedir((DIR *)pDVar27)" identifier (argument_list "((DIR *)pDVar27)" ( (cast_expression "(DIR *)pDVar27" ( (type_descriptor "DIR *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) ))) ;) (expression_statement "pFVar30->fts_dirp = (DIR *)0x0;" (assignment_expression "pFVar30->fts_dirp = (DIR *)0x0" (field_expression "pFVar30->fts_dirp" identifier -> field_identifier) = (cast_expression "(DIR *)0x0" ( (type_descriptor "DIR *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "uVar17 = sp->fts_options;" (assignment_expression "uVar17 = sp->fts_options" identifier = (field_expression "sp->fts_options" identifier -> field_identifier)) ;) (if_statement "if (((uVar17 & 0x200) != 0) && (-1 < local_9c)) {\n            close(local_9c);\n            uVar17 = sp->fts_options;\n          }" if (parenthesized_expression "(((uVar17 & 0x200) != 0) && (-1 < local_9c))" ( (binary_expression "((uVar17 & 0x200) != 0) && (-1 < local_9c)" (parenthesized_expression "((uVar17 & 0x200) != 0)" ( (binary_expression "(uVar17 & 0x200) != 0" (parenthesized_expression "(uVar17 & 0x200)" ( (binary_expression "uVar17 & 0x200" identifier & number_literal) )) != number_literal) )) && (parenthesized_expression "(-1 < local_9c)" ( (binary_expression "-1 < local_9c" number_literal < identifier) ))) )) (compound_statement "{\n            close(local_9c);\n            uVar17 = sp->fts_options;\n          }" { (expression_statement "close(local_9c);" (call_expression "close(local_9c)" identifier (argument_list "(local_9c)" ( identifier ))) ;) (expression_statement "uVar17 = sp->fts_options;" (assignment_expression "uVar17 = sp->fts_options" identifier = (field_expression "sp->fts_options" identifier -> field_identifier)) ;) })) }) (else_clause "else {\n          pDVar27 = pFVar30->fts_dirp;\n          uVar13 = pFVar30->fts_flags | 1;\n          if (bVar31) {\nLAB_000258a0:\n            piVar14 = __errno_location();\n            pFVar30->fts_errno = *piVar14;\n            goto LAB_000258ae;\n          }\n          pFVar30->fts_flags = uVar13;\n          closedir((DIR *)pDVar27);\n          uVar17 = sp->fts_options;\n        }" else (compound_statement "{\n          pDVar27 = pFVar30->fts_dirp;\n          uVar13 = pFVar30->fts_flags | 1;\n          if (bVar31) {\nLAB_000258a0:\n            piVar14 = __errno_location();\n            pFVar30->fts_errno = *piVar14;\n            goto LAB_000258ae;\n          }\n          pFVar30->fts_flags = uVar13;\n          closedir((DIR *)pDVar27);\n          uVar17 = sp->fts_options;\n        }" { (expression_statement "pDVar27 = pFVar30->fts_dirp;" (assignment_expression "pDVar27 = pFVar30->fts_dirp" identifier = (field_expression "pFVar30->fts_dirp" identifier -> field_identifier)) ;) (expression_statement "uVar13 = pFVar30->fts_flags | 1;" (assignment_expression "uVar13 = pFVar30->fts_flags | 1" identifier = (binary_expression "pFVar30->fts_flags | 1" (field_expression "pFVar30->fts_flags" identifier -> field_identifier) | number_literal)) ;) (if_statement "if (bVar31) {\nLAB_000258a0:\n            piVar14 = __errno_location();\n            pFVar30->fts_errno = *piVar14;\n            goto LAB_000258ae;\n          }" if (parenthesized_expression "(bVar31)" ( identifier )) (compound_statement "{\nLAB_000258a0:\n            piVar14 = __errno_location();\n            pFVar30->fts_errno = *piVar14;\n            goto LAB_000258ae;\n          }" { (labeled_statement "LAB_000258a0:\n            piVar14 = __errno_location();" statement_identifier : (expression_statement "piVar14 = __errno_location();" (assignment_expression "piVar14 = __errno_location()" identifier = (call_expression "__errno_location()" identifier (argument_list "()" ( )))) ;)) (expression_statement "pFVar30->fts_errno = *piVar14;" (assignment_expression "pFVar30->fts_errno = *piVar14" (field_expression "pFVar30->fts_errno" identifier -> field_identifier) = (pointer_expression "*piVar14" * identifier)) ;) (goto_statement "goto LAB_000258ae;" goto statement_identifier ;) })) (expression_statement "pFVar30->fts_flags = uVar13;" (assignment_expression "pFVar30->fts_flags = uVar13" (field_expression "pFVar30->fts_flags" identifier -> field_identifier) = identifier) ;) (expression_statement "closedir((DIR *)pDVar27);" (call_expression "closedir((DIR *)pDVar27)" identifier (argument_list "((DIR *)pDVar27)" ( (cast_expression "(DIR *)pDVar27" ( (type_descriptor "DIR *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) ))) ;) (expression_statement "uVar17 = sp->fts_options;" (assignment_expression "uVar17 = sp->fts_options" identifier = (field_expression "sp->fts_options" identifier -> field_identifier)) ;) }))) (expression_statement "bVar31 = false;" (assignment_expression "bVar31 = false" identifier = false) ;) (expression_statement "pFVar30->fts_dirp = (DIR *)0x0;" (assignment_expression "pFVar30->fts_dirp = (DIR *)0x0" (field_expression "pFVar30->fts_dirp" identifier -> field_identifier) = (cast_expression "(DIR *)0x0" ( (type_descriptor "DIR *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (goto_statement "goto LAB_00025223;" goto statement_identifier ;) })) (expression_statement "piVar14 = __errno_location();" (assignment_expression "piVar14 = __errno_location()" identifier = (call_expression "__errno_location()" identifier (argument_list "()" ( )))) ;) (expression_statement "iVar19 = *piVar14;" (assignment_expression "iVar19 = *piVar14" identifier = (pointer_expression "*piVar14" * identifier)) ;) (expression_statement "close(local_9c);" (call_expression "close(local_9c)" identifier (argument_list "(local_9c)" ( identifier ))) ;) (expression_statement "*piVar14 = iVar19;" (assignment_expression "*piVar14 = iVar19" (pointer_expression "*piVar14" * identifier) = identifier) ;) (expression_statement "pFVar30->fts_dirp = (DIR *)0x0;" (assignment_expression "pFVar30->fts_dirp = (DIR *)0x0" (field_expression "pFVar30->fts_dirp" identifier -> field_identifier) = (cast_expression "(DIR *)0x0" ( (type_descriptor "DIR *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }))) (labeled_statement "joined_r0x00025c30:\n    if (type == 3) {\n      pFVar30->fts_info = 4;\n      piVar14 = __errno_location();\n      pFVar30->fts_errno = *piVar14;\n    }" statement_identifier : (if_statement "if (type == 3) {\n      pFVar30->fts_info = 4;\n      piVar14 = __errno_location();\n      pFVar30->fts_errno = *piVar14;\n    }" if (parenthesized_expression "(type == 3)" ( (binary_expression "type == 3" identifier == number_literal) )) (compound_statement "{\n      pFVar30->fts_info = 4;\n      piVar14 = __errno_location();\n      pFVar30->fts_errno = *piVar14;\n    }" { (expression_statement "pFVar30->fts_info = 4;" (assignment_expression "pFVar30->fts_info = 4" (field_expression "pFVar30->fts_info" identifier -> field_identifier) = number_literal) ;) (expression_statement "piVar14 = __errno_location();" (assignment_expression "piVar14 = __errno_location()" identifier = (call_expression "__errno_location()" identifier (argument_list "()" ( )))) ;) (expression_statement "pFVar30->fts_errno = *piVar14;" (assignment_expression "pFVar30->fts_errno = *piVar14" (field_expression "pFVar30->fts_errno" identifier -> field_identifier) = (pointer_expression "*piVar14" * identifier)) ;) }))) (labeled_statement "LAB_00025c40:\n    local_b8 = (FTSENT *)0x0;" statement_identifier : (expression_statement "local_b8 = (FTSENT *)0x0;" (assignment_expression "local_b8 = (FTSENT *)0x0" identifier = (cast_expression "(FTSENT *)0x0" ( (type_descriptor "FTSENT *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;)) }) (else_clause "else {\n    local_9c = dirfd(pDVar26);\n    if (local_9c < 0) {\n      closedir((DIR *)pFVar30->fts_dirp);\n      pFVar30->fts_dirp = (DIR *)0x0;\n      goto joined_r0x00025c30;\n    }\n    if (sp->fts_compar == (_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *)0x0) {\n      local_a8 = 100000;\n      uVar17 = sp->fts_options;\n      bVar31 = true;\n    }\n    else {\n      local_a8 = 0xffffffff;\nLAB_0002521b:\n      bVar31 = true;\n      uVar17 = sp->fts_options;\n    }\nLAB_00025223:\n    sVar2 = pFVar30->fts_pathlen;\n    sVar28 = sVar2 - 1;\n    local_d0 = sVar2;\n    if (pFVar30->fts_path[sVar2 - 1] != '/') {\n      local_d0 = sVar2 + 1;\n      sVar28 = sVar2;\n    }\n    local_a4 = (char *)0x0;\n    if ((uVar17 & 4) != 0) {\n      local_a4 = sp->fts_path + sVar28 + 1;\n      sp->fts_path[sVar28] = '/';\n    }\n    data_freer = PTR_free_0003afa8;\n    local_b0 = sp->fts_pathlen - local_d0;\n    bVar7 = false;\n    bVar6 = false;\n    iVar19 = pFVar30->fts_level;\n    local_c4 = (FTSENT *)0x0;\n    local_d4 = 0;\n    local_b8 = (FTSENT *)0x0;\nLAB_000252fb:\n    do {\n      do {\n        pDVar20 = (DIR *)pFVar30->fts_dirp;\n        if (pDVar20 == (DIR *)0x0) goto LAB_000256de;\n        piVar14 = __errno_location();\n        *piVar14 = 0;\n        pdVar15 = readdir64(pDVar20);\n        if (pdVar15 == (dirent64 *)0x0) {\n          if (*piVar14 != 0) {\n            pFVar30->fts_errno = *piVar14;\n            pFVar30->fts_info = (-(ushort)(pDVar26 == (DIR *)0x0 && local_d4 == 0) & 0xfffd) + 7;\n          }\n          if ((DIR *)pFVar30->fts_dirp != (DIR *)0x0) {\n            closedir((DIR *)pFVar30->fts_dirp);\n            pFVar30->fts_dirp = (DIR *)0x0;\n          }\n          goto LAB_000256de;\n        }\n      } while ((((sp->fts_options & 0x20) == 0) && (pdVar15->d_name[0] == '.')) &&\n              ((pdVar15->d_name[1] == '\0' || (*(short *)(pdVar15->d_name + 1) == 0x2e))));\n      __n = strlen(pdVar15->d_name);\n      p = (FTSENT *)malloc(__n + 0xa8 & 0xfffffffc);\n      if (p == (FTSENT *)0x0) {\n        iVar19 = *piVar14;\nLAB_000255a6:\n        free(p);\n        if (local_b8 != (FTSENT *)0x0) {\n          pDVar27 = local_b8->fts_dirp;\n          p_Var25 = local_b8->fts_link;\n          if (pDVar27 == (DIR *)0x0) goto LAB_000255f4;\n          do {\n            closedir((DIR *)pDVar27);\n            free(local_b8);\n            local_b8 = p_Var25;\n            while( true ) {\n              if (local_b8 == (FTSENT *)0x0) goto LAB_00025608;\n              pDVar27 = local_b8->fts_dirp;\n              p_Var25 = local_b8->fts_link;\n              if (pDVar27 != (DIR *)0x0) break;\nLAB_000255f4:\n              free(local_b8);\n              local_b8 = p_Var25;\n            }\n          } while( true );\n        }\nLAB_00025608:\n        closedir((DIR *)pFVar30->fts_dirp);\n        pFVar30->fts_dirp = (DIR *)0x0;\n        pFVar30->fts_info = 7;\n        local_b8 = (FTSENT *)0x0;\n        sp->fts_options = sp->fts_options | 0x4000;\n        *piVar14 = iVar19;\n        goto LAB_0002563f;\n      }\n      pFVar11 = p + 1;\n      memcpy(pFVar11,pdVar15->d_name,__n);\n      pcVar3 = sp->fts_path;\n      *(undefined1 *)((int)p[1].fts_statp + (__n - 0x44)) = 0;\n      p->fts_namelen = __n;\n      p->fts_fts = sp;\n      p->fts_path = pcVar3;\n      p->fts_errno = 0;\n      p->fts_dirp = (DIR *)0x0;\n      p->fts_flags = 0;\n      p->fts_instr = 3;\n      p->fts_number = 0;\n      p->fts_pointer = (void *)0x0;\n      if (local_b0 <= __n) {\n        uVar17 = local_d0 + 0x101 + sp->fts_pathlen + __n;\n        if (uVar17 < sp->fts_pathlen) {\n          iVar19 = 0x24;\n          free(pcVar3);\n          sp->fts_path = (char *)0x0;\n          *piVar14 = 0x24;\n        }\n        else {\n          sp->fts_pathlen = uVar17;\n          pcVar18 = (char *)realloc(pcVar3,uVar17);\n          if (pcVar18 != (char *)0x0) {\n            sp->fts_path = pcVar18;\n            if ((pcVar3 != pcVar18) && (bVar6 = true, (sp->fts_options & 4) != 0)) {\n              local_a4 = pcVar18 + local_d0;\n            }\n            local_b0 = sp->fts_pathlen - local_d0;\n            goto LAB_000253d8;\n          }\n          free(sp->fts_path);\n          sp->fts_path = (char *)0x0;\n          iVar19 = *piVar14;\n        }\n        goto LAB_000255a6;\n      }\nLAB_000253d8:\n      if (CARRY4(__n,local_d0)) {\n        free(p);\n        if (local_b8 != (FTSENT *)0x0) {\n          pDVar27 = local_b8->fts_dirp;\n          p_Var25 = local_b8->fts_link;\n          if (pDVar27 == (DIR *)0x0) goto LAB_00025e84;\n          do {\n            closedir((DIR *)pDVar27);\n            free(local_b8);\n            local_b8 = p_Var25;\n            while( true ) {\n              if (local_b8 == (FTSENT *)0x0) goto LAB_00025e94;\n              pDVar27 = local_b8->fts_dirp;\n              p_Var25 = local_b8->fts_link;\n              if (pDVar27 != (DIR *)0x0) break;\nLAB_00025e84:\n              free(local_b8);\n              local_b8 = p_Var25;\n            }\n          } while( true );\n        }\nLAB_00025e94:\n        closedir((DIR *)pFVar30->fts_dirp);\n        pFVar30->fts_dirp = (DIR *)0x0;\n        pFVar30->fts_info = 7;\n        local_b8 = (FTSENT *)0x0;\n        sp->fts_options = sp->fts_options | 0x4000;\n        *piVar14 = 0x24;\n        goto LAB_0002563f;\n      }\n      uVar16 = *(undefined4 *)((int)&pdVar15->d_ino + 4);\n      p->fts_pathlen = __n + local_d0;\n      p->fts_level = iVar19 + 1;\n      p->fts_parent = sp->fts_cur;\n      _Var8 = pdVar15->d_ino;\n      *(undefined4 *)((int)&p->fts_statp[0].st_ino + 4) = uVar16;\n      *(int *)&p->fts_statp[0].st_ino = (int)_Var8;\n      uVar17 = sp->fts_options;\n      if ((uVar17 & 4) == 0) {\n        p->fts_accpath = (char *)pFVar11;\n      }\n      else {\n        p->fts_accpath = p->fts_path;\n        memmove(local_a4,pFVar11,p->fts_namelen + 1);\n        uVar17 = sp->fts_options;\n      }\n      if ((sp->fts_compar == (_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *)0x0) ||\n         ((uVar17 & 0x400) != 0)) {\n        uVar29 = pdVar15->d_type - 1;\n        if (((uVar17 & 0x18) == 0x18) && ((pdVar15->d_type & 0xfb) != 0)) {\n          p->fts_info = 0xb;\n          if (uVar29 < 0xc) {\n            p->fts_statp[0].st_mode = *(__mode_t *)(CSWTCH_40 + uVar29 * 4);\n            uVar16 = 1;\n          }\n          else {\n            p->fts_statp[0].st_mode = 0;\n            uVar16 = 1;\n          }\n        }\n        else {\n          p->fts_info = 0xb;\n          if (uVar29 < 0xc) {\n            p->fts_statp[0].st_mode = *(__mode_t *)(CSWTCH_40 + uVar29 * 4);\n            uVar16 = 2;\n          }\n          else {\n            p->fts_statp[0].st_mode = 0;\n            uVar16 = 2;\n          }\n        }\n        *(undefined4 *)&p->fts_statp[0].st_size = uVar16;\n        *(undefined4 *)((int)&p->fts_statp[0].st_size + 4) = 0;\n      }\n      else {\n        uVar13 = fts_stat(sp,p,false);\n        p->fts_info = uVar13;\n      }\n      p->fts_link = (_ftsent *)0x0;\n      pFVar11 = p;\n      if (local_b8 != (FTSENT *)0x0) {\n        local_c4->fts_link = p;\n        pFVar11 = local_b8;\n      }\n      local_b8 = pFVar11;\n      local_c4 = p;\n      if (local_d4 == 10000) {\n        if (sp->fts_compar == (_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *)0x0) {\n          pFVar4 = pFVar30->fts_fts;\n          if ((pFVar4->fts_options & 0x200) != 0) {\n            table = pFVar4->fts_leaf_optimization_works_ht;\n            if (table == (hash_table *)0x0) {\n              table = hash_initialize(0xd,(Hash_tuning *)0x0,dev_type_hash,dev_type_compare,\n                                      (Hash_data_freer)data_freer);\n              pFVar4->fts_leaf_optimization_works_ht = table;\n              if (table != (Hash_table *)0x0) goto LAB_00025920;\nLAB_000259b0:\n              if ((local_9c < 0) ||\n                 (iVar22 = fstatfs64(local_9c,(statfs64 *)&fs_buf), _Var10 = fs_buf.f_type,\n                 iVar22 != 0)) goto LAB_00025a48;\n              local_d4 = fs_buf.f_type;\n              if ((table != (Hash_table *)0x0) &&\n                 (entry = (undefined4 *)malloc(0xc), entry != (undefined4 *)0x0)) {\n                _Var9 = pFVar30->fts_statp[0].st_dev;\n                entry[1] = *(undefined4 *)((int)&pFVar30->fts_statp[0].st_dev + 4);\n                *entry = (int)_Var9;\n                entry[2] = _Var10;\n                puVar23 = (undefined4 *)hash_insert(table,entry);\n                if (puVar23 == (undefined4 *)0x0) {\n                  free(entry);\n                  local_d4 = fs_buf.f_type;\n                }\n                else {\n                  if (entry != puVar23) {\n                    /* WARNING: Subroutine does not return */\n                    abort();\n                  }\n                  local_d4 = fs_buf.f_type;\n                }\n              }\n            }\n            else {\nLAB_00025920:\n              tmp.st_dev._4_4_ = *(undefined4 *)((int)&pFVar30->fts_statp[0].st_dev + 4);\n              tmp.st_dev._0_4_ = (undefined4)pFVar30->fts_statp[0].st_dev;\n              pvVar21 = hash_lookup(table,&tmp);\n              if (pvVar21 == (void *)0x0) goto LAB_000259b0;\n              local_d4 = *(int *)((int)pvVar21 + 8);\n            }\n            if (((local_d4 == 0x6969) || (local_d4 == 0x1021994)) || (local_d4 == -0xacb2be)) {\n              bVar7 = false;\n              goto LAB_00025473;\n            }\n          }\nLAB_00025a48:\n          bVar7 = true;\n        }\nLAB_00025473:\n        local_d4 = 0x2711;\n        goto LAB_000252fb;\n      }\n      local_d4 = local_d4 + 1;\n    } while (local_d4 < local_a8);\nLAB_000256de:\n    if (bVar6) {\n      pcVar3 = sp->fts_path;\n      for (p_Var25 = sp->fts_child; p_Var25 != (_ftsent *)0x0; p_Var25 = p_Var25->fts_link) {\n        while ((_ftsent *)p_Var25->fts_accpath != p_Var25 + 1) {\n          pcVar18 = p_Var25->fts_path;\n          p_Var25->fts_path = pcVar3;\n          p_Var25->fts_accpath = pcVar3 + ((int)p_Var25->fts_accpath - (int)pcVar18);\n          p_Var25 = p_Var25->fts_link;\n          if (p_Var25 == (_ftsent *)0x0) goto LAB_00025aef;\n        }\n        p_Var25->fts_path = pcVar3;\n      }\nLAB_00025aef:\n      iVar19 = local_b8->fts_level;\n      p_Var25 = local_b8;\n      while (-1 < iVar19) {\n        while( true ) {\n          if ((FTSENT *)p_Var25->fts_accpath != p_Var25 + 1) {\n            p_Var25->fts_accpath = pcVar3 + ((int)p_Var25->fts_accpath - (int)p_Var25->fts_path);\n          }\n          p_Var5 = p_Var25->fts_link;\n          p_Var25->fts_path = pcVar3;\n          if (p_Var5 == (_ftsent *)0x0) break;\n          p_Var25 = p_Var5;\n          if (p_Var5->fts_level < 0) goto LAB_000256e9;\n        }\n        p_Var25 = p_Var25->fts_parent;\n        iVar19 = p_Var25->fts_level;\n      }\n    }\nLAB_000256e9:\n    if ((sp->fts_options & 4) != 0) {\n      if ((sp->fts_pathlen == local_d0) || (local_d4 == 0)) {\n        local_a4 = local_a4 + -1;\n      }\n      *local_a4 = '\0';\n    }\n    if ((pDVar26 == (DIR *)0x0) && (bVar31)) {\n      if ((type == 1) || (local_d4 == 0)) {\n        if (pFVar30->fts_level == 0) {\n          iVar19 = restore_initial_cwd(sp);\n        }\n        else {\n          iVar19 = fts_safe_changedir(sp,pFVar30->fts_parent,-1,"..");\n        }\n        if (iVar19 != 0) {\n          pFVar30->fts_info = 7;\n          sp->fts_options = sp->fts_options | 0x4000;\n          while (pFVar30 = local_b8, local_b8 != (FTSENT *)0x0) {\n            while( true ) {\n              local_b8 = pFVar30->fts_link;\n              if ((DIR *)pFVar30->fts_dirp == (DIR *)0x0) break;\n              closedir((DIR *)pFVar30->fts_dirp);\n              free(pFVar30);\n              pFVar30 = local_b8;\n              if (local_b8 == (_ftsent *)0x0) goto LAB_00025c40;\n            }\n            free(pFVar30);\n          }\n          goto LAB_00025c40;\n        }\n        goto LAB_0002574d;\n      }\n    }\n    else {\nLAB_0002574d:\n      if (local_d4 == 0) {\n        if (((type == 3) && (pFVar30->fts_info != 4)) && (pFVar30->fts_info != 7)) {\n          pFVar30->fts_info = 6;\n        }\n        if (local_b8 != (FTSENT *)0x0) {\n          pDVar26 = (DIR *)local_b8->fts_dirp;\n          p_Var25 = local_b8->fts_link;\n          if (pDVar26 == (DIR *)0x0) goto LAB_00025c94;\n          do {\n            closedir(pDVar26);\n            free(local_b8);\n            local_b8 = p_Var25;\n            while( true ) {\n              if (local_b8 == (FTSENT *)0x0) goto LAB_00025c40;\n              pDVar26 = (DIR *)local_b8->fts_dirp;\n              p_Var25 = local_b8->fts_link;\n              if (pDVar26 != (DIR *)0x0) break;\nLAB_00025c94:\n              free(local_b8);\n              local_b8 = p_Var25;\n            }\n          } while( true );\n        }\n        goto LAB_00025c40;\n      }\n    }\n    if (bVar7) {\n      sp->fts_compar = fts_compare_ino;\n      local_b8 = fts_sort(sp,local_b8,local_d4);\n      sp->fts_compar = (_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *)0x0;\n    }\n    else if ((sp->fts_compar != (_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *)0x0) && (local_d4 != 1)\n            ) {\n      local_b8 = fts_sort(sp,local_b8,local_d4);\n    }\n  }" else (compound_statement "{\n    local_9c = dirfd(pDVar26);\n    if (local_9c < 0) {\n      closedir((DIR *)pFVar30->fts_dirp);\n      pFVar30->fts_dirp = (DIR *)0x0;\n      goto joined_r0x00025c30;\n    }\n    if (sp->fts_compar == (_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *)0x0) {\n      local_a8 = 100000;\n      uVar17 = sp->fts_options;\n      bVar31 = true;\n    }\n    else {\n      local_a8 = 0xffffffff;\nLAB_0002521b:\n      bVar31 = true;\n      uVar17 = sp->fts_options;\n    }\nLAB_00025223:\n    sVar2 = pFVar30->fts_pathlen;\n    sVar28 = sVar2 - 1;\n    local_d0 = sVar2;\n    if (pFVar30->fts_path[sVar2 - 1] != '/') {\n      local_d0 = sVar2 + 1;\n      sVar28 = sVar2;\n    }\n    local_a4 = (char *)0x0;\n    if ((uVar17 & 4) != 0) {\n      local_a4 = sp->fts_path + sVar28 + 1;\n      sp->fts_path[sVar28] = '/';\n    }\n    data_freer = PTR_free_0003afa8;\n    local_b0 = sp->fts_pathlen - local_d0;\n    bVar7 = false;\n    bVar6 = false;\n    iVar19 = pFVar30->fts_level;\n    local_c4 = (FTSENT *)0x0;\n    local_d4 = 0;\n    local_b8 = (FTSENT *)0x0;\nLAB_000252fb:\n    do {\n      do {\n        pDVar20 = (DIR *)pFVar30->fts_dirp;\n        if (pDVar20 == (DIR *)0x0) goto LAB_000256de;\n        piVar14 = __errno_location();\n        *piVar14 = 0;\n        pdVar15 = readdir64(pDVar20);\n        if (pdVar15 == (dirent64 *)0x0) {\n          if (*piVar14 != 0) {\n            pFVar30->fts_errno = *piVar14;\n            pFVar30->fts_info = (-(ushort)(pDVar26 == (DIR *)0x0 && local_d4 == 0) & 0xfffd) + 7;\n          }\n          if ((DIR *)pFVar30->fts_dirp != (DIR *)0x0) {\n            closedir((DIR *)pFVar30->fts_dirp);\n            pFVar30->fts_dirp = (DIR *)0x0;\n          }\n          goto LAB_000256de;\n        }\n      } while ((((sp->fts_options & 0x20) == 0) && (pdVar15->d_name[0] == '.')) &&\n              ((pdVar15->d_name[1] == '\0' || (*(short *)(pdVar15->d_name + 1) == 0x2e))));\n      __n = strlen(pdVar15->d_name);\n      p = (FTSENT *)malloc(__n + 0xa8 & 0xfffffffc);\n      if (p == (FTSENT *)0x0) {\n        iVar19 = *piVar14;\nLAB_000255a6:\n        free(p);\n        if (local_b8 != (FTSENT *)0x0) {\n          pDVar27 = local_b8->fts_dirp;\n          p_Var25 = local_b8->fts_link;\n          if (pDVar27 == (DIR *)0x0) goto LAB_000255f4;\n          do {\n            closedir((DIR *)pDVar27);\n            free(local_b8);\n            local_b8 = p_Var25;\n            while( true ) {\n              if (local_b8 == (FTSENT *)0x0) goto LAB_00025608;\n              pDVar27 = local_b8->fts_dirp;\n              p_Var25 = local_b8->fts_link;\n              if (pDVar27 != (DIR *)0x0) break;\nLAB_000255f4:\n              free(local_b8);\n              local_b8 = p_Var25;\n            }\n          } while( true );\n        }\nLAB_00025608:\n        closedir((DIR *)pFVar30->fts_dirp);\n        pFVar30->fts_dirp = (DIR *)0x0;\n        pFVar30->fts_info = 7;\n        local_b8 = (FTSENT *)0x0;\n        sp->fts_options = sp->fts_options | 0x4000;\n        *piVar14 = iVar19;\n        goto LAB_0002563f;\n      }\n      pFVar11 = p + 1;\n      memcpy(pFVar11,pdVar15->d_name,__n);\n      pcVar3 = sp->fts_path;\n      *(undefined1 *)((int)p[1].fts_statp + (__n - 0x44)) = 0;\n      p->fts_namelen = __n;\n      p->fts_fts = sp;\n      p->fts_path = pcVar3;\n      p->fts_errno = 0;\n      p->fts_dirp = (DIR *)0x0;\n      p->fts_flags = 0;\n      p->fts_instr = 3;\n      p->fts_number = 0;\n      p->fts_pointer = (void *)0x0;\n      if (local_b0 <= __n) {\n        uVar17 = local_d0 + 0x101 + sp->fts_pathlen + __n;\n        if (uVar17 < sp->fts_pathlen) {\n          iVar19 = 0x24;\n          free(pcVar3);\n          sp->fts_path = (char *)0x0;\n          *piVar14 = 0x24;\n        }\n        else {\n          sp->fts_pathlen = uVar17;\n          pcVar18 = (char *)realloc(pcVar3,uVar17);\n          if (pcVar18 != (char *)0x0) {\n            sp->fts_path = pcVar18;\n            if ((pcVar3 != pcVar18) && (bVar6 = true, (sp->fts_options & 4) != 0)) {\n              local_a4 = pcVar18 + local_d0;\n            }\n            local_b0 = sp->fts_pathlen - local_d0;\n            goto LAB_000253d8;\n          }\n          free(sp->fts_path);\n          sp->fts_path = (char *)0x0;\n          iVar19 = *piVar14;\n        }\n        goto LAB_000255a6;\n      }\nLAB_000253d8:\n      if (CARRY4(__n,local_d0)) {\n        free(p);\n        if (local_b8 != (FTSENT *)0x0) {\n          pDVar27 = local_b8->fts_dirp;\n          p_Var25 = local_b8->fts_link;\n          if (pDVar27 == (DIR *)0x0) goto LAB_00025e84;\n          do {\n            closedir((DIR *)pDVar27);\n            free(local_b8);\n            local_b8 = p_Var25;\n            while( true ) {\n              if (local_b8 == (FTSENT *)0x0) goto LAB_00025e94;\n              pDVar27 = local_b8->fts_dirp;\n              p_Var25 = local_b8->fts_link;\n              if (pDVar27 != (DIR *)0x0) break;\nLAB_00025e84:\n              free(local_b8);\n              local_b8 = p_Var25;\n            }\n          } while( true );\n        }\nLAB_00025e94:\n        closedir((DIR *)pFVar30->fts_dirp);\n        pFVar30->fts_dirp = (DIR *)0x0;\n        pFVar30->fts_info = 7;\n        local_b8 = (FTSENT *)0x0;\n        sp->fts_options = sp->fts_options | 0x4000;\n        *piVar14 = 0x24;\n        goto LAB_0002563f;\n      }\n      uVar16 = *(undefined4 *)((int)&pdVar15->d_ino + 4);\n      p->fts_pathlen = __n + local_d0;\n      p->fts_level = iVar19 + 1;\n      p->fts_parent = sp->fts_cur;\n      _Var8 = pdVar15->d_ino;\n      *(undefined4 *)((int)&p->fts_statp[0].st_ino + 4) = uVar16;\n      *(int *)&p->fts_statp[0].st_ino = (int)_Var8;\n      uVar17 = sp->fts_options;\n      if ((uVar17 & 4) == 0) {\n        p->fts_accpath = (char *)pFVar11;\n      }\n      else {\n        p->fts_accpath = p->fts_path;\n        memmove(local_a4,pFVar11,p->fts_namelen + 1);\n        uVar17 = sp->fts_options;\n      }\n      if ((sp->fts_compar == (_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *)0x0) ||\n         ((uVar17 & 0x400) != 0)) {\n        uVar29 = pdVar15->d_type - 1;\n        if (((uVar17 & 0x18) == 0x18) && ((pdVar15->d_type & 0xfb) != 0)) {\n          p->fts_info = 0xb;\n          if (uVar29 < 0xc) {\n            p->fts_statp[0].st_mode = *(__mode_t *)(CSWTCH_40 + uVar29 * 4);\n            uVar16 = 1;\n          }\n          else {\n            p->fts_statp[0].st_mode = 0;\n            uVar16 = 1;\n          }\n        }\n        else {\n          p->fts_info = 0xb;\n          if (uVar29 < 0xc) {\n            p->fts_statp[0].st_mode = *(__mode_t *)(CSWTCH_40 + uVar29 * 4);\n            uVar16 = 2;\n          }\n          else {\n            p->fts_statp[0].st_mode = 0;\n            uVar16 = 2;\n          }\n        }\n        *(undefined4 *)&p->fts_statp[0].st_size = uVar16;\n        *(undefined4 *)((int)&p->fts_statp[0].st_size + 4) = 0;\n      }\n      else {\n        uVar13 = fts_stat(sp,p,false);\n        p->fts_info = uVar13;\n      }\n      p->fts_link = (_ftsent *)0x0;\n      pFVar11 = p;\n      if (local_b8 != (FTSENT *)0x0) {\n        local_c4->fts_link = p;\n        pFVar11 = local_b8;\n      }\n      local_b8 = pFVar11;\n      local_c4 = p;\n      if (local_d4 == 10000) {\n        if (sp->fts_compar == (_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *)0x0) {\n          pFVar4 = pFVar30->fts_fts;\n          if ((pFVar4->fts_options & 0x200) != 0) {\n            table = pFVar4->fts_leaf_optimization_works_ht;\n            if (table == (hash_table *)0x0) {\n              table = hash_initialize(0xd,(Hash_tuning *)0x0,dev_type_hash,dev_type_compare,\n                                      (Hash_data_freer)data_freer);\n              pFVar4->fts_leaf_optimization_works_ht = table;\n              if (table != (Hash_table *)0x0) goto LAB_00025920;\nLAB_000259b0:\n              if ((local_9c < 0) ||\n                 (iVar22 = fstatfs64(local_9c,(statfs64 *)&fs_buf), _Var10 = fs_buf.f_type,\n                 iVar22 != 0)) goto LAB_00025a48;\n              local_d4 = fs_buf.f_type;\n              if ((table != (Hash_table *)0x0) &&\n                 (entry = (undefined4 *)malloc(0xc), entry != (undefined4 *)0x0)) {\n                _Var9 = pFVar30->fts_statp[0].st_dev;\n                entry[1] = *(undefined4 *)((int)&pFVar30->fts_statp[0].st_dev + 4);\n                *entry = (int)_Var9;\n                entry[2] = _Var10;\n                puVar23 = (undefined4 *)hash_insert(table,entry);\n                if (puVar23 == (undefined4 *)0x0) {\n                  free(entry);\n                  local_d4 = fs_buf.f_type;\n                }\n                else {\n                  if (entry != puVar23) {\n                    /* WARNING: Subroutine does not return */\n                    abort();\n                  }\n                  local_d4 = fs_buf.f_type;\n                }\n              }\n            }\n            else {\nLAB_00025920:\n              tmp.st_dev._4_4_ = *(undefined4 *)((int)&pFVar30->fts_statp[0].st_dev + 4);\n              tmp.st_dev._0_4_ = (undefined4)pFVar30->fts_statp[0].st_dev;\n              pvVar21 = hash_lookup(table,&tmp);\n              if (pvVar21 == (void *)0x0) goto LAB_000259b0;\n              local_d4 = *(int *)((int)pvVar21 + 8);\n            }\n            if (((local_d4 == 0x6969) || (local_d4 == 0x1021994)) || (local_d4 == -0xacb2be)) {\n              bVar7 = false;\n              goto LAB_00025473;\n            }\n          }\nLAB_00025a48:\n          bVar7 = true;\n        }\nLAB_00025473:\n        local_d4 = 0x2711;\n        goto LAB_000252fb;\n      }\n      local_d4 = local_d4 + 1;\n    } while (local_d4 < local_a8);\nLAB_000256de:\n    if (bVar6) {\n      pcVar3 = sp->fts_path;\n      for (p_Var25 = sp->fts_child; p_Var25 != (_ftsent *)0x0; p_Var25 = p_Var25->fts_link) {\n        while ((_ftsent *)p_Var25->fts_accpath != p_Var25 + 1) {\n          pcVar18 = p_Var25->fts_path;\n          p_Var25->fts_path = pcVar3;\n          p_Var25->fts_accpath = pcVar3 + ((int)p_Var25->fts_accpath - (int)pcVar18);\n          p_Var25 = p_Var25->fts_link;\n          if (p_Var25 == (_ftsent *)0x0) goto LAB_00025aef;\n        }\n        p_Var25->fts_path = pcVar3;\n      }\nLAB_00025aef:\n      iVar19 = local_b8->fts_level;\n      p_Var25 = local_b8;\n      while (-1 < iVar19) {\n        while( true ) {\n          if ((FTSENT *)p_Var25->fts_accpath != p_Var25 + 1) {\n            p_Var25->fts_accpath = pcVar3 + ((int)p_Var25->fts_accpath - (int)p_Var25->fts_path);\n          }\n          p_Var5 = p_Var25->fts_link;\n          p_Var25->fts_path = pcVar3;\n          if (p_Var5 == (_ftsent *)0x0) break;\n          p_Var25 = p_Var5;\n          if (p_Var5->fts_level < 0) goto LAB_000256e9;\n        }\n        p_Var25 = p_Var25->fts_parent;\n        iVar19 = p_Var25->fts_level;\n      }\n    }\nLAB_000256e9:\n    if ((sp->fts_options & 4) != 0) {\n      if ((sp->fts_pathlen == local_d0) || (local_d4 == 0)) {\n        local_a4 = local_a4 + -1;\n      }\n      *local_a4 = '\0';\n    }\n    if ((pDVar26 == (DIR *)0x0) && (bVar31)) {\n      if ((type == 1) || (local_d4 == 0)) {\n        if (pFVar30->fts_level == 0) {\n          iVar19 = restore_initial_cwd(sp);\n        }\n        else {\n          iVar19 = fts_safe_changedir(sp,pFVar30->fts_parent,-1,"..");\n        }\n        if (iVar19 != 0) {\n          pFVar30->fts_info = 7;\n          sp->fts_options = sp->fts_options | 0x4000;\n          while (pFVar30 = local_b8, local_b8 != (FTSENT *)0x0) {\n            while( true ) {\n              local_b8 = pFVar30->fts_link;\n              if ((DIR *)pFVar30->fts_dirp == (DIR *)0x0) break;\n              closedir((DIR *)pFVar30->fts_dirp);\n              free(pFVar30);\n              pFVar30 = local_b8;\n              if (local_b8 == (_ftsent *)0x0) goto LAB_00025c40;\n            }\n            free(pFVar30);\n          }\n          goto LAB_00025c40;\n        }\n        goto LAB_0002574d;\n      }\n    }\n    else {\nLAB_0002574d:\n      if (local_d4 == 0) {\n        if (((type == 3) && (pFVar30->fts_info != 4)) && (pFVar30->fts_info != 7)) {\n          pFVar30->fts_info = 6;\n        }\n        if (local_b8 != (FTSENT *)0x0) {\n          pDVar26 = (DIR *)local_b8->fts_dirp;\n          p_Var25 = local_b8->fts_link;\n          if (pDVar26 == (DIR *)0x0) goto LAB_00025c94;\n          do {\n            closedir(pDVar26);\n            free(local_b8);\n            local_b8 = p_Var25;\n            while( true ) {\n              if (local_b8 == (FTSENT *)0x0) goto LAB_00025c40;\n              pDVar26 = (DIR *)local_b8->fts_dirp;\n              p_Var25 = local_b8->fts_link;\n              if (pDVar26 != (DIR *)0x0) break;\nLAB_00025c94:\n              free(local_b8);\n              local_b8 = p_Var25;\n            }\n          } while( true );\n        }\n        goto LAB_00025c40;\n      }\n    }\n    if (bVar7) {\n      sp->fts_compar = fts_compare_ino;\n      local_b8 = fts_sort(sp,local_b8,local_d4);\n      sp->fts_compar = (_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *)0x0;\n    }\n    else if ((sp->fts_compar != (_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *)0x0) && (local_d4 != 1)\n            ) {\n      local_b8 = fts_sort(sp,local_b8,local_d4);\n    }\n  }" { (expression_statement "local_9c = dirfd(pDVar26);" (assignment_expression "local_9c = dirfd(pDVar26)" identifier = (call_expression "dirfd(pDVar26)" identifier (argument_list "(pDVar26)" ( identifier )))) ;) (if_statement "if (local_9c < 0) {\n      closedir((DIR *)pFVar30->fts_dirp);\n      pFVar30->fts_dirp = (DIR *)0x0;\n      goto joined_r0x00025c30;\n    }" if (parenthesized_expression "(local_9c < 0)" ( (binary_expression "local_9c < 0" identifier < number_literal) )) (compound_statement "{\n      closedir((DIR *)pFVar30->fts_dirp);\n      pFVar30->fts_dirp = (DIR *)0x0;\n      goto joined_r0x00025c30;\n    }" { (expression_statement "closedir((DIR *)pFVar30->fts_dirp);" (call_expression "closedir((DIR *)pFVar30->fts_dirp)" identifier (argument_list "((DIR *)pFVar30->fts_dirp)" ( (cast_expression "(DIR *)pFVar30->fts_dirp" ( (type_descriptor "DIR *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "pFVar30->fts_dirp" identifier -> field_identifier)) ))) ;) (expression_statement "pFVar30->fts_dirp = (DIR *)0x0;" (assignment_expression "pFVar30->fts_dirp = (DIR *)0x0" (field_expression "pFVar30->fts_dirp" identifier -> field_identifier) = (cast_expression "(DIR *)0x0" ( (type_descriptor "DIR *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (goto_statement "goto joined_r0x00025c30;" goto statement_identifier ;) })) (if_statement "if (sp->fts_compar == (_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *)0x0) {\n      local_a8 = 100000;\n      uVar17 = sp->fts_options;\n      bVar31 = true;\n    }\n    else {\n      local_a8 = 0xffffffff;\nLAB_0002521b:\n      bVar31 = true;\n      uVar17 = 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_a8 = 100000;\n      uVar17 = sp->fts_options;\n      bVar31 = true;\n    }" { (expression_statement "local_a8 = 100000;" (assignment_expression "local_a8 = 100000" identifier = number_literal) ;) (expression_statement "uVar17 = sp->fts_options;" (assignment_expression "uVar17 = sp->fts_options" identifier = (field_expression "sp->fts_options" identifier -> field_identifier)) ;) (expression_statement "bVar31 = true;" (assignment_expression "bVar31 = true" identifier = true) ;) }) (else_clause "else {\n      local_a8 = 0xffffffff;\nLAB_0002521b:\n      bVar31 = true;\n      uVar17 = sp->fts_options;\n    }" else (compound_statement "{\n      local_a8 = 0xffffffff;\nLAB_0002521b:\n      bVar31 = true;\n      uVar17 = sp->fts_options;\n    }" { (expression_statement "local_a8 = 0xffffffff;" (assignment_expression "local_a8 = 0xffffffff" identifier = number_literal) ;) (labeled_statement "LAB_0002521b:\n      bVar31 = true;" statement_identifier : (expression_statement "bVar31 = true;" (assignment_expression "bVar31 = true" identifier = true) ;)) (expression_statement "uVar17 = sp->fts_options;" (assignment_expression "uVar17 = sp->fts_options" identifier = (field_expression "sp->fts_options" identifier -> field_identifier)) ;) }))) (labeled_statement "LAB_00025223:\n    sVar2 = pFVar30->fts_pathlen;" statement_identifier : (expression_statement "sVar2 = pFVar30->fts_pathlen;" (assignment_expression "sVar2 = pFVar30->fts_pathlen" identifier = (field_expression "pFVar30->fts_pathlen" identifier -> field_identifier)) ;)) (expression_statement "sVar28 = sVar2 - 1;" (assignment_expression "sVar28 = sVar2 - 1" identifier = (binary_expression "sVar2 - 1" identifier - number_literal)) ;) (expression_statement "local_d0 = sVar2;" (assignment_expression "local_d0 = sVar2" identifier = identifier) ;) (if_statement "if (pFVar30->fts_path[sVar2 - 1] != '/') {\n      local_d0 = sVar2 + 1;\n      sVar28 = sVar2;\n    }" if (parenthesized_expression "(pFVar30->fts_path[sVar2 - 1] != '/')" ( (binary_expression "pFVar30->fts_path[sVar2 - 1] != '/'" (subscript_expression "pFVar30->fts_path[sVar2 - 1]" (field_expression "pFVar30->fts_path" identifier -> field_identifier) [ (binary_expression "sVar2 - 1" identifier - number_literal) ]) != (char_literal "'/'" ' character ')) )) (compound_statement "{\n      local_d0 = sVar2 + 1;\n      sVar28 = sVar2;\n    }" { (expression_statement "local_d0 = sVar2 + 1;" (assignment_expression "local_d0 = sVar2 + 1" identifier = (binary_expression "sVar2 + 1" identifier + number_literal)) ;) (expression_statement "sVar28 = sVar2;" (assignment_expression "sVar28 = sVar2" identifier = identifier) ;) })) (expression_statement "local_a4 = (char *)0x0;" (assignment_expression "local_a4 = (char *)0x0" identifier = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if ((uVar17 & 4) != 0) {\n      local_a4 = sp->fts_path + sVar28 + 1;\n      sp->fts_path[sVar28] = '/';\n    }" if (parenthesized_expression "((uVar17 & 4) != 0)" ( (binary_expression "(uVar17 & 4) != 0" (parenthesized_expression "(uVar17 & 4)" ( (binary_expression "uVar17 & 4" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n      local_a4 = sp->fts_path + sVar28 + 1;\n      sp->fts_path[sVar28] = '/';\n    }" { (expression_statement "local_a4 = sp->fts_path + sVar28 + 1;" (assignment_expression "local_a4 = sp->fts_path + sVar28 + 1" identifier = (binary_expression "sp->fts_path + sVar28 + 1" (binary_expression "sp->fts_path + sVar28" (field_expression "sp->fts_path" identifier -> field_identifier) + identifier) + number_literal)) ;) (expression_statement "sp->fts_path[sVar28] = '/';" (assignment_expression "sp->fts_path[sVar28] = '/'" (subscript_expression "sp->fts_path[sVar28]" (field_expression "sp->fts_path" identifier -> field_identifier) [ identifier ]) = (char_literal "'/'" ' character ')) ;) })) (expression_statement "data_freer = PTR_free_0003afa8;" (assignment_expression "data_freer = PTR_free_0003afa8" identifier = identifier) ;) (expression_statement "local_b0 = sp->fts_pathlen - local_d0;" (assignment_expression "local_b0 = sp->fts_pathlen - local_d0" identifier = (binary_expression "sp->fts_pathlen - local_d0" (field_expression "sp->fts_pathlen" identifier -> field_identifier) - identifier)) ;) (expression_statement "bVar7 = false;" (assignment_expression "bVar7 = false" identifier = false) ;) (expression_statement "bVar6 = false;" (assignment_expression "bVar6 = false" identifier = false) ;) (expression_statement "iVar19 = pFVar30->fts_level;" (assignment_expression "iVar19 = pFVar30->fts_level" identifier = (field_expression "pFVar30->fts_level" identifier -> field_identifier)) ;) (expression_statement "local_c4 = (FTSENT *)0x0;" (assignment_expression "local_c4 = (FTSENT *)0x0" identifier = (cast_expression "(FTSENT *)0x0" ( (type_descriptor "FTSENT *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_d4 = 0;" (assignment_expression "local_d4 = 0" identifier = number_literal) ;) (expression_statement "local_b8 = (FTSENT *)0x0;" (assignment_expression "local_b8 = (FTSENT *)0x0" identifier = (cast_expression "(FTSENT *)0x0" ( (type_descriptor "FTSENT *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (labeled_statement "LAB_000252fb:\n    do {\n      do {\n        pDVar20 = (DIR *)pFVar30->fts_dirp;\n        if (pDVar20 == (DIR *)0x0) goto LAB_000256de;\n        piVar14 = __errno_location();\n        *piVar14 = 0;\n        pdVar15 = readdir64(pDVar20);\n        if (pdVar15 == (dirent64 *)0x0) {\n          if (*piVar14 != 0) {\n            pFVar30->fts_errno = *piVar14;\n            pFVar30->fts_info = (-(ushort)(pDVar26 == (DIR *)0x0 && local_d4 == 0) & 0xfffd) + 7;\n          }\n          if ((DIR *)pFVar30->fts_dirp != (DIR *)0x0) {\n            closedir((DIR *)pFVar30->fts_dirp);\n            pFVar30->fts_dirp = (DIR *)0x0;\n          }\n          goto LAB_000256de;\n        }\n      } while ((((sp->fts_options & 0x20) == 0) && (pdVar15->d_name[0] == '.')) &&\n              ((pdVar15->d_name[1] == '\0' || (*(short *)(pdVar15->d_name + 1) == 0x2e))));\n      __n = strlen(pdVar15->d_name);\n      p = (FTSENT *)malloc(__n + 0xa8 & 0xfffffffc);\n      if (p == (FTSENT *)0x0) {\n        iVar19 = *piVar14;\nLAB_000255a6:\n        free(p);\n        if (local_b8 != (FTSENT *)0x0) {\n          pDVar27 = local_b8->fts_dirp;\n          p_Var25 = local_b8->fts_link;\n          if (pDVar27 == (DIR *)0x0) goto LAB_000255f4;\n          do {\n            closedir((DIR *)pDVar27);\n            free(local_b8);\n            local_b8 = p_Var25;\n            while( true ) {\n              if (local_b8 == (FTSENT *)0x0) goto LAB_00025608;\n              pDVar27 = local_b8->fts_dirp;\n              p_Var25 = local_b8->fts_link;\n              if (pDVar27 != (DIR *)0x0) break;\nLAB_000255f4:\n              free(local_b8);\n              local_b8 = p_Var25;\n            }\n          } while( true );\n        }\nLAB_00025608:\n        closedir((DIR *)pFVar30->fts_dirp);\n        pFVar30->fts_dirp = (DIR *)0x0;\n        pFVar30->fts_info = 7;\n        local_b8 = (FTSENT *)0x0;\n        sp->fts_options = sp->fts_options | 0x4000;\n        *piVar14 = iVar19;\n        goto LAB_0002563f;\n      }\n      pFVar11 = p + 1;\n      memcpy(pFVar11,pdVar15->d_name,__n);\n      pcVar3 = sp->fts_path;\n      *(undefined1 *)((int)p[1].fts_statp + (__n - 0x44)) = 0;\n      p->fts_namelen = __n;\n      p->fts_fts = sp;\n      p->fts_path = pcVar3;\n      p->fts_errno = 0;\n      p->fts_dirp = (DIR *)0x0;\n      p->fts_flags = 0;\n      p->fts_instr = 3;\n      p->fts_number = 0;\n      p->fts_pointer = (void *)0x0;\n      if (local_b0 <= __n) {\n        uVar17 = local_d0 + 0x101 + sp->fts_pathlen + __n;\n        if (uVar17 < sp->fts_pathlen) {\n          iVar19 = 0x24;\n          free(pcVar3);\n          sp->fts_path = (char *)0x0;\n          *piVar14 = 0x24;\n        }\n        else {\n          sp->fts_pathlen = uVar17;\n          pcVar18 = (char *)realloc(pcVar3,uVar17);\n          if (pcVar18 != (char *)0x0) {\n            sp->fts_path = pcVar18;\n            if ((pcVar3 != pcVar18) && (bVar6 = true, (sp->fts_options & 4) != 0)) {\n              local_a4 = pcVar18 + local_d0;\n            }\n            local_b0 = sp->fts_pathlen - local_d0;\n            goto LAB_000253d8;\n          }\n          free(sp->fts_path);\n          sp->fts_path = (char *)0x0;\n          iVar19 = *piVar14;\n        }\n        goto LAB_000255a6;\n      }\nLAB_000253d8:\n      if (CARRY4(__n,local_d0)) {\n        free(p);\n        if (local_b8 != (FTSENT *)0x0) {\n          pDVar27 = local_b8->fts_dirp;\n          p_Var25 = local_b8->fts_link;\n          if (pDVar27 == (DIR *)0x0) goto LAB_00025e84;\n          do {\n            closedir((DIR *)pDVar27);\n            free(local_b8);\n            local_b8 = p_Var25;\n            while( true ) {\n              if (local_b8 == (FTSENT *)0x0) goto LAB_00025e94;\n              pDVar27 = local_b8->fts_dirp;\n              p_Var25 = local_b8->fts_link;\n              if (pDVar27 != (DIR *)0x0) break;\nLAB_00025e84:\n              free(local_b8);\n              local_b8 = p_Var25;\n            }\n          } while( true );\n        }\nLAB_00025e94:\n        closedir((DIR *)pFVar30->fts_dirp);\n        pFVar30->fts_dirp = (DIR *)0x0;\n        pFVar30->fts_info = 7;\n        local_b8 = (FTSENT *)0x0;\n        sp->fts_options = sp->fts_options | 0x4000;\n        *piVar14 = 0x24;\n        goto LAB_0002563f;\n      }\n      uVar16 = *(undefined4 *)((int)&pdVar15->d_ino + 4);\n      p->fts_pathlen = __n + local_d0;\n      p->fts_level = iVar19 + 1;\n      p->fts_parent = sp->fts_cur;\n      _Var8 = pdVar15->d_ino;\n      *(undefined4 *)((int)&p->fts_statp[0].st_ino + 4) = uVar16;\n      *(int *)&p->fts_statp[0].st_ino = (int)_Var8;\n      uVar17 = sp->fts_options;\n      if ((uVar17 & 4) == 0) {\n        p->fts_accpath = (char *)pFVar11;\n      }\n      else {\n        p->fts_accpath = p->fts_path;\n        memmove(local_a4,pFVar11,p->fts_namelen + 1);\n        uVar17 = sp->fts_options;\n      }\n      if ((sp->fts_compar == (_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *)0x0) ||\n         ((uVar17 & 0x400) != 0)) {\n        uVar29 = pdVar15->d_type - 1;\n        if (((uVar17 & 0x18) == 0x18) && ((pdVar15->d_type & 0xfb) != 0)) {\n          p->fts_info = 0xb;\n          if (uVar29 < 0xc) {\n            p->fts_statp[0].st_mode = *(__mode_t *)(CSWTCH_40 + uVar29 * 4);\n            uVar16 = 1;\n          }\n          else {\n            p->fts_statp[0].st_mode = 0;\n            uVar16 = 1;\n          }\n        }\n        else {\n          p->fts_info = 0xb;\n          if (uVar29 < 0xc) {\n            p->fts_statp[0].st_mode = *(__mode_t *)(CSWTCH_40 + uVar29 * 4);\n            uVar16 = 2;\n          }\n          else {\n            p->fts_statp[0].st_mode = 0;\n            uVar16 = 2;\n          }\n        }\n        *(undefined4 *)&p->fts_statp[0].st_size = uVar16;\n        *(undefined4 *)((int)&p->fts_statp[0].st_size + 4) = 0;\n      }\n      else {\n        uVar13 = fts_stat(sp,p,false);\n        p->fts_info = uVar13;\n      }\n      p->fts_link = (_ftsent *)0x0;\n      pFVar11 = p;\n      if (local_b8 != (FTSENT *)0x0) {\n        local_c4->fts_link = p;\n        pFVar11 = local_b8;\n      }\n      local_b8 = pFVar11;\n      local_c4 = p;\n      if (local_d4 == 10000) {\n        if (sp->fts_compar == (_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *)0x0) {\n          pFVar4 = pFVar30->fts_fts;\n          if ((pFVar4->fts_options & 0x200) != 0) {\n            table = pFVar4->fts_leaf_optimization_works_ht;\n            if (table == (hash_table *)0x0) {\n              table = hash_initialize(0xd,(Hash_tuning *)0x0,dev_type_hash,dev_type_compare,\n                                      (Hash_data_freer)data_freer);\n              pFVar4->fts_leaf_optimization_works_ht = table;\n              if (table != (Hash_table *)0x0) goto LAB_00025920;\nLAB_000259b0:\n              if ((local_9c < 0) ||\n                 (iVar22 = fstatfs64(local_9c,(statfs64 *)&fs_buf), _Var10 = fs_buf.f_type,\n                 iVar22 != 0)) goto LAB_00025a48;\n              local_d4 = fs_buf.f_type;\n              if ((table != (Hash_table *)0x0) &&\n                 (entry = (undefined4 *)malloc(0xc), entry != (undefined4 *)0x0)) {\n                _Var9 = pFVar30->fts_statp[0].st_dev;\n                entry[1] = *(undefined4 *)((int)&pFVar30->fts_statp[0].st_dev + 4);\n                *entry = (int)_Var9;\n                entry[2] = _Var10;\n                puVar23 = (undefined4 *)hash_insert(table,entry);\n                if (puVar23 == (undefined4 *)0x0) {\n                  free(entry);\n                  local_d4 = fs_buf.f_type;\n                }\n                else {\n                  if (entry != puVar23) {\n                    /* WARNING: Subroutine does not return */\n                    abort();\n                  }\n                  local_d4 = fs_buf.f_type;\n                }\n              }\n            }\n            else {\nLAB_00025920:\n              tmp.st_dev._4_4_ = *(undefined4 *)((int)&pFVar30->fts_statp[0].st_dev + 4);\n              tmp.st_dev._0_4_ = (undefined4)pFVar30->fts_statp[0].st_dev;\n              pvVar21 = hash_lookup(table,&tmp);\n              if (pvVar21 == (void *)0x0) goto LAB_000259b0;\n              local_d4 = *(int *)((int)pvVar21 + 8);\n            }\n            if (((local_d4 == 0x6969) || (local_d4 == 0x1021994)) || (local_d4 == -0xacb2be)) {\n              bVar7 = false;\n              goto LAB_00025473;\n            }\n          }\nLAB_00025a48:\n          bVar7 = true;\n        }\nLAB_00025473:\n        local_d4 = 0x2711;\n        goto LAB_000252fb;\n      }\n      local_d4 = local_d4 + 1;\n    } while (local_d4 < local_a8);" statement_identifier : (do_statement "do {\n      do {\n        pDVar20 = (DIR *)pFVar30->fts_dirp;\n        if (pDVar20 == (DIR *)0x0) goto LAB_000256de;\n        piVar14 = __errno_location();\n        *piVar14 = 0;\n        pdVar15 = readdir64(pDVar20);\n        if (pdVar15 == (dirent64 *)0x0) {\n          if (*piVar14 != 0) {\n            pFVar30->fts_errno = *piVar14;\n            pFVar30->fts_info = (-(ushort)(pDVar26 == (DIR *)0x0 && local_d4 == 0) & 0xfffd) + 7;\n          }\n          if ((DIR *)pFVar30->fts_dirp != (DIR *)0x0) {\n            closedir((DIR *)pFVar30->fts_dirp);\n            pFVar30->fts_dirp = (DIR *)0x0;\n          }\n          goto LAB_000256de;\n        }\n      } while ((((sp->fts_options & 0x20) == 0) && (pdVar15->d_name[0] == '.')) &&\n              ((pdVar15->d_name[1] == '\0' || (*(short *)(pdVar15->d_name + 1) == 0x2e))));\n      __n = strlen(pdVar15->d_name);\n      p = (FTSENT *)malloc(__n + 0xa8 & 0xfffffffc);\n      if (p == (FTSENT *)0x0) {\n        iVar19 = *piVar14;\nLAB_000255a6:\n        free(p);\n        if (local_b8 != (FTSENT *)0x0) {\n          pDVar27 = local_b8->fts_dirp;\n          p_Var25 = local_b8->fts_link;\n          if (pDVar27 == (DIR *)0x0) goto LAB_000255f4;\n          do {\n            closedir((DIR *)pDVar27);\n            free(local_b8);\n            local_b8 = p_Var25;\n            while( true ) {\n              if (local_b8 == (FTSENT *)0x0) goto LAB_00025608;\n              pDVar27 = local_b8->fts_dirp;\n              p_Var25 = local_b8->fts_link;\n              if (pDVar27 != (DIR *)0x0) break;\nLAB_000255f4:\n              free(local_b8);\n              local_b8 = p_Var25;\n            }\n          } while( true );\n        }\nLAB_00025608:\n        closedir((DIR *)pFVar30->fts_dirp);\n        pFVar30->fts_dirp = (DIR *)0x0;\n        pFVar30->fts_info = 7;\n        local_b8 = (FTSENT *)0x0;\n        sp->fts_options = sp->fts_options | 0x4000;\n        *piVar14 = iVar19;\n        goto LAB_0002563f;\n      }\n      pFVar11 = p + 1;\n      memcpy(pFVar11,pdVar15->d_name,__n);\n      pcVar3 = sp->fts_path;\n      *(undefined1 *)((int)p[1].fts_statp + (__n - 0x44)) = 0;\n      p->fts_namelen = __n;\n      p->fts_fts = sp;\n      p->fts_path = pcVar3;\n      p->fts_errno = 0;\n      p->fts_dirp = (DIR *)0x0;\n      p->fts_flags = 0;\n      p->fts_instr = 3;\n      p->fts_number = 0;\n      p->fts_pointer = (void *)0x0;\n      if (local_b0 <= __n) {\n        uVar17 = local_d0 + 0x101 + sp->fts_pathlen + __n;\n        if (uVar17 < sp->fts_pathlen) {\n          iVar19 = 0x24;\n          free(pcVar3);\n          sp->fts_path = (char *)0x0;\n          *piVar14 = 0x24;\n        }\n        else {\n          sp->fts_pathlen = uVar17;\n          pcVar18 = (char *)realloc(pcVar3,uVar17);\n          if (pcVar18 != (char *)0x0) {\n            sp->fts_path = pcVar18;\n            if ((pcVar3 != pcVar18) && (bVar6 = true, (sp->fts_options & 4) != 0)) {\n              local_a4 = pcVar18 + local_d0;\n            }\n            local_b0 = sp->fts_pathlen - local_d0;\n            goto LAB_000253d8;\n          }\n          free(sp->fts_path);\n          sp->fts_path = (char *)0x0;\n          iVar19 = *piVar14;\n        }\n        goto LAB_000255a6;\n      }\nLAB_000253d8:\n      if (CARRY4(__n,local_d0)) {\n        free(p);\n        if (local_b8 != (FTSENT *)0x0) {\n          pDVar27 = local_b8->fts_dirp;\n          p_Var25 = local_b8->fts_link;\n          if (pDVar27 == (DIR *)0x0) goto LAB_00025e84;\n          do {\n            closedir((DIR *)pDVar27);\n            free(local_b8);\n            local_b8 = p_Var25;\n            while( true ) {\n              if (local_b8 == (FTSENT *)0x0) goto LAB_00025e94;\n              pDVar27 = local_b8->fts_dirp;\n              p_Var25 = local_b8->fts_link;\n              if (pDVar27 != (DIR *)0x0) break;\nLAB_00025e84:\n              free(local_b8);\n              local_b8 = p_Var25;\n            }\n          } while( true );\n        }\nLAB_00025e94:\n        closedir((DIR *)pFVar30->fts_dirp);\n        pFVar30->fts_dirp = (DIR *)0x0;\n        pFVar30->fts_info = 7;\n        local_b8 = (FTSENT *)0x0;\n        sp->fts_options = sp->fts_options | 0x4000;\n        *piVar14 = 0x24;\n        goto LAB_0002563f;\n      }\n      uVar16 = *(undefined4 *)((int)&pdVar15->d_ino + 4);\n      p->fts_pathlen = __n + local_d0;\n      p->fts_level = iVar19 + 1;\n      p->fts_parent = sp->fts_cur;\n      _Var8 = pdVar15->d_ino;\n      *(undefined4 *)((int)&p->fts_statp[0].st_ino + 4) = uVar16;\n      *(int *)&p->fts_statp[0].st_ino = (int)_Var8;\n      uVar17 = sp->fts_options;\n      if ((uVar17 & 4) == 0) {\n        p->fts_accpath = (char *)pFVar11;\n      }\n      else {\n        p->fts_accpath = p->fts_path;\n        memmove(local_a4,pFVar11,p->fts_namelen + 1);\n        uVar17 = sp->fts_options;\n      }\n      if ((sp->fts_compar == (_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *)0x0) ||\n         ((uVar17 & 0x400) != 0)) {\n        uVar29 = pdVar15->d_type - 1;\n        if (((uVar17 & 0x18) == 0x18) && ((pdVar15->d_type & 0xfb) != 0)) {\n          p->fts_info = 0xb;\n          if (uVar29 < 0xc) {\n            p->fts_statp[0].st_mode = *(__mode_t *)(CSWTCH_40 + uVar29 * 4);\n            uVar16 = 1;\n          }\n          else {\n            p->fts_statp[0].st_mode = 0;\n            uVar16 = 1;\n          }\n        }\n        else {\n          p->fts_info = 0xb;\n          if (uVar29 < 0xc) {\n            p->fts_statp[0].st_mode = *(__mode_t *)(CSWTCH_40 + uVar29 * 4);\n            uVar16 = 2;\n          }\n          else {\n            p->fts_statp[0].st_mode = 0;\n            uVar16 = 2;\n          }\n        }\n        *(undefined4 *)&p->fts_statp[0].st_size = uVar16;\n        *(undefined4 *)((int)&p->fts_statp[0].st_size + 4) = 0;\n      }\n      else {\n        uVar13 = fts_stat(sp,p,false);\n        p->fts_info = uVar13;\n      }\n      p->fts_link = (_ftsent *)0x0;\n      pFVar11 = p;\n      if (local_b8 != (FTSENT *)0x0) {\n        local_c4->fts_link = p;\n        pFVar11 = local_b8;\n      }\n      local_b8 = pFVar11;\n      local_c4 = p;\n      if (local_d4 == 10000) {\n        if (sp->fts_compar == (_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *)0x0) {\n          pFVar4 = pFVar30->fts_fts;\n          if ((pFVar4->fts_options & 0x200) != 0) {\n            table = pFVar4->fts_leaf_optimization_works_ht;\n            if (table == (hash_table *)0x0) {\n              table = hash_initialize(0xd,(Hash_tuning *)0x0,dev_type_hash,dev_type_compare,\n                                      (Hash_data_freer)data_freer);\n              pFVar4->fts_leaf_optimization_works_ht = table;\n              if (table != (Hash_table *)0x0) goto LAB_00025920;\nLAB_000259b0:\n              if ((local_9c < 0) ||\n                 (iVar22 = fstatfs64(local_9c,(statfs64 *)&fs_buf), _Var10 = fs_buf.f_type,\n                 iVar22 != 0)) goto LAB_00025a48;\n              local_d4 = fs_buf.f_type;\n              if ((table != (Hash_table *)0x0) &&\n                 (entry = (undefined4 *)malloc(0xc), entry != (undefined4 *)0x0)) {\n                _Var9 = pFVar30->fts_statp[0].st_dev;\n                entry[1] = *(undefined4 *)((int)&pFVar30->fts_statp[0].st_dev + 4);\n                *entry = (int)_Var9;\n                entry[2] = _Var10;\n                puVar23 = (undefined4 *)hash_insert(table,entry);\n                if (puVar23 == (undefined4 *)0x0) {\n                  free(entry);\n                  local_d4 = fs_buf.f_type;\n                }\n                else {\n                  if (entry != puVar23) {\n                    /* WARNING: Subroutine does not return */\n                    abort();\n                  }\n                  local_d4 = fs_buf.f_type;\n                }\n              }\n            }\n            else {\nLAB_00025920:\n              tmp.st_dev._4_4_ = *(undefined4 *)((int)&pFVar30->fts_statp[0].st_dev + 4);\n              tmp.st_dev._0_4_ = (undefined4)pFVar30->fts_statp[0].st_dev;\n              pvVar21 = hash_lookup(table,&tmp);\n              if (pvVar21 == (void *)0x0) goto LAB_000259b0;\n              local_d4 = *(int *)((int)pvVar21 + 8);\n            }\n            if (((local_d4 == 0x6969) || (local_d4 == 0x1021994)) || (local_d4 == -0xacb2be)) {\n              bVar7 = false;\n              goto LAB_00025473;\n            }\n          }\nLAB_00025a48:\n          bVar7 = true;\n        }\nLAB_00025473:\n        local_d4 = 0x2711;\n        goto LAB_000252fb;\n      }\n      local_d4 = local_d4 + 1;\n    } while (local_d4 < local_a8);" do (compound_statement "{\n      do {\n        pDVar20 = (DIR *)pFVar30->fts_dirp;\n        if (pDVar20 == (DIR *)0x0) goto LAB_000256de;\n        piVar14 = __errno_location();\n        *piVar14 = 0;\n        pdVar15 = readdir64(pDVar20);\n        if (pdVar15 == (dirent64 *)0x0) {\n          if (*piVar14 != 0) {\n            pFVar30->fts_errno = *piVar14;\n            pFVar30->fts_info = (-(ushort)(pDVar26 == (DIR *)0x0 && local_d4 == 0) & 0xfffd) + 7;\n          }\n          if ((DIR *)pFVar30->fts_dirp != (DIR *)0x0) {\n            closedir((DIR *)pFVar30->fts_dirp);\n            pFVar30->fts_dirp = (DIR *)0x0;\n          }\n          goto LAB_000256de;\n        }\n      } while ((((sp->fts_options & 0x20) == 0) && (pdVar15->d_name[0] == '.')) &&\n              ((pdVar15->d_name[1] == '\0' || (*(short *)(pdVar15->d_name + 1) == 0x2e))));\n      __n = strlen(pdVar15->d_name);\n      p = (FTSENT *)malloc(__n + 0xa8 & 0xfffffffc);\n      if (p == (FTSENT *)0x0) {\n        iVar19 = *piVar14;\nLAB_000255a6:\n        free(p);\n        if (local_b8 != (FTSENT *)0x0) {\n          pDVar27 = local_b8->fts_dirp;\n          p_Var25 = local_b8->fts_link;\n          if (pDVar27 == (DIR *)0x0) goto LAB_000255f4;\n          do {\n            closedir((DIR *)pDVar27);\n            free(local_b8);\n            local_b8 = p_Var25;\n            while( true ) {\n              if (local_b8 == (FTSENT *)0x0) goto LAB_00025608;\n              pDVar27 = local_b8->fts_dirp;\n              p_Var25 = local_b8->fts_link;\n              if (pDVar27 != (DIR *)0x0) break;\nLAB_000255f4:\n              free(local_b8);\n              local_b8 = p_Var25;\n            }\n          } while( true );\n        }\nLAB_00025608:\n        closedir((DIR *)pFVar30->fts_dirp);\n        pFVar30->fts_dirp = (DIR *)0x0;\n        pFVar30->fts_info = 7;\n        local_b8 = (FTSENT *)0x0;\n        sp->fts_options = sp->fts_options | 0x4000;\n        *piVar14 = iVar19;\n        goto LAB_0002563f;\n      }\n      pFVar11 = p + 1;\n      memcpy(pFVar11,pdVar15->d_name,__n);\n      pcVar3 = sp->fts_path;\n      *(undefined1 *)((int)p[1].fts_statp + (__n - 0x44)) = 0;\n      p->fts_namelen = __n;\n      p->fts_fts = sp;\n      p->fts_path = pcVar3;\n      p->fts_errno = 0;\n      p->fts_dirp = (DIR *)0x0;\n      p->fts_flags = 0;\n      p->fts_instr = 3;\n      p->fts_number = 0;\n      p->fts_pointer = (void *)0x0;\n      if (local_b0 <= __n) {\n        uVar17 = local_d0 + 0x101 + sp->fts_pathlen + __n;\n        if (uVar17 < sp->fts_pathlen) {\n          iVar19 = 0x24;\n          free(pcVar3);\n          sp->fts_path = (char *)0x0;\n          *piVar14 = 0x24;\n        }\n        else {\n          sp->fts_pathlen = uVar17;\n          pcVar18 = (char *)realloc(pcVar3,uVar17);\n          if (pcVar18 != (char *)0x0) {\n            sp->fts_path = pcVar18;\n            if ((pcVar3 != pcVar18) && (bVar6 = true, (sp->fts_options & 4) != 0)) {\n              local_a4 = pcVar18 + local_d0;\n            }\n            local_b0 = sp->fts_pathlen - local_d0;\n            goto LAB_000253d8;\n          }\n          free(sp->fts_path);\n          sp->fts_path = (char *)0x0;\n          iVar19 = *piVar14;\n        }\n        goto LAB_000255a6;\n      }\nLAB_000253d8:\n      if (CARRY4(__n,local_d0)) {\n        free(p);\n        if (local_b8 != (FTSENT *)0x0) {\n          pDVar27 = local_b8->fts_dirp;\n          p_Var25 = local_b8->fts_link;\n          if (pDVar27 == (DIR *)0x0) goto LAB_00025e84;\n          do {\n            closedir((DIR *)pDVar27);\n            free(local_b8);\n            local_b8 = p_Var25;\n            while( true ) {\n              if (local_b8 == (FTSENT *)0x0) goto LAB_00025e94;\n              pDVar27 = local_b8->fts_dirp;\n              p_Var25 = local_b8->fts_link;\n              if (pDVar27 != (DIR *)0x0) break;\nLAB_00025e84:\n              free(local_b8);\n              local_b8 = p_Var25;\n            }\n          } while( true );\n        }\nLAB_00025e94:\n        closedir((DIR *)pFVar30->fts_dirp);\n        pFVar30->fts_dirp = (DIR *)0x0;\n        pFVar30->fts_info = 7;\n        local_b8 = (FTSENT *)0x0;\n        sp->fts_options = sp->fts_options | 0x4000;\n        *piVar14 = 0x24;\n        goto LAB_0002563f;\n      }\n      uVar16 = *(undefined4 *)((int)&pdVar15->d_ino + 4);\n      p->fts_pathlen = __n + local_d0;\n      p->fts_level = iVar19 + 1;\n      p->fts_parent = sp->fts_cur;\n      _Var8 = pdVar15->d_ino;\n      *(undefined4 *)((int)&p->fts_statp[0].st_ino + 4) = uVar16;\n      *(int *)&p->fts_statp[0].st_ino = (int)_Var8;\n      uVar17 = sp->fts_options;\n      if ((uVar17 & 4) == 0) {\n        p->fts_accpath = (char *)pFVar11;\n      }\n      else {\n        p->fts_accpath = p->fts_path;\n        memmove(local_a4,pFVar11,p->fts_namelen + 1);\n        uVar17 = sp->fts_options;\n      }\n      if ((sp->fts_compar == (_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *)0x0) ||\n         ((uVar17 & 0x400) != 0)) {\n        uVar29 = pdVar15->d_type - 1;\n        if (((uVar17 & 0x18) == 0x18) && ((pdVar15->d_type & 0xfb) != 0)) {\n          p->fts_info = 0xb;\n          if (uVar29 < 0xc) {\n            p->fts_statp[0].st_mode = *(__mode_t *)(CSWTCH_40 + uVar29 * 4);\n            uVar16 = 1;\n          }\n          else {\n            p->fts_statp[0].st_mode = 0;\n            uVar16 = 1;\n          }\n        }\n        else {\n          p->fts_info = 0xb;\n          if (uVar29 < 0xc) {\n            p->fts_statp[0].st_mode = *(__mode_t *)(CSWTCH_40 + uVar29 * 4);\n            uVar16 = 2;\n          }\n          else {\n            p->fts_statp[0].st_mode = 0;\n            uVar16 = 2;\n          }\n        }\n        *(undefined4 *)&p->fts_statp[0].st_size = uVar16;\n        *(undefined4 *)((int)&p->fts_statp[0].st_size + 4) = 0;\n      }\n      else {\n        uVar13 = fts_stat(sp,p,false);\n        p->fts_info = uVar13;\n      }\n      p->fts_link = (_ftsent *)0x0;\n      pFVar11 = p;\n      if (local_b8 != (FTSENT *)0x0) {\n        local_c4->fts_link = p;\n        pFVar11 = local_b8;\n      }\n      local_b8 = pFVar11;\n      local_c4 = p;\n      if (local_d4 == 10000) {\n        if (sp->fts_compar == (_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *)0x0) {\n          pFVar4 = pFVar30->fts_fts;\n          if ((pFVar4->fts_options & 0x200) != 0) {\n            table = pFVar4->fts_leaf_optimization_works_ht;\n            if (table == (hash_table *)0x0) {\n              table = hash_initialize(0xd,(Hash_tuning *)0x0,dev_type_hash,dev_type_compare,\n                                      (Hash_data_freer)data_freer);\n              pFVar4->fts_leaf_optimization_works_ht = table;\n              if (table != (Hash_table *)0x0) goto LAB_00025920;\nLAB_000259b0:\n              if ((local_9c < 0) ||\n                 (iVar22 = fstatfs64(local_9c,(statfs64 *)&fs_buf), _Var10 = fs_buf.f_type,\n                 iVar22 != 0)) goto LAB_00025a48;\n              local_d4 = fs_buf.f_type;\n              if ((table != (Hash_table *)0x0) &&\n                 (entry = (undefined4 *)malloc(0xc), entry != (undefined4 *)0x0)) {\n                _Var9 = pFVar30->fts_statp[0].st_dev;\n                entry[1] = *(undefined4 *)((int)&pFVar30->fts_statp[0].st_dev + 4);\n                *entry = (int)_Var9;\n                entry[2] = _Var10;\n                puVar23 = (undefined4 *)hash_insert(table,entry);\n                if (puVar23 == (undefined4 *)0x0) {\n                  free(entry);\n                  local_d4 = fs_buf.f_type;\n                }\n                else {\n                  if (entry != puVar23) {\n                    /* WARNING: Subroutine does not return */\n                    abort();\n                  }\n                  local_d4 = fs_buf.f_type;\n                }\n              }\n            }\n            else {\nLAB_00025920:\n              tmp.st_dev._4_4_ = *(undefined4 *)((int)&pFVar30->fts_statp[0].st_dev + 4);\n              tmp.st_dev._0_4_ = (undefined4)pFVar30->fts_statp[0].st_dev;\n              pvVar21 = hash_lookup(table,&tmp);\n              if (pvVar21 == (void *)0x0) goto LAB_000259b0;\n              local_d4 = *(int *)((int)pvVar21 + 8);\n            }\n            if (((local_d4 == 0x6969) || (local_d4 == 0x1021994)) || (local_d4 == -0xacb2be)) {\n              bVar7 = false;\n              goto LAB_00025473;\n            }\n          }\nLAB_00025a48:\n          bVar7 = true;\n        }\nLAB_00025473:\n        local_d4 = 0x2711;\n        goto LAB_000252fb;\n      }\n      local_d4 = local_d4 + 1;\n    }" { (do_statement "do {\n        pDVar20 = (DIR *)pFVar30->fts_dirp;\n        if (pDVar20 == (DIR *)0x0) goto LAB_000256de;\n        piVar14 = __errno_location();\n        *piVar14 = 0;\n        pdVar15 = readdir64(pDVar20);\n        if (pdVar15 == (dirent64 *)0x0) {\n          if (*piVar14 != 0) {\n            pFVar30->fts_errno = *piVar14;\n            pFVar30->fts_info = (-(ushort)(pDVar26 == (DIR *)0x0 && local_d4 == 0) & 0xfffd) + 7;\n          }\n          if ((DIR *)pFVar30->fts_dirp != (DIR *)0x0) {\n            closedir((DIR *)pFVar30->fts_dirp);\n            pFVar30->fts_dirp = (DIR *)0x0;\n          }\n          goto LAB_000256de;\n        }\n      } while ((((sp->fts_options & 0x20) == 0) && (pdVar15->d_name[0] == '.')) &&\n              ((pdVar15->d_name[1] == '\0' || (*(short *)(pdVar15->d_name + 1) == 0x2e))));" do (compound_statement "{\n        pDVar20 = (DIR *)pFVar30->fts_dirp;\n        if (pDVar20 == (DIR *)0x0) goto LAB_000256de;\n        piVar14 = __errno_location();\n        *piVar14 = 0;\n        pdVar15 = readdir64(pDVar20);\n        if (pdVar15 == (dirent64 *)0x0) {\n          if (*piVar14 != 0) {\n            pFVar30->fts_errno = *piVar14;\n            pFVar30->fts_info = (-(ushort)(pDVar26 == (DIR *)0x0 && local_d4 == 0) & 0xfffd) + 7;\n          }\n          if ((DIR *)pFVar30->fts_dirp != (DIR *)0x0) {\n            closedir((DIR *)pFVar30->fts_dirp);\n            pFVar30->fts_dirp = (DIR *)0x0;\n          }\n          goto LAB_000256de;\n        }\n      }" { (expression_statement "pDVar20 = (DIR *)pFVar30->fts_dirp;" (assignment_expression "pDVar20 = (DIR *)pFVar30->fts_dirp" identifier = (cast_expression "(DIR *)pFVar30->fts_dirp" ( (type_descriptor "DIR *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "pFVar30->fts_dirp" identifier -> field_identifier))) ;) (if_statement "if (pDVar20 == (DIR *)0x0) goto LAB_000256de;" if (parenthesized_expression "(pDVar20 == (DIR *)0x0)" ( (binary_expression "pDVar20 == (DIR *)0x0" identifier == (cast_expression "(DIR *)0x0" ( (type_descriptor "DIR *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_000256de;" goto statement_identifier ;)) (expression_statement "piVar14 = __errno_location();" (assignment_expression "piVar14 = __errno_location()" identifier = (call_expression "__errno_location()" identifier (argument_list "()" ( )))) ;) (expression_statement "*piVar14 = 0;" (assignment_expression "*piVar14 = 0" (pointer_expression "*piVar14" * identifier) = number_literal) ;) (expression_statement "pdVar15 = readdir64(pDVar20);" (assignment_expression "pdVar15 = readdir64(pDVar20)" identifier = (call_expression "readdir64(pDVar20)" identifier (argument_list "(pDVar20)" ( identifier )))) ;) (if_statement "if (pdVar15 == (dirent64 *)0x0) {\n          if (*piVar14 != 0) {\n            pFVar30->fts_errno = *piVar14;\n            pFVar30->fts_info = (-(ushort)(pDVar26 == (DIR *)0x0 && local_d4 == 0) & 0xfffd) + 7;\n          }\n          if ((DIR *)pFVar30->fts_dirp != (DIR *)0x0) {\n            closedir((DIR *)pFVar30->fts_dirp);\n            pFVar30->fts_dirp = (DIR *)0x0;\n          }\n          goto LAB_000256de;\n        }" if (parenthesized_expression "(pdVar15 == (dirent64 *)0x0)" ( (binary_expression "pdVar15 == (dirent64 *)0x0" identifier == (cast_expression "(dirent64 *)0x0" ( (type_descriptor "dirent64 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          if (*piVar14 != 0) {\n            pFVar30->fts_errno = *piVar14;\n            pFVar30->fts_info = (-(ushort)(pDVar26 == (DIR *)0x0 && local_d4 == 0) & 0xfffd) + 7;\n          }\n          if ((DIR *)pFVar30->fts_dirp != (DIR *)0x0) {\n            closedir((DIR *)pFVar30->fts_dirp);\n            pFVar30->fts_dirp = (DIR *)0x0;\n          }\n          goto LAB_000256de;\n        }" { (if_statement "if (*piVar14 != 0) {\n            pFVar30->fts_errno = *piVar14;\n            pFVar30->fts_info = (-(ushort)(pDVar26 == (DIR *)0x0 && local_d4 == 0) & 0xfffd) + 7;\n          }" if (parenthesized_expression "(*piVar14 != 0)" ( (binary_expression "*piVar14 != 0" (pointer_expression "*piVar14" * identifier) != number_literal) )) (compound_statement "{\n            pFVar30->fts_errno = *piVar14;\n            pFVar30->fts_info = (-(ushort)(pDVar26 == (DIR *)0x0 && local_d4 == 0) & 0xfffd) + 7;\n          }" { (expression_statement "pFVar30->fts_errno = *piVar14;" (assignment_expression "pFVar30->fts_errno = *piVar14" (field_expression "pFVar30->fts_errno" identifier -> field_identifier) = (pointer_expression "*piVar14" * identifier)) ;) (expression_statement "pFVar30->fts_info = (-(ushort)(pDVar26 == (DIR *)0x0 && local_d4 == 0) & 0xfffd) + 7;" (assignment_expression "pFVar30->fts_info = (-(ushort)(pDVar26 == (DIR *)0x0 && local_d4 == 0) & 0xfffd) + 7" (field_expression "pFVar30->fts_info" identifier -> field_identifier) = (binary_expression "(-(ushort)(pDVar26 == (DIR *)0x0 && local_d4 == 0) & 0xfffd) + 7" (parenthesized_expression "(-(ushort)(pDVar26 == (DIR *)0x0 && local_d4 == 0) & 0xfffd)" ( (binary_expression "-(ushort)(pDVar26 == (DIR *)0x0 && local_d4 == 0) & 0xfffd" (unary_expression "-(ushort)(pDVar26 == (DIR *)0x0 && local_d4 == 0)" - (call_expression "(ushort)(pDVar26 == (DIR *)0x0 && local_d4 == 0)" (parenthesized_expression "(ushort)" ( identifier )) (argument_list "(pDVar26 == (DIR *)0x0 && local_d4 == 0)" ( (binary_expression "pDVar26 == (DIR *)0x0 && local_d4 == 0" (binary_expression "pDVar26 == (DIR *)0x0" identifier == (cast_expression "(DIR *)0x0" ( (type_descriptor "DIR *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) && (binary_expression "local_d4 == 0" identifier == number_literal)) )))) & number_literal) )) + number_literal)) ;) })) (if_statement "if ((DIR *)pFVar30->fts_dirp != (DIR *)0x0) {\n            closedir((DIR *)pFVar30->fts_dirp);\n            pFVar30->fts_dirp = (DIR *)0x0;\n          }" if (parenthesized_expression "((DIR *)pFVar30->fts_dirp != (DIR *)0x0)" ( (binary_expression "(DIR *)pFVar30->fts_dirp != (DIR *)0x0" (cast_expression "(DIR *)pFVar30->fts_dirp" ( (type_descriptor "DIR *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "pFVar30->fts_dirp" identifier -> field_identifier)) != (cast_expression "(DIR *)0x0" ( (type_descriptor "DIR *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            closedir((DIR *)pFVar30->fts_dirp);\n            pFVar30->fts_dirp = (DIR *)0x0;\n          }" { (expression_statement "closedir((DIR *)pFVar30->fts_dirp);" (call_expression "closedir((DIR *)pFVar30->fts_dirp)" identifier (argument_list "((DIR *)pFVar30->fts_dirp)" ( (cast_expression "(DIR *)pFVar30->fts_dirp" ( (type_descriptor "DIR *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "pFVar30->fts_dirp" identifier -> field_identifier)) ))) ;) (expression_statement "pFVar30->fts_dirp = (DIR *)0x0;" (assignment_expression "pFVar30->fts_dirp = (DIR *)0x0" (field_expression "pFVar30->fts_dirp" identifier -> field_identifier) = (cast_expression "(DIR *)0x0" ( (type_descriptor "DIR *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) })) (goto_statement "goto LAB_000256de;" goto statement_identifier ;) })) }) while (parenthesized_expression "((((sp->fts_options & 0x20) == 0) && (pdVar15->d_name[0] == '.')) &&\n              ((pdVar15->d_name[1] == '\0' || (*(short *)(pdVar15->d_name + 1) == 0x2e))))" ( (binary_expression "(((sp->fts_options & 0x20) == 0) && (pdVar15->d_name[0] == '.')) &&\n              ((pdVar15->d_name[1] == '\0' || (*(short *)(pdVar15->d_name + 1) == 0x2e)))" (parenthesized_expression "(((sp->fts_options & 0x20) == 0) && (pdVar15->d_name[0] == '.'))" ( (binary_expression "((sp->fts_options & 0x20) == 0) && (pdVar15->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 "(pdVar15->d_name[0] == '.')" ( (binary_expression "pdVar15->d_name[0] == '.'" (subscript_expression "pdVar15->d_name[0]" (field_expression "pdVar15->d_name" identifier -> field_identifier) [ number_literal ]) == (char_literal "'.'" ' character ')) ))) )) && (parenthesized_expression "((pdVar15->d_name[1] == '\0' || (*(short *)(pdVar15->d_name + 1) == 0x2e)))" ( (parenthesized_expression "(pdVar15->d_name[1] == '\0' || (*(short *)(pdVar15->d_name + 1) == 0x2e))" ( (binary_expression "pdVar15->d_name[1] == '\0' || (*(short *)(pdVar15->d_name + 1) == 0x2e)" (binary_expression "pdVar15->d_name[1] == '\0'" (subscript_expression "pdVar15->d_name[1]" (field_expression "pdVar15->d_name" identifier -> field_identifier) [ number_literal ]) == (char_literal "'\0'" ' escape_sequence ')) || (parenthesized_expression "(*(short *)(pdVar15->d_name + 1) == 0x2e)" ( (binary_expression "*(short *)(pdVar15->d_name + 1) == 0x2e" (pointer_expression "*(short *)(pdVar15->d_name + 1)" * (cast_expression "(short *)(pdVar15->d_name + 1)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pdVar15->d_name + 1)" ( (binary_expression "pdVar15->d_name + 1" (field_expression "pdVar15->d_name" identifier -> field_identifier) + number_literal) )))) == number_literal) ))) )) ))) )) ;) (expression_statement "__n = strlen(pdVar15->d_name);" (assignment_expression "__n = strlen(pdVar15->d_name)" identifier = (call_expression "strlen(pdVar15->d_name)" identifier (argument_list "(pdVar15->d_name)" ( (field_expression "pdVar15->d_name" identifier -> field_identifier) )))) ;) (expression_statement "p = (FTSENT *)malloc(__n + 0xa8 & 0xfffffffc);" (assignment_expression "p = (FTSENT *)malloc(__n + 0xa8 & 0xfffffffc)" identifier = (cast_expression "(FTSENT *)malloc(__n + 0xa8 & 0xfffffffc)" ( (type_descriptor "FTSENT *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "malloc(__n + 0xa8 & 0xfffffffc)" identifier (argument_list "(__n + 0xa8 & 0xfffffffc)" ( (binary_expression "__n + 0xa8 & 0xfffffffc" (binary_expression "__n + 0xa8" identifier + number_literal) & number_literal) ))))) ;) (if_statement "if (p == (FTSENT *)0x0) {\n        iVar19 = *piVar14;\nLAB_000255a6:\n        free(p);\n        if (local_b8 != (FTSENT *)0x0) {\n          pDVar27 = local_b8->fts_dirp;\n          p_Var25 = local_b8->fts_link;\n          if (pDVar27 == (DIR *)0x0) goto LAB_000255f4;\n          do {\n            closedir((DIR *)pDVar27);\n            free(local_b8);\n            local_b8 = p_Var25;\n            while( true ) {\n              if (local_b8 == (FTSENT *)0x0) goto LAB_00025608;\n              pDVar27 = local_b8->fts_dirp;\n              p_Var25 = local_b8->fts_link;\n              if (pDVar27 != (DIR *)0x0) break;\nLAB_000255f4:\n              free(local_b8);\n              local_b8 = p_Var25;\n            }\n          } while( true );\n        }\nLAB_00025608:\n        closedir((DIR *)pFVar30->fts_dirp);\n        pFVar30->fts_dirp = (DIR *)0x0;\n        pFVar30->fts_info = 7;\n        local_b8 = (FTSENT *)0x0;\n        sp->fts_options = sp->fts_options | 0x4000;\n        *piVar14 = iVar19;\n        goto LAB_0002563f;\n      }" if (parenthesized_expression "(p == (FTSENT *)0x0)" ( (binary_expression "p == (FTSENT *)0x0" identifier == (cast_expression "(FTSENT *)0x0" ( (type_descriptor "FTSENT *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        iVar19 = *piVar14;\nLAB_000255a6:\n        free(p);\n        if (local_b8 != (FTSENT *)0x0) {\n          pDVar27 = local_b8->fts_dirp;\n          p_Var25 = local_b8->fts_link;\n          if (pDVar27 == (DIR *)0x0) goto LAB_000255f4;\n          do {\n            closedir((DIR *)pDVar27);\n            free(local_b8);\n            local_b8 = p_Var25;\n            while( true ) {\n              if (local_b8 == (FTSENT *)0x0) goto LAB_00025608;\n              pDVar27 = local_b8->fts_dirp;\n              p_Var25 = local_b8->fts_link;\n              if (pDVar27 != (DIR *)0x0) break;\nLAB_000255f4:\n              free(local_b8);\n              local_b8 = p_Var25;\n            }\n          } while( true );\n        }\nLAB_00025608:\n        closedir((DIR *)pFVar30->fts_dirp);\n        pFVar30->fts_dirp = (DIR *)0x0;\n        pFVar30->fts_info = 7;\n        local_b8 = (FTSENT *)0x0;\n        sp->fts_options = sp->fts_options | 0x4000;\n        *piVar14 = iVar19;\n        goto LAB_0002563f;\n      }" { (expression_statement "iVar19 = *piVar14;" (assignment_expression "iVar19 = *piVar14" identifier = (pointer_expression "*piVar14" * identifier)) ;) (labeled_statement "LAB_000255a6:\n        free(p);" statement_identifier : (expression_statement "free(p);" (call_expression "free(p)" identifier (argument_list "(p)" ( identifier ))) ;)) (if_statement "if (local_b8 != (FTSENT *)0x0) {\n          pDVar27 = local_b8->fts_dirp;\n          p_Var25 = local_b8->fts_link;\n          if (pDVar27 == (DIR *)0x0) goto LAB_000255f4;\n          do {\n            closedir((DIR *)pDVar27);\n            free(local_b8);\n            local_b8 = p_Var25;\n            while( true ) {\n              if (local_b8 == (FTSENT *)0x0) goto LAB_00025608;\n              pDVar27 = local_b8->fts_dirp;\n              p_Var25 = local_b8->fts_link;\n              if (pDVar27 != (DIR *)0x0) break;\nLAB_000255f4:\n              free(local_b8);\n              local_b8 = p_Var25;\n            }\n          } while( true );\n        }" if (parenthesized_expression "(local_b8 != (FTSENT *)0x0)" ( (binary_expression "local_b8 != (FTSENT *)0x0" identifier != (cast_expression "(FTSENT *)0x0" ( (type_descriptor "FTSENT *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          pDVar27 = local_b8->fts_dirp;\n          p_Var25 = local_b8->fts_link;\n          if (pDVar27 == (DIR *)0x0) goto LAB_000255f4;\n          do {\n            closedir((DIR *)pDVar27);\n            free(local_b8);\n            local_b8 = p_Var25;\n            while( true ) {\n              if (local_b8 == (FTSENT *)0x0) goto LAB_00025608;\n              pDVar27 = local_b8->fts_dirp;\n              p_Var25 = local_b8->fts_link;\n              if (pDVar27 != (DIR *)0x0) break;\nLAB_000255f4:\n              free(local_b8);\n              local_b8 = p_Var25;\n            }\n          } while( true );\n        }" { (expression_statement "pDVar27 = local_b8->fts_dirp;" (assignment_expression "pDVar27 = local_b8->fts_dirp" identifier = (field_expression "local_b8->fts_dirp" identifier -> field_identifier)) ;) (expression_statement "p_Var25 = local_b8->fts_link;" (assignment_expression "p_Var25 = local_b8->fts_link" identifier = (field_expression "local_b8->fts_link" identifier -> field_identifier)) ;) (if_statement "if (pDVar27 == (DIR *)0x0) goto LAB_000255f4;" if (parenthesized_expression "(pDVar27 == (DIR *)0x0)" ( (binary_expression "pDVar27 == (DIR *)0x0" identifier == (cast_expression "(DIR *)0x0" ( (type_descriptor "DIR *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_000255f4;" goto statement_identifier ;)) (do_statement "do {\n            closedir((DIR *)pDVar27);\n            free(local_b8);\n            local_b8 = p_Var25;\n            while( true ) {\n              if (local_b8 == (FTSENT *)0x0) goto LAB_00025608;\n              pDVar27 = local_b8->fts_dirp;\n              p_Var25 = local_b8->fts_link;\n              if (pDVar27 != (DIR *)0x0) break;\nLAB_000255f4:\n              free(local_b8);\n              local_b8 = p_Var25;\n            }\n          } while( true );" do (compound_statement "{\n            closedir((DIR *)pDVar27);\n            free(local_b8);\n            local_b8 = p_Var25;\n            while( true ) {\n              if (local_b8 == (FTSENT *)0x0) goto LAB_00025608;\n              pDVar27 = local_b8->fts_dirp;\n              p_Var25 = local_b8->fts_link;\n              if (pDVar27 != (DIR *)0x0) break;\nLAB_000255f4:\n              free(local_b8);\n              local_b8 = p_Var25;\n            }\n          }" { (expression_statement "closedir((DIR *)pDVar27);" (call_expression "closedir((DIR *)pDVar27)" identifier (argument_list "((DIR *)pDVar27)" ( (cast_expression "(DIR *)pDVar27" ( (type_descriptor "DIR *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) ))) ;) (expression_statement "free(local_b8);" (call_expression "free(local_b8)" identifier (argument_list "(local_b8)" ( identifier ))) ;) (expression_statement "local_b8 = p_Var25;" (assignment_expression "local_b8 = p_Var25" identifier = identifier) ;) (while_statement "while( true ) {\n              if (local_b8 == (FTSENT *)0x0) goto LAB_00025608;\n              pDVar27 = local_b8->fts_dirp;\n              p_Var25 = local_b8->fts_link;\n              if (pDVar27 != (DIR *)0x0) break;\nLAB_000255f4:\n              free(local_b8);\n              local_b8 = p_Var25;\n            }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n              if (local_b8 == (FTSENT *)0x0) goto LAB_00025608;\n              pDVar27 = local_b8->fts_dirp;\n              p_Var25 = local_b8->fts_link;\n              if (pDVar27 != (DIR *)0x0) break;\nLAB_000255f4:\n              free(local_b8);\n              local_b8 = p_Var25;\n            }" { (if_statement "if (local_b8 == (FTSENT *)0x0) goto LAB_00025608;" if (parenthesized_expression "(local_b8 == (FTSENT *)0x0)" ( (binary_expression "local_b8 == (FTSENT *)0x0" identifier == (cast_expression "(FTSENT *)0x0" ( (type_descriptor "FTSENT *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00025608;" goto statement_identifier ;)) (expression_statement "pDVar27 = local_b8->fts_dirp;" (assignment_expression "pDVar27 = local_b8->fts_dirp" identifier = (field_expression "local_b8->fts_dirp" identifier -> field_identifier)) ;) (expression_statement "p_Var25 = local_b8->fts_link;" (assignment_expression "p_Var25 = local_b8->fts_link" identifier = (field_expression "local_b8->fts_link" identifier -> field_identifier)) ;) (if_statement "if (pDVar27 != (DIR *)0x0) break;" if (parenthesized_expression "(pDVar27 != (DIR *)0x0)" ( (binary_expression "pDVar27 != (DIR *)0x0" identifier != (cast_expression "(DIR *)0x0" ( (type_descriptor "DIR *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (break_statement "break;" break ;)) (labeled_statement "LAB_000255f4:\n              free(local_b8);" statement_identifier : (expression_statement "free(local_b8);" (call_expression "free(local_b8)" identifier (argument_list "(local_b8)" ( identifier ))) ;)) (expression_statement "local_b8 = p_Var25;" (assignment_expression "local_b8 = p_Var25" identifier = identifier) ;) })) }) while (parenthesized_expression "( true )" ( true )) ;) })) (labeled_statement "LAB_00025608:\n        closedir((DIR *)pFVar30->fts_dirp);" statement_identifier : (expression_statement "closedir((DIR *)pFVar30->fts_dirp);" (call_expression "closedir((DIR *)pFVar30->fts_dirp)" identifier (argument_list "((DIR *)pFVar30->fts_dirp)" ( (cast_expression "(DIR *)pFVar30->fts_dirp" ( (type_descriptor "DIR *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "pFVar30->fts_dirp" identifier -> field_identifier)) ))) ;)) (expression_statement "pFVar30->fts_dirp = (DIR *)0x0;" (assignment_expression "pFVar30->fts_dirp = (DIR *)0x0" (field_expression "pFVar30->fts_dirp" identifier -> field_identifier) = (cast_expression "(DIR *)0x0" ( (type_descriptor "DIR *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "pFVar30->fts_info = 7;" (assignment_expression "pFVar30->fts_info = 7" (field_expression "pFVar30->fts_info" identifier -> field_identifier) = number_literal) ;) (expression_statement "local_b8 = (FTSENT *)0x0;" (assignment_expression "local_b8 = (FTSENT *)0x0" identifier = (cast_expression "(FTSENT *)0x0" ( (type_descriptor "FTSENT *" type_identifier (abstract_pointer_declarator "*" *)) ) 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 "*piVar14 = iVar19;" (assignment_expression "*piVar14 = iVar19" (pointer_expression "*piVar14" * identifier) = identifier) ;) (goto_statement "goto LAB_0002563f;" goto statement_identifier ;) })) (expression_statement "pFVar11 = p + 1;" (assignment_expression "pFVar11 = p + 1" identifier = (binary_expression "p + 1" identifier + number_literal)) ;) (expression_statement "memcpy(pFVar11,pdVar15->d_name,__n);" (call_expression "memcpy(pFVar11,pdVar15->d_name,__n)" identifier (argument_list "(pFVar11,pdVar15->d_name,__n)" ( identifier , (field_expression "pdVar15->d_name" identifier -> field_identifier) , identifier ))) ;) (expression_statement "pcVar3 = sp->fts_path;" (assignment_expression "pcVar3 = sp->fts_path" identifier = (field_expression "sp->fts_path" identifier -> field_identifier)) ;) (expression_statement "*(undefined1 *)((int)p[1].fts_statp + (__n - 0x44)) = 0;" (assignment_expression "*(undefined1 *)((int)p[1].fts_statp + (__n - 0x44)) = 0" (pointer_expression "*(undefined1 *)((int)p[1].fts_statp + (__n - 0x44))" * (cast_expression "(undefined1 *)((int)p[1].fts_statp + (__n - 0x44))" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)p[1].fts_statp + (__n - 0x44))" ( (binary_expression "(int)p[1].fts_statp + (__n - 0x44)" (cast_expression "(int)p[1].fts_statp" ( (type_descriptor "int" primitive_type) ) (field_expression "p[1].fts_statp" (subscript_expression "p[1]" identifier [ number_literal ]) . field_identifier)) + (parenthesized_expression "(__n - 0x44)" ( (binary_expression "__n - 0x44" identifier - number_literal) ))) )))) = number_literal) ;) (expression_statement "p->fts_namelen = __n;" (assignment_expression "p->fts_namelen = __n" (field_expression "p->fts_namelen" identifier -> field_identifier) = identifier) ;) (expression_statement "p->fts_fts = sp;" (assignment_expression "p->fts_fts = sp" (field_expression "p->fts_fts" identifier -> field_identifier) = identifier) ;) (expression_statement "p->fts_path = pcVar3;" (assignment_expression "p->fts_path = pcVar3" (field_expression "p->fts_path" identifier -> field_identifier) = identifier) ;) (expression_statement "p->fts_errno = 0;" (assignment_expression "p->fts_errno = 0" (field_expression "p->fts_errno" identifier -> field_identifier) = number_literal) ;) (expression_statement "p->fts_dirp = (DIR *)0x0;" (assignment_expression "p->fts_dirp = (DIR *)0x0" (field_expression "p->fts_dirp" identifier -> field_identifier) = (cast_expression "(DIR *)0x0" ( (type_descriptor "DIR *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "p->fts_flags = 0;" (assignment_expression "p->fts_flags = 0" (field_expression "p->fts_flags" identifier -> field_identifier) = number_literal) ;) (expression_statement "p->fts_instr = 3;" (assignment_expression "p->fts_instr = 3" (field_expression "p->fts_instr" identifier -> field_identifier) = number_literal) ;) (expression_statement "p->fts_number = 0;" (assignment_expression "p->fts_number = 0" (field_expression "p->fts_number" identifier -> field_identifier) = number_literal) ;) (expression_statement "p->fts_pointer = (void *)0x0;" (assignment_expression "p->fts_pointer = (void *)0x0" (field_expression "p->fts_pointer" identifier -> field_identifier) = (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if (local_b0 <= __n) {\n        uVar17 = local_d0 + 0x101 + sp->fts_pathlen + __n;\n        if (uVar17 < sp->fts_pathlen) {\n          iVar19 = 0x24;\n          free(pcVar3);\n          sp->fts_path = (char *)0x0;\n          *piVar14 = 0x24;\n        }\n        else {\n          sp->fts_pathlen = uVar17;\n          pcVar18 = (char *)realloc(pcVar3,uVar17);\n          if (pcVar18 != (char *)0x0) {\n            sp->fts_path = pcVar18;\n            if ((pcVar3 != pcVar18) && (bVar6 = true, (sp->fts_options & 4) != 0)) {\n              local_a4 = pcVar18 + local_d0;\n            }\n            local_b0 = sp->fts_pathlen - local_d0;\n            goto LAB_000253d8;\n          }\n          free(sp->fts_path);\n          sp->fts_path = (char *)0x0;\n          iVar19 = *piVar14;\n        }\n        goto LAB_000255a6;\n      }" if (parenthesized_expression "(local_b0 <= __n)" ( (binary_expression "local_b0 <= __n" identifier <= identifier) )) (compound_statement "{\n        uVar17 = local_d0 + 0x101 + sp->fts_pathlen + __n;\n        if (uVar17 < sp->fts_pathlen) {\n          iVar19 = 0x24;\n          free(pcVar3);\n          sp->fts_path = (char *)0x0;\n          *piVar14 = 0x24;\n        }\n        else {\n          sp->fts_pathlen = uVar17;\n          pcVar18 = (char *)realloc(pcVar3,uVar17);\n          if (pcVar18 != (char *)0x0) {\n            sp->fts_path = pcVar18;\n            if ((pcVar3 != pcVar18) && (bVar6 = true, (sp->fts_options & 4) != 0)) {\n              local_a4 = pcVar18 + local_d0;\n            }\n            local_b0 = sp->fts_pathlen - local_d0;\n            goto LAB_000253d8;\n          }\n          free(sp->fts_path);\n          sp->fts_path = (char *)0x0;\n          iVar19 = *piVar14;\n        }\n        goto LAB_000255a6;\n      }" { (expression_statement "uVar17 = local_d0 + 0x101 + sp->fts_pathlen + __n;" (assignment_expression "uVar17 = local_d0 + 0x101 + sp->fts_pathlen + __n" identifier = (binary_expression "local_d0 + 0x101 + sp->fts_pathlen + __n" (binary_expression "local_d0 + 0x101 + sp->fts_pathlen" (binary_expression "local_d0 + 0x101" identifier + number_literal) + (field_expression "sp->fts_pathlen" identifier -> field_identifier)) + identifier)) ;) (if_statement "if (uVar17 < sp->fts_pathlen) {\n          iVar19 = 0x24;\n          free(pcVar3);\n          sp->fts_path = (char *)0x0;\n          *piVar14 = 0x24;\n        }\n        else {\n          sp->fts_pathlen = uVar17;\n          pcVar18 = (char *)realloc(pcVar3,uVar17);\n          if (pcVar18 != (char *)0x0) {\n            sp->fts_path = pcVar18;\n            if ((pcVar3 != pcVar18) && (bVar6 = true, (sp->fts_options & 4) != 0)) {\n              local_a4 = pcVar18 + local_d0;\n            }\n            local_b0 = sp->fts_pathlen - local_d0;\n            goto LAB_000253d8;\n          }\n          free(sp->fts_path);\n          sp->fts_path = (char *)0x0;\n          iVar19 = *piVar14;\n        }" if (parenthesized_expression "(uVar17 < sp->fts_pathlen)" ( (binary_expression "uVar17 < sp->fts_pathlen" identifier < (field_expression "sp->fts_pathlen" identifier -> field_identifier)) )) (compound_statement "{\n          iVar19 = 0x24;\n          free(pcVar3);\n          sp->fts_path = (char *)0x0;\n          *piVar14 = 0x24;\n        }" { (expression_statement "iVar19 = 0x24;" (assignment_expression "iVar19 = 0x24" identifier = number_literal) ;) (expression_statement "free(pcVar3);" (call_expression "free(pcVar3)" identifier (argument_list "(pcVar3)" ( identifier ))) ;) (expression_statement "sp->fts_path = (char *)0x0;" (assignment_expression "sp->fts_path = (char *)0x0" (field_expression "sp->fts_path" identifier -> field_identifier) = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "*piVar14 = 0x24;" (assignment_expression "*piVar14 = 0x24" (pointer_expression "*piVar14" * identifier) = number_literal) ;) }) (else_clause "else {\n          sp->fts_pathlen = uVar17;\n          pcVar18 = (char *)realloc(pcVar3,uVar17);\n          if (pcVar18 != (char *)0x0) {\n            sp->fts_path = pcVar18;\n            if ((pcVar3 != pcVar18) && (bVar6 = true, (sp->fts_options & 4) != 0)) {\n              local_a4 = pcVar18 + local_d0;\n            }\n            local_b0 = sp->fts_pathlen - local_d0;\n            goto LAB_000253d8;\n          }\n          free(sp->fts_path);\n          sp->fts_path = (char *)0x0;\n          iVar19 = *piVar14;\n        }" else (compound_statement "{\n          sp->fts_pathlen = uVar17;\n          pcVar18 = (char *)realloc(pcVar3,uVar17);\n          if (pcVar18 != (char *)0x0) {\n            sp->fts_path = pcVar18;\n            if ((pcVar3 != pcVar18) && (bVar6 = true, (sp->fts_options & 4) != 0)) {\n              local_a4 = pcVar18 + local_d0;\n            }\n            local_b0 = sp->fts_pathlen - local_d0;\n            goto LAB_000253d8;\n          }\n          free(sp->fts_path);\n          sp->fts_path = (char *)0x0;\n          iVar19 = *piVar14;\n        }" { (expression_statement "sp->fts_pathlen = uVar17;" (assignment_expression "sp->fts_pathlen = uVar17" (field_expression "sp->fts_pathlen" identifier -> field_identifier) = identifier) ;) (expression_statement "pcVar18 = (char *)realloc(pcVar3,uVar17);" (assignment_expression "pcVar18 = (char *)realloc(pcVar3,uVar17)" identifier = (cast_expression "(char *)realloc(pcVar3,uVar17)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "realloc(pcVar3,uVar17)" identifier (argument_list "(pcVar3,uVar17)" ( identifier , identifier ))))) ;) (if_statement "if (pcVar18 != (char *)0x0) {\n            sp->fts_path = pcVar18;\n            if ((pcVar3 != pcVar18) && (bVar6 = true, (sp->fts_options & 4) != 0)) {\n              local_a4 = pcVar18 + local_d0;\n            }\n            local_b0 = sp->fts_pathlen - local_d0;\n            goto LAB_000253d8;\n          }" if (parenthesized_expression "(pcVar18 != (char *)0x0)" ( (binary_expression "pcVar18 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            sp->fts_path = pcVar18;\n            if ((pcVar3 != pcVar18) && (bVar6 = true, (sp->fts_options & 4) != 0)) {\n              local_a4 = pcVar18 + local_d0;\n            }\n            local_b0 = sp->fts_pathlen - local_d0;\n            goto LAB_000253d8;\n          }" { (expression_statement "sp->fts_path = pcVar18;" (assignment_expression "sp->fts_path = pcVar18" (field_expression "sp->fts_path" identifier -> field_identifier) = identifier) ;) (if_statement "if ((pcVar3 != pcVar18) && (bVar6 = true, (sp->fts_options & 4) != 0)) {\n              local_a4 = pcVar18 + local_d0;\n            }" if (parenthesized_expression "((pcVar3 != pcVar18) && (bVar6 = true, (sp->fts_options & 4) != 0))" ( (binary_expression "(pcVar3 != pcVar18) && (bVar6 = true, (sp->fts_options & 4) != 0)" (parenthesized_expression "(pcVar3 != pcVar18)" ( (binary_expression "pcVar3 != pcVar18" identifier != identifier) )) && (parenthesized_expression "(bVar6 = true, (sp->fts_options & 4) != 0)" ( (comma_expression "bVar6 = true, (sp->fts_options & 4) != 0" (assignment_expression "bVar6 = true" identifier = true) , (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              local_a4 = pcVar18 + local_d0;\n            }" { (expression_statement "local_a4 = pcVar18 + local_d0;" (assignment_expression "local_a4 = pcVar18 + local_d0" identifier = (binary_expression "pcVar18 + local_d0" identifier + identifier)) ;) })) (expression_statement "local_b0 = sp->fts_pathlen - local_d0;" (assignment_expression "local_b0 = sp->fts_pathlen - local_d0" identifier = (binary_expression "sp->fts_pathlen - local_d0" (field_expression "sp->fts_pathlen" identifier -> field_identifier) - identifier)) ;) (goto_statement "goto LAB_000253d8;" goto statement_identifier ;) })) (expression_statement "free(sp->fts_path);" (call_expression "free(sp->fts_path)" identifier (argument_list "(sp->fts_path)" ( (field_expression "sp->fts_path" identifier -> field_identifier) ))) ;) (expression_statement "sp->fts_path = (char *)0x0;" (assignment_expression "sp->fts_path = (char *)0x0" (field_expression "sp->fts_path" identifier -> field_identifier) = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "iVar19 = *piVar14;" (assignment_expression "iVar19 = *piVar14" identifier = (pointer_expression "*piVar14" * identifier)) ;) }))) (goto_statement "goto LAB_000255a6;" goto statement_identifier ;) })) (labeled_statement "LAB_000253d8:\n      if (CARRY4(__n,local_d0)) {\n        free(p);\n        if (local_b8 != (FTSENT *)0x0) {\n          pDVar27 = local_b8->fts_dirp;\n          p_Var25 = local_b8->fts_link;\n          if (pDVar27 == (DIR *)0x0) goto LAB_00025e84;\n          do {\n            closedir((DIR *)pDVar27);\n            free(local_b8);\n            local_b8 = p_Var25;\n            while( true ) {\n              if (local_b8 == (FTSENT *)0x0) goto LAB_00025e94;\n              pDVar27 = local_b8->fts_dirp;\n              p_Var25 = local_b8->fts_link;\n              if (pDVar27 != (DIR *)0x0) break;\nLAB_00025e84:\n              free(local_b8);\n              local_b8 = p_Var25;\n            }\n          } while( true );\n        }\nLAB_00025e94:\n        closedir((DIR *)pFVar30->fts_dirp);\n        pFVar30->fts_dirp = (DIR *)0x0;\n        pFVar30->fts_info = 7;\n        local_b8 = (FTSENT *)0x0;\n        sp->fts_options = sp->fts_options | 0x4000;\n        *piVar14 = 0x24;\n        goto LAB_0002563f;\n      }" statement_identifier : (if_statement "if (CARRY4(__n,local_d0)) {\n        free(p);\n        if (local_b8 != (FTSENT *)0x0) {\n          pDVar27 = local_b8->fts_dirp;\n          p_Var25 = local_b8->fts_link;\n          if (pDVar27 == (DIR *)0x0) goto LAB_00025e84;\n          do {\n            closedir((DIR *)pDVar27);\n            free(local_b8);\n            local_b8 = p_Var25;\n            while( true ) {\n              if (local_b8 == (FTSENT *)0x0) goto LAB_00025e94;\n              pDVar27 = local_b8->fts_dirp;\n              p_Var25 = local_b8->fts_link;\n              if (pDVar27 != (DIR *)0x0) break;\nLAB_00025e84:\n              free(local_b8);\n              local_b8 = p_Var25;\n            }\n          } while( true );\n        }\nLAB_00025e94:\n        closedir((DIR *)pFVar30->fts_dirp);\n        pFVar30->fts_dirp = (DIR *)0x0;\n        pFVar30->fts_info = 7;\n        local_b8 = (FTSENT *)0x0;\n        sp->fts_options = sp->fts_options | 0x4000;\n        *piVar14 = 0x24;\n        goto LAB_0002563f;\n      }" if (parenthesized_expression "(CARRY4(__n,local_d0))" ( (call_expression "CARRY4(__n,local_d0)" identifier (argument_list "(__n,local_d0)" ( identifier , identifier ))) )) (compound_statement "{\n        free(p);\n        if (local_b8 != (FTSENT *)0x0) {\n          pDVar27 = local_b8->fts_dirp;\n          p_Var25 = local_b8->fts_link;\n          if (pDVar27 == (DIR *)0x0) goto LAB_00025e84;\n          do {\n            closedir((DIR *)pDVar27);\n            free(local_b8);\n            local_b8 = p_Var25;\n            while( true ) {\n              if (local_b8 == (FTSENT *)0x0) goto LAB_00025e94;\n              pDVar27 = local_b8->fts_dirp;\n              p_Var25 = local_b8->fts_link;\n              if (pDVar27 != (DIR *)0x0) break;\nLAB_00025e84:\n              free(local_b8);\n              local_b8 = p_Var25;\n            }\n          } while( true );\n        }\nLAB_00025e94:\n        closedir((DIR *)pFVar30->fts_dirp);\n        pFVar30->fts_dirp = (DIR *)0x0;\n        pFVar30->fts_info = 7;\n        local_b8 = (FTSENT *)0x0;\n        sp->fts_options = sp->fts_options | 0x4000;\n        *piVar14 = 0x24;\n        goto LAB_0002563f;\n      }" { (expression_statement "free(p);" (call_expression "free(p)" identifier (argument_list "(p)" ( identifier ))) ;) (if_statement "if (local_b8 != (FTSENT *)0x0) {\n          pDVar27 = local_b8->fts_dirp;\n          p_Var25 = local_b8->fts_link;\n          if (pDVar27 == (DIR *)0x0) goto LAB_00025e84;\n          do {\n            closedir((DIR *)pDVar27);\n            free(local_b8);\n            local_b8 = p_Var25;\n            while( true ) {\n              if (local_b8 == (FTSENT *)0x0) goto LAB_00025e94;\n              pDVar27 = local_b8->fts_dirp;\n              p_Var25 = local_b8->fts_link;\n              if (pDVar27 != (DIR *)0x0) break;\nLAB_00025e84:\n              free(local_b8);\n              local_b8 = p_Var25;\n            }\n          } while( true );\n        }" if (parenthesized_expression "(local_b8 != (FTSENT *)0x0)" ( (binary_expression "local_b8 != (FTSENT *)0x0" identifier != (cast_expression "(FTSENT *)0x0" ( (type_descriptor "FTSENT *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          pDVar27 = local_b8->fts_dirp;\n          p_Var25 = local_b8->fts_link;\n          if (pDVar27 == (DIR *)0x0) goto LAB_00025e84;\n          do {\n            closedir((DIR *)pDVar27);\n            free(local_b8);\n            local_b8 = p_Var25;\n            while( true ) {\n              if (local_b8 == (FTSENT *)0x0) goto LAB_00025e94;\n              pDVar27 = local_b8->fts_dirp;\n              p_Var25 = local_b8->fts_link;\n              if (pDVar27 != (DIR *)0x0) break;\nLAB_00025e84:\n              free(local_b8);\n              local_b8 = p_Var25;\n            }\n          } while( true );\n        }" { (expression_statement "pDVar27 = local_b8->fts_dirp;" (assignment_expression "pDVar27 = local_b8->fts_dirp" identifier = (field_expression "local_b8->fts_dirp" identifier -> field_identifier)) ;) (expression_statement "p_Var25 = local_b8->fts_link;" (assignment_expression "p_Var25 = local_b8->fts_link" identifier = (field_expression "local_b8->fts_link" identifier -> field_identifier)) ;) (if_statement "if (pDVar27 == (DIR *)0x0) goto LAB_00025e84;" if (parenthesized_expression "(pDVar27 == (DIR *)0x0)" ( (binary_expression "pDVar27 == (DIR *)0x0" identifier == (cast_expression "(DIR *)0x0" ( (type_descriptor "DIR *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00025e84;" goto statement_identifier ;)) (do_statement "do {\n            closedir((DIR *)pDVar27);\n            free(local_b8);\n            local_b8 = p_Var25;\n            while( true ) {\n              if (local_b8 == (FTSENT *)0x0) goto LAB_00025e94;\n              pDVar27 = local_b8->fts_dirp;\n              p_Var25 = local_b8->fts_link;\n              if (pDVar27 != (DIR *)0x0) break;\nLAB_00025e84:\n              free(local_b8);\n              local_b8 = p_Var25;\n            }\n          } while( true );" do (compound_statement "{\n            closedir((DIR *)pDVar27);\n            free(local_b8);\n            local_b8 = p_Var25;\n            while( true ) {\n              if (local_b8 == (FTSENT *)0x0) goto LAB_00025e94;\n              pDVar27 = local_b8->fts_dirp;\n              p_Var25 = local_b8->fts_link;\n              if (pDVar27 != (DIR *)0x0) break;\nLAB_00025e84:\n              free(local_b8);\n              local_b8 = p_Var25;\n            }\n          }" { (expression_statement "closedir((DIR *)pDVar27);" (call_expression "closedir((DIR *)pDVar27)" identifier (argument_list "((DIR *)pDVar27)" ( (cast_expression "(DIR *)pDVar27" ( (type_descriptor "DIR *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) ))) ;) (expression_statement "free(local_b8);" (call_expression "free(local_b8)" identifier (argument_list "(local_b8)" ( identifier ))) ;) (expression_statement "local_b8 = p_Var25;" (assignment_expression "local_b8 = p_Var25" identifier = identifier) ;) (while_statement "while( true ) {\n              if (local_b8 == (FTSENT *)0x0) goto LAB_00025e94;\n              pDVar27 = local_b8->fts_dirp;\n              p_Var25 = local_b8->fts_link;\n              if (pDVar27 != (DIR *)0x0) break;\nLAB_00025e84:\n              free(local_b8);\n              local_b8 = p_Var25;\n            }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n              if (local_b8 == (FTSENT *)0x0) goto LAB_00025e94;\n              pDVar27 = local_b8->fts_dirp;\n              p_Var25 = local_b8->fts_link;\n              if (pDVar27 != (DIR *)0x0) break;\nLAB_00025e84:\n              free(local_b8);\n              local_b8 = p_Var25;\n            }" { (if_statement "if (local_b8 == (FTSENT *)0x0) goto LAB_00025e94;" if (parenthesized_expression "(local_b8 == (FTSENT *)0x0)" ( (binary_expression "local_b8 == (FTSENT *)0x0" identifier == (cast_expression "(FTSENT *)0x0" ( (type_descriptor "FTSENT *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00025e94;" goto statement_identifier ;)) (expression_statement "pDVar27 = local_b8->fts_dirp;" (assignment_expression "pDVar27 = local_b8->fts_dirp" identifier = (field_expression "local_b8->fts_dirp" identifier -> field_identifier)) ;) (expression_statement "p_Var25 = local_b8->fts_link;" (assignment_expression "p_Var25 = local_b8->fts_link" identifier = (field_expression "local_b8->fts_link" identifier -> field_identifier)) ;) (if_statement "if (pDVar27 != (DIR *)0x0) break;" if (parenthesized_expression "(pDVar27 != (DIR *)0x0)" ( (binary_expression "pDVar27 != (DIR *)0x0" identifier != (cast_expression "(DIR *)0x0" ( (type_descriptor "DIR *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (break_statement "break;" break ;)) (labeled_statement "LAB_00025e84:\n              free(local_b8);" statement_identifier : (expression_statement "free(local_b8);" (call_expression "free(local_b8)" identifier (argument_list "(local_b8)" ( identifier ))) ;)) (expression_statement "local_b8 = p_Var25;" (assignment_expression "local_b8 = p_Var25" identifier = identifier) ;) })) }) while (parenthesized_expression "( true )" ( true )) ;) })) (labeled_statement "LAB_00025e94:\n        closedir((DIR *)pFVar30->fts_dirp);" statement_identifier : (expression_statement "closedir((DIR *)pFVar30->fts_dirp);" (call_expression "closedir((DIR *)pFVar30->fts_dirp)" identifier (argument_list "((DIR *)pFVar30->fts_dirp)" ( (cast_expression "(DIR *)pFVar30->fts_dirp" ( (type_descriptor "DIR *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "pFVar30->fts_dirp" identifier -> field_identifier)) ))) ;)) (expression_statement "pFVar30->fts_dirp = (DIR *)0x0;" (assignment_expression "pFVar30->fts_dirp = (DIR *)0x0" (field_expression "pFVar30->fts_dirp" identifier -> field_identifier) = (cast_expression "(DIR *)0x0" ( (type_descriptor "DIR *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "pFVar30->fts_info = 7;" (assignment_expression "pFVar30->fts_info = 7" (field_expression "pFVar30->fts_info" identifier -> field_identifier) = number_literal) ;) (expression_statement "local_b8 = (FTSENT *)0x0;" (assignment_expression "local_b8 = (FTSENT *)0x0" identifier = (cast_expression "(FTSENT *)0x0" ( (type_descriptor "FTSENT *" type_identifier (abstract_pointer_declarator "*" *)) ) 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 "*piVar14 = 0x24;" (assignment_expression "*piVar14 = 0x24" (pointer_expression "*piVar14" * identifier) = number_literal) ;) (goto_statement "goto LAB_0002563f;" goto statement_identifier ;) }))) (expression_statement "uVar16 = *(undefined4 *)((int)&pdVar15->d_ino + 4);" (assignment_expression "uVar16 = *(undefined4 *)((int)&pdVar15->d_ino + 4)" identifier = (pointer_expression "*(undefined4 *)((int)&pdVar15->d_ino + 4)" * (cast_expression "(undefined4 *)((int)&pdVar15->d_ino + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&pdVar15->d_ino + 4)" ( (binary_expression "(int)&pdVar15->d_ino + 4" (cast_expression "(int)&pdVar15->d_ino" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&pdVar15->d_ino" & (field_expression "pdVar15->d_ino" identifier -> field_identifier))) + number_literal) ))))) ;) (expression_statement "p->fts_pathlen = __n + local_d0;" (assignment_expression "p->fts_pathlen = __n + local_d0" (field_expression "p->fts_pathlen" identifier -> field_identifier) = (binary_expression "__n + local_d0" identifier + identifier)) ;) (expression_statement "p->fts_level = iVar19 + 1;" (assignment_expression "p->fts_level = iVar19 + 1" (field_expression "p->fts_level" identifier -> field_identifier) = (binary_expression "iVar19 + 1" identifier + number_literal)) ;) (expression_statement "p->fts_parent = sp->fts_cur;" (assignment_expression "p->fts_parent = sp->fts_cur" (field_expression "p->fts_parent" identifier -> field_identifier) = (field_expression "sp->fts_cur" identifier -> field_identifier)) ;) (expression_statement "_Var8 = pdVar15->d_ino;" (assignment_expression "_Var8 = pdVar15->d_ino" identifier = (field_expression "pdVar15->d_ino" identifier -> field_identifier)) ;) (expression_statement "*(undefined4 *)((int)&p->fts_statp[0].st_ino + 4) = uVar16;" (assignment_expression "*(undefined4 *)((int)&p->fts_statp[0].st_ino + 4) = uVar16" (pointer_expression "*(undefined4 *)((int)&p->fts_statp[0].st_ino + 4)" * (cast_expression "(undefined4 *)((int)&p->fts_statp[0].st_ino + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&p->fts_statp[0].st_ino + 4)" ( (binary_expression "(int)&p->fts_statp[0].st_ino + 4" (cast_expression "(int)&p->fts_statp[0].st_ino" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&p->fts_statp[0].st_ino" & (field_expression "p->fts_statp[0].st_ino" (subscript_expression "p->fts_statp[0]" (field_expression "p->fts_statp" identifier -> field_identifier) [ number_literal ]) . field_identifier))) + number_literal) )))) = identifier) ;) (expression_statement "*(int *)&p->fts_statp[0].st_ino = (int)_Var8;" (assignment_expression "*(int *)&p->fts_statp[0].st_ino = (int)_Var8" (pointer_expression "*(int *)&p->fts_statp[0].st_ino" * (cast_expression "(int *)&p->fts_statp[0].st_ino" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "&p->fts_statp[0].st_ino" & (field_expression "p->fts_statp[0].st_ino" (subscript_expression "p->fts_statp[0]" (field_expression "p->fts_statp" identifier -> field_identifier) [ number_literal ]) . field_identifier)))) = (cast_expression "(int)_Var8" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "uVar17 = sp->fts_options;" (assignment_expression "uVar17 = sp->fts_options" identifier = (field_expression "sp->fts_options" identifier -> field_identifier)) ;) (if_statement "if ((uVar17 & 4) == 0) {\n        p->fts_accpath = (char *)pFVar11;\n      }\n      else {\n        p->fts_accpath = p->fts_path;\n        memmove(local_a4,pFVar11,p->fts_namelen + 1);\n        uVar17 = sp->fts_options;\n      }" if (parenthesized_expression "((uVar17 & 4) == 0)" ( (binary_expression "(uVar17 & 4) == 0" (parenthesized_expression "(uVar17 & 4)" ( (binary_expression "uVar17 & 4" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n        p->fts_accpath = (char *)pFVar11;\n      }" { (expression_statement "p->fts_accpath = (char *)pFVar11;" (assignment_expression "p->fts_accpath = (char *)pFVar11" (field_expression "p->fts_accpath" identifier -> field_identifier) = (cast_expression "(char *)pFVar11" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) ;) }) (else_clause "else {\n        p->fts_accpath = p->fts_path;\n        memmove(local_a4,pFVar11,p->fts_namelen + 1);\n        uVar17 = sp->fts_options;\n      }" else (compound_statement "{\n        p->fts_accpath = p->fts_path;\n        memmove(local_a4,pFVar11,p->fts_namelen + 1);\n        uVar17 = sp->fts_options;\n      }" { (expression_statement "p->fts_accpath = p->fts_path;" (assignment_expression "p->fts_accpath = p->fts_path" (field_expression "p->fts_accpath" identifier -> field_identifier) = (field_expression "p->fts_path" identifier -> field_identifier)) ;) (expression_statement "memmove(local_a4,pFVar11,p->fts_namelen + 1);" (call_expression "memmove(local_a4,pFVar11,p->fts_namelen + 1)" identifier (argument_list "(local_a4,pFVar11,p->fts_namelen + 1)" ( identifier , identifier , (binary_expression "p->fts_namelen + 1" (field_expression "p->fts_namelen" identifier -> field_identifier) + number_literal) ))) ;) (expression_statement "uVar17 = sp->fts_options;" (assignment_expression "uVar17 = 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         ((uVar17 & 0x400) != 0)) {\n        uVar29 = pdVar15->d_type - 1;\n        if (((uVar17 & 0x18) == 0x18) && ((pdVar15->d_type & 0xfb) != 0)) {\n          p->fts_info = 0xb;\n          if (uVar29 < 0xc) {\n            p->fts_statp[0].st_mode = *(__mode_t *)(CSWTCH_40 + uVar29 * 4);\n            uVar16 = 1;\n          }\n          else {\n            p->fts_statp[0].st_mode = 0;\n            uVar16 = 1;\n          }\n        }\n        else {\n          p->fts_info = 0xb;\n          if (uVar29 < 0xc) {\n            p->fts_statp[0].st_mode = *(__mode_t *)(CSWTCH_40 + uVar29 * 4);\n            uVar16 = 2;\n          }\n          else {\n            p->fts_statp[0].st_mode = 0;\n            uVar16 = 2;\n          }\n        }\n        *(undefined4 *)&p->fts_statp[0].st_size = uVar16;\n        *(undefined4 *)((int)&p->fts_statp[0].st_size + 4) = 0;\n      }\n      else {\n        uVar13 = fts_stat(sp,p,false);\n        p->fts_info = uVar13;\n      }" if (parenthesized_expression "((sp->fts_compar == (_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *)0x0) ||\n         ((uVar17 & 0x400) != 0))" ( (binary_expression "(sp->fts_compar == (_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *)0x0) ||\n         ((uVar17 & 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 "((uVar17 & 0x400) != 0)" ( (binary_expression "(uVar17 & 0x400) != 0" (parenthesized_expression "(uVar17 & 0x400)" ( (binary_expression "uVar17 & 0x400" identifier & number_literal) )) != number_literal) ))) )) (compound_statement "{\n        uVar29 = pdVar15->d_type - 1;\n        if (((uVar17 & 0x18) == 0x18) && ((pdVar15->d_type & 0xfb) != 0)) {\n          p->fts_info = 0xb;\n          if (uVar29 < 0xc) {\n            p->fts_statp[0].st_mode = *(__mode_t *)(CSWTCH_40 + uVar29 * 4);\n            uVar16 = 1;\n          }\n          else {\n            p->fts_statp[0].st_mode = 0;\n            uVar16 = 1;\n          }\n        }\n        else {\n          p->fts_info = 0xb;\n          if (uVar29 < 0xc) {\n            p->fts_statp[0].st_mode = *(__mode_t *)(CSWTCH_40 + uVar29 * 4);\n            uVar16 = 2;\n          }\n          else {\n            p->fts_statp[0].st_mode = 0;\n            uVar16 = 2;\n          }\n        }\n        *(undefined4 *)&p->fts_statp[0].st_size = uVar16;\n        *(undefined4 *)((int)&p->fts_statp[0].st_size + 4) = 0;\n      }" { (expression_statement "uVar29 = pdVar15->d_type - 1;" (assignment_expression "uVar29 = pdVar15->d_type - 1" identifier = (binary_expression "pdVar15->d_type - 1" (field_expression "pdVar15->d_type" identifier -> field_identifier) - number_literal)) ;) (if_statement "if (((uVar17 & 0x18) == 0x18) && ((pdVar15->d_type & 0xfb) != 0)) {\n          p->fts_info = 0xb;\n          if (uVar29 < 0xc) {\n            p->fts_statp[0].st_mode = *(__mode_t *)(CSWTCH_40 + uVar29 * 4);\n            uVar16 = 1;\n          }\n          else {\n            p->fts_statp[0].st_mode = 0;\n            uVar16 = 1;\n          }\n        }\n        else {\n          p->fts_info = 0xb;\n          if (uVar29 < 0xc) {\n            p->fts_statp[0].st_mode = *(__mode_t *)(CSWTCH_40 + uVar29 * 4);\n            uVar16 = 2;\n          }\n          else {\n            p->fts_statp[0].st_mode = 0;\n            uVar16 = 2;\n          }\n        }" if (parenthesized_expression "(((uVar17 & 0x18) == 0x18) && ((pdVar15->d_type & 0xfb) != 0))" ( (binary_expression "((uVar17 & 0x18) == 0x18) && ((pdVar15->d_type & 0xfb) != 0)" (parenthesized_expression "((uVar17 & 0x18) == 0x18)" ( (binary_expression "(uVar17 & 0x18) == 0x18" (parenthesized_expression "(uVar17 & 0x18)" ( (binary_expression "uVar17 & 0x18" identifier & number_literal) )) == number_literal) )) && (parenthesized_expression "((pdVar15->d_type & 0xfb) != 0)" ( (binary_expression "(pdVar15->d_type & 0xfb) != 0" (parenthesized_expression "(pdVar15->d_type & 0xfb)" ( (binary_expression "pdVar15->d_type & 0xfb" (field_expression "pdVar15->d_type" identifier -> field_identifier) & number_literal) )) != number_literal) ))) )) (compound_statement "{\n          p->fts_info = 0xb;\n          if (uVar29 < 0xc) {\n            p->fts_statp[0].st_mode = *(__mode_t *)(CSWTCH_40 + uVar29 * 4);\n            uVar16 = 1;\n          }\n          else {\n            p->fts_statp[0].st_mode = 0;\n            uVar16 = 1;\n          }\n        }" { (expression_statement "p->fts_info = 0xb;" (assignment_expression "p->fts_info = 0xb" (field_expression "p->fts_info" identifier -> field_identifier) = number_literal) ;) (if_statement "if (uVar29 < 0xc) {\n            p->fts_statp[0].st_mode = *(__mode_t *)(CSWTCH_40 + uVar29 * 4);\n            uVar16 = 1;\n          }\n          else {\n            p->fts_statp[0].st_mode = 0;\n            uVar16 = 1;\n          }" if (parenthesized_expression "(uVar29 < 0xc)" ( (binary_expression "uVar29 < 0xc" identifier < number_literal) )) (compound_statement "{\n            p->fts_statp[0].st_mode = *(__mode_t *)(CSWTCH_40 + uVar29 * 4);\n            uVar16 = 1;\n          }" { (expression_statement "p->fts_statp[0].st_mode = *(__mode_t *)(CSWTCH_40 + uVar29 * 4);" (assignment_expression "p->fts_statp[0].st_mode = *(__mode_t *)(CSWTCH_40 + uVar29 * 4)" (field_expression "p->fts_statp[0].st_mode" (subscript_expression "p->fts_statp[0]" (field_expression "p->fts_statp" identifier -> field_identifier) [ number_literal ]) . field_identifier) = (pointer_expression "*(__mode_t *)(CSWTCH_40 + uVar29 * 4)" * (cast_expression "(__mode_t *)(CSWTCH_40 + uVar29 * 4)" ( (type_descriptor "__mode_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(CSWTCH_40 + uVar29 * 4)" ( (binary_expression "CSWTCH_40 + uVar29 * 4" identifier + (binary_expression "uVar29 * 4" identifier * number_literal)) ))))) ;) (expression_statement "uVar16 = 1;" (assignment_expression "uVar16 = 1" identifier = number_literal) ;) }) (else_clause "else {\n            p->fts_statp[0].st_mode = 0;\n            uVar16 = 1;\n          }" else (compound_statement "{\n            p->fts_statp[0].st_mode = 0;\n            uVar16 = 1;\n          }" { (expression_statement "p->fts_statp[0].st_mode = 0;" (assignment_expression "p->fts_statp[0].st_mode = 0" (field_expression "p->fts_statp[0].st_mode" (subscript_expression "p->fts_statp[0]" (field_expression "p->fts_statp" identifier -> field_identifier) [ number_literal ]) . field_identifier) = number_literal) ;) (expression_statement "uVar16 = 1;" (assignment_expression "uVar16 = 1" identifier = number_literal) ;) }))) }) (else_clause "else {\n          p->fts_info = 0xb;\n          if (uVar29 < 0xc) {\n            p->fts_statp[0].st_mode = *(__mode_t *)(CSWTCH_40 + uVar29 * 4);\n            uVar16 = 2;\n          }\n          else {\n            p->fts_statp[0].st_mode = 0;\n            uVar16 = 2;\n          }\n        }" else (compound_statement "{\n          p->fts_info = 0xb;\n          if (uVar29 < 0xc) {\n            p->fts_statp[0].st_mode = *(__mode_t *)(CSWTCH_40 + uVar29 * 4);\n            uVar16 = 2;\n          }\n          else {\n            p->fts_statp[0].st_mode = 0;\n            uVar16 = 2;\n          }\n        }" { (expression_statement "p->fts_info = 0xb;" (assignment_expression "p->fts_info = 0xb" (field_expression "p->fts_info" identifier -> field_identifier) = number_literal) ;) (if_statement "if (uVar29 < 0xc) {\n            p->fts_statp[0].st_mode = *(__mode_t *)(CSWTCH_40 + uVar29 * 4);\n            uVar16 = 2;\n          }\n          else {\n            p->fts_statp[0].st_mode = 0;\n            uVar16 = 2;\n          }" if (parenthesized_expression "(uVar29 < 0xc)" ( (binary_expression "uVar29 < 0xc" identifier < number_literal) )) (compound_statement "{\n            p->fts_statp[0].st_mode = *(__mode_t *)(CSWTCH_40 + uVar29 * 4);\n            uVar16 = 2;\n          }" { (expression_statement "p->fts_statp[0].st_mode = *(__mode_t *)(CSWTCH_40 + uVar29 * 4);" (assignment_expression "p->fts_statp[0].st_mode = *(__mode_t *)(CSWTCH_40 + uVar29 * 4)" (field_expression "p->fts_statp[0].st_mode" (subscript_expression "p->fts_statp[0]" (field_expression "p->fts_statp" identifier -> field_identifier) [ number_literal ]) . field_identifier) = (pointer_expression "*(__mode_t *)(CSWTCH_40 + uVar29 * 4)" * (cast_expression "(__mode_t *)(CSWTCH_40 + uVar29 * 4)" ( (type_descriptor "__mode_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(CSWTCH_40 + uVar29 * 4)" ( (binary_expression "CSWTCH_40 + uVar29 * 4" identifier + (binary_expression "uVar29 * 4" identifier * number_literal)) ))))) ;) (expression_statement "uVar16 = 2;" (assignment_expression "uVar16 = 2" identifier = number_literal) ;) }) (else_clause "else {\n            p->fts_statp[0].st_mode = 0;\n            uVar16 = 2;\n          }" else (compound_statement "{\n            p->fts_statp[0].st_mode = 0;\n            uVar16 = 2;\n          }" { (expression_statement "p->fts_statp[0].st_mode = 0;" (assignment_expression "p->fts_statp[0].st_mode = 0" (field_expression "p->fts_statp[0].st_mode" (subscript_expression "p->fts_statp[0]" (field_expression "p->fts_statp" identifier -> field_identifier) [ number_literal ]) . field_identifier) = number_literal) ;) (expression_statement "uVar16 = 2;" (assignment_expression "uVar16 = 2" identifier = number_literal) ;) }))) }))) (expression_statement "*(undefined4 *)&p->fts_statp[0].st_size = uVar16;" (assignment_expression "*(undefined4 *)&p->fts_statp[0].st_size = uVar16" (pointer_expression "*(undefined4 *)&p->fts_statp[0].st_size" * (cast_expression "(undefined4 *)&p->fts_statp[0].st_size" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&p->fts_statp[0].st_size" & (field_expression "p->fts_statp[0].st_size" (subscript_expression "p->fts_statp[0]" (field_expression "p->fts_statp" identifier -> field_identifier) [ number_literal ]) . field_identifier)))) = identifier) ;) (expression_statement "*(undefined4 *)((int)&p->fts_statp[0].st_size + 4) = 0;" (assignment_expression "*(undefined4 *)((int)&p->fts_statp[0].st_size + 4) = 0" (pointer_expression "*(undefined4 *)((int)&p->fts_statp[0].st_size + 4)" * (cast_expression "(undefined4 *)((int)&p->fts_statp[0].st_size + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&p->fts_statp[0].st_size + 4)" ( (binary_expression "(int)&p->fts_statp[0].st_size + 4" (cast_expression "(int)&p->fts_statp[0].st_size" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&p->fts_statp[0].st_size" & (field_expression "p->fts_statp[0].st_size" (subscript_expression "p->fts_statp[0]" (field_expression "p->fts_statp" identifier -> field_identifier) [ number_literal ]) . field_identifier))) + number_literal) )))) = number_literal) ;) }) (else_clause "else {\n        uVar13 = fts_stat(sp,p,false);\n        p->fts_info = uVar13;\n      }" else (compound_statement "{\n        uVar13 = fts_stat(sp,p,false);\n        p->fts_info = uVar13;\n      }" { (expression_statement "uVar13 = fts_stat(sp,p,false);" (assignment_expression "uVar13 = fts_stat(sp,p,false)" identifier = (call_expression "fts_stat(sp,p,false)" identifier (argument_list "(sp,p,false)" ( identifier , identifier , false )))) ;) (expression_statement "p->fts_info = uVar13;" (assignment_expression "p->fts_info = uVar13" (field_expression "p->fts_info" identifier -> field_identifier) = identifier) ;) }))) (expression_statement "p->fts_link = (_ftsent *)0x0;" (assignment_expression "p->fts_link = (_ftsent *)0x0" (field_expression "p->fts_link" identifier -> field_identifier) = (cast_expression "(_ftsent *)0x0" ( (type_descriptor "_ftsent *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "pFVar11 = p;" (assignment_expression "pFVar11 = p" identifier = identifier) ;) (if_statement "if (local_b8 != (FTSENT *)0x0) {\n        local_c4->fts_link = p;\n        pFVar11 = local_b8;\n      }" if (parenthesized_expression "(local_b8 != (FTSENT *)0x0)" ( (binary_expression "local_b8 != (FTSENT *)0x0" identifier != (cast_expression "(FTSENT *)0x0" ( (type_descriptor "FTSENT *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        local_c4->fts_link = p;\n        pFVar11 = local_b8;\n      }" { (expression_statement "local_c4->fts_link = p;" (assignment_expression "local_c4->fts_link = p" (field_expression "local_c4->fts_link" identifier -> field_identifier) = identifier) ;) (expression_statement "pFVar11 = local_b8;" (assignment_expression "pFVar11 = local_b8" identifier = identifier) ;) })) (expression_statement "local_b8 = pFVar11;" (assignment_expression "local_b8 = pFVar11" identifier = identifier) ;) (expression_statement "local_c4 = p;" (assignment_expression "local_c4 = p" identifier = identifier) ;) (if_statement "if (local_d4 == 10000) {\n        if (sp->fts_compar == (_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *)0x0) {\n          pFVar4 = pFVar30->fts_fts;\n          if ((pFVar4->fts_options & 0x200) != 0) {\n            table = pFVar4->fts_leaf_optimization_works_ht;\n            if (table == (hash_table *)0x0) {\n              table = hash_initialize(0xd,(Hash_tuning *)0x0,dev_type_hash,dev_type_compare,\n                                      (Hash_data_freer)data_freer);\n              pFVar4->fts_leaf_optimization_works_ht = table;\n              if (table != (Hash_table *)0x0) goto LAB_00025920;\nLAB_000259b0:\n              if ((local_9c < 0) ||\n                 (iVar22 = fstatfs64(local_9c,(statfs64 *)&fs_buf), _Var10 = fs_buf.f_type,\n                 iVar22 != 0)) goto LAB_00025a48;\n              local_d4 = fs_buf.f_type;\n              if ((table != (Hash_table *)0x0) &&\n                 (entry = (undefined4 *)malloc(0xc), entry != (undefined4 *)0x0)) {\n                _Var9 = pFVar30->fts_statp[0].st_dev;\n                entry[1] = *(undefined4 *)((int)&pFVar30->fts_statp[0].st_dev + 4);\n                *entry = (int)_Var9;\n                entry[2] = _Var10;\n                puVar23 = (undefined4 *)hash_insert(table,entry);\n                if (puVar23 == (undefined4 *)0x0) {\n                  free(entry);\n                  local_d4 = fs_buf.f_type;\n                }\n                else {\n                  if (entry != puVar23) {\n                    /* WARNING: Subroutine does not return */\n                    abort();\n                  }\n                  local_d4 = fs_buf.f_type;\n                }\n              }\n            }\n            else {\nLAB_00025920:\n              tmp.st_dev._4_4_ = *(undefined4 *)((int)&pFVar30->fts_statp[0].st_dev + 4);\n              tmp.st_dev._0_4_ = (undefined4)pFVar30->fts_statp[0].st_dev;\n              pvVar21 = hash_lookup(table,&tmp);\n              if (pvVar21 == (void *)0x0) goto LAB_000259b0;\n              local_d4 = *(int *)((int)pvVar21 + 8);\n            }\n            if (((local_d4 == 0x6969) || (local_d4 == 0x1021994)) || (local_d4 == -0xacb2be)) {\n              bVar7 = false;\n              goto LAB_00025473;\n            }\n          }\nLAB_00025a48:\n          bVar7 = true;\n        }\nLAB_00025473:\n        local_d4 = 0x2711;\n        goto LAB_000252fb;\n      }" if (parenthesized_expression "(local_d4 == 10000)" ( (binary_expression "local_d4 == 10000" identifier == number_literal) )) (compound_statement "{\n        if (sp->fts_compar == (_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *)0x0) {\n          pFVar4 = pFVar30->fts_fts;\n          if ((pFVar4->fts_options & 0x200) != 0) {\n            table = pFVar4->fts_leaf_optimization_works_ht;\n            if (table == (hash_table *)0x0) {\n              table = hash_initialize(0xd,(Hash_tuning *)0x0,dev_type_hash,dev_type_compare,\n                                      (Hash_data_freer)data_freer);\n              pFVar4->fts_leaf_optimization_works_ht = table;\n              if (table != (Hash_table *)0x0) goto LAB_00025920;\nLAB_000259b0:\n              if ((local_9c < 0) ||\n                 (iVar22 = fstatfs64(local_9c,(statfs64 *)&fs_buf), _Var10 = fs_buf.f_type,\n                 iVar22 != 0)) goto LAB_00025a48;\n              local_d4 = fs_buf.f_type;\n              if ((table != (Hash_table *)0x0) &&\n                 (entry = (undefined4 *)malloc(0xc), entry != (undefined4 *)0x0)) {\n                _Var9 = pFVar30->fts_statp[0].st_dev;\n                entry[1] = *(undefined4 *)((int)&pFVar30->fts_statp[0].st_dev + 4);\n                *entry = (int)_Var9;\n                entry[2] = _Var10;\n                puVar23 = (undefined4 *)hash_insert(table,entry);\n                if (puVar23 == (undefined4 *)0x0) {\n                  free(entry);\n                  local_d4 = fs_buf.f_type;\n                }\n                else {\n                  if (entry != puVar23) {\n                    /* WARNING: Subroutine does not return */\n                    abort();\n                  }\n                  local_d4 = fs_buf.f_type;\n                }\n              }\n            }\n            else {\nLAB_00025920:\n              tmp.st_dev._4_4_ = *(undefined4 *)((int)&pFVar30->fts_statp[0].st_dev + 4);\n              tmp.st_dev._0_4_ = (undefined4)pFVar30->fts_statp[0].st_dev;\n              pvVar21 = hash_lookup(table,&tmp);\n              if (pvVar21 == (void *)0x0) goto LAB_000259b0;\n              local_d4 = *(int *)((int)pvVar21 + 8);\n            }\n            if (((local_d4 == 0x6969) || (local_d4 == 0x1021994)) || (local_d4 == -0xacb2be)) {\n              bVar7 = false;\n              goto LAB_00025473;\n            }\n          }\nLAB_00025a48:\n          bVar7 = true;\n        }\nLAB_00025473:\n        local_d4 = 0x2711;\n        goto LAB_000252fb;\n      }" { (if_statement "if (sp->fts_compar == (_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *)0x0) {\n          pFVar4 = pFVar30->fts_fts;\n          if ((pFVar4->fts_options & 0x200) != 0) {\n            table = pFVar4->fts_leaf_optimization_works_ht;\n            if (table == (hash_table *)0x0) {\n              table = hash_initialize(0xd,(Hash_tuning *)0x0,dev_type_hash,dev_type_compare,\n                                      (Hash_data_freer)data_freer);\n              pFVar4->fts_leaf_optimization_works_ht = table;\n              if (table != (Hash_table *)0x0) goto LAB_00025920;\nLAB_000259b0:\n              if ((local_9c < 0) ||\n                 (iVar22 = fstatfs64(local_9c,(statfs64 *)&fs_buf), _Var10 = fs_buf.f_type,\n                 iVar22 != 0)) goto LAB_00025a48;\n              local_d4 = fs_buf.f_type;\n              if ((table != (Hash_table *)0x0) &&\n                 (entry = (undefined4 *)malloc(0xc), entry != (undefined4 *)0x0)) {\n                _Var9 = pFVar30->fts_statp[0].st_dev;\n                entry[1] = *(undefined4 *)((int)&pFVar30->fts_statp[0].st_dev + 4);\n                *entry = (int)_Var9;\n                entry[2] = _Var10;\n                puVar23 = (undefined4 *)hash_insert(table,entry);\n                if (puVar23 == (undefined4 *)0x0) {\n                  free(entry);\n                  local_d4 = fs_buf.f_type;\n                }\n                else {\n                  if (entry != puVar23) {\n                    /* WARNING: Subroutine does not return */\n                    abort();\n                  }\n                  local_d4 = fs_buf.f_type;\n                }\n              }\n            }\n            else {\nLAB_00025920:\n              tmp.st_dev._4_4_ = *(undefined4 *)((int)&pFVar30->fts_statp[0].st_dev + 4);\n              tmp.st_dev._0_4_ = (undefined4)pFVar30->fts_statp[0].st_dev;\n              pvVar21 = hash_lookup(table,&tmp);\n              if (pvVar21 == (void *)0x0) goto LAB_000259b0;\n              local_d4 = *(int *)((int)pvVar21 + 8);\n            }\n            if (((local_d4 == 0x6969) || (local_d4 == 0x1021994)) || (local_d4 == -0xacb2be)) {\n              bVar7 = false;\n              goto LAB_00025473;\n            }\n          }\nLAB_00025a48:\n          bVar7 = true;\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          pFVar4 = pFVar30->fts_fts;\n          if ((pFVar4->fts_options & 0x200) != 0) {\n            table = pFVar4->fts_leaf_optimization_works_ht;\n            if (table == (hash_table *)0x0) {\n              table = hash_initialize(0xd,(Hash_tuning *)0x0,dev_type_hash,dev_type_compare,\n                                      (Hash_data_freer)data_freer);\n              pFVar4->fts_leaf_optimization_works_ht = table;\n              if (table != (Hash_table *)0x0) goto LAB_00025920;\nLAB_000259b0:\n              if ((local_9c < 0) ||\n                 (iVar22 = fstatfs64(local_9c,(statfs64 *)&fs_buf), _Var10 = fs_buf.f_type,\n                 iVar22 != 0)) goto LAB_00025a48;\n              local_d4 = fs_buf.f_type;\n              if ((table != (Hash_table *)0x0) &&\n                 (entry = (undefined4 *)malloc(0xc), entry != (undefined4 *)0x0)) {\n                _Var9 = pFVar30->fts_statp[0].st_dev;\n                entry[1] = *(undefined4 *)((int)&pFVar30->fts_statp[0].st_dev + 4);\n                *entry = (int)_Var9;\n                entry[2] = _Var10;\n                puVar23 = (undefined4 *)hash_insert(table,entry);\n                if (puVar23 == (undefined4 *)0x0) {\n                  free(entry);\n                  local_d4 = fs_buf.f_type;\n                }\n                else {\n                  if (entry != puVar23) {\n                    /* WARNING: Subroutine does not return */\n                    abort();\n                  }\n                  local_d4 = fs_buf.f_type;\n                }\n              }\n            }\n            else {\nLAB_00025920:\n              tmp.st_dev._4_4_ = *(undefined4 *)((int)&pFVar30->fts_statp[0].st_dev + 4);\n              tmp.st_dev._0_4_ = (undefined4)pFVar30->fts_statp[0].st_dev;\n              pvVar21 = hash_lookup(table,&tmp);\n              if (pvVar21 == (void *)0x0) goto LAB_000259b0;\n              local_d4 = *(int *)((int)pvVar21 + 8);\n            }\n            if (((local_d4 == 0x6969) || (local_d4 == 0x1021994)) || (local_d4 == -0xacb2be)) {\n              bVar7 = false;\n              goto LAB_00025473;\n            }\n          }\nLAB_00025a48:\n          bVar7 = true;\n        }" { (expression_statement "pFVar4 = pFVar30->fts_fts;" (assignment_expression "pFVar4 = pFVar30->fts_fts" identifier = (field_expression "pFVar30->fts_fts" identifier -> field_identifier)) ;) (if_statement "if ((pFVar4->fts_options & 0x200) != 0) {\n            table = pFVar4->fts_leaf_optimization_works_ht;\n            if (table == (hash_table *)0x0) {\n              table = hash_initialize(0xd,(Hash_tuning *)0x0,dev_type_hash,dev_type_compare,\n                                      (Hash_data_freer)data_freer);\n              pFVar4->fts_leaf_optimization_works_ht = table;\n              if (table != (Hash_table *)0x0) goto LAB_00025920;\nLAB_000259b0:\n              if ((local_9c < 0) ||\n                 (iVar22 = fstatfs64(local_9c,(statfs64 *)&fs_buf), _Var10 = fs_buf.f_type,\n                 iVar22 != 0)) goto LAB_00025a48;\n              local_d4 = fs_buf.f_type;\n              if ((table != (Hash_table *)0x0) &&\n                 (entry = (undefined4 *)malloc(0xc), entry != (undefined4 *)0x0)) {\n                _Var9 = pFVar30->fts_statp[0].st_dev;\n                entry[1] = *(undefined4 *)((int)&pFVar30->fts_statp[0].st_dev + 4);\n                *entry = (int)_Var9;\n                entry[2] = _Var10;\n                puVar23 = (undefined4 *)hash_insert(table,entry);\n                if (puVar23 == (undefined4 *)0x0) {\n                  free(entry);\n                  local_d4 = fs_buf.f_type;\n                }\n                else {\n                  if (entry != puVar23) {\n                    /* WARNING: Subroutine does not return */\n                    abort();\n                  }\n                  local_d4 = fs_buf.f_type;\n                }\n              }\n            }\n            else {\nLAB_00025920:\n              tmp.st_dev._4_4_ = *(undefined4 *)((int)&pFVar30->fts_statp[0].st_dev + 4);\n              tmp.st_dev._0_4_ = (undefined4)pFVar30->fts_statp[0].st_dev;\n              pvVar21 = hash_lookup(table,&tmp);\n              if (pvVar21 == (void *)0x0) goto LAB_000259b0;\n              local_d4 = *(int *)((int)pvVar21 + 8);\n            }\n            if (((local_d4 == 0x6969) || (local_d4 == 0x1021994)) || (local_d4 == -0xacb2be)) {\n              bVar7 = false;\n              goto LAB_00025473;\n            }\n          }" if (parenthesized_expression "((pFVar4->fts_options & 0x200) != 0)" ( (binary_expression "(pFVar4->fts_options & 0x200) != 0" (parenthesized_expression "(pFVar4->fts_options & 0x200)" ( (binary_expression "pFVar4->fts_options & 0x200" (field_expression "pFVar4->fts_options" identifier -> field_identifier) & number_literal) )) != number_literal) )) (compound_statement "{\n            table = pFVar4->fts_leaf_optimization_works_ht;\n            if (table == (hash_table *)0x0) {\n              table = hash_initialize(0xd,(Hash_tuning *)0x0,dev_type_hash,dev_type_compare,\n                                      (Hash_data_freer)data_freer);\n              pFVar4->fts_leaf_optimization_works_ht = table;\n              if (table != (Hash_table *)0x0) goto LAB_00025920;\nLAB_000259b0:\n              if ((local_9c < 0) ||\n                 (iVar22 = fstatfs64(local_9c,(statfs64 *)&fs_buf), _Var10 = fs_buf.f_type,\n                 iVar22 != 0)) goto LAB_00025a48;\n              local_d4 = fs_buf.f_type;\n              if ((table != (Hash_table *)0x0) &&\n                 (entry = (undefined4 *)malloc(0xc), entry != (undefined4 *)0x0)) {\n                _Var9 = pFVar30->fts_statp[0].st_dev;\n                entry[1] = *(undefined4 *)((int)&pFVar30->fts_statp[0].st_dev + 4);\n                *entry = (int)_Var9;\n                entry[2] = _Var10;\n                puVar23 = (undefined4 *)hash_insert(table,entry);\n                if (puVar23 == (undefined4 *)0x0) {\n                  free(entry);\n                  local_d4 = fs_buf.f_type;\n                }\n                else {\n                  if (entry != puVar23) {\n                    /* WARNING: Subroutine does not return */\n                    abort();\n                  }\n                  local_d4 = fs_buf.f_type;\n                }\n              }\n            }\n            else {\nLAB_00025920:\n              tmp.st_dev._4_4_ = *(undefined4 *)((int)&pFVar30->fts_statp[0].st_dev + 4);\n              tmp.st_dev._0_4_ = (undefined4)pFVar30->fts_statp[0].st_dev;\n              pvVar21 = hash_lookup(table,&tmp);\n              if (pvVar21 == (void *)0x0) goto LAB_000259b0;\n              local_d4 = *(int *)((int)pvVar21 + 8);\n            }\n            if (((local_d4 == 0x6969) || (local_d4 == 0x1021994)) || (local_d4 == -0xacb2be)) {\n              bVar7 = false;\n              goto LAB_00025473;\n            }\n          }" { (expression_statement "table = pFVar4->fts_leaf_optimization_works_ht;" (assignment_expression "table = pFVar4->fts_leaf_optimization_works_ht" identifier = (field_expression "pFVar4->fts_leaf_optimization_works_ht" identifier -> field_identifier)) ;) (if_statement "if (table == (hash_table *)0x0) {\n              table = hash_initialize(0xd,(Hash_tuning *)0x0,dev_type_hash,dev_type_compare,\n                                      (Hash_data_freer)data_freer);\n              pFVar4->fts_leaf_optimization_works_ht = table;\n              if (table != (Hash_table *)0x0) goto LAB_00025920;\nLAB_000259b0:\n              if ((local_9c < 0) ||\n                 (iVar22 = fstatfs64(local_9c,(statfs64 *)&fs_buf), _Var10 = fs_buf.f_type,\n                 iVar22 != 0)) goto LAB_00025a48;\n              local_d4 = fs_buf.f_type;\n              if ((table != (Hash_table *)0x0) &&\n                 (entry = (undefined4 *)malloc(0xc), entry != (undefined4 *)0x0)) {\n                _Var9 = pFVar30->fts_statp[0].st_dev;\n                entry[1] = *(undefined4 *)((int)&pFVar30->fts_statp[0].st_dev + 4);\n                *entry = (int)_Var9;\n                entry[2] = _Var10;\n                puVar23 = (undefined4 *)hash_insert(table,entry);\n                if (puVar23 == (undefined4 *)0x0) {\n                  free(entry);\n                  local_d4 = fs_buf.f_type;\n                }\n                else {\n                  if (entry != puVar23) {\n                    /* WARNING: Subroutine does not return */\n                    abort();\n                  }\n                  local_d4 = fs_buf.f_type;\n                }\n              }\n            }\n            else {\nLAB_00025920:\n              tmp.st_dev._4_4_ = *(undefined4 *)((int)&pFVar30->fts_statp[0].st_dev + 4);\n              tmp.st_dev._0_4_ = (undefined4)pFVar30->fts_statp[0].st_dev;\n              pvVar21 = hash_lookup(table,&tmp);\n              if (pvVar21 == (void *)0x0) goto LAB_000259b0;\n              local_d4 = *(int *)((int)pvVar21 + 8);\n            }" if (parenthesized_expression "(table == (hash_table *)0x0)" ( (binary_expression "table == (hash_table *)0x0" identifier == (cast_expression "(hash_table *)0x0" ( (type_descriptor "hash_table *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n              table = hash_initialize(0xd,(Hash_tuning *)0x0,dev_type_hash,dev_type_compare,\n                                      (Hash_data_freer)data_freer);\n              pFVar4->fts_leaf_optimization_works_ht = table;\n              if (table != (Hash_table *)0x0) goto LAB_00025920;\nLAB_000259b0:\n              if ((local_9c < 0) ||\n                 (iVar22 = fstatfs64(local_9c,(statfs64 *)&fs_buf), _Var10 = fs_buf.f_type,\n                 iVar22 != 0)) goto LAB_00025a48;\n              local_d4 = fs_buf.f_type;\n              if ((table != (Hash_table *)0x0) &&\n                 (entry = (undefined4 *)malloc(0xc), entry != (undefined4 *)0x0)) {\n                _Var9 = pFVar30->fts_statp[0].st_dev;\n                entry[1] = *(undefined4 *)((int)&pFVar30->fts_statp[0].st_dev + 4);\n                *entry = (int)_Var9;\n                entry[2] = _Var10;\n                puVar23 = (undefined4 *)hash_insert(table,entry);\n                if (puVar23 == (undefined4 *)0x0) {\n                  free(entry);\n                  local_d4 = fs_buf.f_type;\n                }\n                else {\n                  if (entry != puVar23) {\n                    /* WARNING: Subroutine does not return */\n                    abort();\n                  }\n                  local_d4 = fs_buf.f_type;\n                }\n              }\n            }" { (expression_statement "table = hash_initialize(0xd,(Hash_tuning *)0x0,dev_type_hash,dev_type_compare,\n                                      (Hash_data_freer)data_freer);" (assignment_expression "table = hash_initialize(0xd,(Hash_tuning *)0x0,dev_type_hash,dev_type_compare,\n                                      (Hash_data_freer)data_freer)" identifier = (call_expression "hash_initialize(0xd,(Hash_tuning *)0x0,dev_type_hash,dev_type_compare,\n                                      (Hash_data_freer)data_freer)" identifier (argument_list "(0xd,(Hash_tuning *)0x0,dev_type_hash,dev_type_compare,\n                                      (Hash_data_freer)data_freer)" ( number_literal , (cast_expression "(Hash_tuning *)0x0" ( (type_descriptor "Hash_tuning *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) , identifier , identifier , (cast_expression "(Hash_data_freer)data_freer" ( (type_descriptor "Hash_data_freer" type_identifier) ) identifier) )))) ;) (expression_statement "pFVar4->fts_leaf_optimization_works_ht = table;" (assignment_expression "pFVar4->fts_leaf_optimization_works_ht = table" (field_expression "pFVar4->fts_leaf_optimization_works_ht" identifier -> field_identifier) = identifier) ;) (if_statement "if (table != (Hash_table *)0x0) goto LAB_00025920;" if (parenthesized_expression "(table != (Hash_table *)0x0)" ( (binary_expression "table != (Hash_table *)0x0" identifier != (cast_expression "(Hash_table *)0x0" ( (type_descriptor "Hash_table *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00025920;" goto statement_identifier ;)) (labeled_statement "LAB_000259b0:\n              if ((local_9c < 0) ||\n                 (iVar22 = fstatfs64(local_9c,(statfs64 *)&fs_buf), _Var10 = fs_buf.f_type,\n                 iVar22 != 0)) goto LAB_00025a48;" statement_identifier : (if_statement "if ((local_9c < 0) ||\n                 (iVar22 = fstatfs64(local_9c,(statfs64 *)&fs_buf), _Var10 = fs_buf.f_type,\n                 iVar22 != 0)) goto LAB_00025a48;" if (parenthesized_expression "((local_9c < 0) ||\n                 (iVar22 = fstatfs64(local_9c,(statfs64 *)&fs_buf), _Var10 = fs_buf.f_type,\n                 iVar22 != 0))" ( (binary_expression "(local_9c < 0) ||\n                 (iVar22 = fstatfs64(local_9c,(statfs64 *)&fs_buf), _Var10 = fs_buf.f_type,\n                 iVar22 != 0)" (parenthesized_expression "(local_9c < 0)" ( (binary_expression "local_9c < 0" identifier < number_literal) )) || (parenthesized_expression "(iVar22 = fstatfs64(local_9c,(statfs64 *)&fs_buf), _Var10 = fs_buf.f_type,\n                 iVar22 != 0)" ( (comma_expression "iVar22 = fstatfs64(local_9c,(statfs64 *)&fs_buf), _Var10 = fs_buf.f_type,\n                 iVar22 != 0" (assignment_expression "iVar22 = fstatfs64(local_9c,(statfs64 *)&fs_buf)" identifier = (call_expression "fstatfs64(local_9c,(statfs64 *)&fs_buf)" identifier (argument_list "(local_9c,(statfs64 *)&fs_buf)" ( identifier , (cast_expression "(statfs64 *)&fs_buf" ( (type_descriptor "statfs64 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&fs_buf" & identifier)) )))) , (comma_expression "_Var10 = fs_buf.f_type,\n                 iVar22 != 0" (assignment_expression "_Var10 = fs_buf.f_type" identifier = (field_expression "fs_buf.f_type" identifier . field_identifier)) , (binary_expression "iVar22 != 0" identifier != number_literal))) ))) )) (goto_statement "goto LAB_00025a48;" goto statement_identifier ;))) (expression_statement "local_d4 = fs_buf.f_type;" (assignment_expression "local_d4 = fs_buf.f_type" identifier = (field_expression "fs_buf.f_type" identifier . field_identifier)) ;) (if_statement "if ((table != (Hash_table *)0x0) &&\n                 (entry = (undefined4 *)malloc(0xc), entry != (undefined4 *)0x0)) {\n                _Var9 = pFVar30->fts_statp[0].st_dev;\n                entry[1] = *(undefined4 *)((int)&pFVar30->fts_statp[0].st_dev + 4);\n                *entry = (int)_Var9;\n                entry[2] = _Var10;\n                puVar23 = (undefined4 *)hash_insert(table,entry);\n                if (puVar23 == (undefined4 *)0x0) {\n                  free(entry);\n                  local_d4 = fs_buf.f_type;\n                }\n                else {\n                  if (entry != puVar23) {\n                    /* WARNING: Subroutine does not return */\n                    abort();\n                  }\n                  local_d4 = fs_buf.f_type;\n                }\n              }" if (parenthesized_expression "((table != (Hash_table *)0x0) &&\n                 (entry = (undefined4 *)malloc(0xc), entry != (undefined4 *)0x0))" ( (binary_expression "(table != (Hash_table *)0x0) &&\n                 (entry = (undefined4 *)malloc(0xc), entry != (undefined4 *)0x0)" (parenthesized_expression "(table != (Hash_table *)0x0)" ( (binary_expression "table != (Hash_table *)0x0" identifier != (cast_expression "(Hash_table *)0x0" ( (type_descriptor "Hash_table *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(entry = (undefined4 *)malloc(0xc), entry != (undefined4 *)0x0)" ( (comma_expression "entry = (undefined4 *)malloc(0xc), entry != (undefined4 *)0x0" (assignment_expression "entry = (undefined4 *)malloc(0xc)" identifier = (cast_expression "(undefined4 *)malloc(0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "malloc(0xc)" identifier (argument_list "(0xc)" ( number_literal ))))) , (binary_expression "entry != (undefined4 *)0x0" identifier != (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) (compound_statement "{\n                _Var9 = pFVar30->fts_statp[0].st_dev;\n                entry[1] = *(undefined4 *)((int)&pFVar30->fts_statp[0].st_dev + 4);\n                *entry = (int)_Var9;\n                entry[2] = _Var10;\n                puVar23 = (undefined4 *)hash_insert(table,entry);\n                if (puVar23 == (undefined4 *)0x0) {\n                  free(entry);\n                  local_d4 = fs_buf.f_type;\n                }\n                else {\n                  if (entry != puVar23) {\n                    /* WARNING: Subroutine does not return */\n                    abort();\n                  }\n                  local_d4 = fs_buf.f_type;\n                }\n              }" { (expression_statement "_Var9 = pFVar30->fts_statp[0].st_dev;" (assignment_expression "_Var9 = pFVar30->fts_statp[0].st_dev" identifier = (field_expression "pFVar30->fts_statp[0].st_dev" (subscript_expression "pFVar30->fts_statp[0]" (field_expression "pFVar30->fts_statp" identifier -> field_identifier) [ number_literal ]) . field_identifier)) ;) (expression_statement "entry[1] = *(undefined4 *)((int)&pFVar30->fts_statp[0].st_dev + 4);" (assignment_expression "entry[1] = *(undefined4 *)((int)&pFVar30->fts_statp[0].st_dev + 4)" (subscript_expression "entry[1]" identifier [ number_literal ]) = (pointer_expression "*(undefined4 *)((int)&pFVar30->fts_statp[0].st_dev + 4)" * (cast_expression "(undefined4 *)((int)&pFVar30->fts_statp[0].st_dev + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&pFVar30->fts_statp[0].st_dev + 4)" ( (binary_expression "(int)&pFVar30->fts_statp[0].st_dev + 4" (cast_expression "(int)&pFVar30->fts_statp[0].st_dev" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&pFVar30->fts_statp[0].st_dev" & (field_expression "pFVar30->fts_statp[0].st_dev" (subscript_expression "pFVar30->fts_statp[0]" (field_expression "pFVar30->fts_statp" identifier -> field_identifier) [ number_literal ]) . field_identifier))) + number_literal) ))))) ;) (expression_statement "*entry = (int)_Var9;" (assignment_expression "*entry = (int)_Var9" (pointer_expression "*entry" * identifier) = (cast_expression "(int)_Var9" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "entry[2] = _Var10;" (assignment_expression "entry[2] = _Var10" (subscript_expression "entry[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar23 = (undefined4 *)hash_insert(table,entry);" (assignment_expression "puVar23 = (undefined4 *)hash_insert(table,entry)" identifier = (cast_expression "(undefined4 *)hash_insert(table,entry)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "hash_insert(table,entry)" identifier (argument_list "(table,entry)" ( identifier , identifier ))))) ;) (if_statement "if (puVar23 == (undefined4 *)0x0) {\n                  free(entry);\n                  local_d4 = fs_buf.f_type;\n                }\n                else {\n                  if (entry != puVar23) {\n                    /* WARNING: Subroutine does not return */\n                    abort();\n                  }\n                  local_d4 = fs_buf.f_type;\n                }" if (parenthesized_expression "(puVar23 == (undefined4 *)0x0)" ( (binary_expression "puVar23 == (undefined4 *)0x0" identifier == (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                  free(entry);\n                  local_d4 = fs_buf.f_type;\n                }" { (expression_statement "free(entry);" (call_expression "free(entry)" identifier (argument_list "(entry)" ( identifier ))) ;) (expression_statement "local_d4 = fs_buf.f_type;" (assignment_expression "local_d4 = fs_buf.f_type" identifier = (field_expression "fs_buf.f_type" identifier . field_identifier)) ;) }) (else_clause "else {\n                  if (entry != puVar23) {\n                    /* WARNING: Subroutine does not return */\n                    abort();\n                  }\n                  local_d4 = fs_buf.f_type;\n                }" else (compound_statement "{\n                  if (entry != puVar23) {\n                    /* WARNING: Subroutine does not return */\n                    abort();\n                  }\n                  local_d4 = fs_buf.f_type;\n                }" { (if_statement "if (entry != puVar23) {\n                    /* WARNING: Subroutine does not return */\n                    abort();\n                  }" if (parenthesized_expression "(entry != puVar23)" ( (binary_expression "entry != puVar23" identifier != identifier) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n                    abort();\n                  }" { comment (expression_statement "abort();" (call_expression "abort()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "local_d4 = fs_buf.f_type;" (assignment_expression "local_d4 = fs_buf.f_type" identifier = (field_expression "fs_buf.f_type" identifier . field_identifier)) ;) }))) })) }) (else_clause "else {\nLAB_00025920:\n              tmp.st_dev._4_4_ = *(undefined4 *)((int)&pFVar30->fts_statp[0].st_dev + 4);\n              tmp.st_dev._0_4_ = (undefined4)pFVar30->fts_statp[0].st_dev;\n              pvVar21 = hash_lookup(table,&tmp);\n              if (pvVar21 == (void *)0x0) goto LAB_000259b0;\n              local_d4 = *(int *)((int)pvVar21 + 8);\n            }" else (compound_statement "{\nLAB_00025920:\n              tmp.st_dev._4_4_ = *(undefined4 *)((int)&pFVar30->fts_statp[0].st_dev + 4);\n              tmp.st_dev._0_4_ = (undefined4)pFVar30->fts_statp[0].st_dev;\n              pvVar21 = hash_lookup(table,&tmp);\n              if (pvVar21 == (void *)0x0) goto LAB_000259b0;\n              local_d4 = *(int *)((int)pvVar21 + 8);\n            }" { (labeled_statement "LAB_00025920:\n              tmp.st_dev._4_4_ = *(undefined4 *)((int)&pFVar30->fts_statp[0].st_dev + 4);" statement_identifier : (expression_statement "tmp.st_dev._4_4_ = *(undefined4 *)((int)&pFVar30->fts_statp[0].st_dev + 4);" (assignment_expression "tmp.st_dev._4_4_ = *(undefined4 *)((int)&pFVar30->fts_statp[0].st_dev + 4)" (field_expression "tmp.st_dev._4_4_" (field_expression "tmp.st_dev" identifier . field_identifier) . field_identifier) = (pointer_expression "*(undefined4 *)((int)&pFVar30->fts_statp[0].st_dev + 4)" * (cast_expression "(undefined4 *)((int)&pFVar30->fts_statp[0].st_dev + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&pFVar30->fts_statp[0].st_dev + 4)" ( (binary_expression "(int)&pFVar30->fts_statp[0].st_dev + 4" (cast_expression "(int)&pFVar30->fts_statp[0].st_dev" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&pFVar30->fts_statp[0].st_dev" & (field_expression "pFVar30->fts_statp[0].st_dev" (subscript_expression "pFVar30->fts_statp[0]" (field_expression "pFVar30->fts_statp" identifier -> field_identifier) [ number_literal ]) . field_identifier))) + number_literal) ))))) ;)) (expression_statement "tmp.st_dev._0_4_ = (undefined4)pFVar30->fts_statp[0].st_dev;" (assignment_expression "tmp.st_dev._0_4_ = (undefined4)pFVar30->fts_statp[0].st_dev" (field_expression "tmp.st_dev._0_4_" (field_expression "tmp.st_dev" identifier . field_identifier) . field_identifier) = (cast_expression "(undefined4)pFVar30->fts_statp[0].st_dev" ( (type_descriptor "undefined4" type_identifier) ) (field_expression "pFVar30->fts_statp[0].st_dev" (subscript_expression "pFVar30->fts_statp[0]" (field_expression "pFVar30->fts_statp" identifier -> field_identifier) [ number_literal ]) . field_identifier))) ;) (expression_statement "pvVar21 = hash_lookup(table,&tmp);" (assignment_expression "pvVar21 = hash_lookup(table,&tmp)" identifier = (call_expression "hash_lookup(table,&tmp)" identifier (argument_list "(table,&tmp)" ( identifier , (pointer_expression "&tmp" & identifier) )))) ;) (if_statement "if (pvVar21 == (void *)0x0) goto LAB_000259b0;" if (parenthesized_expression "(pvVar21 == (void *)0x0)" ( (binary_expression "pvVar21 == (void *)0x0" identifier == (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_000259b0;" goto statement_identifier ;)) (expression_statement "local_d4 = *(int *)((int)pvVar21 + 8);" (assignment_expression "local_d4 = *(int *)((int)pvVar21 + 8)" identifier = (pointer_expression "*(int *)((int)pvVar21 + 8)" * (cast_expression "(int *)((int)pvVar21 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pvVar21 + 8)" ( (binary_expression "(int)pvVar21 + 8" (cast_expression "(int)pvVar21" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) }))) (if_statement "if (((local_d4 == 0x6969) || (local_d4 == 0x1021994)) || (local_d4 == -0xacb2be)) {\n              bVar7 = false;\n              goto LAB_00025473;\n            }" if (parenthesized_expression "(((local_d4 == 0x6969) || (local_d4 == 0x1021994)) || (local_d4 == -0xacb2be))" ( (binary_expression "((local_d4 == 0x6969) || (local_d4 == 0x1021994)) || (local_d4 == -0xacb2be)" (parenthesized_expression "((local_d4 == 0x6969) || (local_d4 == 0x1021994))" ( (binary_expression "(local_d4 == 0x6969) || (local_d4 == 0x1021994)" (parenthesized_expression "(local_d4 == 0x6969)" ( (binary_expression "local_d4 == 0x6969" identifier == number_literal) )) || (parenthesized_expression "(local_d4 == 0x1021994)" ( (binary_expression "local_d4 == 0x1021994" identifier == number_literal) ))) )) || (parenthesized_expression "(local_d4 == -0xacb2be)" ( (binary_expression "local_d4 == -0xacb2be" identifier == number_literal) ))) )) (compound_statement "{\n              bVar7 = false;\n              goto LAB_00025473;\n            }" { (expression_statement "bVar7 = false;" (assignment_expression "bVar7 = false" identifier = false) ;) (goto_statement "goto LAB_00025473;" goto statement_identifier ;) })) })) (labeled_statement "LAB_00025a48:\n          bVar7 = true;" statement_identifier : (expression_statement "bVar7 = true;" (assignment_expression "bVar7 = true" identifier = true) ;)) })) (labeled_statement "LAB_00025473:\n        local_d4 = 0x2711;" statement_identifier : (expression_statement "local_d4 = 0x2711;" (assignment_expression "local_d4 = 0x2711" identifier = number_literal) ;)) (goto_statement "goto LAB_000252fb;" goto statement_identifier ;) })) (expression_statement "local_d4 = local_d4 + 1;" (assignment_expression "local_d4 = local_d4 + 1" identifier = (binary_expression "local_d4 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(local_d4 < local_a8)" ( (binary_expression "local_d4 < local_a8" identifier < identifier) )) ;)) (labeled_statement "LAB_000256de:\n    if (bVar6) {\n      pcVar3 = sp->fts_path;\n      for (p_Var25 = sp->fts_child; p_Var25 != (_ftsent *)0x0; p_Var25 = p_Var25->fts_link) {\n        while ((_ftsent *)p_Var25->fts_accpath != p_Var25 + 1) {\n          pcVar18 = p_Var25->fts_path;\n          p_Var25->fts_path = pcVar3;\n          p_Var25->fts_accpath = pcVar3 + ((int)p_Var25->fts_accpath - (int)pcVar18);\n          p_Var25 = p_Var25->fts_link;\n          if (p_Var25 == (_ftsent *)0x0) goto LAB_00025aef;\n        }\n        p_Var25->fts_path = pcVar3;\n      }\nLAB_00025aef:\n      iVar19 = local_b8->fts_level;\n      p_Var25 = local_b8;\n      while (-1 < iVar19) {\n        while( true ) {\n          if ((FTSENT *)p_Var25->fts_accpath != p_Var25 + 1) {\n            p_Var25->fts_accpath = pcVar3 + ((int)p_Var25->fts_accpath - (int)p_Var25->fts_path);\n          }\n          p_Var5 = p_Var25->fts_link;\n          p_Var25->fts_path = pcVar3;\n          if (p_Var5 == (_ftsent *)0x0) break;\n          p_Var25 = p_Var5;\n          if (p_Var5->fts_level < 0) goto LAB_000256e9;\n        }\n        p_Var25 = p_Var25->fts_parent;\n        iVar19 = p_Var25->fts_level;\n      }\n    }" statement_identifier : (if_statement "if (bVar6) {\n      pcVar3 = sp->fts_path;\n      for (p_Var25 = sp->fts_child; p_Var25 != (_ftsent *)0x0; p_Var25 = p_Var25->fts_link) {\n        while ((_ftsent *)p_Var25->fts_accpath != p_Var25 + 1) {\n          pcVar18 = p_Var25->fts_path;\n          p_Var25->fts_path = pcVar3;\n          p_Var25->fts_accpath = pcVar3 + ((int)p_Var25->fts_accpath - (int)pcVar18);\n          p_Var25 = p_Var25->fts_link;\n          if (p_Var25 == (_ftsent *)0x0) goto LAB_00025aef;\n        }\n        p_Var25->fts_path = pcVar3;\n      }\nLAB_00025aef:\n      iVar19 = local_b8->fts_level;\n      p_Var25 = local_b8;\n      while (-1 < iVar19) {\n        while( true ) {\n          if ((FTSENT *)p_Var25->fts_accpath != p_Var25 + 1) {\n            p_Var25->fts_accpath = pcVar3 + ((int)p_Var25->fts_accpath - (int)p_Var25->fts_path);\n          }\n          p_Var5 = p_Var25->fts_link;\n          p_Var25->fts_path = pcVar3;\n          if (p_Var5 == (_ftsent *)0x0) break;\n          p_Var25 = p_Var5;\n          if (p_Var5->fts_level < 0) goto LAB_000256e9;\n        }\n        p_Var25 = p_Var25->fts_parent;\n        iVar19 = p_Var25->fts_level;\n      }\n    }" if (parenthesized_expression "(bVar6)" ( identifier )) (compound_statement "{\n      pcVar3 = sp->fts_path;\n      for (p_Var25 = sp->fts_child; p_Var25 != (_ftsent *)0x0; p_Var25 = p_Var25->fts_link) {\n        while ((_ftsent *)p_Var25->fts_accpath != p_Var25 + 1) {\n          pcVar18 = p_Var25->fts_path;\n          p_Var25->fts_path = pcVar3;\n          p_Var25->fts_accpath = pcVar3 + ((int)p_Var25->fts_accpath - (int)pcVar18);\n          p_Var25 = p_Var25->fts_link;\n          if (p_Var25 == (_ftsent *)0x0) goto LAB_00025aef;\n        }\n        p_Var25->fts_path = pcVar3;\n      }\nLAB_00025aef:\n      iVar19 = local_b8->fts_level;\n      p_Var25 = local_b8;\n      while (-1 < iVar19) {\n        while( true ) {\n          if ((FTSENT *)p_Var25->fts_accpath != p_Var25 + 1) {\n            p_Var25->fts_accpath = pcVar3 + ((int)p_Var25->fts_accpath - (int)p_Var25->fts_path);\n          }\n          p_Var5 = p_Var25->fts_link;\n          p_Var25->fts_path = pcVar3;\n          if (p_Var5 == (_ftsent *)0x0) break;\n          p_Var25 = p_Var5;\n          if (p_Var5->fts_level < 0) goto LAB_000256e9;\n        }\n        p_Var25 = p_Var25->fts_parent;\n        iVar19 = p_Var25->fts_level;\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_Var25 = sp->fts_child; p_Var25 != (_ftsent *)0x0; p_Var25 = p_Var25->fts_link) {\n        while ((_ftsent *)p_Var25->fts_accpath != p_Var25 + 1) {\n          pcVar18 = p_Var25->fts_path;\n          p_Var25->fts_path = pcVar3;\n          p_Var25->fts_accpath = pcVar3 + ((int)p_Var25->fts_accpath - (int)pcVar18);\n          p_Var25 = p_Var25->fts_link;\n          if (p_Var25 == (_ftsent *)0x0) goto LAB_00025aef;\n        }\n        p_Var25->fts_path = pcVar3;\n      }" for ( (assignment_expression "p_Var25 = sp->fts_child" identifier = (field_expression "sp->fts_child" identifier -> field_identifier)) ; (binary_expression "p_Var25 != (_ftsent *)0x0" identifier != (cast_expression "(_ftsent *)0x0" ( (type_descriptor "_ftsent *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ; (assignment_expression "p_Var25 = p_Var25->fts_link" identifier = (field_expression "p_Var25->fts_link" identifier -> field_identifier)) ) (compound_statement "{\n        while ((_ftsent *)p_Var25->fts_accpath != p_Var25 + 1) {\n          pcVar18 = p_Var25->fts_path;\n          p_Var25->fts_path = pcVar3;\n          p_Var25->fts_accpath = pcVar3 + ((int)p_Var25->fts_accpath - (int)pcVar18);\n          p_Var25 = p_Var25->fts_link;\n          if (p_Var25 == (_ftsent *)0x0) goto LAB_00025aef;\n        }\n        p_Var25->fts_path = pcVar3;\n      }" { (while_statement "while ((_ftsent *)p_Var25->fts_accpath != p_Var25 + 1) {\n          pcVar18 = p_Var25->fts_path;\n          p_Var25->fts_path = pcVar3;\n          p_Var25->fts_accpath = pcVar3 + ((int)p_Var25->fts_accpath - (int)pcVar18);\n          p_Var25 = p_Var25->fts_link;\n          if (p_Var25 == (_ftsent *)0x0) goto LAB_00025aef;\n        }" while (parenthesized_expression "((_ftsent *)p_Var25->fts_accpath != p_Var25 + 1)" ( (binary_expression "(_ftsent *)p_Var25->fts_accpath != p_Var25 + 1" (cast_expression "(_ftsent *)p_Var25->fts_accpath" ( (type_descriptor "_ftsent *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "p_Var25->fts_accpath" identifier -> field_identifier)) != (binary_expression "p_Var25 + 1" identifier + number_literal)) )) (compound_statement "{\n          pcVar18 = p_Var25->fts_path;\n          p_Var25->fts_path = pcVar3;\n          p_Var25->fts_accpath = pcVar3 + ((int)p_Var25->fts_accpath - (int)pcVar18);\n          p_Var25 = p_Var25->fts_link;\n          if (p_Var25 == (_ftsent *)0x0) goto LAB_00025aef;\n        }" { (expression_statement "pcVar18 = p_Var25->fts_path;" (assignment_expression "pcVar18 = p_Var25->fts_path" identifier = (field_expression "p_Var25->fts_path" identifier -> field_identifier)) ;) (expression_statement "p_Var25->fts_path = pcVar3;" (assignment_expression "p_Var25->fts_path = pcVar3" (field_expression "p_Var25->fts_path" identifier -> field_identifier) = identifier) ;) (expression_statement "p_Var25->fts_accpath = pcVar3 + ((int)p_Var25->fts_accpath - (int)pcVar18);" (assignment_expression "p_Var25->fts_accpath = pcVar3 + ((int)p_Var25->fts_accpath - (int)pcVar18)" (field_expression "p_Var25->fts_accpath" identifier -> field_identifier) = (binary_expression "pcVar3 + ((int)p_Var25->fts_accpath - (int)pcVar18)" identifier + (parenthesized_expression "((int)p_Var25->fts_accpath - (int)pcVar18)" ( (binary_expression "(int)p_Var25->fts_accpath - (int)pcVar18" (cast_expression "(int)p_Var25->fts_accpath" ( (type_descriptor "int" primitive_type) ) (field_expression "p_Var25->fts_accpath" identifier -> field_identifier)) - (cast_expression "(int)pcVar18" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (expression_statement "p_Var25 = p_Var25->fts_link;" (assignment_expression "p_Var25 = p_Var25->fts_link" identifier = (field_expression "p_Var25->fts_link" identifier -> field_identifier)) ;) (if_statement "if (p_Var25 == (_ftsent *)0x0) goto LAB_00025aef;" if (parenthesized_expression "(p_Var25 == (_ftsent *)0x0)" ( (binary_expression "p_Var25 == (_ftsent *)0x0" identifier == (cast_expression "(_ftsent *)0x0" ( (type_descriptor "_ftsent *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00025aef;" goto statement_identifier ;)) })) (expression_statement "p_Var25->fts_path = pcVar3;" (assignment_expression "p_Var25->fts_path = pcVar3" (field_expression "p_Var25->fts_path" identifier -> field_identifier) = identifier) ;) })) (labeled_statement "LAB_00025aef:\n      iVar19 = local_b8->fts_level;" statement_identifier : (expression_statement "iVar19 = local_b8->fts_level;" (assignment_expression "iVar19 = local_b8->fts_level" identifier = (field_expression "local_b8->fts_level" identifier -> field_identifier)) ;)) (expression_statement "p_Var25 = local_b8;" (assignment_expression "p_Var25 = local_b8" identifier = identifier) ;) (while_statement "while (-1 < iVar19) {\n        while( true ) {\n          if ((FTSENT *)p_Var25->fts_accpath != p_Var25 + 1) {\n            p_Var25->fts_accpath = pcVar3 + ((int)p_Var25->fts_accpath - (int)p_Var25->fts_path);\n          }\n          p_Var5 = p_Var25->fts_link;\n          p_Var25->fts_path = pcVar3;\n          if (p_Var5 == (_ftsent *)0x0) break;\n          p_Var25 = p_Var5;\n          if (p_Var5->fts_level < 0) goto LAB_000256e9;\n        }\n        p_Var25 = p_Var25->fts_parent;\n        iVar19 = p_Var25->fts_level;\n      }" while (parenthesized_expression "(-1 < iVar19)" ( (binary_expression "-1 < iVar19" number_literal < identifier) )) (compound_statement "{\n        while( true ) {\n          if ((FTSENT *)p_Var25->fts_accpath != p_Var25 + 1) {\n            p_Var25->fts_accpath = pcVar3 + ((int)p_Var25->fts_accpath - (int)p_Var25->fts_path);\n          }\n          p_Var5 = p_Var25->fts_link;\n          p_Var25->fts_path = pcVar3;\n          if (p_Var5 == (_ftsent *)0x0) break;\n          p_Var25 = p_Var5;\n          if (p_Var5->fts_level < 0) goto LAB_000256e9;\n        }\n        p_Var25 = p_Var25->fts_parent;\n        iVar19 = p_Var25->fts_level;\n      }" { (while_statement "while( true ) {\n          if ((FTSENT *)p_Var25->fts_accpath != p_Var25 + 1) {\n            p_Var25->fts_accpath = pcVar3 + ((int)p_Var25->fts_accpath - (int)p_Var25->fts_path);\n          }\n          p_Var5 = p_Var25->fts_link;\n          p_Var25->fts_path = pcVar3;\n          if (p_Var5 == (_ftsent *)0x0) break;\n          p_Var25 = p_Var5;\n          if (p_Var5->fts_level < 0) goto LAB_000256e9;\n        }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n          if ((FTSENT *)p_Var25->fts_accpath != p_Var25 + 1) {\n            p_Var25->fts_accpath = pcVar3 + ((int)p_Var25->fts_accpath - (int)p_Var25->fts_path);\n          }\n          p_Var5 = p_Var25->fts_link;\n          p_Var25->fts_path = pcVar3;\n          if (p_Var5 == (_ftsent *)0x0) break;\n          p_Var25 = p_Var5;\n          if (p_Var5->fts_level < 0) goto LAB_000256e9;\n        }" { (if_statement "if ((FTSENT *)p_Var25->fts_accpath != p_Var25 + 1) {\n            p_Var25->fts_accpath = pcVar3 + ((int)p_Var25->fts_accpath - (int)p_Var25->fts_path);\n          }" if (parenthesized_expression "((FTSENT *)p_Var25->fts_accpath != p_Var25 + 1)" ( (binary_expression "(FTSENT *)p_Var25->fts_accpath != p_Var25 + 1" (cast_expression "(FTSENT *)p_Var25->fts_accpath" ( (type_descriptor "FTSENT *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "p_Var25->fts_accpath" identifier -> field_identifier)) != (binary_expression "p_Var25 + 1" identifier + number_literal)) )) (compound_statement "{\n            p_Var25->fts_accpath = pcVar3 + ((int)p_Var25->fts_accpath - (int)p_Var25->fts_path);\n          }" { (expression_statement "p_Var25->fts_accpath = pcVar3 + ((int)p_Var25->fts_accpath - (int)p_Var25->fts_path);" (assignment_expression "p_Var25->fts_accpath = pcVar3 + ((int)p_Var25->fts_accpath - (int)p_Var25->fts_path)" (field_expression "p_Var25->fts_accpath" identifier -> field_identifier) = (binary_expression "pcVar3 + ((int)p_Var25->fts_accpath - (int)p_Var25->fts_path)" identifier + (parenthesized_expression "((int)p_Var25->fts_accpath - (int)p_Var25->fts_path)" ( (binary_expression "(int)p_Var25->fts_accpath - (int)p_Var25->fts_path" (cast_expression "(int)p_Var25->fts_accpath" ( (type_descriptor "int" primitive_type) ) (field_expression "p_Var25->fts_accpath" identifier -> field_identifier)) - (cast_expression "(int)p_Var25->fts_path" ( (type_descriptor "int" primitive_type) ) (field_expression "p_Var25->fts_path" identifier -> field_identifier))) )))) ;) })) (expression_statement "p_Var5 = p_Var25->fts_link;" (assignment_expression "p_Var5 = p_Var25->fts_link" identifier = (field_expression "p_Var25->fts_link" identifier -> field_identifier)) ;) (expression_statement "p_Var25->fts_path = pcVar3;" (assignment_expression "p_Var25->fts_path = pcVar3" (field_expression "p_Var25->fts_path" identifier -> field_identifier) = identifier) ;) (if_statement "if (p_Var5 == (_ftsent *)0x0) break;" if (parenthesized_expression "(p_Var5 == (_ftsent *)0x0)" ( (binary_expression "p_Var5 == (_ftsent *)0x0" identifier == (cast_expression "(_ftsent *)0x0" ( (type_descriptor "_ftsent *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (break_statement "break;" break ;)) (expression_statement "p_Var25 = p_Var5;" (assignment_expression "p_Var25 = p_Var5" identifier = identifier) ;) (if_statement "if (p_Var5->fts_level < 0) goto LAB_000256e9;" if (parenthesized_expression "(p_Var5->fts_level < 0)" ( (binary_expression "p_Var5->fts_level < 0" (field_expression "p_Var5->fts_level" identifier -> field_identifier) < number_literal) )) (goto_statement "goto LAB_000256e9;" goto statement_identifier ;)) })) (expression_statement "p_Var25 = p_Var25->fts_parent;" (assignment_expression "p_Var25 = p_Var25->fts_parent" identifier = (field_expression "p_Var25->fts_parent" identifier -> field_identifier)) ;) (expression_statement "iVar19 = p_Var25->fts_level;" (assignment_expression "iVar19 = p_Var25->fts_level" identifier = (field_expression "p_Var25->fts_level" identifier -> field_identifier)) ;) })) }))) (labeled_statement "LAB_000256e9:\n    if ((sp->fts_options & 4) != 0) {\n      if ((sp->fts_pathlen == local_d0) || (local_d4 == 0)) {\n        local_a4 = local_a4 + -1;\n      }\n      *local_a4 = '\0';\n    }" statement_identifier : (if_statement "if ((sp->fts_options & 4) != 0) {\n      if ((sp->fts_pathlen == local_d0) || (local_d4 == 0)) {\n        local_a4 = local_a4 + -1;\n      }\n      *local_a4 = '\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_d0) || (local_d4 == 0)) {\n        local_a4 = local_a4 + -1;\n      }\n      *local_a4 = '\0';\n    }" { (if_statement "if ((sp->fts_pathlen == local_d0) || (local_d4 == 0)) {\n        local_a4 = local_a4 + -1;\n      }" if (parenthesized_expression "((sp->fts_pathlen == local_d0) || (local_d4 == 0))" ( (binary_expression "(sp->fts_pathlen == local_d0) || (local_d4 == 0)" (parenthesized_expression "(sp->fts_pathlen == local_d0)" ( (binary_expression "sp->fts_pathlen == local_d0" (field_expression "sp->fts_pathlen" identifier -> field_identifier) == identifier) )) || (parenthesized_expression "(local_d4 == 0)" ( (binary_expression "local_d4 == 0" identifier == number_literal) ))) )) (compound_statement "{\n        local_a4 = local_a4 + -1;\n      }" { (expression_statement "local_a4 = local_a4 + -1;" (assignment_expression "local_a4 = local_a4 + -1" identifier = (binary_expression "local_a4 + -1" identifier + number_literal)) ;) })) (expression_statement "*local_a4 = '\0';" (assignment_expression "*local_a4 = '\0'" (pointer_expression "*local_a4" * identifier) = (char_literal "'\0'" ' escape_sequence ')) ;) }))) (if_statement "if ((pDVar26 == (DIR *)0x0) && (bVar31)) {\n      if ((type == 1) || (local_d4 == 0)) {\n        if (pFVar30->fts_level == 0) {\n          iVar19 = restore_initial_cwd(sp);\n        }\n        else {\n          iVar19 = fts_safe_changedir(sp,pFVar30->fts_parent,-1,"..");\n        }\n        if (iVar19 != 0) {\n          pFVar30->fts_info = 7;\n          sp->fts_options = sp->fts_options | 0x4000;\n          while (pFVar30 = local_b8, local_b8 != (FTSENT *)0x0) {\n            while( true ) {\n              local_b8 = pFVar30->fts_link;\n              if ((DIR *)pFVar30->fts_dirp == (DIR *)0x0) break;\n              closedir((DIR *)pFVar30->fts_dirp);\n              free(pFVar30);\n              pFVar30 = local_b8;\n              if (local_b8 == (_ftsent *)0x0) goto LAB_00025c40;\n            }\n            free(pFVar30);\n          }\n          goto LAB_00025c40;\n        }\n        goto LAB_0002574d;\n      }\n    }\n    else {\nLAB_0002574d:\n      if (local_d4 == 0) {\n        if (((type == 3) && (pFVar30->fts_info != 4)) && (pFVar30->fts_info != 7)) {\n          pFVar30->fts_info = 6;\n        }\n        if (local_b8 != (FTSENT *)0x0) {\n          pDVar26 = (DIR *)local_b8->fts_dirp;\n          p_Var25 = local_b8->fts_link;\n          if (pDVar26 == (DIR *)0x0) goto LAB_00025c94;\n          do {\n            closedir(pDVar26);\n            free(local_b8);\n            local_b8 = p_Var25;\n            while( true ) {\n              if (local_b8 == (FTSENT *)0x0) goto LAB_00025c40;\n              pDVar26 = (DIR *)local_b8->fts_dirp;\n              p_Var25 = local_b8->fts_link;\n              if (pDVar26 != (DIR *)0x0) break;\nLAB_00025c94:\n              free(local_b8);\n              local_b8 = p_Var25;\n            }\n          } while( true );\n        }\n        goto LAB_00025c40;\n      }\n    }" if (parenthesized_expression "((pDVar26 == (DIR *)0x0) && (bVar31))" ( (binary_expression "(pDVar26 == (DIR *)0x0) && (bVar31)" (parenthesized_expression "(pDVar26 == (DIR *)0x0)" ( (binary_expression "pDVar26 == (DIR *)0x0" identifier == (cast_expression "(DIR *)0x0" ( (type_descriptor "DIR *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(bVar31)" ( identifier ))) )) (compound_statement "{\n      if ((type == 1) || (local_d4 == 0)) {\n        if (pFVar30->fts_level == 0) {\n          iVar19 = restore_initial_cwd(sp);\n        }\n        else {\n          iVar19 = fts_safe_changedir(sp,pFVar30->fts_parent,-1,"..");\n        }\n        if (iVar19 != 0) {\n          pFVar30->fts_info = 7;\n          sp->fts_options = sp->fts_options | 0x4000;\n          while (pFVar30 = local_b8, local_b8 != (FTSENT *)0x0) {\n            while( true ) {\n              local_b8 = pFVar30->fts_link;\n              if ((DIR *)pFVar30->fts_dirp == (DIR *)0x0) break;\n              closedir((DIR *)pFVar30->fts_dirp);\n              free(pFVar30);\n              pFVar30 = local_b8;\n              if (local_b8 == (_ftsent *)0x0) goto LAB_00025c40;\n            }\n            free(pFVar30);\n          }\n          goto LAB_00025c40;\n        }\n        goto LAB_0002574d;\n      }\n    }" { (if_statement "if ((type == 1) || (local_d4 == 0)) {\n        if (pFVar30->fts_level == 0) {\n          iVar19 = restore_initial_cwd(sp);\n        }\n        else {\n          iVar19 = fts_safe_changedir(sp,pFVar30->fts_parent,-1,"..");\n        }\n        if (iVar19 != 0) {\n          pFVar30->fts_info = 7;\n          sp->fts_options = sp->fts_options | 0x4000;\n          while (pFVar30 = local_b8, local_b8 != (FTSENT *)0x0) {\n            while( true ) {\n              local_b8 = pFVar30->fts_link;\n              if ((DIR *)pFVar30->fts_dirp == (DIR *)0x0) break;\n              closedir((DIR *)pFVar30->fts_dirp);\n              free(pFVar30);\n              pFVar30 = local_b8;\n              if (local_b8 == (_ftsent *)0x0) goto LAB_00025c40;\n            }\n            free(pFVar30);\n          }\n          goto LAB_00025c40;\n        }\n        goto LAB_0002574d;\n      }" if (parenthesized_expression "((type == 1) || (local_d4 == 0))" ( (binary_expression "(type == 1) || (local_d4 == 0)" (parenthesized_expression "(type == 1)" ( (binary_expression "type == 1" identifier == number_literal) )) || (parenthesized_expression "(local_d4 == 0)" ( (binary_expression "local_d4 == 0" identifier == number_literal) ))) )) (compound_statement "{\n        if (pFVar30->fts_level == 0) {\n          iVar19 = restore_initial_cwd(sp);\n        }\n        else {\n          iVar19 = fts_safe_changedir(sp,pFVar30->fts_parent,-1,"..");\n        }\n        if (iVar19 != 0) {\n          pFVar30->fts_info = 7;\n          sp->fts_options = sp->fts_options | 0x4000;\n          while (pFVar30 = local_b8, local_b8 != (FTSENT *)0x0) {\n            while( true ) {\n              local_b8 = pFVar30->fts_link;\n              if ((DIR *)pFVar30->fts_dirp == (DIR *)0x0) break;\n              closedir((DIR *)pFVar30->fts_dirp);\n              free(pFVar30);\n              pFVar30 = local_b8;\n              if (local_b8 == (_ftsent *)0x0) goto LAB_00025c40;\n            }\n            free(pFVar30);\n          }\n          goto LAB_00025c40;\n        }\n        goto LAB_0002574d;\n      }" { (if_statement "if (pFVar30->fts_level == 0) {\n          iVar19 = restore_initial_cwd(sp);\n        }\n        else {\n          iVar19 = fts_safe_changedir(sp,pFVar30->fts_parent,-1,"..");\n        }" if (parenthesized_expression "(pFVar30->fts_level == 0)" ( (binary_expression "pFVar30->fts_level == 0" (field_expression "pFVar30->fts_level" identifier -> field_identifier) == number_literal) )) (compound_statement "{\n          iVar19 = restore_initial_cwd(sp);\n        }" { (expression_statement "iVar19 = restore_initial_cwd(sp);" (assignment_expression "iVar19 = restore_initial_cwd(sp)" identifier = (call_expression "restore_initial_cwd(sp)" identifier (argument_list "(sp)" ( identifier )))) ;) }) (else_clause "else {\n          iVar19 = fts_safe_changedir(sp,pFVar30->fts_parent,-1,"..");\n        }" else (compound_statement "{\n          iVar19 = fts_safe_changedir(sp,pFVar30->fts_parent,-1,"..");\n        }" { (expression_statement "iVar19 = fts_safe_changedir(sp,pFVar30->fts_parent,-1,"..");" (assignment_expression "iVar19 = fts_safe_changedir(sp,pFVar30->fts_parent,-1,"..")" identifier = (call_expression "fts_safe_changedir(sp,pFVar30->fts_parent,-1,"..")" identifier (argument_list "(sp,pFVar30->fts_parent,-1,"..")" ( identifier , (field_expression "pFVar30->fts_parent" identifier -> field_identifier) , number_literal , (string_literal "".."" " string_content ") )))) ;) }))) (if_statement "if (iVar19 != 0) {\n          pFVar30->fts_info = 7;\n          sp->fts_options = sp->fts_options | 0x4000;\n          while (pFVar30 = local_b8, local_b8 != (FTSENT *)0x0) {\n            while( true ) {\n              local_b8 = pFVar30->fts_link;\n              if ((DIR *)pFVar30->fts_dirp == (DIR *)0x0) break;\n              closedir((DIR *)pFVar30->fts_dirp);\n              free(pFVar30);\n              pFVar30 = local_b8;\n              if (local_b8 == (_ftsent *)0x0) goto LAB_00025c40;\n            }\n            free(pFVar30);\n          }\n          goto LAB_00025c40;\n        }" if (parenthesized_expression "(iVar19 != 0)" ( (binary_expression "iVar19 != 0" identifier != number_literal) )) (compound_statement "{\n          pFVar30->fts_info = 7;\n          sp->fts_options = sp->fts_options | 0x4000;\n          while (pFVar30 = local_b8, local_b8 != (FTSENT *)0x0) {\n            while( true ) {\n              local_b8 = pFVar30->fts_link;\n              if ((DIR *)pFVar30->fts_dirp == (DIR *)0x0) break;\n              closedir((DIR *)pFVar30->fts_dirp);\n              free(pFVar30);\n              pFVar30 = local_b8;\n              if (local_b8 == (_ftsent *)0x0) goto LAB_00025c40;\n            }\n            free(pFVar30);\n          }\n          goto LAB_00025c40;\n        }" { (expression_statement "pFVar30->fts_info = 7;" (assignment_expression "pFVar30->fts_info = 7" (field_expression "pFVar30->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)) ;) (while_statement "while (pFVar30 = local_b8, local_b8 != (FTSENT *)0x0) {\n            while( true ) {\n              local_b8 = pFVar30->fts_link;\n              if ((DIR *)pFVar30->fts_dirp == (DIR *)0x0) break;\n              closedir((DIR *)pFVar30->fts_dirp);\n              free(pFVar30);\n              pFVar30 = local_b8;\n              if (local_b8 == (_ftsent *)0x0) goto LAB_00025c40;\n            }\n            free(pFVar30);\n          }" while (parenthesized_expression "(pFVar30 = local_b8, local_b8 != (FTSENT *)0x0)" ( (comma_expression "pFVar30 = local_b8, local_b8 != (FTSENT *)0x0" (assignment_expression "pFVar30 = local_b8" identifier = identifier) , (binary_expression "local_b8 != (FTSENT *)0x0" identifier != (cast_expression "(FTSENT *)0x0" ( (type_descriptor "FTSENT *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) )) (compound_statement "{\n            while( true ) {\n              local_b8 = pFVar30->fts_link;\n              if ((DIR *)pFVar30->fts_dirp == (DIR *)0x0) break;\n              closedir((DIR *)pFVar30->fts_dirp);\n              free(pFVar30);\n              pFVar30 = local_b8;\n              if (local_b8 == (_ftsent *)0x0) goto LAB_00025c40;\n            }\n            free(pFVar30);\n          }" { (while_statement "while( true ) {\n              local_b8 = pFVar30->fts_link;\n              if ((DIR *)pFVar30->fts_dirp == (DIR *)0x0) break;\n              closedir((DIR *)pFVar30->fts_dirp);\n              free(pFVar30);\n              pFVar30 = local_b8;\n              if (local_b8 == (_ftsent *)0x0) goto LAB_00025c40;\n            }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n              local_b8 = pFVar30->fts_link;\n              if ((DIR *)pFVar30->fts_dirp == (DIR *)0x0) break;\n              closedir((DIR *)pFVar30->fts_dirp);\n              free(pFVar30);\n              pFVar30 = local_b8;\n              if (local_b8 == (_ftsent *)0x0) goto LAB_00025c40;\n            }" { (expression_statement "local_b8 = pFVar30->fts_link;" (assignment_expression "local_b8 = pFVar30->fts_link" identifier = (field_expression "pFVar30->fts_link" identifier -> field_identifier)) ;) (if_statement "if ((DIR *)pFVar30->fts_dirp == (DIR *)0x0) break;" if (parenthesized_expression "((DIR *)pFVar30->fts_dirp == (DIR *)0x0)" ( (binary_expression "(DIR *)pFVar30->fts_dirp == (DIR *)0x0" (cast_expression "(DIR *)pFVar30->fts_dirp" ( (type_descriptor "DIR *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "pFVar30->fts_dirp" identifier -> field_identifier)) == (cast_expression "(DIR *)0x0" ( (type_descriptor "DIR *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (break_statement "break;" break ;)) (expression_statement "closedir((DIR *)pFVar30->fts_dirp);" (call_expression "closedir((DIR *)pFVar30->fts_dirp)" identifier (argument_list "((DIR *)pFVar30->fts_dirp)" ( (cast_expression "(DIR *)pFVar30->fts_dirp" ( (type_descriptor "DIR *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "pFVar30->fts_dirp" identifier -> field_identifier)) ))) ;) (expression_statement "free(pFVar30);" (call_expression "free(pFVar30)" identifier (argument_list "(pFVar30)" ( identifier ))) ;) (expression_statement "pFVar30 = local_b8;" (assignment_expression "pFVar30 = local_b8" identifier = identifier) ;) (if_statement "if (local_b8 == (_ftsent *)0x0) goto LAB_00025c40;" if (parenthesized_expression "(local_b8 == (_ftsent *)0x0)" ( (binary_expression "local_b8 == (_ftsent *)0x0" identifier == (cast_expression "(_ftsent *)0x0" ( (type_descriptor "_ftsent *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00025c40;" goto statement_identifier ;)) })) (expression_statement "free(pFVar30);" (call_expression "free(pFVar30)" identifier (argument_list "(pFVar30)" ( identifier ))) ;) })) (goto_statement "goto LAB_00025c40;" goto statement_identifier ;) })) (goto_statement "goto LAB_0002574d;" goto statement_identifier ;) })) }) (else_clause "else {\nLAB_0002574d:\n      if (local_d4 == 0) {\n        if (((type == 3) && (pFVar30->fts_info != 4)) && (pFVar30->fts_info != 7)) {\n          pFVar30->fts_info = 6;\n        }\n        if (local_b8 != (FTSENT *)0x0) {\n          pDVar26 = (DIR *)local_b8->fts_dirp;\n          p_Var25 = local_b8->fts_link;\n          if (pDVar26 == (DIR *)0x0) goto LAB_00025c94;\n          do {\n            closedir(pDVar26);\n            free(local_b8);\n            local_b8 = p_Var25;\n            while( true ) {\n              if (local_b8 == (FTSENT *)0x0) goto LAB_00025c40;\n              pDVar26 = (DIR *)local_b8->fts_dirp;\n              p_Var25 = local_b8->fts_link;\n              if (pDVar26 != (DIR *)0x0) break;\nLAB_00025c94:\n              free(local_b8);\n              local_b8 = p_Var25;\n            }\n          } while( true );\n        }\n        goto LAB_00025c40;\n      }\n    }" else (compound_statement "{\nLAB_0002574d:\n      if (local_d4 == 0) {\n        if (((type == 3) && (pFVar30->fts_info != 4)) && (pFVar30->fts_info != 7)) {\n          pFVar30->fts_info = 6;\n        }\n        if (local_b8 != (FTSENT *)0x0) {\n          pDVar26 = (DIR *)local_b8->fts_dirp;\n          p_Var25 = local_b8->fts_link;\n          if (pDVar26 == (DIR *)0x0) goto LAB_00025c94;\n          do {\n            closedir(pDVar26);\n            free(local_b8);\n            local_b8 = p_Var25;\n            while( true ) {\n              if (local_b8 == (FTSENT *)0x0) goto LAB_00025c40;\n              pDVar26 = (DIR *)local_b8->fts_dirp;\n              p_Var25 = local_b8->fts_link;\n              if (pDVar26 != (DIR *)0x0) break;\nLAB_00025c94:\n              free(local_b8);\n              local_b8 = p_Var25;\n            }\n          } while( true );\n        }\n        goto LAB_00025c40;\n      }\n    }" { (labeled_statement "LAB_0002574d:\n      if (local_d4 == 0) {\n        if (((type == 3) && (pFVar30->fts_info != 4)) && (pFVar30->fts_info != 7)) {\n          pFVar30->fts_info = 6;\n        }\n        if (local_b8 != (FTSENT *)0x0) {\n          pDVar26 = (DIR *)local_b8->fts_dirp;\n          p_Var25 = local_b8->fts_link;\n          if (pDVar26 == (DIR *)0x0) goto LAB_00025c94;\n          do {\n            closedir(pDVar26);\n            free(local_b8);\n            local_b8 = p_Var25;\n            while( true ) {\n              if (local_b8 == (FTSENT *)0x0) goto LAB_00025c40;\n              pDVar26 = (DIR *)local_b8->fts_dirp;\n              p_Var25 = local_b8->fts_link;\n              if (pDVar26 != (DIR *)0x0) break;\nLAB_00025c94:\n              free(local_b8);\n              local_b8 = p_Var25;\n            }\n          } while( true );\n        }\n        goto LAB_00025c40;\n      }" statement_identifier : (if_statement "if (local_d4 == 0) {\n        if (((type == 3) && (pFVar30->fts_info != 4)) && (pFVar30->fts_info != 7)) {\n          pFVar30->fts_info = 6;\n        }\n        if (local_b8 != (FTSENT *)0x0) {\n          pDVar26 = (DIR *)local_b8->fts_dirp;\n          p_Var25 = local_b8->fts_link;\n          if (pDVar26 == (DIR *)0x0) goto LAB_00025c94;\n          do {\n            closedir(pDVar26);\n            free(local_b8);\n            local_b8 = p_Var25;\n            while( true ) {\n              if (local_b8 == (FTSENT *)0x0) goto LAB_00025c40;\n              pDVar26 = (DIR *)local_b8->fts_dirp;\n              p_Var25 = local_b8->fts_link;\n              if (pDVar26 != (DIR *)0x0) break;\nLAB_00025c94:\n              free(local_b8);\n              local_b8 = p_Var25;\n            }\n          } while( true );\n        }\n        goto LAB_00025c40;\n      }" if (parenthesized_expression "(local_d4 == 0)" ( (binary_expression "local_d4 == 0" identifier == number_literal) )) (compound_statement "{\n        if (((type == 3) && (pFVar30->fts_info != 4)) && (pFVar30->fts_info != 7)) {\n          pFVar30->fts_info = 6;\n        }\n        if (local_b8 != (FTSENT *)0x0) {\n          pDVar26 = (DIR *)local_b8->fts_dirp;\n          p_Var25 = local_b8->fts_link;\n          if (pDVar26 == (DIR *)0x0) goto LAB_00025c94;\n          do {\n            closedir(pDVar26);\n            free(local_b8);\n            local_b8 = p_Var25;\n            while( true ) {\n              if (local_b8 == (FTSENT *)0x0) goto LAB_00025c40;\n              pDVar26 = (DIR *)local_b8->fts_dirp;\n              p_Var25 = local_b8->fts_link;\n              if (pDVar26 != (DIR *)0x0) break;\nLAB_00025c94:\n              free(local_b8);\n              local_b8 = p_Var25;\n            }\n          } while( true );\n        }\n        goto LAB_00025c40;\n      }" { (if_statement "if (((type == 3) && (pFVar30->fts_info != 4)) && (pFVar30->fts_info != 7)) {\n          pFVar30->fts_info = 6;\n        }" if (parenthesized_expression "(((type == 3) && (pFVar30->fts_info != 4)) && (pFVar30->fts_info != 7))" ( (binary_expression "((type == 3) && (pFVar30->fts_info != 4)) && (pFVar30->fts_info != 7)" (parenthesized_expression "((type == 3) && (pFVar30->fts_info != 4))" ( (binary_expression "(type == 3) && (pFVar30->fts_info != 4)" (parenthesized_expression "(type == 3)" ( (binary_expression "type == 3" identifier == number_literal) )) && (parenthesized_expression "(pFVar30->fts_info != 4)" ( (binary_expression "pFVar30->fts_info != 4" (field_expression "pFVar30->fts_info" identifier -> field_identifier) != number_literal) ))) )) && (parenthesized_expression "(pFVar30->fts_info != 7)" ( (binary_expression "pFVar30->fts_info != 7" (field_expression "pFVar30->fts_info" identifier -> field_identifier) != number_literal) ))) )) (compound_statement "{\n          pFVar30->fts_info = 6;\n        }" { (expression_statement "pFVar30->fts_info = 6;" (assignment_expression "pFVar30->fts_info = 6" (field_expression "pFVar30->fts_info" identifier -> field_identifier) = number_literal) ;) })) (if_statement "if (local_b8 != (FTSENT *)0x0) {\n          pDVar26 = (DIR *)local_b8->fts_dirp;\n          p_Var25 = local_b8->fts_link;\n          if (pDVar26 == (DIR *)0x0) goto LAB_00025c94;\n          do {\n            closedir(pDVar26);\n            free(local_b8);\n            local_b8 = p_Var25;\n            while( true ) {\n              if (local_b8 == (FTSENT *)0x0) goto LAB_00025c40;\n              pDVar26 = (DIR *)local_b8->fts_dirp;\n              p_Var25 = local_b8->fts_link;\n              if (pDVar26 != (DIR *)0x0) break;\nLAB_00025c94:\n              free(local_b8);\n              local_b8 = p_Var25;\n            }\n          } while( true );\n        }" if (parenthesized_expression "(local_b8 != (FTSENT *)0x0)" ( (binary_expression "local_b8 != (FTSENT *)0x0" identifier != (cast_expression "(FTSENT *)0x0" ( (type_descriptor "FTSENT *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          pDVar26 = (DIR *)local_b8->fts_dirp;\n          p_Var25 = local_b8->fts_link;\n          if (pDVar26 == (DIR *)0x0) goto LAB_00025c94;\n          do {\n            closedir(pDVar26);\n            free(local_b8);\n            local_b8 = p_Var25;\n            while( true ) {\n              if (local_b8 == (FTSENT *)0x0) goto LAB_00025c40;\n              pDVar26 = (DIR *)local_b8->fts_dirp;\n              p_Var25 = local_b8->fts_link;\n              if (pDVar26 != (DIR *)0x0) break;\nLAB_00025c94:\n              free(local_b8);\n              local_b8 = p_Var25;\n            }\n          } while( true );\n        }" { (expression_statement "pDVar26 = (DIR *)local_b8->fts_dirp;" (assignment_expression "pDVar26 = (DIR *)local_b8->fts_dirp" identifier = (cast_expression "(DIR *)local_b8->fts_dirp" ( (type_descriptor "DIR *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "local_b8->fts_dirp" identifier -> field_identifier))) ;) (expression_statement "p_Var25 = local_b8->fts_link;" (assignment_expression "p_Var25 = local_b8->fts_link" identifier = (field_expression "local_b8->fts_link" identifier -> field_identifier)) ;) (if_statement "if (pDVar26 == (DIR *)0x0) goto LAB_00025c94;" if (parenthesized_expression "(pDVar26 == (DIR *)0x0)" ( (binary_expression "pDVar26 == (DIR *)0x0" identifier == (cast_expression "(DIR *)0x0" ( (type_descriptor "DIR *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00025c94;" goto statement_identifier ;)) (do_statement "do {\n            closedir(pDVar26);\n            free(local_b8);\n            local_b8 = p_Var25;\n            while( true ) {\n              if (local_b8 == (FTSENT *)0x0) goto LAB_00025c40;\n              pDVar26 = (DIR *)local_b8->fts_dirp;\n              p_Var25 = local_b8->fts_link;\n              if (pDVar26 != (DIR *)0x0) break;\nLAB_00025c94:\n              free(local_b8);\n              local_b8 = p_Var25;\n            }\n          } while( true );" do (compound_statement "{\n            closedir(pDVar26);\n            free(local_b8);\n            local_b8 = p_Var25;\n            while( true ) {\n              if (local_b8 == (FTSENT *)0x0) goto LAB_00025c40;\n              pDVar26 = (DIR *)local_b8->fts_dirp;\n              p_Var25 = local_b8->fts_link;\n              if (pDVar26 != (DIR *)0x0) break;\nLAB_00025c94:\n              free(local_b8);\n              local_b8 = p_Var25;\n            }\n          }" { (expression_statement "closedir(pDVar26);" (call_expression "closedir(pDVar26)" identifier (argument_list "(pDVar26)" ( identifier ))) ;) (expression_statement "free(local_b8);" (call_expression "free(local_b8)" identifier (argument_list "(local_b8)" ( identifier ))) ;) (expression_statement "local_b8 = p_Var25;" (assignment_expression "local_b8 = p_Var25" identifier = identifier) ;) (while_statement "while( true ) {\n              if (local_b8 == (FTSENT *)0x0) goto LAB_00025c40;\n              pDVar26 = (DIR *)local_b8->fts_dirp;\n              p_Var25 = local_b8->fts_link;\n              if (pDVar26 != (DIR *)0x0) break;\nLAB_00025c94:\n              free(local_b8);\n              local_b8 = p_Var25;\n            }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n              if (local_b8 == (FTSENT *)0x0) goto LAB_00025c40;\n              pDVar26 = (DIR *)local_b8->fts_dirp;\n              p_Var25 = local_b8->fts_link;\n              if (pDVar26 != (DIR *)0x0) break;\nLAB_00025c94:\n              free(local_b8);\n              local_b8 = p_Var25;\n            }" { (if_statement "if (local_b8 == (FTSENT *)0x0) goto LAB_00025c40;" if (parenthesized_expression "(local_b8 == (FTSENT *)0x0)" ( (binary_expression "local_b8 == (FTSENT *)0x0" identifier == (cast_expression "(FTSENT *)0x0" ( (type_descriptor "FTSENT *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00025c40;" goto statement_identifier ;)) (expression_statement "pDVar26 = (DIR *)local_b8->fts_dirp;" (assignment_expression "pDVar26 = (DIR *)local_b8->fts_dirp" identifier = (cast_expression "(DIR *)local_b8->fts_dirp" ( (type_descriptor "DIR *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "local_b8->fts_dirp" identifier -> field_identifier))) ;) (expression_statement "p_Var25 = local_b8->fts_link;" (assignment_expression "p_Var25 = local_b8->fts_link" identifier = (field_expression "local_b8->fts_link" identifier -> field_identifier)) ;) (if_statement "if (pDVar26 != (DIR *)0x0) break;" if (parenthesized_expression "(pDVar26 != (DIR *)0x0)" ( (binary_expression "pDVar26 != (DIR *)0x0" identifier != (cast_expression "(DIR *)0x0" ( (type_descriptor "DIR *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (break_statement "break;" break ;)) (labeled_statement "LAB_00025c94:\n              free(local_b8);" statement_identifier : (expression_statement "free(local_b8);" (call_expression "free(local_b8)" identifier (argument_list "(local_b8)" ( identifier ))) ;)) (expression_statement "local_b8 = p_Var25;" (assignment_expression "local_b8 = p_Var25" identifier = identifier) ;) })) }) while (parenthesized_expression "( true )" ( true )) ;) })) (goto_statement "goto LAB_00025c40;" goto statement_identifier ;) }))) }))) (if_statement "if (bVar7) {\n      sp->fts_compar = fts_compare_ino;\n      local_b8 = fts_sort(sp,local_b8,local_d4);\n      sp->fts_compar = (_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *)0x0;\n    }\n    else if ((sp->fts_compar != (_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *)0x0) && (local_d4 != 1)\n            ) {\n      local_b8 = fts_sort(sp,local_b8,local_d4);\n    }" if (parenthesized_expression "(bVar7)" ( identifier )) (compound_statement "{\n      sp->fts_compar = fts_compare_ino;\n      local_b8 = fts_sort(sp,local_b8,local_d4);\n      sp->fts_compar = (_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *)0x0;\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 "local_b8 = fts_sort(sp,local_b8,local_d4);" (assignment_expression "local_b8 = fts_sort(sp,local_b8,local_d4)" identifier = (call_expression "fts_sort(sp,local_b8,local_d4)" identifier (argument_list "(sp,local_b8,local_d4)" ( 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)) ;) }) (else_clause "else if ((sp->fts_compar != (_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *)0x0) && (local_d4 != 1)\n            ) {\n      local_b8 = fts_sort(sp,local_b8,local_d4);\n    }" else (if_statement "if ((sp->fts_compar != (_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *)0x0) && (local_d4 != 1)\n            ) {\n      local_b8 = fts_sort(sp,local_b8,local_d4);\n    }" if (parenthesized_expression "((sp->fts_compar != (_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *)0x0) && (local_d4 != 1)\n            )" ( (binary_expression "(sp->fts_compar != (_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *)0x0) && (local_d4 != 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_d4 != 1)" ( (binary_expression "local_d4 != 1" identifier != number_literal) ))) )) (compound_statement "{\n      local_b8 = fts_sort(sp,local_b8,local_d4);\n    }" { (expression_statement "local_b8 = fts_sort(sp,local_b8,local_d4);" (assignment_expression "local_b8 = fts_sort(sp,local_b8,local_d4)" identifier = (call_expression "fts_sort(sp,local_b8,local_d4)" identifier (argument_list "(sp,local_b8,local_d4)" ( identifier , identifier , identifier )))) ;) })))) }))) (labeled_statement "LAB_0002563f:\n  if (iVar1 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return local_b8;\n  }" statement_identifier : (if_statement "if (iVar1 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return local_b8;\n  }" if (parenthesized_expression "(iVar1 == *(int *)(in_GS_OFFSET + 0x14))" ( (binary_expression "iVar1 == *(int *)(in_GS_OFFSET + 0x14)" identifier == (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) )) (compound_statement "{\n    return local_b8;\n  }" { (return_statement "return local_b8;" return identifier ;) }))) comment (expression_statement "__stack_chk_fail_local();" (call_expression "__stack_chk_fail_local()" identifier (argument_list "()" ( ))) ;) }))
(translation_unit "void * __regparm3 FUN_000251b0(int *param_1,int param_2)\n\n{\n  void *pvVar1;\n  int iVar2;\n  void *__ptr;\n  bool bVar3;\n  bool bVar4;\n  __ino64_t _Var5;\n  undefined *puVar6;\n  char cVar7;\n  undefined2 uVar8;\n  int *piVar9;\n  dirent64 *pdVar10;\n  size_t __n;\n  void *pvVar11;\n  undefined4 uVar12;\n  uint uVar13;\n  void *pvVar14;\n  int iVar15;\n  DIR *pDVar16;\n  int iVar17;\n  int iVar18;\n  int iVar19;\n  undefined4 *__ptr_00;\n  undefined4 *puVar20;\n  DIR *pDVar21;\n  uint uVar22;\n  uint uVar23;\n  ushort uVar24;\n  int in_GS_OFFSET;\n  bool bVar25;\n  uint local_d4;\n  uint local_d0;\n  void *local_c4;\n  void *local_b8;\n  uint local_b0;\n  uint local_a8;\n  undefined1 *local_a4;\n  int local_9c;\n  undefined4 local_80;\n  undefined4 local_7c;\n  statfs64 local_74;\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x251bb;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  iVar2 = *param_1;\n  pDVar21 = *(DIR **)(iVar2 + 0xc);\n  if (pDVar21 == (DIR *)0x0) {\n    uVar13 = param_1[0xb];\n    uVar23 = uVar13 & 0x10;\n    if (((uVar23 != 0) && (uVar23 = 0x20000, (uVar13 & 1) != 0)) &&\n       (uVar23 = *(uint *)(iVar2 + 0x30), uVar23 != 0)) {\n      uVar23 = 0x20000;\n    }\n    iVar15 = -100;\n    if ((uVar13 & 0x204) == 0x200) {\n      iVar15 = param_1[7];\n    }\n    local_9c = FUN_00029520(iVar15,*(undefined4 *)(iVar2 + 0x18),\n                            (uVar13 & 0x800) << 7 | uVar23 | 0x90900);\n    if (local_9c < 0) {\n      *(undefined4 *)(iVar2 + 0xc) = 0;\n    }\n    else {\n      pDVar16 = fdopendir(local_9c);\n      if (pDVar16 != (DIR *)0x0) {\n        *(DIR **)(iVar2 + 0xc) = pDVar16;\n        if (*(short *)(iVar2 + 0x3c) == 0xb) {\n          uVar8 = FUN_00024740();\n          *(undefined2 *)(iVar2 + 0x3c) = uVar8;\n        }\n        else if ((param_1[0xb] & 0x100U) != 0) {\n          FUN_00024aa0();\n          FUN_00024740();\n          cVar7 = FUN_000249d0();\n          if (cVar7 == '\0') {\n            piVar9 = __errno_location();\n            local_b8 = (void *)0x0;\n            *piVar9 = 0xc;\n            goto LAB_0002563f;\n          }\n        }\n        local_a8 = (-(uint)(param_1[10] == 0) & 0x186a1) - 1;\n        if (param_2 == 2) {\nLAB_00025bc8:\n          bVar25 = false;\n          uVar13 = param_1[0xb];\n          goto LAB_00025223;\n        }\n        if ((((param_1[0xb] & 0x38U) == 0x18) && (*(int *)(iVar2 + 0x58) == 2)) &&\n           (iVar15 = FUN_00024ca0(), iVar15 != 0)) {\n          if (param_2 != 3) goto LAB_00025bc8;\n          bVar25 = false;\n        }\n        else {\n          bVar25 = param_2 == 3;\n        }\n        if (((*(byte *)((int)param_1 + 0x2d) & 2) == 0) ||\n           (local_9c = FUN_000243f0(local_9c,0x406,3), -1 < local_9c)) {\n          iVar15 = FUN_00024e60(0);\n          if (iVar15 == 0) goto LAB_0002521b;\n          pDVar16 = *(DIR **)(iVar2 + 0xc);\n          uVar24 = *(ushort *)(iVar2 + 0x3e) | 1;\n          if (bVar25) goto LAB_000258a0;\nLAB_000258ae:\n          *(ushort *)(iVar2 + 0x3e) = uVar24;\n          closedir(pDVar16);\n          *(undefined4 *)(iVar2 + 0xc) = 0;\n          uVar13 = param_1[0xb];\n          if (((uVar13 & 0x200) != 0) && (-1 < local_9c)) {\n            close(local_9c);\n            uVar13 = param_1[0xb];\n          }\n        }\n        else {\n          pDVar16 = *(DIR **)(iVar2 + 0xc);\n          uVar24 = *(ushort *)(iVar2 + 0x3e) | 1;\n          if (bVar25) {\nLAB_000258a0:\n            piVar9 = __errno_location();\n            *(int *)(iVar2 + 0x20) = *piVar9;\n            goto LAB_000258ae;\n          }\n          *(ushort *)(iVar2 + 0x3e) = uVar24;\n          closedir(pDVar16);\n          uVar13 = param_1[0xb];\n        }\n        bVar25 = false;\n        *(undefined4 *)(iVar2 + 0xc) = 0;\n        goto LAB_00025223;\n      }\n      piVar9 = __errno_location();\n      iVar15 = *piVar9;\n      close(local_9c);\n      *piVar9 = iVar15;\n      *(undefined4 *)(iVar2 + 0xc) = 0;\n    }\njoined_r0x00025c30:\n    if (param_2 == 3) {\n      *(undefined2 *)(iVar2 + 0x3c) = 4;\n      piVar9 = __errno_location();\n      *(int *)(iVar2 + 0x20) = *piVar9;\n    }\nLAB_00025c40:\n    local_b8 = (void *)0x0;\n  }\n  else {\n    local_9c = dirfd(pDVar21);\n    if (local_9c < 0) {\n      closedir(*(DIR **)(iVar2 + 0xc));\n      *(undefined4 *)(iVar2 + 0xc) = 0;\n      goto joined_r0x00025c30;\n    }\n    if (param_1[10] == 0) {\n      local_a8 = 100000;\n      uVar13 = param_1[0xb];\n      bVar25 = true;\n    }\n    else {\n      local_a8 = 0xffffffff;\nLAB_0002521b:\n      bVar25 = true;\n      uVar13 = param_1[0xb];\n    }\nLAB_00025223:\n    uVar23 = *(uint *)(iVar2 + 0x28);\n    uVar22 = uVar23 - 1;\n    local_d0 = uVar23;\n    if (*(char *)(*(int *)(iVar2 + 0x1c) + -1 + uVar23) != '/') {\n      local_d0 = uVar23 + 1;\n      uVar22 = uVar23;\n    }\n    local_a4 = (undefined1 *)0x0;\n    if ((uVar13 & 4) != 0) {\n      local_a4 = (undefined1 *)(uVar22 + param_1[5]) + 1;\n      *(undefined1 *)(uVar22 + param_1[5]) = 0x2f;\n    }\n    puVar6 = PTR_free_0003afa8;\n    local_b0 = param_1[8] - local_d0;\n    bVar4 = false;\n    bVar3 = false;\n    iVar15 = *(int *)(iVar2 + 0x30);\n    local_c4 = (void *)0x0;\n    local_d4 = 0;\n    local_b8 = (void *)0x0;\nLAB_000252fb:\n    do {\n      do {\n        pDVar16 = *(DIR **)(iVar2 + 0xc);\n        if (pDVar16 == (DIR *)0x0) goto LAB_000256de;\n        piVar9 = __errno_location();\n        *piVar9 = 0;\n        pdVar10 = readdir64(pDVar16);\n        if (pdVar10 == (dirent64 *)0x0) {\n          if (*piVar9 != 0) {\n            *(int *)(iVar2 + 0x20) = *piVar9;\n            *(ushort *)(iVar2 + 0x3c) =\n                 (-(ushort)(pDVar21 == (DIR *)0x0 && local_d4 == 0) & 0xfffd) + 7;\n          }\n          if (*(DIR **)(iVar2 + 0xc) != (DIR *)0x0) {\n            closedir(*(DIR **)(iVar2 + 0xc));\n            *(undefined4 *)(iVar2 + 0xc) = 0;\n          }\n          goto LAB_000256de;\n        }\n      } while ((((*(byte *)(param_1 + 0xb) & 0x20) == 0) && (pdVar10->d_name[0] == '.')) &&\n              ((pdVar10->d_name[1] == '\0' || (*(short *)(pdVar10->d_name + 1) == 0x2e))));\n      __n = strlen(pdVar10->d_name);\n      pvVar11 = malloc(__n + 0xa8 & 0xfffffffc);\n      if (pvVar11 == (void *)0x0) {\n        iVar15 = *piVar9;\nLAB_000255a6:\n        free(pvVar11);\n        if (local_b8 != (void *)0x0) {\n          pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n          pvVar11 = *(void **)((int)local_b8 + 8);\n          if (pDVar21 == (DIR *)0x0) goto LAB_000255f4;\n          do {\n            closedir(pDVar21);\n            free(local_b8);\n            local_b8 = pvVar11;\n            while( true ) {\n              if (local_b8 == (void *)0x0) goto LAB_00025608;\n              pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n              pvVar11 = *(void **)((int)local_b8 + 8);\n              if (pDVar21 != (DIR *)0x0) break;\nLAB_000255f4:\n              free(local_b8);\n              local_b8 = pvVar11;\n            }\n          } while( true );\n        }\nLAB_00025608:\n        closedir(*(DIR **)(iVar2 + 0xc));\n        *(undefined4 *)(iVar2 + 0xc) = 0;\n        *(undefined2 *)(iVar2 + 0x3c) = 7;\n        local_b8 = (void *)0x0;\n        param_1[0xb] = param_1[0xb] | 0x4000;\n        *piVar9 = iVar15;\n        goto LAB_0002563f;\n      }\n      pvVar1 = (void *)((int)pvVar11 + 0xa4);\n      memcpy(pvVar1,pdVar10->d_name,__n);\n      __ptr = (void *)param_1[5];\n      *(undefined1 *)((int)pvVar11 + __n + 0xa4) = 0;\n      *(size_t *)((int)pvVar11 + 0x34) = __n;\n      *(int **)((int)pvVar11 + 0x2c) = param_1;\n      *(void **)((int)pvVar11 + 0x1c) = __ptr;\n      *(undefined4 *)((int)pvVar11 + 0x20) = 0;\n      *(undefined4 *)((int)pvVar11 + 0xc) = 0;\n      *(undefined4 *)((int)pvVar11 + 0x3e) = 0x30000;\n      *(undefined4 *)((int)pvVar11 + 0x10) = 0;\n      *(undefined4 *)((int)pvVar11 + 0x14) = 0;\n      if (local_b0 <= __n) {\n        uVar13 = local_d0 + 0x101 + param_1[8] + __n;\n        if (uVar13 < (uint)param_1[8]) {\n          iVar15 = 0x24;\n          free(__ptr);\n          param_1[5] = 0;\n          *piVar9 = 0x24;\n        }\n        else {\n          param_1[8] = uVar13;\n          pvVar14 = realloc(__ptr,uVar13);\n          if (pvVar14 != (void *)0x0) {\n            param_1[5] = (int)pvVar14;\n            if ((__ptr != pvVar14) && (bVar3 = true, (*(byte *)(param_1 + 0xb) & 4) != 0)) {\n              local_a4 = (undefined1 *)((int)pvVar14 + local_d0);\n            }\n            local_b0 = param_1[8] - local_d0;\n            goto LAB_000253d8;\n          }\n          free((void *)param_1[5]);\n          param_1[5] = 0;\n          iVar15 = *piVar9;\n        }\n        goto LAB_000255a6;\n      }\nLAB_000253d8:\n      if (CARRY4(__n,local_d0)) {\n        free(pvVar11);\n        if (local_b8 != (void *)0x0) {\n          pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n          pvVar11 = *(void **)((int)local_b8 + 8);\n          if (pDVar21 == (DIR *)0x0) goto LAB_00025e84;\n          do {\n            closedir(pDVar21);\n            free(local_b8);\n            local_b8 = pvVar11;\n            while( true ) {\n              if (local_b8 == (void *)0x0) goto LAB_00025e94;\n              pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n              pvVar11 = *(void **)((int)local_b8 + 8);\n              if (pDVar21 != (DIR *)0x0) break;\nLAB_00025e84:\n              free(local_b8);\n              local_b8 = pvVar11;\n            }\n          } while( true );\n        }\nLAB_00025e94:\n        closedir(*(DIR **)(iVar2 + 0xc));\n        *(undefined4 *)(iVar2 + 0xc) = 0;\n        *(undefined2 *)(iVar2 + 0x3c) = 7;\n        local_b8 = (void *)0x0;\n        param_1[0xb] = param_1[0xb] | 0x4000;\n        *piVar9 = 0x24;\n        goto LAB_0002563f;\n      }\n      uVar12 = *(undefined4 *)((int)&pdVar10->d_ino + 4);\n      *(size_t *)((int)pvVar11 + 0x28) = __n + local_d0;\n      *(int *)((int)pvVar11 + 0x30) = iVar15 + 1;\n      *(int *)((int)pvVar11 + 4) = *param_1;\n      _Var5 = pdVar10->d_ino;\n      *(undefined4 *)((int)pvVar11 + 0xa0) = uVar12;\n      *(int *)((int)pvVar11 + 0x9c) = (int)_Var5;\n      uVar13 = param_1[0xb];\n      if ((uVar13 & 4) == 0) {\n        *(void **)((int)pvVar11 + 0x18) = pvVar1;\n      }\n      else {\n        *(undefined4 *)((int)pvVar11 + 0x18) = *(undefined4 *)((int)pvVar11 + 0x1c);\n        memmove(local_a4,pvVar1,*(int *)((int)pvVar11 + 0x34) + 1);\n        uVar13 = param_1[0xb];\n      }\n      if ((param_1[10] == 0) || ((uVar13 & 0x400) != 0)) {\n        uVar23 = pdVar10->d_type - 1;\n        if (((uVar13 & 0x18) == 0x18) && ((pdVar10->d_type & 0xfb) != 0)) {\n          *(undefined2 *)((int)pvVar11 + 0x3c) = 0xb;\n          if (uVar23 < 0xc) {\n            *(undefined4 *)((int)pvVar11 + 0x54) = *(undefined4 *)(&DAT_00031560 + uVar23 * 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 (uVar23 < 0xc) {\n            *(undefined4 *)((int)pvVar11 + 0x54) = *(undefined4 *)(&DAT_00031560 + uVar23 * 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        uVar8 = FUN_00024740();\n        *(undefined2 *)((int)pvVar11 + 0x3c) = uVar8;\n      }\n      *(undefined4 *)((int)pvVar11 + 8) = 0;\n      pvVar1 = pvVar11;\n      if (local_b8 != (void *)0x0) {\n        *(void **)((int)local_c4 + 8) = pvVar11;\n        pvVar1 = local_b8;\n      }\n      local_b8 = pvVar1;\n      local_c4 = pvVar11;\n      if (local_d4 == 10000) {\n        if (param_1[10] == 0) {\n          iVar17 = *(int *)(iVar2 + 0x2c);\n          if ((*(byte *)(iVar17 + 0x2d) & 2) != 0) {\n            iVar18 = *(int *)(iVar17 + 0x30);\n            if (iVar18 == 0) {\n              iVar18 = FUN_0001df90(0xd,0,FUN_000246b0,FUN_000246e0,puVar6);\n              *(int *)(iVar17 + 0x30) = iVar18;\n              if (iVar18 != 0) goto LAB_00025920;\nLAB_000259b0:\n              if ((local_9c < 0) ||\n                 (iVar19 = fstatfs64(local_9c,&local_74), iVar17 = local_74.f_type, iVar19 != 0))\n              goto LAB_00025a48;\n              local_d4 = local_74.f_type;\n              if ((iVar18 != 0) &&\n                 (__ptr_00 = (undefined4 *)malloc(0xc), __ptr_00 != (undefined4 *)0x0)) {\n                uVar12 = *(undefined4 *)(iVar2 + 0x44);\n                __ptr_00[1] = *(undefined4 *)(iVar2 + 0x48);\n                *__ptr_00 = uVar12;\n                __ptr_00[2] = iVar17;\n                puVar20 = (undefined4 *)FUN_0001e8d0(iVar18,__ptr_00);\n                if (puVar20 == (undefined4 *)0x0) {\n                  free(__ptr_00);\n                  local_d4 = local_74.f_type;\n                }\n                else {\n                  if (__ptr_00 != puVar20) {\n                    \n                    abort();\n                  }\n                  local_d4 = local_74.f_type;\n                }\n              }\n            }\n            else {\nLAB_00025920:\n              local_7c = *(undefined4 *)(iVar2 + 0x48);\n              local_80 = *(undefined4 *)(iVar2 + 0x44);\n              iVar17 = FUN_0001dce0(iVar18,&local_80);\n              if (iVar17 == 0) goto LAB_000259b0;\n              local_d4 = *(int *)(iVar17 + 8);\n            }\n            if (((local_d4 == 0x6969) || (local_d4 == 0x1021994)) || (local_d4 == -0xacb2be)) {\n              bVar4 = false;\n              goto LAB_00025473;\n            }\n          }\nLAB_00025a48:\n          bVar4 = true;\n        }\nLAB_00025473:\n        local_d4 = 0x2711;\n        goto LAB_000252fb;\n      }\n      local_d4 = local_d4 + 1;\n    } while (local_d4 < local_a8);\nLAB_000256de:\n    if (bVar3) {\n      iVar15 = param_1[5];\n      for (iVar17 = param_1[1]; iVar17 != 0; iVar17 = *(int *)(iVar17 + 8)) {\n        while (*(int *)(iVar17 + 0x18) != iVar17 + 0xa4) {\n          iVar18 = *(int *)(iVar17 + 0x1c);\n          *(int *)(iVar17 + 0x1c) = iVar15;\n          *(int *)(iVar17 + 0x18) = (*(int *)(iVar17 + 0x18) - iVar18) + iVar15;\n          iVar17 = *(int *)(iVar17 + 8);\n          if (iVar17 == 0) goto LAB_00025aef;\n        }\n        *(int *)(iVar17 + 0x1c) = iVar15;\n      }\nLAB_00025aef:\n      iVar17 = *(int *)((int)local_b8 + 0x30);\n      pvVar11 = local_b8;\n      while (-1 < iVar17) {\n        while( true ) {\n          if (*(int *)((int)pvVar11 + 0x18) != (int)pvVar11 + 0xa4) {\n            *(int *)((int)pvVar11 + 0x18) =\n                 (*(int *)((int)pvVar11 + 0x18) - *(int *)((int)pvVar11 + 0x1c)) + iVar15;\n          }\n          pvVar1 = *(void **)((int)pvVar11 + 8);\n          *(int *)((int)pvVar11 + 0x1c) = iVar15;\n          if (pvVar1 == (void *)0x0) break;\n          pvVar11 = pvVar1;\n          if (*(int *)((int)pvVar1 + 0x30) < 0) goto LAB_000256e9;\n        }\n        pvVar11 = *(void **)((int)pvVar11 + 4);\n        iVar17 = *(int *)((int)pvVar11 + 0x30);\n      }\n    }\nLAB_000256e9:\n    if ((*(byte *)(param_1 + 0xb) & 4) != 0) {\n      if ((param_1[8] == local_d0) || (local_d4 == 0)) {\n        local_a4 = local_a4 + -1;\n      }\n      *local_a4 = 0;\n    }\n    if ((pDVar21 == (DIR *)0x0) && (bVar25)) {\n      if ((param_2 == 1) || (local_d4 == 0)) {\n        if (*(int *)(iVar2 + 0x30) == 0) {\n          iVar15 = FUN_00024bb0();\n        }\n        else {\n          iVar15 = FUN_00024e60(&DAT_0002e141);\n        }\n        if (iVar15 != 0) {\n          *(undefined2 *)(iVar2 + 0x3c) = 7;\n          param_1[0xb] = param_1[0xb] | 0x4000;\n          while (pvVar11 = local_b8, local_b8 != (void *)0x0) {\n            while( true ) {\n              local_b8 = *(void **)((int)pvVar11 + 8);\n              if (*(DIR **)((int)pvVar11 + 0xc) == (DIR *)0x0) break;\n              closedir(*(DIR **)((int)pvVar11 + 0xc));\n              free(pvVar11);\n              pvVar11 = local_b8;\n              if (local_b8 == (void *)0x0) goto LAB_00025c40;\n            }\n            free(pvVar11);\n          }\n          goto LAB_00025c40;\n        }\n        goto LAB_0002574d;\n      }\n    }\n    else {\nLAB_0002574d:\n      if (local_d4 == 0) {\n        if (((param_2 == 3) && (*(short *)(iVar2 + 0x3c) != 4)) && (*(short *)(iVar2 + 0x3c) != 7))\n        {\n          *(undefined2 *)(iVar2 + 0x3c) = 6;\n        }\n        if (local_b8 != (void *)0x0) {\n          pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n          pvVar11 = *(void **)((int)local_b8 + 8);\n          if (pDVar21 == (DIR *)0x0) goto LAB_00025c94;\n          do {\n            closedir(pDVar21);\n            free(local_b8);\n            local_b8 = pvVar11;\n            while( true ) {\n              if (local_b8 == (void *)0x0) goto LAB_00025c40;\n              pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n              pvVar11 = *(void **)((int)local_b8 + 8);\n              if (pDVar21 != (DIR *)0x0) break;\nLAB_00025c94:\n              free(local_b8);\n              local_b8 = pvVar11;\n            }\n          } while( true );\n        }\n        goto LAB_00025c40;\n      }\n    }\n    if (bVar4) {\n      param_1[10] = (int)FUN_00024700;\n      local_b8 = (void *)FUN_000248e0();\n      param_1[10] = 0;\n    }\n    else if ((param_1[10] != 0) && (local_d4 != 1)) {\n      local_b8 = (void *)FUN_000248e0();\n    }\n  }\nLAB_0002563f:\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return local_b8;\n  }\n                    \n  FUN_0002d5d0();\n}\n\n" (function_definition "void * __regparm3 FUN_000251b0(int *param_1,int param_2)\n\n{\n  void *pvVar1;\n  int iVar2;\n  void *__ptr;\n  bool bVar3;\n  bool bVar4;\n  __ino64_t _Var5;\n  undefined *puVar6;\n  char cVar7;\n  undefined2 uVar8;\n  int *piVar9;\n  dirent64 *pdVar10;\n  size_t __n;\n  void *pvVar11;\n  undefined4 uVar12;\n  uint uVar13;\n  void *pvVar14;\n  int iVar15;\n  DIR *pDVar16;\n  int iVar17;\n  int iVar18;\n  int iVar19;\n  undefined4 *__ptr_00;\n  undefined4 *puVar20;\n  DIR *pDVar21;\n  uint uVar22;\n  uint uVar23;\n  ushort uVar24;\n  int in_GS_OFFSET;\n  bool bVar25;\n  uint local_d4;\n  uint local_d0;\n  void *local_c4;\n  void *local_b8;\n  uint local_b0;\n  uint local_a8;\n  undefined1 *local_a4;\n  int local_9c;\n  undefined4 local_80;\n  undefined4 local_7c;\n  statfs64 local_74;\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x251bb;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  iVar2 = *param_1;\n  pDVar21 = *(DIR **)(iVar2 + 0xc);\n  if (pDVar21 == (DIR *)0x0) {\n    uVar13 = param_1[0xb];\n    uVar23 = uVar13 & 0x10;\n    if (((uVar23 != 0) && (uVar23 = 0x20000, (uVar13 & 1) != 0)) &&\n       (uVar23 = *(uint *)(iVar2 + 0x30), uVar23 != 0)) {\n      uVar23 = 0x20000;\n    }\n    iVar15 = -100;\n    if ((uVar13 & 0x204) == 0x200) {\n      iVar15 = param_1[7];\n    }\n    local_9c = FUN_00029520(iVar15,*(undefined4 *)(iVar2 + 0x18),\n                            (uVar13 & 0x800) << 7 | uVar23 | 0x90900);\n    if (local_9c < 0) {\n      *(undefined4 *)(iVar2 + 0xc) = 0;\n    }\n    else {\n      pDVar16 = fdopendir(local_9c);\n      if (pDVar16 != (DIR *)0x0) {\n        *(DIR **)(iVar2 + 0xc) = pDVar16;\n        if (*(short *)(iVar2 + 0x3c) == 0xb) {\n          uVar8 = FUN_00024740();\n          *(undefined2 *)(iVar2 + 0x3c) = uVar8;\n        }\n        else if ((param_1[0xb] & 0x100U) != 0) {\n          FUN_00024aa0();\n          FUN_00024740();\n          cVar7 = FUN_000249d0();\n          if (cVar7 == '\0') {\n            piVar9 = __errno_location();\n            local_b8 = (void *)0x0;\n            *piVar9 = 0xc;\n            goto LAB_0002563f;\n          }\n        }\n        local_a8 = (-(uint)(param_1[10] == 0) & 0x186a1) - 1;\n        if (param_2 == 2) {\nLAB_00025bc8:\n          bVar25 = false;\n          uVar13 = param_1[0xb];\n          goto LAB_00025223;\n        }\n        if ((((param_1[0xb] & 0x38U) == 0x18) && (*(int *)(iVar2 + 0x58) == 2)) &&\n           (iVar15 = FUN_00024ca0(), iVar15 != 0)) {\n          if (param_2 != 3) goto LAB_00025bc8;\n          bVar25 = false;\n        }\n        else {\n          bVar25 = param_2 == 3;\n        }\n        if (((*(byte *)((int)param_1 + 0x2d) & 2) == 0) ||\n           (local_9c = FUN_000243f0(local_9c,0x406,3), -1 < local_9c)) {\n          iVar15 = FUN_00024e60(0);\n          if (iVar15 == 0) goto LAB_0002521b;\n          pDVar16 = *(DIR **)(iVar2 + 0xc);\n          uVar24 = *(ushort *)(iVar2 + 0x3e) | 1;\n          if (bVar25) goto LAB_000258a0;\nLAB_000258ae:\n          *(ushort *)(iVar2 + 0x3e) = uVar24;\n          closedir(pDVar16);\n          *(undefined4 *)(iVar2 + 0xc) = 0;\n          uVar13 = param_1[0xb];\n          if (((uVar13 & 0x200) != 0) && (-1 < local_9c)) {\n            close(local_9c);\n            uVar13 = param_1[0xb];\n          }\n        }\n        else {\n          pDVar16 = *(DIR **)(iVar2 + 0xc);\n          uVar24 = *(ushort *)(iVar2 + 0x3e) | 1;\n          if (bVar25) {\nLAB_000258a0:\n            piVar9 = __errno_location();\n            *(int *)(iVar2 + 0x20) = *piVar9;\n            goto LAB_000258ae;\n          }\n          *(ushort *)(iVar2 + 0x3e) = uVar24;\n          closedir(pDVar16);\n          uVar13 = param_1[0xb];\n        }\n        bVar25 = false;\n        *(undefined4 *)(iVar2 + 0xc) = 0;\n        goto LAB_00025223;\n      }\n      piVar9 = __errno_location();\n      iVar15 = *piVar9;\n      close(local_9c);\n      *piVar9 = iVar15;\n      *(undefined4 *)(iVar2 + 0xc) = 0;\n    }\njoined_r0x00025c30:\n    if (param_2 == 3) {\n      *(undefined2 *)(iVar2 + 0x3c) = 4;\n      piVar9 = __errno_location();\n      *(int *)(iVar2 + 0x20) = *piVar9;\n    }\nLAB_00025c40:\n    local_b8 = (void *)0x0;\n  }\n  else {\n    local_9c = dirfd(pDVar21);\n    if (local_9c < 0) {\n      closedir(*(DIR **)(iVar2 + 0xc));\n      *(undefined4 *)(iVar2 + 0xc) = 0;\n      goto joined_r0x00025c30;\n    }\n    if (param_1[10] == 0) {\n      local_a8 = 100000;\n      uVar13 = param_1[0xb];\n      bVar25 = true;\n    }\n    else {\n      local_a8 = 0xffffffff;\nLAB_0002521b:\n      bVar25 = true;\n      uVar13 = param_1[0xb];\n    }\nLAB_00025223:\n    uVar23 = *(uint *)(iVar2 + 0x28);\n    uVar22 = uVar23 - 1;\n    local_d0 = uVar23;\n    if (*(char *)(*(int *)(iVar2 + 0x1c) + -1 + uVar23) != '/') {\n      local_d0 = uVar23 + 1;\n      uVar22 = uVar23;\n    }\n    local_a4 = (undefined1 *)0x0;\n    if ((uVar13 & 4) != 0) {\n      local_a4 = (undefined1 *)(uVar22 + param_1[5]) + 1;\n      *(undefined1 *)(uVar22 + param_1[5]) = 0x2f;\n    }\n    puVar6 = PTR_free_0003afa8;\n    local_b0 = param_1[8] - local_d0;\n    bVar4 = false;\n    bVar3 = false;\n    iVar15 = *(int *)(iVar2 + 0x30);\n    local_c4 = (void *)0x0;\n    local_d4 = 0;\n    local_b8 = (void *)0x0;\nLAB_000252fb:\n    do {\n      do {\n        pDVar16 = *(DIR **)(iVar2 + 0xc);\n        if (pDVar16 == (DIR *)0x0) goto LAB_000256de;\n        piVar9 = __errno_location();\n        *piVar9 = 0;\n        pdVar10 = readdir64(pDVar16);\n        if (pdVar10 == (dirent64 *)0x0) {\n          if (*piVar9 != 0) {\n            *(int *)(iVar2 + 0x20) = *piVar9;\n            *(ushort *)(iVar2 + 0x3c) =\n                 (-(ushort)(pDVar21 == (DIR *)0x0 && local_d4 == 0) & 0xfffd) + 7;\n          }\n          if (*(DIR **)(iVar2 + 0xc) != (DIR *)0x0) {\n            closedir(*(DIR **)(iVar2 + 0xc));\n            *(undefined4 *)(iVar2 + 0xc) = 0;\n          }\n          goto LAB_000256de;\n        }\n      } while ((((*(byte *)(param_1 + 0xb) & 0x20) == 0) && (pdVar10->d_name[0] == '.')) &&\n              ((pdVar10->d_name[1] == '\0' || (*(short *)(pdVar10->d_name + 1) == 0x2e))));\n      __n = strlen(pdVar10->d_name);\n      pvVar11 = malloc(__n + 0xa8 & 0xfffffffc);\n      if (pvVar11 == (void *)0x0) {\n        iVar15 = *piVar9;\nLAB_000255a6:\n        free(pvVar11);\n        if (local_b8 != (void *)0x0) {\n          pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n          pvVar11 = *(void **)((int)local_b8 + 8);\n          if (pDVar21 == (DIR *)0x0) goto LAB_000255f4;\n          do {\n            closedir(pDVar21);\n            free(local_b8);\n            local_b8 = pvVar11;\n            while( true ) {\n              if (local_b8 == (void *)0x0) goto LAB_00025608;\n              pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n              pvVar11 = *(void **)((int)local_b8 + 8);\n              if (pDVar21 != (DIR *)0x0) break;\nLAB_000255f4:\n              free(local_b8);\n              local_b8 = pvVar11;\n            }\n          } while( true );\n        }\nLAB_00025608:\n        closedir(*(DIR **)(iVar2 + 0xc));\n        *(undefined4 *)(iVar2 + 0xc) = 0;\n        *(undefined2 *)(iVar2 + 0x3c) = 7;\n        local_b8 = (void *)0x0;\n        param_1[0xb] = param_1[0xb] | 0x4000;\n        *piVar9 = iVar15;\n        goto LAB_0002563f;\n      }\n      pvVar1 = (void *)((int)pvVar11 + 0xa4);\n      memcpy(pvVar1,pdVar10->d_name,__n);\n      __ptr = (void *)param_1[5];\n      *(undefined1 *)((int)pvVar11 + __n + 0xa4) = 0;\n      *(size_t *)((int)pvVar11 + 0x34) = __n;\n      *(int **)((int)pvVar11 + 0x2c) = param_1;\n      *(void **)((int)pvVar11 + 0x1c) = __ptr;\n      *(undefined4 *)((int)pvVar11 + 0x20) = 0;\n      *(undefined4 *)((int)pvVar11 + 0xc) = 0;\n      *(undefined4 *)((int)pvVar11 + 0x3e) = 0x30000;\n      *(undefined4 *)((int)pvVar11 + 0x10) = 0;\n      *(undefined4 *)((int)pvVar11 + 0x14) = 0;\n      if (local_b0 <= __n) {\n        uVar13 = local_d0 + 0x101 + param_1[8] + __n;\n        if (uVar13 < (uint)param_1[8]) {\n          iVar15 = 0x24;\n          free(__ptr);\n          param_1[5] = 0;\n          *piVar9 = 0x24;\n        }\n        else {\n          param_1[8] = uVar13;\n          pvVar14 = realloc(__ptr,uVar13);\n          if (pvVar14 != (void *)0x0) {\n            param_1[5] = (int)pvVar14;\n            if ((__ptr != pvVar14) && (bVar3 = true, (*(byte *)(param_1 + 0xb) & 4) != 0)) {\n              local_a4 = (undefined1 *)((int)pvVar14 + local_d0);\n            }\n            local_b0 = param_1[8] - local_d0;\n            goto LAB_000253d8;\n          }\n          free((void *)param_1[5]);\n          param_1[5] = 0;\n          iVar15 = *piVar9;\n        }\n        goto LAB_000255a6;\n      }\nLAB_000253d8:\n      if (CARRY4(__n,local_d0)) {\n        free(pvVar11);\n        if (local_b8 != (void *)0x0) {\n          pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n          pvVar11 = *(void **)((int)local_b8 + 8);\n          if (pDVar21 == (DIR *)0x0) goto LAB_00025e84;\n          do {\n            closedir(pDVar21);\n            free(local_b8);\n            local_b8 = pvVar11;\n            while( true ) {\n              if (local_b8 == (void *)0x0) goto LAB_00025e94;\n              pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n              pvVar11 = *(void **)((int)local_b8 + 8);\n              if (pDVar21 != (DIR *)0x0) break;\nLAB_00025e84:\n              free(local_b8);\n              local_b8 = pvVar11;\n            }\n          } while( true );\n        }\nLAB_00025e94:\n        closedir(*(DIR **)(iVar2 + 0xc));\n        *(undefined4 *)(iVar2 + 0xc) = 0;\n        *(undefined2 *)(iVar2 + 0x3c) = 7;\n        local_b8 = (void *)0x0;\n        param_1[0xb] = param_1[0xb] | 0x4000;\n        *piVar9 = 0x24;\n        goto LAB_0002563f;\n      }\n      uVar12 = *(undefined4 *)((int)&pdVar10->d_ino + 4);\n      *(size_t *)((int)pvVar11 + 0x28) = __n + local_d0;\n      *(int *)((int)pvVar11 + 0x30) = iVar15 + 1;\n      *(int *)((int)pvVar11 + 4) = *param_1;\n      _Var5 = pdVar10->d_ino;\n      *(undefined4 *)((int)pvVar11 + 0xa0) = uVar12;\n      *(int *)((int)pvVar11 + 0x9c) = (int)_Var5;\n      uVar13 = param_1[0xb];\n      if ((uVar13 & 4) == 0) {\n        *(void **)((int)pvVar11 + 0x18) = pvVar1;\n      }\n      else {\n        *(undefined4 *)((int)pvVar11 + 0x18) = *(undefined4 *)((int)pvVar11 + 0x1c);\n        memmove(local_a4,pvVar1,*(int *)((int)pvVar11 + 0x34) + 1);\n        uVar13 = param_1[0xb];\n      }\n      if ((param_1[10] == 0) || ((uVar13 & 0x400) != 0)) {\n        uVar23 = pdVar10->d_type - 1;\n        if (((uVar13 & 0x18) == 0x18) && ((pdVar10->d_type & 0xfb) != 0)) {\n          *(undefined2 *)((int)pvVar11 + 0x3c) = 0xb;\n          if (uVar23 < 0xc) {\n            *(undefined4 *)((int)pvVar11 + 0x54) = *(undefined4 *)(&DAT_00031560 + uVar23 * 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 (uVar23 < 0xc) {\n            *(undefined4 *)((int)pvVar11 + 0x54) = *(undefined4 *)(&DAT_00031560 + uVar23 * 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        uVar8 = FUN_00024740();\n        *(undefined2 *)((int)pvVar11 + 0x3c) = uVar8;\n      }\n      *(undefined4 *)((int)pvVar11 + 8) = 0;\n      pvVar1 = pvVar11;\n      if (local_b8 != (void *)0x0) {\n        *(void **)((int)local_c4 + 8) = pvVar11;\n        pvVar1 = local_b8;\n      }\n      local_b8 = pvVar1;\n      local_c4 = pvVar11;\n      if (local_d4 == 10000) {\n        if (param_1[10] == 0) {\n          iVar17 = *(int *)(iVar2 + 0x2c);\n          if ((*(byte *)(iVar17 + 0x2d) & 2) != 0) {\n            iVar18 = *(int *)(iVar17 + 0x30);\n            if (iVar18 == 0) {\n              iVar18 = FUN_0001df90(0xd,0,FUN_000246b0,FUN_000246e0,puVar6);\n              *(int *)(iVar17 + 0x30) = iVar18;\n              if (iVar18 != 0) goto LAB_00025920;\nLAB_000259b0:\n              if ((local_9c < 0) ||\n                 (iVar19 = fstatfs64(local_9c,&local_74), iVar17 = local_74.f_type, iVar19 != 0))\n              goto LAB_00025a48;\n              local_d4 = local_74.f_type;\n              if ((iVar18 != 0) &&\n                 (__ptr_00 = (undefined4 *)malloc(0xc), __ptr_00 != (undefined4 *)0x0)) {\n                uVar12 = *(undefined4 *)(iVar2 + 0x44);\n                __ptr_00[1] = *(undefined4 *)(iVar2 + 0x48);\n                *__ptr_00 = uVar12;\n                __ptr_00[2] = iVar17;\n                puVar20 = (undefined4 *)FUN_0001e8d0(iVar18,__ptr_00);\n                if (puVar20 == (undefined4 *)0x0) {\n                  free(__ptr_00);\n                  local_d4 = local_74.f_type;\n                }\n                else {\n                  if (__ptr_00 != puVar20) {\n                    \n                    abort();\n                  }\n                  local_d4 = local_74.f_type;\n                }\n              }\n            }\n            else {\nLAB_00025920:\n              local_7c = *(undefined4 *)(iVar2 + 0x48);\n              local_80 = *(undefined4 *)(iVar2 + 0x44);\n              iVar17 = FUN_0001dce0(iVar18,&local_80);\n              if (iVar17 == 0) goto LAB_000259b0;\n              local_d4 = *(int *)(iVar17 + 8);\n            }\n            if (((local_d4 == 0x6969) || (local_d4 == 0x1021994)) || (local_d4 == -0xacb2be)) {\n              bVar4 = false;\n              goto LAB_00025473;\n            }\n          }\nLAB_00025a48:\n          bVar4 = true;\n        }\nLAB_00025473:\n        local_d4 = 0x2711;\n        goto LAB_000252fb;\n      }\n      local_d4 = local_d4 + 1;\n    } while (local_d4 < local_a8);\nLAB_000256de:\n    if (bVar3) {\n      iVar15 = param_1[5];\n      for (iVar17 = param_1[1]; iVar17 != 0; iVar17 = *(int *)(iVar17 + 8)) {\n        while (*(int *)(iVar17 + 0x18) != iVar17 + 0xa4) {\n          iVar18 = *(int *)(iVar17 + 0x1c);\n          *(int *)(iVar17 + 0x1c) = iVar15;\n          *(int *)(iVar17 + 0x18) = (*(int *)(iVar17 + 0x18) - iVar18) + iVar15;\n          iVar17 = *(int *)(iVar17 + 8);\n          if (iVar17 == 0) goto LAB_00025aef;\n        }\n        *(int *)(iVar17 + 0x1c) = iVar15;\n      }\nLAB_00025aef:\n      iVar17 = *(int *)((int)local_b8 + 0x30);\n      pvVar11 = local_b8;\n      while (-1 < iVar17) {\n        while( true ) {\n          if (*(int *)((int)pvVar11 + 0x18) != (int)pvVar11 + 0xa4) {\n            *(int *)((int)pvVar11 + 0x18) =\n                 (*(int *)((int)pvVar11 + 0x18) - *(int *)((int)pvVar11 + 0x1c)) + iVar15;\n          }\n          pvVar1 = *(void **)((int)pvVar11 + 8);\n          *(int *)((int)pvVar11 + 0x1c) = iVar15;\n          if (pvVar1 == (void *)0x0) break;\n          pvVar11 = pvVar1;\n          if (*(int *)((int)pvVar1 + 0x30) < 0) goto LAB_000256e9;\n        }\n        pvVar11 = *(void **)((int)pvVar11 + 4);\n        iVar17 = *(int *)((int)pvVar11 + 0x30);\n      }\n    }\nLAB_000256e9:\n    if ((*(byte *)(param_1 + 0xb) & 4) != 0) {\n      if ((param_1[8] == local_d0) || (local_d4 == 0)) {\n        local_a4 = local_a4 + -1;\n      }\n      *local_a4 = 0;\n    }\n    if ((pDVar21 == (DIR *)0x0) && (bVar25)) {\n      if ((param_2 == 1) || (local_d4 == 0)) {\n        if (*(int *)(iVar2 + 0x30) == 0) {\n          iVar15 = FUN_00024bb0();\n        }\n        else {\n          iVar15 = FUN_00024e60(&DAT_0002e141);\n        }\n        if (iVar15 != 0) {\n          *(undefined2 *)(iVar2 + 0x3c) = 7;\n          param_1[0xb] = param_1[0xb] | 0x4000;\n          while (pvVar11 = local_b8, local_b8 != (void *)0x0) {\n            while( true ) {\n              local_b8 = *(void **)((int)pvVar11 + 8);\n              if (*(DIR **)((int)pvVar11 + 0xc) == (DIR *)0x0) break;\n              closedir(*(DIR **)((int)pvVar11 + 0xc));\n              free(pvVar11);\n              pvVar11 = local_b8;\n              if (local_b8 == (void *)0x0) goto LAB_00025c40;\n            }\n            free(pvVar11);\n          }\n          goto LAB_00025c40;\n        }\n        goto LAB_0002574d;\n      }\n    }\n    else {\nLAB_0002574d:\n      if (local_d4 == 0) {\n        if (((param_2 == 3) && (*(short *)(iVar2 + 0x3c) != 4)) && (*(short *)(iVar2 + 0x3c) != 7))\n        {\n          *(undefined2 *)(iVar2 + 0x3c) = 6;\n        }\n        if (local_b8 != (void *)0x0) {\n          pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n          pvVar11 = *(void **)((int)local_b8 + 8);\n          if (pDVar21 == (DIR *)0x0) goto LAB_00025c94;\n          do {\n            closedir(pDVar21);\n            free(local_b8);\n            local_b8 = pvVar11;\n            while( true ) {\n              if (local_b8 == (void *)0x0) goto LAB_00025c40;\n              pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n              pvVar11 = *(void **)((int)local_b8 + 8);\n              if (pDVar21 != (DIR *)0x0) break;\nLAB_00025c94:\n              free(local_b8);\n              local_b8 = pvVar11;\n            }\n          } while( true );\n        }\n        goto LAB_00025c40;\n      }\n    }\n    if (bVar4) {\n      param_1[10] = (int)FUN_00024700;\n      local_b8 = (void *)FUN_000248e0();\n      param_1[10] = 0;\n    }\n    else if ((param_1[10] != 0) && (local_d4 != 1)) {\n      local_b8 = (void *)FUN_000248e0();\n    }\n  }\nLAB_0002563f:\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return local_b8;\n  }\n                    \n  FUN_0002d5d0();\n}" primitive_type (pointer_declarator "* __regparm3 FUN_000251b0(int *param_1,int param_2)" * (ERROR "__regparm3" identifier) (function_declarator "FUN_000251b0(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  void *pvVar1;\n  int iVar2;\n  void *__ptr;\n  bool bVar3;\n  bool bVar4;\n  __ino64_t _Var5;\n  undefined *puVar6;\n  char cVar7;\n  undefined2 uVar8;\n  int *piVar9;\n  dirent64 *pdVar10;\n  size_t __n;\n  void *pvVar11;\n  undefined4 uVar12;\n  uint uVar13;\n  void *pvVar14;\n  int iVar15;\n  DIR *pDVar16;\n  int iVar17;\n  int iVar18;\n  int iVar19;\n  undefined4 *__ptr_00;\n  undefined4 *puVar20;\n  DIR *pDVar21;\n  uint uVar22;\n  uint uVar23;\n  ushort uVar24;\n  int in_GS_OFFSET;\n  bool bVar25;\n  uint local_d4;\n  uint local_d0;\n  void *local_c4;\n  void *local_b8;\n  uint local_b0;\n  uint local_a8;\n  undefined1 *local_a4;\n  int local_9c;\n  undefined4 local_80;\n  undefined4 local_7c;\n  statfs64 local_74;\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x251bb;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  iVar2 = *param_1;\n  pDVar21 = *(DIR **)(iVar2 + 0xc);\n  if (pDVar21 == (DIR *)0x0) {\n    uVar13 = param_1[0xb];\n    uVar23 = uVar13 & 0x10;\n    if (((uVar23 != 0) && (uVar23 = 0x20000, (uVar13 & 1) != 0)) &&\n       (uVar23 = *(uint *)(iVar2 + 0x30), uVar23 != 0)) {\n      uVar23 = 0x20000;\n    }\n    iVar15 = -100;\n    if ((uVar13 & 0x204) == 0x200) {\n      iVar15 = param_1[7];\n    }\n    local_9c = FUN_00029520(iVar15,*(undefined4 *)(iVar2 + 0x18),\n                            (uVar13 & 0x800) << 7 | uVar23 | 0x90900);\n    if (local_9c < 0) {\n      *(undefined4 *)(iVar2 + 0xc) = 0;\n    }\n    else {\n      pDVar16 = fdopendir(local_9c);\n      if (pDVar16 != (DIR *)0x0) {\n        *(DIR **)(iVar2 + 0xc) = pDVar16;\n        if (*(short *)(iVar2 + 0x3c) == 0xb) {\n          uVar8 = FUN_00024740();\n          *(undefined2 *)(iVar2 + 0x3c) = uVar8;\n        }\n        else if ((param_1[0xb] & 0x100U) != 0) {\n          FUN_00024aa0();\n          FUN_00024740();\n          cVar7 = FUN_000249d0();\n          if (cVar7 == '\0') {\n            piVar9 = __errno_location();\n            local_b8 = (void *)0x0;\n            *piVar9 = 0xc;\n            goto LAB_0002563f;\n          }\n        }\n        local_a8 = (-(uint)(param_1[10] == 0) & 0x186a1) - 1;\n        if (param_2 == 2) {\nLAB_00025bc8:\n          bVar25 = false;\n          uVar13 = param_1[0xb];\n          goto LAB_00025223;\n        }\n        if ((((param_1[0xb] & 0x38U) == 0x18) && (*(int *)(iVar2 + 0x58) == 2)) &&\n           (iVar15 = FUN_00024ca0(), iVar15 != 0)) {\n          if (param_2 != 3) goto LAB_00025bc8;\n          bVar25 = false;\n        }\n        else {\n          bVar25 = param_2 == 3;\n        }\n        if (((*(byte *)((int)param_1 + 0x2d) & 2) == 0) ||\n           (local_9c = FUN_000243f0(local_9c,0x406,3), -1 < local_9c)) {\n          iVar15 = FUN_00024e60(0);\n          if (iVar15 == 0) goto LAB_0002521b;\n          pDVar16 = *(DIR **)(iVar2 + 0xc);\n          uVar24 = *(ushort *)(iVar2 + 0x3e) | 1;\n          if (bVar25) goto LAB_000258a0;\nLAB_000258ae:\n          *(ushort *)(iVar2 + 0x3e) = uVar24;\n          closedir(pDVar16);\n          *(undefined4 *)(iVar2 + 0xc) = 0;\n          uVar13 = param_1[0xb];\n          if (((uVar13 & 0x200) != 0) && (-1 < local_9c)) {\n            close(local_9c);\n            uVar13 = param_1[0xb];\n          }\n        }\n        else {\n          pDVar16 = *(DIR **)(iVar2 + 0xc);\n          uVar24 = *(ushort *)(iVar2 + 0x3e) | 1;\n          if (bVar25) {\nLAB_000258a0:\n            piVar9 = __errno_location();\n            *(int *)(iVar2 + 0x20) = *piVar9;\n            goto LAB_000258ae;\n          }\n          *(ushort *)(iVar2 + 0x3e) = uVar24;\n          closedir(pDVar16);\n          uVar13 = param_1[0xb];\n        }\n        bVar25 = false;\n        *(undefined4 *)(iVar2 + 0xc) = 0;\n        goto LAB_00025223;\n      }\n      piVar9 = __errno_location();\n      iVar15 = *piVar9;\n      close(local_9c);\n      *piVar9 = iVar15;\n      *(undefined4 *)(iVar2 + 0xc) = 0;\n    }\njoined_r0x00025c30:\n    if (param_2 == 3) {\n      *(undefined2 *)(iVar2 + 0x3c) = 4;\n      piVar9 = __errno_location();\n      *(int *)(iVar2 + 0x20) = *piVar9;\n    }\nLAB_00025c40:\n    local_b8 = (void *)0x0;\n  }\n  else {\n    local_9c = dirfd(pDVar21);\n    if (local_9c < 0) {\n      closedir(*(DIR **)(iVar2 + 0xc));\n      *(undefined4 *)(iVar2 + 0xc) = 0;\n      goto joined_r0x00025c30;\n    }\n    if (param_1[10] == 0) {\n      local_a8 = 100000;\n      uVar13 = param_1[0xb];\n      bVar25 = true;\n    }\n    else {\n      local_a8 = 0xffffffff;\nLAB_0002521b:\n      bVar25 = true;\n      uVar13 = param_1[0xb];\n    }\nLAB_00025223:\n    uVar23 = *(uint *)(iVar2 + 0x28);\n    uVar22 = uVar23 - 1;\n    local_d0 = uVar23;\n    if (*(char *)(*(int *)(iVar2 + 0x1c) + -1 + uVar23) != '/') {\n      local_d0 = uVar23 + 1;\n      uVar22 = uVar23;\n    }\n    local_a4 = (undefined1 *)0x0;\n    if ((uVar13 & 4) != 0) {\n      local_a4 = (undefined1 *)(uVar22 + param_1[5]) + 1;\n      *(undefined1 *)(uVar22 + param_1[5]) = 0x2f;\n    }\n    puVar6 = PTR_free_0003afa8;\n    local_b0 = param_1[8] - local_d0;\n    bVar4 = false;\n    bVar3 = false;\n    iVar15 = *(int *)(iVar2 + 0x30);\n    local_c4 = (void *)0x0;\n    local_d4 = 0;\n    local_b8 = (void *)0x0;\nLAB_000252fb:\n    do {\n      do {\n        pDVar16 = *(DIR **)(iVar2 + 0xc);\n        if (pDVar16 == (DIR *)0x0) goto LAB_000256de;\n        piVar9 = __errno_location();\n        *piVar9 = 0;\n        pdVar10 = readdir64(pDVar16);\n        if (pdVar10 == (dirent64 *)0x0) {\n          if (*piVar9 != 0) {\n            *(int *)(iVar2 + 0x20) = *piVar9;\n            *(ushort *)(iVar2 + 0x3c) =\n                 (-(ushort)(pDVar21 == (DIR *)0x0 && local_d4 == 0) & 0xfffd) + 7;\n          }\n          if (*(DIR **)(iVar2 + 0xc) != (DIR *)0x0) {\n            closedir(*(DIR **)(iVar2 + 0xc));\n            *(undefined4 *)(iVar2 + 0xc) = 0;\n          }\n          goto LAB_000256de;\n        }\n      } while ((((*(byte *)(param_1 + 0xb) & 0x20) == 0) && (pdVar10->d_name[0] == '.')) &&\n              ((pdVar10->d_name[1] == '\0' || (*(short *)(pdVar10->d_name + 1) == 0x2e))));\n      __n = strlen(pdVar10->d_name);\n      pvVar11 = malloc(__n + 0xa8 & 0xfffffffc);\n      if (pvVar11 == (void *)0x0) {\n        iVar15 = *piVar9;\nLAB_000255a6:\n        free(pvVar11);\n        if (local_b8 != (void *)0x0) {\n          pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n          pvVar11 = *(void **)((int)local_b8 + 8);\n          if (pDVar21 == (DIR *)0x0) goto LAB_000255f4;\n          do {\n            closedir(pDVar21);\n            free(local_b8);\n            local_b8 = pvVar11;\n            while( true ) {\n              if (local_b8 == (void *)0x0) goto LAB_00025608;\n              pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n              pvVar11 = *(void **)((int)local_b8 + 8);\n              if (pDVar21 != (DIR *)0x0) break;\nLAB_000255f4:\n              free(local_b8);\n              local_b8 = pvVar11;\n            }\n          } while( true );\n        }\nLAB_00025608:\n        closedir(*(DIR **)(iVar2 + 0xc));\n        *(undefined4 *)(iVar2 + 0xc) = 0;\n        *(undefined2 *)(iVar2 + 0x3c) = 7;\n        local_b8 = (void *)0x0;\n        param_1[0xb] = param_1[0xb] | 0x4000;\n        *piVar9 = iVar15;\n        goto LAB_0002563f;\n      }\n      pvVar1 = (void *)((int)pvVar11 + 0xa4);\n      memcpy(pvVar1,pdVar10->d_name,__n);\n      __ptr = (void *)param_1[5];\n      *(undefined1 *)((int)pvVar11 + __n + 0xa4) = 0;\n      *(size_t *)((int)pvVar11 + 0x34) = __n;\n      *(int **)((int)pvVar11 + 0x2c) = param_1;\n      *(void **)((int)pvVar11 + 0x1c) = __ptr;\n      *(undefined4 *)((int)pvVar11 + 0x20) = 0;\n      *(undefined4 *)((int)pvVar11 + 0xc) = 0;\n      *(undefined4 *)((int)pvVar11 + 0x3e) = 0x30000;\n      *(undefined4 *)((int)pvVar11 + 0x10) = 0;\n      *(undefined4 *)((int)pvVar11 + 0x14) = 0;\n      if (local_b0 <= __n) {\n        uVar13 = local_d0 + 0x101 + param_1[8] + __n;\n        if (uVar13 < (uint)param_1[8]) {\n          iVar15 = 0x24;\n          free(__ptr);\n          param_1[5] = 0;\n          *piVar9 = 0x24;\n        }\n        else {\n          param_1[8] = uVar13;\n          pvVar14 = realloc(__ptr,uVar13);\n          if (pvVar14 != (void *)0x0) {\n            param_1[5] = (int)pvVar14;\n            if ((__ptr != pvVar14) && (bVar3 = true, (*(byte *)(param_1 + 0xb) & 4) != 0)) {\n              local_a4 = (undefined1 *)((int)pvVar14 + local_d0);\n            }\n            local_b0 = param_1[8] - local_d0;\n            goto LAB_000253d8;\n          }\n          free((void *)param_1[5]);\n          param_1[5] = 0;\n          iVar15 = *piVar9;\n        }\n        goto LAB_000255a6;\n      }\nLAB_000253d8:\n      if (CARRY4(__n,local_d0)) {\n        free(pvVar11);\n        if (local_b8 != (void *)0x0) {\n          pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n          pvVar11 = *(void **)((int)local_b8 + 8);\n          if (pDVar21 == (DIR *)0x0) goto LAB_00025e84;\n          do {\n            closedir(pDVar21);\n            free(local_b8);\n            local_b8 = pvVar11;\n            while( true ) {\n              if (local_b8 == (void *)0x0) goto LAB_00025e94;\n              pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n              pvVar11 = *(void **)((int)local_b8 + 8);\n              if (pDVar21 != (DIR *)0x0) break;\nLAB_00025e84:\n              free(local_b8);\n              local_b8 = pvVar11;\n            }\n          } while( true );\n        }\nLAB_00025e94:\n        closedir(*(DIR **)(iVar2 + 0xc));\n        *(undefined4 *)(iVar2 + 0xc) = 0;\n        *(undefined2 *)(iVar2 + 0x3c) = 7;\n        local_b8 = (void *)0x0;\n        param_1[0xb] = param_1[0xb] | 0x4000;\n        *piVar9 = 0x24;\n        goto LAB_0002563f;\n      }\n      uVar12 = *(undefined4 *)((int)&pdVar10->d_ino + 4);\n      *(size_t *)((int)pvVar11 + 0x28) = __n + local_d0;\n      *(int *)((int)pvVar11 + 0x30) = iVar15 + 1;\n      *(int *)((int)pvVar11 + 4) = *param_1;\n      _Var5 = pdVar10->d_ino;\n      *(undefined4 *)((int)pvVar11 + 0xa0) = uVar12;\n      *(int *)((int)pvVar11 + 0x9c) = (int)_Var5;\n      uVar13 = param_1[0xb];\n      if ((uVar13 & 4) == 0) {\n        *(void **)((int)pvVar11 + 0x18) = pvVar1;\n      }\n      else {\n        *(undefined4 *)((int)pvVar11 + 0x18) = *(undefined4 *)((int)pvVar11 + 0x1c);\n        memmove(local_a4,pvVar1,*(int *)((int)pvVar11 + 0x34) + 1);\n        uVar13 = param_1[0xb];\n      }\n      if ((param_1[10] == 0) || ((uVar13 & 0x400) != 0)) {\n        uVar23 = pdVar10->d_type - 1;\n        if (((uVar13 & 0x18) == 0x18) && ((pdVar10->d_type & 0xfb) != 0)) {\n          *(undefined2 *)((int)pvVar11 + 0x3c) = 0xb;\n          if (uVar23 < 0xc) {\n            *(undefined4 *)((int)pvVar11 + 0x54) = *(undefined4 *)(&DAT_00031560 + uVar23 * 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 (uVar23 < 0xc) {\n            *(undefined4 *)((int)pvVar11 + 0x54) = *(undefined4 *)(&DAT_00031560 + uVar23 * 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        uVar8 = FUN_00024740();\n        *(undefined2 *)((int)pvVar11 + 0x3c) = uVar8;\n      }\n      *(undefined4 *)((int)pvVar11 + 8) = 0;\n      pvVar1 = pvVar11;\n      if (local_b8 != (void *)0x0) {\n        *(void **)((int)local_c4 + 8) = pvVar11;\n        pvVar1 = local_b8;\n      }\n      local_b8 = pvVar1;\n      local_c4 = pvVar11;\n      if (local_d4 == 10000) {\n        if (param_1[10] == 0) {\n          iVar17 = *(int *)(iVar2 + 0x2c);\n          if ((*(byte *)(iVar17 + 0x2d) & 2) != 0) {\n            iVar18 = *(int *)(iVar17 + 0x30);\n            if (iVar18 == 0) {\n              iVar18 = FUN_0001df90(0xd,0,FUN_000246b0,FUN_000246e0,puVar6);\n              *(int *)(iVar17 + 0x30) = iVar18;\n              if (iVar18 != 0) goto LAB_00025920;\nLAB_000259b0:\n              if ((local_9c < 0) ||\n                 (iVar19 = fstatfs64(local_9c,&local_74), iVar17 = local_74.f_type, iVar19 != 0))\n              goto LAB_00025a48;\n              local_d4 = local_74.f_type;\n              if ((iVar18 != 0) &&\n                 (__ptr_00 = (undefined4 *)malloc(0xc), __ptr_00 != (undefined4 *)0x0)) {\n                uVar12 = *(undefined4 *)(iVar2 + 0x44);\n                __ptr_00[1] = *(undefined4 *)(iVar2 + 0x48);\n                *__ptr_00 = uVar12;\n                __ptr_00[2] = iVar17;\n                puVar20 = (undefined4 *)FUN_0001e8d0(iVar18,__ptr_00);\n                if (puVar20 == (undefined4 *)0x0) {\n                  free(__ptr_00);\n                  local_d4 = local_74.f_type;\n                }\n                else {\n                  if (__ptr_00 != puVar20) {\n                    \n                    abort();\n                  }\n                  local_d4 = local_74.f_type;\n                }\n              }\n            }\n            else {\nLAB_00025920:\n              local_7c = *(undefined4 *)(iVar2 + 0x48);\n              local_80 = *(undefined4 *)(iVar2 + 0x44);\n              iVar17 = FUN_0001dce0(iVar18,&local_80);\n              if (iVar17 == 0) goto LAB_000259b0;\n              local_d4 = *(int *)(iVar17 + 8);\n            }\n            if (((local_d4 == 0x6969) || (local_d4 == 0x1021994)) || (local_d4 == -0xacb2be)) {\n              bVar4 = false;\n              goto LAB_00025473;\n            }\n          }\nLAB_00025a48:\n          bVar4 = true;\n        }\nLAB_00025473:\n        local_d4 = 0x2711;\n        goto LAB_000252fb;\n      }\n      local_d4 = local_d4 + 1;\n    } while (local_d4 < local_a8);\nLAB_000256de:\n    if (bVar3) {\n      iVar15 = param_1[5];\n      for (iVar17 = param_1[1]; iVar17 != 0; iVar17 = *(int *)(iVar17 + 8)) {\n        while (*(int *)(iVar17 + 0x18) != iVar17 + 0xa4) {\n          iVar18 = *(int *)(iVar17 + 0x1c);\n          *(int *)(iVar17 + 0x1c) = iVar15;\n          *(int *)(iVar17 + 0x18) = (*(int *)(iVar17 + 0x18) - iVar18) + iVar15;\n          iVar17 = *(int *)(iVar17 + 8);\n          if (iVar17 == 0) goto LAB_00025aef;\n        }\n        *(int *)(iVar17 + 0x1c) = iVar15;\n      }\nLAB_00025aef:\n      iVar17 = *(int *)((int)local_b8 + 0x30);\n      pvVar11 = local_b8;\n      while (-1 < iVar17) {\n        while( true ) {\n          if (*(int *)((int)pvVar11 + 0x18) != (int)pvVar11 + 0xa4) {\n            *(int *)((int)pvVar11 + 0x18) =\n                 (*(int *)((int)pvVar11 + 0x18) - *(int *)((int)pvVar11 + 0x1c)) + iVar15;\n          }\n          pvVar1 = *(void **)((int)pvVar11 + 8);\n          *(int *)((int)pvVar11 + 0x1c) = iVar15;\n          if (pvVar1 == (void *)0x0) break;\n          pvVar11 = pvVar1;\n          if (*(int *)((int)pvVar1 + 0x30) < 0) goto LAB_000256e9;\n        }\n        pvVar11 = *(void **)((int)pvVar11 + 4);\n        iVar17 = *(int *)((int)pvVar11 + 0x30);\n      }\n    }\nLAB_000256e9:\n    if ((*(byte *)(param_1 + 0xb) & 4) != 0) {\n      if ((param_1[8] == local_d0) || (local_d4 == 0)) {\n        local_a4 = local_a4 + -1;\n      }\n      *local_a4 = 0;\n    }\n    if ((pDVar21 == (DIR *)0x0) && (bVar25)) {\n      if ((param_2 == 1) || (local_d4 == 0)) {\n        if (*(int *)(iVar2 + 0x30) == 0) {\n          iVar15 = FUN_00024bb0();\n        }\n        else {\n          iVar15 = FUN_00024e60(&DAT_0002e141);\n        }\n        if (iVar15 != 0) {\n          *(undefined2 *)(iVar2 + 0x3c) = 7;\n          param_1[0xb] = param_1[0xb] | 0x4000;\n          while (pvVar11 = local_b8, local_b8 != (void *)0x0) {\n            while( true ) {\n              local_b8 = *(void **)((int)pvVar11 + 8);\n              if (*(DIR **)((int)pvVar11 + 0xc) == (DIR *)0x0) break;\n              closedir(*(DIR **)((int)pvVar11 + 0xc));\n              free(pvVar11);\n              pvVar11 = local_b8;\n              if (local_b8 == (void *)0x0) goto LAB_00025c40;\n            }\n            free(pvVar11);\n          }\n          goto LAB_00025c40;\n        }\n        goto LAB_0002574d;\n      }\n    }\n    else {\nLAB_0002574d:\n      if (local_d4 == 0) {\n        if (((param_2 == 3) && (*(short *)(iVar2 + 0x3c) != 4)) && (*(short *)(iVar2 + 0x3c) != 7))\n        {\n          *(undefined2 *)(iVar2 + 0x3c) = 6;\n        }\n        if (local_b8 != (void *)0x0) {\n          pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n          pvVar11 = *(void **)((int)local_b8 + 8);\n          if (pDVar21 == (DIR *)0x0) goto LAB_00025c94;\n          do {\n            closedir(pDVar21);\n            free(local_b8);\n            local_b8 = pvVar11;\n            while( true ) {\n              if (local_b8 == (void *)0x0) goto LAB_00025c40;\n              pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n              pvVar11 = *(void **)((int)local_b8 + 8);\n              if (pDVar21 != (DIR *)0x0) break;\nLAB_00025c94:\n              free(local_b8);\n              local_b8 = pvVar11;\n            }\n          } while( true );\n        }\n        goto LAB_00025c40;\n      }\n    }\n    if (bVar4) {\n      param_1[10] = (int)FUN_00024700;\n      local_b8 = (void *)FUN_000248e0();\n      param_1[10] = 0;\n    }\n    else if ((param_1[10] != 0) && (local_d4 != 1)) {\n      local_b8 = (void *)FUN_000248e0();\n    }\n  }\nLAB_0002563f:\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return local_b8;\n  }\n                    \n  FUN_0002d5d0();\n}" { (declaration "void *pvVar1;" primitive_type (pointer_declarator "*pvVar1" * identifier) ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "void *__ptr;" primitive_type (pointer_declarator "*__ptr" * identifier) ;) (declaration "bool bVar3;" primitive_type identifier ;) (declaration "bool bVar4;" primitive_type identifier ;) (declaration "__ino64_t _Var5;" type_identifier identifier ;) (declaration "undefined *puVar6;" type_identifier (pointer_declarator "*puVar6" * identifier) ;) (declaration "char cVar7;" primitive_type identifier ;) (declaration "undefined2 uVar8;" type_identifier identifier ;) (declaration "int *piVar9;" primitive_type (pointer_declarator "*piVar9" * identifier) ;) (declaration "dirent64 *pdVar10;" type_identifier (pointer_declarator "*pdVar10" * identifier) ;) (declaration "size_t __n;" primitive_type identifier ;) (declaration "void *pvVar11;" primitive_type (pointer_declarator "*pvVar11" * identifier) ;) (declaration "undefined4 uVar12;" type_identifier identifier ;) (declaration "uint uVar13;" type_identifier identifier ;) (declaration "void *pvVar14;" primitive_type (pointer_declarator "*pvVar14" * identifier) ;) (declaration "int iVar15;" primitive_type identifier ;) (declaration "DIR *pDVar16;" type_identifier (pointer_declarator "*pDVar16" * identifier) ;) (declaration "int iVar17;" primitive_type identifier ;) (declaration "int iVar18;" primitive_type identifier ;) (declaration "int iVar19;" primitive_type identifier ;) (declaration "undefined4 *__ptr_00;" type_identifier (pointer_declarator "*__ptr_00" * identifier) ;) (declaration "undefined4 *puVar20;" type_identifier (pointer_declarator "*puVar20" * identifier) ;) (declaration "DIR *pDVar21;" type_identifier (pointer_declarator "*pDVar21" * identifier) ;) (declaration "uint uVar22;" type_identifier identifier ;) (declaration "uint uVar23;" type_identifier identifier ;) (declaration "ushort uVar24;" type_identifier identifier ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "bool bVar25;" primitive_type identifier ;) (declaration "uint local_d4;" type_identifier identifier ;) (declaration "uint local_d0;" type_identifier identifier ;) (declaration "void *local_c4;" primitive_type (pointer_declarator "*local_c4" * identifier) ;) (declaration "void *local_b8;" primitive_type (pointer_declarator "*local_b8" * identifier) ;) (declaration "uint local_b0;" type_identifier identifier ;) (declaration "uint local_a8;" type_identifier identifier ;) (declaration "undefined1 *local_a4;" type_identifier (pointer_declarator "*local_a4" * identifier) ;) (declaration "int local_9c;" primitive_type identifier ;) (declaration "undefined4 local_80;" type_identifier identifier ;) (declaration "undefined4 local_7c;" type_identifier identifier ;) (declaration "statfs64 local_74;" type_identifier identifier ;) (declaration "int local_20;" primitive_type identifier ;) (declaration "undefined4 uStack_14;" type_identifier identifier ;) (expression_statement "uStack_14 = 0x251bb;" (assignment_expression "uStack_14 = 0x251bb" identifier = number_literal) ;) (expression_statement "local_20 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "local_20 = *(int *)(in_GS_OFFSET + 0x14)" identifier = (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) ;) (expression_statement "iVar2 = *param_1;" (assignment_expression "iVar2 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "pDVar21 = *(DIR **)(iVar2 + 0xc);" (assignment_expression "pDVar21 = *(DIR **)(iVar2 + 0xc)" identifier = (pointer_expression "*(DIR **)(iVar2 + 0xc)" * (cast_expression "(DIR **)(iVar2 + 0xc)" ( (type_descriptor "DIR **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar2 + 0xc)" ( (binary_expression "iVar2 + 0xc" identifier + number_literal) ))))) ;) (if_statement "if (pDVar21 == (DIR *)0x0) {\n    uVar13 = param_1[0xb];\n    uVar23 = uVar13 & 0x10;\n    if (((uVar23 != 0) && (uVar23 = 0x20000, (uVar13 & 1) != 0)) &&\n       (uVar23 = *(uint *)(iVar2 + 0x30), uVar23 != 0)) {\n      uVar23 = 0x20000;\n    }\n    iVar15 = -100;\n    if ((uVar13 & 0x204) == 0x200) {\n      iVar15 = param_1[7];\n    }\n    local_9c = FUN_00029520(iVar15,*(undefined4 *)(iVar2 + 0x18),\n                            (uVar13 & 0x800) << 7 | uVar23 | 0x90900);\n    if (local_9c < 0) {\n      *(undefined4 *)(iVar2 + 0xc) = 0;\n    }\n    else {\n      pDVar16 = fdopendir(local_9c);\n      if (pDVar16 != (DIR *)0x0) {\n        *(DIR **)(iVar2 + 0xc) = pDVar16;\n        if (*(short *)(iVar2 + 0x3c) == 0xb) {\n          uVar8 = FUN_00024740();\n          *(undefined2 *)(iVar2 + 0x3c) = uVar8;\n        }\n        else if ((param_1[0xb] & 0x100U) != 0) {\n          FUN_00024aa0();\n          FUN_00024740();\n          cVar7 = FUN_000249d0();\n          if (cVar7 == '\0') {\n            piVar9 = __errno_location();\n            local_b8 = (void *)0x0;\n            *piVar9 = 0xc;\n            goto LAB_0002563f;\n          }\n        }\n        local_a8 = (-(uint)(param_1[10] == 0) & 0x186a1) - 1;\n        if (param_2 == 2) {\nLAB_00025bc8:\n          bVar25 = false;\n          uVar13 = param_1[0xb];\n          goto LAB_00025223;\n        }\n        if ((((param_1[0xb] & 0x38U) == 0x18) && (*(int *)(iVar2 + 0x58) == 2)) &&\n           (iVar15 = FUN_00024ca0(), iVar15 != 0)) {\n          if (param_2 != 3) goto LAB_00025bc8;\n          bVar25 = false;\n        }\n        else {\n          bVar25 = param_2 == 3;\n        }\n        if (((*(byte *)((int)param_1 + 0x2d) & 2) == 0) ||\n           (local_9c = FUN_000243f0(local_9c,0x406,3), -1 < local_9c)) {\n          iVar15 = FUN_00024e60(0);\n          if (iVar15 == 0) goto LAB_0002521b;\n          pDVar16 = *(DIR **)(iVar2 + 0xc);\n          uVar24 = *(ushort *)(iVar2 + 0x3e) | 1;\n          if (bVar25) goto LAB_000258a0;\nLAB_000258ae:\n          *(ushort *)(iVar2 + 0x3e) = uVar24;\n          closedir(pDVar16);\n          *(undefined4 *)(iVar2 + 0xc) = 0;\n          uVar13 = param_1[0xb];\n          if (((uVar13 & 0x200) != 0) && (-1 < local_9c)) {\n            close(local_9c);\n            uVar13 = param_1[0xb];\n          }\n        }\n        else {\n          pDVar16 = *(DIR **)(iVar2 + 0xc);\n          uVar24 = *(ushort *)(iVar2 + 0x3e) | 1;\n          if (bVar25) {\nLAB_000258a0:\n            piVar9 = __errno_location();\n            *(int *)(iVar2 + 0x20) = *piVar9;\n            goto LAB_000258ae;\n          }\n          *(ushort *)(iVar2 + 0x3e) = uVar24;\n          closedir(pDVar16);\n          uVar13 = param_1[0xb];\n        }\n        bVar25 = false;\n        *(undefined4 *)(iVar2 + 0xc) = 0;\n        goto LAB_00025223;\n      }\n      piVar9 = __errno_location();\n      iVar15 = *piVar9;\n      close(local_9c);\n      *piVar9 = iVar15;\n      *(undefined4 *)(iVar2 + 0xc) = 0;\n    }\njoined_r0x00025c30:\n    if (param_2 == 3) {\n      *(undefined2 *)(iVar2 + 0x3c) = 4;\n      piVar9 = __errno_location();\n      *(int *)(iVar2 + 0x20) = *piVar9;\n    }\nLAB_00025c40:\n    local_b8 = (void *)0x0;\n  }\n  else {\n    local_9c = dirfd(pDVar21);\n    if (local_9c < 0) {\n      closedir(*(DIR **)(iVar2 + 0xc));\n      *(undefined4 *)(iVar2 + 0xc) = 0;\n      goto joined_r0x00025c30;\n    }\n    if (param_1[10] == 0) {\n      local_a8 = 100000;\n      uVar13 = param_1[0xb];\n      bVar25 = true;\n    }\n    else {\n      local_a8 = 0xffffffff;\nLAB_0002521b:\n      bVar25 = true;\n      uVar13 = param_1[0xb];\n    }\nLAB_00025223:\n    uVar23 = *(uint *)(iVar2 + 0x28);\n    uVar22 = uVar23 - 1;\n    local_d0 = uVar23;\n    if (*(char *)(*(int *)(iVar2 + 0x1c) + -1 + uVar23) != '/') {\n      local_d0 = uVar23 + 1;\n      uVar22 = uVar23;\n    }\n    local_a4 = (undefined1 *)0x0;\n    if ((uVar13 & 4) != 0) {\n      local_a4 = (undefined1 *)(uVar22 + param_1[5]) + 1;\n      *(undefined1 *)(uVar22 + param_1[5]) = 0x2f;\n    }\n    puVar6 = PTR_free_0003afa8;\n    local_b0 = param_1[8] - local_d0;\n    bVar4 = false;\n    bVar3 = false;\n    iVar15 = *(int *)(iVar2 + 0x30);\n    local_c4 = (void *)0x0;\n    local_d4 = 0;\n    local_b8 = (void *)0x0;\nLAB_000252fb:\n    do {\n      do {\n        pDVar16 = *(DIR **)(iVar2 + 0xc);\n        if (pDVar16 == (DIR *)0x0) goto LAB_000256de;\n        piVar9 = __errno_location();\n        *piVar9 = 0;\n        pdVar10 = readdir64(pDVar16);\n        if (pdVar10 == (dirent64 *)0x0) {\n          if (*piVar9 != 0) {\n            *(int *)(iVar2 + 0x20) = *piVar9;\n            *(ushort *)(iVar2 + 0x3c) =\n                 (-(ushort)(pDVar21 == (DIR *)0x0 && local_d4 == 0) & 0xfffd) + 7;\n          }\n          if (*(DIR **)(iVar2 + 0xc) != (DIR *)0x0) {\n            closedir(*(DIR **)(iVar2 + 0xc));\n            *(undefined4 *)(iVar2 + 0xc) = 0;\n          }\n          goto LAB_000256de;\n        }\n      } while ((((*(byte *)(param_1 + 0xb) & 0x20) == 0) && (pdVar10->d_name[0] == '.')) &&\n              ((pdVar10->d_name[1] == '\0' || (*(short *)(pdVar10->d_name + 1) == 0x2e))));\n      __n = strlen(pdVar10->d_name);\n      pvVar11 = malloc(__n + 0xa8 & 0xfffffffc);\n      if (pvVar11 == (void *)0x0) {\n        iVar15 = *piVar9;\nLAB_000255a6:\n        free(pvVar11);\n        if (local_b8 != (void *)0x0) {\n          pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n          pvVar11 = *(void **)((int)local_b8 + 8);\n          if (pDVar21 == (DIR *)0x0) goto LAB_000255f4;\n          do {\n            closedir(pDVar21);\n            free(local_b8);\n            local_b8 = pvVar11;\n            while( true ) {\n              if (local_b8 == (void *)0x0) goto LAB_00025608;\n              pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n              pvVar11 = *(void **)((int)local_b8 + 8);\n              if (pDVar21 != (DIR *)0x0) break;\nLAB_000255f4:\n              free(local_b8);\n              local_b8 = pvVar11;\n            }\n          } while( true );\n        }\nLAB_00025608:\n        closedir(*(DIR **)(iVar2 + 0xc));\n        *(undefined4 *)(iVar2 + 0xc) = 0;\n        *(undefined2 *)(iVar2 + 0x3c) = 7;\n        local_b8 = (void *)0x0;\n        param_1[0xb] = param_1[0xb] | 0x4000;\n        *piVar9 = iVar15;\n        goto LAB_0002563f;\n      }\n      pvVar1 = (void *)((int)pvVar11 + 0xa4);\n      memcpy(pvVar1,pdVar10->d_name,__n);\n      __ptr = (void *)param_1[5];\n      *(undefined1 *)((int)pvVar11 + __n + 0xa4) = 0;\n      *(size_t *)((int)pvVar11 + 0x34) = __n;\n      *(int **)((int)pvVar11 + 0x2c) = param_1;\n      *(void **)((int)pvVar11 + 0x1c) = __ptr;\n      *(undefined4 *)((int)pvVar11 + 0x20) = 0;\n      *(undefined4 *)((int)pvVar11 + 0xc) = 0;\n      *(undefined4 *)((int)pvVar11 + 0x3e) = 0x30000;\n      *(undefined4 *)((int)pvVar11 + 0x10) = 0;\n      *(undefined4 *)((int)pvVar11 + 0x14) = 0;\n      if (local_b0 <= __n) {\n        uVar13 = local_d0 + 0x101 + param_1[8] + __n;\n        if (uVar13 < (uint)param_1[8]) {\n          iVar15 = 0x24;\n          free(__ptr);\n          param_1[5] = 0;\n          *piVar9 = 0x24;\n        }\n        else {\n          param_1[8] = uVar13;\n          pvVar14 = realloc(__ptr,uVar13);\n          if (pvVar14 != (void *)0x0) {\n            param_1[5] = (int)pvVar14;\n            if ((__ptr != pvVar14) && (bVar3 = true, (*(byte *)(param_1 + 0xb) & 4) != 0)) {\n              local_a4 = (undefined1 *)((int)pvVar14 + local_d0);\n            }\n            local_b0 = param_1[8] - local_d0;\n            goto LAB_000253d8;\n          }\n          free((void *)param_1[5]);\n          param_1[5] = 0;\n          iVar15 = *piVar9;\n        }\n        goto LAB_000255a6;\n      }\nLAB_000253d8:\n      if (CARRY4(__n,local_d0)) {\n        free(pvVar11);\n        if (local_b8 != (void *)0x0) {\n          pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n          pvVar11 = *(void **)((int)local_b8 + 8);\n          if (pDVar21 == (DIR *)0x0) goto LAB_00025e84;\n          do {\n            closedir(pDVar21);\n            free(local_b8);\n            local_b8 = pvVar11;\n            while( true ) {\n              if (local_b8 == (void *)0x0) goto LAB_00025e94;\n              pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n              pvVar11 = *(void **)((int)local_b8 + 8);\n              if (pDVar21 != (DIR *)0x0) break;\nLAB_00025e84:\n              free(local_b8);\n              local_b8 = pvVar11;\n            }\n          } while( true );\n        }\nLAB_00025e94:\n        closedir(*(DIR **)(iVar2 + 0xc));\n        *(undefined4 *)(iVar2 + 0xc) = 0;\n        *(undefined2 *)(iVar2 + 0x3c) = 7;\n        local_b8 = (void *)0x0;\n        param_1[0xb] = param_1[0xb] | 0x4000;\n        *piVar9 = 0x24;\n        goto LAB_0002563f;\n      }\n      uVar12 = *(undefined4 *)((int)&pdVar10->d_ino + 4);\n      *(size_t *)((int)pvVar11 + 0x28) = __n + local_d0;\n      *(int *)((int)pvVar11 + 0x30) = iVar15 + 1;\n      *(int *)((int)pvVar11 + 4) = *param_1;\n      _Var5 = pdVar10->d_ino;\n      *(undefined4 *)((int)pvVar11 + 0xa0) = uVar12;\n      *(int *)((int)pvVar11 + 0x9c) = (int)_Var5;\n      uVar13 = param_1[0xb];\n      if ((uVar13 & 4) == 0) {\n        *(void **)((int)pvVar11 + 0x18) = pvVar1;\n      }\n      else {\n        *(undefined4 *)((int)pvVar11 + 0x18) = *(undefined4 *)((int)pvVar11 + 0x1c);\n        memmove(local_a4,pvVar1,*(int *)((int)pvVar11 + 0x34) + 1);\n        uVar13 = param_1[0xb];\n      }\n      if ((param_1[10] == 0) || ((uVar13 & 0x400) != 0)) {\n        uVar23 = pdVar10->d_type - 1;\n        if (((uVar13 & 0x18) == 0x18) && ((pdVar10->d_type & 0xfb) != 0)) {\n          *(undefined2 *)((int)pvVar11 + 0x3c) = 0xb;\n          if (uVar23 < 0xc) {\n            *(undefined4 *)((int)pvVar11 + 0x54) = *(undefined4 *)(&DAT_00031560 + uVar23 * 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 (uVar23 < 0xc) {\n            *(undefined4 *)((int)pvVar11 + 0x54) = *(undefined4 *)(&DAT_00031560 + uVar23 * 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        uVar8 = FUN_00024740();\n        *(undefined2 *)((int)pvVar11 + 0x3c) = uVar8;\n      }\n      *(undefined4 *)((int)pvVar11 + 8) = 0;\n      pvVar1 = pvVar11;\n      if (local_b8 != (void *)0x0) {\n        *(void **)((int)local_c4 + 8) = pvVar11;\n        pvVar1 = local_b8;\n      }\n      local_b8 = pvVar1;\n      local_c4 = pvVar11;\n      if (local_d4 == 10000) {\n        if (param_1[10] == 0) {\n          iVar17 = *(int *)(iVar2 + 0x2c);\n          if ((*(byte *)(iVar17 + 0x2d) & 2) != 0) {\n            iVar18 = *(int *)(iVar17 + 0x30);\n            if (iVar18 == 0) {\n              iVar18 = FUN_0001df90(0xd,0,FUN_000246b0,FUN_000246e0,puVar6);\n              *(int *)(iVar17 + 0x30) = iVar18;\n              if (iVar18 != 0) goto LAB_00025920;\nLAB_000259b0:\n              if ((local_9c < 0) ||\n                 (iVar19 = fstatfs64(local_9c,&local_74), iVar17 = local_74.f_type, iVar19 != 0))\n              goto LAB_00025a48;\n              local_d4 = local_74.f_type;\n              if ((iVar18 != 0) &&\n                 (__ptr_00 = (undefined4 *)malloc(0xc), __ptr_00 != (undefined4 *)0x0)) {\n                uVar12 = *(undefined4 *)(iVar2 + 0x44);\n                __ptr_00[1] = *(undefined4 *)(iVar2 + 0x48);\n                *__ptr_00 = uVar12;\n                __ptr_00[2] = iVar17;\n                puVar20 = (undefined4 *)FUN_0001e8d0(iVar18,__ptr_00);\n                if (puVar20 == (undefined4 *)0x0) {\n                  free(__ptr_00);\n                  local_d4 = local_74.f_type;\n                }\n                else {\n                  if (__ptr_00 != puVar20) {\n                    \n                    abort();\n                  }\n                  local_d4 = local_74.f_type;\n                }\n              }\n            }\n            else {\nLAB_00025920:\n              local_7c = *(undefined4 *)(iVar2 + 0x48);\n              local_80 = *(undefined4 *)(iVar2 + 0x44);\n              iVar17 = FUN_0001dce0(iVar18,&local_80);\n              if (iVar17 == 0) goto LAB_000259b0;\n              local_d4 = *(int *)(iVar17 + 8);\n            }\n            if (((local_d4 == 0x6969) || (local_d4 == 0x1021994)) || (local_d4 == -0xacb2be)) {\n              bVar4 = false;\n              goto LAB_00025473;\n            }\n          }\nLAB_00025a48:\n          bVar4 = true;\n        }\nLAB_00025473:\n        local_d4 = 0x2711;\n        goto LAB_000252fb;\n      }\n      local_d4 = local_d4 + 1;\n    } while (local_d4 < local_a8);\nLAB_000256de:\n    if (bVar3) {\n      iVar15 = param_1[5];\n      for (iVar17 = param_1[1]; iVar17 != 0; iVar17 = *(int *)(iVar17 + 8)) {\n        while (*(int *)(iVar17 + 0x18) != iVar17 + 0xa4) {\n          iVar18 = *(int *)(iVar17 + 0x1c);\n          *(int *)(iVar17 + 0x1c) = iVar15;\n          *(int *)(iVar17 + 0x18) = (*(int *)(iVar17 + 0x18) - iVar18) + iVar15;\n          iVar17 = *(int *)(iVar17 + 8);\n          if (iVar17 == 0) goto LAB_00025aef;\n        }\n        *(int *)(iVar17 + 0x1c) = iVar15;\n      }\nLAB_00025aef:\n      iVar17 = *(int *)((int)local_b8 + 0x30);\n      pvVar11 = local_b8;\n      while (-1 < iVar17) {\n        while( true ) {\n          if (*(int *)((int)pvVar11 + 0x18) != (int)pvVar11 + 0xa4) {\n            *(int *)((int)pvVar11 + 0x18) =\n                 (*(int *)((int)pvVar11 + 0x18) - *(int *)((int)pvVar11 + 0x1c)) + iVar15;\n          }\n          pvVar1 = *(void **)((int)pvVar11 + 8);\n          *(int *)((int)pvVar11 + 0x1c) = iVar15;\n          if (pvVar1 == (void *)0x0) break;\n          pvVar11 = pvVar1;\n          if (*(int *)((int)pvVar1 + 0x30) < 0) goto LAB_000256e9;\n        }\n        pvVar11 = *(void **)((int)pvVar11 + 4);\n        iVar17 = *(int *)((int)pvVar11 + 0x30);\n      }\n    }\nLAB_000256e9:\n    if ((*(byte *)(param_1 + 0xb) & 4) != 0) {\n      if ((param_1[8] == local_d0) || (local_d4 == 0)) {\n        local_a4 = local_a4 + -1;\n      }\n      *local_a4 = 0;\n    }\n    if ((pDVar21 == (DIR *)0x0) && (bVar25)) {\n      if ((param_2 == 1) || (local_d4 == 0)) {\n        if (*(int *)(iVar2 + 0x30) == 0) {\n          iVar15 = FUN_00024bb0();\n        }\n        else {\n          iVar15 = FUN_00024e60(&DAT_0002e141);\n        }\n        if (iVar15 != 0) {\n          *(undefined2 *)(iVar2 + 0x3c) = 7;\n          param_1[0xb] = param_1[0xb] | 0x4000;\n          while (pvVar11 = local_b8, local_b8 != (void *)0x0) {\n            while( true ) {\n              local_b8 = *(void **)((int)pvVar11 + 8);\n              if (*(DIR **)((int)pvVar11 + 0xc) == (DIR *)0x0) break;\n              closedir(*(DIR **)((int)pvVar11 + 0xc));\n              free(pvVar11);\n              pvVar11 = local_b8;\n              if (local_b8 == (void *)0x0) goto LAB_00025c40;\n            }\n            free(pvVar11);\n          }\n          goto LAB_00025c40;\n        }\n        goto LAB_0002574d;\n      }\n    }\n    else {\nLAB_0002574d:\n      if (local_d4 == 0) {\n        if (((param_2 == 3) && (*(short *)(iVar2 + 0x3c) != 4)) && (*(short *)(iVar2 + 0x3c) != 7))\n        {\n          *(undefined2 *)(iVar2 + 0x3c) = 6;\n        }\n        if (local_b8 != (void *)0x0) {\n          pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n          pvVar11 = *(void **)((int)local_b8 + 8);\n          if (pDVar21 == (DIR *)0x0) goto LAB_00025c94;\n          do {\n            closedir(pDVar21);\n            free(local_b8);\n            local_b8 = pvVar11;\n            while( true ) {\n              if (local_b8 == (void *)0x0) goto LAB_00025c40;\n              pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n              pvVar11 = *(void **)((int)local_b8 + 8);\n              if (pDVar21 != (DIR *)0x0) break;\nLAB_00025c94:\n              free(local_b8);\n              local_b8 = pvVar11;\n            }\n          } while( true );\n        }\n        goto LAB_00025c40;\n      }\n    }\n    if (bVar4) {\n      param_1[10] = (int)FUN_00024700;\n      local_b8 = (void *)FUN_000248e0();\n      param_1[10] = 0;\n    }\n    else if ((param_1[10] != 0) && (local_d4 != 1)) {\n      local_b8 = (void *)FUN_000248e0();\n    }\n  }" if (parenthesized_expression "(pDVar21 == (DIR *)0x0)" ( (binary_expression "pDVar21 == (DIR *)0x0" identifier == (cast_expression "(DIR *)0x0" ( (type_descriptor "DIR *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    uVar13 = param_1[0xb];\n    uVar23 = uVar13 & 0x10;\n    if (((uVar23 != 0) && (uVar23 = 0x20000, (uVar13 & 1) != 0)) &&\n       (uVar23 = *(uint *)(iVar2 + 0x30), uVar23 != 0)) {\n      uVar23 = 0x20000;\n    }\n    iVar15 = -100;\n    if ((uVar13 & 0x204) == 0x200) {\n      iVar15 = param_1[7];\n    }\n    local_9c = FUN_00029520(iVar15,*(undefined4 *)(iVar2 + 0x18),\n                            (uVar13 & 0x800) << 7 | uVar23 | 0x90900);\n    if (local_9c < 0) {\n      *(undefined4 *)(iVar2 + 0xc) = 0;\n    }\n    else {\n      pDVar16 = fdopendir(local_9c);\n      if (pDVar16 != (DIR *)0x0) {\n        *(DIR **)(iVar2 + 0xc) = pDVar16;\n        if (*(short *)(iVar2 + 0x3c) == 0xb) {\n          uVar8 = FUN_00024740();\n          *(undefined2 *)(iVar2 + 0x3c) = uVar8;\n        }\n        else if ((param_1[0xb] & 0x100U) != 0) {\n          FUN_00024aa0();\n          FUN_00024740();\n          cVar7 = FUN_000249d0();\n          if (cVar7 == '\0') {\n            piVar9 = __errno_location();\n            local_b8 = (void *)0x0;\n            *piVar9 = 0xc;\n            goto LAB_0002563f;\n          }\n        }\n        local_a8 = (-(uint)(param_1[10] == 0) & 0x186a1) - 1;\n        if (param_2 == 2) {\nLAB_00025bc8:\n          bVar25 = false;\n          uVar13 = param_1[0xb];\n          goto LAB_00025223;\n        }\n        if ((((param_1[0xb] & 0x38U) == 0x18) && (*(int *)(iVar2 + 0x58) == 2)) &&\n           (iVar15 = FUN_00024ca0(), iVar15 != 0)) {\n          if (param_2 != 3) goto LAB_00025bc8;\n          bVar25 = false;\n        }\n        else {\n          bVar25 = param_2 == 3;\n        }\n        if (((*(byte *)((int)param_1 + 0x2d) & 2) == 0) ||\n           (local_9c = FUN_000243f0(local_9c,0x406,3), -1 < local_9c)) {\n          iVar15 = FUN_00024e60(0);\n          if (iVar15 == 0) goto LAB_0002521b;\n          pDVar16 = *(DIR **)(iVar2 + 0xc);\n          uVar24 = *(ushort *)(iVar2 + 0x3e) | 1;\n          if (bVar25) goto LAB_000258a0;\nLAB_000258ae:\n          *(ushort *)(iVar2 + 0x3e) = uVar24;\n          closedir(pDVar16);\n          *(undefined4 *)(iVar2 + 0xc) = 0;\n          uVar13 = param_1[0xb];\n          if (((uVar13 & 0x200) != 0) && (-1 < local_9c)) {\n            close(local_9c);\n            uVar13 = param_1[0xb];\n          }\n        }\n        else {\n          pDVar16 = *(DIR **)(iVar2 + 0xc);\n          uVar24 = *(ushort *)(iVar2 + 0x3e) | 1;\n          if (bVar25) {\nLAB_000258a0:\n            piVar9 = __errno_location();\n            *(int *)(iVar2 + 0x20) = *piVar9;\n            goto LAB_000258ae;\n          }\n          *(ushort *)(iVar2 + 0x3e) = uVar24;\n          closedir(pDVar16);\n          uVar13 = param_1[0xb];\n        }\n        bVar25 = false;\n        *(undefined4 *)(iVar2 + 0xc) = 0;\n        goto LAB_00025223;\n      }\n      piVar9 = __errno_location();\n      iVar15 = *piVar9;\n      close(local_9c);\n      *piVar9 = iVar15;\n      *(undefined4 *)(iVar2 + 0xc) = 0;\n    }\njoined_r0x00025c30:\n    if (param_2 == 3) {\n      *(undefined2 *)(iVar2 + 0x3c) = 4;\n      piVar9 = __errno_location();\n      *(int *)(iVar2 + 0x20) = *piVar9;\n    }\nLAB_00025c40:\n    local_b8 = (void *)0x0;\n  }" { (expression_statement "uVar13 = param_1[0xb];" (assignment_expression "uVar13 = param_1[0xb]" identifier = (subscript_expression "param_1[0xb]" identifier [ number_literal ])) ;) (expression_statement "uVar23 = uVar13 & 0x10;" (assignment_expression "uVar23 = uVar13 & 0x10" identifier = (binary_expression "uVar13 & 0x10" identifier & number_literal)) ;) (if_statement "if (((uVar23 != 0) && (uVar23 = 0x20000, (uVar13 & 1) != 0)) &&\n       (uVar23 = *(uint *)(iVar2 + 0x30), uVar23 != 0)) {\n      uVar23 = 0x20000;\n    }" if (parenthesized_expression "(((uVar23 != 0) && (uVar23 = 0x20000, (uVar13 & 1) != 0)) &&\n       (uVar23 = *(uint *)(iVar2 + 0x30), uVar23 != 0))" ( (binary_expression "((uVar23 != 0) && (uVar23 = 0x20000, (uVar13 & 1) != 0)) &&\n       (uVar23 = *(uint *)(iVar2 + 0x30), uVar23 != 0)" (parenthesized_expression "((uVar23 != 0) && (uVar23 = 0x20000, (uVar13 & 1) != 0))" ( (binary_expression "(uVar23 != 0) && (uVar23 = 0x20000, (uVar13 & 1) != 0)" (parenthesized_expression "(uVar23 != 0)" ( (binary_expression "uVar23 != 0" identifier != number_literal) )) && (parenthesized_expression "(uVar23 = 0x20000, (uVar13 & 1) != 0)" ( (comma_expression "uVar23 = 0x20000, (uVar13 & 1) != 0" (assignment_expression "uVar23 = 0x20000" identifier = number_literal) , (binary_expression "(uVar13 & 1) != 0" (parenthesized_expression "(uVar13 & 1)" ( (binary_expression "uVar13 & 1" identifier & number_literal) )) != number_literal)) ))) )) && (parenthesized_expression "(uVar23 = *(uint *)(iVar2 + 0x30), uVar23 != 0)" ( (comma_expression "uVar23 = *(uint *)(iVar2 + 0x30), uVar23 != 0" (assignment_expression "uVar23 = *(uint *)(iVar2 + 0x30)" identifier = (pointer_expression "*(uint *)(iVar2 + 0x30)" * (cast_expression "(uint *)(iVar2 + 0x30)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x30)" ( (binary_expression "iVar2 + 0x30" identifier + number_literal) ))))) , (binary_expression "uVar23 != 0" identifier != number_literal)) ))) )) (compound_statement "{\n      uVar23 = 0x20000;\n    }" { (expression_statement "uVar23 = 0x20000;" (assignment_expression "uVar23 = 0x20000" identifier = number_literal) ;) })) (expression_statement "iVar15 = -100;" (assignment_expression "iVar15 = -100" identifier = number_literal) ;) (if_statement "if ((uVar13 & 0x204) == 0x200) {\n      iVar15 = param_1[7];\n    }" if (parenthesized_expression "((uVar13 & 0x204) == 0x200)" ( (binary_expression "(uVar13 & 0x204) == 0x200" (parenthesized_expression "(uVar13 & 0x204)" ( (binary_expression "uVar13 & 0x204" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n      iVar15 = param_1[7];\n    }" { (expression_statement "iVar15 = param_1[7];" (assignment_expression "iVar15 = param_1[7]" identifier = (subscript_expression "param_1[7]" identifier [ number_literal ])) ;) })) (expression_statement "local_9c = FUN_00029520(iVar15,*(undefined4 *)(iVar2 + 0x18),\n                            (uVar13 & 0x800) << 7 | uVar23 | 0x90900);" (assignment_expression "local_9c = FUN_00029520(iVar15,*(undefined4 *)(iVar2 + 0x18),\n                            (uVar13 & 0x800) << 7 | uVar23 | 0x90900)" identifier = (call_expression "FUN_00029520(iVar15,*(undefined4 *)(iVar2 + 0x18),\n                            (uVar13 & 0x800) << 7 | uVar23 | 0x90900)" identifier (argument_list "(iVar15,*(undefined4 *)(iVar2 + 0x18),\n                            (uVar13 & 0x800) << 7 | uVar23 | 0x90900)" ( identifier , (pointer_expression "*(undefined4 *)(iVar2 + 0x18)" * (cast_expression "(undefined4 *)(iVar2 + 0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x18)" ( (binary_expression "iVar2 + 0x18" identifier + number_literal) )))) , (binary_expression "(uVar13 & 0x800) << 7 | uVar23 | 0x90900" (binary_expression "(uVar13 & 0x800) << 7 | uVar23" (binary_expression "(uVar13 & 0x800) << 7" (parenthesized_expression "(uVar13 & 0x800)" ( (binary_expression "uVar13 & 0x800" identifier & number_literal) )) << number_literal) | identifier) | number_literal) )))) ;) (if_statement "if (local_9c < 0) {\n      *(undefined4 *)(iVar2 + 0xc) = 0;\n    }\n    else {\n      pDVar16 = fdopendir(local_9c);\n      if (pDVar16 != (DIR *)0x0) {\n        *(DIR **)(iVar2 + 0xc) = pDVar16;\n        if (*(short *)(iVar2 + 0x3c) == 0xb) {\n          uVar8 = FUN_00024740();\n          *(undefined2 *)(iVar2 + 0x3c) = uVar8;\n        }\n        else if ((param_1[0xb] & 0x100U) != 0) {\n          FUN_00024aa0();\n          FUN_00024740();\n          cVar7 = FUN_000249d0();\n          if (cVar7 == '\0') {\n            piVar9 = __errno_location();\n            local_b8 = (void *)0x0;\n            *piVar9 = 0xc;\n            goto LAB_0002563f;\n          }\n        }\n        local_a8 = (-(uint)(param_1[10] == 0) & 0x186a1) - 1;\n        if (param_2 == 2) {\nLAB_00025bc8:\n          bVar25 = false;\n          uVar13 = param_1[0xb];\n          goto LAB_00025223;\n        }\n        if ((((param_1[0xb] & 0x38U) == 0x18) && (*(int *)(iVar2 + 0x58) == 2)) &&\n           (iVar15 = FUN_00024ca0(), iVar15 != 0)) {\n          if (param_2 != 3) goto LAB_00025bc8;\n          bVar25 = false;\n        }\n        else {\n          bVar25 = param_2 == 3;\n        }\n        if (((*(byte *)((int)param_1 + 0x2d) & 2) == 0) ||\n           (local_9c = FUN_000243f0(local_9c,0x406,3), -1 < local_9c)) {\n          iVar15 = FUN_00024e60(0);\n          if (iVar15 == 0) goto LAB_0002521b;\n          pDVar16 = *(DIR **)(iVar2 + 0xc);\n          uVar24 = *(ushort *)(iVar2 + 0x3e) | 1;\n          if (bVar25) goto LAB_000258a0;\nLAB_000258ae:\n          *(ushort *)(iVar2 + 0x3e) = uVar24;\n          closedir(pDVar16);\n          *(undefined4 *)(iVar2 + 0xc) = 0;\n          uVar13 = param_1[0xb];\n          if (((uVar13 & 0x200) != 0) && (-1 < local_9c)) {\n            close(local_9c);\n            uVar13 = param_1[0xb];\n          }\n        }\n        else {\n          pDVar16 = *(DIR **)(iVar2 + 0xc);\n          uVar24 = *(ushort *)(iVar2 + 0x3e) | 1;\n          if (bVar25) {\nLAB_000258a0:\n            piVar9 = __errno_location();\n            *(int *)(iVar2 + 0x20) = *piVar9;\n            goto LAB_000258ae;\n          }\n          *(ushort *)(iVar2 + 0x3e) = uVar24;\n          closedir(pDVar16);\n          uVar13 = param_1[0xb];\n        }\n        bVar25 = false;\n        *(undefined4 *)(iVar2 + 0xc) = 0;\n        goto LAB_00025223;\n      }\n      piVar9 = __errno_location();\n      iVar15 = *piVar9;\n      close(local_9c);\n      *piVar9 = iVar15;\n      *(undefined4 *)(iVar2 + 0xc) = 0;\n    }" if (parenthesized_expression "(local_9c < 0)" ( (binary_expression "local_9c < 0" identifier < number_literal) )) (compound_statement "{\n      *(undefined4 *)(iVar2 + 0xc) = 0;\n    }" { (expression_statement "*(undefined4 *)(iVar2 + 0xc) = 0;" (assignment_expression "*(undefined4 *)(iVar2 + 0xc) = 0" (pointer_expression "*(undefined4 *)(iVar2 + 0xc)" * (cast_expression "(undefined4 *)(iVar2 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0xc)" ( (binary_expression "iVar2 + 0xc" identifier + number_literal) )))) = number_literal) ;) }) (else_clause "else {\n      pDVar16 = fdopendir(local_9c);\n      if (pDVar16 != (DIR *)0x0) {\n        *(DIR **)(iVar2 + 0xc) = pDVar16;\n        if (*(short *)(iVar2 + 0x3c) == 0xb) {\n          uVar8 = FUN_00024740();\n          *(undefined2 *)(iVar2 + 0x3c) = uVar8;\n        }\n        else if ((param_1[0xb] & 0x100U) != 0) {\n          FUN_00024aa0();\n          FUN_00024740();\n          cVar7 = FUN_000249d0();\n          if (cVar7 == '\0') {\n            piVar9 = __errno_location();\n            local_b8 = (void *)0x0;\n            *piVar9 = 0xc;\n            goto LAB_0002563f;\n          }\n        }\n        local_a8 = (-(uint)(param_1[10] == 0) & 0x186a1) - 1;\n        if (param_2 == 2) {\nLAB_00025bc8:\n          bVar25 = false;\n          uVar13 = param_1[0xb];\n          goto LAB_00025223;\n        }\n        if ((((param_1[0xb] & 0x38U) == 0x18) && (*(int *)(iVar2 + 0x58) == 2)) &&\n           (iVar15 = FUN_00024ca0(), iVar15 != 0)) {\n          if (param_2 != 3) goto LAB_00025bc8;\n          bVar25 = false;\n        }\n        else {\n          bVar25 = param_2 == 3;\n        }\n        if (((*(byte *)((int)param_1 + 0x2d) & 2) == 0) ||\n           (local_9c = FUN_000243f0(local_9c,0x406,3), -1 < local_9c)) {\n          iVar15 = FUN_00024e60(0);\n          if (iVar15 == 0) goto LAB_0002521b;\n          pDVar16 = *(DIR **)(iVar2 + 0xc);\n          uVar24 = *(ushort *)(iVar2 + 0x3e) | 1;\n          if (bVar25) goto LAB_000258a0;\nLAB_000258ae:\n          *(ushort *)(iVar2 + 0x3e) = uVar24;\n          closedir(pDVar16);\n          *(undefined4 *)(iVar2 + 0xc) = 0;\n          uVar13 = param_1[0xb];\n          if (((uVar13 & 0x200) != 0) && (-1 < local_9c)) {\n            close(local_9c);\n            uVar13 = param_1[0xb];\n          }\n        }\n        else {\n          pDVar16 = *(DIR **)(iVar2 + 0xc);\n          uVar24 = *(ushort *)(iVar2 + 0x3e) | 1;\n          if (bVar25) {\nLAB_000258a0:\n            piVar9 = __errno_location();\n            *(int *)(iVar2 + 0x20) = *piVar9;\n            goto LAB_000258ae;\n          }\n          *(ushort *)(iVar2 + 0x3e) = uVar24;\n          closedir(pDVar16);\n          uVar13 = param_1[0xb];\n        }\n        bVar25 = false;\n        *(undefined4 *)(iVar2 + 0xc) = 0;\n        goto LAB_00025223;\n      }\n      piVar9 = __errno_location();\n      iVar15 = *piVar9;\n      close(local_9c);\n      *piVar9 = iVar15;\n      *(undefined4 *)(iVar2 + 0xc) = 0;\n    }" else (compound_statement "{\n      pDVar16 = fdopendir(local_9c);\n      if (pDVar16 != (DIR *)0x0) {\n        *(DIR **)(iVar2 + 0xc) = pDVar16;\n        if (*(short *)(iVar2 + 0x3c) == 0xb) {\n          uVar8 = FUN_00024740();\n          *(undefined2 *)(iVar2 + 0x3c) = uVar8;\n        }\n        else if ((param_1[0xb] & 0x100U) != 0) {\n          FUN_00024aa0();\n          FUN_00024740();\n          cVar7 = FUN_000249d0();\n          if (cVar7 == '\0') {\n            piVar9 = __errno_location();\n            local_b8 = (void *)0x0;\n            *piVar9 = 0xc;\n            goto LAB_0002563f;\n          }\n        }\n        local_a8 = (-(uint)(param_1[10] == 0) & 0x186a1) - 1;\n        if (param_2 == 2) {\nLAB_00025bc8:\n          bVar25 = false;\n          uVar13 = param_1[0xb];\n          goto LAB_00025223;\n        }\n        if ((((param_1[0xb] & 0x38U) == 0x18) && (*(int *)(iVar2 + 0x58) == 2)) &&\n           (iVar15 = FUN_00024ca0(), iVar15 != 0)) {\n          if (param_2 != 3) goto LAB_00025bc8;\n          bVar25 = false;\n        }\n        else {\n          bVar25 = param_2 == 3;\n        }\n        if (((*(byte *)((int)param_1 + 0x2d) & 2) == 0) ||\n           (local_9c = FUN_000243f0(local_9c,0x406,3), -1 < local_9c)) {\n          iVar15 = FUN_00024e60(0);\n          if (iVar15 == 0) goto LAB_0002521b;\n          pDVar16 = *(DIR **)(iVar2 + 0xc);\n          uVar24 = *(ushort *)(iVar2 + 0x3e) | 1;\n          if (bVar25) goto LAB_000258a0;\nLAB_000258ae:\n          *(ushort *)(iVar2 + 0x3e) = uVar24;\n          closedir(pDVar16);\n          *(undefined4 *)(iVar2 + 0xc) = 0;\n          uVar13 = param_1[0xb];\n          if (((uVar13 & 0x200) != 0) && (-1 < local_9c)) {\n            close(local_9c);\n            uVar13 = param_1[0xb];\n          }\n        }\n        else {\n          pDVar16 = *(DIR **)(iVar2 + 0xc);\n          uVar24 = *(ushort *)(iVar2 + 0x3e) | 1;\n          if (bVar25) {\nLAB_000258a0:\n            piVar9 = __errno_location();\n            *(int *)(iVar2 + 0x20) = *piVar9;\n            goto LAB_000258ae;\n          }\n          *(ushort *)(iVar2 + 0x3e) = uVar24;\n          closedir(pDVar16);\n          uVar13 = param_1[0xb];\n        }\n        bVar25 = false;\n        *(undefined4 *)(iVar2 + 0xc) = 0;\n        goto LAB_00025223;\n      }\n      piVar9 = __errno_location();\n      iVar15 = *piVar9;\n      close(local_9c);\n      *piVar9 = iVar15;\n      *(undefined4 *)(iVar2 + 0xc) = 0;\n    }" { (expression_statement "pDVar16 = fdopendir(local_9c);" (assignment_expression "pDVar16 = fdopendir(local_9c)" identifier = (call_expression "fdopendir(local_9c)" identifier (argument_list "(local_9c)" ( identifier )))) ;) (if_statement "if (pDVar16 != (DIR *)0x0) {\n        *(DIR **)(iVar2 + 0xc) = pDVar16;\n        if (*(short *)(iVar2 + 0x3c) == 0xb) {\n          uVar8 = FUN_00024740();\n          *(undefined2 *)(iVar2 + 0x3c) = uVar8;\n        }\n        else if ((param_1[0xb] & 0x100U) != 0) {\n          FUN_00024aa0();\n          FUN_00024740();\n          cVar7 = FUN_000249d0();\n          if (cVar7 == '\0') {\n            piVar9 = __errno_location();\n            local_b8 = (void *)0x0;\n            *piVar9 = 0xc;\n            goto LAB_0002563f;\n          }\n        }\n        local_a8 = (-(uint)(param_1[10] == 0) & 0x186a1) - 1;\n        if (param_2 == 2) {\nLAB_00025bc8:\n          bVar25 = false;\n          uVar13 = param_1[0xb];\n          goto LAB_00025223;\n        }\n        if ((((param_1[0xb] & 0x38U) == 0x18) && (*(int *)(iVar2 + 0x58) == 2)) &&\n           (iVar15 = FUN_00024ca0(), iVar15 != 0)) {\n          if (param_2 != 3) goto LAB_00025bc8;\n          bVar25 = false;\n        }\n        else {\n          bVar25 = param_2 == 3;\n        }\n        if (((*(byte *)((int)param_1 + 0x2d) & 2) == 0) ||\n           (local_9c = FUN_000243f0(local_9c,0x406,3), -1 < local_9c)) {\n          iVar15 = FUN_00024e60(0);\n          if (iVar15 == 0) goto LAB_0002521b;\n          pDVar16 = *(DIR **)(iVar2 + 0xc);\n          uVar24 = *(ushort *)(iVar2 + 0x3e) | 1;\n          if (bVar25) goto LAB_000258a0;\nLAB_000258ae:\n          *(ushort *)(iVar2 + 0x3e) = uVar24;\n          closedir(pDVar16);\n          *(undefined4 *)(iVar2 + 0xc) = 0;\n          uVar13 = param_1[0xb];\n          if (((uVar13 & 0x200) != 0) && (-1 < local_9c)) {\n            close(local_9c);\n            uVar13 = param_1[0xb];\n          }\n        }\n        else {\n          pDVar16 = *(DIR **)(iVar2 + 0xc);\n          uVar24 = *(ushort *)(iVar2 + 0x3e) | 1;\n          if (bVar25) {\nLAB_000258a0:\n            piVar9 = __errno_location();\n            *(int *)(iVar2 + 0x20) = *piVar9;\n            goto LAB_000258ae;\n          }\n          *(ushort *)(iVar2 + 0x3e) = uVar24;\n          closedir(pDVar16);\n          uVar13 = param_1[0xb];\n        }\n        bVar25 = false;\n        *(undefined4 *)(iVar2 + 0xc) = 0;\n        goto LAB_00025223;\n      }" if (parenthesized_expression "(pDVar16 != (DIR *)0x0)" ( (binary_expression "pDVar16 != (DIR *)0x0" identifier != (cast_expression "(DIR *)0x0" ( (type_descriptor "DIR *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        *(DIR **)(iVar2 + 0xc) = pDVar16;\n        if (*(short *)(iVar2 + 0x3c) == 0xb) {\n          uVar8 = FUN_00024740();\n          *(undefined2 *)(iVar2 + 0x3c) = uVar8;\n        }\n        else if ((param_1[0xb] & 0x100U) != 0) {\n          FUN_00024aa0();\n          FUN_00024740();\n          cVar7 = FUN_000249d0();\n          if (cVar7 == '\0') {\n            piVar9 = __errno_location();\n            local_b8 = (void *)0x0;\n            *piVar9 = 0xc;\n            goto LAB_0002563f;\n          }\n        }\n        local_a8 = (-(uint)(param_1[10] == 0) & 0x186a1) - 1;\n        if (param_2 == 2) {\nLAB_00025bc8:\n          bVar25 = false;\n          uVar13 = param_1[0xb];\n          goto LAB_00025223;\n        }\n        if ((((param_1[0xb] & 0x38U) == 0x18) && (*(int *)(iVar2 + 0x58) == 2)) &&\n           (iVar15 = FUN_00024ca0(), iVar15 != 0)) {\n          if (param_2 != 3) goto LAB_00025bc8;\n          bVar25 = false;\n        }\n        else {\n          bVar25 = param_2 == 3;\n        }\n        if (((*(byte *)((int)param_1 + 0x2d) & 2) == 0) ||\n           (local_9c = FUN_000243f0(local_9c,0x406,3), -1 < local_9c)) {\n          iVar15 = FUN_00024e60(0);\n          if (iVar15 == 0) goto LAB_0002521b;\n          pDVar16 = *(DIR **)(iVar2 + 0xc);\n          uVar24 = *(ushort *)(iVar2 + 0x3e) | 1;\n          if (bVar25) goto LAB_000258a0;\nLAB_000258ae:\n          *(ushort *)(iVar2 + 0x3e) = uVar24;\n          closedir(pDVar16);\n          *(undefined4 *)(iVar2 + 0xc) = 0;\n          uVar13 = param_1[0xb];\n          if (((uVar13 & 0x200) != 0) && (-1 < local_9c)) {\n            close(local_9c);\n            uVar13 = param_1[0xb];\n          }\n        }\n        else {\n          pDVar16 = *(DIR **)(iVar2 + 0xc);\n          uVar24 = *(ushort *)(iVar2 + 0x3e) | 1;\n          if (bVar25) {\nLAB_000258a0:\n            piVar9 = __errno_location();\n            *(int *)(iVar2 + 0x20) = *piVar9;\n            goto LAB_000258ae;\n          }\n          *(ushort *)(iVar2 + 0x3e) = uVar24;\n          closedir(pDVar16);\n          uVar13 = param_1[0xb];\n        }\n        bVar25 = false;\n        *(undefined4 *)(iVar2 + 0xc) = 0;\n        goto LAB_00025223;\n      }" { (expression_statement "*(DIR **)(iVar2 + 0xc) = pDVar16;" (assignment_expression "*(DIR **)(iVar2 + 0xc) = pDVar16" (pointer_expression "*(DIR **)(iVar2 + 0xc)" * (cast_expression "(DIR **)(iVar2 + 0xc)" ( (type_descriptor "DIR **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar2 + 0xc)" ( (binary_expression "iVar2 + 0xc" identifier + number_literal) )))) = identifier) ;) (if_statement "if (*(short *)(iVar2 + 0x3c) == 0xb) {\n          uVar8 = FUN_00024740();\n          *(undefined2 *)(iVar2 + 0x3c) = uVar8;\n        }\n        else if ((param_1[0xb] & 0x100U) != 0) {\n          FUN_00024aa0();\n          FUN_00024740();\n          cVar7 = FUN_000249d0();\n          if (cVar7 == '\0') {\n            piVar9 = __errno_location();\n            local_b8 = (void *)0x0;\n            *piVar9 = 0xc;\n            goto LAB_0002563f;\n          }\n        }" if (parenthesized_expression "(*(short *)(iVar2 + 0x3c) == 0xb)" ( (binary_expression "*(short *)(iVar2 + 0x3c) == 0xb" (pointer_expression "*(short *)(iVar2 + 0x3c)" * (cast_expression "(short *)(iVar2 + 0x3c)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x3c)" ( (binary_expression "iVar2 + 0x3c" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n          uVar8 = FUN_00024740();\n          *(undefined2 *)(iVar2 + 0x3c) = uVar8;\n        }" { (expression_statement "uVar8 = FUN_00024740();" (assignment_expression "uVar8 = FUN_00024740()" identifier = (call_expression "FUN_00024740()" identifier (argument_list "()" ( )))) ;) (expression_statement "*(undefined2 *)(iVar2 + 0x3c) = uVar8;" (assignment_expression "*(undefined2 *)(iVar2 + 0x3c) = uVar8" (pointer_expression "*(undefined2 *)(iVar2 + 0x3c)" * (cast_expression "(undefined2 *)(iVar2 + 0x3c)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x3c)" ( (binary_expression "iVar2 + 0x3c" identifier + number_literal) )))) = identifier) ;) }) (else_clause "else if ((param_1[0xb] & 0x100U) != 0) {\n          FUN_00024aa0();\n          FUN_00024740();\n          cVar7 = FUN_000249d0();\n          if (cVar7 == '\0') {\n            piVar9 = __errno_location();\n            local_b8 = (void *)0x0;\n            *piVar9 = 0xc;\n            goto LAB_0002563f;\n          }\n        }" else (if_statement "if ((param_1[0xb] & 0x100U) != 0) {\n          FUN_00024aa0();\n          FUN_00024740();\n          cVar7 = FUN_000249d0();\n          if (cVar7 == '\0') {\n            piVar9 = __errno_location();\n            local_b8 = (void *)0x0;\n            *piVar9 = 0xc;\n            goto LAB_0002563f;\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_00024aa0();\n          FUN_00024740();\n          cVar7 = FUN_000249d0();\n          if (cVar7 == '\0') {\n            piVar9 = __errno_location();\n            local_b8 = (void *)0x0;\n            *piVar9 = 0xc;\n            goto LAB_0002563f;\n          }\n        }" { (expression_statement "FUN_00024aa0();" (call_expression "FUN_00024aa0()" identifier (argument_list "()" ( ))) ;) (expression_statement "FUN_00024740();" (call_expression "FUN_00024740()" identifier (argument_list "()" ( ))) ;) (expression_statement "cVar7 = FUN_000249d0();" (assignment_expression "cVar7 = FUN_000249d0()" identifier = (call_expression "FUN_000249d0()" identifier (argument_list "()" ( )))) ;) (if_statement "if (cVar7 == '\0') {\n            piVar9 = __errno_location();\n            local_b8 = (void *)0x0;\n            *piVar9 = 0xc;\n            goto LAB_0002563f;\n          }" if (parenthesized_expression "(cVar7 == '\0')" ( (binary_expression "cVar7 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n            piVar9 = __errno_location();\n            local_b8 = (void *)0x0;\n            *piVar9 = 0xc;\n            goto LAB_0002563f;\n          }" { (expression_statement "piVar9 = __errno_location();" (assignment_expression "piVar9 = __errno_location()" identifier = (call_expression "__errno_location()" identifier (argument_list "()" ( )))) ;) (expression_statement "local_b8 = (void *)0x0;" (assignment_expression "local_b8 = (void *)0x0" identifier = (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "*piVar9 = 0xc;" (assignment_expression "*piVar9 = 0xc" (pointer_expression "*piVar9" * identifier) = number_literal) ;) (goto_statement "goto LAB_0002563f;" goto statement_identifier ;) })) })))) (expression_statement "local_a8 = (-(uint)(param_1[10] == 0) & 0x186a1) - 1;" (assignment_expression "local_a8 = (-(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_00025bc8:\n          bVar25 = false;\n          uVar13 = param_1[0xb];\n          goto LAB_00025223;\n        }" if (parenthesized_expression "(param_2 == 2)" ( (binary_expression "param_2 == 2" identifier == number_literal) )) (compound_statement "{\nLAB_00025bc8:\n          bVar25 = false;\n          uVar13 = param_1[0xb];\n          goto LAB_00025223;\n        }" { (labeled_statement "LAB_00025bc8:\n          bVar25 = false;" statement_identifier : (expression_statement "bVar25 = false;" (assignment_expression "bVar25 = false" identifier = false) ;)) (expression_statement "uVar13 = param_1[0xb];" (assignment_expression "uVar13 = param_1[0xb]" identifier = (subscript_expression "param_1[0xb]" identifier [ number_literal ])) ;) (goto_statement "goto LAB_00025223;" goto statement_identifier ;) })) (if_statement "if ((((param_1[0xb] & 0x38U) == 0x18) && (*(int *)(iVar2 + 0x58) == 2)) &&\n           (iVar15 = FUN_00024ca0(), iVar15 != 0)) {\n          if (param_2 != 3) goto LAB_00025bc8;\n          bVar25 = false;\n        }\n        else {\n          bVar25 = param_2 == 3;\n        }" if (parenthesized_expression "((((param_1[0xb] & 0x38U) == 0x18) && (*(int *)(iVar2 + 0x58) == 2)) &&\n           (iVar15 = FUN_00024ca0(), iVar15 != 0))" ( (binary_expression "(((param_1[0xb] & 0x38U) == 0x18) && (*(int *)(iVar2 + 0x58) == 2)) &&\n           (iVar15 = FUN_00024ca0(), iVar15 != 0)" (parenthesized_expression "(((param_1[0xb] & 0x38U) == 0x18) && (*(int *)(iVar2 + 0x58) == 2))" ( (binary_expression "((param_1[0xb] & 0x38U) == 0x18) && (*(int *)(iVar2 + 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 *)(iVar2 + 0x58) == 2)" ( (binary_expression "*(int *)(iVar2 + 0x58) == 2" (pointer_expression "*(int *)(iVar2 + 0x58)" * (cast_expression "(int *)(iVar2 + 0x58)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x58)" ( (binary_expression "iVar2 + 0x58" identifier + number_literal) )))) == number_literal) ))) )) && (parenthesized_expression "(iVar15 = FUN_00024ca0(), iVar15 != 0)" ( (comma_expression "iVar15 = FUN_00024ca0(), iVar15 != 0" (assignment_expression "iVar15 = FUN_00024ca0()" identifier = (call_expression "FUN_00024ca0()" identifier (argument_list "()" ( )))) , (binary_expression "iVar15 != 0" identifier != number_literal)) ))) )) (compound_statement "{\n          if (param_2 != 3) goto LAB_00025bc8;\n          bVar25 = false;\n        }" { (if_statement "if (param_2 != 3) goto LAB_00025bc8;" if (parenthesized_expression "(param_2 != 3)" ( (binary_expression "param_2 != 3" identifier != number_literal) )) (goto_statement "goto LAB_00025bc8;" goto statement_identifier ;)) (expression_statement "bVar25 = false;" (assignment_expression "bVar25 = false" identifier = false) ;) }) (else_clause "else {\n          bVar25 = param_2 == 3;\n        }" else (compound_statement "{\n          bVar25 = param_2 == 3;\n        }" { (expression_statement "bVar25 = param_2 == 3;" (assignment_expression "bVar25 = param_2 == 3" identifier = (binary_expression "param_2 == 3" identifier == number_literal)) ;) }))) (if_statement "if (((*(byte *)((int)param_1 + 0x2d) & 2) == 0) ||\n           (local_9c = FUN_000243f0(local_9c,0x406,3), -1 < local_9c)) {\n          iVar15 = FUN_00024e60(0);\n          if (iVar15 == 0) goto LAB_0002521b;\n          pDVar16 = *(DIR **)(iVar2 + 0xc);\n          uVar24 = *(ushort *)(iVar2 + 0x3e) | 1;\n          if (bVar25) goto LAB_000258a0;\nLAB_000258ae:\n          *(ushort *)(iVar2 + 0x3e) = uVar24;\n          closedir(pDVar16);\n          *(undefined4 *)(iVar2 + 0xc) = 0;\n          uVar13 = param_1[0xb];\n          if (((uVar13 & 0x200) != 0) && (-1 < local_9c)) {\n            close(local_9c);\n            uVar13 = param_1[0xb];\n          }\n        }\n        else {\n          pDVar16 = *(DIR **)(iVar2 + 0xc);\n          uVar24 = *(ushort *)(iVar2 + 0x3e) | 1;\n          if (bVar25) {\nLAB_000258a0:\n            piVar9 = __errno_location();\n            *(int *)(iVar2 + 0x20) = *piVar9;\n            goto LAB_000258ae;\n          }\n          *(ushort *)(iVar2 + 0x3e) = uVar24;\n          closedir(pDVar16);\n          uVar13 = param_1[0xb];\n        }" if (parenthesized_expression "(((*(byte *)((int)param_1 + 0x2d) & 2) == 0) ||\n           (local_9c = FUN_000243f0(local_9c,0x406,3), -1 < local_9c))" ( (binary_expression "((*(byte *)((int)param_1 + 0x2d) & 2) == 0) ||\n           (local_9c = FUN_000243f0(local_9c,0x406,3), -1 < local_9c)" (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_9c = FUN_000243f0(local_9c,0x406,3), -1 < local_9c)" ( (comma_expression "local_9c = FUN_000243f0(local_9c,0x406,3), -1 < local_9c" (assignment_expression "local_9c = FUN_000243f0(local_9c,0x406,3)" identifier = (call_expression "FUN_000243f0(local_9c,0x406,3)" identifier (argument_list "(local_9c,0x406,3)" ( identifier , number_literal , number_literal )))) , (binary_expression "-1 < local_9c" number_literal < identifier)) ))) )) (compound_statement "{\n          iVar15 = FUN_00024e60(0);\n          if (iVar15 == 0) goto LAB_0002521b;\n          pDVar16 = *(DIR **)(iVar2 + 0xc);\n          uVar24 = *(ushort *)(iVar2 + 0x3e) | 1;\n          if (bVar25) goto LAB_000258a0;\nLAB_000258ae:\n          *(ushort *)(iVar2 + 0x3e) = uVar24;\n          closedir(pDVar16);\n          *(undefined4 *)(iVar2 + 0xc) = 0;\n          uVar13 = param_1[0xb];\n          if (((uVar13 & 0x200) != 0) && (-1 < local_9c)) {\n            close(local_9c);\n            uVar13 = param_1[0xb];\n          }\n        }" { (expression_statement "iVar15 = FUN_00024e60(0);" (assignment_expression "iVar15 = FUN_00024e60(0)" identifier = (call_expression "FUN_00024e60(0)" identifier (argument_list "(0)" ( number_literal )))) ;) (if_statement "if (iVar15 == 0) goto LAB_0002521b;" if (parenthesized_expression "(iVar15 == 0)" ( (binary_expression "iVar15 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0002521b;" goto statement_identifier ;)) (expression_statement "pDVar16 = *(DIR **)(iVar2 + 0xc);" (assignment_expression "pDVar16 = *(DIR **)(iVar2 + 0xc)" identifier = (pointer_expression "*(DIR **)(iVar2 + 0xc)" * (cast_expression "(DIR **)(iVar2 + 0xc)" ( (type_descriptor "DIR **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar2 + 0xc)" ( (binary_expression "iVar2 + 0xc" identifier + number_literal) ))))) ;) (expression_statement "uVar24 = *(ushort *)(iVar2 + 0x3e) | 1;" (assignment_expression "uVar24 = *(ushort *)(iVar2 + 0x3e) | 1" identifier = (binary_expression "*(ushort *)(iVar2 + 0x3e) | 1" (pointer_expression "*(ushort *)(iVar2 + 0x3e)" * (cast_expression "(ushort *)(iVar2 + 0x3e)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x3e)" ( (binary_expression "iVar2 + 0x3e" identifier + number_literal) )))) | number_literal)) ;) (if_statement "if (bVar25) goto LAB_000258a0;" if (parenthesized_expression "(bVar25)" ( identifier )) (goto_statement "goto LAB_000258a0;" goto statement_identifier ;)) (labeled_statement "LAB_000258ae:\n          *(ushort *)(iVar2 + 0x3e) = uVar24;" statement_identifier : (expression_statement "*(ushort *)(iVar2 + 0x3e) = uVar24;" (assignment_expression "*(ushort *)(iVar2 + 0x3e) = uVar24" (pointer_expression "*(ushort *)(iVar2 + 0x3e)" * (cast_expression "(ushort *)(iVar2 + 0x3e)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x3e)" ( (binary_expression "iVar2 + 0x3e" identifier + number_literal) )))) = identifier) ;)) (expression_statement "closedir(pDVar16);" (call_expression "closedir(pDVar16)" identifier (argument_list "(pDVar16)" ( identifier ))) ;) (expression_statement "*(undefined4 *)(iVar2 + 0xc) = 0;" (assignment_expression "*(undefined4 *)(iVar2 + 0xc) = 0" (pointer_expression "*(undefined4 *)(iVar2 + 0xc)" * (cast_expression "(undefined4 *)(iVar2 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0xc)" ( (binary_expression "iVar2 + 0xc" identifier + number_literal) )))) = number_literal) ;) (expression_statement "uVar13 = param_1[0xb];" (assignment_expression "uVar13 = param_1[0xb]" identifier = (subscript_expression "param_1[0xb]" identifier [ number_literal ])) ;) (if_statement "if (((uVar13 & 0x200) != 0) && (-1 < local_9c)) {\n            close(local_9c);\n            uVar13 = param_1[0xb];\n          }" if (parenthesized_expression "(((uVar13 & 0x200) != 0) && (-1 < local_9c))" ( (binary_expression "((uVar13 & 0x200) != 0) && (-1 < local_9c)" (parenthesized_expression "((uVar13 & 0x200) != 0)" ( (binary_expression "(uVar13 & 0x200) != 0" (parenthesized_expression "(uVar13 & 0x200)" ( (binary_expression "uVar13 & 0x200" identifier & number_literal) )) != number_literal) )) && (parenthesized_expression "(-1 < local_9c)" ( (binary_expression "-1 < local_9c" number_literal < identifier) ))) )) (compound_statement "{\n            close(local_9c);\n            uVar13 = param_1[0xb];\n          }" { (expression_statement "close(local_9c);" (call_expression "close(local_9c)" identifier (argument_list "(local_9c)" ( identifier ))) ;) (expression_statement "uVar13 = param_1[0xb];" (assignment_expression "uVar13 = param_1[0xb]" identifier = (subscript_expression "param_1[0xb]" identifier [ number_literal ])) ;) })) }) (else_clause "else {\n          pDVar16 = *(DIR **)(iVar2 + 0xc);\n          uVar24 = *(ushort *)(iVar2 + 0x3e) | 1;\n          if (bVar25) {\nLAB_000258a0:\n            piVar9 = __errno_location();\n            *(int *)(iVar2 + 0x20) = *piVar9;\n            goto LAB_000258ae;\n          }\n          *(ushort *)(iVar2 + 0x3e) = uVar24;\n          closedir(pDVar16);\n          uVar13 = param_1[0xb];\n        }" else (compound_statement "{\n          pDVar16 = *(DIR **)(iVar2 + 0xc);\n          uVar24 = *(ushort *)(iVar2 + 0x3e) | 1;\n          if (bVar25) {\nLAB_000258a0:\n            piVar9 = __errno_location();\n            *(int *)(iVar2 + 0x20) = *piVar9;\n            goto LAB_000258ae;\n          }\n          *(ushort *)(iVar2 + 0x3e) = uVar24;\n          closedir(pDVar16);\n          uVar13 = param_1[0xb];\n        }" { (expression_statement "pDVar16 = *(DIR **)(iVar2 + 0xc);" (assignment_expression "pDVar16 = *(DIR **)(iVar2 + 0xc)" identifier = (pointer_expression "*(DIR **)(iVar2 + 0xc)" * (cast_expression "(DIR **)(iVar2 + 0xc)" ( (type_descriptor "DIR **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar2 + 0xc)" ( (binary_expression "iVar2 + 0xc" identifier + number_literal) ))))) ;) (expression_statement "uVar24 = *(ushort *)(iVar2 + 0x3e) | 1;" (assignment_expression "uVar24 = *(ushort *)(iVar2 + 0x3e) | 1" identifier = (binary_expression "*(ushort *)(iVar2 + 0x3e) | 1" (pointer_expression "*(ushort *)(iVar2 + 0x3e)" * (cast_expression "(ushort *)(iVar2 + 0x3e)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x3e)" ( (binary_expression "iVar2 + 0x3e" identifier + number_literal) )))) | number_literal)) ;) (if_statement "if (bVar25) {\nLAB_000258a0:\n            piVar9 = __errno_location();\n            *(int *)(iVar2 + 0x20) = *piVar9;\n            goto LAB_000258ae;\n          }" if (parenthesized_expression "(bVar25)" ( identifier )) (compound_statement "{\nLAB_000258a0:\n            piVar9 = __errno_location();\n            *(int *)(iVar2 + 0x20) = *piVar9;\n            goto LAB_000258ae;\n          }" { (labeled_statement "LAB_000258a0:\n            piVar9 = __errno_location();" statement_identifier : (expression_statement "piVar9 = __errno_location();" (assignment_expression "piVar9 = __errno_location()" identifier = (call_expression "__errno_location()" identifier (argument_list "()" ( )))) ;)) (expression_statement "*(int *)(iVar2 + 0x20) = *piVar9;" (assignment_expression "*(int *)(iVar2 + 0x20) = *piVar9" (pointer_expression "*(int *)(iVar2 + 0x20)" * (cast_expression "(int *)(iVar2 + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x20)" ( (binary_expression "iVar2 + 0x20" identifier + number_literal) )))) = (pointer_expression "*piVar9" * identifier)) ;) (goto_statement "goto LAB_000258ae;" goto statement_identifier ;) })) (expression_statement "*(ushort *)(iVar2 + 0x3e) = uVar24;" (assignment_expression "*(ushort *)(iVar2 + 0x3e) = uVar24" (pointer_expression "*(ushort *)(iVar2 + 0x3e)" * (cast_expression "(ushort *)(iVar2 + 0x3e)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x3e)" ( (binary_expression "iVar2 + 0x3e" identifier + number_literal) )))) = identifier) ;) (expression_statement "closedir(pDVar16);" (call_expression "closedir(pDVar16)" identifier (argument_list "(pDVar16)" ( identifier ))) ;) (expression_statement "uVar13 = param_1[0xb];" (assignment_expression "uVar13 = param_1[0xb]" identifier = (subscript_expression "param_1[0xb]" identifier [ number_literal ])) ;) }))) (expression_statement "bVar25 = false;" (assignment_expression "bVar25 = false" identifier = false) ;) (expression_statement "*(undefined4 *)(iVar2 + 0xc) = 0;" (assignment_expression "*(undefined4 *)(iVar2 + 0xc) = 0" (pointer_expression "*(undefined4 *)(iVar2 + 0xc)" * (cast_expression "(undefined4 *)(iVar2 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0xc)" ( (binary_expression "iVar2 + 0xc" identifier + number_literal) )))) = number_literal) ;) (goto_statement "goto LAB_00025223;" goto statement_identifier ;) })) (expression_statement "piVar9 = __errno_location();" (assignment_expression "piVar9 = __errno_location()" identifier = (call_expression "__errno_location()" identifier (argument_list "()" ( )))) ;) (expression_statement "iVar15 = *piVar9;" (assignment_expression "iVar15 = *piVar9" identifier = (pointer_expression "*piVar9" * identifier)) ;) (expression_statement "close(local_9c);" (call_expression "close(local_9c)" identifier (argument_list "(local_9c)" ( identifier ))) ;) (expression_statement "*piVar9 = iVar15;" (assignment_expression "*piVar9 = iVar15" (pointer_expression "*piVar9" * identifier) = identifier) ;) (expression_statement "*(undefined4 *)(iVar2 + 0xc) = 0;" (assignment_expression "*(undefined4 *)(iVar2 + 0xc) = 0" (pointer_expression "*(undefined4 *)(iVar2 + 0xc)" * (cast_expression "(undefined4 *)(iVar2 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0xc)" ( (binary_expression "iVar2 + 0xc" identifier + number_literal) )))) = number_literal) ;) }))) (labeled_statement "joined_r0x00025c30:\n    if (param_2 == 3) {\n      *(undefined2 *)(iVar2 + 0x3c) = 4;\n      piVar9 = __errno_location();\n      *(int *)(iVar2 + 0x20) = *piVar9;\n    }" statement_identifier : (if_statement "if (param_2 == 3) {\n      *(undefined2 *)(iVar2 + 0x3c) = 4;\n      piVar9 = __errno_location();\n      *(int *)(iVar2 + 0x20) = *piVar9;\n    }" if (parenthesized_expression "(param_2 == 3)" ( (binary_expression "param_2 == 3" identifier == number_literal) )) (compound_statement "{\n      *(undefined2 *)(iVar2 + 0x3c) = 4;\n      piVar9 = __errno_location();\n      *(int *)(iVar2 + 0x20) = *piVar9;\n    }" { (expression_statement "*(undefined2 *)(iVar2 + 0x3c) = 4;" (assignment_expression "*(undefined2 *)(iVar2 + 0x3c) = 4" (pointer_expression "*(undefined2 *)(iVar2 + 0x3c)" * (cast_expression "(undefined2 *)(iVar2 + 0x3c)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x3c)" ( (binary_expression "iVar2 + 0x3c" identifier + number_literal) )))) = number_literal) ;) (expression_statement "piVar9 = __errno_location();" (assignment_expression "piVar9 = __errno_location()" identifier = (call_expression "__errno_location()" identifier (argument_list "()" ( )))) ;) (expression_statement "*(int *)(iVar2 + 0x20) = *piVar9;" (assignment_expression "*(int *)(iVar2 + 0x20) = *piVar9" (pointer_expression "*(int *)(iVar2 + 0x20)" * (cast_expression "(int *)(iVar2 + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x20)" ( (binary_expression "iVar2 + 0x20" identifier + number_literal) )))) = (pointer_expression "*piVar9" * identifier)) ;) }))) (labeled_statement "LAB_00025c40:\n    local_b8 = (void *)0x0;" statement_identifier : (expression_statement "local_b8 = (void *)0x0;" (assignment_expression "local_b8 = (void *)0x0" identifier = (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;)) }) (else_clause "else {\n    local_9c = dirfd(pDVar21);\n    if (local_9c < 0) {\n      closedir(*(DIR **)(iVar2 + 0xc));\n      *(undefined4 *)(iVar2 + 0xc) = 0;\n      goto joined_r0x00025c30;\n    }\n    if (param_1[10] == 0) {\n      local_a8 = 100000;\n      uVar13 = param_1[0xb];\n      bVar25 = true;\n    }\n    else {\n      local_a8 = 0xffffffff;\nLAB_0002521b:\n      bVar25 = true;\n      uVar13 = param_1[0xb];\n    }\nLAB_00025223:\n    uVar23 = *(uint *)(iVar2 + 0x28);\n    uVar22 = uVar23 - 1;\n    local_d0 = uVar23;\n    if (*(char *)(*(int *)(iVar2 + 0x1c) + -1 + uVar23) != '/') {\n      local_d0 = uVar23 + 1;\n      uVar22 = uVar23;\n    }\n    local_a4 = (undefined1 *)0x0;\n    if ((uVar13 & 4) != 0) {\n      local_a4 = (undefined1 *)(uVar22 + param_1[5]) + 1;\n      *(undefined1 *)(uVar22 + param_1[5]) = 0x2f;\n    }\n    puVar6 = PTR_free_0003afa8;\n    local_b0 = param_1[8] - local_d0;\n    bVar4 = false;\n    bVar3 = false;\n    iVar15 = *(int *)(iVar2 + 0x30);\n    local_c4 = (void *)0x0;\n    local_d4 = 0;\n    local_b8 = (void *)0x0;\nLAB_000252fb:\n    do {\n      do {\n        pDVar16 = *(DIR **)(iVar2 + 0xc);\n        if (pDVar16 == (DIR *)0x0) goto LAB_000256de;\n        piVar9 = __errno_location();\n        *piVar9 = 0;\n        pdVar10 = readdir64(pDVar16);\n        if (pdVar10 == (dirent64 *)0x0) {\n          if (*piVar9 != 0) {\n            *(int *)(iVar2 + 0x20) = *piVar9;\n            *(ushort *)(iVar2 + 0x3c) =\n                 (-(ushort)(pDVar21 == (DIR *)0x0 && local_d4 == 0) & 0xfffd) + 7;\n          }\n          if (*(DIR **)(iVar2 + 0xc) != (DIR *)0x0) {\n            closedir(*(DIR **)(iVar2 + 0xc));\n            *(undefined4 *)(iVar2 + 0xc) = 0;\n          }\n          goto LAB_000256de;\n        }\n      } while ((((*(byte *)(param_1 + 0xb) & 0x20) == 0) && (pdVar10->d_name[0] == '.')) &&\n              ((pdVar10->d_name[1] == '\0' || (*(short *)(pdVar10->d_name + 1) == 0x2e))));\n      __n = strlen(pdVar10->d_name);\n      pvVar11 = malloc(__n + 0xa8 & 0xfffffffc);\n      if (pvVar11 == (void *)0x0) {\n        iVar15 = *piVar9;\nLAB_000255a6:\n        free(pvVar11);\n        if (local_b8 != (void *)0x0) {\n          pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n          pvVar11 = *(void **)((int)local_b8 + 8);\n          if (pDVar21 == (DIR *)0x0) goto LAB_000255f4;\n          do {\n            closedir(pDVar21);\n            free(local_b8);\n            local_b8 = pvVar11;\n            while( true ) {\n              if (local_b8 == (void *)0x0) goto LAB_00025608;\n              pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n              pvVar11 = *(void **)((int)local_b8 + 8);\n              if (pDVar21 != (DIR *)0x0) break;\nLAB_000255f4:\n              free(local_b8);\n              local_b8 = pvVar11;\n            }\n          } while( true );\n        }\nLAB_00025608:\n        closedir(*(DIR **)(iVar2 + 0xc));\n        *(undefined4 *)(iVar2 + 0xc) = 0;\n        *(undefined2 *)(iVar2 + 0x3c) = 7;\n        local_b8 = (void *)0x0;\n        param_1[0xb] = param_1[0xb] | 0x4000;\n        *piVar9 = iVar15;\n        goto LAB_0002563f;\n      }\n      pvVar1 = (void *)((int)pvVar11 + 0xa4);\n      memcpy(pvVar1,pdVar10->d_name,__n);\n      __ptr = (void *)param_1[5];\n      *(undefined1 *)((int)pvVar11 + __n + 0xa4) = 0;\n      *(size_t *)((int)pvVar11 + 0x34) = __n;\n      *(int **)((int)pvVar11 + 0x2c) = param_1;\n      *(void **)((int)pvVar11 + 0x1c) = __ptr;\n      *(undefined4 *)((int)pvVar11 + 0x20) = 0;\n      *(undefined4 *)((int)pvVar11 + 0xc) = 0;\n      *(undefined4 *)((int)pvVar11 + 0x3e) = 0x30000;\n      *(undefined4 *)((int)pvVar11 + 0x10) = 0;\n      *(undefined4 *)((int)pvVar11 + 0x14) = 0;\n      if (local_b0 <= __n) {\n        uVar13 = local_d0 + 0x101 + param_1[8] + __n;\n        if (uVar13 < (uint)param_1[8]) {\n          iVar15 = 0x24;\n          free(__ptr);\n          param_1[5] = 0;\n          *piVar9 = 0x24;\n        }\n        else {\n          param_1[8] = uVar13;\n          pvVar14 = realloc(__ptr,uVar13);\n          if (pvVar14 != (void *)0x0) {\n            param_1[5] = (int)pvVar14;\n            if ((__ptr != pvVar14) && (bVar3 = true, (*(byte *)(param_1 + 0xb) & 4) != 0)) {\n              local_a4 = (undefined1 *)((int)pvVar14 + local_d0);\n            }\n            local_b0 = param_1[8] - local_d0;\n            goto LAB_000253d8;\n          }\n          free((void *)param_1[5]);\n          param_1[5] = 0;\n          iVar15 = *piVar9;\n        }\n        goto LAB_000255a6;\n      }\nLAB_000253d8:\n      if (CARRY4(__n,local_d0)) {\n        free(pvVar11);\n        if (local_b8 != (void *)0x0) {\n          pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n          pvVar11 = *(void **)((int)local_b8 + 8);\n          if (pDVar21 == (DIR *)0x0) goto LAB_00025e84;\n          do {\n            closedir(pDVar21);\n            free(local_b8);\n            local_b8 = pvVar11;\n            while( true ) {\n              if (local_b8 == (void *)0x0) goto LAB_00025e94;\n              pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n              pvVar11 = *(void **)((int)local_b8 + 8);\n              if (pDVar21 != (DIR *)0x0) break;\nLAB_00025e84:\n              free(local_b8);\n              local_b8 = pvVar11;\n            }\n          } while( true );\n        }\nLAB_00025e94:\n        closedir(*(DIR **)(iVar2 + 0xc));\n        *(undefined4 *)(iVar2 + 0xc) = 0;\n        *(undefined2 *)(iVar2 + 0x3c) = 7;\n        local_b8 = (void *)0x0;\n        param_1[0xb] = param_1[0xb] | 0x4000;\n        *piVar9 = 0x24;\n        goto LAB_0002563f;\n      }\n      uVar12 = *(undefined4 *)((int)&pdVar10->d_ino + 4);\n      *(size_t *)((int)pvVar11 + 0x28) = __n + local_d0;\n      *(int *)((int)pvVar11 + 0x30) = iVar15 + 1;\n      *(int *)((int)pvVar11 + 4) = *param_1;\n      _Var5 = pdVar10->d_ino;\n      *(undefined4 *)((int)pvVar11 + 0xa0) = uVar12;\n      *(int *)((int)pvVar11 + 0x9c) = (int)_Var5;\n      uVar13 = param_1[0xb];\n      if ((uVar13 & 4) == 0) {\n        *(void **)((int)pvVar11 + 0x18) = pvVar1;\n      }\n      else {\n        *(undefined4 *)((int)pvVar11 + 0x18) = *(undefined4 *)((int)pvVar11 + 0x1c);\n        memmove(local_a4,pvVar1,*(int *)((int)pvVar11 + 0x34) + 1);\n        uVar13 = param_1[0xb];\n      }\n      if ((param_1[10] == 0) || ((uVar13 & 0x400) != 0)) {\n        uVar23 = pdVar10->d_type - 1;\n        if (((uVar13 & 0x18) == 0x18) && ((pdVar10->d_type & 0xfb) != 0)) {\n          *(undefined2 *)((int)pvVar11 + 0x3c) = 0xb;\n          if (uVar23 < 0xc) {\n            *(undefined4 *)((int)pvVar11 + 0x54) = *(undefined4 *)(&DAT_00031560 + uVar23 * 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 (uVar23 < 0xc) {\n            *(undefined4 *)((int)pvVar11 + 0x54) = *(undefined4 *)(&DAT_00031560 + uVar23 * 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        uVar8 = FUN_00024740();\n        *(undefined2 *)((int)pvVar11 + 0x3c) = uVar8;\n      }\n      *(undefined4 *)((int)pvVar11 + 8) = 0;\n      pvVar1 = pvVar11;\n      if (local_b8 != (void *)0x0) {\n        *(void **)((int)local_c4 + 8) = pvVar11;\n        pvVar1 = local_b8;\n      }\n      local_b8 = pvVar1;\n      local_c4 = pvVar11;\n      if (local_d4 == 10000) {\n        if (param_1[10] == 0) {\n          iVar17 = *(int *)(iVar2 + 0x2c);\n          if ((*(byte *)(iVar17 + 0x2d) & 2) != 0) {\n            iVar18 = *(int *)(iVar17 + 0x30);\n            if (iVar18 == 0) {\n              iVar18 = FUN_0001df90(0xd,0,FUN_000246b0,FUN_000246e0,puVar6);\n              *(int *)(iVar17 + 0x30) = iVar18;\n              if (iVar18 != 0) goto LAB_00025920;\nLAB_000259b0:\n              if ((local_9c < 0) ||\n                 (iVar19 = fstatfs64(local_9c,&local_74), iVar17 = local_74.f_type, iVar19 != 0))\n              goto LAB_00025a48;\n              local_d4 = local_74.f_type;\n              if ((iVar18 != 0) &&\n                 (__ptr_00 = (undefined4 *)malloc(0xc), __ptr_00 != (undefined4 *)0x0)) {\n                uVar12 = *(undefined4 *)(iVar2 + 0x44);\n                __ptr_00[1] = *(undefined4 *)(iVar2 + 0x48);\n                *__ptr_00 = uVar12;\n                __ptr_00[2] = iVar17;\n                puVar20 = (undefined4 *)FUN_0001e8d0(iVar18,__ptr_00);\n                if (puVar20 == (undefined4 *)0x0) {\n                  free(__ptr_00);\n                  local_d4 = local_74.f_type;\n                }\n                else {\n                  if (__ptr_00 != puVar20) {\n                    \n                    abort();\n                  }\n                  local_d4 = local_74.f_type;\n                }\n              }\n            }\n            else {\nLAB_00025920:\n              local_7c = *(undefined4 *)(iVar2 + 0x48);\n              local_80 = *(undefined4 *)(iVar2 + 0x44);\n              iVar17 = FUN_0001dce0(iVar18,&local_80);\n              if (iVar17 == 0) goto LAB_000259b0;\n              local_d4 = *(int *)(iVar17 + 8);\n            }\n            if (((local_d4 == 0x6969) || (local_d4 == 0x1021994)) || (local_d4 == -0xacb2be)) {\n              bVar4 = false;\n              goto LAB_00025473;\n            }\n          }\nLAB_00025a48:\n          bVar4 = true;\n        }\nLAB_00025473:\n        local_d4 = 0x2711;\n        goto LAB_000252fb;\n      }\n      local_d4 = local_d4 + 1;\n    } while (local_d4 < local_a8);\nLAB_000256de:\n    if (bVar3) {\n      iVar15 = param_1[5];\n      for (iVar17 = param_1[1]; iVar17 != 0; iVar17 = *(int *)(iVar17 + 8)) {\n        while (*(int *)(iVar17 + 0x18) != iVar17 + 0xa4) {\n          iVar18 = *(int *)(iVar17 + 0x1c);\n          *(int *)(iVar17 + 0x1c) = iVar15;\n          *(int *)(iVar17 + 0x18) = (*(int *)(iVar17 + 0x18) - iVar18) + iVar15;\n          iVar17 = *(int *)(iVar17 + 8);\n          if (iVar17 == 0) goto LAB_00025aef;\n        }\n        *(int *)(iVar17 + 0x1c) = iVar15;\n      }\nLAB_00025aef:\n      iVar17 = *(int *)((int)local_b8 + 0x30);\n      pvVar11 = local_b8;\n      while (-1 < iVar17) {\n        while( true ) {\n          if (*(int *)((int)pvVar11 + 0x18) != (int)pvVar11 + 0xa4) {\n            *(int *)((int)pvVar11 + 0x18) =\n                 (*(int *)((int)pvVar11 + 0x18) - *(int *)((int)pvVar11 + 0x1c)) + iVar15;\n          }\n          pvVar1 = *(void **)((int)pvVar11 + 8);\n          *(int *)((int)pvVar11 + 0x1c) = iVar15;\n          if (pvVar1 == (void *)0x0) break;\n          pvVar11 = pvVar1;\n          if (*(int *)((int)pvVar1 + 0x30) < 0) goto LAB_000256e9;\n        }\n        pvVar11 = *(void **)((int)pvVar11 + 4);\n        iVar17 = *(int *)((int)pvVar11 + 0x30);\n      }\n    }\nLAB_000256e9:\n    if ((*(byte *)(param_1 + 0xb) & 4) != 0) {\n      if ((param_1[8] == local_d0) || (local_d4 == 0)) {\n        local_a4 = local_a4 + -1;\n      }\n      *local_a4 = 0;\n    }\n    if ((pDVar21 == (DIR *)0x0) && (bVar25)) {\n      if ((param_2 == 1) || (local_d4 == 0)) {\n        if (*(int *)(iVar2 + 0x30) == 0) {\n          iVar15 = FUN_00024bb0();\n        }\n        else {\n          iVar15 = FUN_00024e60(&DAT_0002e141);\n        }\n        if (iVar15 != 0) {\n          *(undefined2 *)(iVar2 + 0x3c) = 7;\n          param_1[0xb] = param_1[0xb] | 0x4000;\n          while (pvVar11 = local_b8, local_b8 != (void *)0x0) {\n            while( true ) {\n              local_b8 = *(void **)((int)pvVar11 + 8);\n              if (*(DIR **)((int)pvVar11 + 0xc) == (DIR *)0x0) break;\n              closedir(*(DIR **)((int)pvVar11 + 0xc));\n              free(pvVar11);\n              pvVar11 = local_b8;\n              if (local_b8 == (void *)0x0) goto LAB_00025c40;\n            }\n            free(pvVar11);\n          }\n          goto LAB_00025c40;\n        }\n        goto LAB_0002574d;\n      }\n    }\n    else {\nLAB_0002574d:\n      if (local_d4 == 0) {\n        if (((param_2 == 3) && (*(short *)(iVar2 + 0x3c) != 4)) && (*(short *)(iVar2 + 0x3c) != 7))\n        {\n          *(undefined2 *)(iVar2 + 0x3c) = 6;\n        }\n        if (local_b8 != (void *)0x0) {\n          pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n          pvVar11 = *(void **)((int)local_b8 + 8);\n          if (pDVar21 == (DIR *)0x0) goto LAB_00025c94;\n          do {\n            closedir(pDVar21);\n            free(local_b8);\n            local_b8 = pvVar11;\n            while( true ) {\n              if (local_b8 == (void *)0x0) goto LAB_00025c40;\n              pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n              pvVar11 = *(void **)((int)local_b8 + 8);\n              if (pDVar21 != (DIR *)0x0) break;\nLAB_00025c94:\n              free(local_b8);\n              local_b8 = pvVar11;\n            }\n          } while( true );\n        }\n        goto LAB_00025c40;\n      }\n    }\n    if (bVar4) {\n      param_1[10] = (int)FUN_00024700;\n      local_b8 = (void *)FUN_000248e0();\n      param_1[10] = 0;\n    }\n    else if ((param_1[10] != 0) && (local_d4 != 1)) {\n      local_b8 = (void *)FUN_000248e0();\n    }\n  }" else (compound_statement "{\n    local_9c = dirfd(pDVar21);\n    if (local_9c < 0) {\n      closedir(*(DIR **)(iVar2 + 0xc));\n      *(undefined4 *)(iVar2 + 0xc) = 0;\n      goto joined_r0x00025c30;\n    }\n    if (param_1[10] == 0) {\n      local_a8 = 100000;\n      uVar13 = param_1[0xb];\n      bVar25 = true;\n    }\n    else {\n      local_a8 = 0xffffffff;\nLAB_0002521b:\n      bVar25 = true;\n      uVar13 = param_1[0xb];\n    }\nLAB_00025223:\n    uVar23 = *(uint *)(iVar2 + 0x28);\n    uVar22 = uVar23 - 1;\n    local_d0 = uVar23;\n    if (*(char *)(*(int *)(iVar2 + 0x1c) + -1 + uVar23) != '/') {\n      local_d0 = uVar23 + 1;\n      uVar22 = uVar23;\n    }\n    local_a4 = (undefined1 *)0x0;\n    if ((uVar13 & 4) != 0) {\n      local_a4 = (undefined1 *)(uVar22 + param_1[5]) + 1;\n      *(undefined1 *)(uVar22 + param_1[5]) = 0x2f;\n    }\n    puVar6 = PTR_free_0003afa8;\n    local_b0 = param_1[8] - local_d0;\n    bVar4 = false;\n    bVar3 = false;\n    iVar15 = *(int *)(iVar2 + 0x30);\n    local_c4 = (void *)0x0;\n    local_d4 = 0;\n    local_b8 = (void *)0x0;\nLAB_000252fb:\n    do {\n      do {\n        pDVar16 = *(DIR **)(iVar2 + 0xc);\n        if (pDVar16 == (DIR *)0x0) goto LAB_000256de;\n        piVar9 = __errno_location();\n        *piVar9 = 0;\n        pdVar10 = readdir64(pDVar16);\n        if (pdVar10 == (dirent64 *)0x0) {\n          if (*piVar9 != 0) {\n            *(int *)(iVar2 + 0x20) = *piVar9;\n            *(ushort *)(iVar2 + 0x3c) =\n                 (-(ushort)(pDVar21 == (DIR *)0x0 && local_d4 == 0) & 0xfffd) + 7;\n          }\n          if (*(DIR **)(iVar2 + 0xc) != (DIR *)0x0) {\n            closedir(*(DIR **)(iVar2 + 0xc));\n            *(undefined4 *)(iVar2 + 0xc) = 0;\n          }\n          goto LAB_000256de;\n        }\n      } while ((((*(byte *)(param_1 + 0xb) & 0x20) == 0) && (pdVar10->d_name[0] == '.')) &&\n              ((pdVar10->d_name[1] == '\0' || (*(short *)(pdVar10->d_name + 1) == 0x2e))));\n      __n = strlen(pdVar10->d_name);\n      pvVar11 = malloc(__n + 0xa8 & 0xfffffffc);\n      if (pvVar11 == (void *)0x0) {\n        iVar15 = *piVar9;\nLAB_000255a6:\n        free(pvVar11);\n        if (local_b8 != (void *)0x0) {\n          pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n          pvVar11 = *(void **)((int)local_b8 + 8);\n          if (pDVar21 == (DIR *)0x0) goto LAB_000255f4;\n          do {\n            closedir(pDVar21);\n            free(local_b8);\n            local_b8 = pvVar11;\n            while( true ) {\n              if (local_b8 == (void *)0x0) goto LAB_00025608;\n              pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n              pvVar11 = *(void **)((int)local_b8 + 8);\n              if (pDVar21 != (DIR *)0x0) break;\nLAB_000255f4:\n              free(local_b8);\n              local_b8 = pvVar11;\n            }\n          } while( true );\n        }\nLAB_00025608:\n        closedir(*(DIR **)(iVar2 + 0xc));\n        *(undefined4 *)(iVar2 + 0xc) = 0;\n        *(undefined2 *)(iVar2 + 0x3c) = 7;\n        local_b8 = (void *)0x0;\n        param_1[0xb] = param_1[0xb] | 0x4000;\n        *piVar9 = iVar15;\n        goto LAB_0002563f;\n      }\n      pvVar1 = (void *)((int)pvVar11 + 0xa4);\n      memcpy(pvVar1,pdVar10->d_name,__n);\n      __ptr = (void *)param_1[5];\n      *(undefined1 *)((int)pvVar11 + __n + 0xa4) = 0;\n      *(size_t *)((int)pvVar11 + 0x34) = __n;\n      *(int **)((int)pvVar11 + 0x2c) = param_1;\n      *(void **)((int)pvVar11 + 0x1c) = __ptr;\n      *(undefined4 *)((int)pvVar11 + 0x20) = 0;\n      *(undefined4 *)((int)pvVar11 + 0xc) = 0;\n      *(undefined4 *)((int)pvVar11 + 0x3e) = 0x30000;\n      *(undefined4 *)((int)pvVar11 + 0x10) = 0;\n      *(undefined4 *)((int)pvVar11 + 0x14) = 0;\n      if (local_b0 <= __n) {\n        uVar13 = local_d0 + 0x101 + param_1[8] + __n;\n        if (uVar13 < (uint)param_1[8]) {\n          iVar15 = 0x24;\n          free(__ptr);\n          param_1[5] = 0;\n          *piVar9 = 0x24;\n        }\n        else {\n          param_1[8] = uVar13;\n          pvVar14 = realloc(__ptr,uVar13);\n          if (pvVar14 != (void *)0x0) {\n            param_1[5] = (int)pvVar14;\n            if ((__ptr != pvVar14) && (bVar3 = true, (*(byte *)(param_1 + 0xb) & 4) != 0)) {\n              local_a4 = (undefined1 *)((int)pvVar14 + local_d0);\n            }\n            local_b0 = param_1[8] - local_d0;\n            goto LAB_000253d8;\n          }\n          free((void *)param_1[5]);\n          param_1[5] = 0;\n          iVar15 = *piVar9;\n        }\n        goto LAB_000255a6;\n      }\nLAB_000253d8:\n      if (CARRY4(__n,local_d0)) {\n        free(pvVar11);\n        if (local_b8 != (void *)0x0) {\n          pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n          pvVar11 = *(void **)((int)local_b8 + 8);\n          if (pDVar21 == (DIR *)0x0) goto LAB_00025e84;\n          do {\n            closedir(pDVar21);\n            free(local_b8);\n            local_b8 = pvVar11;\n            while( true ) {\n              if (local_b8 == (void *)0x0) goto LAB_00025e94;\n              pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n              pvVar11 = *(void **)((int)local_b8 + 8);\n              if (pDVar21 != (DIR *)0x0) break;\nLAB_00025e84:\n              free(local_b8);\n              local_b8 = pvVar11;\n            }\n          } while( true );\n        }\nLAB_00025e94:\n        closedir(*(DIR **)(iVar2 + 0xc));\n        *(undefined4 *)(iVar2 + 0xc) = 0;\n        *(undefined2 *)(iVar2 + 0x3c) = 7;\n        local_b8 = (void *)0x0;\n        param_1[0xb] = param_1[0xb] | 0x4000;\n        *piVar9 = 0x24;\n        goto LAB_0002563f;\n      }\n      uVar12 = *(undefined4 *)((int)&pdVar10->d_ino + 4);\n      *(size_t *)((int)pvVar11 + 0x28) = __n + local_d0;\n      *(int *)((int)pvVar11 + 0x30) = iVar15 + 1;\n      *(int *)((int)pvVar11 + 4) = *param_1;\n      _Var5 = pdVar10->d_ino;\n      *(undefined4 *)((int)pvVar11 + 0xa0) = uVar12;\n      *(int *)((int)pvVar11 + 0x9c) = (int)_Var5;\n      uVar13 = param_1[0xb];\n      if ((uVar13 & 4) == 0) {\n        *(void **)((int)pvVar11 + 0x18) = pvVar1;\n      }\n      else {\n        *(undefined4 *)((int)pvVar11 + 0x18) = *(undefined4 *)((int)pvVar11 + 0x1c);\n        memmove(local_a4,pvVar1,*(int *)((int)pvVar11 + 0x34) + 1);\n        uVar13 = param_1[0xb];\n      }\n      if ((param_1[10] == 0) || ((uVar13 & 0x400) != 0)) {\n        uVar23 = pdVar10->d_type - 1;\n        if (((uVar13 & 0x18) == 0x18) && ((pdVar10->d_type & 0xfb) != 0)) {\n          *(undefined2 *)((int)pvVar11 + 0x3c) = 0xb;\n          if (uVar23 < 0xc) {\n            *(undefined4 *)((int)pvVar11 + 0x54) = *(undefined4 *)(&DAT_00031560 + uVar23 * 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 (uVar23 < 0xc) {\n            *(undefined4 *)((int)pvVar11 + 0x54) = *(undefined4 *)(&DAT_00031560 + uVar23 * 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        uVar8 = FUN_00024740();\n        *(undefined2 *)((int)pvVar11 + 0x3c) = uVar8;\n      }\n      *(undefined4 *)((int)pvVar11 + 8) = 0;\n      pvVar1 = pvVar11;\n      if (local_b8 != (void *)0x0) {\n        *(void **)((int)local_c4 + 8) = pvVar11;\n        pvVar1 = local_b8;\n      }\n      local_b8 = pvVar1;\n      local_c4 = pvVar11;\n      if (local_d4 == 10000) {\n        if (param_1[10] == 0) {\n          iVar17 = *(int *)(iVar2 + 0x2c);\n          if ((*(byte *)(iVar17 + 0x2d) & 2) != 0) {\n            iVar18 = *(int *)(iVar17 + 0x30);\n            if (iVar18 == 0) {\n              iVar18 = FUN_0001df90(0xd,0,FUN_000246b0,FUN_000246e0,puVar6);\n              *(int *)(iVar17 + 0x30) = iVar18;\n              if (iVar18 != 0) goto LAB_00025920;\nLAB_000259b0:\n              if ((local_9c < 0) ||\n                 (iVar19 = fstatfs64(local_9c,&local_74), iVar17 = local_74.f_type, iVar19 != 0))\n              goto LAB_00025a48;\n              local_d4 = local_74.f_type;\n              if ((iVar18 != 0) &&\n                 (__ptr_00 = (undefined4 *)malloc(0xc), __ptr_00 != (undefined4 *)0x0)) {\n                uVar12 = *(undefined4 *)(iVar2 + 0x44);\n                __ptr_00[1] = *(undefined4 *)(iVar2 + 0x48);\n                *__ptr_00 = uVar12;\n                __ptr_00[2] = iVar17;\n                puVar20 = (undefined4 *)FUN_0001e8d0(iVar18,__ptr_00);\n                if (puVar20 == (undefined4 *)0x0) {\n                  free(__ptr_00);\n                  local_d4 = local_74.f_type;\n                }\n                else {\n                  if (__ptr_00 != puVar20) {\n                    \n                    abort();\n                  }\n                  local_d4 = local_74.f_type;\n                }\n              }\n            }\n            else {\nLAB_00025920:\n              local_7c = *(undefined4 *)(iVar2 + 0x48);\n              local_80 = *(undefined4 *)(iVar2 + 0x44);\n              iVar17 = FUN_0001dce0(iVar18,&local_80);\n              if (iVar17 == 0) goto LAB_000259b0;\n              local_d4 = *(int *)(iVar17 + 8);\n            }\n            if (((local_d4 == 0x6969) || (local_d4 == 0x1021994)) || (local_d4 == -0xacb2be)) {\n              bVar4 = false;\n              goto LAB_00025473;\n            }\n          }\nLAB_00025a48:\n          bVar4 = true;\n        }\nLAB_00025473:\n        local_d4 = 0x2711;\n        goto LAB_000252fb;\n      }\n      local_d4 = local_d4 + 1;\n    } while (local_d4 < local_a8);\nLAB_000256de:\n    if (bVar3) {\n      iVar15 = param_1[5];\n      for (iVar17 = param_1[1]; iVar17 != 0; iVar17 = *(int *)(iVar17 + 8)) {\n        while (*(int *)(iVar17 + 0x18) != iVar17 + 0xa4) {\n          iVar18 = *(int *)(iVar17 + 0x1c);\n          *(int *)(iVar17 + 0x1c) = iVar15;\n          *(int *)(iVar17 + 0x18) = (*(int *)(iVar17 + 0x18) - iVar18) + iVar15;\n          iVar17 = *(int *)(iVar17 + 8);\n          if (iVar17 == 0) goto LAB_00025aef;\n        }\n        *(int *)(iVar17 + 0x1c) = iVar15;\n      }\nLAB_00025aef:\n      iVar17 = *(int *)((int)local_b8 + 0x30);\n      pvVar11 = local_b8;\n      while (-1 < iVar17) {\n        while( true ) {\n          if (*(int *)((int)pvVar11 + 0x18) != (int)pvVar11 + 0xa4) {\n            *(int *)((int)pvVar11 + 0x18) =\n                 (*(int *)((int)pvVar11 + 0x18) - *(int *)((int)pvVar11 + 0x1c)) + iVar15;\n          }\n          pvVar1 = *(void **)((int)pvVar11 + 8);\n          *(int *)((int)pvVar11 + 0x1c) = iVar15;\n          if (pvVar1 == (void *)0x0) break;\n          pvVar11 = pvVar1;\n          if (*(int *)((int)pvVar1 + 0x30) < 0) goto LAB_000256e9;\n        }\n        pvVar11 = *(void **)((int)pvVar11 + 4);\n        iVar17 = *(int *)((int)pvVar11 + 0x30);\n      }\n    }\nLAB_000256e9:\n    if ((*(byte *)(param_1 + 0xb) & 4) != 0) {\n      if ((param_1[8] == local_d0) || (local_d4 == 0)) {\n        local_a4 = local_a4 + -1;\n      }\n      *local_a4 = 0;\n    }\n    if ((pDVar21 == (DIR *)0x0) && (bVar25)) {\n      if ((param_2 == 1) || (local_d4 == 0)) {\n        if (*(int *)(iVar2 + 0x30) == 0) {\n          iVar15 = FUN_00024bb0();\n        }\n        else {\n          iVar15 = FUN_00024e60(&DAT_0002e141);\n        }\n        if (iVar15 != 0) {\n          *(undefined2 *)(iVar2 + 0x3c) = 7;\n          param_1[0xb] = param_1[0xb] | 0x4000;\n          while (pvVar11 = local_b8, local_b8 != (void *)0x0) {\n            while( true ) {\n              local_b8 = *(void **)((int)pvVar11 + 8);\n              if (*(DIR **)((int)pvVar11 + 0xc) == (DIR *)0x0) break;\n              closedir(*(DIR **)((int)pvVar11 + 0xc));\n              free(pvVar11);\n              pvVar11 = local_b8;\n              if (local_b8 == (void *)0x0) goto LAB_00025c40;\n            }\n            free(pvVar11);\n          }\n          goto LAB_00025c40;\n        }\n        goto LAB_0002574d;\n      }\n    }\n    else {\nLAB_0002574d:\n      if (local_d4 == 0) {\n        if (((param_2 == 3) && (*(short *)(iVar2 + 0x3c) != 4)) && (*(short *)(iVar2 + 0x3c) != 7))\n        {\n          *(undefined2 *)(iVar2 + 0x3c) = 6;\n        }\n        if (local_b8 != (void *)0x0) {\n          pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n          pvVar11 = *(void **)((int)local_b8 + 8);\n          if (pDVar21 == (DIR *)0x0) goto LAB_00025c94;\n          do {\n            closedir(pDVar21);\n            free(local_b8);\n            local_b8 = pvVar11;\n            while( true ) {\n              if (local_b8 == (void *)0x0) goto LAB_00025c40;\n              pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n              pvVar11 = *(void **)((int)local_b8 + 8);\n              if (pDVar21 != (DIR *)0x0) break;\nLAB_00025c94:\n              free(local_b8);\n              local_b8 = pvVar11;\n            }\n          } while( true );\n        }\n        goto LAB_00025c40;\n      }\n    }\n    if (bVar4) {\n      param_1[10] = (int)FUN_00024700;\n      local_b8 = (void *)FUN_000248e0();\n      param_1[10] = 0;\n    }\n    else if ((param_1[10] != 0) && (local_d4 != 1)) {\n      local_b8 = (void *)FUN_000248e0();\n    }\n  }" { (expression_statement "local_9c = dirfd(pDVar21);" (assignment_expression "local_9c = dirfd(pDVar21)" identifier = (call_expression "dirfd(pDVar21)" identifier (argument_list "(pDVar21)" ( identifier )))) ;) (if_statement "if (local_9c < 0) {\n      closedir(*(DIR **)(iVar2 + 0xc));\n      *(undefined4 *)(iVar2 + 0xc) = 0;\n      goto joined_r0x00025c30;\n    }" if (parenthesized_expression "(local_9c < 0)" ( (binary_expression "local_9c < 0" identifier < number_literal) )) (compound_statement "{\n      closedir(*(DIR **)(iVar2 + 0xc));\n      *(undefined4 *)(iVar2 + 0xc) = 0;\n      goto joined_r0x00025c30;\n    }" { (expression_statement "closedir(*(DIR **)(iVar2 + 0xc));" (call_expression "closedir(*(DIR **)(iVar2 + 0xc))" identifier (argument_list "(*(DIR **)(iVar2 + 0xc))" ( (pointer_expression "*(DIR **)(iVar2 + 0xc)" * (cast_expression "(DIR **)(iVar2 + 0xc)" ( (type_descriptor "DIR **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar2 + 0xc)" ( (binary_expression "iVar2 + 0xc" identifier + number_literal) )))) ))) ;) (expression_statement "*(undefined4 *)(iVar2 + 0xc) = 0;" (assignment_expression "*(undefined4 *)(iVar2 + 0xc) = 0" (pointer_expression "*(undefined4 *)(iVar2 + 0xc)" * (cast_expression "(undefined4 *)(iVar2 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0xc)" ( (binary_expression "iVar2 + 0xc" identifier + number_literal) )))) = number_literal) ;) (goto_statement "goto joined_r0x00025c30;" goto statement_identifier ;) })) (if_statement "if (param_1[10] == 0) {\n      local_a8 = 100000;\n      uVar13 = param_1[0xb];\n      bVar25 = true;\n    }\n    else {\n      local_a8 = 0xffffffff;\nLAB_0002521b:\n      bVar25 = true;\n      uVar13 = 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_a8 = 100000;\n      uVar13 = param_1[0xb];\n      bVar25 = true;\n    }" { (expression_statement "local_a8 = 100000;" (assignment_expression "local_a8 = 100000" identifier = number_literal) ;) (expression_statement "uVar13 = param_1[0xb];" (assignment_expression "uVar13 = param_1[0xb]" identifier = (subscript_expression "param_1[0xb]" identifier [ number_literal ])) ;) (expression_statement "bVar25 = true;" (assignment_expression "bVar25 = true" identifier = true) ;) }) (else_clause "else {\n      local_a8 = 0xffffffff;\nLAB_0002521b:\n      bVar25 = true;\n      uVar13 = param_1[0xb];\n    }" else (compound_statement "{\n      local_a8 = 0xffffffff;\nLAB_0002521b:\n      bVar25 = true;\n      uVar13 = param_1[0xb];\n    }" { (expression_statement "local_a8 = 0xffffffff;" (assignment_expression "local_a8 = 0xffffffff" identifier = number_literal) ;) (labeled_statement "LAB_0002521b:\n      bVar25 = true;" statement_identifier : (expression_statement "bVar25 = true;" (assignment_expression "bVar25 = true" identifier = true) ;)) (expression_statement "uVar13 = param_1[0xb];" (assignment_expression "uVar13 = param_1[0xb]" identifier = (subscript_expression "param_1[0xb]" identifier [ number_literal ])) ;) }))) (labeled_statement "LAB_00025223:\n    uVar23 = *(uint *)(iVar2 + 0x28);" statement_identifier : (expression_statement "uVar23 = *(uint *)(iVar2 + 0x28);" (assignment_expression "uVar23 = *(uint *)(iVar2 + 0x28)" identifier = (pointer_expression "*(uint *)(iVar2 + 0x28)" * (cast_expression "(uint *)(iVar2 + 0x28)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x28)" ( (binary_expression "iVar2 + 0x28" identifier + number_literal) ))))) ;)) (expression_statement "uVar22 = uVar23 - 1;" (assignment_expression "uVar22 = uVar23 - 1" identifier = (binary_expression "uVar23 - 1" identifier - number_literal)) ;) (expression_statement "local_d0 = uVar23;" (assignment_expression "local_d0 = uVar23" identifier = identifier) ;) (if_statement "if (*(char *)(*(int *)(iVar2 + 0x1c) + -1 + uVar23) != '/') {\n      local_d0 = uVar23 + 1;\n      uVar22 = uVar23;\n    }" if (parenthesized_expression "(*(char *)(*(int *)(iVar2 + 0x1c) + -1 + uVar23) != '/')" ( (binary_expression "*(char *)(*(int *)(iVar2 + 0x1c) + -1 + uVar23) != '/'" (pointer_expression "*(char *)(*(int *)(iVar2 + 0x1c) + -1 + uVar23)" * (cast_expression "(char *)(*(int *)(iVar2 + 0x1c) + -1 + uVar23)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar2 + 0x1c) + -1 + uVar23)" ( (binary_expression "*(int *)(iVar2 + 0x1c) + -1 + uVar23" (binary_expression "*(int *)(iVar2 + 0x1c) + -1" (pointer_expression "*(int *)(iVar2 + 0x1c)" * (cast_expression "(int *)(iVar2 + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x1c)" ( (binary_expression "iVar2 + 0x1c" identifier + number_literal) )))) + number_literal) + identifier) )))) != (char_literal "'/'" ' character ')) )) (compound_statement "{\n      local_d0 = uVar23 + 1;\n      uVar22 = uVar23;\n    }" { (expression_statement "local_d0 = uVar23 + 1;" (assignment_expression "local_d0 = uVar23 + 1" identifier = (binary_expression "uVar23 + 1" identifier + number_literal)) ;) (expression_statement "uVar22 = uVar23;" (assignment_expression "uVar22 = uVar23" identifier = identifier) ;) })) (expression_statement "local_a4 = (undefined1 *)0x0;" (assignment_expression "local_a4 = (undefined1 *)0x0" identifier = (cast_expression "(undefined1 *)0x0" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if ((uVar13 & 4) != 0) {\n      local_a4 = (undefined1 *)(uVar22 + param_1[5]) + 1;\n      *(undefined1 *)(uVar22 + param_1[5]) = 0x2f;\n    }" if (parenthesized_expression "((uVar13 & 4) != 0)" ( (binary_expression "(uVar13 & 4) != 0" (parenthesized_expression "(uVar13 & 4)" ( (binary_expression "uVar13 & 4" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n      local_a4 = (undefined1 *)(uVar22 + param_1[5]) + 1;\n      *(undefined1 *)(uVar22 + param_1[5]) = 0x2f;\n    }" { (expression_statement "local_a4 = (undefined1 *)(uVar22 + param_1[5]) + 1;" (assignment_expression "local_a4 = (undefined1 *)(uVar22 + param_1[5]) + 1" identifier = (binary_expression "(undefined1 *)(uVar22 + param_1[5]) + 1" (cast_expression "(undefined1 *)(uVar22 + param_1[5])" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar22 + param_1[5])" ( (binary_expression "uVar22 + param_1[5]" identifier + (subscript_expression "param_1[5]" identifier [ number_literal ])) ))) + number_literal)) ;) (expression_statement "*(undefined1 *)(uVar22 + param_1[5]) = 0x2f;" (assignment_expression "*(undefined1 *)(uVar22 + param_1[5]) = 0x2f" (pointer_expression "*(undefined1 *)(uVar22 + param_1[5])" * (cast_expression "(undefined1 *)(uVar22 + param_1[5])" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar22 + param_1[5])" ( (binary_expression "uVar22 + param_1[5]" identifier + (subscript_expression "param_1[5]" identifier [ number_literal ])) )))) = number_literal) ;) })) (expression_statement "puVar6 = PTR_free_0003afa8;" (assignment_expression "puVar6 = PTR_free_0003afa8" identifier = identifier) ;) (expression_statement "local_b0 = param_1[8] - local_d0;" (assignment_expression "local_b0 = param_1[8] - local_d0" identifier = (binary_expression "param_1[8] - local_d0" (subscript_expression "param_1[8]" identifier [ number_literal ]) - identifier)) ;) (expression_statement "bVar4 = false;" (assignment_expression "bVar4 = false" identifier = false) ;) (expression_statement "bVar3 = false;" (assignment_expression "bVar3 = false" identifier = false) ;) (expression_statement "iVar15 = *(int *)(iVar2 + 0x30);" (assignment_expression "iVar15 = *(int *)(iVar2 + 0x30)" identifier = (pointer_expression "*(int *)(iVar2 + 0x30)" * (cast_expression "(int *)(iVar2 + 0x30)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x30)" ( (binary_expression "iVar2 + 0x30" identifier + number_literal) ))))) ;) (expression_statement "local_c4 = (void *)0x0;" (assignment_expression "local_c4 = (void *)0x0" identifier = (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_d4 = 0;" (assignment_expression "local_d4 = 0" identifier = number_literal) ;) (expression_statement "local_b8 = (void *)0x0;" (assignment_expression "local_b8 = (void *)0x0" identifier = (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (labeled_statement "LAB_000252fb:\n    do {\n      do {\n        pDVar16 = *(DIR **)(iVar2 + 0xc);\n        if (pDVar16 == (DIR *)0x0) goto LAB_000256de;\n        piVar9 = __errno_location();\n        *piVar9 = 0;\n        pdVar10 = readdir64(pDVar16);\n        if (pdVar10 == (dirent64 *)0x0) {\n          if (*piVar9 != 0) {\n            *(int *)(iVar2 + 0x20) = *piVar9;\n            *(ushort *)(iVar2 + 0x3c) =\n                 (-(ushort)(pDVar21 == (DIR *)0x0 && local_d4 == 0) & 0xfffd) + 7;\n          }\n          if (*(DIR **)(iVar2 + 0xc) != (DIR *)0x0) {\n            closedir(*(DIR **)(iVar2 + 0xc));\n            *(undefined4 *)(iVar2 + 0xc) = 0;\n          }\n          goto LAB_000256de;\n        }\n      } while ((((*(byte *)(param_1 + 0xb) & 0x20) == 0) && (pdVar10->d_name[0] == '.')) &&\n              ((pdVar10->d_name[1] == '\0' || (*(short *)(pdVar10->d_name + 1) == 0x2e))));\n      __n = strlen(pdVar10->d_name);\n      pvVar11 = malloc(__n + 0xa8 & 0xfffffffc);\n      if (pvVar11 == (void *)0x0) {\n        iVar15 = *piVar9;\nLAB_000255a6:\n        free(pvVar11);\n        if (local_b8 != (void *)0x0) {\n          pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n          pvVar11 = *(void **)((int)local_b8 + 8);\n          if (pDVar21 == (DIR *)0x0) goto LAB_000255f4;\n          do {\n            closedir(pDVar21);\n            free(local_b8);\n            local_b8 = pvVar11;\n            while( true ) {\n              if (local_b8 == (void *)0x0) goto LAB_00025608;\n              pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n              pvVar11 = *(void **)((int)local_b8 + 8);\n              if (pDVar21 != (DIR *)0x0) break;\nLAB_000255f4:\n              free(local_b8);\n              local_b8 = pvVar11;\n            }\n          } while( true );\n        }\nLAB_00025608:\n        closedir(*(DIR **)(iVar2 + 0xc));\n        *(undefined4 *)(iVar2 + 0xc) = 0;\n        *(undefined2 *)(iVar2 + 0x3c) = 7;\n        local_b8 = (void *)0x0;\n        param_1[0xb] = param_1[0xb] | 0x4000;\n        *piVar9 = iVar15;\n        goto LAB_0002563f;\n      }\n      pvVar1 = (void *)((int)pvVar11 + 0xa4);\n      memcpy(pvVar1,pdVar10->d_name,__n);\n      __ptr = (void *)param_1[5];\n      *(undefined1 *)((int)pvVar11 + __n + 0xa4) = 0;\n      *(size_t *)((int)pvVar11 + 0x34) = __n;\n      *(int **)((int)pvVar11 + 0x2c) = param_1;\n      *(void **)((int)pvVar11 + 0x1c) = __ptr;\n      *(undefined4 *)((int)pvVar11 + 0x20) = 0;\n      *(undefined4 *)((int)pvVar11 + 0xc) = 0;\n      *(undefined4 *)((int)pvVar11 + 0x3e) = 0x30000;\n      *(undefined4 *)((int)pvVar11 + 0x10) = 0;\n      *(undefined4 *)((int)pvVar11 + 0x14) = 0;\n      if (local_b0 <= __n) {\n        uVar13 = local_d0 + 0x101 + param_1[8] + __n;\n        if (uVar13 < (uint)param_1[8]) {\n          iVar15 = 0x24;\n          free(__ptr);\n          param_1[5] = 0;\n          *piVar9 = 0x24;\n        }\n        else {\n          param_1[8] = uVar13;\n          pvVar14 = realloc(__ptr,uVar13);\n          if (pvVar14 != (void *)0x0) {\n            param_1[5] = (int)pvVar14;\n            if ((__ptr != pvVar14) && (bVar3 = true, (*(byte *)(param_1 + 0xb) & 4) != 0)) {\n              local_a4 = (undefined1 *)((int)pvVar14 + local_d0);\n            }\n            local_b0 = param_1[8] - local_d0;\n            goto LAB_000253d8;\n          }\n          free((void *)param_1[5]);\n          param_1[5] = 0;\n          iVar15 = *piVar9;\n        }\n        goto LAB_000255a6;\n      }\nLAB_000253d8:\n      if (CARRY4(__n,local_d0)) {\n        free(pvVar11);\n        if (local_b8 != (void *)0x0) {\n          pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n          pvVar11 = *(void **)((int)local_b8 + 8);\n          if (pDVar21 == (DIR *)0x0) goto LAB_00025e84;\n          do {\n            closedir(pDVar21);\n            free(local_b8);\n            local_b8 = pvVar11;\n            while( true ) {\n              if (local_b8 == (void *)0x0) goto LAB_00025e94;\n              pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n              pvVar11 = *(void **)((int)local_b8 + 8);\n              if (pDVar21 != (DIR *)0x0) break;\nLAB_00025e84:\n              free(local_b8);\n              local_b8 = pvVar11;\n            }\n          } while( true );\n        }\nLAB_00025e94:\n        closedir(*(DIR **)(iVar2 + 0xc));\n        *(undefined4 *)(iVar2 + 0xc) = 0;\n        *(undefined2 *)(iVar2 + 0x3c) = 7;\n        local_b8 = (void *)0x0;\n        param_1[0xb] = param_1[0xb] | 0x4000;\n        *piVar9 = 0x24;\n        goto LAB_0002563f;\n      }\n      uVar12 = *(undefined4 *)((int)&pdVar10->d_ino + 4);\n      *(size_t *)((int)pvVar11 + 0x28) = __n + local_d0;\n      *(int *)((int)pvVar11 + 0x30) = iVar15 + 1;\n      *(int *)((int)pvVar11 + 4) = *param_1;\n      _Var5 = pdVar10->d_ino;\n      *(undefined4 *)((int)pvVar11 + 0xa0) = uVar12;\n      *(int *)((int)pvVar11 + 0x9c) = (int)_Var5;\n      uVar13 = param_1[0xb];\n      if ((uVar13 & 4) == 0) {\n        *(void **)((int)pvVar11 + 0x18) = pvVar1;\n      }\n      else {\n        *(undefined4 *)((int)pvVar11 + 0x18) = *(undefined4 *)((int)pvVar11 + 0x1c);\n        memmove(local_a4,pvVar1,*(int *)((int)pvVar11 + 0x34) + 1);\n        uVar13 = param_1[0xb];\n      }\n      if ((param_1[10] == 0) || ((uVar13 & 0x400) != 0)) {\n        uVar23 = pdVar10->d_type - 1;\n        if (((uVar13 & 0x18) == 0x18) && ((pdVar10->d_type & 0xfb) != 0)) {\n          *(undefined2 *)((int)pvVar11 + 0x3c) = 0xb;\n          if (uVar23 < 0xc) {\n            *(undefined4 *)((int)pvVar11 + 0x54) = *(undefined4 *)(&DAT_00031560 + uVar23 * 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 (uVar23 < 0xc) {\n            *(undefined4 *)((int)pvVar11 + 0x54) = *(undefined4 *)(&DAT_00031560 + uVar23 * 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        uVar8 = FUN_00024740();\n        *(undefined2 *)((int)pvVar11 + 0x3c) = uVar8;\n      }\n      *(undefined4 *)((int)pvVar11 + 8) = 0;\n      pvVar1 = pvVar11;\n      if (local_b8 != (void *)0x0) {\n        *(void **)((int)local_c4 + 8) = pvVar11;\n        pvVar1 = local_b8;\n      }\n      local_b8 = pvVar1;\n      local_c4 = pvVar11;\n      if (local_d4 == 10000) {\n        if (param_1[10] == 0) {\n          iVar17 = *(int *)(iVar2 + 0x2c);\n          if ((*(byte *)(iVar17 + 0x2d) & 2) != 0) {\n            iVar18 = *(int *)(iVar17 + 0x30);\n            if (iVar18 == 0) {\n              iVar18 = FUN_0001df90(0xd,0,FUN_000246b0,FUN_000246e0,puVar6);\n              *(int *)(iVar17 + 0x30) = iVar18;\n              if (iVar18 != 0) goto LAB_00025920;\nLAB_000259b0:\n              if ((local_9c < 0) ||\n                 (iVar19 = fstatfs64(local_9c,&local_74), iVar17 = local_74.f_type, iVar19 != 0))\n              goto LAB_00025a48;\n              local_d4 = local_74.f_type;\n              if ((iVar18 != 0) &&\n                 (__ptr_00 = (undefined4 *)malloc(0xc), __ptr_00 != (undefined4 *)0x0)) {\n                uVar12 = *(undefined4 *)(iVar2 + 0x44);\n                __ptr_00[1] = *(undefined4 *)(iVar2 + 0x48);\n                *__ptr_00 = uVar12;\n                __ptr_00[2] = iVar17;\n                puVar20 = (undefined4 *)FUN_0001e8d0(iVar18,__ptr_00);\n                if (puVar20 == (undefined4 *)0x0) {\n                  free(__ptr_00);\n                  local_d4 = local_74.f_type;\n                }\n                else {\n                  if (__ptr_00 != puVar20) {\n                    \n                    abort();\n                  }\n                  local_d4 = local_74.f_type;\n                }\n              }\n            }\n            else {\nLAB_00025920:\n              local_7c = *(undefined4 *)(iVar2 + 0x48);\n              local_80 = *(undefined4 *)(iVar2 + 0x44);\n              iVar17 = FUN_0001dce0(iVar18,&local_80);\n              if (iVar17 == 0) goto LAB_000259b0;\n              local_d4 = *(int *)(iVar17 + 8);\n            }\n            if (((local_d4 == 0x6969) || (local_d4 == 0x1021994)) || (local_d4 == -0xacb2be)) {\n              bVar4 = false;\n              goto LAB_00025473;\n            }\n          }\nLAB_00025a48:\n          bVar4 = true;\n        }\nLAB_00025473:\n        local_d4 = 0x2711;\n        goto LAB_000252fb;\n      }\n      local_d4 = local_d4 + 1;\n    } while (local_d4 < local_a8);" statement_identifier : (do_statement "do {\n      do {\n        pDVar16 = *(DIR **)(iVar2 + 0xc);\n        if (pDVar16 == (DIR *)0x0) goto LAB_000256de;\n        piVar9 = __errno_location();\n        *piVar9 = 0;\n        pdVar10 = readdir64(pDVar16);\n        if (pdVar10 == (dirent64 *)0x0) {\n          if (*piVar9 != 0) {\n            *(int *)(iVar2 + 0x20) = *piVar9;\n            *(ushort *)(iVar2 + 0x3c) =\n                 (-(ushort)(pDVar21 == (DIR *)0x0 && local_d4 == 0) & 0xfffd) + 7;\n          }\n          if (*(DIR **)(iVar2 + 0xc) != (DIR *)0x0) {\n            closedir(*(DIR **)(iVar2 + 0xc));\n            *(undefined4 *)(iVar2 + 0xc) = 0;\n          }\n          goto LAB_000256de;\n        }\n      } while ((((*(byte *)(param_1 + 0xb) & 0x20) == 0) && (pdVar10->d_name[0] == '.')) &&\n              ((pdVar10->d_name[1] == '\0' || (*(short *)(pdVar10->d_name + 1) == 0x2e))));\n      __n = strlen(pdVar10->d_name);\n      pvVar11 = malloc(__n + 0xa8 & 0xfffffffc);\n      if (pvVar11 == (void *)0x0) {\n        iVar15 = *piVar9;\nLAB_000255a6:\n        free(pvVar11);\n        if (local_b8 != (void *)0x0) {\n          pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n          pvVar11 = *(void **)((int)local_b8 + 8);\n          if (pDVar21 == (DIR *)0x0) goto LAB_000255f4;\n          do {\n            closedir(pDVar21);\n            free(local_b8);\n            local_b8 = pvVar11;\n            while( true ) {\n              if (local_b8 == (void *)0x0) goto LAB_00025608;\n              pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n              pvVar11 = *(void **)((int)local_b8 + 8);\n              if (pDVar21 != (DIR *)0x0) break;\nLAB_000255f4:\n              free(local_b8);\n              local_b8 = pvVar11;\n            }\n          } while( true );\n        }\nLAB_00025608:\n        closedir(*(DIR **)(iVar2 + 0xc));\n        *(undefined4 *)(iVar2 + 0xc) = 0;\n        *(undefined2 *)(iVar2 + 0x3c) = 7;\n        local_b8 = (void *)0x0;\n        param_1[0xb] = param_1[0xb] | 0x4000;\n        *piVar9 = iVar15;\n        goto LAB_0002563f;\n      }\n      pvVar1 = (void *)((int)pvVar11 + 0xa4);\n      memcpy(pvVar1,pdVar10->d_name,__n);\n      __ptr = (void *)param_1[5];\n      *(undefined1 *)((int)pvVar11 + __n + 0xa4) = 0;\n      *(size_t *)((int)pvVar11 + 0x34) = __n;\n      *(int **)((int)pvVar11 + 0x2c) = param_1;\n      *(void **)((int)pvVar11 + 0x1c) = __ptr;\n      *(undefined4 *)((int)pvVar11 + 0x20) = 0;\n      *(undefined4 *)((int)pvVar11 + 0xc) = 0;\n      *(undefined4 *)((int)pvVar11 + 0x3e) = 0x30000;\n      *(undefined4 *)((int)pvVar11 + 0x10) = 0;\n      *(undefined4 *)((int)pvVar11 + 0x14) = 0;\n      if (local_b0 <= __n) {\n        uVar13 = local_d0 + 0x101 + param_1[8] + __n;\n        if (uVar13 < (uint)param_1[8]) {\n          iVar15 = 0x24;\n          free(__ptr);\n          param_1[5] = 0;\n          *piVar9 = 0x24;\n        }\n        else {\n          param_1[8] = uVar13;\n          pvVar14 = realloc(__ptr,uVar13);\n          if (pvVar14 != (void *)0x0) {\n            param_1[5] = (int)pvVar14;\n            if ((__ptr != pvVar14) && (bVar3 = true, (*(byte *)(param_1 + 0xb) & 4) != 0)) {\n              local_a4 = (undefined1 *)((int)pvVar14 + local_d0);\n            }\n            local_b0 = param_1[8] - local_d0;\n            goto LAB_000253d8;\n          }\n          free((void *)param_1[5]);\n          param_1[5] = 0;\n          iVar15 = *piVar9;\n        }\n        goto LAB_000255a6;\n      }\nLAB_000253d8:\n      if (CARRY4(__n,local_d0)) {\n        free(pvVar11);\n        if (local_b8 != (void *)0x0) {\n          pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n          pvVar11 = *(void **)((int)local_b8 + 8);\n          if (pDVar21 == (DIR *)0x0) goto LAB_00025e84;\n          do {\n            closedir(pDVar21);\n            free(local_b8);\n            local_b8 = pvVar11;\n            while( true ) {\n              if (local_b8 == (void *)0x0) goto LAB_00025e94;\n              pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n              pvVar11 = *(void **)((int)local_b8 + 8);\n              if (pDVar21 != (DIR *)0x0) break;\nLAB_00025e84:\n              free(local_b8);\n              local_b8 = pvVar11;\n            }\n          } while( true );\n        }\nLAB_00025e94:\n        closedir(*(DIR **)(iVar2 + 0xc));\n        *(undefined4 *)(iVar2 + 0xc) = 0;\n        *(undefined2 *)(iVar2 + 0x3c) = 7;\n        local_b8 = (void *)0x0;\n        param_1[0xb] = param_1[0xb] | 0x4000;\n        *piVar9 = 0x24;\n        goto LAB_0002563f;\n      }\n      uVar12 = *(undefined4 *)((int)&pdVar10->d_ino + 4);\n      *(size_t *)((int)pvVar11 + 0x28) = __n + local_d0;\n      *(int *)((int)pvVar11 + 0x30) = iVar15 + 1;\n      *(int *)((int)pvVar11 + 4) = *param_1;\n      _Var5 = pdVar10->d_ino;\n      *(undefined4 *)((int)pvVar11 + 0xa0) = uVar12;\n      *(int *)((int)pvVar11 + 0x9c) = (int)_Var5;\n      uVar13 = param_1[0xb];\n      if ((uVar13 & 4) == 0) {\n        *(void **)((int)pvVar11 + 0x18) = pvVar1;\n      }\n      else {\n        *(undefined4 *)((int)pvVar11 + 0x18) = *(undefined4 *)((int)pvVar11 + 0x1c);\n        memmove(local_a4,pvVar1,*(int *)((int)pvVar11 + 0x34) + 1);\n        uVar13 = param_1[0xb];\n      }\n      if ((param_1[10] == 0) || ((uVar13 & 0x400) != 0)) {\n        uVar23 = pdVar10->d_type - 1;\n        if (((uVar13 & 0x18) == 0x18) && ((pdVar10->d_type & 0xfb) != 0)) {\n          *(undefined2 *)((int)pvVar11 + 0x3c) = 0xb;\n          if (uVar23 < 0xc) {\n            *(undefined4 *)((int)pvVar11 + 0x54) = *(undefined4 *)(&DAT_00031560 + uVar23 * 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 (uVar23 < 0xc) {\n            *(undefined4 *)((int)pvVar11 + 0x54) = *(undefined4 *)(&DAT_00031560 + uVar23 * 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        uVar8 = FUN_00024740();\n        *(undefined2 *)((int)pvVar11 + 0x3c) = uVar8;\n      }\n      *(undefined4 *)((int)pvVar11 + 8) = 0;\n      pvVar1 = pvVar11;\n      if (local_b8 != (void *)0x0) {\n        *(void **)((int)local_c4 + 8) = pvVar11;\n        pvVar1 = local_b8;\n      }\n      local_b8 = pvVar1;\n      local_c4 = pvVar11;\n      if (local_d4 == 10000) {\n        if (param_1[10] == 0) {\n          iVar17 = *(int *)(iVar2 + 0x2c);\n          if ((*(byte *)(iVar17 + 0x2d) & 2) != 0) {\n            iVar18 = *(int *)(iVar17 + 0x30);\n            if (iVar18 == 0) {\n              iVar18 = FUN_0001df90(0xd,0,FUN_000246b0,FUN_000246e0,puVar6);\n              *(int *)(iVar17 + 0x30) = iVar18;\n              if (iVar18 != 0) goto LAB_00025920;\nLAB_000259b0:\n              if ((local_9c < 0) ||\n                 (iVar19 = fstatfs64(local_9c,&local_74), iVar17 = local_74.f_type, iVar19 != 0))\n              goto LAB_00025a48;\n              local_d4 = local_74.f_type;\n              if ((iVar18 != 0) &&\n                 (__ptr_00 = (undefined4 *)malloc(0xc), __ptr_00 != (undefined4 *)0x0)) {\n                uVar12 = *(undefined4 *)(iVar2 + 0x44);\n                __ptr_00[1] = *(undefined4 *)(iVar2 + 0x48);\n                *__ptr_00 = uVar12;\n                __ptr_00[2] = iVar17;\n                puVar20 = (undefined4 *)FUN_0001e8d0(iVar18,__ptr_00);\n                if (puVar20 == (undefined4 *)0x0) {\n                  free(__ptr_00);\n                  local_d4 = local_74.f_type;\n                }\n                else {\n                  if (__ptr_00 != puVar20) {\n                    \n                    abort();\n                  }\n                  local_d4 = local_74.f_type;\n                }\n              }\n            }\n            else {\nLAB_00025920:\n              local_7c = *(undefined4 *)(iVar2 + 0x48);\n              local_80 = *(undefined4 *)(iVar2 + 0x44);\n              iVar17 = FUN_0001dce0(iVar18,&local_80);\n              if (iVar17 == 0) goto LAB_000259b0;\n              local_d4 = *(int *)(iVar17 + 8);\n            }\n            if (((local_d4 == 0x6969) || (local_d4 == 0x1021994)) || (local_d4 == -0xacb2be)) {\n              bVar4 = false;\n              goto LAB_00025473;\n            }\n          }\nLAB_00025a48:\n          bVar4 = true;\n        }\nLAB_00025473:\n        local_d4 = 0x2711;\n        goto LAB_000252fb;\n      }\n      local_d4 = local_d4 + 1;\n    } while (local_d4 < local_a8);" do (compound_statement "{\n      do {\n        pDVar16 = *(DIR **)(iVar2 + 0xc);\n        if (pDVar16 == (DIR *)0x0) goto LAB_000256de;\n        piVar9 = __errno_location();\n        *piVar9 = 0;\n        pdVar10 = readdir64(pDVar16);\n        if (pdVar10 == (dirent64 *)0x0) {\n          if (*piVar9 != 0) {\n            *(int *)(iVar2 + 0x20) = *piVar9;\n            *(ushort *)(iVar2 + 0x3c) =\n                 (-(ushort)(pDVar21 == (DIR *)0x0 && local_d4 == 0) & 0xfffd) + 7;\n          }\n          if (*(DIR **)(iVar2 + 0xc) != (DIR *)0x0) {\n            closedir(*(DIR **)(iVar2 + 0xc));\n            *(undefined4 *)(iVar2 + 0xc) = 0;\n          }\n          goto LAB_000256de;\n        }\n      } while ((((*(byte *)(param_1 + 0xb) & 0x20) == 0) && (pdVar10->d_name[0] == '.')) &&\n              ((pdVar10->d_name[1] == '\0' || (*(short *)(pdVar10->d_name + 1) == 0x2e))));\n      __n = strlen(pdVar10->d_name);\n      pvVar11 = malloc(__n + 0xa8 & 0xfffffffc);\n      if (pvVar11 == (void *)0x0) {\n        iVar15 = *piVar9;\nLAB_000255a6:\n        free(pvVar11);\n        if (local_b8 != (void *)0x0) {\n          pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n          pvVar11 = *(void **)((int)local_b8 + 8);\n          if (pDVar21 == (DIR *)0x0) goto LAB_000255f4;\n          do {\n            closedir(pDVar21);\n            free(local_b8);\n            local_b8 = pvVar11;\n            while( true ) {\n              if (local_b8 == (void *)0x0) goto LAB_00025608;\n              pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n              pvVar11 = *(void **)((int)local_b8 + 8);\n              if (pDVar21 != (DIR *)0x0) break;\nLAB_000255f4:\n              free(local_b8);\n              local_b8 = pvVar11;\n            }\n          } while( true );\n        }\nLAB_00025608:\n        closedir(*(DIR **)(iVar2 + 0xc));\n        *(undefined4 *)(iVar2 + 0xc) = 0;\n        *(undefined2 *)(iVar2 + 0x3c) = 7;\n        local_b8 = (void *)0x0;\n        param_1[0xb] = param_1[0xb] | 0x4000;\n        *piVar9 = iVar15;\n        goto LAB_0002563f;\n      }\n      pvVar1 = (void *)((int)pvVar11 + 0xa4);\n      memcpy(pvVar1,pdVar10->d_name,__n);\n      __ptr = (void *)param_1[5];\n      *(undefined1 *)((int)pvVar11 + __n + 0xa4) = 0;\n      *(size_t *)((int)pvVar11 + 0x34) = __n;\n      *(int **)((int)pvVar11 + 0x2c) = param_1;\n      *(void **)((int)pvVar11 + 0x1c) = __ptr;\n      *(undefined4 *)((int)pvVar11 + 0x20) = 0;\n      *(undefined4 *)((int)pvVar11 + 0xc) = 0;\n      *(undefined4 *)((int)pvVar11 + 0x3e) = 0x30000;\n      *(undefined4 *)((int)pvVar11 + 0x10) = 0;\n      *(undefined4 *)((int)pvVar11 + 0x14) = 0;\n      if (local_b0 <= __n) {\n        uVar13 = local_d0 + 0x101 + param_1[8] + __n;\n        if (uVar13 < (uint)param_1[8]) {\n          iVar15 = 0x24;\n          free(__ptr);\n          param_1[5] = 0;\n          *piVar9 = 0x24;\n        }\n        else {\n          param_1[8] = uVar13;\n          pvVar14 = realloc(__ptr,uVar13);\n          if (pvVar14 != (void *)0x0) {\n            param_1[5] = (int)pvVar14;\n            if ((__ptr != pvVar14) && (bVar3 = true, (*(byte *)(param_1 + 0xb) & 4) != 0)) {\n              local_a4 = (undefined1 *)((int)pvVar14 + local_d0);\n            }\n            local_b0 = param_1[8] - local_d0;\n            goto LAB_000253d8;\n          }\n          free((void *)param_1[5]);\n          param_1[5] = 0;\n          iVar15 = *piVar9;\n        }\n        goto LAB_000255a6;\n      }\nLAB_000253d8:\n      if (CARRY4(__n,local_d0)) {\n        free(pvVar11);\n        if (local_b8 != (void *)0x0) {\n          pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n          pvVar11 = *(void **)((int)local_b8 + 8);\n          if (pDVar21 == (DIR *)0x0) goto LAB_00025e84;\n          do {\n            closedir(pDVar21);\n            free(local_b8);\n            local_b8 = pvVar11;\n            while( true ) {\n              if (local_b8 == (void *)0x0) goto LAB_00025e94;\n              pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n              pvVar11 = *(void **)((int)local_b8 + 8);\n              if (pDVar21 != (DIR *)0x0) break;\nLAB_00025e84:\n              free(local_b8);\n              local_b8 = pvVar11;\n            }\n          } while( true );\n        }\nLAB_00025e94:\n        closedir(*(DIR **)(iVar2 + 0xc));\n        *(undefined4 *)(iVar2 + 0xc) = 0;\n        *(undefined2 *)(iVar2 + 0x3c) = 7;\n        local_b8 = (void *)0x0;\n        param_1[0xb] = param_1[0xb] | 0x4000;\n        *piVar9 = 0x24;\n        goto LAB_0002563f;\n      }\n      uVar12 = *(undefined4 *)((int)&pdVar10->d_ino + 4);\n      *(size_t *)((int)pvVar11 + 0x28) = __n + local_d0;\n      *(int *)((int)pvVar11 + 0x30) = iVar15 + 1;\n      *(int *)((int)pvVar11 + 4) = *param_1;\n      _Var5 = pdVar10->d_ino;\n      *(undefined4 *)((int)pvVar11 + 0xa0) = uVar12;\n      *(int *)((int)pvVar11 + 0x9c) = (int)_Var5;\n      uVar13 = param_1[0xb];\n      if ((uVar13 & 4) == 0) {\n        *(void **)((int)pvVar11 + 0x18) = pvVar1;\n      }\n      else {\n        *(undefined4 *)((int)pvVar11 + 0x18) = *(undefined4 *)((int)pvVar11 + 0x1c);\n        memmove(local_a4,pvVar1,*(int *)((int)pvVar11 + 0x34) + 1);\n        uVar13 = param_1[0xb];\n      }\n      if ((param_1[10] == 0) || ((uVar13 & 0x400) != 0)) {\n        uVar23 = pdVar10->d_type - 1;\n        if (((uVar13 & 0x18) == 0x18) && ((pdVar10->d_type & 0xfb) != 0)) {\n          *(undefined2 *)((int)pvVar11 + 0x3c) = 0xb;\n          if (uVar23 < 0xc) {\n            *(undefined4 *)((int)pvVar11 + 0x54) = *(undefined4 *)(&DAT_00031560 + uVar23 * 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 (uVar23 < 0xc) {\n            *(undefined4 *)((int)pvVar11 + 0x54) = *(undefined4 *)(&DAT_00031560 + uVar23 * 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        uVar8 = FUN_00024740();\n        *(undefined2 *)((int)pvVar11 + 0x3c) = uVar8;\n      }\n      *(undefined4 *)((int)pvVar11 + 8) = 0;\n      pvVar1 = pvVar11;\n      if (local_b8 != (void *)0x0) {\n        *(void **)((int)local_c4 + 8) = pvVar11;\n        pvVar1 = local_b8;\n      }\n      local_b8 = pvVar1;\n      local_c4 = pvVar11;\n      if (local_d4 == 10000) {\n        if (param_1[10] == 0) {\n          iVar17 = *(int *)(iVar2 + 0x2c);\n          if ((*(byte *)(iVar17 + 0x2d) & 2) != 0) {\n            iVar18 = *(int *)(iVar17 + 0x30);\n            if (iVar18 == 0) {\n              iVar18 = FUN_0001df90(0xd,0,FUN_000246b0,FUN_000246e0,puVar6);\n              *(int *)(iVar17 + 0x30) = iVar18;\n              if (iVar18 != 0) goto LAB_00025920;\nLAB_000259b0:\n              if ((local_9c < 0) ||\n                 (iVar19 = fstatfs64(local_9c,&local_74), iVar17 = local_74.f_type, iVar19 != 0))\n              goto LAB_00025a48;\n              local_d4 = local_74.f_type;\n              if ((iVar18 != 0) &&\n                 (__ptr_00 = (undefined4 *)malloc(0xc), __ptr_00 != (undefined4 *)0x0)) {\n                uVar12 = *(undefined4 *)(iVar2 + 0x44);\n                __ptr_00[1] = *(undefined4 *)(iVar2 + 0x48);\n                *__ptr_00 = uVar12;\n                __ptr_00[2] = iVar17;\n                puVar20 = (undefined4 *)FUN_0001e8d0(iVar18,__ptr_00);\n                if (puVar20 == (undefined4 *)0x0) {\n                  free(__ptr_00);\n                  local_d4 = local_74.f_type;\n                }\n                else {\n                  if (__ptr_00 != puVar20) {\n                    \n                    abort();\n                  }\n                  local_d4 = local_74.f_type;\n                }\n              }\n            }\n            else {\nLAB_00025920:\n              local_7c = *(undefined4 *)(iVar2 + 0x48);\n              local_80 = *(undefined4 *)(iVar2 + 0x44);\n              iVar17 = FUN_0001dce0(iVar18,&local_80);\n              if (iVar17 == 0) goto LAB_000259b0;\n              local_d4 = *(int *)(iVar17 + 8);\n            }\n            if (((local_d4 == 0x6969) || (local_d4 == 0x1021994)) || (local_d4 == -0xacb2be)) {\n              bVar4 = false;\n              goto LAB_00025473;\n            }\n          }\nLAB_00025a48:\n          bVar4 = true;\n        }\nLAB_00025473:\n        local_d4 = 0x2711;\n        goto LAB_000252fb;\n      }\n      local_d4 = local_d4 + 1;\n    }" { (do_statement "do {\n        pDVar16 = *(DIR **)(iVar2 + 0xc);\n        if (pDVar16 == (DIR *)0x0) goto LAB_000256de;\n        piVar9 = __errno_location();\n        *piVar9 = 0;\n        pdVar10 = readdir64(pDVar16);\n        if (pdVar10 == (dirent64 *)0x0) {\n          if (*piVar9 != 0) {\n            *(int *)(iVar2 + 0x20) = *piVar9;\n            *(ushort *)(iVar2 + 0x3c) =\n                 (-(ushort)(pDVar21 == (DIR *)0x0 && local_d4 == 0) & 0xfffd) + 7;\n          }\n          if (*(DIR **)(iVar2 + 0xc) != (DIR *)0x0) {\n            closedir(*(DIR **)(iVar2 + 0xc));\n            *(undefined4 *)(iVar2 + 0xc) = 0;\n          }\n          goto LAB_000256de;\n        }\n      } while ((((*(byte *)(param_1 + 0xb) & 0x20) == 0) && (pdVar10->d_name[0] == '.')) &&\n              ((pdVar10->d_name[1] == '\0' || (*(short *)(pdVar10->d_name + 1) == 0x2e))));" do (compound_statement "{\n        pDVar16 = *(DIR **)(iVar2 + 0xc);\n        if (pDVar16 == (DIR *)0x0) goto LAB_000256de;\n        piVar9 = __errno_location();\n        *piVar9 = 0;\n        pdVar10 = readdir64(pDVar16);\n        if (pdVar10 == (dirent64 *)0x0) {\n          if (*piVar9 != 0) {\n            *(int *)(iVar2 + 0x20) = *piVar9;\n            *(ushort *)(iVar2 + 0x3c) =\n                 (-(ushort)(pDVar21 == (DIR *)0x0 && local_d4 == 0) & 0xfffd) + 7;\n          }\n          if (*(DIR **)(iVar2 + 0xc) != (DIR *)0x0) {\n            closedir(*(DIR **)(iVar2 + 0xc));\n            *(undefined4 *)(iVar2 + 0xc) = 0;\n          }\n          goto LAB_000256de;\n        }\n      }" { (expression_statement "pDVar16 = *(DIR **)(iVar2 + 0xc);" (assignment_expression "pDVar16 = *(DIR **)(iVar2 + 0xc)" identifier = (pointer_expression "*(DIR **)(iVar2 + 0xc)" * (cast_expression "(DIR **)(iVar2 + 0xc)" ( (type_descriptor "DIR **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar2 + 0xc)" ( (binary_expression "iVar2 + 0xc" identifier + number_literal) ))))) ;) (if_statement "if (pDVar16 == (DIR *)0x0) goto LAB_000256de;" if (parenthesized_expression "(pDVar16 == (DIR *)0x0)" ( (binary_expression "pDVar16 == (DIR *)0x0" identifier == (cast_expression "(DIR *)0x0" ( (type_descriptor "DIR *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_000256de;" goto statement_identifier ;)) (expression_statement "piVar9 = __errno_location();" (assignment_expression "piVar9 = __errno_location()" identifier = (call_expression "__errno_location()" identifier (argument_list "()" ( )))) ;) (expression_statement "*piVar9 = 0;" (assignment_expression "*piVar9 = 0" (pointer_expression "*piVar9" * identifier) = number_literal) ;) (expression_statement "pdVar10 = readdir64(pDVar16);" (assignment_expression "pdVar10 = readdir64(pDVar16)" identifier = (call_expression "readdir64(pDVar16)" identifier (argument_list "(pDVar16)" ( identifier )))) ;) (if_statement "if (pdVar10 == (dirent64 *)0x0) {\n          if (*piVar9 != 0) {\n            *(int *)(iVar2 + 0x20) = *piVar9;\n            *(ushort *)(iVar2 + 0x3c) =\n                 (-(ushort)(pDVar21 == (DIR *)0x0 && local_d4 == 0) & 0xfffd) + 7;\n          }\n          if (*(DIR **)(iVar2 + 0xc) != (DIR *)0x0) {\n            closedir(*(DIR **)(iVar2 + 0xc));\n            *(undefined4 *)(iVar2 + 0xc) = 0;\n          }\n          goto LAB_000256de;\n        }" if (parenthesized_expression "(pdVar10 == (dirent64 *)0x0)" ( (binary_expression "pdVar10 == (dirent64 *)0x0" identifier == (cast_expression "(dirent64 *)0x0" ( (type_descriptor "dirent64 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          if (*piVar9 != 0) {\n            *(int *)(iVar2 + 0x20) = *piVar9;\n            *(ushort *)(iVar2 + 0x3c) =\n                 (-(ushort)(pDVar21 == (DIR *)0x0 && local_d4 == 0) & 0xfffd) + 7;\n          }\n          if (*(DIR **)(iVar2 + 0xc) != (DIR *)0x0) {\n            closedir(*(DIR **)(iVar2 + 0xc));\n            *(undefined4 *)(iVar2 + 0xc) = 0;\n          }\n          goto LAB_000256de;\n        }" { (if_statement "if (*piVar9 != 0) {\n            *(int *)(iVar2 + 0x20) = *piVar9;\n            *(ushort *)(iVar2 + 0x3c) =\n                 (-(ushort)(pDVar21 == (DIR *)0x0 && local_d4 == 0) & 0xfffd) + 7;\n          }" if (parenthesized_expression "(*piVar9 != 0)" ( (binary_expression "*piVar9 != 0" (pointer_expression "*piVar9" * identifier) != number_literal) )) (compound_statement "{\n            *(int *)(iVar2 + 0x20) = *piVar9;\n            *(ushort *)(iVar2 + 0x3c) =\n                 (-(ushort)(pDVar21 == (DIR *)0x0 && local_d4 == 0) & 0xfffd) + 7;\n          }" { (expression_statement "*(int *)(iVar2 + 0x20) = *piVar9;" (assignment_expression "*(int *)(iVar2 + 0x20) = *piVar9" (pointer_expression "*(int *)(iVar2 + 0x20)" * (cast_expression "(int *)(iVar2 + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x20)" ( (binary_expression "iVar2 + 0x20" identifier + number_literal) )))) = (pointer_expression "*piVar9" * identifier)) ;) (expression_statement "*(ushort *)(iVar2 + 0x3c) =\n                 (-(ushort)(pDVar21 == (DIR *)0x0 && local_d4 == 0) & 0xfffd) + 7;" (assignment_expression "*(ushort *)(iVar2 + 0x3c) =\n                 (-(ushort)(pDVar21 == (DIR *)0x0 && local_d4 == 0) & 0xfffd) + 7" (pointer_expression "*(ushort *)(iVar2 + 0x3c)" * (cast_expression "(ushort *)(iVar2 + 0x3c)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x3c)" ( (binary_expression "iVar2 + 0x3c" identifier + number_literal) )))) = (binary_expression "(-(ushort)(pDVar21 == (DIR *)0x0 && local_d4 == 0) & 0xfffd) + 7" (parenthesized_expression "(-(ushort)(pDVar21 == (DIR *)0x0 && local_d4 == 0) & 0xfffd)" ( (binary_expression "-(ushort)(pDVar21 == (DIR *)0x0 && local_d4 == 0) & 0xfffd" (unary_expression "-(ushort)(pDVar21 == (DIR *)0x0 && local_d4 == 0)" - (call_expression "(ushort)(pDVar21 == (DIR *)0x0 && local_d4 == 0)" (parenthesized_expression "(ushort)" ( identifier )) (argument_list "(pDVar21 == (DIR *)0x0 && local_d4 == 0)" ( (binary_expression "pDVar21 == (DIR *)0x0 && local_d4 == 0" (binary_expression "pDVar21 == (DIR *)0x0" identifier == (cast_expression "(DIR *)0x0" ( (type_descriptor "DIR *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) && (binary_expression "local_d4 == 0" identifier == number_literal)) )))) & number_literal) )) + number_literal)) ;) })) (if_statement "if (*(DIR **)(iVar2 + 0xc) != (DIR *)0x0) {\n            closedir(*(DIR **)(iVar2 + 0xc));\n            *(undefined4 *)(iVar2 + 0xc) = 0;\n          }" if (parenthesized_expression "(*(DIR **)(iVar2 + 0xc) != (DIR *)0x0)" ( (binary_expression "*(DIR **)(iVar2 + 0xc) != (DIR *)0x0" (pointer_expression "*(DIR **)(iVar2 + 0xc)" * (cast_expression "(DIR **)(iVar2 + 0xc)" ( (type_descriptor "DIR **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar2 + 0xc)" ( (binary_expression "iVar2 + 0xc" identifier + number_literal) )))) != (cast_expression "(DIR *)0x0" ( (type_descriptor "DIR *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            closedir(*(DIR **)(iVar2 + 0xc));\n            *(undefined4 *)(iVar2 + 0xc) = 0;\n          }" { (expression_statement "closedir(*(DIR **)(iVar2 + 0xc));" (call_expression "closedir(*(DIR **)(iVar2 + 0xc))" identifier (argument_list "(*(DIR **)(iVar2 + 0xc))" ( (pointer_expression "*(DIR **)(iVar2 + 0xc)" * (cast_expression "(DIR **)(iVar2 + 0xc)" ( (type_descriptor "DIR **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar2 + 0xc)" ( (binary_expression "iVar2 + 0xc" identifier + number_literal) )))) ))) ;) (expression_statement "*(undefined4 *)(iVar2 + 0xc) = 0;" (assignment_expression "*(undefined4 *)(iVar2 + 0xc) = 0" (pointer_expression "*(undefined4 *)(iVar2 + 0xc)" * (cast_expression "(undefined4 *)(iVar2 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0xc)" ( (binary_expression "iVar2 + 0xc" identifier + number_literal) )))) = number_literal) ;) })) (goto_statement "goto LAB_000256de;" goto statement_identifier ;) })) }) while (parenthesized_expression "((((*(byte *)(param_1 + 0xb) & 0x20) == 0) && (pdVar10->d_name[0] == '.')) &&\n              ((pdVar10->d_name[1] == '\0' || (*(short *)(pdVar10->d_name + 1) == 0x2e))))" ( (binary_expression "(((*(byte *)(param_1 + 0xb) & 0x20) == 0) && (pdVar10->d_name[0] == '.')) &&\n              ((pdVar10->d_name[1] == '\0' || (*(short *)(pdVar10->d_name + 1) == 0x2e)))" (parenthesized_expression "(((*(byte *)(param_1 + 0xb) & 0x20) == 0) && (pdVar10->d_name[0] == '.'))" ( (binary_expression "((*(byte *)(param_1 + 0xb) & 0x20) == 0) && (pdVar10->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 "(pdVar10->d_name[0] == '.')" ( (binary_expression "pdVar10->d_name[0] == '.'" (subscript_expression "pdVar10->d_name[0]" (field_expression "pdVar10->d_name" identifier -> field_identifier) [ number_literal ]) == (char_literal "'.'" ' character ')) ))) )) && (parenthesized_expression "((pdVar10->d_name[1] == '\0' || (*(short *)(pdVar10->d_name + 1) == 0x2e)))" ( (parenthesized_expression "(pdVar10->d_name[1] == '\0' || (*(short *)(pdVar10->d_name + 1) == 0x2e))" ( (binary_expression "pdVar10->d_name[1] == '\0' || (*(short *)(pdVar10->d_name + 1) == 0x2e)" (binary_expression "pdVar10->d_name[1] == '\0'" (subscript_expression "pdVar10->d_name[1]" (field_expression "pdVar10->d_name" identifier -> field_identifier) [ number_literal ]) == (char_literal "'\0'" ' escape_sequence ')) || (parenthesized_expression "(*(short *)(pdVar10->d_name + 1) == 0x2e)" ( (binary_expression "*(short *)(pdVar10->d_name + 1) == 0x2e" (pointer_expression "*(short *)(pdVar10->d_name + 1)" * (cast_expression "(short *)(pdVar10->d_name + 1)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pdVar10->d_name + 1)" ( (binary_expression "pdVar10->d_name + 1" (field_expression "pdVar10->d_name" identifier -> field_identifier) + number_literal) )))) == number_literal) ))) )) ))) )) ;) (expression_statement "__n = strlen(pdVar10->d_name);" (assignment_expression "__n = strlen(pdVar10->d_name)" identifier = (call_expression "strlen(pdVar10->d_name)" identifier (argument_list "(pdVar10->d_name)" ( (field_expression "pdVar10->d_name" identifier -> field_identifier) )))) ;) (expression_statement "pvVar11 = malloc(__n + 0xa8 & 0xfffffffc);" (assignment_expression "pvVar11 = malloc(__n + 0xa8 & 0xfffffffc)" identifier = (call_expression "malloc(__n + 0xa8 & 0xfffffffc)" identifier (argument_list "(__n + 0xa8 & 0xfffffffc)" ( (binary_expression "__n + 0xa8 & 0xfffffffc" (binary_expression "__n + 0xa8" identifier + number_literal) & number_literal) )))) ;) (if_statement "if (pvVar11 == (void *)0x0) {\n        iVar15 = *piVar9;\nLAB_000255a6:\n        free(pvVar11);\n        if (local_b8 != (void *)0x0) {\n          pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n          pvVar11 = *(void **)((int)local_b8 + 8);\n          if (pDVar21 == (DIR *)0x0) goto LAB_000255f4;\n          do {\n            closedir(pDVar21);\n            free(local_b8);\n            local_b8 = pvVar11;\n            while( true ) {\n              if (local_b8 == (void *)0x0) goto LAB_00025608;\n              pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n              pvVar11 = *(void **)((int)local_b8 + 8);\n              if (pDVar21 != (DIR *)0x0) break;\nLAB_000255f4:\n              free(local_b8);\n              local_b8 = pvVar11;\n            }\n          } while( true );\n        }\nLAB_00025608:\n        closedir(*(DIR **)(iVar2 + 0xc));\n        *(undefined4 *)(iVar2 + 0xc) = 0;\n        *(undefined2 *)(iVar2 + 0x3c) = 7;\n        local_b8 = (void *)0x0;\n        param_1[0xb] = param_1[0xb] | 0x4000;\n        *piVar9 = iVar15;\n        goto LAB_0002563f;\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 "{\n        iVar15 = *piVar9;\nLAB_000255a6:\n        free(pvVar11);\n        if (local_b8 != (void *)0x0) {\n          pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n          pvVar11 = *(void **)((int)local_b8 + 8);\n          if (pDVar21 == (DIR *)0x0) goto LAB_000255f4;\n          do {\n            closedir(pDVar21);\n            free(local_b8);\n            local_b8 = pvVar11;\n            while( true ) {\n              if (local_b8 == (void *)0x0) goto LAB_00025608;\n              pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n              pvVar11 = *(void **)((int)local_b8 + 8);\n              if (pDVar21 != (DIR *)0x0) break;\nLAB_000255f4:\n              free(local_b8);\n              local_b8 = pvVar11;\n            }\n          } while( true );\n        }\nLAB_00025608:\n        closedir(*(DIR **)(iVar2 + 0xc));\n        *(undefined4 *)(iVar2 + 0xc) = 0;\n        *(undefined2 *)(iVar2 + 0x3c) = 7;\n        local_b8 = (void *)0x0;\n        param_1[0xb] = param_1[0xb] | 0x4000;\n        *piVar9 = iVar15;\n        goto LAB_0002563f;\n      }" { (expression_statement "iVar15 = *piVar9;" (assignment_expression "iVar15 = *piVar9" identifier = (pointer_expression "*piVar9" * identifier)) ;) (labeled_statement "LAB_000255a6:\n        free(pvVar11);" statement_identifier : (expression_statement "free(pvVar11);" (call_expression "free(pvVar11)" identifier (argument_list "(pvVar11)" ( identifier ))) ;)) (if_statement "if (local_b8 != (void *)0x0) {\n          pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n          pvVar11 = *(void **)((int)local_b8 + 8);\n          if (pDVar21 == (DIR *)0x0) goto LAB_000255f4;\n          do {\n            closedir(pDVar21);\n            free(local_b8);\n            local_b8 = pvVar11;\n            while( true ) {\n              if (local_b8 == (void *)0x0) goto LAB_00025608;\n              pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n              pvVar11 = *(void **)((int)local_b8 + 8);\n              if (pDVar21 != (DIR *)0x0) break;\nLAB_000255f4:\n              free(local_b8);\n              local_b8 = pvVar11;\n            }\n          } while( true );\n        }" if (parenthesized_expression "(local_b8 != (void *)0x0)" ( (binary_expression "local_b8 != (void *)0x0" identifier != (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n          pvVar11 = *(void **)((int)local_b8 + 8);\n          if (pDVar21 == (DIR *)0x0) goto LAB_000255f4;\n          do {\n            closedir(pDVar21);\n            free(local_b8);\n            local_b8 = pvVar11;\n            while( true ) {\n              if (local_b8 == (void *)0x0) goto LAB_00025608;\n              pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n              pvVar11 = *(void **)((int)local_b8 + 8);\n              if (pDVar21 != (DIR *)0x0) break;\nLAB_000255f4:\n              free(local_b8);\n              local_b8 = pvVar11;\n            }\n          } while( true );\n        }" { (expression_statement "pDVar21 = *(DIR **)((int)local_b8 + 0xc);" (assignment_expression "pDVar21 = *(DIR **)((int)local_b8 + 0xc)" identifier = (pointer_expression "*(DIR **)((int)local_b8 + 0xc)" * (cast_expression "(DIR **)((int)local_b8 + 0xc)" ( (type_descriptor "DIR **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)local_b8 + 0xc)" ( (binary_expression "(int)local_b8 + 0xc" (cast_expression "(int)local_b8" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "pvVar11 = *(void **)((int)local_b8 + 8);" (assignment_expression "pvVar11 = *(void **)((int)local_b8 + 8)" identifier = (pointer_expression "*(void **)((int)local_b8 + 8)" * (cast_expression "(void **)((int)local_b8 + 8)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)local_b8 + 8)" ( (binary_expression "(int)local_b8 + 8" (cast_expression "(int)local_b8" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (if_statement "if (pDVar21 == (DIR *)0x0) goto LAB_000255f4;" if (parenthesized_expression "(pDVar21 == (DIR *)0x0)" ( (binary_expression "pDVar21 == (DIR *)0x0" identifier == (cast_expression "(DIR *)0x0" ( (type_descriptor "DIR *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_000255f4;" goto statement_identifier ;)) (do_statement "do {\n            closedir(pDVar21);\n            free(local_b8);\n            local_b8 = pvVar11;\n            while( true ) {\n              if (local_b8 == (void *)0x0) goto LAB_00025608;\n              pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n              pvVar11 = *(void **)((int)local_b8 + 8);\n              if (pDVar21 != (DIR *)0x0) break;\nLAB_000255f4:\n              free(local_b8);\n              local_b8 = pvVar11;\n            }\n          } while( true );" do (compound_statement "{\n            closedir(pDVar21);\n            free(local_b8);\n            local_b8 = pvVar11;\n            while( true ) {\n              if (local_b8 == (void *)0x0) goto LAB_00025608;\n              pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n              pvVar11 = *(void **)((int)local_b8 + 8);\n              if (pDVar21 != (DIR *)0x0) break;\nLAB_000255f4:\n              free(local_b8);\n              local_b8 = pvVar11;\n            }\n          }" { (expression_statement "closedir(pDVar21);" (call_expression "closedir(pDVar21)" identifier (argument_list "(pDVar21)" ( identifier ))) ;) (expression_statement "free(local_b8);" (call_expression "free(local_b8)" identifier (argument_list "(local_b8)" ( identifier ))) ;) (expression_statement "local_b8 = pvVar11;" (assignment_expression "local_b8 = pvVar11" identifier = identifier) ;) (while_statement "while( true ) {\n              if (local_b8 == (void *)0x0) goto LAB_00025608;\n              pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n              pvVar11 = *(void **)((int)local_b8 + 8);\n              if (pDVar21 != (DIR *)0x0) break;\nLAB_000255f4:\n              free(local_b8);\n              local_b8 = pvVar11;\n            }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n              if (local_b8 == (void *)0x0) goto LAB_00025608;\n              pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n              pvVar11 = *(void **)((int)local_b8 + 8);\n              if (pDVar21 != (DIR *)0x0) break;\nLAB_000255f4:\n              free(local_b8);\n              local_b8 = pvVar11;\n            }" { (if_statement "if (local_b8 == (void *)0x0) goto LAB_00025608;" if (parenthesized_expression "(local_b8 == (void *)0x0)" ( (binary_expression "local_b8 == (void *)0x0" identifier == (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00025608;" goto statement_identifier ;)) (expression_statement "pDVar21 = *(DIR **)((int)local_b8 + 0xc);" (assignment_expression "pDVar21 = *(DIR **)((int)local_b8 + 0xc)" identifier = (pointer_expression "*(DIR **)((int)local_b8 + 0xc)" * (cast_expression "(DIR **)((int)local_b8 + 0xc)" ( (type_descriptor "DIR **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)local_b8 + 0xc)" ( (binary_expression "(int)local_b8 + 0xc" (cast_expression "(int)local_b8" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "pvVar11 = *(void **)((int)local_b8 + 8);" (assignment_expression "pvVar11 = *(void **)((int)local_b8 + 8)" identifier = (pointer_expression "*(void **)((int)local_b8 + 8)" * (cast_expression "(void **)((int)local_b8 + 8)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)local_b8 + 8)" ( (binary_expression "(int)local_b8 + 8" (cast_expression "(int)local_b8" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (if_statement "if (pDVar21 != (DIR *)0x0) break;" if (parenthesized_expression "(pDVar21 != (DIR *)0x0)" ( (binary_expression "pDVar21 != (DIR *)0x0" identifier != (cast_expression "(DIR *)0x0" ( (type_descriptor "DIR *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (break_statement "break;" break ;)) (labeled_statement "LAB_000255f4:\n              free(local_b8);" statement_identifier : (expression_statement "free(local_b8);" (call_expression "free(local_b8)" identifier (argument_list "(local_b8)" ( identifier ))) ;)) (expression_statement "local_b8 = pvVar11;" (assignment_expression "local_b8 = pvVar11" identifier = identifier) ;) })) }) while (parenthesized_expression "( true )" ( true )) ;) })) (labeled_statement "LAB_00025608:\n        closedir(*(DIR **)(iVar2 + 0xc));" statement_identifier : (expression_statement "closedir(*(DIR **)(iVar2 + 0xc));" (call_expression "closedir(*(DIR **)(iVar2 + 0xc))" identifier (argument_list "(*(DIR **)(iVar2 + 0xc))" ( (pointer_expression "*(DIR **)(iVar2 + 0xc)" * (cast_expression "(DIR **)(iVar2 + 0xc)" ( (type_descriptor "DIR **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar2 + 0xc)" ( (binary_expression "iVar2 + 0xc" identifier + number_literal) )))) ))) ;)) (expression_statement "*(undefined4 *)(iVar2 + 0xc) = 0;" (assignment_expression "*(undefined4 *)(iVar2 + 0xc) = 0" (pointer_expression "*(undefined4 *)(iVar2 + 0xc)" * (cast_expression "(undefined4 *)(iVar2 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0xc)" ( (binary_expression "iVar2 + 0xc" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined2 *)(iVar2 + 0x3c) = 7;" (assignment_expression "*(undefined2 *)(iVar2 + 0x3c) = 7" (pointer_expression "*(undefined2 *)(iVar2 + 0x3c)" * (cast_expression "(undefined2 *)(iVar2 + 0x3c)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x3c)" ( (binary_expression "iVar2 + 0x3c" identifier + number_literal) )))) = number_literal) ;) (expression_statement "local_b8 = (void *)0x0;" (assignment_expression "local_b8 = (void *)0x0" identifier = (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) 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 "*piVar9 = iVar15;" (assignment_expression "*piVar9 = iVar15" (pointer_expression "*piVar9" * identifier) = identifier) ;) (goto_statement "goto LAB_0002563f;" goto statement_identifier ;) })) (expression_statement "pvVar1 = (void *)((int)pvVar11 + 0xa4);" (assignment_expression "pvVar1 = (void *)((int)pvVar11 + 0xa4)" 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) )))) ;) (expression_statement "memcpy(pvVar1,pdVar10->d_name,__n);" (call_expression "memcpy(pvVar1,pdVar10->d_name,__n)" identifier (argument_list "(pvVar1,pdVar10->d_name,__n)" ( identifier , (field_expression "pdVar10->d_name" identifier -> field_identifier) , identifier ))) ;) (expression_statement "__ptr = (void *)param_1[5];" (assignment_expression "__ptr = (void *)param_1[5]" identifier = (cast_expression "(void *)param_1[5]" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[5]" identifier [ number_literal ]))) ;) (expression_statement "*(undefined1 *)((int)pvVar11 + __n + 0xa4) = 0;" (assignment_expression "*(undefined1 *)((int)pvVar11 + __n + 0xa4) = 0" (pointer_expression "*(undefined1 *)((int)pvVar11 + __n + 0xa4)" * (cast_expression "(undefined1 *)((int)pvVar11 + __n + 0xa4)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pvVar11 + __n + 0xa4)" ( (binary_expression "(int)pvVar11 + __n + 0xa4" (binary_expression "(int)pvVar11 + __n" (cast_expression "(int)pvVar11" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) + number_literal) )))) = number_literal) ;) (expression_statement "*(size_t *)((int)pvVar11 + 0x34) = __n;" (assignment_expression "*(size_t *)((int)pvVar11 + 0x34) = __n" (pointer_expression "*(size_t *)((int)pvVar11 + 0x34)" * (cast_expression "(size_t *)((int)pvVar11 + 0x34)" ( (type_descriptor "size_t *" 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) )))) = identifier) ;) (expression_statement "*(int **)((int)pvVar11 + 0x2c) = param_1;" (assignment_expression "*(int **)((int)pvVar11 + 0x2c) = param_1" (pointer_expression "*(int **)((int)pvVar11 + 0x2c)" * (cast_expression "(int **)((int)pvVar11 + 0x2c)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)pvVar11 + 0x2c)" ( (binary_expression "(int)pvVar11 + 0x2c" (cast_expression "(int)pvVar11" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(void **)((int)pvVar11 + 0x1c) = __ptr;" (assignment_expression "*(void **)((int)pvVar11 + 0x1c) = __ptr" (pointer_expression "*(void **)((int)pvVar11 + 0x1c)" * (cast_expression "(void **)((int)pvVar11 + 0x1c)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (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) )))) = identifier) ;) (expression_statement "*(undefined4 *)((int)pvVar11 + 0x20) = 0;" (assignment_expression "*(undefined4 *)((int)pvVar11 + 0x20) = 0" (pointer_expression "*(undefined4 *)((int)pvVar11 + 0x20)" * (cast_expression "(undefined4 *)((int)pvVar11 + 0x20)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pvVar11 + 0x20)" ( (binary_expression "(int)pvVar11 + 0x20" (cast_expression "(int)pvVar11" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)((int)pvVar11 + 0xc) = 0;" (assignment_expression "*(undefined4 *)((int)pvVar11 + 0xc) = 0" (pointer_expression "*(undefined4 *)((int)pvVar11 + 0xc)" * (cast_expression "(undefined4 *)((int)pvVar11 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pvVar11 + 0xc)" ( (binary_expression "(int)pvVar11 + 0xc" (cast_expression "(int)pvVar11" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)((int)pvVar11 + 0x3e) = 0x30000;" (assignment_expression "*(undefined4 *)((int)pvVar11 + 0x3e) = 0x30000" (pointer_expression "*(undefined4 *)((int)pvVar11 + 0x3e)" * (cast_expression "(undefined4 *)((int)pvVar11 + 0x3e)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pvVar11 + 0x3e)" ( (binary_expression "(int)pvVar11 + 0x3e" (cast_expression "(int)pvVar11" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)((int)pvVar11 + 0x10) = 0;" (assignment_expression "*(undefined4 *)((int)pvVar11 + 0x10) = 0" (pointer_expression "*(undefined4 *)((int)pvVar11 + 0x10)" * (cast_expression "(undefined4 *)((int)pvVar11 + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pvVar11 + 0x10)" ( (binary_expression "(int)pvVar11 + 0x10" (cast_expression "(int)pvVar11" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)((int)pvVar11 + 0x14) = 0;" (assignment_expression "*(undefined4 *)((int)pvVar11 + 0x14) = 0" (pointer_expression "*(undefined4 *)((int)pvVar11 + 0x14)" * (cast_expression "(undefined4 *)((int)pvVar11 + 0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pvVar11 + 0x14)" ( (binary_expression "(int)pvVar11 + 0x14" (cast_expression "(int)pvVar11" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (if_statement "if (local_b0 <= __n) {\n        uVar13 = local_d0 + 0x101 + param_1[8] + __n;\n        if (uVar13 < (uint)param_1[8]) {\n          iVar15 = 0x24;\n          free(__ptr);\n          param_1[5] = 0;\n          *piVar9 = 0x24;\n        }\n        else {\n          param_1[8] = uVar13;\n          pvVar14 = realloc(__ptr,uVar13);\n          if (pvVar14 != (void *)0x0) {\n            param_1[5] = (int)pvVar14;\n            if ((__ptr != pvVar14) && (bVar3 = true, (*(byte *)(param_1 + 0xb) & 4) != 0)) {\n              local_a4 = (undefined1 *)((int)pvVar14 + local_d0);\n            }\n            local_b0 = param_1[8] - local_d0;\n            goto LAB_000253d8;\n          }\n          free((void *)param_1[5]);\n          param_1[5] = 0;\n          iVar15 = *piVar9;\n        }\n        goto LAB_000255a6;\n      }" if (parenthesized_expression "(local_b0 <= __n)" ( (binary_expression "local_b0 <= __n" identifier <= identifier) )) (compound_statement "{\n        uVar13 = local_d0 + 0x101 + param_1[8] + __n;\n        if (uVar13 < (uint)param_1[8]) {\n          iVar15 = 0x24;\n          free(__ptr);\n          param_1[5] = 0;\n          *piVar9 = 0x24;\n        }\n        else {\n          param_1[8] = uVar13;\n          pvVar14 = realloc(__ptr,uVar13);\n          if (pvVar14 != (void *)0x0) {\n            param_1[5] = (int)pvVar14;\n            if ((__ptr != pvVar14) && (bVar3 = true, (*(byte *)(param_1 + 0xb) & 4) != 0)) {\n              local_a4 = (undefined1 *)((int)pvVar14 + local_d0);\n            }\n            local_b0 = param_1[8] - local_d0;\n            goto LAB_000253d8;\n          }\n          free((void *)param_1[5]);\n          param_1[5] = 0;\n          iVar15 = *piVar9;\n        }\n        goto LAB_000255a6;\n      }" { (expression_statement "uVar13 = local_d0 + 0x101 + param_1[8] + __n;" (assignment_expression "uVar13 = local_d0 + 0x101 + param_1[8] + __n" identifier = (binary_expression "local_d0 + 0x101 + param_1[8] + __n" (binary_expression "local_d0 + 0x101 + param_1[8]" (binary_expression "local_d0 + 0x101" identifier + number_literal) + (subscript_expression "param_1[8]" identifier [ number_literal ])) + identifier)) ;) (if_statement "if (uVar13 < (uint)param_1[8]) {\n          iVar15 = 0x24;\n          free(__ptr);\n          param_1[5] = 0;\n          *piVar9 = 0x24;\n        }\n        else {\n          param_1[8] = uVar13;\n          pvVar14 = realloc(__ptr,uVar13);\n          if (pvVar14 != (void *)0x0) {\n            param_1[5] = (int)pvVar14;\n            if ((__ptr != pvVar14) && (bVar3 = true, (*(byte *)(param_1 + 0xb) & 4) != 0)) {\n              local_a4 = (undefined1 *)((int)pvVar14 + local_d0);\n            }\n            local_b0 = param_1[8] - local_d0;\n            goto LAB_000253d8;\n          }\n          free((void *)param_1[5]);\n          param_1[5] = 0;\n          iVar15 = *piVar9;\n        }" if (parenthesized_expression "(uVar13 < (uint)param_1[8])" ( (binary_expression "uVar13 < (uint)param_1[8]" identifier < (cast_expression "(uint)param_1[8]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_1[8]" identifier [ number_literal ]))) )) (compound_statement "{\n          iVar15 = 0x24;\n          free(__ptr);\n          param_1[5] = 0;\n          *piVar9 = 0x24;\n        }" { (expression_statement "iVar15 = 0x24;" (assignment_expression "iVar15 = 0x24" identifier = number_literal) ;) (expression_statement "free(__ptr);" (call_expression "free(__ptr)" identifier (argument_list "(__ptr)" ( identifier ))) ;) (expression_statement "param_1[5] = 0;" (assignment_expression "param_1[5] = 0" (subscript_expression "param_1[5]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*piVar9 = 0x24;" (assignment_expression "*piVar9 = 0x24" (pointer_expression "*piVar9" * identifier) = number_literal) ;) }) (else_clause "else {\n          param_1[8] = uVar13;\n          pvVar14 = realloc(__ptr,uVar13);\n          if (pvVar14 != (void *)0x0) {\n            param_1[5] = (int)pvVar14;\n            if ((__ptr != pvVar14) && (bVar3 = true, (*(byte *)(param_1 + 0xb) & 4) != 0)) {\n              local_a4 = (undefined1 *)((int)pvVar14 + local_d0);\n            }\n            local_b0 = param_1[8] - local_d0;\n            goto LAB_000253d8;\n          }\n          free((void *)param_1[5]);\n          param_1[5] = 0;\n          iVar15 = *piVar9;\n        }" else (compound_statement "{\n          param_1[8] = uVar13;\n          pvVar14 = realloc(__ptr,uVar13);\n          if (pvVar14 != (void *)0x0) {\n            param_1[5] = (int)pvVar14;\n            if ((__ptr != pvVar14) && (bVar3 = true, (*(byte *)(param_1 + 0xb) & 4) != 0)) {\n              local_a4 = (undefined1 *)((int)pvVar14 + local_d0);\n            }\n            local_b0 = param_1[8] - local_d0;\n            goto LAB_000253d8;\n          }\n          free((void *)param_1[5]);\n          param_1[5] = 0;\n          iVar15 = *piVar9;\n        }" { (expression_statement "param_1[8] = uVar13;" (assignment_expression "param_1[8] = uVar13" (subscript_expression "param_1[8]" identifier [ number_literal ]) = identifier) ;) (expression_statement "pvVar14 = realloc(__ptr,uVar13);" (assignment_expression "pvVar14 = realloc(__ptr,uVar13)" identifier = (call_expression "realloc(__ptr,uVar13)" identifier (argument_list "(__ptr,uVar13)" ( identifier , identifier )))) ;) (if_statement "if (pvVar14 != (void *)0x0) {\n            param_1[5] = (int)pvVar14;\n            if ((__ptr != pvVar14) && (bVar3 = true, (*(byte *)(param_1 + 0xb) & 4) != 0)) {\n              local_a4 = (undefined1 *)((int)pvVar14 + local_d0);\n            }\n            local_b0 = param_1[8] - local_d0;\n            goto LAB_000253d8;\n          }" if (parenthesized_expression "(pvVar14 != (void *)0x0)" ( (binary_expression "pvVar14 != (void *)0x0" identifier != (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            param_1[5] = (int)pvVar14;\n            if ((__ptr != pvVar14) && (bVar3 = true, (*(byte *)(param_1 + 0xb) & 4) != 0)) {\n              local_a4 = (undefined1 *)((int)pvVar14 + local_d0);\n            }\n            local_b0 = param_1[8] - local_d0;\n            goto LAB_000253d8;\n          }" { (expression_statement "param_1[5] = (int)pvVar14;" (assignment_expression "param_1[5] = (int)pvVar14" (subscript_expression "param_1[5]" identifier [ number_literal ]) = (cast_expression "(int)pvVar14" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (if_statement "if ((__ptr != pvVar14) && (bVar3 = true, (*(byte *)(param_1 + 0xb) & 4) != 0)) {\n              local_a4 = (undefined1 *)((int)pvVar14 + local_d0);\n            }" if (parenthesized_expression "((__ptr != pvVar14) && (bVar3 = true, (*(byte *)(param_1 + 0xb) & 4) != 0))" ( (binary_expression "(__ptr != pvVar14) && (bVar3 = true, (*(byte *)(param_1 + 0xb) & 4) != 0)" (parenthesized_expression "(__ptr != pvVar14)" ( (binary_expression "__ptr != pvVar14" identifier != identifier) )) && (parenthesized_expression "(bVar3 = true, (*(byte *)(param_1 + 0xb) & 4) != 0)" ( (comma_expression "bVar3 = true, (*(byte *)(param_1 + 0xb) & 4) != 0" (assignment_expression "bVar3 = true" identifier = true) , (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              local_a4 = (undefined1 *)((int)pvVar14 + local_d0);\n            }" { (expression_statement "local_a4 = (undefined1 *)((int)pvVar14 + local_d0);" (assignment_expression "local_a4 = (undefined1 *)((int)pvVar14 + local_d0)" identifier = (cast_expression "(undefined1 *)((int)pvVar14 + local_d0)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pvVar14 + local_d0)" ( (binary_expression "(int)pvVar14 + local_d0" (cast_expression "(int)pvVar14" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) })) (expression_statement "local_b0 = param_1[8] - local_d0;" (assignment_expression "local_b0 = param_1[8] - local_d0" identifier = (binary_expression "param_1[8] - local_d0" (subscript_expression "param_1[8]" identifier [ number_literal ]) - identifier)) ;) (goto_statement "goto LAB_000253d8;" goto statement_identifier ;) })) (expression_statement "free((void *)param_1[5]);" (call_expression "free((void *)param_1[5])" identifier (argument_list "((void *)param_1[5])" ( (cast_expression "(void *)param_1[5]" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[5]" identifier [ number_literal ])) ))) ;) (expression_statement "param_1[5] = 0;" (assignment_expression "param_1[5] = 0" (subscript_expression "param_1[5]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "iVar15 = *piVar9;" (assignment_expression "iVar15 = *piVar9" identifier = (pointer_expression "*piVar9" * identifier)) ;) }))) (goto_statement "goto LAB_000255a6;" goto statement_identifier ;) })) (labeled_statement "LAB_000253d8:\n      if (CARRY4(__n,local_d0)) {\n        free(pvVar11);\n        if (local_b8 != (void *)0x0) {\n          pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n          pvVar11 = *(void **)((int)local_b8 + 8);\n          if (pDVar21 == (DIR *)0x0) goto LAB_00025e84;\n          do {\n            closedir(pDVar21);\n            free(local_b8);\n            local_b8 = pvVar11;\n            while( true ) {\n              if (local_b8 == (void *)0x0) goto LAB_00025e94;\n              pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n              pvVar11 = *(void **)((int)local_b8 + 8);\n              if (pDVar21 != (DIR *)0x0) break;\nLAB_00025e84:\n              free(local_b8);\n              local_b8 = pvVar11;\n            }\n          } while( true );\n        }\nLAB_00025e94:\n        closedir(*(DIR **)(iVar2 + 0xc));\n        *(undefined4 *)(iVar2 + 0xc) = 0;\n        *(undefined2 *)(iVar2 + 0x3c) = 7;\n        local_b8 = (void *)0x0;\n        param_1[0xb] = param_1[0xb] | 0x4000;\n        *piVar9 = 0x24;\n        goto LAB_0002563f;\n      }" statement_identifier : (if_statement "if (CARRY4(__n,local_d0)) {\n        free(pvVar11);\n        if (local_b8 != (void *)0x0) {\n          pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n          pvVar11 = *(void **)((int)local_b8 + 8);\n          if (pDVar21 == (DIR *)0x0) goto LAB_00025e84;\n          do {\n            closedir(pDVar21);\n            free(local_b8);\n            local_b8 = pvVar11;\n            while( true ) {\n              if (local_b8 == (void *)0x0) goto LAB_00025e94;\n              pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n              pvVar11 = *(void **)((int)local_b8 + 8);\n              if (pDVar21 != (DIR *)0x0) break;\nLAB_00025e84:\n              free(local_b8);\n              local_b8 = pvVar11;\n            }\n          } while( true );\n        }\nLAB_00025e94:\n        closedir(*(DIR **)(iVar2 + 0xc));\n        *(undefined4 *)(iVar2 + 0xc) = 0;\n        *(undefined2 *)(iVar2 + 0x3c) = 7;\n        local_b8 = (void *)0x0;\n        param_1[0xb] = param_1[0xb] | 0x4000;\n        *piVar9 = 0x24;\n        goto LAB_0002563f;\n      }" if (parenthesized_expression "(CARRY4(__n,local_d0))" ( (call_expression "CARRY4(__n,local_d0)" identifier (argument_list "(__n,local_d0)" ( identifier , identifier ))) )) (compound_statement "{\n        free(pvVar11);\n        if (local_b8 != (void *)0x0) {\n          pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n          pvVar11 = *(void **)((int)local_b8 + 8);\n          if (pDVar21 == (DIR *)0x0) goto LAB_00025e84;\n          do {\n            closedir(pDVar21);\n            free(local_b8);\n            local_b8 = pvVar11;\n            while( true ) {\n              if (local_b8 == (void *)0x0) goto LAB_00025e94;\n              pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n              pvVar11 = *(void **)((int)local_b8 + 8);\n              if (pDVar21 != (DIR *)0x0) break;\nLAB_00025e84:\n              free(local_b8);\n              local_b8 = pvVar11;\n            }\n          } while( true );\n        }\nLAB_00025e94:\n        closedir(*(DIR **)(iVar2 + 0xc));\n        *(undefined4 *)(iVar2 + 0xc) = 0;\n        *(undefined2 *)(iVar2 + 0x3c) = 7;\n        local_b8 = (void *)0x0;\n        param_1[0xb] = param_1[0xb] | 0x4000;\n        *piVar9 = 0x24;\n        goto LAB_0002563f;\n      }" { (expression_statement "free(pvVar11);" (call_expression "free(pvVar11)" identifier (argument_list "(pvVar11)" ( identifier ))) ;) (if_statement "if (local_b8 != (void *)0x0) {\n          pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n          pvVar11 = *(void **)((int)local_b8 + 8);\n          if (pDVar21 == (DIR *)0x0) goto LAB_00025e84;\n          do {\n            closedir(pDVar21);\n            free(local_b8);\n            local_b8 = pvVar11;\n            while( true ) {\n              if (local_b8 == (void *)0x0) goto LAB_00025e94;\n              pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n              pvVar11 = *(void **)((int)local_b8 + 8);\n              if (pDVar21 != (DIR *)0x0) break;\nLAB_00025e84:\n              free(local_b8);\n              local_b8 = pvVar11;\n            }\n          } while( true );\n        }" if (parenthesized_expression "(local_b8 != (void *)0x0)" ( (binary_expression "local_b8 != (void *)0x0" identifier != (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n          pvVar11 = *(void **)((int)local_b8 + 8);\n          if (pDVar21 == (DIR *)0x0) goto LAB_00025e84;\n          do {\n            closedir(pDVar21);\n            free(local_b8);\n            local_b8 = pvVar11;\n            while( true ) {\n              if (local_b8 == (void *)0x0) goto LAB_00025e94;\n              pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n              pvVar11 = *(void **)((int)local_b8 + 8);\n              if (pDVar21 != (DIR *)0x0) break;\nLAB_00025e84:\n              free(local_b8);\n              local_b8 = pvVar11;\n            }\n          } while( true );\n        }" { (expression_statement "pDVar21 = *(DIR **)((int)local_b8 + 0xc);" (assignment_expression "pDVar21 = *(DIR **)((int)local_b8 + 0xc)" identifier = (pointer_expression "*(DIR **)((int)local_b8 + 0xc)" * (cast_expression "(DIR **)((int)local_b8 + 0xc)" ( (type_descriptor "DIR **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)local_b8 + 0xc)" ( (binary_expression "(int)local_b8 + 0xc" (cast_expression "(int)local_b8" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "pvVar11 = *(void **)((int)local_b8 + 8);" (assignment_expression "pvVar11 = *(void **)((int)local_b8 + 8)" identifier = (pointer_expression "*(void **)((int)local_b8 + 8)" * (cast_expression "(void **)((int)local_b8 + 8)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)local_b8 + 8)" ( (binary_expression "(int)local_b8 + 8" (cast_expression "(int)local_b8" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (if_statement "if (pDVar21 == (DIR *)0x0) goto LAB_00025e84;" if (parenthesized_expression "(pDVar21 == (DIR *)0x0)" ( (binary_expression "pDVar21 == (DIR *)0x0" identifier == (cast_expression "(DIR *)0x0" ( (type_descriptor "DIR *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00025e84;" goto statement_identifier ;)) (do_statement "do {\n            closedir(pDVar21);\n            free(local_b8);\n            local_b8 = pvVar11;\n            while( true ) {\n              if (local_b8 == (void *)0x0) goto LAB_00025e94;\n              pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n              pvVar11 = *(void **)((int)local_b8 + 8);\n              if (pDVar21 != (DIR *)0x0) break;\nLAB_00025e84:\n              free(local_b8);\n              local_b8 = pvVar11;\n            }\n          } while( true );" do (compound_statement "{\n            closedir(pDVar21);\n            free(local_b8);\n            local_b8 = pvVar11;\n            while( true ) {\n              if (local_b8 == (void *)0x0) goto LAB_00025e94;\n              pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n              pvVar11 = *(void **)((int)local_b8 + 8);\n              if (pDVar21 != (DIR *)0x0) break;\nLAB_00025e84:\n              free(local_b8);\n              local_b8 = pvVar11;\n            }\n          }" { (expression_statement "closedir(pDVar21);" (call_expression "closedir(pDVar21)" identifier (argument_list "(pDVar21)" ( identifier ))) ;) (expression_statement "free(local_b8);" (call_expression "free(local_b8)" identifier (argument_list "(local_b8)" ( identifier ))) ;) (expression_statement "local_b8 = pvVar11;" (assignment_expression "local_b8 = pvVar11" identifier = identifier) ;) (while_statement "while( true ) {\n              if (local_b8 == (void *)0x0) goto LAB_00025e94;\n              pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n              pvVar11 = *(void **)((int)local_b8 + 8);\n              if (pDVar21 != (DIR *)0x0) break;\nLAB_00025e84:\n              free(local_b8);\n              local_b8 = pvVar11;\n            }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n              if (local_b8 == (void *)0x0) goto LAB_00025e94;\n              pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n              pvVar11 = *(void **)((int)local_b8 + 8);\n              if (pDVar21 != (DIR *)0x0) break;\nLAB_00025e84:\n              free(local_b8);\n              local_b8 = pvVar11;\n            }" { (if_statement "if (local_b8 == (void *)0x0) goto LAB_00025e94;" if (parenthesized_expression "(local_b8 == (void *)0x0)" ( (binary_expression "local_b8 == (void *)0x0" identifier == (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00025e94;" goto statement_identifier ;)) (expression_statement "pDVar21 = *(DIR **)((int)local_b8 + 0xc);" (assignment_expression "pDVar21 = *(DIR **)((int)local_b8 + 0xc)" identifier = (pointer_expression "*(DIR **)((int)local_b8 + 0xc)" * (cast_expression "(DIR **)((int)local_b8 + 0xc)" ( (type_descriptor "DIR **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)local_b8 + 0xc)" ( (binary_expression "(int)local_b8 + 0xc" (cast_expression "(int)local_b8" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "pvVar11 = *(void **)((int)local_b8 + 8);" (assignment_expression "pvVar11 = *(void **)((int)local_b8 + 8)" identifier = (pointer_expression "*(void **)((int)local_b8 + 8)" * (cast_expression "(void **)((int)local_b8 + 8)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)local_b8 + 8)" ( (binary_expression "(int)local_b8 + 8" (cast_expression "(int)local_b8" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (if_statement "if (pDVar21 != (DIR *)0x0) break;" if (parenthesized_expression "(pDVar21 != (DIR *)0x0)" ( (binary_expression "pDVar21 != (DIR *)0x0" identifier != (cast_expression "(DIR *)0x0" ( (type_descriptor "DIR *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (break_statement "break;" break ;)) (labeled_statement "LAB_00025e84:\n              free(local_b8);" statement_identifier : (expression_statement "free(local_b8);" (call_expression "free(local_b8)" identifier (argument_list "(local_b8)" ( identifier ))) ;)) (expression_statement "local_b8 = pvVar11;" (assignment_expression "local_b8 = pvVar11" identifier = identifier) ;) })) }) while (parenthesized_expression "( true )" ( true )) ;) })) (labeled_statement "LAB_00025e94:\n        closedir(*(DIR **)(iVar2 + 0xc));" statement_identifier : (expression_statement "closedir(*(DIR **)(iVar2 + 0xc));" (call_expression "closedir(*(DIR **)(iVar2 + 0xc))" identifier (argument_list "(*(DIR **)(iVar2 + 0xc))" ( (pointer_expression "*(DIR **)(iVar2 + 0xc)" * (cast_expression "(DIR **)(iVar2 + 0xc)" ( (type_descriptor "DIR **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar2 + 0xc)" ( (binary_expression "iVar2 + 0xc" identifier + number_literal) )))) ))) ;)) (expression_statement "*(undefined4 *)(iVar2 + 0xc) = 0;" (assignment_expression "*(undefined4 *)(iVar2 + 0xc) = 0" (pointer_expression "*(undefined4 *)(iVar2 + 0xc)" * (cast_expression "(undefined4 *)(iVar2 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0xc)" ( (binary_expression "iVar2 + 0xc" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined2 *)(iVar2 + 0x3c) = 7;" (assignment_expression "*(undefined2 *)(iVar2 + 0x3c) = 7" (pointer_expression "*(undefined2 *)(iVar2 + 0x3c)" * (cast_expression "(undefined2 *)(iVar2 + 0x3c)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x3c)" ( (binary_expression "iVar2 + 0x3c" identifier + number_literal) )))) = number_literal) ;) (expression_statement "local_b8 = (void *)0x0;" (assignment_expression "local_b8 = (void *)0x0" identifier = (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) 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 "*piVar9 = 0x24;" (assignment_expression "*piVar9 = 0x24" (pointer_expression "*piVar9" * identifier) = number_literal) ;) (goto_statement "goto LAB_0002563f;" goto statement_identifier ;) }))) (expression_statement "uVar12 = *(undefined4 *)((int)&pdVar10->d_ino + 4);" (assignment_expression "uVar12 = *(undefined4 *)((int)&pdVar10->d_ino + 4)" identifier = (pointer_expression "*(undefined4 *)((int)&pdVar10->d_ino + 4)" * (cast_expression "(undefined4 *)((int)&pdVar10->d_ino + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&pdVar10->d_ino + 4)" ( (binary_expression "(int)&pdVar10->d_ino + 4" (cast_expression "(int)&pdVar10->d_ino" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&pdVar10->d_ino" & (field_expression "pdVar10->d_ino" identifier -> field_identifier))) + number_literal) ))))) ;) (expression_statement "*(size_t *)((int)pvVar11 + 0x28) = __n + local_d0;" (assignment_expression "*(size_t *)((int)pvVar11 + 0x28) = __n + local_d0" (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 "__n + local_d0" identifier + identifier)) ;) (expression_statement "*(int *)((int)pvVar11 + 0x30) = iVar15 + 1;" (assignment_expression "*(int *)((int)pvVar11 + 0x30) = iVar15 + 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 "iVar15 + 1" identifier + number_literal)) ;) (expression_statement "*(int *)((int)pvVar11 + 4) = *param_1;" (assignment_expression "*(int *)((int)pvVar11 + 4) = *param_1" (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) )))) = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "_Var5 = pdVar10->d_ino;" (assignment_expression "_Var5 = pdVar10->d_ino" identifier = (field_expression "pdVar10->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)_Var5;" (assignment_expression "*(int *)((int)pvVar11 + 0x9c) = (int)_Var5" (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)_Var5" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "uVar13 = param_1[0xb];" (assignment_expression "uVar13 = param_1[0xb]" identifier = (subscript_expression "param_1[0xb]" identifier [ number_literal ])) ;) (if_statement "if ((uVar13 & 4) == 0) {\n        *(void **)((int)pvVar11 + 0x18) = pvVar1;\n      }\n      else {\n        *(undefined4 *)((int)pvVar11 + 0x18) = *(undefined4 *)((int)pvVar11 + 0x1c);\n        memmove(local_a4,pvVar1,*(int *)((int)pvVar11 + 0x34) + 1);\n        uVar13 = param_1[0xb];\n      }" if (parenthesized_expression "((uVar13 & 4) == 0)" ( (binary_expression "(uVar13 & 4) == 0" (parenthesized_expression "(uVar13 & 4)" ( (binary_expression "uVar13 & 4" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n        *(void **)((int)pvVar11 + 0x18) = pvVar1;\n      }" { (expression_statement "*(void **)((int)pvVar11 + 0x18) = pvVar1;" (assignment_expression "*(void **)((int)pvVar11 + 0x18) = pvVar1" (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) )))) = identifier) ;) }) (else_clause "else {\n        *(undefined4 *)((int)pvVar11 + 0x18) = *(undefined4 *)((int)pvVar11 + 0x1c);\n        memmove(local_a4,pvVar1,*(int *)((int)pvVar11 + 0x34) + 1);\n        uVar13 = param_1[0xb];\n      }" else (compound_statement "{\n        *(undefined4 *)((int)pvVar11 + 0x18) = *(undefined4 *)((int)pvVar11 + 0x1c);\n        memmove(local_a4,pvVar1,*(int *)((int)pvVar11 + 0x34) + 1);\n        uVar13 = 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_a4,pvVar1,*(int *)((int)pvVar11 + 0x34) + 1);" (call_expression "memmove(local_a4,pvVar1,*(int *)((int)pvVar11 + 0x34) + 1)" identifier (argument_list "(local_a4,pvVar1,*(int *)((int)pvVar11 + 0x34) + 1)" ( identifier , identifier , (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 "uVar13 = param_1[0xb];" (assignment_expression "uVar13 = param_1[0xb]" identifier = (subscript_expression "param_1[0xb]" identifier [ number_literal ])) ;) }))) (if_statement "if ((param_1[10] == 0) || ((uVar13 & 0x400) != 0)) {\n        uVar23 = pdVar10->d_type - 1;\n        if (((uVar13 & 0x18) == 0x18) && ((pdVar10->d_type & 0xfb) != 0)) {\n          *(undefined2 *)((int)pvVar11 + 0x3c) = 0xb;\n          if (uVar23 < 0xc) {\n            *(undefined4 *)((int)pvVar11 + 0x54) = *(undefined4 *)(&DAT_00031560 + uVar23 * 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 (uVar23 < 0xc) {\n            *(undefined4 *)((int)pvVar11 + 0x54) = *(undefined4 *)(&DAT_00031560 + uVar23 * 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        uVar8 = FUN_00024740();\n        *(undefined2 *)((int)pvVar11 + 0x3c) = uVar8;\n      }" if (parenthesized_expression "((param_1[10] == 0) || ((uVar13 & 0x400) != 0))" ( (binary_expression "(param_1[10] == 0) || ((uVar13 & 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 "((uVar13 & 0x400) != 0)" ( (binary_expression "(uVar13 & 0x400) != 0" (parenthesized_expression "(uVar13 & 0x400)" ( (binary_expression "uVar13 & 0x400" identifier & number_literal) )) != number_literal) ))) )) (compound_statement "{\n        uVar23 = pdVar10->d_type - 1;\n        if (((uVar13 & 0x18) == 0x18) && ((pdVar10->d_type & 0xfb) != 0)) {\n          *(undefined2 *)((int)pvVar11 + 0x3c) = 0xb;\n          if (uVar23 < 0xc) {\n            *(undefined4 *)((int)pvVar11 + 0x54) = *(undefined4 *)(&DAT_00031560 + uVar23 * 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 (uVar23 < 0xc) {\n            *(undefined4 *)((int)pvVar11 + 0x54) = *(undefined4 *)(&DAT_00031560 + uVar23 * 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 "uVar23 = pdVar10->d_type - 1;" (assignment_expression "uVar23 = pdVar10->d_type - 1" identifier = (binary_expression "pdVar10->d_type - 1" (field_expression "pdVar10->d_type" identifier -> field_identifier) - number_literal)) ;) (if_statement "if (((uVar13 & 0x18) == 0x18) && ((pdVar10->d_type & 0xfb) != 0)) {\n          *(undefined2 *)((int)pvVar11 + 0x3c) = 0xb;\n          if (uVar23 < 0xc) {\n            *(undefined4 *)((int)pvVar11 + 0x54) = *(undefined4 *)(&DAT_00031560 + uVar23 * 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 (uVar23 < 0xc) {\n            *(undefined4 *)((int)pvVar11 + 0x54) = *(undefined4 *)(&DAT_00031560 + uVar23 * 4);\n            uVar12 = 2;\n          }\n          else {\n            *(undefined4 *)((int)pvVar11 + 0x54) = 0;\n            uVar12 = 2;\n          }\n        }" if (parenthesized_expression "(((uVar13 & 0x18) == 0x18) && ((pdVar10->d_type & 0xfb) != 0))" ( (binary_expression "((uVar13 & 0x18) == 0x18) && ((pdVar10->d_type & 0xfb) != 0)" (parenthesized_expression "((uVar13 & 0x18) == 0x18)" ( (binary_expression "(uVar13 & 0x18) == 0x18" (parenthesized_expression "(uVar13 & 0x18)" ( (binary_expression "uVar13 & 0x18" identifier & number_literal) )) == number_literal) )) && (parenthesized_expression "((pdVar10->d_type & 0xfb) != 0)" ( (binary_expression "(pdVar10->d_type & 0xfb) != 0" (parenthesized_expression "(pdVar10->d_type & 0xfb)" ( (binary_expression "pdVar10->d_type & 0xfb" (field_expression "pdVar10->d_type" identifier -> field_identifier) & number_literal) )) != number_literal) ))) )) (compound_statement "{\n          *(undefined2 *)((int)pvVar11 + 0x3c) = 0xb;\n          if (uVar23 < 0xc) {\n            *(undefined4 *)((int)pvVar11 + 0x54) = *(undefined4 *)(&DAT_00031560 + uVar23 * 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 (uVar23 < 0xc) {\n            *(undefined4 *)((int)pvVar11 + 0x54) = *(undefined4 *)(&DAT_00031560 + uVar23 * 4);\n            uVar12 = 1;\n          }\n          else {\n            *(undefined4 *)((int)pvVar11 + 0x54) = 0;\n            uVar12 = 1;\n          }" if (parenthesized_expression "(uVar23 < 0xc)" ( (binary_expression "uVar23 < 0xc" identifier < number_literal) )) (compound_statement "{\n            *(undefined4 *)((int)pvVar11 + 0x54) = *(undefined4 *)(&DAT_00031560 + uVar23 * 4);\n            uVar12 = 1;\n          }" { (expression_statement "*(undefined4 *)((int)pvVar11 + 0x54) = *(undefined4 *)(&DAT_00031560 + uVar23 * 4);" (assignment_expression "*(undefined4 *)((int)pvVar11 + 0x54) = *(undefined4 *)(&DAT_00031560 + uVar23 * 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_00031560 + uVar23 * 4)" * (cast_expression "(undefined4 *)(&DAT_00031560 + uVar23 * 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_00031560 + uVar23 * 4)" ( (binary_expression "&DAT_00031560 + uVar23 * 4" (pointer_expression "&DAT_00031560" & identifier) + (binary_expression "uVar23 * 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 (uVar23 < 0xc) {\n            *(undefined4 *)((int)pvVar11 + 0x54) = *(undefined4 *)(&DAT_00031560 + uVar23 * 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 (uVar23 < 0xc) {\n            *(undefined4 *)((int)pvVar11 + 0x54) = *(undefined4 *)(&DAT_00031560 + uVar23 * 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 (uVar23 < 0xc) {\n            *(undefined4 *)((int)pvVar11 + 0x54) = *(undefined4 *)(&DAT_00031560 + uVar23 * 4);\n            uVar12 = 2;\n          }\n          else {\n            *(undefined4 *)((int)pvVar11 + 0x54) = 0;\n            uVar12 = 2;\n          }" if (parenthesized_expression "(uVar23 < 0xc)" ( (binary_expression "uVar23 < 0xc" identifier < number_literal) )) (compound_statement "{\n            *(undefined4 *)((int)pvVar11 + 0x54) = *(undefined4 *)(&DAT_00031560 + uVar23 * 4);\n            uVar12 = 2;\n          }" { (expression_statement "*(undefined4 *)((int)pvVar11 + 0x54) = *(undefined4 *)(&DAT_00031560 + uVar23 * 4);" (assignment_expression "*(undefined4 *)((int)pvVar11 + 0x54) = *(undefined4 *)(&DAT_00031560 + uVar23 * 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_00031560 + uVar23 * 4)" * (cast_expression "(undefined4 *)(&DAT_00031560 + uVar23 * 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_00031560 + uVar23 * 4)" ( (binary_expression "&DAT_00031560 + uVar23 * 4" (pointer_expression "&DAT_00031560" & identifier) + (binary_expression "uVar23 * 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        uVar8 = FUN_00024740();\n        *(undefined2 *)((int)pvVar11 + 0x3c) = uVar8;\n      }" else (compound_statement "{\n        uVar8 = FUN_00024740();\n        *(undefined2 *)((int)pvVar11 + 0x3c) = uVar8;\n      }" { (expression_statement "uVar8 = FUN_00024740();" (assignment_expression "uVar8 = FUN_00024740()" identifier = (call_expression "FUN_00024740()" identifier (argument_list "()" ( )))) ;) (expression_statement "*(undefined2 *)((int)pvVar11 + 0x3c) = uVar8;" (assignment_expression "*(undefined2 *)((int)pvVar11 + 0x3c) = uVar8" (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 "pvVar1 = pvVar11;" (assignment_expression "pvVar1 = pvVar11" identifier = identifier) ;) (if_statement "if (local_b8 != (void *)0x0) {\n        *(void **)((int)local_c4 + 8) = pvVar11;\n        pvVar1 = local_b8;\n      }" if (parenthesized_expression "(local_b8 != (void *)0x0)" ( (binary_expression "local_b8 != (void *)0x0" identifier != (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        *(void **)((int)local_c4 + 8) = pvVar11;\n        pvVar1 = local_b8;\n      }" { (expression_statement "*(void **)((int)local_c4 + 8) = pvVar11;" (assignment_expression "*(void **)((int)local_c4 + 8) = pvVar11" (pointer_expression "*(void **)((int)local_c4 + 8)" * (cast_expression "(void **)((int)local_c4 + 8)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)local_c4 + 8)" ( (binary_expression "(int)local_c4 + 8" (cast_expression "(int)local_c4" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "pvVar1 = local_b8;" (assignment_expression "pvVar1 = local_b8" identifier = identifier) ;) })) (expression_statement "local_b8 = pvVar1;" (assignment_expression "local_b8 = pvVar1" identifier = identifier) ;) (expression_statement "local_c4 = pvVar11;" (assignment_expression "local_c4 = pvVar11" identifier = identifier) ;) (if_statement "if (local_d4 == 10000) {\n        if (param_1[10] == 0) {\n          iVar17 = *(int *)(iVar2 + 0x2c);\n          if ((*(byte *)(iVar17 + 0x2d) & 2) != 0) {\n            iVar18 = *(int *)(iVar17 + 0x30);\n            if (iVar18 == 0) {\n              iVar18 = FUN_0001df90(0xd,0,FUN_000246b0,FUN_000246e0,puVar6);\n              *(int *)(iVar17 + 0x30) = iVar18;\n              if (iVar18 != 0) goto LAB_00025920;\nLAB_000259b0:\n              if ((local_9c < 0) ||\n                 (iVar19 = fstatfs64(local_9c,&local_74), iVar17 = local_74.f_type, iVar19 != 0))\n              goto LAB_00025a48;\n              local_d4 = local_74.f_type;\n              if ((iVar18 != 0) &&\n                 (__ptr_00 = (undefined4 *)malloc(0xc), __ptr_00 != (undefined4 *)0x0)) {\n                uVar12 = *(undefined4 *)(iVar2 + 0x44);\n                __ptr_00[1] = *(undefined4 *)(iVar2 + 0x48);\n                *__ptr_00 = uVar12;\n                __ptr_00[2] = iVar17;\n                puVar20 = (undefined4 *)FUN_0001e8d0(iVar18,__ptr_00);\n                if (puVar20 == (undefined4 *)0x0) {\n                  free(__ptr_00);\n                  local_d4 = local_74.f_type;\n                }\n                else {\n                  if (__ptr_00 != puVar20) {\n                    \n                    abort();\n                  }\n                  local_d4 = local_74.f_type;\n                }\n              }\n            }\n            else {\nLAB_00025920:\n              local_7c = *(undefined4 *)(iVar2 + 0x48);\n              local_80 = *(undefined4 *)(iVar2 + 0x44);\n              iVar17 = FUN_0001dce0(iVar18,&local_80);\n              if (iVar17 == 0) goto LAB_000259b0;\n              local_d4 = *(int *)(iVar17 + 8);\n            }\n            if (((local_d4 == 0x6969) || (local_d4 == 0x1021994)) || (local_d4 == -0xacb2be)) {\n              bVar4 = false;\n              goto LAB_00025473;\n            }\n          }\nLAB_00025a48:\n          bVar4 = true;\n        }\nLAB_00025473:\n        local_d4 = 0x2711;\n        goto LAB_000252fb;\n      }" if (parenthesized_expression "(local_d4 == 10000)" ( (binary_expression "local_d4 == 10000" identifier == number_literal) )) (compound_statement "{\n        if (param_1[10] == 0) {\n          iVar17 = *(int *)(iVar2 + 0x2c);\n          if ((*(byte *)(iVar17 + 0x2d) & 2) != 0) {\n            iVar18 = *(int *)(iVar17 + 0x30);\n            if (iVar18 == 0) {\n              iVar18 = FUN_0001df90(0xd,0,FUN_000246b0,FUN_000246e0,puVar6);\n              *(int *)(iVar17 + 0x30) = iVar18;\n              if (iVar18 != 0) goto LAB_00025920;\nLAB_000259b0:\n              if ((local_9c < 0) ||\n                 (iVar19 = fstatfs64(local_9c,&local_74), iVar17 = local_74.f_type, iVar19 != 0))\n              goto LAB_00025a48;\n              local_d4 = local_74.f_type;\n              if ((iVar18 != 0) &&\n                 (__ptr_00 = (undefined4 *)malloc(0xc), __ptr_00 != (undefined4 *)0x0)) {\n                uVar12 = *(undefined4 *)(iVar2 + 0x44);\n                __ptr_00[1] = *(undefined4 *)(iVar2 + 0x48);\n                *__ptr_00 = uVar12;\n                __ptr_00[2] = iVar17;\n                puVar20 = (undefined4 *)FUN_0001e8d0(iVar18,__ptr_00);\n                if (puVar20 == (undefined4 *)0x0) {\n                  free(__ptr_00);\n                  local_d4 = local_74.f_type;\n                }\n                else {\n                  if (__ptr_00 != puVar20) {\n                    \n                    abort();\n                  }\n                  local_d4 = local_74.f_type;\n                }\n              }\n            }\n            else {\nLAB_00025920:\n              local_7c = *(undefined4 *)(iVar2 + 0x48);\n              local_80 = *(undefined4 *)(iVar2 + 0x44);\n              iVar17 = FUN_0001dce0(iVar18,&local_80);\n              if (iVar17 == 0) goto LAB_000259b0;\n              local_d4 = *(int *)(iVar17 + 8);\n            }\n            if (((local_d4 == 0x6969) || (local_d4 == 0x1021994)) || (local_d4 == -0xacb2be)) {\n              bVar4 = false;\n              goto LAB_00025473;\n            }\n          }\nLAB_00025a48:\n          bVar4 = true;\n        }\nLAB_00025473:\n        local_d4 = 0x2711;\n        goto LAB_000252fb;\n      }" { (if_statement "if (param_1[10] == 0) {\n          iVar17 = *(int *)(iVar2 + 0x2c);\n          if ((*(byte *)(iVar17 + 0x2d) & 2) != 0) {\n            iVar18 = *(int *)(iVar17 + 0x30);\n            if (iVar18 == 0) {\n              iVar18 = FUN_0001df90(0xd,0,FUN_000246b0,FUN_000246e0,puVar6);\n              *(int *)(iVar17 + 0x30) = iVar18;\n              if (iVar18 != 0) goto LAB_00025920;\nLAB_000259b0:\n              if ((local_9c < 0) ||\n                 (iVar19 = fstatfs64(local_9c,&local_74), iVar17 = local_74.f_type, iVar19 != 0))\n              goto LAB_00025a48;\n              local_d4 = local_74.f_type;\n              if ((iVar18 != 0) &&\n                 (__ptr_00 = (undefined4 *)malloc(0xc), __ptr_00 != (undefined4 *)0x0)) {\n                uVar12 = *(undefined4 *)(iVar2 + 0x44);\n                __ptr_00[1] = *(undefined4 *)(iVar2 + 0x48);\n                *__ptr_00 = uVar12;\n                __ptr_00[2] = iVar17;\n                puVar20 = (undefined4 *)FUN_0001e8d0(iVar18,__ptr_00);\n                if (puVar20 == (undefined4 *)0x0) {\n                  free(__ptr_00);\n                  local_d4 = local_74.f_type;\n                }\n                else {\n                  if (__ptr_00 != puVar20) {\n                    \n                    abort();\n                  }\n                  local_d4 = local_74.f_type;\n                }\n              }\n            }\n            else {\nLAB_00025920:\n              local_7c = *(undefined4 *)(iVar2 + 0x48);\n              local_80 = *(undefined4 *)(iVar2 + 0x44);\n              iVar17 = FUN_0001dce0(iVar18,&local_80);\n              if (iVar17 == 0) goto LAB_000259b0;\n              local_d4 = *(int *)(iVar17 + 8);\n            }\n            if (((local_d4 == 0x6969) || (local_d4 == 0x1021994)) || (local_d4 == -0xacb2be)) {\n              bVar4 = false;\n              goto LAB_00025473;\n            }\n          }\nLAB_00025a48:\n          bVar4 = true;\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          iVar17 = *(int *)(iVar2 + 0x2c);\n          if ((*(byte *)(iVar17 + 0x2d) & 2) != 0) {\n            iVar18 = *(int *)(iVar17 + 0x30);\n            if (iVar18 == 0) {\n              iVar18 = FUN_0001df90(0xd,0,FUN_000246b0,FUN_000246e0,puVar6);\n              *(int *)(iVar17 + 0x30) = iVar18;\n              if (iVar18 != 0) goto LAB_00025920;\nLAB_000259b0:\n              if ((local_9c < 0) ||\n                 (iVar19 = fstatfs64(local_9c,&local_74), iVar17 = local_74.f_type, iVar19 != 0))\n              goto LAB_00025a48;\n              local_d4 = local_74.f_type;\n              if ((iVar18 != 0) &&\n                 (__ptr_00 = (undefined4 *)malloc(0xc), __ptr_00 != (undefined4 *)0x0)) {\n                uVar12 = *(undefined4 *)(iVar2 + 0x44);\n                __ptr_00[1] = *(undefined4 *)(iVar2 + 0x48);\n                *__ptr_00 = uVar12;\n                __ptr_00[2] = iVar17;\n                puVar20 = (undefined4 *)FUN_0001e8d0(iVar18,__ptr_00);\n                if (puVar20 == (undefined4 *)0x0) {\n                  free(__ptr_00);\n                  local_d4 = local_74.f_type;\n                }\n                else {\n                  if (__ptr_00 != puVar20) {\n                    \n                    abort();\n                  }\n                  local_d4 = local_74.f_type;\n                }\n              }\n            }\n            else {\nLAB_00025920:\n              local_7c = *(undefined4 *)(iVar2 + 0x48);\n              local_80 = *(undefined4 *)(iVar2 + 0x44);\n              iVar17 = FUN_0001dce0(iVar18,&local_80);\n              if (iVar17 == 0) goto LAB_000259b0;\n              local_d4 = *(int *)(iVar17 + 8);\n            }\n            if (((local_d4 == 0x6969) || (local_d4 == 0x1021994)) || (local_d4 == -0xacb2be)) {\n              bVar4 = false;\n              goto LAB_00025473;\n            }\n          }\nLAB_00025a48:\n          bVar4 = true;\n        }" { (expression_statement "iVar17 = *(int *)(iVar2 + 0x2c);" (assignment_expression "iVar17 = *(int *)(iVar2 + 0x2c)" identifier = (pointer_expression "*(int *)(iVar2 + 0x2c)" * (cast_expression "(int *)(iVar2 + 0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x2c)" ( (binary_expression "iVar2 + 0x2c" identifier + number_literal) ))))) ;) (if_statement "if ((*(byte *)(iVar17 + 0x2d) & 2) != 0) {\n            iVar18 = *(int *)(iVar17 + 0x30);\n            if (iVar18 == 0) {\n              iVar18 = FUN_0001df90(0xd,0,FUN_000246b0,FUN_000246e0,puVar6);\n              *(int *)(iVar17 + 0x30) = iVar18;\n              if (iVar18 != 0) goto LAB_00025920;\nLAB_000259b0:\n              if ((local_9c < 0) ||\n                 (iVar19 = fstatfs64(local_9c,&local_74), iVar17 = local_74.f_type, iVar19 != 0))\n              goto LAB_00025a48;\n              local_d4 = local_74.f_type;\n              if ((iVar18 != 0) &&\n                 (__ptr_00 = (undefined4 *)malloc(0xc), __ptr_00 != (undefined4 *)0x0)) {\n                uVar12 = *(undefined4 *)(iVar2 + 0x44);\n                __ptr_00[1] = *(undefined4 *)(iVar2 + 0x48);\n                *__ptr_00 = uVar12;\n                __ptr_00[2] = iVar17;\n                puVar20 = (undefined4 *)FUN_0001e8d0(iVar18,__ptr_00);\n                if (puVar20 == (undefined4 *)0x0) {\n                  free(__ptr_00);\n                  local_d4 = local_74.f_type;\n                }\n                else {\n                  if (__ptr_00 != puVar20) {\n                    \n                    abort();\n                  }\n                  local_d4 = local_74.f_type;\n                }\n              }\n            }\n            else {\nLAB_00025920:\n              local_7c = *(undefined4 *)(iVar2 + 0x48);\n              local_80 = *(undefined4 *)(iVar2 + 0x44);\n              iVar17 = FUN_0001dce0(iVar18,&local_80);\n              if (iVar17 == 0) goto LAB_000259b0;\n              local_d4 = *(int *)(iVar17 + 8);\n            }\n            if (((local_d4 == 0x6969) || (local_d4 == 0x1021994)) || (local_d4 == -0xacb2be)) {\n              bVar4 = false;\n              goto LAB_00025473;\n            }\n          }" if (parenthesized_expression "((*(byte *)(iVar17 + 0x2d) & 2) != 0)" ( (binary_expression "(*(byte *)(iVar17 + 0x2d) & 2) != 0" (parenthesized_expression "(*(byte *)(iVar17 + 0x2d) & 2)" ( (binary_expression "*(byte *)(iVar17 + 0x2d) & 2" (pointer_expression "*(byte *)(iVar17 + 0x2d)" * (cast_expression "(byte *)(iVar17 + 0x2d)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar17 + 0x2d)" ( (binary_expression "iVar17 + 0x2d" identifier + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n            iVar18 = *(int *)(iVar17 + 0x30);\n            if (iVar18 == 0) {\n              iVar18 = FUN_0001df90(0xd,0,FUN_000246b0,FUN_000246e0,puVar6);\n              *(int *)(iVar17 + 0x30) = iVar18;\n              if (iVar18 != 0) goto LAB_00025920;\nLAB_000259b0:\n              if ((local_9c < 0) ||\n                 (iVar19 = fstatfs64(local_9c,&local_74), iVar17 = local_74.f_type, iVar19 != 0))\n              goto LAB_00025a48;\n              local_d4 = local_74.f_type;\n              if ((iVar18 != 0) &&\n                 (__ptr_00 = (undefined4 *)malloc(0xc), __ptr_00 != (undefined4 *)0x0)) {\n                uVar12 = *(undefined4 *)(iVar2 + 0x44);\n                __ptr_00[1] = *(undefined4 *)(iVar2 + 0x48);\n                *__ptr_00 = uVar12;\n                __ptr_00[2] = iVar17;\n                puVar20 = (undefined4 *)FUN_0001e8d0(iVar18,__ptr_00);\n                if (puVar20 == (undefined4 *)0x0) {\n                  free(__ptr_00);\n                  local_d4 = local_74.f_type;\n                }\n                else {\n                  if (__ptr_00 != puVar20) {\n                    \n                    abort();\n                  }\n                  local_d4 = local_74.f_type;\n                }\n              }\n            }\n            else {\nLAB_00025920:\n              local_7c = *(undefined4 *)(iVar2 + 0x48);\n              local_80 = *(undefined4 *)(iVar2 + 0x44);\n              iVar17 = FUN_0001dce0(iVar18,&local_80);\n              if (iVar17 == 0) goto LAB_000259b0;\n              local_d4 = *(int *)(iVar17 + 8);\n            }\n            if (((local_d4 == 0x6969) || (local_d4 == 0x1021994)) || (local_d4 == -0xacb2be)) {\n              bVar4 = false;\n              goto LAB_00025473;\n            }\n          }" { (expression_statement "iVar18 = *(int *)(iVar17 + 0x30);" (assignment_expression "iVar18 = *(int *)(iVar17 + 0x30)" identifier = (pointer_expression "*(int *)(iVar17 + 0x30)" * (cast_expression "(int *)(iVar17 + 0x30)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar17 + 0x30)" ( (binary_expression "iVar17 + 0x30" identifier + number_literal) ))))) ;) (if_statement "if (iVar18 == 0) {\n              iVar18 = FUN_0001df90(0xd,0,FUN_000246b0,FUN_000246e0,puVar6);\n              *(int *)(iVar17 + 0x30) = iVar18;\n              if (iVar18 != 0) goto LAB_00025920;\nLAB_000259b0:\n              if ((local_9c < 0) ||\n                 (iVar19 = fstatfs64(local_9c,&local_74), iVar17 = local_74.f_type, iVar19 != 0))\n              goto LAB_00025a48;\n              local_d4 = local_74.f_type;\n              if ((iVar18 != 0) &&\n                 (__ptr_00 = (undefined4 *)malloc(0xc), __ptr_00 != (undefined4 *)0x0)) {\n                uVar12 = *(undefined4 *)(iVar2 + 0x44);\n                __ptr_00[1] = *(undefined4 *)(iVar2 + 0x48);\n                *__ptr_00 = uVar12;\n                __ptr_00[2] = iVar17;\n                puVar20 = (undefined4 *)FUN_0001e8d0(iVar18,__ptr_00);\n                if (puVar20 == (undefined4 *)0x0) {\n                  free(__ptr_00);\n                  local_d4 = local_74.f_type;\n                }\n                else {\n                  if (__ptr_00 != puVar20) {\n                    \n                    abort();\n                  }\n                  local_d4 = local_74.f_type;\n                }\n              }\n            }\n            else {\nLAB_00025920:\n              local_7c = *(undefined4 *)(iVar2 + 0x48);\n              local_80 = *(undefined4 *)(iVar2 + 0x44);\n              iVar17 = FUN_0001dce0(iVar18,&local_80);\n              if (iVar17 == 0) goto LAB_000259b0;\n              local_d4 = *(int *)(iVar17 + 8);\n            }" if (parenthesized_expression "(iVar18 == 0)" ( (binary_expression "iVar18 == 0" identifier == number_literal) )) (compound_statement "{\n              iVar18 = FUN_0001df90(0xd,0,FUN_000246b0,FUN_000246e0,puVar6);\n              *(int *)(iVar17 + 0x30) = iVar18;\n              if (iVar18 != 0) goto LAB_00025920;\nLAB_000259b0:\n              if ((local_9c < 0) ||\n                 (iVar19 = fstatfs64(local_9c,&local_74), iVar17 = local_74.f_type, iVar19 != 0))\n              goto LAB_00025a48;\n              local_d4 = local_74.f_type;\n              if ((iVar18 != 0) &&\n                 (__ptr_00 = (undefined4 *)malloc(0xc), __ptr_00 != (undefined4 *)0x0)) {\n                uVar12 = *(undefined4 *)(iVar2 + 0x44);\n                __ptr_00[1] = *(undefined4 *)(iVar2 + 0x48);\n                *__ptr_00 = uVar12;\n                __ptr_00[2] = iVar17;\n                puVar20 = (undefined4 *)FUN_0001e8d0(iVar18,__ptr_00);\n                if (puVar20 == (undefined4 *)0x0) {\n                  free(__ptr_00);\n                  local_d4 = local_74.f_type;\n                }\n                else {\n                  if (__ptr_00 != puVar20) {\n                    \n                    abort();\n                  }\n                  local_d4 = local_74.f_type;\n                }\n              }\n            }" { (expression_statement "iVar18 = FUN_0001df90(0xd,0,FUN_000246b0,FUN_000246e0,puVar6);" (assignment_expression "iVar18 = FUN_0001df90(0xd,0,FUN_000246b0,FUN_000246e0,puVar6)" identifier = (call_expression "FUN_0001df90(0xd,0,FUN_000246b0,FUN_000246e0,puVar6)" identifier (argument_list "(0xd,0,FUN_000246b0,FUN_000246e0,puVar6)" ( number_literal , number_literal , identifier , identifier , identifier )))) ;) (expression_statement "*(int *)(iVar17 + 0x30) = iVar18;" (assignment_expression "*(int *)(iVar17 + 0x30) = iVar18" (pointer_expression "*(int *)(iVar17 + 0x30)" * (cast_expression "(int *)(iVar17 + 0x30)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar17 + 0x30)" ( (binary_expression "iVar17 + 0x30" identifier + number_literal) )))) = identifier) ;) (if_statement "if (iVar18 != 0) goto LAB_00025920;" if (parenthesized_expression "(iVar18 != 0)" ( (binary_expression "iVar18 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00025920;" goto statement_identifier ;)) (labeled_statement "LAB_000259b0:\n              if ((local_9c < 0) ||\n                 (iVar19 = fstatfs64(local_9c,&local_74), iVar17 = local_74.f_type, iVar19 != 0))\n              goto LAB_00025a48;" statement_identifier : (if_statement "if ((local_9c < 0) ||\n                 (iVar19 = fstatfs64(local_9c,&local_74), iVar17 = local_74.f_type, iVar19 != 0))\n              goto LAB_00025a48;" if (parenthesized_expression "((local_9c < 0) ||\n                 (iVar19 = fstatfs64(local_9c,&local_74), iVar17 = local_74.f_type, iVar19 != 0))" ( (binary_expression "(local_9c < 0) ||\n                 (iVar19 = fstatfs64(local_9c,&local_74), iVar17 = local_74.f_type, iVar19 != 0)" (parenthesized_expression "(local_9c < 0)" ( (binary_expression "local_9c < 0" identifier < number_literal) )) || (parenthesized_expression "(iVar19 = fstatfs64(local_9c,&local_74), iVar17 = local_74.f_type, iVar19 != 0)" ( (comma_expression "iVar19 = fstatfs64(local_9c,&local_74), iVar17 = local_74.f_type, iVar19 != 0" (assignment_expression "iVar19 = fstatfs64(local_9c,&local_74)" identifier = (call_expression "fstatfs64(local_9c,&local_74)" identifier (argument_list "(local_9c,&local_74)" ( identifier , (pointer_expression "&local_74" & identifier) )))) , (comma_expression "iVar17 = local_74.f_type, iVar19 != 0" (assignment_expression "iVar17 = local_74.f_type" identifier = (field_expression "local_74.f_type" identifier . field_identifier)) , (binary_expression "iVar19 != 0" identifier != number_literal))) ))) )) (goto_statement "goto LAB_00025a48;" goto statement_identifier ;))) (expression_statement "local_d4 = local_74.f_type;" (assignment_expression "local_d4 = local_74.f_type" identifier = (field_expression "local_74.f_type" identifier . field_identifier)) ;) (if_statement "if ((iVar18 != 0) &&\n                 (__ptr_00 = (undefined4 *)malloc(0xc), __ptr_00 != (undefined4 *)0x0)) {\n                uVar12 = *(undefined4 *)(iVar2 + 0x44);\n                __ptr_00[1] = *(undefined4 *)(iVar2 + 0x48);\n                *__ptr_00 = uVar12;\n                __ptr_00[2] = iVar17;\n                puVar20 = (undefined4 *)FUN_0001e8d0(iVar18,__ptr_00);\n                if (puVar20 == (undefined4 *)0x0) {\n                  free(__ptr_00);\n                  local_d4 = local_74.f_type;\n                }\n                else {\n                  if (__ptr_00 != puVar20) {\n                    \n                    abort();\n                  }\n                  local_d4 = local_74.f_type;\n                }\n              }" if (parenthesized_expression "((iVar18 != 0) &&\n                 (__ptr_00 = (undefined4 *)malloc(0xc), __ptr_00 != (undefined4 *)0x0))" ( (binary_expression "(iVar18 != 0) &&\n                 (__ptr_00 = (undefined4 *)malloc(0xc), __ptr_00 != (undefined4 *)0x0)" (parenthesized_expression "(iVar18 != 0)" ( (binary_expression "iVar18 != 0" identifier != number_literal) )) && (parenthesized_expression "(__ptr_00 = (undefined4 *)malloc(0xc), __ptr_00 != (undefined4 *)0x0)" ( (comma_expression "__ptr_00 = (undefined4 *)malloc(0xc), __ptr_00 != (undefined4 *)0x0" (assignment_expression "__ptr_00 = (undefined4 *)malloc(0xc)" identifier = (cast_expression "(undefined4 *)malloc(0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "malloc(0xc)" identifier (argument_list "(0xc)" ( number_literal ))))) , (binary_expression "__ptr_00 != (undefined4 *)0x0" identifier != (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) (compound_statement "{\n                uVar12 = *(undefined4 *)(iVar2 + 0x44);\n                __ptr_00[1] = *(undefined4 *)(iVar2 + 0x48);\n                *__ptr_00 = uVar12;\n                __ptr_00[2] = iVar17;\n                puVar20 = (undefined4 *)FUN_0001e8d0(iVar18,__ptr_00);\n                if (puVar20 == (undefined4 *)0x0) {\n                  free(__ptr_00);\n                  local_d4 = local_74.f_type;\n                }\n                else {\n                  if (__ptr_00 != puVar20) {\n                    \n                    abort();\n                  }\n                  local_d4 = local_74.f_type;\n                }\n              }" { (expression_statement "uVar12 = *(undefined4 *)(iVar2 + 0x44);" (assignment_expression "uVar12 = *(undefined4 *)(iVar2 + 0x44)" identifier = (pointer_expression "*(undefined4 *)(iVar2 + 0x44)" * (cast_expression "(undefined4 *)(iVar2 + 0x44)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x44)" ( (binary_expression "iVar2 + 0x44" identifier + number_literal) ))))) ;) (expression_statement "__ptr_00[1] = *(undefined4 *)(iVar2 + 0x48);" (assignment_expression "__ptr_00[1] = *(undefined4 *)(iVar2 + 0x48)" (subscript_expression "__ptr_00[1]" identifier [ number_literal ]) = (pointer_expression "*(undefined4 *)(iVar2 + 0x48)" * (cast_expression "(undefined4 *)(iVar2 + 0x48)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x48)" ( (binary_expression "iVar2 + 0x48" identifier + number_literal) ))))) ;) (expression_statement "*__ptr_00 = uVar12;" (assignment_expression "*__ptr_00 = uVar12" (pointer_expression "*__ptr_00" * identifier) = identifier) ;) (expression_statement "__ptr_00[2] = iVar17;" (assignment_expression "__ptr_00[2] = iVar17" (subscript_expression "__ptr_00[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar20 = (undefined4 *)FUN_0001e8d0(iVar18,__ptr_00);" (assignment_expression "puVar20 = (undefined4 *)FUN_0001e8d0(iVar18,__ptr_00)" identifier = (cast_expression "(undefined4 *)FUN_0001e8d0(iVar18,__ptr_00)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0001e8d0(iVar18,__ptr_00)" identifier (argument_list "(iVar18,__ptr_00)" ( identifier , identifier ))))) ;) (if_statement "if (puVar20 == (undefined4 *)0x0) {\n                  free(__ptr_00);\n                  local_d4 = local_74.f_type;\n                }\n                else {\n                  if (__ptr_00 != puVar20) {\n                    \n                    abort();\n                  }\n                  local_d4 = local_74.f_type;\n                }" if (parenthesized_expression "(puVar20 == (undefined4 *)0x0)" ( (binary_expression "puVar20 == (undefined4 *)0x0" identifier == (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                  free(__ptr_00);\n                  local_d4 = local_74.f_type;\n                }" { (expression_statement "free(__ptr_00);" (call_expression "free(__ptr_00)" identifier (argument_list "(__ptr_00)" ( identifier ))) ;) (expression_statement "local_d4 = local_74.f_type;" (assignment_expression "local_d4 = local_74.f_type" identifier = (field_expression "local_74.f_type" identifier . field_identifier)) ;) }) (else_clause "else {\n                  if (__ptr_00 != puVar20) {\n                    \n                    abort();\n                  }\n                  local_d4 = local_74.f_type;\n                }" else (compound_statement "{\n                  if (__ptr_00 != puVar20) {\n                    \n                    abort();\n                  }\n                  local_d4 = local_74.f_type;\n                }" { (if_statement "if (__ptr_00 != puVar20) {\n                    \n                    abort();\n                  }" if (parenthesized_expression "(__ptr_00 != puVar20)" ( (binary_expression "__ptr_00 != puVar20" identifier != identifier) )) (compound_statement "{\n                    \n                    abort();\n                  }" { (expression_statement "abort();" (call_expression "abort()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "local_d4 = local_74.f_type;" (assignment_expression "local_d4 = local_74.f_type" identifier = (field_expression "local_74.f_type" identifier . field_identifier)) ;) }))) })) }) (else_clause "else {\nLAB_00025920:\n              local_7c = *(undefined4 *)(iVar2 + 0x48);\n              local_80 = *(undefined4 *)(iVar2 + 0x44);\n              iVar17 = FUN_0001dce0(iVar18,&local_80);\n              if (iVar17 == 0) goto LAB_000259b0;\n              local_d4 = *(int *)(iVar17 + 8);\n            }" else (compound_statement "{\nLAB_00025920:\n              local_7c = *(undefined4 *)(iVar2 + 0x48);\n              local_80 = *(undefined4 *)(iVar2 + 0x44);\n              iVar17 = FUN_0001dce0(iVar18,&local_80);\n              if (iVar17 == 0) goto LAB_000259b0;\n              local_d4 = *(int *)(iVar17 + 8);\n            }" { (labeled_statement "LAB_00025920:\n              local_7c = *(undefined4 *)(iVar2 + 0x48);" statement_identifier : (expression_statement "local_7c = *(undefined4 *)(iVar2 + 0x48);" (assignment_expression "local_7c = *(undefined4 *)(iVar2 + 0x48)" identifier = (pointer_expression "*(undefined4 *)(iVar2 + 0x48)" * (cast_expression "(undefined4 *)(iVar2 + 0x48)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x48)" ( (binary_expression "iVar2 + 0x48" identifier + number_literal) ))))) ;)) (expression_statement "local_80 = *(undefined4 *)(iVar2 + 0x44);" (assignment_expression "local_80 = *(undefined4 *)(iVar2 + 0x44)" identifier = (pointer_expression "*(undefined4 *)(iVar2 + 0x44)" * (cast_expression "(undefined4 *)(iVar2 + 0x44)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x44)" ( (binary_expression "iVar2 + 0x44" identifier + number_literal) ))))) ;) (expression_statement "iVar17 = FUN_0001dce0(iVar18,&local_80);" (assignment_expression "iVar17 = FUN_0001dce0(iVar18,&local_80)" identifier = (call_expression "FUN_0001dce0(iVar18,&local_80)" identifier (argument_list "(iVar18,&local_80)" ( identifier , (pointer_expression "&local_80" & identifier) )))) ;) (if_statement "if (iVar17 == 0) goto LAB_000259b0;" if (parenthesized_expression "(iVar17 == 0)" ( (binary_expression "iVar17 == 0" identifier == number_literal) )) (goto_statement "goto LAB_000259b0;" goto statement_identifier ;)) (expression_statement "local_d4 = *(int *)(iVar17 + 8);" (assignment_expression "local_d4 = *(int *)(iVar17 + 8)" identifier = (pointer_expression "*(int *)(iVar17 + 8)" * (cast_expression "(int *)(iVar17 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar17 + 8)" ( (binary_expression "iVar17 + 8" identifier + number_literal) ))))) ;) }))) (if_statement "if (((local_d4 == 0x6969) || (local_d4 == 0x1021994)) || (local_d4 == -0xacb2be)) {\n              bVar4 = false;\n              goto LAB_00025473;\n            }" if (parenthesized_expression "(((local_d4 == 0x6969) || (local_d4 == 0x1021994)) || (local_d4 == -0xacb2be))" ( (binary_expression "((local_d4 == 0x6969) || (local_d4 == 0x1021994)) || (local_d4 == -0xacb2be)" (parenthesized_expression "((local_d4 == 0x6969) || (local_d4 == 0x1021994))" ( (binary_expression "(local_d4 == 0x6969) || (local_d4 == 0x1021994)" (parenthesized_expression "(local_d4 == 0x6969)" ( (binary_expression "local_d4 == 0x6969" identifier == number_literal) )) || (parenthesized_expression "(local_d4 == 0x1021994)" ( (binary_expression "local_d4 == 0x1021994" identifier == number_literal) ))) )) || (parenthesized_expression "(local_d4 == -0xacb2be)" ( (binary_expression "local_d4 == -0xacb2be" identifier == number_literal) ))) )) (compound_statement "{\n              bVar4 = false;\n              goto LAB_00025473;\n            }" { (expression_statement "bVar4 = false;" (assignment_expression "bVar4 = false" identifier = false) ;) (goto_statement "goto LAB_00025473;" goto statement_identifier ;) })) })) (labeled_statement "LAB_00025a48:\n          bVar4 = true;" statement_identifier : (expression_statement "bVar4 = true;" (assignment_expression "bVar4 = true" identifier = true) ;)) })) (labeled_statement "LAB_00025473:\n        local_d4 = 0x2711;" statement_identifier : (expression_statement "local_d4 = 0x2711;" (assignment_expression "local_d4 = 0x2711" identifier = number_literal) ;)) (goto_statement "goto LAB_000252fb;" goto statement_identifier ;) })) (expression_statement "local_d4 = local_d4 + 1;" (assignment_expression "local_d4 = local_d4 + 1" identifier = (binary_expression "local_d4 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(local_d4 < local_a8)" ( (binary_expression "local_d4 < local_a8" identifier < identifier) )) ;)) (labeled_statement "LAB_000256de:\n    if (bVar3) {\n      iVar15 = param_1[5];\n      for (iVar17 = param_1[1]; iVar17 != 0; iVar17 = *(int *)(iVar17 + 8)) {\n        while (*(int *)(iVar17 + 0x18) != iVar17 + 0xa4) {\n          iVar18 = *(int *)(iVar17 + 0x1c);\n          *(int *)(iVar17 + 0x1c) = iVar15;\n          *(int *)(iVar17 + 0x18) = (*(int *)(iVar17 + 0x18) - iVar18) + iVar15;\n          iVar17 = *(int *)(iVar17 + 8);\n          if (iVar17 == 0) goto LAB_00025aef;\n        }\n        *(int *)(iVar17 + 0x1c) = iVar15;\n      }\nLAB_00025aef:\n      iVar17 = *(int *)((int)local_b8 + 0x30);\n      pvVar11 = local_b8;\n      while (-1 < iVar17) {\n        while( true ) {\n          if (*(int *)((int)pvVar11 + 0x18) != (int)pvVar11 + 0xa4) {\n            *(int *)((int)pvVar11 + 0x18) =\n                 (*(int *)((int)pvVar11 + 0x18) - *(int *)((int)pvVar11 + 0x1c)) + iVar15;\n          }\n          pvVar1 = *(void **)((int)pvVar11 + 8);\n          *(int *)((int)pvVar11 + 0x1c) = iVar15;\n          if (pvVar1 == (void *)0x0) break;\n          pvVar11 = pvVar1;\n          if (*(int *)((int)pvVar1 + 0x30) < 0) goto LAB_000256e9;\n        }\n        pvVar11 = *(void **)((int)pvVar11 + 4);\n        iVar17 = *(int *)((int)pvVar11 + 0x30);\n      }\n    }" statement_identifier : (if_statement "if (bVar3) {\n      iVar15 = param_1[5];\n      for (iVar17 = param_1[1]; iVar17 != 0; iVar17 = *(int *)(iVar17 + 8)) {\n        while (*(int *)(iVar17 + 0x18) != iVar17 + 0xa4) {\n          iVar18 = *(int *)(iVar17 + 0x1c);\n          *(int *)(iVar17 + 0x1c) = iVar15;\n          *(int *)(iVar17 + 0x18) = (*(int *)(iVar17 + 0x18) - iVar18) + iVar15;\n          iVar17 = *(int *)(iVar17 + 8);\n          if (iVar17 == 0) goto LAB_00025aef;\n        }\n        *(int *)(iVar17 + 0x1c) = iVar15;\n      }\nLAB_00025aef:\n      iVar17 = *(int *)((int)local_b8 + 0x30);\n      pvVar11 = local_b8;\n      while (-1 < iVar17) {\n        while( true ) {\n          if (*(int *)((int)pvVar11 + 0x18) != (int)pvVar11 + 0xa4) {\n            *(int *)((int)pvVar11 + 0x18) =\n                 (*(int *)((int)pvVar11 + 0x18) - *(int *)((int)pvVar11 + 0x1c)) + iVar15;\n          }\n          pvVar1 = *(void **)((int)pvVar11 + 8);\n          *(int *)((int)pvVar11 + 0x1c) = iVar15;\n          if (pvVar1 == (void *)0x0) break;\n          pvVar11 = pvVar1;\n          if (*(int *)((int)pvVar1 + 0x30) < 0) goto LAB_000256e9;\n        }\n        pvVar11 = *(void **)((int)pvVar11 + 4);\n        iVar17 = *(int *)((int)pvVar11 + 0x30);\n      }\n    }" if (parenthesized_expression "(bVar3)" ( identifier )) (compound_statement "{\n      iVar15 = param_1[5];\n      for (iVar17 = param_1[1]; iVar17 != 0; iVar17 = *(int *)(iVar17 + 8)) {\n        while (*(int *)(iVar17 + 0x18) != iVar17 + 0xa4) {\n          iVar18 = *(int *)(iVar17 + 0x1c);\n          *(int *)(iVar17 + 0x1c) = iVar15;\n          *(int *)(iVar17 + 0x18) = (*(int *)(iVar17 + 0x18) - iVar18) + iVar15;\n          iVar17 = *(int *)(iVar17 + 8);\n          if (iVar17 == 0) goto LAB_00025aef;\n        }\n        *(int *)(iVar17 + 0x1c) = iVar15;\n      }\nLAB_00025aef:\n      iVar17 = *(int *)((int)local_b8 + 0x30);\n      pvVar11 = local_b8;\n      while (-1 < iVar17) {\n        while( true ) {\n          if (*(int *)((int)pvVar11 + 0x18) != (int)pvVar11 + 0xa4) {\n            *(int *)((int)pvVar11 + 0x18) =\n                 (*(int *)((int)pvVar11 + 0x18) - *(int *)((int)pvVar11 + 0x1c)) + iVar15;\n          }\n          pvVar1 = *(void **)((int)pvVar11 + 8);\n          *(int *)((int)pvVar11 + 0x1c) = iVar15;\n          if (pvVar1 == (void *)0x0) break;\n          pvVar11 = pvVar1;\n          if (*(int *)((int)pvVar1 + 0x30) < 0) goto LAB_000256e9;\n        }\n        pvVar11 = *(void **)((int)pvVar11 + 4);\n        iVar17 = *(int *)((int)pvVar11 + 0x30);\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 (iVar17 = param_1[1]; iVar17 != 0; iVar17 = *(int *)(iVar17 + 8)) {\n        while (*(int *)(iVar17 + 0x18) != iVar17 + 0xa4) {\n          iVar18 = *(int *)(iVar17 + 0x1c);\n          *(int *)(iVar17 + 0x1c) = iVar15;\n          *(int *)(iVar17 + 0x18) = (*(int *)(iVar17 + 0x18) - iVar18) + iVar15;\n          iVar17 = *(int *)(iVar17 + 8);\n          if (iVar17 == 0) goto LAB_00025aef;\n        }\n        *(int *)(iVar17 + 0x1c) = iVar15;\n      }" for ( (assignment_expression "iVar17 = param_1[1]" identifier = (subscript_expression "param_1[1]" identifier [ number_literal ])) ; (binary_expression "iVar17 != 0" identifier != number_literal) ; (assignment_expression "iVar17 = *(int *)(iVar17 + 8)" identifier = (pointer_expression "*(int *)(iVar17 + 8)" * (cast_expression "(int *)(iVar17 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar17 + 8)" ( (binary_expression "iVar17 + 8" identifier + number_literal) ))))) ) (compound_statement "{\n        while (*(int *)(iVar17 + 0x18) != iVar17 + 0xa4) {\n          iVar18 = *(int *)(iVar17 + 0x1c);\n          *(int *)(iVar17 + 0x1c) = iVar15;\n          *(int *)(iVar17 + 0x18) = (*(int *)(iVar17 + 0x18) - iVar18) + iVar15;\n          iVar17 = *(int *)(iVar17 + 8);\n          if (iVar17 == 0) goto LAB_00025aef;\n        }\n        *(int *)(iVar17 + 0x1c) = iVar15;\n      }" { (while_statement "while (*(int *)(iVar17 + 0x18) != iVar17 + 0xa4) {\n          iVar18 = *(int *)(iVar17 + 0x1c);\n          *(int *)(iVar17 + 0x1c) = iVar15;\n          *(int *)(iVar17 + 0x18) = (*(int *)(iVar17 + 0x18) - iVar18) + iVar15;\n          iVar17 = *(int *)(iVar17 + 8);\n          if (iVar17 == 0) goto LAB_00025aef;\n        }" while (parenthesized_expression "(*(int *)(iVar17 + 0x18) != iVar17 + 0xa4)" ( (binary_expression "*(int *)(iVar17 + 0x18) != iVar17 + 0xa4" (pointer_expression "*(int *)(iVar17 + 0x18)" * (cast_expression "(int *)(iVar17 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar17 + 0x18)" ( (binary_expression "iVar17 + 0x18" identifier + number_literal) )))) != (binary_expression "iVar17 + 0xa4" identifier + number_literal)) )) (compound_statement "{\n          iVar18 = *(int *)(iVar17 + 0x1c);\n          *(int *)(iVar17 + 0x1c) = iVar15;\n          *(int *)(iVar17 + 0x18) = (*(int *)(iVar17 + 0x18) - iVar18) + iVar15;\n          iVar17 = *(int *)(iVar17 + 8);\n          if (iVar17 == 0) goto LAB_00025aef;\n        }" { (expression_statement "iVar18 = *(int *)(iVar17 + 0x1c);" (assignment_expression "iVar18 = *(int *)(iVar17 + 0x1c)" identifier = (pointer_expression "*(int *)(iVar17 + 0x1c)" * (cast_expression "(int *)(iVar17 + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar17 + 0x1c)" ( (binary_expression "iVar17 + 0x1c" identifier + number_literal) ))))) ;) (expression_statement "*(int *)(iVar17 + 0x1c) = iVar15;" (assignment_expression "*(int *)(iVar17 + 0x1c) = iVar15" (pointer_expression "*(int *)(iVar17 + 0x1c)" * (cast_expression "(int *)(iVar17 + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar17 + 0x1c)" ( (binary_expression "iVar17 + 0x1c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(iVar17 + 0x18) = (*(int *)(iVar17 + 0x18) - iVar18) + iVar15;" (assignment_expression "*(int *)(iVar17 + 0x18) = (*(int *)(iVar17 + 0x18) - iVar18) + iVar15" (pointer_expression "*(int *)(iVar17 + 0x18)" * (cast_expression "(int *)(iVar17 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar17 + 0x18)" ( (binary_expression "iVar17 + 0x18" identifier + number_literal) )))) = (binary_expression "(*(int *)(iVar17 + 0x18) - iVar18) + iVar15" (parenthesized_expression "(*(int *)(iVar17 + 0x18) - iVar18)" ( (binary_expression "*(int *)(iVar17 + 0x18) - iVar18" (pointer_expression "*(int *)(iVar17 + 0x18)" * (cast_expression "(int *)(iVar17 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar17 + 0x18)" ( (binary_expression "iVar17 + 0x18" identifier + number_literal) )))) - identifier) )) + identifier)) ;) (expression_statement "iVar17 = *(int *)(iVar17 + 8);" (assignment_expression "iVar17 = *(int *)(iVar17 + 8)" identifier = (pointer_expression "*(int *)(iVar17 + 8)" * (cast_expression "(int *)(iVar17 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar17 + 8)" ( (binary_expression "iVar17 + 8" identifier + number_literal) ))))) ;) (if_statement "if (iVar17 == 0) goto LAB_00025aef;" if (parenthesized_expression "(iVar17 == 0)" ( (binary_expression "iVar17 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00025aef;" goto statement_identifier ;)) })) (expression_statement "*(int *)(iVar17 + 0x1c) = iVar15;" (assignment_expression "*(int *)(iVar17 + 0x1c) = iVar15" (pointer_expression "*(int *)(iVar17 + 0x1c)" * (cast_expression "(int *)(iVar17 + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar17 + 0x1c)" ( (binary_expression "iVar17 + 0x1c" identifier + number_literal) )))) = identifier) ;) })) (labeled_statement "LAB_00025aef:\n      iVar17 = *(int *)((int)local_b8 + 0x30);" statement_identifier : (expression_statement "iVar17 = *(int *)((int)local_b8 + 0x30);" (assignment_expression "iVar17 = *(int *)((int)local_b8 + 0x30)" identifier = (pointer_expression "*(int *)((int)local_b8 + 0x30)" * (cast_expression "(int *)((int)local_b8 + 0x30)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_b8 + 0x30)" ( (binary_expression "(int)local_b8 + 0x30" (cast_expression "(int)local_b8" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;)) (expression_statement "pvVar11 = local_b8;" (assignment_expression "pvVar11 = local_b8" identifier = identifier) ;) (while_statement "while (-1 < iVar17) {\n        while( true ) {\n          if (*(int *)((int)pvVar11 + 0x18) != (int)pvVar11 + 0xa4) {\n            *(int *)((int)pvVar11 + 0x18) =\n                 (*(int *)((int)pvVar11 + 0x18) - *(int *)((int)pvVar11 + 0x1c)) + iVar15;\n          }\n          pvVar1 = *(void **)((int)pvVar11 + 8);\n          *(int *)((int)pvVar11 + 0x1c) = iVar15;\n          if (pvVar1 == (void *)0x0) break;\n          pvVar11 = pvVar1;\n          if (*(int *)((int)pvVar1 + 0x30) < 0) goto LAB_000256e9;\n        }\n        pvVar11 = *(void **)((int)pvVar11 + 4);\n        iVar17 = *(int *)((int)pvVar11 + 0x30);\n      }" while (parenthesized_expression "(-1 < iVar17)" ( (binary_expression "-1 < iVar17" number_literal < identifier) )) (compound_statement "{\n        while( true ) {\n          if (*(int *)((int)pvVar11 + 0x18) != (int)pvVar11 + 0xa4) {\n            *(int *)((int)pvVar11 + 0x18) =\n                 (*(int *)((int)pvVar11 + 0x18) - *(int *)((int)pvVar11 + 0x1c)) + iVar15;\n          }\n          pvVar1 = *(void **)((int)pvVar11 + 8);\n          *(int *)((int)pvVar11 + 0x1c) = iVar15;\n          if (pvVar1 == (void *)0x0) break;\n          pvVar11 = pvVar1;\n          if (*(int *)((int)pvVar1 + 0x30) < 0) goto LAB_000256e9;\n        }\n        pvVar11 = *(void **)((int)pvVar11 + 4);\n        iVar17 = *(int *)((int)pvVar11 + 0x30);\n      }" { (while_statement "while( true ) {\n          if (*(int *)((int)pvVar11 + 0x18) != (int)pvVar11 + 0xa4) {\n            *(int *)((int)pvVar11 + 0x18) =\n                 (*(int *)((int)pvVar11 + 0x18) - *(int *)((int)pvVar11 + 0x1c)) + iVar15;\n          }\n          pvVar1 = *(void **)((int)pvVar11 + 8);\n          *(int *)((int)pvVar11 + 0x1c) = iVar15;\n          if (pvVar1 == (void *)0x0) break;\n          pvVar11 = pvVar1;\n          if (*(int *)((int)pvVar1 + 0x30) < 0) goto LAB_000256e9;\n        }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n          if (*(int *)((int)pvVar11 + 0x18) != (int)pvVar11 + 0xa4) {\n            *(int *)((int)pvVar11 + 0x18) =\n                 (*(int *)((int)pvVar11 + 0x18) - *(int *)((int)pvVar11 + 0x1c)) + iVar15;\n          }\n          pvVar1 = *(void **)((int)pvVar11 + 8);\n          *(int *)((int)pvVar11 + 0x1c) = iVar15;\n          if (pvVar1 == (void *)0x0) break;\n          pvVar11 = pvVar1;\n          if (*(int *)((int)pvVar1 + 0x30) < 0) goto LAB_000256e9;\n        }" { (if_statement "if (*(int *)((int)pvVar11 + 0x18) != (int)pvVar11 + 0xa4) {\n            *(int *)((int)pvVar11 + 0x18) =\n                 (*(int *)((int)pvVar11 + 0x18) - *(int *)((int)pvVar11 + 0x1c)) + iVar15;\n          }" if (parenthesized_expression "(*(int *)((int)pvVar11 + 0x18) != (int)pvVar11 + 0xa4)" ( (binary_expression "*(int *)((int)pvVar11 + 0x18) != (int)pvVar11 + 0xa4" (pointer_expression "*(int *)((int)pvVar11 + 0x18)" * (cast_expression "(int *)((int)pvVar11 + 0x18)" ( (type_descriptor "int *" primitive_type (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) )))) != (binary_expression "(int)pvVar11 + 0xa4" (cast_expression "(int)pvVar11" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal)) )) (compound_statement "{\n            *(int *)((int)pvVar11 + 0x18) =\n                 (*(int *)((int)pvVar11 + 0x18) - *(int *)((int)pvVar11 + 0x1c)) + iVar15;\n          }" { (expression_statement "*(int *)((int)pvVar11 + 0x18) =\n                 (*(int *)((int)pvVar11 + 0x18) - *(int *)((int)pvVar11 + 0x1c)) + iVar15;" (assignment_expression "*(int *)((int)pvVar11 + 0x18) =\n                 (*(int *)((int)pvVar11 + 0x18) - *(int *)((int)pvVar11 + 0x1c)) + iVar15" (pointer_expression "*(int *)((int)pvVar11 + 0x18)" * (cast_expression "(int *)((int)pvVar11 + 0x18)" ( (type_descriptor "int *" primitive_type (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) )))) = (binary_expression "(*(int *)((int)pvVar11 + 0x18) - *(int *)((int)pvVar11 + 0x1c)) + iVar15" (parenthesized_expression "(*(int *)((int)pvVar11 + 0x18) - *(int *)((int)pvVar11 + 0x1c))" ( (binary_expression "*(int *)((int)pvVar11 + 0x18) - *(int *)((int)pvVar11 + 0x1c)" (pointer_expression "*(int *)((int)pvVar11 + 0x18)" * (cast_expression "(int *)((int)pvVar11 + 0x18)" ( (type_descriptor "int *" primitive_type (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 "*(int *)((int)pvVar11 + 0x1c)" * (cast_expression "(int *)((int)pvVar11 + 0x1c)" ( (type_descriptor "int *" primitive_type (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) ))))) )) + identifier)) ;) })) (expression_statement "pvVar1 = *(void **)((int)pvVar11 + 8);" (assignment_expression "pvVar1 = *(void **)((int)pvVar11 + 8)" identifier = (pointer_expression "*(void **)((int)pvVar11 + 8)" * (cast_expression "(void **)((int)pvVar11 + 8)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (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) ))))) ;) (expression_statement "*(int *)((int)pvVar11 + 0x1c) = iVar15;" (assignment_expression "*(int *)((int)pvVar11 + 0x1c) = iVar15" (pointer_expression "*(int *)((int)pvVar11 + 0x1c)" * (cast_expression "(int *)((int)pvVar11 + 0x1c)" ( (type_descriptor "int *" primitive_type (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) )))) = identifier) ;) (if_statement "if (pvVar1 == (void *)0x0) break;" if (parenthesized_expression "(pvVar1 == (void *)0x0)" ( (binary_expression "pvVar1 == (void *)0x0" identifier == (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (break_statement "break;" break ;)) (expression_statement "pvVar11 = pvVar1;" (assignment_expression "pvVar11 = pvVar1" identifier = identifier) ;) (if_statement "if (*(int *)((int)pvVar1 + 0x30) < 0) goto LAB_000256e9;" if (parenthesized_expression "(*(int *)((int)pvVar1 + 0x30) < 0)" ( (binary_expression "*(int *)((int)pvVar1 + 0x30) < 0" (pointer_expression "*(int *)((int)pvVar1 + 0x30)" * (cast_expression "(int *)((int)pvVar1 + 0x30)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pvVar1 + 0x30)" ( (binary_expression "(int)pvVar1 + 0x30" (cast_expression "(int)pvVar1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) < number_literal) )) (goto_statement "goto LAB_000256e9;" goto statement_identifier ;)) })) (expression_statement "pvVar11 = *(void **)((int)pvVar11 + 4);" (assignment_expression "pvVar11 = *(void **)((int)pvVar11 + 4)" identifier = (pointer_expression "*(void **)((int)pvVar11 + 4)" * (cast_expression "(void **)((int)pvVar11 + 4)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (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) ))))) ;) (expression_statement "iVar17 = *(int *)((int)pvVar11 + 0x30);" (assignment_expression "iVar17 = *(int *)((int)pvVar11 + 0x30)" identifier = (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) ))))) ;) })) }))) (labeled_statement "LAB_000256e9:\n    if ((*(byte *)(param_1 + 0xb) & 4) != 0) {\n      if ((param_1[8] == local_d0) || (local_d4 == 0)) {\n        local_a4 = local_a4 + -1;\n      }\n      *local_a4 = 0;\n    }" statement_identifier : (if_statement "if ((*(byte *)(param_1 + 0xb) & 4) != 0) {\n      if ((param_1[8] == local_d0) || (local_d4 == 0)) {\n        local_a4 = local_a4 + -1;\n      }\n      *local_a4 = 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_d0) || (local_d4 == 0)) {\n        local_a4 = local_a4 + -1;\n      }\n      *local_a4 = 0;\n    }" { (if_statement "if ((param_1[8] == local_d0) || (local_d4 == 0)) {\n        local_a4 = local_a4 + -1;\n      }" if (parenthesized_expression "((param_1[8] == local_d0) || (local_d4 == 0))" ( (binary_expression "(param_1[8] == local_d0) || (local_d4 == 0)" (parenthesized_expression "(param_1[8] == local_d0)" ( (binary_expression "param_1[8] == local_d0" (subscript_expression "param_1[8]" identifier [ number_literal ]) == identifier) )) || (parenthesized_expression "(local_d4 == 0)" ( (binary_expression "local_d4 == 0" identifier == number_literal) ))) )) (compound_statement "{\n        local_a4 = local_a4 + -1;\n      }" { (expression_statement "local_a4 = local_a4 + -1;" (assignment_expression "local_a4 = local_a4 + -1" identifier = (binary_expression "local_a4 + -1" identifier + number_literal)) ;) })) (expression_statement "*local_a4 = 0;" (assignment_expression "*local_a4 = 0" (pointer_expression "*local_a4" * identifier) = number_literal) ;) }))) (if_statement "if ((pDVar21 == (DIR *)0x0) && (bVar25)) {\n      if ((param_2 == 1) || (local_d4 == 0)) {\n        if (*(int *)(iVar2 + 0x30) == 0) {\n          iVar15 = FUN_00024bb0();\n        }\n        else {\n          iVar15 = FUN_00024e60(&DAT_0002e141);\n        }\n        if (iVar15 != 0) {\n          *(undefined2 *)(iVar2 + 0x3c) = 7;\n          param_1[0xb] = param_1[0xb] | 0x4000;\n          while (pvVar11 = local_b8, local_b8 != (void *)0x0) {\n            while( true ) {\n              local_b8 = *(void **)((int)pvVar11 + 8);\n              if (*(DIR **)((int)pvVar11 + 0xc) == (DIR *)0x0) break;\n              closedir(*(DIR **)((int)pvVar11 + 0xc));\n              free(pvVar11);\n              pvVar11 = local_b8;\n              if (local_b8 == (void *)0x0) goto LAB_00025c40;\n            }\n            free(pvVar11);\n          }\n          goto LAB_00025c40;\n        }\n        goto LAB_0002574d;\n      }\n    }\n    else {\nLAB_0002574d:\n      if (local_d4 == 0) {\n        if (((param_2 == 3) && (*(short *)(iVar2 + 0x3c) != 4)) && (*(short *)(iVar2 + 0x3c) != 7))\n        {\n          *(undefined2 *)(iVar2 + 0x3c) = 6;\n        }\n        if (local_b8 != (void *)0x0) {\n          pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n          pvVar11 = *(void **)((int)local_b8 + 8);\n          if (pDVar21 == (DIR *)0x0) goto LAB_00025c94;\n          do {\n            closedir(pDVar21);\n            free(local_b8);\n            local_b8 = pvVar11;\n            while( true ) {\n              if (local_b8 == (void *)0x0) goto LAB_00025c40;\n              pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n              pvVar11 = *(void **)((int)local_b8 + 8);\n              if (pDVar21 != (DIR *)0x0) break;\nLAB_00025c94:\n              free(local_b8);\n              local_b8 = pvVar11;\n            }\n          } while( true );\n        }\n        goto LAB_00025c40;\n      }\n    }" if (parenthesized_expression "((pDVar21 == (DIR *)0x0) && (bVar25))" ( (binary_expression "(pDVar21 == (DIR *)0x0) && (bVar25)" (parenthesized_expression "(pDVar21 == (DIR *)0x0)" ( (binary_expression "pDVar21 == (DIR *)0x0" identifier == (cast_expression "(DIR *)0x0" ( (type_descriptor "DIR *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(bVar25)" ( identifier ))) )) (compound_statement "{\n      if ((param_2 == 1) || (local_d4 == 0)) {\n        if (*(int *)(iVar2 + 0x30) == 0) {\n          iVar15 = FUN_00024bb0();\n        }\n        else {\n          iVar15 = FUN_00024e60(&DAT_0002e141);\n        }\n        if (iVar15 != 0) {\n          *(undefined2 *)(iVar2 + 0x3c) = 7;\n          param_1[0xb] = param_1[0xb] | 0x4000;\n          while (pvVar11 = local_b8, local_b8 != (void *)0x0) {\n            while( true ) {\n              local_b8 = *(void **)((int)pvVar11 + 8);\n              if (*(DIR **)((int)pvVar11 + 0xc) == (DIR *)0x0) break;\n              closedir(*(DIR **)((int)pvVar11 + 0xc));\n              free(pvVar11);\n              pvVar11 = local_b8;\n              if (local_b8 == (void *)0x0) goto LAB_00025c40;\n            }\n            free(pvVar11);\n          }\n          goto LAB_00025c40;\n        }\n        goto LAB_0002574d;\n      }\n    }" { (if_statement "if ((param_2 == 1) || (local_d4 == 0)) {\n        if (*(int *)(iVar2 + 0x30) == 0) {\n          iVar15 = FUN_00024bb0();\n        }\n        else {\n          iVar15 = FUN_00024e60(&DAT_0002e141);\n        }\n        if (iVar15 != 0) {\n          *(undefined2 *)(iVar2 + 0x3c) = 7;\n          param_1[0xb] = param_1[0xb] | 0x4000;\n          while (pvVar11 = local_b8, local_b8 != (void *)0x0) {\n            while( true ) {\n              local_b8 = *(void **)((int)pvVar11 + 8);\n              if (*(DIR **)((int)pvVar11 + 0xc) == (DIR *)0x0) break;\n              closedir(*(DIR **)((int)pvVar11 + 0xc));\n              free(pvVar11);\n              pvVar11 = local_b8;\n              if (local_b8 == (void *)0x0) goto LAB_00025c40;\n            }\n            free(pvVar11);\n          }\n          goto LAB_00025c40;\n        }\n        goto LAB_0002574d;\n      }" if (parenthesized_expression "((param_2 == 1) || (local_d4 == 0))" ( (binary_expression "(param_2 == 1) || (local_d4 == 0)" (parenthesized_expression "(param_2 == 1)" ( (binary_expression "param_2 == 1" identifier == number_literal) )) || (parenthesized_expression "(local_d4 == 0)" ( (binary_expression "local_d4 == 0" identifier == number_literal) ))) )) (compound_statement "{\n        if (*(int *)(iVar2 + 0x30) == 0) {\n          iVar15 = FUN_00024bb0();\n        }\n        else {\n          iVar15 = FUN_00024e60(&DAT_0002e141);\n        }\n        if (iVar15 != 0) {\n          *(undefined2 *)(iVar2 + 0x3c) = 7;\n          param_1[0xb] = param_1[0xb] | 0x4000;\n          while (pvVar11 = local_b8, local_b8 != (void *)0x0) {\n            while( true ) {\n              local_b8 = *(void **)((int)pvVar11 + 8);\n              if (*(DIR **)((int)pvVar11 + 0xc) == (DIR *)0x0) break;\n              closedir(*(DIR **)((int)pvVar11 + 0xc));\n              free(pvVar11);\n              pvVar11 = local_b8;\n              if (local_b8 == (void *)0x0) goto LAB_00025c40;\n            }\n            free(pvVar11);\n          }\n          goto LAB_00025c40;\n        }\n        goto LAB_0002574d;\n      }" { (if_statement "if (*(int *)(iVar2 + 0x30) == 0) {\n          iVar15 = FUN_00024bb0();\n        }\n        else {\n          iVar15 = FUN_00024e60(&DAT_0002e141);\n        }" if (parenthesized_expression "(*(int *)(iVar2 + 0x30) == 0)" ( (binary_expression "*(int *)(iVar2 + 0x30) == 0" (pointer_expression "*(int *)(iVar2 + 0x30)" * (cast_expression "(int *)(iVar2 + 0x30)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x30)" ( (binary_expression "iVar2 + 0x30" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n          iVar15 = FUN_00024bb0();\n        }" { (expression_statement "iVar15 = FUN_00024bb0();" (assignment_expression "iVar15 = FUN_00024bb0()" identifier = (call_expression "FUN_00024bb0()" identifier (argument_list "()" ( )))) ;) }) (else_clause "else {\n          iVar15 = FUN_00024e60(&DAT_0002e141);\n        }" else (compound_statement "{\n          iVar15 = FUN_00024e60(&DAT_0002e141);\n        }" { (expression_statement "iVar15 = FUN_00024e60(&DAT_0002e141);" (assignment_expression "iVar15 = FUN_00024e60(&DAT_0002e141)" identifier = (call_expression "FUN_00024e60(&DAT_0002e141)" identifier (argument_list "(&DAT_0002e141)" ( (pointer_expression "&DAT_0002e141" & identifier) )))) ;) }))) (if_statement "if (iVar15 != 0) {\n          *(undefined2 *)(iVar2 + 0x3c) = 7;\n          param_1[0xb] = param_1[0xb] | 0x4000;\n          while (pvVar11 = local_b8, local_b8 != (void *)0x0) {\n            while( true ) {\n              local_b8 = *(void **)((int)pvVar11 + 8);\n              if (*(DIR **)((int)pvVar11 + 0xc) == (DIR *)0x0) break;\n              closedir(*(DIR **)((int)pvVar11 + 0xc));\n              free(pvVar11);\n              pvVar11 = local_b8;\n              if (local_b8 == (void *)0x0) goto LAB_00025c40;\n            }\n            free(pvVar11);\n          }\n          goto LAB_00025c40;\n        }" if (parenthesized_expression "(iVar15 != 0)" ( (binary_expression "iVar15 != 0" identifier != number_literal) )) (compound_statement "{\n          *(undefined2 *)(iVar2 + 0x3c) = 7;\n          param_1[0xb] = param_1[0xb] | 0x4000;\n          while (pvVar11 = local_b8, local_b8 != (void *)0x0) {\n            while( true ) {\n              local_b8 = *(void **)((int)pvVar11 + 8);\n              if (*(DIR **)((int)pvVar11 + 0xc) == (DIR *)0x0) break;\n              closedir(*(DIR **)((int)pvVar11 + 0xc));\n              free(pvVar11);\n              pvVar11 = local_b8;\n              if (local_b8 == (void *)0x0) goto LAB_00025c40;\n            }\n            free(pvVar11);\n          }\n          goto LAB_00025c40;\n        }" { (expression_statement "*(undefined2 *)(iVar2 + 0x3c) = 7;" (assignment_expression "*(undefined2 *)(iVar2 + 0x3c) = 7" (pointer_expression "*(undefined2 *)(iVar2 + 0x3c)" * (cast_expression "(undefined2 *)(iVar2 + 0x3c)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x3c)" ( (binary_expression "iVar2 + 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)) ;) (while_statement "while (pvVar11 = local_b8, local_b8 != (void *)0x0) {\n            while( true ) {\n              local_b8 = *(void **)((int)pvVar11 + 8);\n              if (*(DIR **)((int)pvVar11 + 0xc) == (DIR *)0x0) break;\n              closedir(*(DIR **)((int)pvVar11 + 0xc));\n              free(pvVar11);\n              pvVar11 = local_b8;\n              if (local_b8 == (void *)0x0) goto LAB_00025c40;\n            }\n            free(pvVar11);\n          }" while (parenthesized_expression "(pvVar11 = local_b8, local_b8 != (void *)0x0)" ( (comma_expression "pvVar11 = local_b8, local_b8 != (void *)0x0" (assignment_expression "pvVar11 = local_b8" identifier = identifier) , (binary_expression "local_b8 != (void *)0x0" identifier != (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal))) )) (compound_statement "{\n            while( true ) {\n              local_b8 = *(void **)((int)pvVar11 + 8);\n              if (*(DIR **)((int)pvVar11 + 0xc) == (DIR *)0x0) break;\n              closedir(*(DIR **)((int)pvVar11 + 0xc));\n              free(pvVar11);\n              pvVar11 = local_b8;\n              if (local_b8 == (void *)0x0) goto LAB_00025c40;\n            }\n            free(pvVar11);\n          }" { (while_statement "while( true ) {\n              local_b8 = *(void **)((int)pvVar11 + 8);\n              if (*(DIR **)((int)pvVar11 + 0xc) == (DIR *)0x0) break;\n              closedir(*(DIR **)((int)pvVar11 + 0xc));\n              free(pvVar11);\n              pvVar11 = local_b8;\n              if (local_b8 == (void *)0x0) goto LAB_00025c40;\n            }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n              local_b8 = *(void **)((int)pvVar11 + 8);\n              if (*(DIR **)((int)pvVar11 + 0xc) == (DIR *)0x0) break;\n              closedir(*(DIR **)((int)pvVar11 + 0xc));\n              free(pvVar11);\n              pvVar11 = local_b8;\n              if (local_b8 == (void *)0x0) goto LAB_00025c40;\n            }" { (expression_statement "local_b8 = *(void **)((int)pvVar11 + 8);" (assignment_expression "local_b8 = *(void **)((int)pvVar11 + 8)" identifier = (pointer_expression "*(void **)((int)pvVar11 + 8)" * (cast_expression "(void **)((int)pvVar11 + 8)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (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) ))))) ;) (if_statement "if (*(DIR **)((int)pvVar11 + 0xc) == (DIR *)0x0) break;" if (parenthesized_expression "(*(DIR **)((int)pvVar11 + 0xc) == (DIR *)0x0)" ( (binary_expression "*(DIR **)((int)pvVar11 + 0xc) == (DIR *)0x0" (pointer_expression "*(DIR **)((int)pvVar11 + 0xc)" * (cast_expression "(DIR **)((int)pvVar11 + 0xc)" ( (type_descriptor "DIR **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)pvVar11 + 0xc)" ( (binary_expression "(int)pvVar11 + 0xc" (cast_expression "(int)pvVar11" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) == (cast_expression "(DIR *)0x0" ( (type_descriptor "DIR *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (break_statement "break;" break ;)) (expression_statement "closedir(*(DIR **)((int)pvVar11 + 0xc));" (call_expression "closedir(*(DIR **)((int)pvVar11 + 0xc))" identifier (argument_list "(*(DIR **)((int)pvVar11 + 0xc))" ( (pointer_expression "*(DIR **)((int)pvVar11 + 0xc)" * (cast_expression "(DIR **)((int)pvVar11 + 0xc)" ( (type_descriptor "DIR **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)pvVar11 + 0xc)" ( (binary_expression "(int)pvVar11 + 0xc" (cast_expression "(int)pvVar11" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ))) ;) (expression_statement "free(pvVar11);" (call_expression "free(pvVar11)" identifier (argument_list "(pvVar11)" ( identifier ))) ;) (expression_statement "pvVar11 = local_b8;" (assignment_expression "pvVar11 = local_b8" identifier = identifier) ;) (if_statement "if (local_b8 == (void *)0x0) goto LAB_00025c40;" if (parenthesized_expression "(local_b8 == (void *)0x0)" ( (binary_expression "local_b8 == (void *)0x0" identifier == (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00025c40;" goto statement_identifier ;)) })) (expression_statement "free(pvVar11);" (call_expression "free(pvVar11)" identifier (argument_list "(pvVar11)" ( identifier ))) ;) })) (goto_statement "goto LAB_00025c40;" goto statement_identifier ;) })) (goto_statement "goto LAB_0002574d;" goto statement_identifier ;) })) }) (else_clause "else {\nLAB_0002574d:\n      if (local_d4 == 0) {\n        if (((param_2 == 3) && (*(short *)(iVar2 + 0x3c) != 4)) && (*(short *)(iVar2 + 0x3c) != 7))\n        {\n          *(undefined2 *)(iVar2 + 0x3c) = 6;\n        }\n        if (local_b8 != (void *)0x0) {\n          pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n          pvVar11 = *(void **)((int)local_b8 + 8);\n          if (pDVar21 == (DIR *)0x0) goto LAB_00025c94;\n          do {\n            closedir(pDVar21);\n            free(local_b8);\n            local_b8 = pvVar11;\n            while( true ) {\n              if (local_b8 == (void *)0x0) goto LAB_00025c40;\n              pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n              pvVar11 = *(void **)((int)local_b8 + 8);\n              if (pDVar21 != (DIR *)0x0) break;\nLAB_00025c94:\n              free(local_b8);\n              local_b8 = pvVar11;\n            }\n          } while( true );\n        }\n        goto LAB_00025c40;\n      }\n    }" else (compound_statement "{\nLAB_0002574d:\n      if (local_d4 == 0) {\n        if (((param_2 == 3) && (*(short *)(iVar2 + 0x3c) != 4)) && (*(short *)(iVar2 + 0x3c) != 7))\n        {\n          *(undefined2 *)(iVar2 + 0x3c) = 6;\n        }\n        if (local_b8 != (void *)0x0) {\n          pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n          pvVar11 = *(void **)((int)local_b8 + 8);\n          if (pDVar21 == (DIR *)0x0) goto LAB_00025c94;\n          do {\n            closedir(pDVar21);\n            free(local_b8);\n            local_b8 = pvVar11;\n            while( true ) {\n              if (local_b8 == (void *)0x0) goto LAB_00025c40;\n              pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n              pvVar11 = *(void **)((int)local_b8 + 8);\n              if (pDVar21 != (DIR *)0x0) break;\nLAB_00025c94:\n              free(local_b8);\n              local_b8 = pvVar11;\n            }\n          } while( true );\n        }\n        goto LAB_00025c40;\n      }\n    }" { (labeled_statement "LAB_0002574d:\n      if (local_d4 == 0) {\n        if (((param_2 == 3) && (*(short *)(iVar2 + 0x3c) != 4)) && (*(short *)(iVar2 + 0x3c) != 7))\n        {\n          *(undefined2 *)(iVar2 + 0x3c) = 6;\n        }\n        if (local_b8 != (void *)0x0) {\n          pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n          pvVar11 = *(void **)((int)local_b8 + 8);\n          if (pDVar21 == (DIR *)0x0) goto LAB_00025c94;\n          do {\n            closedir(pDVar21);\n            free(local_b8);\n            local_b8 = pvVar11;\n            while( true ) {\n              if (local_b8 == (void *)0x0) goto LAB_00025c40;\n              pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n              pvVar11 = *(void **)((int)local_b8 + 8);\n              if (pDVar21 != (DIR *)0x0) break;\nLAB_00025c94:\n              free(local_b8);\n              local_b8 = pvVar11;\n            }\n          } while( true );\n        }\n        goto LAB_00025c40;\n      }" statement_identifier : (if_statement "if (local_d4 == 0) {\n        if (((param_2 == 3) && (*(short *)(iVar2 + 0x3c) != 4)) && (*(short *)(iVar2 + 0x3c) != 7))\n        {\n          *(undefined2 *)(iVar2 + 0x3c) = 6;\n        }\n        if (local_b8 != (void *)0x0) {\n          pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n          pvVar11 = *(void **)((int)local_b8 + 8);\n          if (pDVar21 == (DIR *)0x0) goto LAB_00025c94;\n          do {\n            closedir(pDVar21);\n            free(local_b8);\n            local_b8 = pvVar11;\n            while( true ) {\n              if (local_b8 == (void *)0x0) goto LAB_00025c40;\n              pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n              pvVar11 = *(void **)((int)local_b8 + 8);\n              if (pDVar21 != (DIR *)0x0) break;\nLAB_00025c94:\n              free(local_b8);\n              local_b8 = pvVar11;\n            }\n          } while( true );\n        }\n        goto LAB_00025c40;\n      }" if (parenthesized_expression "(local_d4 == 0)" ( (binary_expression "local_d4 == 0" identifier == number_literal) )) (compound_statement "{\n        if (((param_2 == 3) && (*(short *)(iVar2 + 0x3c) != 4)) && (*(short *)(iVar2 + 0x3c) != 7))\n        {\n          *(undefined2 *)(iVar2 + 0x3c) = 6;\n        }\n        if (local_b8 != (void *)0x0) {\n          pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n          pvVar11 = *(void **)((int)local_b8 + 8);\n          if (pDVar21 == (DIR *)0x0) goto LAB_00025c94;\n          do {\n            closedir(pDVar21);\n            free(local_b8);\n            local_b8 = pvVar11;\n            while( true ) {\n              if (local_b8 == (void *)0x0) goto LAB_00025c40;\n              pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n              pvVar11 = *(void **)((int)local_b8 + 8);\n              if (pDVar21 != (DIR *)0x0) break;\nLAB_00025c94:\n              free(local_b8);\n              local_b8 = pvVar11;\n            }\n          } while( true );\n        }\n        goto LAB_00025c40;\n      }" { (if_statement "if (((param_2 == 3) && (*(short *)(iVar2 + 0x3c) != 4)) && (*(short *)(iVar2 + 0x3c) != 7))\n        {\n          *(undefined2 *)(iVar2 + 0x3c) = 6;\n        }" if (parenthesized_expression "(((param_2 == 3) && (*(short *)(iVar2 + 0x3c) != 4)) && (*(short *)(iVar2 + 0x3c) != 7))" ( (binary_expression "((param_2 == 3) && (*(short *)(iVar2 + 0x3c) != 4)) && (*(short *)(iVar2 + 0x3c) != 7)" (parenthesized_expression "((param_2 == 3) && (*(short *)(iVar2 + 0x3c) != 4))" ( (binary_expression "(param_2 == 3) && (*(short *)(iVar2 + 0x3c) != 4)" (parenthesized_expression "(param_2 == 3)" ( (binary_expression "param_2 == 3" identifier == number_literal) )) && (parenthesized_expression "(*(short *)(iVar2 + 0x3c) != 4)" ( (binary_expression "*(short *)(iVar2 + 0x3c) != 4" (pointer_expression "*(short *)(iVar2 + 0x3c)" * (cast_expression "(short *)(iVar2 + 0x3c)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x3c)" ( (binary_expression "iVar2 + 0x3c" identifier + number_literal) )))) != number_literal) ))) )) && (parenthesized_expression "(*(short *)(iVar2 + 0x3c) != 7)" ( (binary_expression "*(short *)(iVar2 + 0x3c) != 7" (pointer_expression "*(short *)(iVar2 + 0x3c)" * (cast_expression "(short *)(iVar2 + 0x3c)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x3c)" ( (binary_expression "iVar2 + 0x3c" identifier + number_literal) )))) != number_literal) ))) )) (compound_statement "{\n          *(undefined2 *)(iVar2 + 0x3c) = 6;\n        }" { (expression_statement "*(undefined2 *)(iVar2 + 0x3c) = 6;" (assignment_expression "*(undefined2 *)(iVar2 + 0x3c) = 6" (pointer_expression "*(undefined2 *)(iVar2 + 0x3c)" * (cast_expression "(undefined2 *)(iVar2 + 0x3c)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x3c)" ( (binary_expression "iVar2 + 0x3c" identifier + number_literal) )))) = number_literal) ;) })) (if_statement "if (local_b8 != (void *)0x0) {\n          pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n          pvVar11 = *(void **)((int)local_b8 + 8);\n          if (pDVar21 == (DIR *)0x0) goto LAB_00025c94;\n          do {\n            closedir(pDVar21);\n            free(local_b8);\n            local_b8 = pvVar11;\n            while( true ) {\n              if (local_b8 == (void *)0x0) goto LAB_00025c40;\n              pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n              pvVar11 = *(void **)((int)local_b8 + 8);\n              if (pDVar21 != (DIR *)0x0) break;\nLAB_00025c94:\n              free(local_b8);\n              local_b8 = pvVar11;\n            }\n          } while( true );\n        }" if (parenthesized_expression "(local_b8 != (void *)0x0)" ( (binary_expression "local_b8 != (void *)0x0" identifier != (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n          pvVar11 = *(void **)((int)local_b8 + 8);\n          if (pDVar21 == (DIR *)0x0) goto LAB_00025c94;\n          do {\n            closedir(pDVar21);\n            free(local_b8);\n            local_b8 = pvVar11;\n            while( true ) {\n              if (local_b8 == (void *)0x0) goto LAB_00025c40;\n              pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n              pvVar11 = *(void **)((int)local_b8 + 8);\n              if (pDVar21 != (DIR *)0x0) break;\nLAB_00025c94:\n              free(local_b8);\n              local_b8 = pvVar11;\n            }\n          } while( true );\n        }" { (expression_statement "pDVar21 = *(DIR **)((int)local_b8 + 0xc);" (assignment_expression "pDVar21 = *(DIR **)((int)local_b8 + 0xc)" identifier = (pointer_expression "*(DIR **)((int)local_b8 + 0xc)" * (cast_expression "(DIR **)((int)local_b8 + 0xc)" ( (type_descriptor "DIR **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)local_b8 + 0xc)" ( (binary_expression "(int)local_b8 + 0xc" (cast_expression "(int)local_b8" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "pvVar11 = *(void **)((int)local_b8 + 8);" (assignment_expression "pvVar11 = *(void **)((int)local_b8 + 8)" identifier = (pointer_expression "*(void **)((int)local_b8 + 8)" * (cast_expression "(void **)((int)local_b8 + 8)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)local_b8 + 8)" ( (binary_expression "(int)local_b8 + 8" (cast_expression "(int)local_b8" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (if_statement "if (pDVar21 == (DIR *)0x0) goto LAB_00025c94;" if (parenthesized_expression "(pDVar21 == (DIR *)0x0)" ( (binary_expression "pDVar21 == (DIR *)0x0" identifier == (cast_expression "(DIR *)0x0" ( (type_descriptor "DIR *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00025c94;" goto statement_identifier ;)) (do_statement "do {\n            closedir(pDVar21);\n            free(local_b8);\n            local_b8 = pvVar11;\n            while( true ) {\n              if (local_b8 == (void *)0x0) goto LAB_00025c40;\n              pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n              pvVar11 = *(void **)((int)local_b8 + 8);\n              if (pDVar21 != (DIR *)0x0) break;\nLAB_00025c94:\n              free(local_b8);\n              local_b8 = pvVar11;\n            }\n          } while( true );" do (compound_statement "{\n            closedir(pDVar21);\n            free(local_b8);\n            local_b8 = pvVar11;\n            while( true ) {\n              if (local_b8 == (void *)0x0) goto LAB_00025c40;\n              pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n              pvVar11 = *(void **)((int)local_b8 + 8);\n              if (pDVar21 != (DIR *)0x0) break;\nLAB_00025c94:\n              free(local_b8);\n              local_b8 = pvVar11;\n            }\n          }" { (expression_statement "closedir(pDVar21);" (call_expression "closedir(pDVar21)" identifier (argument_list "(pDVar21)" ( identifier ))) ;) (expression_statement "free(local_b8);" (call_expression "free(local_b8)" identifier (argument_list "(local_b8)" ( identifier ))) ;) (expression_statement "local_b8 = pvVar11;" (assignment_expression "local_b8 = pvVar11" identifier = identifier) ;) (while_statement "while( true ) {\n              if (local_b8 == (void *)0x0) goto LAB_00025c40;\n              pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n              pvVar11 = *(void **)((int)local_b8 + 8);\n              if (pDVar21 != (DIR *)0x0) break;\nLAB_00025c94:\n              free(local_b8);\n              local_b8 = pvVar11;\n            }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n              if (local_b8 == (void *)0x0) goto LAB_00025c40;\n              pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n              pvVar11 = *(void **)((int)local_b8 + 8);\n              if (pDVar21 != (DIR *)0x0) break;\nLAB_00025c94:\n              free(local_b8);\n              local_b8 = pvVar11;\n            }" { (if_statement "if (local_b8 == (void *)0x0) goto LAB_00025c40;" if (parenthesized_expression "(local_b8 == (void *)0x0)" ( (binary_expression "local_b8 == (void *)0x0" identifier == (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00025c40;" goto statement_identifier ;)) (expression_statement "pDVar21 = *(DIR **)((int)local_b8 + 0xc);" (assignment_expression "pDVar21 = *(DIR **)((int)local_b8 + 0xc)" identifier = (pointer_expression "*(DIR **)((int)local_b8 + 0xc)" * (cast_expression "(DIR **)((int)local_b8 + 0xc)" ( (type_descriptor "DIR **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)local_b8 + 0xc)" ( (binary_expression "(int)local_b8 + 0xc" (cast_expression "(int)local_b8" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "pvVar11 = *(void **)((int)local_b8 + 8);" (assignment_expression "pvVar11 = *(void **)((int)local_b8 + 8)" identifier = (pointer_expression "*(void **)((int)local_b8 + 8)" * (cast_expression "(void **)((int)local_b8 + 8)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)local_b8 + 8)" ( (binary_expression "(int)local_b8 + 8" (cast_expression "(int)local_b8" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (if_statement "if (pDVar21 != (DIR *)0x0) break;" if (parenthesized_expression "(pDVar21 != (DIR *)0x0)" ( (binary_expression "pDVar21 != (DIR *)0x0" identifier != (cast_expression "(DIR *)0x0" ( (type_descriptor "DIR *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (break_statement "break;" break ;)) (labeled_statement "LAB_00025c94:\n              free(local_b8);" statement_identifier : (expression_statement "free(local_b8);" (call_expression "free(local_b8)" identifier (argument_list "(local_b8)" ( identifier ))) ;)) (expression_statement "local_b8 = pvVar11;" (assignment_expression "local_b8 = pvVar11" identifier = identifier) ;) })) }) while (parenthesized_expression "( true )" ( true )) ;) })) (goto_statement "goto LAB_00025c40;" goto statement_identifier ;) }))) }))) (if_statement "if (bVar4) {\n      param_1[10] = (int)FUN_00024700;\n      local_b8 = (void *)FUN_000248e0();\n      param_1[10] = 0;\n    }\n    else if ((param_1[10] != 0) && (local_d4 != 1)) {\n      local_b8 = (void *)FUN_000248e0();\n    }" if (parenthesized_expression "(bVar4)" ( identifier )) (compound_statement "{\n      param_1[10] = (int)FUN_00024700;\n      local_b8 = (void *)FUN_000248e0();\n      param_1[10] = 0;\n    }" { (expression_statement "param_1[10] = (int)FUN_00024700;" (assignment_expression "param_1[10] = (int)FUN_00024700" (subscript_expression "param_1[10]" identifier [ number_literal ]) = (cast_expression "(int)FUN_00024700" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "local_b8 = (void *)FUN_000248e0();" (assignment_expression "local_b8 = (void *)FUN_000248e0()" identifier = (cast_expression "(void *)FUN_000248e0()" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_000248e0()" 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) ;) }) (else_clause "else if ((param_1[10] != 0) && (local_d4 != 1)) {\n      local_b8 = (void *)FUN_000248e0();\n    }" else (if_statement "if ((param_1[10] != 0) && (local_d4 != 1)) {\n      local_b8 = (void *)FUN_000248e0();\n    }" if (parenthesized_expression "((param_1[10] != 0) && (local_d4 != 1))" ( (binary_expression "(param_1[10] != 0) && (local_d4 != 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_d4 != 1)" ( (binary_expression "local_d4 != 1" identifier != number_literal) ))) )) (compound_statement "{\n      local_b8 = (void *)FUN_000248e0();\n    }" { (expression_statement "local_b8 = (void *)FUN_000248e0();" (assignment_expression "local_b8 = (void *)FUN_000248e0()" identifier = (cast_expression "(void *)FUN_000248e0()" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_000248e0()" identifier (argument_list "()" ( ))))) ;) })))) }))) (labeled_statement "LAB_0002563f:\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return local_b8;\n  }" statement_identifier : (if_statement "if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return local_b8;\n  }" if (parenthesized_expression "(local_20 == *(int *)(in_GS_OFFSET + 0x14))" ( (binary_expression "local_20 == *(int *)(in_GS_OFFSET + 0x14)" identifier == (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) )) (compound_statement "{\n    return local_b8;\n  }" { (return_statement "return local_b8;" return identifier ;) }))) (expression_statement "FUN_0002d5d0();" (call_expression "FUN_0002d5d0()" identifier (argument_list "()" ( ))) ;) })))
(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 (pointer_declarator * 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 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 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 (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (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) ;) }) (else_clause else (compound_statement { (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 (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 IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (goto_statement goto statement_identifier ;) })) })))) (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) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT == LIT)) ;) }))) (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 ( 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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ 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 ( 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) ;) (goto_statement goto statement_identifier ;) })) (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) ;) }))) (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)) ;) }))) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) 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 = (binary_expression IDENT - LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (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 = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression (subscript_expression IDENT [ LIT ]) - IDENT)) ;) (expression_statement (assignment_expression IDENT = BOOL) ;) (expression_statement (assignment_expression IDENT = BOOL) ;) (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 = (call_expression IDENT (argument_list ( (binary_expression (binary_expression IDENT + LIT) & 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 = (pointer_expression * IDENT)) ;) (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (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) ))))) ;) (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 IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (goto_statement goto statement_identifier ;)) (do_statement do (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (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 = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) ))))) ;) (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 IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (break_statement break ;)) (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;)) (expression_statement (assignment_expression IDENT = IDENT) ;) })) }) while (parenthesized_expression ( BOOL )) ;) })) (labeled_statement statement_identifier : (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 IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (subscript_expression IDENT [ LIT ]) | LIT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (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 , (field_expression IDENT -> field_identifier) , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + IDENT) + LIT) )))) = 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 * (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 * (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 (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 (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 (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 (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 <= IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (binary_expression IDENT + LIT) + (subscript_expression IDENT [ LIT ])) + IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( 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 (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != IDENT) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = BOOL) , (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 = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + IDENT) )))) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression (subscript_expression IDENT [ LIT ]) - IDENT)) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ])) ))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) }))) (goto_statement goto statement_identifier ;) })) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (call_expression IDENT (argument_list ( IDENT , IDENT ))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (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) ))))) ;) (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 IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (goto_statement goto statement_identifier ;)) (do_statement do (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (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 = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) ))))) ;) (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 IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (break_statement break ;)) (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;)) (expression_statement (assignment_expression IDENT = IDENT) ;) })) }) while (parenthesized_expression ( BOOL )) ;) })) (labeled_statement statement_identifier : (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 IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (subscript_expression IDENT [ LIT ]) | LIT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (goto_statement goto statement_identifier ;) }))) (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 + 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 + 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) )))) = (pointer_expression * 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) )))) = IDENT) ;) }) (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 , IDENT , (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 (subscript_expression IDENT [ LIT ]) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (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 = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT , LIT , IDENT , IDENT , IDENT )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT < LIT) )) || (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (pointer_expression & IDENT) )))) , (comma_expression (assignment_expression IDENT = (field_expression IDENT . field_identifier)) , (binary_expression IDENT != LIT))) ))) )) (goto_statement goto statement_identifier ;))) (expression_statement (assignment_expression IDENT = (field_expression IDENT . field_identifier)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != LIT) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( LIT ))))) , (binary_expression IDENT != (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 *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT , IDENT ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = (field_expression IDENT . field_identifier)) ;) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) (expression_statement (assignment_expression IDENT = (field_expression IDENT . field_identifier)) ;) }))) })) }) (else_clause else (compound_statement { (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 = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (pointer_expression & IDENT) )))) ;) (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 *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) || (parenthesized_expression ( (binary_expression IDENT == LIT) ))) )) || (parenthesized_expression ( (binary_expression IDENT == LIT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = BOOL) ;) (goto_statement goto statement_identifier ;) })) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = BOOL) ;)) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) (goto_statement goto statement_identifier ;) })) (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 ( IDENT )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (for_statement for ( (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ; (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 { (while_statement while (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 IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (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) )))) = 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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) - IDENT) )) + IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (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) ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) ))))) ;)) (expression_statement (assignment_expression IDENT = IDENT) ;) (while_statement while (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (while_statement while (parenthesized_expression ( BOOL )) (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 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) ))))) ;) (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) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = IDENT) ;) (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) )))) < 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 (cast_expression ( (type_descriptor TYPE) ) IDENT) + 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) ) IDENT) + LIT) ))))) ;) })) }))) (labeled_statement statement_identifier : (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) ))) )) (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) )))) == 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)) ;) (while_statement while (parenthesized_expression ( (comma_expression (assignment_expression IDENT = IDENT) , (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT))) )) (compound_statement { (while_statement while (parenthesized_expression ( BOOL )) (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 (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)) )) (break_statement break ;)) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (goto_statement goto statement_identifier ;)) })) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) })) (goto_statement goto statement_identifier ;) })) (goto_statement goto statement_identifier ;) })) }) (else_clause else (compound_statement { (labeled_statement statement_identifier : (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) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (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) ))))) ;) (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 IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (goto_statement goto statement_identifier ;)) (do_statement do (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (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 = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) ))))) ;) (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 IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (break_statement break ;)) (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;)) (expression_statement (assignment_expression IDENT = IDENT) ;) })) }) while (parenthesized_expression ( BOOL )) ;) })) (goto_statement goto 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) ;) }) (else_clause else (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 ( ))))) ;) })))) }))) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT == (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (return_statement return IDENT ;) }))) (expression_statement (call_expression IDENT (argument_list ( ))) ;) })))
(function_definition "void * __regparm3 FUN_000251b0(int *param_1,int param_2)\n\n{\n  void *pvVar1;\n  int iVar2;\n  void *__ptr;\n  bool bVar3;\n  bool bVar4;\n  __ino64_t _Var5;\n  undefined *puVar6;\n  char cVar7;\n  undefined2 uVar8;\n  int *piVar9;\n  dirent64 *pdVar10;\n  size_t __n;\n  void *pvVar11;\n  undefined4 uVar12;\n  uint uVar13;\n  void *pvVar14;\n  int iVar15;\n  DIR *pDVar16;\n  int iVar17;\n  int iVar18;\n  int iVar19;\n  undefined4 *__ptr_00;\n  undefined4 *puVar20;\n  DIR *pDVar21;\n  uint uVar22;\n  uint uVar23;\n  ushort uVar24;\n  int in_GS_OFFSET;\n  bool bVar25;\n  uint local_d4;\n  uint local_d0;\n  void *local_c4;\n  void *local_b8;\n  uint local_b0;\n  uint local_a8;\n  undefined1 *local_a4;\n  int local_9c;\n  undefined4 local_80;\n  undefined4 local_7c;\n  statfs64 local_74;\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x251bb;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  iVar2 = *param_1;\n  pDVar21 = *(DIR **)(iVar2 + 0xc);\n  if (pDVar21 == (DIR *)0x0) {\n    uVar13 = param_1[0xb];\n    uVar23 = uVar13 & 0x10;\n    if (((uVar23 != 0) && (uVar23 = 0x20000, (uVar13 & 1) != 0)) &&\n       (uVar23 = *(uint *)(iVar2 + 0x30), uVar23 != 0)) {\n      uVar23 = 0x20000;\n    }\n    iVar15 = -100;\n    if ((uVar13 & 0x204) == 0x200) {\n      iVar15 = param_1[7];\n    }\n    local_9c = FUN_00029520(iVar15,*(undefined4 *)(iVar2 + 0x18),\n                            (uVar13 & 0x800) << 7 | uVar23 | 0x90900);\n    if (local_9c < 0) {\n      *(undefined4 *)(iVar2 + 0xc) = 0;\n    }\n    else {\n      pDVar16 = fdopendir(local_9c);\n      if (pDVar16 != (DIR *)0x0) {\n        *(DIR **)(iVar2 + 0xc) = pDVar16;\n        if (*(short *)(iVar2 + 0x3c) == 0xb) {\n          uVar8 = FUN_00024740();\n          *(undefined2 *)(iVar2 + 0x3c) = uVar8;\n        }\n        else if ((param_1[0xb] & 0x100U) != 0) {\n          FUN_00024aa0();\n          FUN_00024740();\n          cVar7 = FUN_000249d0();\n          if (cVar7 == '\0') {\n            piVar9 = __errno_location();\n            local_b8 = (void *)0x0;\n            *piVar9 = 0xc;\n            goto LAB_0002563f;\n          }\n        }\n        local_a8 = (-(uint)(param_1[10] == 0) & 0x186a1) - 1;\n        if (param_2 == 2) {\nLAB_00025bc8:\n          bVar25 = false;\n          uVar13 = param_1[0xb];\n          goto LAB_00025223;\n        }\n        if ((((param_1[0xb] & 0x38U) == 0x18) && (*(int *)(iVar2 + 0x58) == 2)) &&\n           (iVar15 = FUN_00024ca0(), iVar15 != 0)) {\n          if (param_2 != 3) goto LAB_00025bc8;\n          bVar25 = false;\n        }\n        else {\n          bVar25 = param_2 == 3;\n        }\n        if (((*(byte *)((int)param_1 + 0x2d) & 2) == 0) ||\n           (local_9c = FUN_000243f0(local_9c,0x406,3), -1 < local_9c)) {\n          iVar15 = FUN_00024e60(0);\n          if (iVar15 == 0) goto LAB_0002521b;\n          pDVar16 = *(DIR **)(iVar2 + 0xc);\n          uVar24 = *(ushort *)(iVar2 + 0x3e) | 1;\n          if (bVar25) goto LAB_000258a0;\nLAB_000258ae:\n          *(ushort *)(iVar2 + 0x3e) = uVar24;\n          closedir(pDVar16);\n          *(undefined4 *)(iVar2 + 0xc) = 0;\n          uVar13 = param_1[0xb];\n          if (((uVar13 & 0x200) != 0) && (-1 < local_9c)) {\n            close(local_9c);\n            uVar13 = param_1[0xb];\n          }\n        }\n        else {\n          pDVar16 = *(DIR **)(iVar2 + 0xc);\n          uVar24 = *(ushort *)(iVar2 + 0x3e) | 1;\n          if (bVar25) {\nLAB_000258a0:\n            piVar9 = __errno_location();\n            *(int *)(iVar2 + 0x20) = *piVar9;\n            goto LAB_000258ae;\n          }\n          *(ushort *)(iVar2 + 0x3e) = uVar24;\n          closedir(pDVar16);\n          uVar13 = param_1[0xb];\n        }\n        bVar25 = false;\n        *(undefined4 *)(iVar2 + 0xc) = 0;\n        goto LAB_00025223;\n      }\n      piVar9 = __errno_location();\n      iVar15 = *piVar9;\n      close(local_9c);\n      *piVar9 = iVar15;\n      *(undefined4 *)(iVar2 + 0xc) = 0;\n    }\njoined_r0x00025c30:\n    if (param_2 == 3) {\n      *(undefined2 *)(iVar2 + 0x3c) = 4;\n      piVar9 = __errno_location();\n      *(int *)(iVar2 + 0x20) = *piVar9;\n    }\nLAB_00025c40:\n    local_b8 = (void *)0x0;\n  }\n  else {\n    local_9c = dirfd(pDVar21);\n    if (local_9c < 0) {\n      closedir(*(DIR **)(iVar2 + 0xc));\n      *(undefined4 *)(iVar2 + 0xc) = 0;\n      goto joined_r0x00025c30;\n    }\n    if (param_1[10] == 0) {\n      local_a8 = 100000;\n      uVar13 = param_1[0xb];\n      bVar25 = true;\n    }\n    else {\n      local_a8 = 0xffffffff;\nLAB_0002521b:\n      bVar25 = true;\n      uVar13 = param_1[0xb];\n    }\nLAB_00025223:\n    uVar23 = *(uint *)(iVar2 + 0x28);\n    uVar22 = uVar23 - 1;\n    local_d0 = uVar23;\n    if (*(char *)(*(int *)(iVar2 + 0x1c) + -1 + uVar23) != '/') {\n      local_d0 = uVar23 + 1;\n      uVar22 = uVar23;\n    }\n    local_a4 = (undefined1 *)0x0;\n    if ((uVar13 & 4) != 0) {\n      local_a4 = (undefined1 *)(uVar22 + param_1[5]) + 1;\n      *(undefined1 *)(uVar22 + param_1[5]) = 0x2f;\n    }\n    puVar6 = PTR_free_0003afa8;\n    local_b0 = param_1[8] - local_d0;\n    bVar4 = false;\n    bVar3 = false;\n    iVar15 = *(int *)(iVar2 + 0x30);\n    local_c4 = (void *)0x0;\n    local_d4 = 0;\n    local_b8 = (void *)0x0;\nLAB_000252fb:\n    do {\n      do {\n        pDVar16 = *(DIR **)(iVar2 + 0xc);\n        if (pDVar16 == (DIR *)0x0) goto LAB_000256de;\n        piVar9 = __errno_location();\n        *piVar9 = 0;\n        pdVar10 = readdir64(pDVar16);\n        if (pdVar10 == (dirent64 *)0x0) {\n          if (*piVar9 != 0) {\n            *(int *)(iVar2 + 0x20) = *piVar9;\n            *(ushort *)(iVar2 + 0x3c) =\n                 (-(ushort)(pDVar21 == (DIR *)0x0 && local_d4 == 0) & 0xfffd) + 7;\n          }\n          if (*(DIR **)(iVar2 + 0xc) != (DIR *)0x0) {\n            closedir(*(DIR **)(iVar2 + 0xc));\n            *(undefined4 *)(iVar2 + 0xc) = 0;\n          }\n          goto LAB_000256de;\n        }\n      } while ((((*(byte *)(param_1 + 0xb) & 0x20) == 0) && (pdVar10->d_name[0] == '.')) &&\n              ((pdVar10->d_name[1] == '\0' || (*(short *)(pdVar10->d_name + 1) == 0x2e))));\n      __n = strlen(pdVar10->d_name);\n      pvVar11 = malloc(__n + 0xa8 & 0xfffffffc);\n      if (pvVar11 == (void *)0x0) {\n        iVar15 = *piVar9;\nLAB_000255a6:\n        free(pvVar11);\n        if (local_b8 != (void *)0x0) {\n          pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n          pvVar11 = *(void **)((int)local_b8 + 8);\n          if (pDVar21 == (DIR *)0x0) goto LAB_000255f4;\n          do {\n            closedir(pDVar21);\n            free(local_b8);\n            local_b8 = pvVar11;\n            while( true ) {\n              if (local_b8 == (void *)0x0) goto LAB_00025608;\n              pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n              pvVar11 = *(void **)((int)local_b8 + 8);\n              if (pDVar21 != (DIR *)0x0) break;\nLAB_000255f4:\n              free(local_b8);\n              local_b8 = pvVar11;\n            }\n          } while( true );\n        }\nLAB_00025608:\n        closedir(*(DIR **)(iVar2 + 0xc));\n        *(undefined4 *)(iVar2 + 0xc) = 0;\n        *(undefined2 *)(iVar2 + 0x3c) = 7;\n        local_b8 = (void *)0x0;\n        param_1[0xb] = param_1[0xb] | 0x4000;\n        *piVar9 = iVar15;\n        goto LAB_0002563f;\n      }\n      pvVar1 = (void *)((int)pvVar11 + 0xa4);\n      memcpy(pvVar1,pdVar10->d_name,__n);\n      __ptr = (void *)param_1[5];\n      *(undefined1 *)((int)pvVar11 + __n + 0xa4) = 0;\n      *(size_t *)((int)pvVar11 + 0x34) = __n;\n      *(int **)((int)pvVar11 + 0x2c) = param_1;\n      *(void **)((int)pvVar11 + 0x1c) = __ptr;\n      *(undefined4 *)((int)pvVar11 + 0x20) = 0;\n      *(undefined4 *)((int)pvVar11 + 0xc) = 0;\n      *(undefined4 *)((int)pvVar11 + 0x3e) = 0x30000;\n      *(undefined4 *)((int)pvVar11 + 0x10) = 0;\n      *(undefined4 *)((int)pvVar11 + 0x14) = 0;\n      if (local_b0 <= __n) {\n        uVar13 = local_d0 + 0x101 + param_1[8] + __n;\n        if (uVar13 < (uint)param_1[8]) {\n          iVar15 = 0x24;\n          free(__ptr);\n          param_1[5] = 0;\n          *piVar9 = 0x24;\n        }\n        else {\n          param_1[8] = uVar13;\n          pvVar14 = realloc(__ptr,uVar13);\n          if (pvVar14 != (void *)0x0) {\n            param_1[5] = (int)pvVar14;\n            if ((__ptr != pvVar14) && (bVar3 = true, (*(byte *)(param_1 + 0xb) & 4) != 0)) {\n              local_a4 = (undefined1 *)((int)pvVar14 + local_d0);\n            }\n            local_b0 = param_1[8] - local_d0;\n            goto LAB_000253d8;\n          }\n          free((void *)param_1[5]);\n          param_1[5] = 0;\n          iVar15 = *piVar9;\n        }\n        goto LAB_000255a6;\n      }\nLAB_000253d8:\n      if (CARRY4(__n,local_d0)) {\n        free(pvVar11);\n        if (local_b8 != (void *)0x0) {\n          pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n          pvVar11 = *(void **)((int)local_b8 + 8);\n          if (pDVar21 == (DIR *)0x0) goto LAB_00025e84;\n          do {\n            closedir(pDVar21);\n            free(local_b8);\n            local_b8 = pvVar11;\n            while( true ) {\n              if (local_b8 == (void *)0x0) goto LAB_00025e94;\n              pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n              pvVar11 = *(void **)((int)local_b8 + 8);\n              if (pDVar21 != (DIR *)0x0) break;\nLAB_00025e84:\n              free(local_b8);\n              local_b8 = pvVar11;\n            }\n          } while( true );\n        }\nLAB_00025e94:\n        closedir(*(DIR **)(iVar2 + 0xc));\n        *(undefined4 *)(iVar2 + 0xc) = 0;\n        *(undefined2 *)(iVar2 + 0x3c) = 7;\n        local_b8 = (void *)0x0;\n        param_1[0xb] = param_1[0xb] | 0x4000;\n        *piVar9 = 0x24;\n        goto LAB_0002563f;\n      }\n      uVar12 = *(undefined4 *)((int)&pdVar10->d_ino + 4);\n      *(size_t *)((int)pvVar11 + 0x28) = __n + local_d0;\n      *(int *)((int)pvVar11 + 0x30) = iVar15 + 1;\n      *(int *)((int)pvVar11 + 4) = *param_1;\n      _Var5 = pdVar10->d_ino;\n      *(undefined4 *)((int)pvVar11 + 0xa0) = uVar12;\n      *(int *)((int)pvVar11 + 0x9c) = (int)_Var5;\n      uVar13 = param_1[0xb];\n      if ((uVar13 & 4) == 0) {\n        *(void **)((int)pvVar11 + 0x18) = pvVar1;\n      }\n      else {\n        *(undefined4 *)((int)pvVar11 + 0x18) = *(undefined4 *)((int)pvVar11 + 0x1c);\n        memmove(local_a4,pvVar1,*(int *)((int)pvVar11 + 0x34) + 1);\n        uVar13 = param_1[0xb];\n      }\n      if ((param_1[10] == 0) || ((uVar13 & 0x400) != 0)) {\n        uVar23 = pdVar10->d_type - 1;\n        if (((uVar13 & 0x18) == 0x18) && ((pdVar10->d_type & 0xfb) != 0)) {\n          *(undefined2 *)((int)pvVar11 + 0x3c) = 0xb;\n          if (uVar23 < 0xc) {\n            *(undefined4 *)((int)pvVar11 + 0x54) = *(undefined4 *)(&DAT_00031560 + uVar23 * 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 (uVar23 < 0xc) {\n            *(undefined4 *)((int)pvVar11 + 0x54) = *(undefined4 *)(&DAT_00031560 + uVar23 * 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        uVar8 = FUN_00024740();\n        *(undefined2 *)((int)pvVar11 + 0x3c) = uVar8;\n      }\n      *(undefined4 *)((int)pvVar11 + 8) = 0;\n      pvVar1 = pvVar11;\n      if (local_b8 != (void *)0x0) {\n        *(void **)((int)local_c4 + 8) = pvVar11;\n        pvVar1 = local_b8;\n      }\n      local_b8 = pvVar1;\n      local_c4 = pvVar11;\n      if (local_d4 == 10000) {\n        if (param_1[10] == 0) {\n          iVar17 = *(int *)(iVar2 + 0x2c);\n          if ((*(byte *)(iVar17 + 0x2d) & 2) != 0) {\n            iVar18 = *(int *)(iVar17 + 0x30);\n            if (iVar18 == 0) {\n              iVar18 = FUN_0001df90(0xd,0,FUN_000246b0,FUN_000246e0,puVar6);\n              *(int *)(iVar17 + 0x30) = iVar18;\n              if (iVar18 != 0) goto LAB_00025920;\nLAB_000259b0:\n              if ((local_9c < 0) ||\n                 (iVar19 = fstatfs64(local_9c,&local_74), iVar17 = local_74.f_type, iVar19 != 0))\n              goto LAB_00025a48;\n              local_d4 = local_74.f_type;\n              if ((iVar18 != 0) &&\n                 (__ptr_00 = (undefined4 *)malloc(0xc), __ptr_00 != (undefined4 *)0x0)) {\n                uVar12 = *(undefined4 *)(iVar2 + 0x44);\n                __ptr_00[1] = *(undefined4 *)(iVar2 + 0x48);\n                *__ptr_00 = uVar12;\n                __ptr_00[2] = iVar17;\n                puVar20 = (undefined4 *)FUN_0001e8d0(iVar18,__ptr_00);\n                if (puVar20 == (undefined4 *)0x0) {\n                  free(__ptr_00);\n                  local_d4 = local_74.f_type;\n                }\n                else {\n                  if (__ptr_00 != puVar20) {\n                    \n                    abort();\n                  }\n                  local_d4 = local_74.f_type;\n                }\n              }\n            }\n            else {\nLAB_00025920:\n              local_7c = *(undefined4 *)(iVar2 + 0x48);\n              local_80 = *(undefined4 *)(iVar2 + 0x44);\n              iVar17 = FUN_0001dce0(iVar18,&local_80);\n              if (iVar17 == 0) goto LAB_000259b0;\n              local_d4 = *(int *)(iVar17 + 8);\n            }\n            if (((local_d4 == 0x6969) || (local_d4 == 0x1021994)) || (local_d4 == -0xacb2be)) {\n              bVar4 = false;\n              goto LAB_00025473;\n            }\n          }\nLAB_00025a48:\n          bVar4 = true;\n        }\nLAB_00025473:\n        local_d4 = 0x2711;\n        goto LAB_000252fb;\n      }\n      local_d4 = local_d4 + 1;\n    } while (local_d4 < local_a8);\nLAB_000256de:\n    if (bVar3) {\n      iVar15 = param_1[5];\n      for (iVar17 = param_1[1]; iVar17 != 0; iVar17 = *(int *)(iVar17 + 8)) {\n        while (*(int *)(iVar17 + 0x18) != iVar17 + 0xa4) {\n          iVar18 = *(int *)(iVar17 + 0x1c);\n          *(int *)(iVar17 + 0x1c) = iVar15;\n          *(int *)(iVar17 + 0x18) = (*(int *)(iVar17 + 0x18) - iVar18) + iVar15;\n          iVar17 = *(int *)(iVar17 + 8);\n          if (iVar17 == 0) goto LAB_00025aef;\n        }\n        *(int *)(iVar17 + 0x1c) = iVar15;\n      }\nLAB_00025aef:\n      iVar17 = *(int *)((int)local_b8 + 0x30);\n      pvVar11 = local_b8;\n      while (-1 < iVar17) {\n        while( true ) {\n          if (*(int *)((int)pvVar11 + 0x18) != (int)pvVar11 + 0xa4) {\n            *(int *)((int)pvVar11 + 0x18) =\n                 (*(int *)((int)pvVar11 + 0x18) - *(int *)((int)pvVar11 + 0x1c)) + iVar15;\n          }\n          pvVar1 = *(void **)((int)pvVar11 + 8);\n          *(int *)((int)pvVar11 + 0x1c) = iVar15;\n          if (pvVar1 == (void *)0x0) break;\n          pvVar11 = pvVar1;\n          if (*(int *)((int)pvVar1 + 0x30) < 0) goto LAB_000256e9;\n        }\n        pvVar11 = *(void **)((int)pvVar11 + 4);\n        iVar17 = *(int *)((int)pvVar11 + 0x30);\n      }\n    }\nLAB_000256e9:\n    if ((*(byte *)(param_1 + 0xb) & 4) != 0) {\n      if ((param_1[8] == local_d0) || (local_d4 == 0)) {\n        local_a4 = local_a4 + -1;\n      }\n      *local_a4 = 0;\n    }\n    if ((pDVar21 == (DIR *)0x0) && (bVar25)) {\n      if ((param_2 == 1) || (local_d4 == 0)) {\n        if (*(int *)(iVar2 + 0x30) == 0) {\n          iVar15 = FUN_00024bb0();\n        }\n        else {\n          iVar15 = FUN_00024e60(&DAT_0002e141);\n        }\n        if (iVar15 != 0) {\n          *(undefined2 *)(iVar2 + 0x3c) = 7;\n          param_1[0xb] = param_1[0xb] | 0x4000;\n          while (pvVar11 = local_b8, local_b8 != (void *)0x0) {\n            while( true ) {\n              local_b8 = *(void **)((int)pvVar11 + 8);\n              if (*(DIR **)((int)pvVar11 + 0xc) == (DIR *)0x0) break;\n              closedir(*(DIR **)((int)pvVar11 + 0xc));\n              free(pvVar11);\n              pvVar11 = local_b8;\n              if (local_b8 == (void *)0x0) goto LAB_00025c40;\n            }\n            free(pvVar11);\n          }\n          goto LAB_00025c40;\n        }\n        goto LAB_0002574d;\n      }\n    }\n    else {\nLAB_0002574d:\n      if (local_d4 == 0) {\n        if (((param_2 == 3) && (*(short *)(iVar2 + 0x3c) != 4)) && (*(short *)(iVar2 + 0x3c) != 7))\n        {\n          *(undefined2 *)(iVar2 + 0x3c) = 6;\n        }\n        if (local_b8 != (void *)0x0) {\n          pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n          pvVar11 = *(void **)((int)local_b8 + 8);\n          if (pDVar21 == (DIR *)0x0) goto LAB_00025c94;\n          do {\n            closedir(pDVar21);\n            free(local_b8);\n            local_b8 = pvVar11;\n            while( true ) {\n              if (local_b8 == (void *)0x0) goto LAB_00025c40;\n              pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n              pvVar11 = *(void **)((int)local_b8 + 8);\n              if (pDVar21 != (DIR *)0x0) break;\nLAB_00025c94:\n              free(local_b8);\n              local_b8 = pvVar11;\n            }\n          } while( true );\n        }\n        goto LAB_00025c40;\n      }\n    }\n    if (bVar4) {\n      param_1[10] = (int)FUN_00024700;\n      local_b8 = (void *)FUN_000248e0();\n      param_1[10] = 0;\n    }\n    else if ((param_1[10] != 0) && (local_d4 != 1)) {\n      local_b8 = (void *)FUN_000248e0();\n    }\n  }\nLAB_0002563f:\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return local_b8;\n  }\n                    \n  FUN_0002d5d0();\n}" (primitive_type "void") (pointer_declarator "* __regparm3 FUN_000251b0(int *param_1,int param_2)" (* "*") (ERROR "__regparm3" (identifier "__regparm3")) (function_declarator "FUN_000251b0(int *param_1,int param_2)" (identifier "FUN_000251b0") (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  void *pvVar1;\n  int iVar2;\n  void *__ptr;\n  bool bVar3;\n  bool bVar4;\n  __ino64_t _Var5;\n  undefined *puVar6;\n  char cVar7;\n  undefined2 uVar8;\n  int *piVar9;\n  dirent64 *pdVar10;\n  size_t __n;\n  void *pvVar11;\n  undefined4 uVar12;\n  uint uVar13;\n  void *pvVar14;\n  int iVar15;\n  DIR *pDVar16;\n  int iVar17;\n  int iVar18;\n  int iVar19;\n  undefined4 *__ptr_00;\n  undefined4 *puVar20;\n  DIR *pDVar21;\n  uint uVar22;\n  uint uVar23;\n  ushort uVar24;\n  int in_GS_OFFSET;\n  bool bVar25;\n  uint local_d4;\n  uint local_d0;\n  void *local_c4;\n  void *local_b8;\n  uint local_b0;\n  uint local_a8;\n  undefined1 *local_a4;\n  int local_9c;\n  undefined4 local_80;\n  undefined4 local_7c;\n  statfs64 local_74;\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x251bb;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  iVar2 = *param_1;\n  pDVar21 = *(DIR **)(iVar2 + 0xc);\n  if (pDVar21 == (DIR *)0x0) {\n    uVar13 = param_1[0xb];\n    uVar23 = uVar13 & 0x10;\n    if (((uVar23 != 0) && (uVar23 = 0x20000, (uVar13 & 1) != 0)) &&\n       (uVar23 = *(uint *)(iVar2 + 0x30), uVar23 != 0)) {\n      uVar23 = 0x20000;\n    }\n    iVar15 = -100;\n    if ((uVar13 & 0x204) == 0x200) {\n      iVar15 = param_1[7];\n    }\n    local_9c = FUN_00029520(iVar15,*(undefined4 *)(iVar2 + 0x18),\n                            (uVar13 & 0x800) << 7 | uVar23 | 0x90900);\n    if (local_9c < 0) {\n      *(undefined4 *)(iVar2 + 0xc) = 0;\n    }\n    else {\n      pDVar16 = fdopendir(local_9c);\n      if (pDVar16 != (DIR *)0x0) {\n        *(DIR **)(iVar2 + 0xc) = pDVar16;\n        if (*(short *)(iVar2 + 0x3c) == 0xb) {\n          uVar8 = FUN_00024740();\n          *(undefined2 *)(iVar2 + 0x3c) = uVar8;\n        }\n        else if ((param_1[0xb] & 0x100U) != 0) {\n          FUN_00024aa0();\n          FUN_00024740();\n          cVar7 = FUN_000249d0();\n          if (cVar7 == '\0') {\n            piVar9 = __errno_location();\n            local_b8 = (void *)0x0;\n            *piVar9 = 0xc;\n            goto LAB_0002563f;\n          }\n        }\n        local_a8 = (-(uint)(param_1[10] == 0) & 0x186a1) - 1;\n        if (param_2 == 2) {\nLAB_00025bc8:\n          bVar25 = false;\n          uVar13 = param_1[0xb];\n          goto LAB_00025223;\n        }\n        if ((((param_1[0xb] & 0x38U) == 0x18) && (*(int *)(iVar2 + 0x58) == 2)) &&\n           (iVar15 = FUN_00024ca0(), iVar15 != 0)) {\n          if (param_2 != 3) goto LAB_00025bc8;\n          bVar25 = false;\n        }\n        else {\n          bVar25 = param_2 == 3;\n        }\n        if (((*(byte *)((int)param_1 + 0x2d) & 2) == 0) ||\n           (local_9c = FUN_000243f0(local_9c,0x406,3), -1 < local_9c)) {\n          iVar15 = FUN_00024e60(0);\n          if (iVar15 == 0) goto LAB_0002521b;\n          pDVar16 = *(DIR **)(iVar2 + 0xc);\n          uVar24 = *(ushort *)(iVar2 + 0x3e) | 1;\n          if (bVar25) goto LAB_000258a0;\nLAB_000258ae:\n          *(ushort *)(iVar2 + 0x3e) = uVar24;\n          closedir(pDVar16);\n          *(undefined4 *)(iVar2 + 0xc) = 0;\n          uVar13 = param_1[0xb];\n          if (((uVar13 & 0x200) != 0) && (-1 < local_9c)) {\n            close(local_9c);\n            uVar13 = param_1[0xb];\n          }\n        }\n        else {\n          pDVar16 = *(DIR **)(iVar2 + 0xc);\n          uVar24 = *(ushort *)(iVar2 + 0x3e) | 1;\n          if (bVar25) {\nLAB_000258a0:\n            piVar9 = __errno_location();\n            *(int *)(iVar2 + 0x20) = *piVar9;\n            goto LAB_000258ae;\n          }\n          *(ushort *)(iVar2 + 0x3e) = uVar24;\n          closedir(pDVar16);\n          uVar13 = param_1[0xb];\n        }\n        bVar25 = false;\n        *(undefined4 *)(iVar2 + 0xc) = 0;\n        goto LAB_00025223;\n      }\n      piVar9 = __errno_location();\n      iVar15 = *piVar9;\n      close(local_9c);\n      *piVar9 = iVar15;\n      *(undefined4 *)(iVar2 + 0xc) = 0;\n    }\njoined_r0x00025c30:\n    if (param_2 == 3) {\n      *(undefined2 *)(iVar2 + 0x3c) = 4;\n      piVar9 = __errno_location();\n      *(int *)(iVar2 + 0x20) = *piVar9;\n    }\nLAB_00025c40:\n    local_b8 = (void *)0x0;\n  }\n  else {\n    local_9c = dirfd(pDVar21);\n    if (local_9c < 0) {\n      closedir(*(DIR **)(iVar2 + 0xc));\n      *(undefined4 *)(iVar2 + 0xc) = 0;\n      goto joined_r0x00025c30;\n    }\n    if (param_1[10] == 0) {\n      local_a8 = 100000;\n      uVar13 = param_1[0xb];\n      bVar25 = true;\n    }\n    else {\n      local_a8 = 0xffffffff;\nLAB_0002521b:\n      bVar25 = true;\n      uVar13 = param_1[0xb];\n    }\nLAB_00025223:\n    uVar23 = *(uint *)(iVar2 + 0x28);\n    uVar22 = uVar23 - 1;\n    local_d0 = uVar23;\n    if (*(char *)(*(int *)(iVar2 + 0x1c) + -1 + uVar23) != '/') {\n      local_d0 = uVar23 + 1;\n      uVar22 = uVar23;\n    }\n    local_a4 = (undefined1 *)0x0;\n    if ((uVar13 & 4) != 0) {\n      local_a4 = (undefined1 *)(uVar22 + param_1[5]) + 1;\n      *(undefined1 *)(uVar22 + param_1[5]) = 0x2f;\n    }\n    puVar6 = PTR_free_0003afa8;\n    local_b0 = param_1[8] - local_d0;\n    bVar4 = false;\n    bVar3 = false;\n    iVar15 = *(int *)(iVar2 + 0x30);\n    local_c4 = (void *)0x0;\n    local_d4 = 0;\n    local_b8 = (void *)0x0;\nLAB_000252fb:\n    do {\n      do {\n        pDVar16 = *(DIR **)(iVar2 + 0xc);\n        if (pDVar16 == (DIR *)0x0) goto LAB_000256de;\n        piVar9 = __errno_location();\n        *piVar9 = 0;\n        pdVar10 = readdir64(pDVar16);\n        if (pdVar10 == (dirent64 *)0x0) {\n          if (*piVar9 != 0) {\n            *(int *)(iVar2 + 0x20) = *piVar9;\n            *(ushort *)(iVar2 + 0x3c) =\n                 (-(ushort)(pDVar21 == (DIR *)0x0 && local_d4 == 0) & 0xfffd) + 7;\n          }\n          if (*(DIR **)(iVar2 + 0xc) != (DIR *)0x0) {\n            closedir(*(DIR **)(iVar2 + 0xc));\n            *(undefined4 *)(iVar2 + 0xc) = 0;\n          }\n          goto LAB_000256de;\n        }\n      } while ((((*(byte *)(param_1 + 0xb) & 0x20) == 0) && (pdVar10->d_name[0] == '.')) &&\n              ((pdVar10->d_name[1] == '\0' || (*(short *)(pdVar10->d_name + 1) == 0x2e))));\n      __n = strlen(pdVar10->d_name);\n      pvVar11 = malloc(__n + 0xa8 & 0xfffffffc);\n      if (pvVar11 == (void *)0x0) {\n        iVar15 = *piVar9;\nLAB_000255a6:\n        free(pvVar11);\n        if (local_b8 != (void *)0x0) {\n          pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n          pvVar11 = *(void **)((int)local_b8 + 8);\n          if (pDVar21 == (DIR *)0x0) goto LAB_000255f4;\n          do {\n            closedir(pDVar21);\n            free(local_b8);\n            local_b8 = pvVar11;\n            while( true ) {\n              if (local_b8 == (void *)0x0) goto LAB_00025608;\n              pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n              pvVar11 = *(void **)((int)local_b8 + 8);\n              if (pDVar21 != (DIR *)0x0) break;\nLAB_000255f4:\n              free(local_b8);\n              local_b8 = pvVar11;\n            }\n          } while( true );\n        }\nLAB_00025608:\n        closedir(*(DIR **)(iVar2 + 0xc));\n        *(undefined4 *)(iVar2 + 0xc) = 0;\n        *(undefined2 *)(iVar2 + 0x3c) = 7;\n        local_b8 = (void *)0x0;\n        param_1[0xb] = param_1[0xb] | 0x4000;\n        *piVar9 = iVar15;\n        goto LAB_0002563f;\n      }\n      pvVar1 = (void *)((int)pvVar11 + 0xa4);\n      memcpy(pvVar1,pdVar10->d_name,__n);\n      __ptr = (void *)param_1[5];\n      *(undefined1 *)((int)pvVar11 + __n + 0xa4) = 0;\n      *(size_t *)((int)pvVar11 + 0x34) = __n;\n      *(int **)((int)pvVar11 + 0x2c) = param_1;\n      *(void **)((int)pvVar11 + 0x1c) = __ptr;\n      *(undefined4 *)((int)pvVar11 + 0x20) = 0;\n      *(undefined4 *)((int)pvVar11 + 0xc) = 0;\n      *(undefined4 *)((int)pvVar11 + 0x3e) = 0x30000;\n      *(undefined4 *)((int)pvVar11 + 0x10) = 0;\n      *(undefined4 *)((int)pvVar11 + 0x14) = 0;\n      if (local_b0 <= __n) {\n        uVar13 = local_d0 + 0x101 + param_1[8] + __n;\n        if (uVar13 < (uint)param_1[8]) {\n          iVar15 = 0x24;\n          free(__ptr);\n          param_1[5] = 0;\n          *piVar9 = 0x24;\n        }\n        else {\n          param_1[8] = uVar13;\n          pvVar14 = realloc(__ptr,uVar13);\n          if (pvVar14 != (void *)0x0) {\n            param_1[5] = (int)pvVar14;\n            if ((__ptr != pvVar14) && (bVar3 = true, (*(byte *)(param_1 + 0xb) & 4) != 0)) {\n              local_a4 = (undefined1 *)((int)pvVar14 + local_d0);\n            }\n            local_b0 = param_1[8] - local_d0;\n            goto LAB_000253d8;\n          }\n          free((void *)param_1[5]);\n          param_1[5] = 0;\n          iVar15 = *piVar9;\n        }\n        goto LAB_000255a6;\n      }\nLAB_000253d8:\n      if (CARRY4(__n,local_d0)) {\n        free(pvVar11);\n        if (local_b8 != (void *)0x0) {\n          pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n          pvVar11 = *(void **)((int)local_b8 + 8);\n          if (pDVar21 == (DIR *)0x0) goto LAB_00025e84;\n          do {\n            closedir(pDVar21);\n            free(local_b8);\n            local_b8 = pvVar11;\n            while( true ) {\n              if (local_b8 == (void *)0x0) goto LAB_00025e94;\n              pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n              pvVar11 = *(void **)((int)local_b8 + 8);\n              if (pDVar21 != (DIR *)0x0) break;\nLAB_00025e84:\n              free(local_b8);\n              local_b8 = pvVar11;\n            }\n          } while( true );\n        }\nLAB_00025e94:\n        closedir(*(DIR **)(iVar2 + 0xc));\n        *(undefined4 *)(iVar2 + 0xc) = 0;\n        *(undefined2 *)(iVar2 + 0x3c) = 7;\n        local_b8 = (void *)0x0;\n        param_1[0xb] = param_1[0xb] | 0x4000;\n        *piVar9 = 0x24;\n        goto LAB_0002563f;\n      }\n      uVar12 = *(undefined4 *)((int)&pdVar10->d_ino + 4);\n      *(size_t *)((int)pvVar11 + 0x28) = __n + local_d0;\n      *(int *)((int)pvVar11 + 0x30) = iVar15 + 1;\n      *(int *)((int)pvVar11 + 4) = *param_1;\n      _Var5 = pdVar10->d_ino;\n      *(undefined4 *)((int)pvVar11 + 0xa0) = uVar12;\n      *(int *)((int)pvVar11 + 0x9c) = (int)_Var5;\n      uVar13 = param_1[0xb];\n      if ((uVar13 & 4) == 0) {\n        *(void **)((int)pvVar11 + 0x18) = pvVar1;\n      }\n      else {\n        *(undefined4 *)((int)pvVar11 + 0x18) = *(undefined4 *)((int)pvVar11 + 0x1c);\n        memmove(local_a4,pvVar1,*(int *)((int)pvVar11 + 0x34) + 1);\n        uVar13 = param_1[0xb];\n      }\n      if ((param_1[10] == 0) || ((uVar13 & 0x400) != 0)) {\n        uVar23 = pdVar10->d_type - 1;\n        if (((uVar13 & 0x18) == 0x18) && ((pdVar10->d_type & 0xfb) != 0)) {\n          *(undefined2 *)((int)pvVar11 + 0x3c) = 0xb;\n          if (uVar23 < 0xc) {\n            *(undefined4 *)((int)pvVar11 + 0x54) = *(undefined4 *)(&DAT_00031560 + uVar23 * 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 (uVar23 < 0xc) {\n            *(undefined4 *)((int)pvVar11 + 0x54) = *(undefined4 *)(&DAT_00031560 + uVar23 * 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        uVar8 = FUN_00024740();\n        *(undefined2 *)((int)pvVar11 + 0x3c) = uVar8;\n      }\n      *(undefined4 *)((int)pvVar11 + 8) = 0;\n      pvVar1 = pvVar11;\n      if (local_b8 != (void *)0x0) {\n        *(void **)((int)local_c4 + 8) = pvVar11;\n        pvVar1 = local_b8;\n      }\n      local_b8 = pvVar1;\n      local_c4 = pvVar11;\n      if (local_d4 == 10000) {\n        if (param_1[10] == 0) {\n          iVar17 = *(int *)(iVar2 + 0x2c);\n          if ((*(byte *)(iVar17 + 0x2d) & 2) != 0) {\n            iVar18 = *(int *)(iVar17 + 0x30);\n            if (iVar18 == 0) {\n              iVar18 = FUN_0001df90(0xd,0,FUN_000246b0,FUN_000246e0,puVar6);\n              *(int *)(iVar17 + 0x30) = iVar18;\n              if (iVar18 != 0) goto LAB_00025920;\nLAB_000259b0:\n              if ((local_9c < 0) ||\n                 (iVar19 = fstatfs64(local_9c,&local_74), iVar17 = local_74.f_type, iVar19 != 0))\n              goto LAB_00025a48;\n              local_d4 = local_74.f_type;\n              if ((iVar18 != 0) &&\n                 (__ptr_00 = (undefined4 *)malloc(0xc), __ptr_00 != (undefined4 *)0x0)) {\n                uVar12 = *(undefined4 *)(iVar2 + 0x44);\n                __ptr_00[1] = *(undefined4 *)(iVar2 + 0x48);\n                *__ptr_00 = uVar12;\n                __ptr_00[2] = iVar17;\n                puVar20 = (undefined4 *)FUN_0001e8d0(iVar18,__ptr_00);\n                if (puVar20 == (undefined4 *)0x0) {\n                  free(__ptr_00);\n                  local_d4 = local_74.f_type;\n                }\n                else {\n                  if (__ptr_00 != puVar20) {\n                    \n                    abort();\n                  }\n                  local_d4 = local_74.f_type;\n                }\n              }\n            }\n            else {\nLAB_00025920:\n              local_7c = *(undefined4 *)(iVar2 + 0x48);\n              local_80 = *(undefined4 *)(iVar2 + 0x44);\n              iVar17 = FUN_0001dce0(iVar18,&local_80);\n              if (iVar17 == 0) goto LAB_000259b0;\n              local_d4 = *(int *)(iVar17 + 8);\n            }\n            if (((local_d4 == 0x6969) || (local_d4 == 0x1021994)) || (local_d4 == -0xacb2be)) {\n              bVar4 = false;\n              goto LAB_00025473;\n            }\n          }\nLAB_00025a48:\n          bVar4 = true;\n        }\nLAB_00025473:\n        local_d4 = 0x2711;\n        goto LAB_000252fb;\n      }\n      local_d4 = local_d4 + 1;\n    } while (local_d4 < local_a8);\nLAB_000256de:\n    if (bVar3) {\n      iVar15 = param_1[5];\n      for (iVar17 = param_1[1]; iVar17 != 0; iVar17 = *(int *)(iVar17 + 8)) {\n        while (*(int *)(iVar17 + 0x18) != iVar17 + 0xa4) {\n          iVar18 = *(int *)(iVar17 + 0x1c);\n          *(int *)(iVar17 + 0x1c) = iVar15;\n          *(int *)(iVar17 + 0x18) = (*(int *)(iVar17 + 0x18) - iVar18) + iVar15;\n          iVar17 = *(int *)(iVar17 + 8);\n          if (iVar17 == 0) goto LAB_00025aef;\n        }\n        *(int *)(iVar17 + 0x1c) = iVar15;\n      }\nLAB_00025aef:\n      iVar17 = *(int *)((int)local_b8 + 0x30);\n      pvVar11 = local_b8;\n      while (-1 < iVar17) {\n        while( true ) {\n          if (*(int *)((int)pvVar11 + 0x18) != (int)pvVar11 + 0xa4) {\n            *(int *)((int)pvVar11 + 0x18) =\n                 (*(int *)((int)pvVar11 + 0x18) - *(int *)((int)pvVar11 + 0x1c)) + iVar15;\n          }\n          pvVar1 = *(void **)((int)pvVar11 + 8);\n          *(int *)((int)pvVar11 + 0x1c) = iVar15;\n          if (pvVar1 == (void *)0x0) break;\n          pvVar11 = pvVar1;\n          if (*(int *)((int)pvVar1 + 0x30) < 0) goto LAB_000256e9;\n        }\n        pvVar11 = *(void **)((int)pvVar11 + 4);\n        iVar17 = *(int *)((int)pvVar11 + 0x30);\n      }\n    }\nLAB_000256e9:\n    if ((*(byte *)(param_1 + 0xb) & 4) != 0) {\n      if ((param_1[8] == local_d0) || (local_d4 == 0)) {\n        local_a4 = local_a4 + -1;\n      }\n      *local_a4 = 0;\n    }\n    if ((pDVar21 == (DIR *)0x0) && (bVar25)) {\n      if ((param_2 == 1) || (local_d4 == 0)) {\n        if (*(int *)(iVar2 + 0x30) == 0) {\n          iVar15 = FUN_00024bb0();\n        }\n        else {\n          iVar15 = FUN_00024e60(&DAT_0002e141);\n        }\n        if (iVar15 != 0) {\n          *(undefined2 *)(iVar2 + 0x3c) = 7;\n          param_1[0xb] = param_1[0xb] | 0x4000;\n          while (pvVar11 = local_b8, local_b8 != (void *)0x0) {\n            while( true ) {\n              local_b8 = *(void **)((int)pvVar11 + 8);\n              if (*(DIR **)((int)pvVar11 + 0xc) == (DIR *)0x0) break;\n              closedir(*(DIR **)((int)pvVar11 + 0xc));\n              free(pvVar11);\n              pvVar11 = local_b8;\n              if (local_b8 == (void *)0x0) goto LAB_00025c40;\n            }\n            free(pvVar11);\n          }\n          goto LAB_00025c40;\n        }\n        goto LAB_0002574d;\n      }\n    }\n    else {\nLAB_0002574d:\n      if (local_d4 == 0) {\n        if (((param_2 == 3) && (*(short *)(iVar2 + 0x3c) != 4)) && (*(short *)(iVar2 + 0x3c) != 7))\n        {\n          *(undefined2 *)(iVar2 + 0x3c) = 6;\n        }\n        if (local_b8 != (void *)0x0) {\n          pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n          pvVar11 = *(void **)((int)local_b8 + 8);\n          if (pDVar21 == (DIR *)0x0) goto LAB_00025c94;\n          do {\n            closedir(pDVar21);\n            free(local_b8);\n            local_b8 = pvVar11;\n            while( true ) {\n              if (local_b8 == (void *)0x0) goto LAB_00025c40;\n              pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n              pvVar11 = *(void **)((int)local_b8 + 8);\n              if (pDVar21 != (DIR *)0x0) break;\nLAB_00025c94:\n              free(local_b8);\n              local_b8 = pvVar11;\n            }\n          } while( true );\n        }\n        goto LAB_00025c40;\n      }\n    }\n    if (bVar4) {\n      param_1[10] = (int)FUN_00024700;\n      local_b8 = (void *)FUN_000248e0();\n      param_1[10] = 0;\n    }\n    else if ((param_1[10] != 0) && (local_d4 != 1)) {\n      local_b8 = (void *)FUN_000248e0();\n    }\n  }\nLAB_0002563f:\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return local_b8;\n  }\n                    \n  FUN_0002d5d0();\n}" ({ "{") (declaration "void *pvVar1;" (primitive_type "void") (pointer_declarator "*pvVar1" (* "*") (identifier "pvVar1")) (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (declaration "void *__ptr;" (primitive_type "void") (pointer_declarator "*__ptr" (* "*") (identifier "__ptr")) (; ";")) (declaration "bool bVar3;" (primitive_type "bool") (identifier "bVar3") (; ";")) (declaration "bool bVar4;" (primitive_type "bool") (identifier "bVar4") (; ";")) (declaration "__ino64_t _Var5;" (type_identifier "__ino64_t") (identifier "_Var5") (; ";")) (declaration "undefined *puVar6;" (type_identifier "undefined") (pointer_declarator "*puVar6" (* "*") (identifier "puVar6")) (; ";")) (declaration "char cVar7;" (primitive_type "char") (identifier "cVar7") (; ";")) (declaration "undefined2 uVar8;" (type_identifier "undefined2") (identifier "uVar8") (; ";")) (declaration "int *piVar9;" (primitive_type "int") (pointer_declarator "*piVar9" (* "*") (identifier "piVar9")) (; ";")) (declaration "dirent64 *pdVar10;" (type_identifier "dirent64") (pointer_declarator "*pdVar10" (* "*") (identifier "pdVar10")) (; ";")) (declaration "size_t __n;" (primitive_type "size_t") (identifier "__n") (; ";")) (declaration "void *pvVar11;" (primitive_type "void") (pointer_declarator "*pvVar11" (* "*") (identifier "pvVar11")) (; ";")) (declaration "undefined4 uVar12;" (type_identifier "undefined4") (identifier "uVar12") (; ";")) (declaration "uint uVar13;" (type_identifier "uint") (identifier "uVar13") (; ";")) (declaration "void *pvVar14;" (primitive_type "void") (pointer_declarator "*pvVar14" (* "*") (identifier "pvVar14")) (; ";")) (declaration "int iVar15;" (primitive_type "int") (identifier "iVar15") (; ";")) (declaration "DIR *pDVar16;" (type_identifier "DIR") (pointer_declarator "*pDVar16" (* "*") (identifier "pDVar16")) (; ";")) (declaration "int iVar17;" (primitive_type "int") (identifier "iVar17") (; ";")) (declaration "int iVar18;" (primitive_type "int") (identifier "iVar18") (; ";")) (declaration "int iVar19;" (primitive_type "int") (identifier "iVar19") (; ";")) (declaration "undefined4 *__ptr_00;" (type_identifier "undefined4") (pointer_declarator "*__ptr_00" (* "*") (identifier "__ptr_00")) (; ";")) (declaration "undefined4 *puVar20;" (type_identifier "undefined4") (pointer_declarator "*puVar20" (* "*") (identifier "puVar20")) (; ";")) (declaration "DIR *pDVar21;" (type_identifier "DIR") (pointer_declarator "*pDVar21" (* "*") (identifier "pDVar21")) (; ";")) (declaration "uint uVar22;" (type_identifier "uint") (identifier "uVar22") (; ";")) (declaration "uint uVar23;" (type_identifier "uint") (identifier "uVar23") (; ";")) (declaration "ushort uVar24;" (type_identifier "ushort") (identifier "uVar24") (; ";")) (declaration "int in_GS_OFFSET;" (primitive_type "int") (identifier "in_GS_OFFSET") (; ";")) (declaration "bool bVar25;" (primitive_type "bool") (identifier "bVar25") (; ";")) (declaration "uint local_d4;" (type_identifier "uint") (identifier "local_d4") (; ";")) (declaration "uint local_d0;" (type_identifier "uint") (identifier "local_d0") (; ";")) (declaration "void *local_c4;" (primitive_type "void") (pointer_declarator "*local_c4" (* "*") (identifier "local_c4")) (; ";")) (declaration "void *local_b8;" (primitive_type "void") (pointer_declarator "*local_b8" (* "*") (identifier "local_b8")) (; ";")) (declaration "uint local_b0;" (type_identifier "uint") (identifier "local_b0") (; ";")) (declaration "uint local_a8;" (type_identifier "uint") (identifier "local_a8") (; ";")) (declaration "undefined1 *local_a4;" (type_identifier "undefined1") (pointer_declarator "*local_a4" (* "*") (identifier "local_a4")) (; ";")) (declaration "int local_9c;" (primitive_type "int") (identifier "local_9c") (; ";")) (declaration "undefined4 local_80;" (type_identifier "undefined4") (identifier "local_80") (; ";")) (declaration "undefined4 local_7c;" (type_identifier "undefined4") (identifier "local_7c") (; ";")) (declaration "statfs64 local_74;" (type_identifier "statfs64") (identifier "local_74") (; ";")) (declaration "int local_20;" (primitive_type "int") (identifier "local_20") (; ";")) (declaration "undefined4 uStack_14;" (type_identifier "undefined4") (identifier "uStack_14") (; ";")) (expression_statement "uStack_14 = 0x251bb;" (assignment_expression "uStack_14 = 0x251bb" (identifier "uStack_14") (= "=") (number_literal "0x251bb")) (; ";")) (expression_statement "local_20 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "local_20 = *(int *)(in_GS_OFFSET + 0x14)" (identifier "local_20") (= "=") (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" (* "*") (cast_expression "(int *)(in_GS_OFFSET + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(in_GS_OFFSET + 0x14)" (( "(") (binary_expression "in_GS_OFFSET + 0x14" (identifier "in_GS_OFFSET") (+ "+") (number_literal "0x14")) () ")"))))) (; ";")) (expression_statement "iVar2 = *param_1;" (assignment_expression "iVar2 = *param_1" (identifier "iVar2") (= "=") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (; ";")) (expression_statement "pDVar21 = *(DIR **)(iVar2 + 0xc);" (assignment_expression "pDVar21 = *(DIR **)(iVar2 + 0xc)" (identifier "pDVar21") (= "=") (pointer_expression "*(DIR **)(iVar2 + 0xc)" (* "*") (cast_expression "(DIR **)(iVar2 + 0xc)" (( "(") (type_descriptor "DIR **" (type_identifier "DIR") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar2 + 0xc)" (( "(") (binary_expression "iVar2 + 0xc" (identifier "iVar2") (+ "+") (number_literal "0xc")) () ")"))))) (; ";")) (if_statement "if (pDVar21 == (DIR *)0x0) {\n    uVar13 = param_1[0xb];\n    uVar23 = uVar13 & 0x10;\n    if (((uVar23 != 0) && (uVar23 = 0x20000, (uVar13 & 1) != 0)) &&\n       (uVar23 = *(uint *)(iVar2 + 0x30), uVar23 != 0)) {\n      uVar23 = 0x20000;\n    }\n    iVar15 = -100;\n    if ((uVar13 & 0x204) == 0x200) {\n      iVar15 = param_1[7];\n    }\n    local_9c = FUN_00029520(iVar15,*(undefined4 *)(iVar2 + 0x18),\n                            (uVar13 & 0x800) << 7 | uVar23 | 0x90900);\n    if (local_9c < 0) {\n      *(undefined4 *)(iVar2 + 0xc) = 0;\n    }\n    else {\n      pDVar16 = fdopendir(local_9c);\n      if (pDVar16 != (DIR *)0x0) {\n        *(DIR **)(iVar2 + 0xc) = pDVar16;\n        if (*(short *)(iVar2 + 0x3c) == 0xb) {\n          uVar8 = FUN_00024740();\n          *(undefined2 *)(iVar2 + 0x3c) = uVar8;\n        }\n        else if ((param_1[0xb] & 0x100U) != 0) {\n          FUN_00024aa0();\n          FUN_00024740();\n          cVar7 = FUN_000249d0();\n          if (cVar7 == '\0') {\n            piVar9 = __errno_location();\n            local_b8 = (void *)0x0;\n            *piVar9 = 0xc;\n            goto LAB_0002563f;\n          }\n        }\n        local_a8 = (-(uint)(param_1[10] == 0) & 0x186a1) - 1;\n        if (param_2 == 2) {\nLAB_00025bc8:\n          bVar25 = false;\n          uVar13 = param_1[0xb];\n          goto LAB_00025223;\n        }\n        if ((((param_1[0xb] & 0x38U) == 0x18) && (*(int *)(iVar2 + 0x58) == 2)) &&\n           (iVar15 = FUN_00024ca0(), iVar15 != 0)) {\n          if (param_2 != 3) goto LAB_00025bc8;\n          bVar25 = false;\n        }\n        else {\n          bVar25 = param_2 == 3;\n        }\n        if (((*(byte *)((int)param_1 + 0x2d) & 2) == 0) ||\n           (local_9c = FUN_000243f0(local_9c,0x406,3), -1 < local_9c)) {\n          iVar15 = FUN_00024e60(0);\n          if (iVar15 == 0) goto LAB_0002521b;\n          pDVar16 = *(DIR **)(iVar2 + 0xc);\n          uVar24 = *(ushort *)(iVar2 + 0x3e) | 1;\n          if (bVar25) goto LAB_000258a0;\nLAB_000258ae:\n          *(ushort *)(iVar2 + 0x3e) = uVar24;\n          closedir(pDVar16);\n          *(undefined4 *)(iVar2 + 0xc) = 0;\n          uVar13 = param_1[0xb];\n          if (((uVar13 & 0x200) != 0) && (-1 < local_9c)) {\n            close(local_9c);\n            uVar13 = param_1[0xb];\n          }\n        }\n        else {\n          pDVar16 = *(DIR **)(iVar2 + 0xc);\n          uVar24 = *(ushort *)(iVar2 + 0x3e) | 1;\n          if (bVar25) {\nLAB_000258a0:\n            piVar9 = __errno_location();\n            *(int *)(iVar2 + 0x20) = *piVar9;\n            goto LAB_000258ae;\n          }\n          *(ushort *)(iVar2 + 0x3e) = uVar24;\n          closedir(pDVar16);\n          uVar13 = param_1[0xb];\n        }\n        bVar25 = false;\n        *(undefined4 *)(iVar2 + 0xc) = 0;\n        goto LAB_00025223;\n      }\n      piVar9 = __errno_location();\n      iVar15 = *piVar9;\n      close(local_9c);\n      *piVar9 = iVar15;\n      *(undefined4 *)(iVar2 + 0xc) = 0;\n    }\njoined_r0x00025c30:\n    if (param_2 == 3) {\n      *(undefined2 *)(iVar2 + 0x3c) = 4;\n      piVar9 = __errno_location();\n      *(int *)(iVar2 + 0x20) = *piVar9;\n    }\nLAB_00025c40:\n    local_b8 = (void *)0x0;\n  }\n  else {\n    local_9c = dirfd(pDVar21);\n    if (local_9c < 0) {\n      closedir(*(DIR **)(iVar2 + 0xc));\n      *(undefined4 *)(iVar2 + 0xc) = 0;\n      goto joined_r0x00025c30;\n    }\n    if (param_1[10] == 0) {\n      local_a8 = 100000;\n      uVar13 = param_1[0xb];\n      bVar25 = true;\n    }\n    else {\n      local_a8 = 0xffffffff;\nLAB_0002521b:\n      bVar25 = true;\n      uVar13 = param_1[0xb];\n    }\nLAB_00025223:\n    uVar23 = *(uint *)(iVar2 + 0x28);\n    uVar22 = uVar23 - 1;\n    local_d0 = uVar23;\n    if (*(char *)(*(int *)(iVar2 + 0x1c) + -1 + uVar23) != '/') {\n      local_d0 = uVar23 + 1;\n      uVar22 = uVar23;\n    }\n    local_a4 = (undefined1 *)0x0;\n    if ((uVar13 & 4) != 0) {\n      local_a4 = (undefined1 *)(uVar22 + param_1[5]) + 1;\n      *(undefined1 *)(uVar22 + param_1[5]) = 0x2f;\n    }\n    puVar6 = PTR_free_0003afa8;\n    local_b0 = param_1[8] - local_d0;\n    bVar4 = false;\n    bVar3 = false;\n    iVar15 = *(int *)(iVar2 + 0x30);\n    local_c4 = (void *)0x0;\n    local_d4 = 0;\n    local_b8 = (void *)0x0;\nLAB_000252fb:\n    do {\n      do {\n        pDVar16 = *(DIR **)(iVar2 + 0xc);\n        if (pDVar16 == (DIR *)0x0) goto LAB_000256de;\n        piVar9 = __errno_location();\n        *piVar9 = 0;\n        pdVar10 = readdir64(pDVar16);\n        if (pdVar10 == (dirent64 *)0x0) {\n          if (*piVar9 != 0) {\n            *(int *)(iVar2 + 0x20) = *piVar9;\n            *(ushort *)(iVar2 + 0x3c) =\n                 (-(ushort)(pDVar21 == (DIR *)0x0 && local_d4 == 0) & 0xfffd) + 7;\n          }\n          if (*(DIR **)(iVar2 + 0xc) != (DIR *)0x0) {\n            closedir(*(DIR **)(iVar2 + 0xc));\n            *(undefined4 *)(iVar2 + 0xc) = 0;\n          }\n          goto LAB_000256de;\n        }\n      } while ((((*(byte *)(param_1 + 0xb) & 0x20) == 0) && (pdVar10->d_name[0] == '.')) &&\n              ((pdVar10->d_name[1] == '\0' || (*(short *)(pdVar10->d_name + 1) == 0x2e))));\n      __n = strlen(pdVar10->d_name);\n      pvVar11 = malloc(__n + 0xa8 & 0xfffffffc);\n      if (pvVar11 == (void *)0x0) {\n        iVar15 = *piVar9;\nLAB_000255a6:\n        free(pvVar11);\n        if (local_b8 != (void *)0x0) {\n          pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n          pvVar11 = *(void **)((int)local_b8 + 8);\n          if (pDVar21 == (DIR *)0x0) goto LAB_000255f4;\n          do {\n            closedir(pDVar21);\n            free(local_b8);\n            local_b8 = pvVar11;\n            while( true ) {\n              if (local_b8 == (void *)0x0) goto LAB_00025608;\n              pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n              pvVar11 = *(void **)((int)local_b8 + 8);\n              if (pDVar21 != (DIR *)0x0) break;\nLAB_000255f4:\n              free(local_b8);\n              local_b8 = pvVar11;\n            }\n          } while( true );\n        }\nLAB_00025608:\n        closedir(*(DIR **)(iVar2 + 0xc));\n        *(undefined4 *)(iVar2 + 0xc) = 0;\n        *(undefined2 *)(iVar2 + 0x3c) = 7;\n        local_b8 = (void *)0x0;\n        param_1[0xb] = param_1[0xb] | 0x4000;\n        *piVar9 = iVar15;\n        goto LAB_0002563f;\n      }\n      pvVar1 = (void *)((int)pvVar11 + 0xa4);\n      memcpy(pvVar1,pdVar10->d_name,__n);\n      __ptr = (void *)param_1[5];\n      *(undefined1 *)((int)pvVar11 + __n + 0xa4) = 0;\n      *(size_t *)((int)pvVar11 + 0x34) = __n;\n      *(int **)((int)pvVar11 + 0x2c) = param_1;\n      *(void **)((int)pvVar11 + 0x1c) = __ptr;\n      *(undefined4 *)((int)pvVar11 + 0x20) = 0;\n      *(undefined4 *)((int)pvVar11 + 0xc) = 0;\n      *(undefined4 *)((int)pvVar11 + 0x3e) = 0x30000;\n      *(undefined4 *)((int)pvVar11 + 0x10) = 0;\n      *(undefined4 *)((int)pvVar11 + 0x14) = 0;\n      if (local_b0 <= __n) {\n        uVar13 = local_d0 + 0x101 + param_1[8] + __n;\n        if (uVar13 < (uint)param_1[8]) {\n          iVar15 = 0x24;\n          free(__ptr);\n          param_1[5] = 0;\n          *piVar9 = 0x24;\n        }\n        else {\n          param_1[8] = uVar13;\n          pvVar14 = realloc(__ptr,uVar13);\n          if (pvVar14 != (void *)0x0) {\n            param_1[5] = (int)pvVar14;\n            if ((__ptr != pvVar14) && (bVar3 = true, (*(byte *)(param_1 + 0xb) & 4) != 0)) {\n              local_a4 = (undefined1 *)((int)pvVar14 + local_d0);\n            }\n            local_b0 = param_1[8] - local_d0;\n            goto LAB_000253d8;\n          }\n          free((void *)param_1[5]);\n          param_1[5] = 0;\n          iVar15 = *piVar9;\n        }\n        goto LAB_000255a6;\n      }\nLAB_000253d8:\n      if (CARRY4(__n,local_d0)) {\n        free(pvVar11);\n        if (local_b8 != (void *)0x0) {\n          pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n          pvVar11 = *(void **)((int)local_b8 + 8);\n          if (pDVar21 == (DIR *)0x0) goto LAB_00025e84;\n          do {\n            closedir(pDVar21);\n            free(local_b8);\n            local_b8 = pvVar11;\n            while( true ) {\n              if (local_b8 == (void *)0x0) goto LAB_00025e94;\n              pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n              pvVar11 = *(void **)((int)local_b8 + 8);\n              if (pDVar21 != (DIR *)0x0) break;\nLAB_00025e84:\n              free(local_b8);\n              local_b8 = pvVar11;\n            }\n          } while( true );\n        }\nLAB_00025e94:\n        closedir(*(DIR **)(iVar2 + 0xc));\n        *(undefined4 *)(iVar2 + 0xc) = 0;\n        *(undefined2 *)(iVar2 + 0x3c) = 7;\n        local_b8 = (void *)0x0;\n        param_1[0xb] = param_1[0xb] | 0x4000;\n        *piVar9 = 0x24;\n        goto LAB_0002563f;\n      }\n      uVar12 = *(undefined4 *)((int)&pdVar10->d_ino + 4);\n      *(size_t *)((int)pvVar11 + 0x28) = __n + local_d0;\n      *(int *)((int)pvVar11 + 0x30) = iVar15 + 1;\n      *(int *)((int)pvVar11 + 4) = *param_1;\n      _Var5 = pdVar10->d_ino;\n      *(undefined4 *)((int)pvVar11 + 0xa0) = uVar12;\n      *(int *)((int)pvVar11 + 0x9c) = (int)_Var5;\n      uVar13 = param_1[0xb];\n      if ((uVar13 & 4) == 0) {\n        *(void **)((int)pvVar11 + 0x18) = pvVar1;\n      }\n      else {\n        *(undefined4 *)((int)pvVar11 + 0x18) = *(undefined4 *)((int)pvVar11 + 0x1c);\n        memmove(local_a4,pvVar1,*(int *)((int)pvVar11 + 0x34) + 1);\n        uVar13 = param_1[0xb];\n      }\n      if ((param_1[10] == 0) || ((uVar13 & 0x400) != 0)) {\n        uVar23 = pdVar10->d_type - 1;\n        if (((uVar13 & 0x18) == 0x18) && ((pdVar10->d_type & 0xfb) != 0)) {\n          *(undefined2 *)((int)pvVar11 + 0x3c) = 0xb;\n          if (uVar23 < 0xc) {\n            *(undefined4 *)((int)pvVar11 + 0x54) = *(undefined4 *)(&DAT_00031560 + uVar23 * 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 (uVar23 < 0xc) {\n            *(undefined4 *)((int)pvVar11 + 0x54) = *(undefined4 *)(&DAT_00031560 + uVar23 * 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        uVar8 = FUN_00024740();\n        *(undefined2 *)((int)pvVar11 + 0x3c) = uVar8;\n      }\n      *(undefined4 *)((int)pvVar11 + 8) = 0;\n      pvVar1 = pvVar11;\n      if (local_b8 != (void *)0x0) {\n        *(void **)((int)local_c4 + 8) = pvVar11;\n        pvVar1 = local_b8;\n      }\n      local_b8 = pvVar1;\n      local_c4 = pvVar11;\n      if (local_d4 == 10000) {\n        if (param_1[10] == 0) {\n          iVar17 = *(int *)(iVar2 + 0x2c);\n          if ((*(byte *)(iVar17 + 0x2d) & 2) != 0) {\n            iVar18 = *(int *)(iVar17 + 0x30);\n            if (iVar18 == 0) {\n              iVar18 = FUN_0001df90(0xd,0,FUN_000246b0,FUN_000246e0,puVar6);\n              *(int *)(iVar17 + 0x30) = iVar18;\n              if (iVar18 != 0) goto LAB_00025920;\nLAB_000259b0:\n              if ((local_9c < 0) ||\n                 (iVar19 = fstatfs64(local_9c,&local_74), iVar17 = local_74.f_type, iVar19 != 0))\n              goto LAB_00025a48;\n              local_d4 = local_74.f_type;\n              if ((iVar18 != 0) &&\n                 (__ptr_00 = (undefined4 *)malloc(0xc), __ptr_00 != (undefined4 *)0x0)) {\n                uVar12 = *(undefined4 *)(iVar2 + 0x44);\n                __ptr_00[1] = *(undefined4 *)(iVar2 + 0x48);\n                *__ptr_00 = uVar12;\n                __ptr_00[2] = iVar17;\n                puVar20 = (undefined4 *)FUN_0001e8d0(iVar18,__ptr_00);\n                if (puVar20 == (undefined4 *)0x0) {\n                  free(__ptr_00);\n                  local_d4 = local_74.f_type;\n                }\n                else {\n                  if (__ptr_00 != puVar20) {\n                    \n                    abort();\n                  }\n                  local_d4 = local_74.f_type;\n                }\n              }\n            }\n            else {\nLAB_00025920:\n              local_7c = *(undefined4 *)(iVar2 + 0x48);\n              local_80 = *(undefined4 *)(iVar2 + 0x44);\n              iVar17 = FUN_0001dce0(iVar18,&local_80);\n              if (iVar17 == 0) goto LAB_000259b0;\n              local_d4 = *(int *)(iVar17 + 8);\n            }\n            if (((local_d4 == 0x6969) || (local_d4 == 0x1021994)) || (local_d4 == -0xacb2be)) {\n              bVar4 = false;\n              goto LAB_00025473;\n            }\n          }\nLAB_00025a48:\n          bVar4 = true;\n        }\nLAB_00025473:\n        local_d4 = 0x2711;\n        goto LAB_000252fb;\n      }\n      local_d4 = local_d4 + 1;\n    } while (local_d4 < local_a8);\nLAB_000256de:\n    if (bVar3) {\n      iVar15 = param_1[5];\n      for (iVar17 = param_1[1]; iVar17 != 0; iVar17 = *(int *)(iVar17 + 8)) {\n        while (*(int *)(iVar17 + 0x18) != iVar17 + 0xa4) {\n          iVar18 = *(int *)(iVar17 + 0x1c);\n          *(int *)(iVar17 + 0x1c) = iVar15;\n          *(int *)(iVar17 + 0x18) = (*(int *)(iVar17 + 0x18) - iVar18) + iVar15;\n          iVar17 = *(int *)(iVar17 + 8);\n          if (iVar17 == 0) goto LAB_00025aef;\n        }\n        *(int *)(iVar17 + 0x1c) = iVar15;\n      }\nLAB_00025aef:\n      iVar17 = *(int *)((int)local_b8 + 0x30);\n      pvVar11 = local_b8;\n      while (-1 < iVar17) {\n        while( true ) {\n          if (*(int *)((int)pvVar11 + 0x18) != (int)pvVar11 + 0xa4) {\n            *(int *)((int)pvVar11 + 0x18) =\n                 (*(int *)((int)pvVar11 + 0x18) - *(int *)((int)pvVar11 + 0x1c)) + iVar15;\n          }\n          pvVar1 = *(void **)((int)pvVar11 + 8);\n          *(int *)((int)pvVar11 + 0x1c) = iVar15;\n          if (pvVar1 == (void *)0x0) break;\n          pvVar11 = pvVar1;\n          if (*(int *)((int)pvVar1 + 0x30) < 0) goto LAB_000256e9;\n        }\n        pvVar11 = *(void **)((int)pvVar11 + 4);\n        iVar17 = *(int *)((int)pvVar11 + 0x30);\n      }\n    }\nLAB_000256e9:\n    if ((*(byte *)(param_1 + 0xb) & 4) != 0) {\n      if ((param_1[8] == local_d0) || (local_d4 == 0)) {\n        local_a4 = local_a4 + -1;\n      }\n      *local_a4 = 0;\n    }\n    if ((pDVar21 == (DIR *)0x0) && (bVar25)) {\n      if ((param_2 == 1) || (local_d4 == 0)) {\n        if (*(int *)(iVar2 + 0x30) == 0) {\n          iVar15 = FUN_00024bb0();\n        }\n        else {\n          iVar15 = FUN_00024e60(&DAT_0002e141);\n        }\n        if (iVar15 != 0) {\n          *(undefined2 *)(iVar2 + 0x3c) = 7;\n          param_1[0xb] = param_1[0xb] | 0x4000;\n          while (pvVar11 = local_b8, local_b8 != (void *)0x0) {\n            while( true ) {\n              local_b8 = *(void **)((int)pvVar11 + 8);\n              if (*(DIR **)((int)pvVar11 + 0xc) == (DIR *)0x0) break;\n              closedir(*(DIR **)((int)pvVar11 + 0xc));\n              free(pvVar11);\n              pvVar11 = local_b8;\n              if (local_b8 == (void *)0x0) goto LAB_00025c40;\n            }\n            free(pvVar11);\n          }\n          goto LAB_00025c40;\n        }\n        goto LAB_0002574d;\n      }\n    }\n    else {\nLAB_0002574d:\n      if (local_d4 == 0) {\n        if (((param_2 == 3) && (*(short *)(iVar2 + 0x3c) != 4)) && (*(short *)(iVar2 + 0x3c) != 7))\n        {\n          *(undefined2 *)(iVar2 + 0x3c) = 6;\n        }\n        if (local_b8 != (void *)0x0) {\n          pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n          pvVar11 = *(void **)((int)local_b8 + 8);\n          if (pDVar21 == (DIR *)0x0) goto LAB_00025c94;\n          do {\n            closedir(pDVar21);\n            free(local_b8);\n            local_b8 = pvVar11;\n            while( true ) {\n              if (local_b8 == (void *)0x0) goto LAB_00025c40;\n              pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n              pvVar11 = *(void **)((int)local_b8 + 8);\n              if (pDVar21 != (DIR *)0x0) break;\nLAB_00025c94:\n              free(local_b8);\n              local_b8 = pvVar11;\n            }\n          } while( true );\n        }\n        goto LAB_00025c40;\n      }\n    }\n    if (bVar4) {\n      param_1[10] = (int)FUN_00024700;\n      local_b8 = (void *)FUN_000248e0();\n      param_1[10] = 0;\n    }\n    else if ((param_1[10] != 0) && (local_d4 != 1)) {\n      local_b8 = (void *)FUN_000248e0();\n    }\n  }" (if "if") (parenthesized_expression "(pDVar21 == (DIR *)0x0)" (( "(") (binary_expression "pDVar21 == (DIR *)0x0" (identifier "pDVar21") (== "==") (cast_expression "(DIR *)0x0" (( "(") (type_descriptor "DIR *" (type_identifier "DIR") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    uVar13 = param_1[0xb];\n    uVar23 = uVar13 & 0x10;\n    if (((uVar23 != 0) && (uVar23 = 0x20000, (uVar13 & 1) != 0)) &&\n       (uVar23 = *(uint *)(iVar2 + 0x30), uVar23 != 0)) {\n      uVar23 = 0x20000;\n    }\n    iVar15 = -100;\n    if ((uVar13 & 0x204) == 0x200) {\n      iVar15 = param_1[7];\n    }\n    local_9c = FUN_00029520(iVar15,*(undefined4 *)(iVar2 + 0x18),\n                            (uVar13 & 0x800) << 7 | uVar23 | 0x90900);\n    if (local_9c < 0) {\n      *(undefined4 *)(iVar2 + 0xc) = 0;\n    }\n    else {\n      pDVar16 = fdopendir(local_9c);\n      if (pDVar16 != (DIR *)0x0) {\n        *(DIR **)(iVar2 + 0xc) = pDVar16;\n        if (*(short *)(iVar2 + 0x3c) == 0xb) {\n          uVar8 = FUN_00024740();\n          *(undefined2 *)(iVar2 + 0x3c) = uVar8;\n        }\n        else if ((param_1[0xb] & 0x100U) != 0) {\n          FUN_00024aa0();\n          FUN_00024740();\n          cVar7 = FUN_000249d0();\n          if (cVar7 == '\0') {\n            piVar9 = __errno_location();\n            local_b8 = (void *)0x0;\n            *piVar9 = 0xc;\n            goto LAB_0002563f;\n          }\n        }\n        local_a8 = (-(uint)(param_1[10] == 0) & 0x186a1) - 1;\n        if (param_2 == 2) {\nLAB_00025bc8:\n          bVar25 = false;\n          uVar13 = param_1[0xb];\n          goto LAB_00025223;\n        }\n        if ((((param_1[0xb] & 0x38U) == 0x18) && (*(int *)(iVar2 + 0x58) == 2)) &&\n           (iVar15 = FUN_00024ca0(), iVar15 != 0)) {\n          if (param_2 != 3) goto LAB_00025bc8;\n          bVar25 = false;\n        }\n        else {\n          bVar25 = param_2 == 3;\n        }\n        if (((*(byte *)((int)param_1 + 0x2d) & 2) == 0) ||\n           (local_9c = FUN_000243f0(local_9c,0x406,3), -1 < local_9c)) {\n          iVar15 = FUN_00024e60(0);\n          if (iVar15 == 0) goto LAB_0002521b;\n          pDVar16 = *(DIR **)(iVar2 + 0xc);\n          uVar24 = *(ushort *)(iVar2 + 0x3e) | 1;\n          if (bVar25) goto LAB_000258a0;\nLAB_000258ae:\n          *(ushort *)(iVar2 + 0x3e) = uVar24;\n          closedir(pDVar16);\n          *(undefined4 *)(iVar2 + 0xc) = 0;\n          uVar13 = param_1[0xb];\n          if (((uVar13 & 0x200) != 0) && (-1 < local_9c)) {\n            close(local_9c);\n            uVar13 = param_1[0xb];\n          }\n        }\n        else {\n          pDVar16 = *(DIR **)(iVar2 + 0xc);\n          uVar24 = *(ushort *)(iVar2 + 0x3e) | 1;\n          if (bVar25) {\nLAB_000258a0:\n            piVar9 = __errno_location();\n            *(int *)(iVar2 + 0x20) = *piVar9;\n            goto LAB_000258ae;\n          }\n          *(ushort *)(iVar2 + 0x3e) = uVar24;\n          closedir(pDVar16);\n          uVar13 = param_1[0xb];\n        }\n        bVar25 = false;\n        *(undefined4 *)(iVar2 + 0xc) = 0;\n        goto LAB_00025223;\n      }\n      piVar9 = __errno_location();\n      iVar15 = *piVar9;\n      close(local_9c);\n      *piVar9 = iVar15;\n      *(undefined4 *)(iVar2 + 0xc) = 0;\n    }\njoined_r0x00025c30:\n    if (param_2 == 3) {\n      *(undefined2 *)(iVar2 + 0x3c) = 4;\n      piVar9 = __errno_location();\n      *(int *)(iVar2 + 0x20) = *piVar9;\n    }\nLAB_00025c40:\n    local_b8 = (void *)0x0;\n  }" ({ "{") (expression_statement "uVar13 = param_1[0xb];" (assignment_expression "uVar13 = param_1[0xb]" (identifier "uVar13") (= "=") (subscript_expression "param_1[0xb]" (identifier "param_1") ([ "[") (number_literal "0xb") (] "]"))) (; ";")) (expression_statement "uVar23 = uVar13 & 0x10;" (assignment_expression "uVar23 = uVar13 & 0x10" (identifier "uVar23") (= "=") (binary_expression "uVar13 & 0x10" (identifier "uVar13") (& "&") (number_literal "0x10"))) (; ";")) (if_statement "if (((uVar23 != 0) && (uVar23 = 0x20000, (uVar13 & 1) != 0)) &&\n       (uVar23 = *(uint *)(iVar2 + 0x30), uVar23 != 0)) {\n      uVar23 = 0x20000;\n    }" (if "if") (parenthesized_expression "(((uVar23 != 0) && (uVar23 = 0x20000, (uVar13 & 1) != 0)) &&\n       (uVar23 = *(uint *)(iVar2 + 0x30), uVar23 != 0))" (( "(") (binary_expression "((uVar23 != 0) && (uVar23 = 0x20000, (uVar13 & 1) != 0)) &&\n       (uVar23 = *(uint *)(iVar2 + 0x30), uVar23 != 0)" (parenthesized_expression "((uVar23 != 0) && (uVar23 = 0x20000, (uVar13 & 1) != 0))" (( "(") (binary_expression "(uVar23 != 0) && (uVar23 = 0x20000, (uVar13 & 1) != 0)" (parenthesized_expression "(uVar23 != 0)" (( "(") (binary_expression "uVar23 != 0" (identifier "uVar23") (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(uVar23 = 0x20000, (uVar13 & 1) != 0)" (( "(") (comma_expression "uVar23 = 0x20000, (uVar13 & 1) != 0" (assignment_expression "uVar23 = 0x20000" (identifier "uVar23") (= "=") (number_literal "0x20000")) (, ",") (binary_expression "(uVar13 & 1) != 0" (parenthesized_expression "(uVar13 & 1)" (( "(") (binary_expression "uVar13 & 1" (identifier "uVar13") (& "&") (number_literal "1")) () ")")) (!= "!=") (number_literal "0"))) () ")"))) () ")")) (&& "&&") (parenthesized_expression "(uVar23 = *(uint *)(iVar2 + 0x30), uVar23 != 0)" (( "(") (comma_expression "uVar23 = *(uint *)(iVar2 + 0x30), uVar23 != 0" (assignment_expression "uVar23 = *(uint *)(iVar2 + 0x30)" (identifier "uVar23") (= "=") (pointer_expression "*(uint *)(iVar2 + 0x30)" (* "*") (cast_expression "(uint *)(iVar2 + 0x30)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0x30)" (( "(") (binary_expression "iVar2 + 0x30" (identifier "iVar2") (+ "+") (number_literal "0x30")) () ")"))))) (, ",") (binary_expression "uVar23 != 0" (identifier "uVar23") (!= "!=") (number_literal "0"))) () ")"))) () ")")) (compound_statement "{\n      uVar23 = 0x20000;\n    }" ({ "{") (expression_statement "uVar23 = 0x20000;" (assignment_expression "uVar23 = 0x20000" (identifier "uVar23") (= "=") (number_literal "0x20000")) (; ";")) (} "}"))) (expression_statement "iVar15 = -100;" (assignment_expression "iVar15 = -100" (identifier "iVar15") (= "=") (number_literal "-100")) (; ";")) (if_statement "if ((uVar13 & 0x204) == 0x200) {\n      iVar15 = param_1[7];\n    }" (if "if") (parenthesized_expression "((uVar13 & 0x204) == 0x200)" (( "(") (binary_expression "(uVar13 & 0x204) == 0x200" (parenthesized_expression "(uVar13 & 0x204)" (( "(") (binary_expression "uVar13 & 0x204" (identifier "uVar13") (& "&") (number_literal "0x204")) () ")")) (== "==") (number_literal "0x200")) () ")")) (compound_statement "{\n      iVar15 = param_1[7];\n    }" ({ "{") (expression_statement "iVar15 = param_1[7];" (assignment_expression "iVar15 = param_1[7]" (identifier "iVar15") (= "=") (subscript_expression "param_1[7]" (identifier "param_1") ([ "[") (number_literal "7") (] "]"))) (; ";")) (} "}"))) (expression_statement "local_9c = FUN_00029520(iVar15,*(undefined4 *)(iVar2 + 0x18),\n                            (uVar13 & 0x800) << 7 | uVar23 | 0x90900);" (assignment_expression "local_9c = FUN_00029520(iVar15,*(undefined4 *)(iVar2 + 0x18),\n                            (uVar13 & 0x800) << 7 | uVar23 | 0x90900)" (identifier "local_9c") (= "=") (call_expression "FUN_00029520(iVar15,*(undefined4 *)(iVar2 + 0x18),\n                            (uVar13 & 0x800) << 7 | uVar23 | 0x90900)" (identifier "FUN_00029520") (argument_list "(iVar15,*(undefined4 *)(iVar2 + 0x18),\n                            (uVar13 & 0x800) << 7 | uVar23 | 0x90900)" (( "(") (identifier "iVar15") (, ",") (pointer_expression "*(undefined4 *)(iVar2 + 0x18)" (* "*") (cast_expression "(undefined4 *)(iVar2 + 0x18)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0x18)" (( "(") (binary_expression "iVar2 + 0x18" (identifier "iVar2") (+ "+") (number_literal "0x18")) () ")")))) (, ",") (binary_expression "(uVar13 & 0x800) << 7 | uVar23 | 0x90900" (binary_expression "(uVar13 & 0x800) << 7 | uVar23" (binary_expression "(uVar13 & 0x800) << 7" (parenthesized_expression "(uVar13 & 0x800)" (( "(") (binary_expression "uVar13 & 0x800" (identifier "uVar13") (& "&") (number_literal "0x800")) () ")")) (<< "<<") (number_literal "7")) (| "|") (identifier "uVar23")) (| "|") (number_literal "0x90900")) () ")")))) (; ";")) (if_statement "if (local_9c < 0) {\n      *(undefined4 *)(iVar2 + 0xc) = 0;\n    }\n    else {\n      pDVar16 = fdopendir(local_9c);\n      if (pDVar16 != (DIR *)0x0) {\n        *(DIR **)(iVar2 + 0xc) = pDVar16;\n        if (*(short *)(iVar2 + 0x3c) == 0xb) {\n          uVar8 = FUN_00024740();\n          *(undefined2 *)(iVar2 + 0x3c) = uVar8;\n        }\n        else if ((param_1[0xb] & 0x100U) != 0) {\n          FUN_00024aa0();\n          FUN_00024740();\n          cVar7 = FUN_000249d0();\n          if (cVar7 == '\0') {\n            piVar9 = __errno_location();\n            local_b8 = (void *)0x0;\n            *piVar9 = 0xc;\n            goto LAB_0002563f;\n          }\n        }\n        local_a8 = (-(uint)(param_1[10] == 0) & 0x186a1) - 1;\n        if (param_2 == 2) {\nLAB_00025bc8:\n          bVar25 = false;\n          uVar13 = param_1[0xb];\n          goto LAB_00025223;\n        }\n        if ((((param_1[0xb] & 0x38U) == 0x18) && (*(int *)(iVar2 + 0x58) == 2)) &&\n           (iVar15 = FUN_00024ca0(), iVar15 != 0)) {\n          if (param_2 != 3) goto LAB_00025bc8;\n          bVar25 = false;\n        }\n        else {\n          bVar25 = param_2 == 3;\n        }\n        if (((*(byte *)((int)param_1 + 0x2d) & 2) == 0) ||\n           (local_9c = FUN_000243f0(local_9c,0x406,3), -1 < local_9c)) {\n          iVar15 = FUN_00024e60(0);\n          if (iVar15 == 0) goto LAB_0002521b;\n          pDVar16 = *(DIR **)(iVar2 + 0xc);\n          uVar24 = *(ushort *)(iVar2 + 0x3e) | 1;\n          if (bVar25) goto LAB_000258a0;\nLAB_000258ae:\n          *(ushort *)(iVar2 + 0x3e) = uVar24;\n          closedir(pDVar16);\n          *(undefined4 *)(iVar2 + 0xc) = 0;\n          uVar13 = param_1[0xb];\n          if (((uVar13 & 0x200) != 0) && (-1 < local_9c)) {\n            close(local_9c);\n            uVar13 = param_1[0xb];\n          }\n        }\n        else {\n          pDVar16 = *(DIR **)(iVar2 + 0xc);\n          uVar24 = *(ushort *)(iVar2 + 0x3e) | 1;\n          if (bVar25) {\nLAB_000258a0:\n            piVar9 = __errno_location();\n            *(int *)(iVar2 + 0x20) = *piVar9;\n            goto LAB_000258ae;\n          }\n          *(ushort *)(iVar2 + 0x3e) = uVar24;\n          closedir(pDVar16);\n          uVar13 = param_1[0xb];\n        }\n        bVar25 = false;\n        *(undefined4 *)(iVar2 + 0xc) = 0;\n        goto LAB_00025223;\n      }\n      piVar9 = __errno_location();\n      iVar15 = *piVar9;\n      close(local_9c);\n      *piVar9 = iVar15;\n      *(undefined4 *)(iVar2 + 0xc) = 0;\n    }" (if "if") (parenthesized_expression "(local_9c < 0)" (( "(") (binary_expression "local_9c < 0" (identifier "local_9c") (< "<") (number_literal "0")) () ")")) (compound_statement "{\n      *(undefined4 *)(iVar2 + 0xc) = 0;\n    }" ({ "{") (expression_statement "*(undefined4 *)(iVar2 + 0xc) = 0;" (assignment_expression "*(undefined4 *)(iVar2 + 0xc) = 0" (pointer_expression "*(undefined4 *)(iVar2 + 0xc)" (* "*") (cast_expression "(undefined4 *)(iVar2 + 0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0xc)" (( "(") (binary_expression "iVar2 + 0xc" (identifier "iVar2") (+ "+") (number_literal "0xc")) () ")")))) (= "=") (number_literal "0")) (; ";")) (} "}")) (else_clause "else {\n      pDVar16 = fdopendir(local_9c);\n      if (pDVar16 != (DIR *)0x0) {\n        *(DIR **)(iVar2 + 0xc) = pDVar16;\n        if (*(short *)(iVar2 + 0x3c) == 0xb) {\n          uVar8 = FUN_00024740();\n          *(undefined2 *)(iVar2 + 0x3c) = uVar8;\n        }\n        else if ((param_1[0xb] & 0x100U) != 0) {\n          FUN_00024aa0();\n          FUN_00024740();\n          cVar7 = FUN_000249d0();\n          if (cVar7 == '\0') {\n            piVar9 = __errno_location();\n            local_b8 = (void *)0x0;\n            *piVar9 = 0xc;\n            goto LAB_0002563f;\n          }\n        }\n        local_a8 = (-(uint)(param_1[10] == 0) & 0x186a1) - 1;\n        if (param_2 == 2) {\nLAB_00025bc8:\n          bVar25 = false;\n          uVar13 = param_1[0xb];\n          goto LAB_00025223;\n        }\n        if ((((param_1[0xb] & 0x38U) == 0x18) && (*(int *)(iVar2 + 0x58) == 2)) &&\n           (iVar15 = FUN_00024ca0(), iVar15 != 0)) {\n          if (param_2 != 3) goto LAB_00025bc8;\n          bVar25 = false;\n        }\n        else {\n          bVar25 = param_2 == 3;\n        }\n        if (((*(byte *)((int)param_1 + 0x2d) & 2) == 0) ||\n           (local_9c = FUN_000243f0(local_9c,0x406,3), -1 < local_9c)) {\n          iVar15 = FUN_00024e60(0);\n          if (iVar15 == 0) goto LAB_0002521b;\n          pDVar16 = *(DIR **)(iVar2 + 0xc);\n          uVar24 = *(ushort *)(iVar2 + 0x3e) | 1;\n          if (bVar25) goto LAB_000258a0;\nLAB_000258ae:\n          *(ushort *)(iVar2 + 0x3e) = uVar24;\n          closedir(pDVar16);\n          *(undefined4 *)(iVar2 + 0xc) = 0;\n          uVar13 = param_1[0xb];\n          if (((uVar13 & 0x200) != 0) && (-1 < local_9c)) {\n            close(local_9c);\n            uVar13 = param_1[0xb];\n          }\n        }\n        else {\n          pDVar16 = *(DIR **)(iVar2 + 0xc);\n          uVar24 = *(ushort *)(iVar2 + 0x3e) | 1;\n          if (bVar25) {\nLAB_000258a0:\n            piVar9 = __errno_location();\n            *(int *)(iVar2 + 0x20) = *piVar9;\n            goto LAB_000258ae;\n          }\n          *(ushort *)(iVar2 + 0x3e) = uVar24;\n          closedir(pDVar16);\n          uVar13 = param_1[0xb];\n        }\n        bVar25 = false;\n        *(undefined4 *)(iVar2 + 0xc) = 0;\n        goto LAB_00025223;\n      }\n      piVar9 = __errno_location();\n      iVar15 = *piVar9;\n      close(local_9c);\n      *piVar9 = iVar15;\n      *(undefined4 *)(iVar2 + 0xc) = 0;\n    }" (else "else") (compound_statement "{\n      pDVar16 = fdopendir(local_9c);\n      if (pDVar16 != (DIR *)0x0) {\n        *(DIR **)(iVar2 + 0xc) = pDVar16;\n        if (*(short *)(iVar2 + 0x3c) == 0xb) {\n          uVar8 = FUN_00024740();\n          *(undefined2 *)(iVar2 + 0x3c) = uVar8;\n        }\n        else if ((param_1[0xb] & 0x100U) != 0) {\n          FUN_00024aa0();\n          FUN_00024740();\n          cVar7 = FUN_000249d0();\n          if (cVar7 == '\0') {\n            piVar9 = __errno_location();\n            local_b8 = (void *)0x0;\n            *piVar9 = 0xc;\n            goto LAB_0002563f;\n          }\n        }\n        local_a8 = (-(uint)(param_1[10] == 0) & 0x186a1) - 1;\n        if (param_2 == 2) {\nLAB_00025bc8:\n          bVar25 = false;\n          uVar13 = param_1[0xb];\n          goto LAB_00025223;\n        }\n        if ((((param_1[0xb] & 0x38U) == 0x18) && (*(int *)(iVar2 + 0x58) == 2)) &&\n           (iVar15 = FUN_00024ca0(), iVar15 != 0)) {\n          if (param_2 != 3) goto LAB_00025bc8;\n          bVar25 = false;\n        }\n        else {\n          bVar25 = param_2 == 3;\n        }\n        if (((*(byte *)((int)param_1 + 0x2d) & 2) == 0) ||\n           (local_9c = FUN_000243f0(local_9c,0x406,3), -1 < local_9c)) {\n          iVar15 = FUN_00024e60(0);\n          if (iVar15 == 0) goto LAB_0002521b;\n          pDVar16 = *(DIR **)(iVar2 + 0xc);\n          uVar24 = *(ushort *)(iVar2 + 0x3e) | 1;\n          if (bVar25) goto LAB_000258a0;\nLAB_000258ae:\n          *(ushort *)(iVar2 + 0x3e) = uVar24;\n          closedir(pDVar16);\n          *(undefined4 *)(iVar2 + 0xc) = 0;\n          uVar13 = param_1[0xb];\n          if (((uVar13 & 0x200) != 0) && (-1 < local_9c)) {\n            close(local_9c);\n            uVar13 = param_1[0xb];\n          }\n        }\n        else {\n          pDVar16 = *(DIR **)(iVar2 + 0xc);\n          uVar24 = *(ushort *)(iVar2 + 0x3e) | 1;\n          if (bVar25) {\nLAB_000258a0:\n            piVar9 = __errno_location();\n            *(int *)(iVar2 + 0x20) = *piVar9;\n            goto LAB_000258ae;\n          }\n          *(ushort *)(iVar2 + 0x3e) = uVar24;\n          closedir(pDVar16);\n          uVar13 = param_1[0xb];\n        }\n        bVar25 = false;\n        *(undefined4 *)(iVar2 + 0xc) = 0;\n        goto LAB_00025223;\n      }\n      piVar9 = __errno_location();\n      iVar15 = *piVar9;\n      close(local_9c);\n      *piVar9 = iVar15;\n      *(undefined4 *)(iVar2 + 0xc) = 0;\n    }" ({ "{") (expression_statement "pDVar16 = fdopendir(local_9c);" (assignment_expression "pDVar16 = fdopendir(local_9c)" (identifier "pDVar16") (= "=") (call_expression "fdopendir(local_9c)" (identifier "fdopendir") (argument_list "(local_9c)" (( "(") (identifier "local_9c") () ")")))) (; ";")) (if_statement "if (pDVar16 != (DIR *)0x0) {\n        *(DIR **)(iVar2 + 0xc) = pDVar16;\n        if (*(short *)(iVar2 + 0x3c) == 0xb) {\n          uVar8 = FUN_00024740();\n          *(undefined2 *)(iVar2 + 0x3c) = uVar8;\n        }\n        else if ((param_1[0xb] & 0x100U) != 0) {\n          FUN_00024aa0();\n          FUN_00024740();\n          cVar7 = FUN_000249d0();\n          if (cVar7 == '\0') {\n            piVar9 = __errno_location();\n            local_b8 = (void *)0x0;\n            *piVar9 = 0xc;\n            goto LAB_0002563f;\n          }\n        }\n        local_a8 = (-(uint)(param_1[10] == 0) & 0x186a1) - 1;\n        if (param_2 == 2) {\nLAB_00025bc8:\n          bVar25 = false;\n          uVar13 = param_1[0xb];\n          goto LAB_00025223;\n        }\n        if ((((param_1[0xb] & 0x38U) == 0x18) && (*(int *)(iVar2 + 0x58) == 2)) &&\n           (iVar15 = FUN_00024ca0(), iVar15 != 0)) {\n          if (param_2 != 3) goto LAB_00025bc8;\n          bVar25 = false;\n        }\n        else {\n          bVar25 = param_2 == 3;\n        }\n        if (((*(byte *)((int)param_1 + 0x2d) & 2) == 0) ||\n           (local_9c = FUN_000243f0(local_9c,0x406,3), -1 < local_9c)) {\n          iVar15 = FUN_00024e60(0);\n          if (iVar15 == 0) goto LAB_0002521b;\n          pDVar16 = *(DIR **)(iVar2 + 0xc);\n          uVar24 = *(ushort *)(iVar2 + 0x3e) | 1;\n          if (bVar25) goto LAB_000258a0;\nLAB_000258ae:\n          *(ushort *)(iVar2 + 0x3e) = uVar24;\n          closedir(pDVar16);\n          *(undefined4 *)(iVar2 + 0xc) = 0;\n          uVar13 = param_1[0xb];\n          if (((uVar13 & 0x200) != 0) && (-1 < local_9c)) {\n            close(local_9c);\n            uVar13 = param_1[0xb];\n          }\n        }\n        else {\n          pDVar16 = *(DIR **)(iVar2 + 0xc);\n          uVar24 = *(ushort *)(iVar2 + 0x3e) | 1;\n          if (bVar25) {\nLAB_000258a0:\n            piVar9 = __errno_location();\n            *(int *)(iVar2 + 0x20) = *piVar9;\n            goto LAB_000258ae;\n          }\n          *(ushort *)(iVar2 + 0x3e) = uVar24;\n          closedir(pDVar16);\n          uVar13 = param_1[0xb];\n        }\n        bVar25 = false;\n        *(undefined4 *)(iVar2 + 0xc) = 0;\n        goto LAB_00025223;\n      }" (if "if") (parenthesized_expression "(pDVar16 != (DIR *)0x0)" (( "(") (binary_expression "pDVar16 != (DIR *)0x0" (identifier "pDVar16") (!= "!=") (cast_expression "(DIR *)0x0" (( "(") (type_descriptor "DIR *" (type_identifier "DIR") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n        *(DIR **)(iVar2 + 0xc) = pDVar16;\n        if (*(short *)(iVar2 + 0x3c) == 0xb) {\n          uVar8 = FUN_00024740();\n          *(undefined2 *)(iVar2 + 0x3c) = uVar8;\n        }\n        else if ((param_1[0xb] & 0x100U) != 0) {\n          FUN_00024aa0();\n          FUN_00024740();\n          cVar7 = FUN_000249d0();\n          if (cVar7 == '\0') {\n            piVar9 = __errno_location();\n            local_b8 = (void *)0x0;\n            *piVar9 = 0xc;\n            goto LAB_0002563f;\n          }\n        }\n        local_a8 = (-(uint)(param_1[10] == 0) & 0x186a1) - 1;\n        if (param_2 == 2) {\nLAB_00025bc8:\n          bVar25 = false;\n          uVar13 = param_1[0xb];\n          goto LAB_00025223;\n        }\n        if ((((param_1[0xb] & 0x38U) == 0x18) && (*(int *)(iVar2 + 0x58) == 2)) &&\n           (iVar15 = FUN_00024ca0(), iVar15 != 0)) {\n          if (param_2 != 3) goto LAB_00025bc8;\n          bVar25 = false;\n        }\n        else {\n          bVar25 = param_2 == 3;\n        }\n        if (((*(byte *)((int)param_1 + 0x2d) & 2) == 0) ||\n           (local_9c = FUN_000243f0(local_9c,0x406,3), -1 < local_9c)) {\n          iVar15 = FUN_00024e60(0);\n          if (iVar15 == 0) goto LAB_0002521b;\n          pDVar16 = *(DIR **)(iVar2 + 0xc);\n          uVar24 = *(ushort *)(iVar2 + 0x3e) | 1;\n          if (bVar25) goto LAB_000258a0;\nLAB_000258ae:\n          *(ushort *)(iVar2 + 0x3e) = uVar24;\n          closedir(pDVar16);\n          *(undefined4 *)(iVar2 + 0xc) = 0;\n          uVar13 = param_1[0xb];\n          if (((uVar13 & 0x200) != 0) && (-1 < local_9c)) {\n            close(local_9c);\n            uVar13 = param_1[0xb];\n          }\n        }\n        else {\n          pDVar16 = *(DIR **)(iVar2 + 0xc);\n          uVar24 = *(ushort *)(iVar2 + 0x3e) | 1;\n          if (bVar25) {\nLAB_000258a0:\n            piVar9 = __errno_location();\n            *(int *)(iVar2 + 0x20) = *piVar9;\n            goto LAB_000258ae;\n          }\n          *(ushort *)(iVar2 + 0x3e) = uVar24;\n          closedir(pDVar16);\n          uVar13 = param_1[0xb];\n        }\n        bVar25 = false;\n        *(undefined4 *)(iVar2 + 0xc) = 0;\n        goto LAB_00025223;\n      }" ({ "{") (expression_statement "*(DIR **)(iVar2 + 0xc) = pDVar16;" (assignment_expression "*(DIR **)(iVar2 + 0xc) = pDVar16" (pointer_expression "*(DIR **)(iVar2 + 0xc)" (* "*") (cast_expression "(DIR **)(iVar2 + 0xc)" (( "(") (type_descriptor "DIR **" (type_identifier "DIR") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar2 + 0xc)" (( "(") (binary_expression "iVar2 + 0xc" (identifier "iVar2") (+ "+") (number_literal "0xc")) () ")")))) (= "=") (identifier "pDVar16")) (; ";")) (if_statement "if (*(short *)(iVar2 + 0x3c) == 0xb) {\n          uVar8 = FUN_00024740();\n          *(undefined2 *)(iVar2 + 0x3c) = uVar8;\n        }\n        else if ((param_1[0xb] & 0x100U) != 0) {\n          FUN_00024aa0();\n          FUN_00024740();\n          cVar7 = FUN_000249d0();\n          if (cVar7 == '\0') {\n            piVar9 = __errno_location();\n            local_b8 = (void *)0x0;\n            *piVar9 = 0xc;\n            goto LAB_0002563f;\n          }\n        }" (if "if") (parenthesized_expression "(*(short *)(iVar2 + 0x3c) == 0xb)" (( "(") (binary_expression "*(short *)(iVar2 + 0x3c) == 0xb" (pointer_expression "*(short *)(iVar2 + 0x3c)" (* "*") (cast_expression "(short *)(iVar2 + 0x3c)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0x3c)" (( "(") (binary_expression "iVar2 + 0x3c" (identifier "iVar2") (+ "+") (number_literal "0x3c")) () ")")))) (== "==") (number_literal "0xb")) () ")")) (compound_statement "{\n          uVar8 = FUN_00024740();\n          *(undefined2 *)(iVar2 + 0x3c) = uVar8;\n        }" ({ "{") (expression_statement "uVar8 = FUN_00024740();" (assignment_expression "uVar8 = FUN_00024740()" (identifier "uVar8") (= "=") (call_expression "FUN_00024740()" (identifier "FUN_00024740") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "*(undefined2 *)(iVar2 + 0x3c) = uVar8;" (assignment_expression "*(undefined2 *)(iVar2 + 0x3c) = uVar8" (pointer_expression "*(undefined2 *)(iVar2 + 0x3c)" (* "*") (cast_expression "(undefined2 *)(iVar2 + 0x3c)" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0x3c)" (( "(") (binary_expression "iVar2 + 0x3c" (identifier "iVar2") (+ "+") (number_literal "0x3c")) () ")")))) (= "=") (identifier "uVar8")) (; ";")) (} "}")) (else_clause "else if ((param_1[0xb] & 0x100U) != 0) {\n          FUN_00024aa0();\n          FUN_00024740();\n          cVar7 = FUN_000249d0();\n          if (cVar7 == '\0') {\n            piVar9 = __errno_location();\n            local_b8 = (void *)0x0;\n            *piVar9 = 0xc;\n            goto LAB_0002563f;\n          }\n        }" (else "else") (if_statement "if ((param_1[0xb] & 0x100U) != 0) {\n          FUN_00024aa0();\n          FUN_00024740();\n          cVar7 = FUN_000249d0();\n          if (cVar7 == '\0') {\n            piVar9 = __errno_location();\n            local_b8 = (void *)0x0;\n            *piVar9 = 0xc;\n            goto LAB_0002563f;\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_00024aa0();\n          FUN_00024740();\n          cVar7 = FUN_000249d0();\n          if (cVar7 == '\0') {\n            piVar9 = __errno_location();\n            local_b8 = (void *)0x0;\n            *piVar9 = 0xc;\n            goto LAB_0002563f;\n          }\n        }" ({ "{") (expression_statement "FUN_00024aa0();" (call_expression "FUN_00024aa0()" (identifier "FUN_00024aa0") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "FUN_00024740();" (call_expression "FUN_00024740()" (identifier "FUN_00024740") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "cVar7 = FUN_000249d0();" (assignment_expression "cVar7 = FUN_000249d0()" (identifier "cVar7") (= "=") (call_expression "FUN_000249d0()" (identifier "FUN_000249d0") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if (cVar7 == '\0') {\n            piVar9 = __errno_location();\n            local_b8 = (void *)0x0;\n            *piVar9 = 0xc;\n            goto LAB_0002563f;\n          }" (if "if") (parenthesized_expression "(cVar7 == '\0')" (( "(") (binary_expression "cVar7 == '\0'" (identifier "cVar7") (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n            piVar9 = __errno_location();\n            local_b8 = (void *)0x0;\n            *piVar9 = 0xc;\n            goto LAB_0002563f;\n          }" ({ "{") (expression_statement "piVar9 = __errno_location();" (assignment_expression "piVar9 = __errno_location()" (identifier "piVar9") (= "=") (call_expression "__errno_location()" (identifier "__errno_location") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "local_b8 = (void *)0x0;" (assignment_expression "local_b8 = (void *)0x0" (identifier "local_b8") (= "=") (cast_expression "(void *)0x0" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "*piVar9 = 0xc;" (assignment_expression "*piVar9 = 0xc" (pointer_expression "*piVar9" (* "*") (identifier "piVar9")) (= "=") (number_literal "0xc")) (; ";")) (goto_statement "goto LAB_0002563f;" (goto "goto") (statement_identifier "LAB_0002563f") (; ";")) (} "}"))) (} "}"))))) (expression_statement "local_a8 = (-(uint)(param_1[10] == 0) & 0x186a1) - 1;" (assignment_expression "local_a8 = (-(uint)(param_1[10] == 0) & 0x186a1) - 1" (identifier "local_a8") (= "=") (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_00025bc8:\n          bVar25 = false;\n          uVar13 = param_1[0xb];\n          goto LAB_00025223;\n        }" (if "if") (parenthesized_expression "(param_2 == 2)" (( "(") (binary_expression "param_2 == 2" (identifier "param_2") (== "==") (number_literal "2")) () ")")) (compound_statement "{\nLAB_00025bc8:\n          bVar25 = false;\n          uVar13 = param_1[0xb];\n          goto LAB_00025223;\n        }" ({ "{") (labeled_statement "LAB_00025bc8:\n          bVar25 = false;" (statement_identifier "LAB_00025bc8") (: ":") (expression_statement "bVar25 = false;" (assignment_expression "bVar25 = false" (identifier "bVar25") (= "=") (false "false")) (; ";"))) (expression_statement "uVar13 = param_1[0xb];" (assignment_expression "uVar13 = param_1[0xb]" (identifier "uVar13") (= "=") (subscript_expression "param_1[0xb]" (identifier "param_1") ([ "[") (number_literal "0xb") (] "]"))) (; ";")) (goto_statement "goto LAB_00025223;" (goto "goto") (statement_identifier "LAB_00025223") (; ";")) (} "}"))) (if_statement "if ((((param_1[0xb] & 0x38U) == 0x18) && (*(int *)(iVar2 + 0x58) == 2)) &&\n           (iVar15 = FUN_00024ca0(), iVar15 != 0)) {\n          if (param_2 != 3) goto LAB_00025bc8;\n          bVar25 = false;\n        }\n        else {\n          bVar25 = param_2 == 3;\n        }" (if "if") (parenthesized_expression "((((param_1[0xb] & 0x38U) == 0x18) && (*(int *)(iVar2 + 0x58) == 2)) &&\n           (iVar15 = FUN_00024ca0(), iVar15 != 0))" (( "(") (binary_expression "(((param_1[0xb] & 0x38U) == 0x18) && (*(int *)(iVar2 + 0x58) == 2)) &&\n           (iVar15 = FUN_00024ca0(), iVar15 != 0)" (parenthesized_expression "(((param_1[0xb] & 0x38U) == 0x18) && (*(int *)(iVar2 + 0x58) == 2))" (( "(") (binary_expression "((param_1[0xb] & 0x38U) == 0x18) && (*(int *)(iVar2 + 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 *)(iVar2 + 0x58) == 2)" (( "(") (binary_expression "*(int *)(iVar2 + 0x58) == 2" (pointer_expression "*(int *)(iVar2 + 0x58)" (* "*") (cast_expression "(int *)(iVar2 + 0x58)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0x58)" (( "(") (binary_expression "iVar2 + 0x58" (identifier "iVar2") (+ "+") (number_literal "0x58")) () ")")))) (== "==") (number_literal "2")) () ")"))) () ")")) (&& "&&") (parenthesized_expression "(iVar15 = FUN_00024ca0(), iVar15 != 0)" (( "(") (comma_expression "iVar15 = FUN_00024ca0(), iVar15 != 0" (assignment_expression "iVar15 = FUN_00024ca0()" (identifier "iVar15") (= "=") (call_expression "FUN_00024ca0()" (identifier "FUN_00024ca0") (argument_list "()" (( "(") () ")")))) (, ",") (binary_expression "iVar15 != 0" (identifier "iVar15") (!= "!=") (number_literal "0"))) () ")"))) () ")")) (compound_statement "{\n          if (param_2 != 3) goto LAB_00025bc8;\n          bVar25 = false;\n        }" ({ "{") (if_statement "if (param_2 != 3) goto LAB_00025bc8;" (if "if") (parenthesized_expression "(param_2 != 3)" (( "(") (binary_expression "param_2 != 3" (identifier "param_2") (!= "!=") (number_literal "3")) () ")")) (goto_statement "goto LAB_00025bc8;" (goto "goto") (statement_identifier "LAB_00025bc8") (; ";"))) (expression_statement "bVar25 = false;" (assignment_expression "bVar25 = false" (identifier "bVar25") (= "=") (false "false")) (; ";")) (} "}")) (else_clause "else {\n          bVar25 = param_2 == 3;\n        }" (else "else") (compound_statement "{\n          bVar25 = param_2 == 3;\n        }" ({ "{") (expression_statement "bVar25 = param_2 == 3;" (assignment_expression "bVar25 = param_2 == 3" (identifier "bVar25") (= "=") (binary_expression "param_2 == 3" (identifier "param_2") (== "==") (number_literal "3"))) (; ";")) (} "}")))) (if_statement "if (((*(byte *)((int)param_1 + 0x2d) & 2) == 0) ||\n           (local_9c = FUN_000243f0(local_9c,0x406,3), -1 < local_9c)) {\n          iVar15 = FUN_00024e60(0);\n          if (iVar15 == 0) goto LAB_0002521b;\n          pDVar16 = *(DIR **)(iVar2 + 0xc);\n          uVar24 = *(ushort *)(iVar2 + 0x3e) | 1;\n          if (bVar25) goto LAB_000258a0;\nLAB_000258ae:\n          *(ushort *)(iVar2 + 0x3e) = uVar24;\n          closedir(pDVar16);\n          *(undefined4 *)(iVar2 + 0xc) = 0;\n          uVar13 = param_1[0xb];\n          if (((uVar13 & 0x200) != 0) && (-1 < local_9c)) {\n            close(local_9c);\n            uVar13 = param_1[0xb];\n          }\n        }\n        else {\n          pDVar16 = *(DIR **)(iVar2 + 0xc);\n          uVar24 = *(ushort *)(iVar2 + 0x3e) | 1;\n          if (bVar25) {\nLAB_000258a0:\n            piVar9 = __errno_location();\n            *(int *)(iVar2 + 0x20) = *piVar9;\n            goto LAB_000258ae;\n          }\n          *(ushort *)(iVar2 + 0x3e) = uVar24;\n          closedir(pDVar16);\n          uVar13 = param_1[0xb];\n        }" (if "if") (parenthesized_expression "(((*(byte *)((int)param_1 + 0x2d) & 2) == 0) ||\n           (local_9c = FUN_000243f0(local_9c,0x406,3), -1 < local_9c))" (( "(") (binary_expression "((*(byte *)((int)param_1 + 0x2d) & 2) == 0) ||\n           (local_9c = FUN_000243f0(local_9c,0x406,3), -1 < local_9c)" (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_9c = FUN_000243f0(local_9c,0x406,3), -1 < local_9c)" (( "(") (comma_expression "local_9c = FUN_000243f0(local_9c,0x406,3), -1 < local_9c" (assignment_expression "local_9c = FUN_000243f0(local_9c,0x406,3)" (identifier "local_9c") (= "=") (call_expression "FUN_000243f0(local_9c,0x406,3)" (identifier "FUN_000243f0") (argument_list "(local_9c,0x406,3)" (( "(") (identifier "local_9c") (, ",") (number_literal "0x406") (, ",") (number_literal "3") () ")")))) (, ",") (binary_expression "-1 < local_9c" (number_literal "-1") (< "<") (identifier "local_9c"))) () ")"))) () ")")) (compound_statement "{\n          iVar15 = FUN_00024e60(0);\n          if (iVar15 == 0) goto LAB_0002521b;\n          pDVar16 = *(DIR **)(iVar2 + 0xc);\n          uVar24 = *(ushort *)(iVar2 + 0x3e) | 1;\n          if (bVar25) goto LAB_000258a0;\nLAB_000258ae:\n          *(ushort *)(iVar2 + 0x3e) = uVar24;\n          closedir(pDVar16);\n          *(undefined4 *)(iVar2 + 0xc) = 0;\n          uVar13 = param_1[0xb];\n          if (((uVar13 & 0x200) != 0) && (-1 < local_9c)) {\n            close(local_9c);\n            uVar13 = param_1[0xb];\n          }\n        }" ({ "{") (expression_statement "iVar15 = FUN_00024e60(0);" (assignment_expression "iVar15 = FUN_00024e60(0)" (identifier "iVar15") (= "=") (call_expression "FUN_00024e60(0)" (identifier "FUN_00024e60") (argument_list "(0)" (( "(") (number_literal "0") () ")")))) (; ";")) (if_statement "if (iVar15 == 0) goto LAB_0002521b;" (if "if") (parenthesized_expression "(iVar15 == 0)" (( "(") (binary_expression "iVar15 == 0" (identifier "iVar15") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_0002521b;" (goto "goto") (statement_identifier "LAB_0002521b") (; ";"))) (expression_statement "pDVar16 = *(DIR **)(iVar2 + 0xc);" (assignment_expression "pDVar16 = *(DIR **)(iVar2 + 0xc)" (identifier "pDVar16") (= "=") (pointer_expression "*(DIR **)(iVar2 + 0xc)" (* "*") (cast_expression "(DIR **)(iVar2 + 0xc)" (( "(") (type_descriptor "DIR **" (type_identifier "DIR") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar2 + 0xc)" (( "(") (binary_expression "iVar2 + 0xc" (identifier "iVar2") (+ "+") (number_literal "0xc")) () ")"))))) (; ";")) (expression_statement "uVar24 = *(ushort *)(iVar2 + 0x3e) | 1;" (assignment_expression "uVar24 = *(ushort *)(iVar2 + 0x3e) | 1" (identifier "uVar24") (= "=") (binary_expression "*(ushort *)(iVar2 + 0x3e) | 1" (pointer_expression "*(ushort *)(iVar2 + 0x3e)" (* "*") (cast_expression "(ushort *)(iVar2 + 0x3e)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0x3e)" (( "(") (binary_expression "iVar2 + 0x3e" (identifier "iVar2") (+ "+") (number_literal "0x3e")) () ")")))) (| "|") (number_literal "1"))) (; ";")) (if_statement "if (bVar25) goto LAB_000258a0;" (if "if") (parenthesized_expression "(bVar25)" (( "(") (identifier "bVar25") () ")")) (goto_statement "goto LAB_000258a0;" (goto "goto") (statement_identifier "LAB_000258a0") (; ";"))) (labeled_statement "LAB_000258ae:\n          *(ushort *)(iVar2 + 0x3e) = uVar24;" (statement_identifier "LAB_000258ae") (: ":") (expression_statement "*(ushort *)(iVar2 + 0x3e) = uVar24;" (assignment_expression "*(ushort *)(iVar2 + 0x3e) = uVar24" (pointer_expression "*(ushort *)(iVar2 + 0x3e)" (* "*") (cast_expression "(ushort *)(iVar2 + 0x3e)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0x3e)" (( "(") (binary_expression "iVar2 + 0x3e" (identifier "iVar2") (+ "+") (number_literal "0x3e")) () ")")))) (= "=") (identifier "uVar24")) (; ";"))) (expression_statement "closedir(pDVar16);" (call_expression "closedir(pDVar16)" (identifier "closedir") (argument_list "(pDVar16)" (( "(") (identifier "pDVar16") () ")"))) (; ";")) (expression_statement "*(undefined4 *)(iVar2 + 0xc) = 0;" (assignment_expression "*(undefined4 *)(iVar2 + 0xc) = 0" (pointer_expression "*(undefined4 *)(iVar2 + 0xc)" (* "*") (cast_expression "(undefined4 *)(iVar2 + 0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0xc)" (( "(") (binary_expression "iVar2 + 0xc" (identifier "iVar2") (+ "+") (number_literal "0xc")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar13 = param_1[0xb];" (assignment_expression "uVar13 = param_1[0xb]" (identifier "uVar13") (= "=") (subscript_expression "param_1[0xb]" (identifier "param_1") ([ "[") (number_literal "0xb") (] "]"))) (; ";")) (if_statement "if (((uVar13 & 0x200) != 0) && (-1 < local_9c)) {\n            close(local_9c);\n            uVar13 = param_1[0xb];\n          }" (if "if") (parenthesized_expression "(((uVar13 & 0x200) != 0) && (-1 < local_9c))" (( "(") (binary_expression "((uVar13 & 0x200) != 0) && (-1 < local_9c)" (parenthesized_expression "((uVar13 & 0x200) != 0)" (( "(") (binary_expression "(uVar13 & 0x200) != 0" (parenthesized_expression "(uVar13 & 0x200)" (( "(") (binary_expression "uVar13 & 0x200" (identifier "uVar13") (& "&") (number_literal "0x200")) () ")")) (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(-1 < local_9c)" (( "(") (binary_expression "-1 < local_9c" (number_literal "-1") (< "<") (identifier "local_9c")) () ")"))) () ")")) (compound_statement "{\n            close(local_9c);\n            uVar13 = param_1[0xb];\n          }" ({ "{") (expression_statement "close(local_9c);" (call_expression "close(local_9c)" (identifier "close") (argument_list "(local_9c)" (( "(") (identifier "local_9c") () ")"))) (; ";")) (expression_statement "uVar13 = param_1[0xb];" (assignment_expression "uVar13 = param_1[0xb]" (identifier "uVar13") (= "=") (subscript_expression "param_1[0xb]" (identifier "param_1") ([ "[") (number_literal "0xb") (] "]"))) (; ";")) (} "}"))) (} "}")) (else_clause "else {\n          pDVar16 = *(DIR **)(iVar2 + 0xc);\n          uVar24 = *(ushort *)(iVar2 + 0x3e) | 1;\n          if (bVar25) {\nLAB_000258a0:\n            piVar9 = __errno_location();\n            *(int *)(iVar2 + 0x20) = *piVar9;\n            goto LAB_000258ae;\n          }\n          *(ushort *)(iVar2 + 0x3e) = uVar24;\n          closedir(pDVar16);\n          uVar13 = param_1[0xb];\n        }" (else "else") (compound_statement "{\n          pDVar16 = *(DIR **)(iVar2 + 0xc);\n          uVar24 = *(ushort *)(iVar2 + 0x3e) | 1;\n          if (bVar25) {\nLAB_000258a0:\n            piVar9 = __errno_location();\n            *(int *)(iVar2 + 0x20) = *piVar9;\n            goto LAB_000258ae;\n          }\n          *(ushort *)(iVar2 + 0x3e) = uVar24;\n          closedir(pDVar16);\n          uVar13 = param_1[0xb];\n        }" ({ "{") (expression_statement "pDVar16 = *(DIR **)(iVar2 + 0xc);" (assignment_expression "pDVar16 = *(DIR **)(iVar2 + 0xc)" (identifier "pDVar16") (= "=") (pointer_expression "*(DIR **)(iVar2 + 0xc)" (* "*") (cast_expression "(DIR **)(iVar2 + 0xc)" (( "(") (type_descriptor "DIR **" (type_identifier "DIR") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar2 + 0xc)" (( "(") (binary_expression "iVar2 + 0xc" (identifier "iVar2") (+ "+") (number_literal "0xc")) () ")"))))) (; ";")) (expression_statement "uVar24 = *(ushort *)(iVar2 + 0x3e) | 1;" (assignment_expression "uVar24 = *(ushort *)(iVar2 + 0x3e) | 1" (identifier "uVar24") (= "=") (binary_expression "*(ushort *)(iVar2 + 0x3e) | 1" (pointer_expression "*(ushort *)(iVar2 + 0x3e)" (* "*") (cast_expression "(ushort *)(iVar2 + 0x3e)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0x3e)" (( "(") (binary_expression "iVar2 + 0x3e" (identifier "iVar2") (+ "+") (number_literal "0x3e")) () ")")))) (| "|") (number_literal "1"))) (; ";")) (if_statement "if (bVar25) {\nLAB_000258a0:\n            piVar9 = __errno_location();\n            *(int *)(iVar2 + 0x20) = *piVar9;\n            goto LAB_000258ae;\n          }" (if "if") (parenthesized_expression "(bVar25)" (( "(") (identifier "bVar25") () ")")) (compound_statement "{\nLAB_000258a0:\n            piVar9 = __errno_location();\n            *(int *)(iVar2 + 0x20) = *piVar9;\n            goto LAB_000258ae;\n          }" ({ "{") (labeled_statement "LAB_000258a0:\n            piVar9 = __errno_location();" (statement_identifier "LAB_000258a0") (: ":") (expression_statement "piVar9 = __errno_location();" (assignment_expression "piVar9 = __errno_location()" (identifier "piVar9") (= "=") (call_expression "__errno_location()" (identifier "__errno_location") (argument_list "()" (( "(") () ")")))) (; ";"))) (expression_statement "*(int *)(iVar2 + 0x20) = *piVar9;" (assignment_expression "*(int *)(iVar2 + 0x20) = *piVar9" (pointer_expression "*(int *)(iVar2 + 0x20)" (* "*") (cast_expression "(int *)(iVar2 + 0x20)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0x20)" (( "(") (binary_expression "iVar2 + 0x20" (identifier "iVar2") (+ "+") (number_literal "0x20")) () ")")))) (= "=") (pointer_expression "*piVar9" (* "*") (identifier "piVar9"))) (; ";")) (goto_statement "goto LAB_000258ae;" (goto "goto") (statement_identifier "LAB_000258ae") (; ";")) (} "}"))) (expression_statement "*(ushort *)(iVar2 + 0x3e) = uVar24;" (assignment_expression "*(ushort *)(iVar2 + 0x3e) = uVar24" (pointer_expression "*(ushort *)(iVar2 + 0x3e)" (* "*") (cast_expression "(ushort *)(iVar2 + 0x3e)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0x3e)" (( "(") (binary_expression "iVar2 + 0x3e" (identifier "iVar2") (+ "+") (number_literal "0x3e")) () ")")))) (= "=") (identifier "uVar24")) (; ";")) (expression_statement "closedir(pDVar16);" (call_expression "closedir(pDVar16)" (identifier "closedir") (argument_list "(pDVar16)" (( "(") (identifier "pDVar16") () ")"))) (; ";")) (expression_statement "uVar13 = param_1[0xb];" (assignment_expression "uVar13 = param_1[0xb]" (identifier "uVar13") (= "=") (subscript_expression "param_1[0xb]" (identifier "param_1") ([ "[") (number_literal "0xb") (] "]"))) (; ";")) (} "}")))) (expression_statement "bVar25 = false;" (assignment_expression "bVar25 = false" (identifier "bVar25") (= "=") (false "false")) (; ";")) (expression_statement "*(undefined4 *)(iVar2 + 0xc) = 0;" (assignment_expression "*(undefined4 *)(iVar2 + 0xc) = 0" (pointer_expression "*(undefined4 *)(iVar2 + 0xc)" (* "*") (cast_expression "(undefined4 *)(iVar2 + 0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0xc)" (( "(") (binary_expression "iVar2 + 0xc" (identifier "iVar2") (+ "+") (number_literal "0xc")) () ")")))) (= "=") (number_literal "0")) (; ";")) (goto_statement "goto LAB_00025223;" (goto "goto") (statement_identifier "LAB_00025223") (; ";")) (} "}"))) (expression_statement "piVar9 = __errno_location();" (assignment_expression "piVar9 = __errno_location()" (identifier "piVar9") (= "=") (call_expression "__errno_location()" (identifier "__errno_location") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "iVar15 = *piVar9;" (assignment_expression "iVar15 = *piVar9" (identifier "iVar15") (= "=") (pointer_expression "*piVar9" (* "*") (identifier "piVar9"))) (; ";")) (expression_statement "close(local_9c);" (call_expression "close(local_9c)" (identifier "close") (argument_list "(local_9c)" (( "(") (identifier "local_9c") () ")"))) (; ";")) (expression_statement "*piVar9 = iVar15;" (assignment_expression "*piVar9 = iVar15" (pointer_expression "*piVar9" (* "*") (identifier "piVar9")) (= "=") (identifier "iVar15")) (; ";")) (expression_statement "*(undefined4 *)(iVar2 + 0xc) = 0;" (assignment_expression "*(undefined4 *)(iVar2 + 0xc) = 0" (pointer_expression "*(undefined4 *)(iVar2 + 0xc)" (* "*") (cast_expression "(undefined4 *)(iVar2 + 0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0xc)" (( "(") (binary_expression "iVar2 + 0xc" (identifier "iVar2") (+ "+") (number_literal "0xc")) () ")")))) (= "=") (number_literal "0")) (; ";")) (} "}")))) (labeled_statement "joined_r0x00025c30:\n    if (param_2 == 3) {\n      *(undefined2 *)(iVar2 + 0x3c) = 4;\n      piVar9 = __errno_location();\n      *(int *)(iVar2 + 0x20) = *piVar9;\n    }" (statement_identifier "joined_r0x00025c30") (: ":") (if_statement "if (param_2 == 3) {\n      *(undefined2 *)(iVar2 + 0x3c) = 4;\n      piVar9 = __errno_location();\n      *(int *)(iVar2 + 0x20) = *piVar9;\n    }" (if "if") (parenthesized_expression "(param_2 == 3)" (( "(") (binary_expression "param_2 == 3" (identifier "param_2") (== "==") (number_literal "3")) () ")")) (compound_statement "{\n      *(undefined2 *)(iVar2 + 0x3c) = 4;\n      piVar9 = __errno_location();\n      *(int *)(iVar2 + 0x20) = *piVar9;\n    }" ({ "{") (expression_statement "*(undefined2 *)(iVar2 + 0x3c) = 4;" (assignment_expression "*(undefined2 *)(iVar2 + 0x3c) = 4" (pointer_expression "*(undefined2 *)(iVar2 + 0x3c)" (* "*") (cast_expression "(undefined2 *)(iVar2 + 0x3c)" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0x3c)" (( "(") (binary_expression "iVar2 + 0x3c" (identifier "iVar2") (+ "+") (number_literal "0x3c")) () ")")))) (= "=") (number_literal "4")) (; ";")) (expression_statement "piVar9 = __errno_location();" (assignment_expression "piVar9 = __errno_location()" (identifier "piVar9") (= "=") (call_expression "__errno_location()" (identifier "__errno_location") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "*(int *)(iVar2 + 0x20) = *piVar9;" (assignment_expression "*(int *)(iVar2 + 0x20) = *piVar9" (pointer_expression "*(int *)(iVar2 + 0x20)" (* "*") (cast_expression "(int *)(iVar2 + 0x20)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0x20)" (( "(") (binary_expression "iVar2 + 0x20" (identifier "iVar2") (+ "+") (number_literal "0x20")) () ")")))) (= "=") (pointer_expression "*piVar9" (* "*") (identifier "piVar9"))) (; ";")) (} "}")))) (labeled_statement "LAB_00025c40:\n    local_b8 = (void *)0x0;" (statement_identifier "LAB_00025c40") (: ":") (expression_statement "local_b8 = (void *)0x0;" (assignment_expression "local_b8 = (void *)0x0" (identifier "local_b8") (= "=") (cast_expression "(void *)0x0" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";"))) (} "}")) (else_clause "else {\n    local_9c = dirfd(pDVar21);\n    if (local_9c < 0) {\n      closedir(*(DIR **)(iVar2 + 0xc));\n      *(undefined4 *)(iVar2 + 0xc) = 0;\n      goto joined_r0x00025c30;\n    }\n    if (param_1[10] == 0) {\n      local_a8 = 100000;\n      uVar13 = param_1[0xb];\n      bVar25 = true;\n    }\n    else {\n      local_a8 = 0xffffffff;\nLAB_0002521b:\n      bVar25 = true;\n      uVar13 = param_1[0xb];\n    }\nLAB_00025223:\n    uVar23 = *(uint *)(iVar2 + 0x28);\n    uVar22 = uVar23 - 1;\n    local_d0 = uVar23;\n    if (*(char *)(*(int *)(iVar2 + 0x1c) + -1 + uVar23) != '/') {\n      local_d0 = uVar23 + 1;\n      uVar22 = uVar23;\n    }\n    local_a4 = (undefined1 *)0x0;\n    if ((uVar13 & 4) != 0) {\n      local_a4 = (undefined1 *)(uVar22 + param_1[5]) + 1;\n      *(undefined1 *)(uVar22 + param_1[5]) = 0x2f;\n    }\n    puVar6 = PTR_free_0003afa8;\n    local_b0 = param_1[8] - local_d0;\n    bVar4 = false;\n    bVar3 = false;\n    iVar15 = *(int *)(iVar2 + 0x30);\n    local_c4 = (void *)0x0;\n    local_d4 = 0;\n    local_b8 = (void *)0x0;\nLAB_000252fb:\n    do {\n      do {\n        pDVar16 = *(DIR **)(iVar2 + 0xc);\n        if (pDVar16 == (DIR *)0x0) goto LAB_000256de;\n        piVar9 = __errno_location();\n        *piVar9 = 0;\n        pdVar10 = readdir64(pDVar16);\n        if (pdVar10 == (dirent64 *)0x0) {\n          if (*piVar9 != 0) {\n            *(int *)(iVar2 + 0x20) = *piVar9;\n            *(ushort *)(iVar2 + 0x3c) =\n                 (-(ushort)(pDVar21 == (DIR *)0x0 && local_d4 == 0) & 0xfffd) + 7;\n          }\n          if (*(DIR **)(iVar2 + 0xc) != (DIR *)0x0) {\n            closedir(*(DIR **)(iVar2 + 0xc));\n            *(undefined4 *)(iVar2 + 0xc) = 0;\n          }\n          goto LAB_000256de;\n        }\n      } while ((((*(byte *)(param_1 + 0xb) & 0x20) == 0) && (pdVar10->d_name[0] == '.')) &&\n              ((pdVar10->d_name[1] == '\0' || (*(short *)(pdVar10->d_name + 1) == 0x2e))));\n      __n = strlen(pdVar10->d_name);\n      pvVar11 = malloc(__n + 0xa8 & 0xfffffffc);\n      if (pvVar11 == (void *)0x0) {\n        iVar15 = *piVar9;\nLAB_000255a6:\n        free(pvVar11);\n        if (local_b8 != (void *)0x0) {\n          pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n          pvVar11 = *(void **)((int)local_b8 + 8);\n          if (pDVar21 == (DIR *)0x0) goto LAB_000255f4;\n          do {\n            closedir(pDVar21);\n            free(local_b8);\n            local_b8 = pvVar11;\n            while( true ) {\n              if (local_b8 == (void *)0x0) goto LAB_00025608;\n              pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n              pvVar11 = *(void **)((int)local_b8 + 8);\n              if (pDVar21 != (DIR *)0x0) break;\nLAB_000255f4:\n              free(local_b8);\n              local_b8 = pvVar11;\n            }\n          } while( true );\n        }\nLAB_00025608:\n        closedir(*(DIR **)(iVar2 + 0xc));\n        *(undefined4 *)(iVar2 + 0xc) = 0;\n        *(undefined2 *)(iVar2 + 0x3c) = 7;\n        local_b8 = (void *)0x0;\n        param_1[0xb] = param_1[0xb] | 0x4000;\n        *piVar9 = iVar15;\n        goto LAB_0002563f;\n      }\n      pvVar1 = (void *)((int)pvVar11 + 0xa4);\n      memcpy(pvVar1,pdVar10->d_name,__n);\n      __ptr = (void *)param_1[5];\n      *(undefined1 *)((int)pvVar11 + __n + 0xa4) = 0;\n      *(size_t *)((int)pvVar11 + 0x34) = __n;\n      *(int **)((int)pvVar11 + 0x2c) = param_1;\n      *(void **)((int)pvVar11 + 0x1c) = __ptr;\n      *(undefined4 *)((int)pvVar11 + 0x20) = 0;\n      *(undefined4 *)((int)pvVar11 + 0xc) = 0;\n      *(undefined4 *)((int)pvVar11 + 0x3e) = 0x30000;\n      *(undefined4 *)((int)pvVar11 + 0x10) = 0;\n      *(undefined4 *)((int)pvVar11 + 0x14) = 0;\n      if (local_b0 <= __n) {\n        uVar13 = local_d0 + 0x101 + param_1[8] + __n;\n        if (uVar13 < (uint)param_1[8]) {\n          iVar15 = 0x24;\n          free(__ptr);\n          param_1[5] = 0;\n          *piVar9 = 0x24;\n        }\n        else {\n          param_1[8] = uVar13;\n          pvVar14 = realloc(__ptr,uVar13);\n          if (pvVar14 != (void *)0x0) {\n            param_1[5] = (int)pvVar14;\n            if ((__ptr != pvVar14) && (bVar3 = true, (*(byte *)(param_1 + 0xb) & 4) != 0)) {\n              local_a4 = (undefined1 *)((int)pvVar14 + local_d0);\n            }\n            local_b0 = param_1[8] - local_d0;\n            goto LAB_000253d8;\n          }\n          free((void *)param_1[5]);\n          param_1[5] = 0;\n          iVar15 = *piVar9;\n        }\n        goto LAB_000255a6;\n      }\nLAB_000253d8:\n      if (CARRY4(__n,local_d0)) {\n        free(pvVar11);\n        if (local_b8 != (void *)0x0) {\n          pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n          pvVar11 = *(void **)((int)local_b8 + 8);\n          if (pDVar21 == (DIR *)0x0) goto LAB_00025e84;\n          do {\n            closedir(pDVar21);\n            free(local_b8);\n            local_b8 = pvVar11;\n            while( true ) {\n              if (local_b8 == (void *)0x0) goto LAB_00025e94;\n              pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n              pvVar11 = *(void **)((int)local_b8 + 8);\n              if (pDVar21 != (DIR *)0x0) break;\nLAB_00025e84:\n              free(local_b8);\n              local_b8 = pvVar11;\n            }\n          } while( true );\n        }\nLAB_00025e94:\n        closedir(*(DIR **)(iVar2 + 0xc));\n        *(undefined4 *)(iVar2 + 0xc) = 0;\n        *(undefined2 *)(iVar2 + 0x3c) = 7;\n        local_b8 = (void *)0x0;\n        param_1[0xb] = param_1[0xb] | 0x4000;\n        *piVar9 = 0x24;\n        goto LAB_0002563f;\n      }\n      uVar12 = *(undefined4 *)((int)&pdVar10->d_ino + 4);\n      *(size_t *)((int)pvVar11 + 0x28) = __n + local_d0;\n      *(int *)((int)pvVar11 + 0x30) = iVar15 + 1;\n      *(int *)((int)pvVar11 + 4) = *param_1;\n      _Var5 = pdVar10->d_ino;\n      *(undefined4 *)((int)pvVar11 + 0xa0) = uVar12;\n      *(int *)((int)pvVar11 + 0x9c) = (int)_Var5;\n      uVar13 = param_1[0xb];\n      if ((uVar13 & 4) == 0) {\n        *(void **)((int)pvVar11 + 0x18) = pvVar1;\n      }\n      else {\n        *(undefined4 *)((int)pvVar11 + 0x18) = *(undefined4 *)((int)pvVar11 + 0x1c);\n        memmove(local_a4,pvVar1,*(int *)((int)pvVar11 + 0x34) + 1);\n        uVar13 = param_1[0xb];\n      }\n      if ((param_1[10] == 0) || ((uVar13 & 0x400) != 0)) {\n        uVar23 = pdVar10->d_type - 1;\n        if (((uVar13 & 0x18) == 0x18) && ((pdVar10->d_type & 0xfb) != 0)) {\n          *(undefined2 *)((int)pvVar11 + 0x3c) = 0xb;\n          if (uVar23 < 0xc) {\n            *(undefined4 *)((int)pvVar11 + 0x54) = *(undefined4 *)(&DAT_00031560 + uVar23 * 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 (uVar23 < 0xc) {\n            *(undefined4 *)((int)pvVar11 + 0x54) = *(undefined4 *)(&DAT_00031560 + uVar23 * 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        uVar8 = FUN_00024740();\n        *(undefined2 *)((int)pvVar11 + 0x3c) = uVar8;\n      }\n      *(undefined4 *)((int)pvVar11 + 8) = 0;\n      pvVar1 = pvVar11;\n      if (local_b8 != (void *)0x0) {\n        *(void **)((int)local_c4 + 8) = pvVar11;\n        pvVar1 = local_b8;\n      }\n      local_b8 = pvVar1;\n      local_c4 = pvVar11;\n      if (local_d4 == 10000) {\n        if (param_1[10] == 0) {\n          iVar17 = *(int *)(iVar2 + 0x2c);\n          if ((*(byte *)(iVar17 + 0x2d) & 2) != 0) {\n            iVar18 = *(int *)(iVar17 + 0x30);\n            if (iVar18 == 0) {\n              iVar18 = FUN_0001df90(0xd,0,FUN_000246b0,FUN_000246e0,puVar6);\n              *(int *)(iVar17 + 0x30) = iVar18;\n              if (iVar18 != 0) goto LAB_00025920;\nLAB_000259b0:\n              if ((local_9c < 0) ||\n                 (iVar19 = fstatfs64(local_9c,&local_74), iVar17 = local_74.f_type, iVar19 != 0))\n              goto LAB_00025a48;\n              local_d4 = local_74.f_type;\n              if ((iVar18 != 0) &&\n                 (__ptr_00 = (undefined4 *)malloc(0xc), __ptr_00 != (undefined4 *)0x0)) {\n                uVar12 = *(undefined4 *)(iVar2 + 0x44);\n                __ptr_00[1] = *(undefined4 *)(iVar2 + 0x48);\n                *__ptr_00 = uVar12;\n                __ptr_00[2] = iVar17;\n                puVar20 = (undefined4 *)FUN_0001e8d0(iVar18,__ptr_00);\n                if (puVar20 == (undefined4 *)0x0) {\n                  free(__ptr_00);\n                  local_d4 = local_74.f_type;\n                }\n                else {\n                  if (__ptr_00 != puVar20) {\n                    \n                    abort();\n                  }\n                  local_d4 = local_74.f_type;\n                }\n              }\n            }\n            else {\nLAB_00025920:\n              local_7c = *(undefined4 *)(iVar2 + 0x48);\n              local_80 = *(undefined4 *)(iVar2 + 0x44);\n              iVar17 = FUN_0001dce0(iVar18,&local_80);\n              if (iVar17 == 0) goto LAB_000259b0;\n              local_d4 = *(int *)(iVar17 + 8);\n            }\n            if (((local_d4 == 0x6969) || (local_d4 == 0x1021994)) || (local_d4 == -0xacb2be)) {\n              bVar4 = false;\n              goto LAB_00025473;\n            }\n          }\nLAB_00025a48:\n          bVar4 = true;\n        }\nLAB_00025473:\n        local_d4 = 0x2711;\n        goto LAB_000252fb;\n      }\n      local_d4 = local_d4 + 1;\n    } while (local_d4 < local_a8);\nLAB_000256de:\n    if (bVar3) {\n      iVar15 = param_1[5];\n      for (iVar17 = param_1[1]; iVar17 != 0; iVar17 = *(int *)(iVar17 + 8)) {\n        while (*(int *)(iVar17 + 0x18) != iVar17 + 0xa4) {\n          iVar18 = *(int *)(iVar17 + 0x1c);\n          *(int *)(iVar17 + 0x1c) = iVar15;\n          *(int *)(iVar17 + 0x18) = (*(int *)(iVar17 + 0x18) - iVar18) + iVar15;\n          iVar17 = *(int *)(iVar17 + 8);\n          if (iVar17 == 0) goto LAB_00025aef;\n        }\n        *(int *)(iVar17 + 0x1c) = iVar15;\n      }\nLAB_00025aef:\n      iVar17 = *(int *)((int)local_b8 + 0x30);\n      pvVar11 = local_b8;\n      while (-1 < iVar17) {\n        while( true ) {\n          if (*(int *)((int)pvVar11 + 0x18) != (int)pvVar11 + 0xa4) {\n            *(int *)((int)pvVar11 + 0x18) =\n                 (*(int *)((int)pvVar11 + 0x18) - *(int *)((int)pvVar11 + 0x1c)) + iVar15;\n          }\n          pvVar1 = *(void **)((int)pvVar11 + 8);\n          *(int *)((int)pvVar11 + 0x1c) = iVar15;\n          if (pvVar1 == (void *)0x0) break;\n          pvVar11 = pvVar1;\n          if (*(int *)((int)pvVar1 + 0x30) < 0) goto LAB_000256e9;\n        }\n        pvVar11 = *(void **)((int)pvVar11 + 4);\n        iVar17 = *(int *)((int)pvVar11 + 0x30);\n      }\n    }\nLAB_000256e9:\n    if ((*(byte *)(param_1 + 0xb) & 4) != 0) {\n      if ((param_1[8] == local_d0) || (local_d4 == 0)) {\n        local_a4 = local_a4 + -1;\n      }\n      *local_a4 = 0;\n    }\n    if ((pDVar21 == (DIR *)0x0) && (bVar25)) {\n      if ((param_2 == 1) || (local_d4 == 0)) {\n        if (*(int *)(iVar2 + 0x30) == 0) {\n          iVar15 = FUN_00024bb0();\n        }\n        else {\n          iVar15 = FUN_00024e60(&DAT_0002e141);\n        }\n        if (iVar15 != 0) {\n          *(undefined2 *)(iVar2 + 0x3c) = 7;\n          param_1[0xb] = param_1[0xb] | 0x4000;\n          while (pvVar11 = local_b8, local_b8 != (void *)0x0) {\n            while( true ) {\n              local_b8 = *(void **)((int)pvVar11 + 8);\n              if (*(DIR **)((int)pvVar11 + 0xc) == (DIR *)0x0) break;\n              closedir(*(DIR **)((int)pvVar11 + 0xc));\n              free(pvVar11);\n              pvVar11 = local_b8;\n              if (local_b8 == (void *)0x0) goto LAB_00025c40;\n            }\n            free(pvVar11);\n          }\n          goto LAB_00025c40;\n        }\n        goto LAB_0002574d;\n      }\n    }\n    else {\nLAB_0002574d:\n      if (local_d4 == 0) {\n        if (((param_2 == 3) && (*(short *)(iVar2 + 0x3c) != 4)) && (*(short *)(iVar2 + 0x3c) != 7))\n        {\n          *(undefined2 *)(iVar2 + 0x3c) = 6;\n        }\n        if (local_b8 != (void *)0x0) {\n          pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n          pvVar11 = *(void **)((int)local_b8 + 8);\n          if (pDVar21 == (DIR *)0x0) goto LAB_00025c94;\n          do {\n            closedir(pDVar21);\n            free(local_b8);\n            local_b8 = pvVar11;\n            while( true ) {\n              if (local_b8 == (void *)0x0) goto LAB_00025c40;\n              pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n              pvVar11 = *(void **)((int)local_b8 + 8);\n              if (pDVar21 != (DIR *)0x0) break;\nLAB_00025c94:\n              free(local_b8);\n              local_b8 = pvVar11;\n            }\n          } while( true );\n        }\n        goto LAB_00025c40;\n      }\n    }\n    if (bVar4) {\n      param_1[10] = (int)FUN_00024700;\n      local_b8 = (void *)FUN_000248e0();\n      param_1[10] = 0;\n    }\n    else if ((param_1[10] != 0) && (local_d4 != 1)) {\n      local_b8 = (void *)FUN_000248e0();\n    }\n  }" (else "else") (compound_statement "{\n    local_9c = dirfd(pDVar21);\n    if (local_9c < 0) {\n      closedir(*(DIR **)(iVar2 + 0xc));\n      *(undefined4 *)(iVar2 + 0xc) = 0;\n      goto joined_r0x00025c30;\n    }\n    if (param_1[10] == 0) {\n      local_a8 = 100000;\n      uVar13 = param_1[0xb];\n      bVar25 = true;\n    }\n    else {\n      local_a8 = 0xffffffff;\nLAB_0002521b:\n      bVar25 = true;\n      uVar13 = param_1[0xb];\n    }\nLAB_00025223:\n    uVar23 = *(uint *)(iVar2 + 0x28);\n    uVar22 = uVar23 - 1;\n    local_d0 = uVar23;\n    if (*(char *)(*(int *)(iVar2 + 0x1c) + -1 + uVar23) != '/') {\n      local_d0 = uVar23 + 1;\n      uVar22 = uVar23;\n    }\n    local_a4 = (undefined1 *)0x0;\n    if ((uVar13 & 4) != 0) {\n      local_a4 = (undefined1 *)(uVar22 + param_1[5]) + 1;\n      *(undefined1 *)(uVar22 + param_1[5]) = 0x2f;\n    }\n    puVar6 = PTR_free_0003afa8;\n    local_b0 = param_1[8] - local_d0;\n    bVar4 = false;\n    bVar3 = false;\n    iVar15 = *(int *)(iVar2 + 0x30);\n    local_c4 = (void *)0x0;\n    local_d4 = 0;\n    local_b8 = (void *)0x0;\nLAB_000252fb:\n    do {\n      do {\n        pDVar16 = *(DIR **)(iVar2 + 0xc);\n        if (pDVar16 == (DIR *)0x0) goto LAB_000256de;\n        piVar9 = __errno_location();\n        *piVar9 = 0;\n        pdVar10 = readdir64(pDVar16);\n        if (pdVar10 == (dirent64 *)0x0) {\n          if (*piVar9 != 0) {\n            *(int *)(iVar2 + 0x20) = *piVar9;\n            *(ushort *)(iVar2 + 0x3c) =\n                 (-(ushort)(pDVar21 == (DIR *)0x0 && local_d4 == 0) & 0xfffd) + 7;\n          }\n          if (*(DIR **)(iVar2 + 0xc) != (DIR *)0x0) {\n            closedir(*(DIR **)(iVar2 + 0xc));\n            *(undefined4 *)(iVar2 + 0xc) = 0;\n          }\n          goto LAB_000256de;\n        }\n      } while ((((*(byte *)(param_1 + 0xb) & 0x20) == 0) && (pdVar10->d_name[0] == '.')) &&\n              ((pdVar10->d_name[1] == '\0' || (*(short *)(pdVar10->d_name + 1) == 0x2e))));\n      __n = strlen(pdVar10->d_name);\n      pvVar11 = malloc(__n + 0xa8 & 0xfffffffc);\n      if (pvVar11 == (void *)0x0) {\n        iVar15 = *piVar9;\nLAB_000255a6:\n        free(pvVar11);\n        if (local_b8 != (void *)0x0) {\n          pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n          pvVar11 = *(void **)((int)local_b8 + 8);\n          if (pDVar21 == (DIR *)0x0) goto LAB_000255f4;\n          do {\n            closedir(pDVar21);\n            free(local_b8);\n            local_b8 = pvVar11;\n            while( true ) {\n              if (local_b8 == (void *)0x0) goto LAB_00025608;\n              pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n              pvVar11 = *(void **)((int)local_b8 + 8);\n              if (pDVar21 != (DIR *)0x0) break;\nLAB_000255f4:\n              free(local_b8);\n              local_b8 = pvVar11;\n            }\n          } while( true );\n        }\nLAB_00025608:\n        closedir(*(DIR **)(iVar2 + 0xc));\n        *(undefined4 *)(iVar2 + 0xc) = 0;\n        *(undefined2 *)(iVar2 + 0x3c) = 7;\n        local_b8 = (void *)0x0;\n        param_1[0xb] = param_1[0xb] | 0x4000;\n        *piVar9 = iVar15;\n        goto LAB_0002563f;\n      }\n      pvVar1 = (void *)((int)pvVar11 + 0xa4);\n      memcpy(pvVar1,pdVar10->d_name,__n);\n      __ptr = (void *)param_1[5];\n      *(undefined1 *)((int)pvVar11 + __n + 0xa4) = 0;\n      *(size_t *)((int)pvVar11 + 0x34) = __n;\n      *(int **)((int)pvVar11 + 0x2c) = param_1;\n      *(void **)((int)pvVar11 + 0x1c) = __ptr;\n      *(undefined4 *)((int)pvVar11 + 0x20) = 0;\n      *(undefined4 *)((int)pvVar11 + 0xc) = 0;\n      *(undefined4 *)((int)pvVar11 + 0x3e) = 0x30000;\n      *(undefined4 *)((int)pvVar11 + 0x10) = 0;\n      *(undefined4 *)((int)pvVar11 + 0x14) = 0;\n      if (local_b0 <= __n) {\n        uVar13 = local_d0 + 0x101 + param_1[8] + __n;\n        if (uVar13 < (uint)param_1[8]) {\n          iVar15 = 0x24;\n          free(__ptr);\n          param_1[5] = 0;\n          *piVar9 = 0x24;\n        }\n        else {\n          param_1[8] = uVar13;\n          pvVar14 = realloc(__ptr,uVar13);\n          if (pvVar14 != (void *)0x0) {\n            param_1[5] = (int)pvVar14;\n            if ((__ptr != pvVar14) && (bVar3 = true, (*(byte *)(param_1 + 0xb) & 4) != 0)) {\n              local_a4 = (undefined1 *)((int)pvVar14 + local_d0);\n            }\n            local_b0 = param_1[8] - local_d0;\n            goto LAB_000253d8;\n          }\n          free((void *)param_1[5]);\n          param_1[5] = 0;\n          iVar15 = *piVar9;\n        }\n        goto LAB_000255a6;\n      }\nLAB_000253d8:\n      if (CARRY4(__n,local_d0)) {\n        free(pvVar11);\n        if (local_b8 != (void *)0x0) {\n          pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n          pvVar11 = *(void **)((int)local_b8 + 8);\n          if (pDVar21 == (DIR *)0x0) goto LAB_00025e84;\n          do {\n            closedir(pDVar21);\n            free(local_b8);\n            local_b8 = pvVar11;\n            while( true ) {\n              if (local_b8 == (void *)0x0) goto LAB_00025e94;\n              pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n              pvVar11 = *(void **)((int)local_b8 + 8);\n              if (pDVar21 != (DIR *)0x0) break;\nLAB_00025e84:\n              free(local_b8);\n              local_b8 = pvVar11;\n            }\n          } while( true );\n        }\nLAB_00025e94:\n        closedir(*(DIR **)(iVar2 + 0xc));\n        *(undefined4 *)(iVar2 + 0xc) = 0;\n        *(undefined2 *)(iVar2 + 0x3c) = 7;\n        local_b8 = (void *)0x0;\n        param_1[0xb] = param_1[0xb] | 0x4000;\n        *piVar9 = 0x24;\n        goto LAB_0002563f;\n      }\n      uVar12 = *(undefined4 *)((int)&pdVar10->d_ino + 4);\n      *(size_t *)((int)pvVar11 + 0x28) = __n + local_d0;\n      *(int *)((int)pvVar11 + 0x30) = iVar15 + 1;\n      *(int *)((int)pvVar11 + 4) = *param_1;\n      _Var5 = pdVar10->d_ino;\n      *(undefined4 *)((int)pvVar11 + 0xa0) = uVar12;\n      *(int *)((int)pvVar11 + 0x9c) = (int)_Var5;\n      uVar13 = param_1[0xb];\n      if ((uVar13 & 4) == 0) {\n        *(void **)((int)pvVar11 + 0x18) = pvVar1;\n      }\n      else {\n        *(undefined4 *)((int)pvVar11 + 0x18) = *(undefined4 *)((int)pvVar11 + 0x1c);\n        memmove(local_a4,pvVar1,*(int *)((int)pvVar11 + 0x34) + 1);\n        uVar13 = param_1[0xb];\n      }\n      if ((param_1[10] == 0) || ((uVar13 & 0x400) != 0)) {\n        uVar23 = pdVar10->d_type - 1;\n        if (((uVar13 & 0x18) == 0x18) && ((pdVar10->d_type & 0xfb) != 0)) {\n          *(undefined2 *)((int)pvVar11 + 0x3c) = 0xb;\n          if (uVar23 < 0xc) {\n            *(undefined4 *)((int)pvVar11 + 0x54) = *(undefined4 *)(&DAT_00031560 + uVar23 * 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 (uVar23 < 0xc) {\n            *(undefined4 *)((int)pvVar11 + 0x54) = *(undefined4 *)(&DAT_00031560 + uVar23 * 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        uVar8 = FUN_00024740();\n        *(undefined2 *)((int)pvVar11 + 0x3c) = uVar8;\n      }\n      *(undefined4 *)((int)pvVar11 + 8) = 0;\n      pvVar1 = pvVar11;\n      if (local_b8 != (void *)0x0) {\n        *(void **)((int)local_c4 + 8) = pvVar11;\n        pvVar1 = local_b8;\n      }\n      local_b8 = pvVar1;\n      local_c4 = pvVar11;\n      if (local_d4 == 10000) {\n        if (param_1[10] == 0) {\n          iVar17 = *(int *)(iVar2 + 0x2c);\n          if ((*(byte *)(iVar17 + 0x2d) & 2) != 0) {\n            iVar18 = *(int *)(iVar17 + 0x30);\n            if (iVar18 == 0) {\n              iVar18 = FUN_0001df90(0xd,0,FUN_000246b0,FUN_000246e0,puVar6);\n              *(int *)(iVar17 + 0x30) = iVar18;\n              if (iVar18 != 0) goto LAB_00025920;\nLAB_000259b0:\n              if ((local_9c < 0) ||\n                 (iVar19 = fstatfs64(local_9c,&local_74), iVar17 = local_74.f_type, iVar19 != 0))\n              goto LAB_00025a48;\n              local_d4 = local_74.f_type;\n              if ((iVar18 != 0) &&\n                 (__ptr_00 = (undefined4 *)malloc(0xc), __ptr_00 != (undefined4 *)0x0)) {\n                uVar12 = *(undefined4 *)(iVar2 + 0x44);\n                __ptr_00[1] = *(undefined4 *)(iVar2 + 0x48);\n                *__ptr_00 = uVar12;\n                __ptr_00[2] = iVar17;\n                puVar20 = (undefined4 *)FUN_0001e8d0(iVar18,__ptr_00);\n                if (puVar20 == (undefined4 *)0x0) {\n                  free(__ptr_00);\n                  local_d4 = local_74.f_type;\n                }\n                else {\n                  if (__ptr_00 != puVar20) {\n                    \n                    abort();\n                  }\n                  local_d4 = local_74.f_type;\n                }\n              }\n            }\n            else {\nLAB_00025920:\n              local_7c = *(undefined4 *)(iVar2 + 0x48);\n              local_80 = *(undefined4 *)(iVar2 + 0x44);\n              iVar17 = FUN_0001dce0(iVar18,&local_80);\n              if (iVar17 == 0) goto LAB_000259b0;\n              local_d4 = *(int *)(iVar17 + 8);\n            }\n            if (((local_d4 == 0x6969) || (local_d4 == 0x1021994)) || (local_d4 == -0xacb2be)) {\n              bVar4 = false;\n              goto LAB_00025473;\n            }\n          }\nLAB_00025a48:\n          bVar4 = true;\n        }\nLAB_00025473:\n        local_d4 = 0x2711;\n        goto LAB_000252fb;\n      }\n      local_d4 = local_d4 + 1;\n    } while (local_d4 < local_a8);\nLAB_000256de:\n    if (bVar3) {\n      iVar15 = param_1[5];\n      for (iVar17 = param_1[1]; iVar17 != 0; iVar17 = *(int *)(iVar17 + 8)) {\n        while (*(int *)(iVar17 + 0x18) != iVar17 + 0xa4) {\n          iVar18 = *(int *)(iVar17 + 0x1c);\n          *(int *)(iVar17 + 0x1c) = iVar15;\n          *(int *)(iVar17 + 0x18) = (*(int *)(iVar17 + 0x18) - iVar18) + iVar15;\n          iVar17 = *(int *)(iVar17 + 8);\n          if (iVar17 == 0) goto LAB_00025aef;\n        }\n        *(int *)(iVar17 + 0x1c) = iVar15;\n      }\nLAB_00025aef:\n      iVar17 = *(int *)((int)local_b8 + 0x30);\n      pvVar11 = local_b8;\n      while (-1 < iVar17) {\n        while( true ) {\n          if (*(int *)((int)pvVar11 + 0x18) != (int)pvVar11 + 0xa4) {\n            *(int *)((int)pvVar11 + 0x18) =\n                 (*(int *)((int)pvVar11 + 0x18) - *(int *)((int)pvVar11 + 0x1c)) + iVar15;\n          }\n          pvVar1 = *(void **)((int)pvVar11 + 8);\n          *(int *)((int)pvVar11 + 0x1c) = iVar15;\n          if (pvVar1 == (void *)0x0) break;\n          pvVar11 = pvVar1;\n          if (*(int *)((int)pvVar1 + 0x30) < 0) goto LAB_000256e9;\n        }\n        pvVar11 = *(void **)((int)pvVar11 + 4);\n        iVar17 = *(int *)((int)pvVar11 + 0x30);\n      }\n    }\nLAB_000256e9:\n    if ((*(byte *)(param_1 + 0xb) & 4) != 0) {\n      if ((param_1[8] == local_d0) || (local_d4 == 0)) {\n        local_a4 = local_a4 + -1;\n      }\n      *local_a4 = 0;\n    }\n    if ((pDVar21 == (DIR *)0x0) && (bVar25)) {\n      if ((param_2 == 1) || (local_d4 == 0)) {\n        if (*(int *)(iVar2 + 0x30) == 0) {\n          iVar15 = FUN_00024bb0();\n        }\n        else {\n          iVar15 = FUN_00024e60(&DAT_0002e141);\n        }\n        if (iVar15 != 0) {\n          *(undefined2 *)(iVar2 + 0x3c) = 7;\n          param_1[0xb] = param_1[0xb] | 0x4000;\n          while (pvVar11 = local_b8, local_b8 != (void *)0x0) {\n            while( true ) {\n              local_b8 = *(void **)((int)pvVar11 + 8);\n              if (*(DIR **)((int)pvVar11 + 0xc) == (DIR *)0x0) break;\n              closedir(*(DIR **)((int)pvVar11 + 0xc));\n              free(pvVar11);\n              pvVar11 = local_b8;\n              if (local_b8 == (void *)0x0) goto LAB_00025c40;\n            }\n            free(pvVar11);\n          }\n          goto LAB_00025c40;\n        }\n        goto LAB_0002574d;\n      }\n    }\n    else {\nLAB_0002574d:\n      if (local_d4 == 0) {\n        if (((param_2 == 3) && (*(short *)(iVar2 + 0x3c) != 4)) && (*(short *)(iVar2 + 0x3c) != 7))\n        {\n          *(undefined2 *)(iVar2 + 0x3c) = 6;\n        }\n        if (local_b8 != (void *)0x0) {\n          pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n          pvVar11 = *(void **)((int)local_b8 + 8);\n          if (pDVar21 == (DIR *)0x0) goto LAB_00025c94;\n          do {\n            closedir(pDVar21);\n            free(local_b8);\n            local_b8 = pvVar11;\n            while( true ) {\n              if (local_b8 == (void *)0x0) goto LAB_00025c40;\n              pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n              pvVar11 = *(void **)((int)local_b8 + 8);\n              if (pDVar21 != (DIR *)0x0) break;\nLAB_00025c94:\n              free(local_b8);\n              local_b8 = pvVar11;\n            }\n          } while( true );\n        }\n        goto LAB_00025c40;\n      }\n    }\n    if (bVar4) {\n      param_1[10] = (int)FUN_00024700;\n      local_b8 = (void *)FUN_000248e0();\n      param_1[10] = 0;\n    }\n    else if ((param_1[10] != 0) && (local_d4 != 1)) {\n      local_b8 = (void *)FUN_000248e0();\n    }\n  }" ({ "{") (expression_statement "local_9c = dirfd(pDVar21);" (assignment_expression "local_9c = dirfd(pDVar21)" (identifier "local_9c") (= "=") (call_expression "dirfd(pDVar21)" (identifier "dirfd") (argument_list "(pDVar21)" (( "(") (identifier "pDVar21") () ")")))) (; ";")) (if_statement "if (local_9c < 0) {\n      closedir(*(DIR **)(iVar2 + 0xc));\n      *(undefined4 *)(iVar2 + 0xc) = 0;\n      goto joined_r0x00025c30;\n    }" (if "if") (parenthesized_expression "(local_9c < 0)" (( "(") (binary_expression "local_9c < 0" (identifier "local_9c") (< "<") (number_literal "0")) () ")")) (compound_statement "{\n      closedir(*(DIR **)(iVar2 + 0xc));\n      *(undefined4 *)(iVar2 + 0xc) = 0;\n      goto joined_r0x00025c30;\n    }" ({ "{") (expression_statement "closedir(*(DIR **)(iVar2 + 0xc));" (call_expression "closedir(*(DIR **)(iVar2 + 0xc))" (identifier "closedir") (argument_list "(*(DIR **)(iVar2 + 0xc))" (( "(") (pointer_expression "*(DIR **)(iVar2 + 0xc)" (* "*") (cast_expression "(DIR **)(iVar2 + 0xc)" (( "(") (type_descriptor "DIR **" (type_identifier "DIR") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar2 + 0xc)" (( "(") (binary_expression "iVar2 + 0xc" (identifier "iVar2") (+ "+") (number_literal "0xc")) () ")")))) () ")"))) (; ";")) (expression_statement "*(undefined4 *)(iVar2 + 0xc) = 0;" (assignment_expression "*(undefined4 *)(iVar2 + 0xc) = 0" (pointer_expression "*(undefined4 *)(iVar2 + 0xc)" (* "*") (cast_expression "(undefined4 *)(iVar2 + 0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0xc)" (( "(") (binary_expression "iVar2 + 0xc" (identifier "iVar2") (+ "+") (number_literal "0xc")) () ")")))) (= "=") (number_literal "0")) (; ";")) (goto_statement "goto joined_r0x00025c30;" (goto "goto") (statement_identifier "joined_r0x00025c30") (; ";")) (} "}"))) (if_statement "if (param_1[10] == 0) {\n      local_a8 = 100000;\n      uVar13 = param_1[0xb];\n      bVar25 = true;\n    }\n    else {\n      local_a8 = 0xffffffff;\nLAB_0002521b:\n      bVar25 = true;\n      uVar13 = 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_a8 = 100000;\n      uVar13 = param_1[0xb];\n      bVar25 = true;\n    }" ({ "{") (expression_statement "local_a8 = 100000;" (assignment_expression "local_a8 = 100000" (identifier "local_a8") (= "=") (number_literal "100000")) (; ";")) (expression_statement "uVar13 = param_1[0xb];" (assignment_expression "uVar13 = param_1[0xb]" (identifier "uVar13") (= "=") (subscript_expression "param_1[0xb]" (identifier "param_1") ([ "[") (number_literal "0xb") (] "]"))) (; ";")) (expression_statement "bVar25 = true;" (assignment_expression "bVar25 = true" (identifier "bVar25") (= "=") (true "true")) (; ";")) (} "}")) (else_clause "else {\n      local_a8 = 0xffffffff;\nLAB_0002521b:\n      bVar25 = true;\n      uVar13 = param_1[0xb];\n    }" (else "else") (compound_statement "{\n      local_a8 = 0xffffffff;\nLAB_0002521b:\n      bVar25 = true;\n      uVar13 = param_1[0xb];\n    }" ({ "{") (expression_statement "local_a8 = 0xffffffff;" (assignment_expression "local_a8 = 0xffffffff" (identifier "local_a8") (= "=") (number_literal "0xffffffff")) (; ";")) (labeled_statement "LAB_0002521b:\n      bVar25 = true;" (statement_identifier "LAB_0002521b") (: ":") (expression_statement "bVar25 = true;" (assignment_expression "bVar25 = true" (identifier "bVar25") (= "=") (true "true")) (; ";"))) (expression_statement "uVar13 = param_1[0xb];" (assignment_expression "uVar13 = param_1[0xb]" (identifier "uVar13") (= "=") (subscript_expression "param_1[0xb]" (identifier "param_1") ([ "[") (number_literal "0xb") (] "]"))) (; ";")) (} "}")))) (labeled_statement "LAB_00025223:\n    uVar23 = *(uint *)(iVar2 + 0x28);" (statement_identifier "LAB_00025223") (: ":") (expression_statement "uVar23 = *(uint *)(iVar2 + 0x28);" (assignment_expression "uVar23 = *(uint *)(iVar2 + 0x28)" (identifier "uVar23") (= "=") (pointer_expression "*(uint *)(iVar2 + 0x28)" (* "*") (cast_expression "(uint *)(iVar2 + 0x28)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0x28)" (( "(") (binary_expression "iVar2 + 0x28" (identifier "iVar2") (+ "+") (number_literal "0x28")) () ")"))))) (; ";"))) (expression_statement "uVar22 = uVar23 - 1;" (assignment_expression "uVar22 = uVar23 - 1" (identifier "uVar22") (= "=") (binary_expression "uVar23 - 1" (identifier "uVar23") (- "-") (number_literal "1"))) (; ";")) (expression_statement "local_d0 = uVar23;" (assignment_expression "local_d0 = uVar23" (identifier "local_d0") (= "=") (identifier "uVar23")) (; ";")) (if_statement "if (*(char *)(*(int *)(iVar2 + 0x1c) + -1 + uVar23) != '/') {\n      local_d0 = uVar23 + 1;\n      uVar22 = uVar23;\n    }" (if "if") (parenthesized_expression "(*(char *)(*(int *)(iVar2 + 0x1c) + -1 + uVar23) != '/')" (( "(") (binary_expression "*(char *)(*(int *)(iVar2 + 0x1c) + -1 + uVar23) != '/'" (pointer_expression "*(char *)(*(int *)(iVar2 + 0x1c) + -1 + uVar23)" (* "*") (cast_expression "(char *)(*(int *)(iVar2 + 0x1c) + -1 + uVar23)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(iVar2 + 0x1c) + -1 + uVar23)" (( "(") (binary_expression "*(int *)(iVar2 + 0x1c) + -1 + uVar23" (binary_expression "*(int *)(iVar2 + 0x1c) + -1" (pointer_expression "*(int *)(iVar2 + 0x1c)" (* "*") (cast_expression "(int *)(iVar2 + 0x1c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0x1c)" (( "(") (binary_expression "iVar2 + 0x1c" (identifier "iVar2") (+ "+") (number_literal "0x1c")) () ")")))) (+ "+") (number_literal "-1")) (+ "+") (identifier "uVar23")) () ")")))) (!= "!=") (char_literal "'/'" (' "'") (character "/") (' "'"))) () ")")) (compound_statement "{\n      local_d0 = uVar23 + 1;\n      uVar22 = uVar23;\n    }" ({ "{") (expression_statement "local_d0 = uVar23 + 1;" (assignment_expression "local_d0 = uVar23 + 1" (identifier "local_d0") (= "=") (binary_expression "uVar23 + 1" (identifier "uVar23") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "uVar22 = uVar23;" (assignment_expression "uVar22 = uVar23" (identifier "uVar22") (= "=") (identifier "uVar23")) (; ";")) (} "}"))) (expression_statement "local_a4 = (undefined1 *)0x0;" (assignment_expression "local_a4 = (undefined1 *)0x0" (identifier "local_a4") (= "=") (cast_expression "(undefined1 *)0x0" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (if_statement "if ((uVar13 & 4) != 0) {\n      local_a4 = (undefined1 *)(uVar22 + param_1[5]) + 1;\n      *(undefined1 *)(uVar22 + param_1[5]) = 0x2f;\n    }" (if "if") (parenthesized_expression "((uVar13 & 4) != 0)" (( "(") (binary_expression "(uVar13 & 4) != 0" (parenthesized_expression "(uVar13 & 4)" (( "(") (binary_expression "uVar13 & 4" (identifier "uVar13") (& "&") (number_literal "4")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      local_a4 = (undefined1 *)(uVar22 + param_1[5]) + 1;\n      *(undefined1 *)(uVar22 + param_1[5]) = 0x2f;\n    }" ({ "{") (expression_statement "local_a4 = (undefined1 *)(uVar22 + param_1[5]) + 1;" (assignment_expression "local_a4 = (undefined1 *)(uVar22 + param_1[5]) + 1" (identifier "local_a4") (= "=") (binary_expression "(undefined1 *)(uVar22 + param_1[5]) + 1" (cast_expression "(undefined1 *)(uVar22 + param_1[5])" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar22 + param_1[5])" (( "(") (binary_expression "uVar22 + param_1[5]" (identifier "uVar22") (+ "+") (subscript_expression "param_1[5]" (identifier "param_1") ([ "[") (number_literal "5") (] "]"))) () ")"))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*(undefined1 *)(uVar22 + param_1[5]) = 0x2f;" (assignment_expression "*(undefined1 *)(uVar22 + param_1[5]) = 0x2f" (pointer_expression "*(undefined1 *)(uVar22 + param_1[5])" (* "*") (cast_expression "(undefined1 *)(uVar22 + param_1[5])" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar22 + param_1[5])" (( "(") (binary_expression "uVar22 + param_1[5]" (identifier "uVar22") (+ "+") (subscript_expression "param_1[5]" (identifier "param_1") ([ "[") (number_literal "5") (] "]"))) () ")")))) (= "=") (number_literal "0x2f")) (; ";")) (} "}"))) (expression_statement "puVar6 = PTR_free_0003afa8;" (assignment_expression "puVar6 = PTR_free_0003afa8" (identifier "puVar6") (= "=") (identifier "PTR_free_0003afa8")) (; ";")) (expression_statement "local_b0 = param_1[8] - local_d0;" (assignment_expression "local_b0 = param_1[8] - local_d0" (identifier "local_b0") (= "=") (binary_expression "param_1[8] - local_d0" (subscript_expression "param_1[8]" (identifier "param_1") ([ "[") (number_literal "8") (] "]")) (- "-") (identifier "local_d0"))) (; ";")) (expression_statement "bVar4 = false;" (assignment_expression "bVar4 = false" (identifier "bVar4") (= "=") (false "false")) (; ";")) (expression_statement "bVar3 = false;" (assignment_expression "bVar3 = false" (identifier "bVar3") (= "=") (false "false")) (; ";")) (expression_statement "iVar15 = *(int *)(iVar2 + 0x30);" (assignment_expression "iVar15 = *(int *)(iVar2 + 0x30)" (identifier "iVar15") (= "=") (pointer_expression "*(int *)(iVar2 + 0x30)" (* "*") (cast_expression "(int *)(iVar2 + 0x30)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0x30)" (( "(") (binary_expression "iVar2 + 0x30" (identifier "iVar2") (+ "+") (number_literal "0x30")) () ")"))))) (; ";")) (expression_statement "local_c4 = (void *)0x0;" (assignment_expression "local_c4 = (void *)0x0" (identifier "local_c4") (= "=") (cast_expression "(void *)0x0" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "local_d4 = 0;" (assignment_expression "local_d4 = 0" (identifier "local_d4") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_b8 = (void *)0x0;" (assignment_expression "local_b8 = (void *)0x0" (identifier "local_b8") (= "=") (cast_expression "(void *)0x0" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (labeled_statement "LAB_000252fb:\n    do {\n      do {\n        pDVar16 = *(DIR **)(iVar2 + 0xc);\n        if (pDVar16 == (DIR *)0x0) goto LAB_000256de;\n        piVar9 = __errno_location();\n        *piVar9 = 0;\n        pdVar10 = readdir64(pDVar16);\n        if (pdVar10 == (dirent64 *)0x0) {\n          if (*piVar9 != 0) {\n            *(int *)(iVar2 + 0x20) = *piVar9;\n            *(ushort *)(iVar2 + 0x3c) =\n                 (-(ushort)(pDVar21 == (DIR *)0x0 && local_d4 == 0) & 0xfffd) + 7;\n          }\n          if (*(DIR **)(iVar2 + 0xc) != (DIR *)0x0) {\n            closedir(*(DIR **)(iVar2 + 0xc));\n            *(undefined4 *)(iVar2 + 0xc) = 0;\n          }\n          goto LAB_000256de;\n        }\n      } while ((((*(byte *)(param_1 + 0xb) & 0x20) == 0) && (pdVar10->d_name[0] == '.')) &&\n              ((pdVar10->d_name[1] == '\0' || (*(short *)(pdVar10->d_name + 1) == 0x2e))));\n      __n = strlen(pdVar10->d_name);\n      pvVar11 = malloc(__n + 0xa8 & 0xfffffffc);\n      if (pvVar11 == (void *)0x0) {\n        iVar15 = *piVar9;\nLAB_000255a6:\n        free(pvVar11);\n        if (local_b8 != (void *)0x0) {\n          pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n          pvVar11 = *(void **)((int)local_b8 + 8);\n          if (pDVar21 == (DIR *)0x0) goto LAB_000255f4;\n          do {\n            closedir(pDVar21);\n            free(local_b8);\n            local_b8 = pvVar11;\n            while( true ) {\n              if (local_b8 == (void *)0x0) goto LAB_00025608;\n              pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n              pvVar11 = *(void **)((int)local_b8 + 8);\n              if (pDVar21 != (DIR *)0x0) break;\nLAB_000255f4:\n              free(local_b8);\n              local_b8 = pvVar11;\n            }\n          } while( true );\n        }\nLAB_00025608:\n        closedir(*(DIR **)(iVar2 + 0xc));\n        *(undefined4 *)(iVar2 + 0xc) = 0;\n        *(undefined2 *)(iVar2 + 0x3c) = 7;\n        local_b8 = (void *)0x0;\n        param_1[0xb] = param_1[0xb] | 0x4000;\n        *piVar9 = iVar15;\n        goto LAB_0002563f;\n      }\n      pvVar1 = (void *)((int)pvVar11 + 0xa4);\n      memcpy(pvVar1,pdVar10->d_name,__n);\n      __ptr = (void *)param_1[5];\n      *(undefined1 *)((int)pvVar11 + __n + 0xa4) = 0;\n      *(size_t *)((int)pvVar11 + 0x34) = __n;\n      *(int **)((int)pvVar11 + 0x2c) = param_1;\n      *(void **)((int)pvVar11 + 0x1c) = __ptr;\n      *(undefined4 *)((int)pvVar11 + 0x20) = 0;\n      *(undefined4 *)((int)pvVar11 + 0xc) = 0;\n      *(undefined4 *)((int)pvVar11 + 0x3e) = 0x30000;\n      *(undefined4 *)((int)pvVar11 + 0x10) = 0;\n      *(undefined4 *)((int)pvVar11 + 0x14) = 0;\n      if (local_b0 <= __n) {\n        uVar13 = local_d0 + 0x101 + param_1[8] + __n;\n        if (uVar13 < (uint)param_1[8]) {\n          iVar15 = 0x24;\n          free(__ptr);\n          param_1[5] = 0;\n          *piVar9 = 0x24;\n        }\n        else {\n          param_1[8] = uVar13;\n          pvVar14 = realloc(__ptr,uVar13);\n          if (pvVar14 != (void *)0x0) {\n            param_1[5] = (int)pvVar14;\n            if ((__ptr != pvVar14) && (bVar3 = true, (*(byte *)(param_1 + 0xb) & 4) != 0)) {\n              local_a4 = (undefined1 *)((int)pvVar14 + local_d0);\n            }\n            local_b0 = param_1[8] - local_d0;\n            goto LAB_000253d8;\n          }\n          free((void *)param_1[5]);\n          param_1[5] = 0;\n          iVar15 = *piVar9;\n        }\n        goto LAB_000255a6;\n      }\nLAB_000253d8:\n      if (CARRY4(__n,local_d0)) {\n        free(pvVar11);\n        if (local_b8 != (void *)0x0) {\n          pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n          pvVar11 = *(void **)((int)local_b8 + 8);\n          if (pDVar21 == (DIR *)0x0) goto LAB_00025e84;\n          do {\n            closedir(pDVar21);\n            free(local_b8);\n            local_b8 = pvVar11;\n            while( true ) {\n              if (local_b8 == (void *)0x0) goto LAB_00025e94;\n              pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n              pvVar11 = *(void **)((int)local_b8 + 8);\n              if (pDVar21 != (DIR *)0x0) break;\nLAB_00025e84:\n              free(local_b8);\n              local_b8 = pvVar11;\n            }\n          } while( true );\n        }\nLAB_00025e94:\n        closedir(*(DIR **)(iVar2 + 0xc));\n        *(undefined4 *)(iVar2 + 0xc) = 0;\n        *(undefined2 *)(iVar2 + 0x3c) = 7;\n        local_b8 = (void *)0x0;\n        param_1[0xb] = param_1[0xb] | 0x4000;\n        *piVar9 = 0x24;\n        goto LAB_0002563f;\n      }\n      uVar12 = *(undefined4 *)((int)&pdVar10->d_ino + 4);\n      *(size_t *)((int)pvVar11 + 0x28) = __n + local_d0;\n      *(int *)((int)pvVar11 + 0x30) = iVar15 + 1;\n      *(int *)((int)pvVar11 + 4) = *param_1;\n      _Var5 = pdVar10->d_ino;\n      *(undefined4 *)((int)pvVar11 + 0xa0) = uVar12;\n      *(int *)((int)pvVar11 + 0x9c) = (int)_Var5;\n      uVar13 = param_1[0xb];\n      if ((uVar13 & 4) == 0) {\n        *(void **)((int)pvVar11 + 0x18) = pvVar1;\n      }\n      else {\n        *(undefined4 *)((int)pvVar11 + 0x18) = *(undefined4 *)((int)pvVar11 + 0x1c);\n        memmove(local_a4,pvVar1,*(int *)((int)pvVar11 + 0x34) + 1);\n        uVar13 = param_1[0xb];\n      }\n      if ((param_1[10] == 0) || ((uVar13 & 0x400) != 0)) {\n        uVar23 = pdVar10->d_type - 1;\n        if (((uVar13 & 0x18) == 0x18) && ((pdVar10->d_type & 0xfb) != 0)) {\n          *(undefined2 *)((int)pvVar11 + 0x3c) = 0xb;\n          if (uVar23 < 0xc) {\n            *(undefined4 *)((int)pvVar11 + 0x54) = *(undefined4 *)(&DAT_00031560 + uVar23 * 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 (uVar23 < 0xc) {\n            *(undefined4 *)((int)pvVar11 + 0x54) = *(undefined4 *)(&DAT_00031560 + uVar23 * 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        uVar8 = FUN_00024740();\n        *(undefined2 *)((int)pvVar11 + 0x3c) = uVar8;\n      }\n      *(undefined4 *)((int)pvVar11 + 8) = 0;\n      pvVar1 = pvVar11;\n      if (local_b8 != (void *)0x0) {\n        *(void **)((int)local_c4 + 8) = pvVar11;\n        pvVar1 = local_b8;\n      }\n      local_b8 = pvVar1;\n      local_c4 = pvVar11;\n      if (local_d4 == 10000) {\n        if (param_1[10] == 0) {\n          iVar17 = *(int *)(iVar2 + 0x2c);\n          if ((*(byte *)(iVar17 + 0x2d) & 2) != 0) {\n            iVar18 = *(int *)(iVar17 + 0x30);\n            if (iVar18 == 0) {\n              iVar18 = FUN_0001df90(0xd,0,FUN_000246b0,FUN_000246e0,puVar6);\n              *(int *)(iVar17 + 0x30) = iVar18;\n              if (iVar18 != 0) goto LAB_00025920;\nLAB_000259b0:\n              if ((local_9c < 0) ||\n                 (iVar19 = fstatfs64(local_9c,&local_74), iVar17 = local_74.f_type, iVar19 != 0))\n              goto LAB_00025a48;\n              local_d4 = local_74.f_type;\n              if ((iVar18 != 0) &&\n                 (__ptr_00 = (undefined4 *)malloc(0xc), __ptr_00 != (undefined4 *)0x0)) {\n                uVar12 = *(undefined4 *)(iVar2 + 0x44);\n                __ptr_00[1] = *(undefined4 *)(iVar2 + 0x48);\n                *__ptr_00 = uVar12;\n                __ptr_00[2] = iVar17;\n                puVar20 = (undefined4 *)FUN_0001e8d0(iVar18,__ptr_00);\n                if (puVar20 == (undefined4 *)0x0) {\n                  free(__ptr_00);\n                  local_d4 = local_74.f_type;\n                }\n                else {\n                  if (__ptr_00 != puVar20) {\n                    \n                    abort();\n                  }\n                  local_d4 = local_74.f_type;\n                }\n              }\n            }\n            else {\nLAB_00025920:\n              local_7c = *(undefined4 *)(iVar2 + 0x48);\n              local_80 = *(undefined4 *)(iVar2 + 0x44);\n              iVar17 = FUN_0001dce0(iVar18,&local_80);\n              if (iVar17 == 0) goto LAB_000259b0;\n              local_d4 = *(int *)(iVar17 + 8);\n            }\n            if (((local_d4 == 0x6969) || (local_d4 == 0x1021994)) || (local_d4 == -0xacb2be)) {\n              bVar4 = false;\n              goto LAB_00025473;\n            }\n          }\nLAB_00025a48:\n          bVar4 = true;\n        }\nLAB_00025473:\n        local_d4 = 0x2711;\n        goto LAB_000252fb;\n      }\n      local_d4 = local_d4 + 1;\n    } while (local_d4 < local_a8);" (statement_identifier "LAB_000252fb") (: ":") (do_statement "do {\n      do {\n        pDVar16 = *(DIR **)(iVar2 + 0xc);\n        if (pDVar16 == (DIR *)0x0) goto LAB_000256de;\n        piVar9 = __errno_location();\n        *piVar9 = 0;\n        pdVar10 = readdir64(pDVar16);\n        if (pdVar10 == (dirent64 *)0x0) {\n          if (*piVar9 != 0) {\n            *(int *)(iVar2 + 0x20) = *piVar9;\n            *(ushort *)(iVar2 + 0x3c) =\n                 (-(ushort)(pDVar21 == (DIR *)0x0 && local_d4 == 0) & 0xfffd) + 7;\n          }\n          if (*(DIR **)(iVar2 + 0xc) != (DIR *)0x0) {\n            closedir(*(DIR **)(iVar2 + 0xc));\n            *(undefined4 *)(iVar2 + 0xc) = 0;\n          }\n          goto LAB_000256de;\n        }\n      } while ((((*(byte *)(param_1 + 0xb) & 0x20) == 0) && (pdVar10->d_name[0] == '.')) &&\n              ((pdVar10->d_name[1] == '\0' || (*(short *)(pdVar10->d_name + 1) == 0x2e))));\n      __n = strlen(pdVar10->d_name);\n      pvVar11 = malloc(__n + 0xa8 & 0xfffffffc);\n      if (pvVar11 == (void *)0x0) {\n        iVar15 = *piVar9;\nLAB_000255a6:\n        free(pvVar11);\n        if (local_b8 != (void *)0x0) {\n          pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n          pvVar11 = *(void **)((int)local_b8 + 8);\n          if (pDVar21 == (DIR *)0x0) goto LAB_000255f4;\n          do {\n            closedir(pDVar21);\n            free(local_b8);\n            local_b8 = pvVar11;\n            while( true ) {\n              if (local_b8 == (void *)0x0) goto LAB_00025608;\n              pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n              pvVar11 = *(void **)((int)local_b8 + 8);\n              if (pDVar21 != (DIR *)0x0) break;\nLAB_000255f4:\n              free(local_b8);\n              local_b8 = pvVar11;\n            }\n          } while( true );\n        }\nLAB_00025608:\n        closedir(*(DIR **)(iVar2 + 0xc));\n        *(undefined4 *)(iVar2 + 0xc) = 0;\n        *(undefined2 *)(iVar2 + 0x3c) = 7;\n        local_b8 = (void *)0x0;\n        param_1[0xb] = param_1[0xb] | 0x4000;\n        *piVar9 = iVar15;\n        goto LAB_0002563f;\n      }\n      pvVar1 = (void *)((int)pvVar11 + 0xa4);\n      memcpy(pvVar1,pdVar10->d_name,__n);\n      __ptr = (void *)param_1[5];\n      *(undefined1 *)((int)pvVar11 + __n + 0xa4) = 0;\n      *(size_t *)((int)pvVar11 + 0x34) = __n;\n      *(int **)((int)pvVar11 + 0x2c) = param_1;\n      *(void **)((int)pvVar11 + 0x1c) = __ptr;\n      *(undefined4 *)((int)pvVar11 + 0x20) = 0;\n      *(undefined4 *)((int)pvVar11 + 0xc) = 0;\n      *(undefined4 *)((int)pvVar11 + 0x3e) = 0x30000;\n      *(undefined4 *)((int)pvVar11 + 0x10) = 0;\n      *(undefined4 *)((int)pvVar11 + 0x14) = 0;\n      if (local_b0 <= __n) {\n        uVar13 = local_d0 + 0x101 + param_1[8] + __n;\n        if (uVar13 < (uint)param_1[8]) {\n          iVar15 = 0x24;\n          free(__ptr);\n          param_1[5] = 0;\n          *piVar9 = 0x24;\n        }\n        else {\n          param_1[8] = uVar13;\n          pvVar14 = realloc(__ptr,uVar13);\n          if (pvVar14 != (void *)0x0) {\n            param_1[5] = (int)pvVar14;\n            if ((__ptr != pvVar14) && (bVar3 = true, (*(byte *)(param_1 + 0xb) & 4) != 0)) {\n              local_a4 = (undefined1 *)((int)pvVar14 + local_d0);\n            }\n            local_b0 = param_1[8] - local_d0;\n            goto LAB_000253d8;\n          }\n          free((void *)param_1[5]);\n          param_1[5] = 0;\n          iVar15 = *piVar9;\n        }\n        goto LAB_000255a6;\n      }\nLAB_000253d8:\n      if (CARRY4(__n,local_d0)) {\n        free(pvVar11);\n        if (local_b8 != (void *)0x0) {\n          pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n          pvVar11 = *(void **)((int)local_b8 + 8);\n          if (pDVar21 == (DIR *)0x0) goto LAB_00025e84;\n          do {\n            closedir(pDVar21);\n            free(local_b8);\n            local_b8 = pvVar11;\n            while( true ) {\n              if (local_b8 == (void *)0x0) goto LAB_00025e94;\n              pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n              pvVar11 = *(void **)((int)local_b8 + 8);\n              if (pDVar21 != (DIR *)0x0) break;\nLAB_00025e84:\n              free(local_b8);\n              local_b8 = pvVar11;\n            }\n          } while( true );\n        }\nLAB_00025e94:\n        closedir(*(DIR **)(iVar2 + 0xc));\n        *(undefined4 *)(iVar2 + 0xc) = 0;\n        *(undefined2 *)(iVar2 + 0x3c) = 7;\n        local_b8 = (void *)0x0;\n        param_1[0xb] = param_1[0xb] | 0x4000;\n        *piVar9 = 0x24;\n        goto LAB_0002563f;\n      }\n      uVar12 = *(undefined4 *)((int)&pdVar10->d_ino + 4);\n      *(size_t *)((int)pvVar11 + 0x28) = __n + local_d0;\n      *(int *)((int)pvVar11 + 0x30) = iVar15 + 1;\n      *(int *)((int)pvVar11 + 4) = *param_1;\n      _Var5 = pdVar10->d_ino;\n      *(undefined4 *)((int)pvVar11 + 0xa0) = uVar12;\n      *(int *)((int)pvVar11 + 0x9c) = (int)_Var5;\n      uVar13 = param_1[0xb];\n      if ((uVar13 & 4) == 0) {\n        *(void **)((int)pvVar11 + 0x18) = pvVar1;\n      }\n      else {\n        *(undefined4 *)((int)pvVar11 + 0x18) = *(undefined4 *)((int)pvVar11 + 0x1c);\n        memmove(local_a4,pvVar1,*(int *)((int)pvVar11 + 0x34) + 1);\n        uVar13 = param_1[0xb];\n      }\n      if ((param_1[10] == 0) || ((uVar13 & 0x400) != 0)) {\n        uVar23 = pdVar10->d_type - 1;\n        if (((uVar13 & 0x18) == 0x18) && ((pdVar10->d_type & 0xfb) != 0)) {\n          *(undefined2 *)((int)pvVar11 + 0x3c) = 0xb;\n          if (uVar23 < 0xc) {\n            *(undefined4 *)((int)pvVar11 + 0x54) = *(undefined4 *)(&DAT_00031560 + uVar23 * 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 (uVar23 < 0xc) {\n            *(undefined4 *)((int)pvVar11 + 0x54) = *(undefined4 *)(&DAT_00031560 + uVar23 * 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        uVar8 = FUN_00024740();\n        *(undefined2 *)((int)pvVar11 + 0x3c) = uVar8;\n      }\n      *(undefined4 *)((int)pvVar11 + 8) = 0;\n      pvVar1 = pvVar11;\n      if (local_b8 != (void *)0x0) {\n        *(void **)((int)local_c4 + 8) = pvVar11;\n        pvVar1 = local_b8;\n      }\n      local_b8 = pvVar1;\n      local_c4 = pvVar11;\n      if (local_d4 == 10000) {\n        if (param_1[10] == 0) {\n          iVar17 = *(int *)(iVar2 + 0x2c);\n          if ((*(byte *)(iVar17 + 0x2d) & 2) != 0) {\n            iVar18 = *(int *)(iVar17 + 0x30);\n            if (iVar18 == 0) {\n              iVar18 = FUN_0001df90(0xd,0,FUN_000246b0,FUN_000246e0,puVar6);\n              *(int *)(iVar17 + 0x30) = iVar18;\n              if (iVar18 != 0) goto LAB_00025920;\nLAB_000259b0:\n              if ((local_9c < 0) ||\n                 (iVar19 = fstatfs64(local_9c,&local_74), iVar17 = local_74.f_type, iVar19 != 0))\n              goto LAB_00025a48;\n              local_d4 = local_74.f_type;\n              if ((iVar18 != 0) &&\n                 (__ptr_00 = (undefined4 *)malloc(0xc), __ptr_00 != (undefined4 *)0x0)) {\n                uVar12 = *(undefined4 *)(iVar2 + 0x44);\n                __ptr_00[1] = *(undefined4 *)(iVar2 + 0x48);\n                *__ptr_00 = uVar12;\n                __ptr_00[2] = iVar17;\n                puVar20 = (undefined4 *)FUN_0001e8d0(iVar18,__ptr_00);\n                if (puVar20 == (undefined4 *)0x0) {\n                  free(__ptr_00);\n                  local_d4 = local_74.f_type;\n                }\n                else {\n                  if (__ptr_00 != puVar20) {\n                    \n                    abort();\n                  }\n                  local_d4 = local_74.f_type;\n                }\n              }\n            }\n            else {\nLAB_00025920:\n              local_7c = *(undefined4 *)(iVar2 + 0x48);\n              local_80 = *(undefined4 *)(iVar2 + 0x44);\n              iVar17 = FUN_0001dce0(iVar18,&local_80);\n              if (iVar17 == 0) goto LAB_000259b0;\n              local_d4 = *(int *)(iVar17 + 8);\n            }\n            if (((local_d4 == 0x6969) || (local_d4 == 0x1021994)) || (local_d4 == -0xacb2be)) {\n              bVar4 = false;\n              goto LAB_00025473;\n            }\n          }\nLAB_00025a48:\n          bVar4 = true;\n        }\nLAB_00025473:\n        local_d4 = 0x2711;\n        goto LAB_000252fb;\n      }\n      local_d4 = local_d4 + 1;\n    } while (local_d4 < local_a8);" (do "do") (compound_statement "{\n      do {\n        pDVar16 = *(DIR **)(iVar2 + 0xc);\n        if (pDVar16 == (DIR *)0x0) goto LAB_000256de;\n        piVar9 = __errno_location();\n        *piVar9 = 0;\n        pdVar10 = readdir64(pDVar16);\n        if (pdVar10 == (dirent64 *)0x0) {\n          if (*piVar9 != 0) {\n            *(int *)(iVar2 + 0x20) = *piVar9;\n            *(ushort *)(iVar2 + 0x3c) =\n                 (-(ushort)(pDVar21 == (DIR *)0x0 && local_d4 == 0) & 0xfffd) + 7;\n          }\n          if (*(DIR **)(iVar2 + 0xc) != (DIR *)0x0) {\n            closedir(*(DIR **)(iVar2 + 0xc));\n            *(undefined4 *)(iVar2 + 0xc) = 0;\n          }\n          goto LAB_000256de;\n        }\n      } while ((((*(byte *)(param_1 + 0xb) & 0x20) == 0) && (pdVar10->d_name[0] == '.')) &&\n              ((pdVar10->d_name[1] == '\0' || (*(short *)(pdVar10->d_name + 1) == 0x2e))));\n      __n = strlen(pdVar10->d_name);\n      pvVar11 = malloc(__n + 0xa8 & 0xfffffffc);\n      if (pvVar11 == (void *)0x0) {\n        iVar15 = *piVar9;\nLAB_000255a6:\n        free(pvVar11);\n        if (local_b8 != (void *)0x0) {\n          pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n          pvVar11 = *(void **)((int)local_b8 + 8);\n          if (pDVar21 == (DIR *)0x0) goto LAB_000255f4;\n          do {\n            closedir(pDVar21);\n            free(local_b8);\n            local_b8 = pvVar11;\n            while( true ) {\n              if (local_b8 == (void *)0x0) goto LAB_00025608;\n              pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n              pvVar11 = *(void **)((int)local_b8 + 8);\n              if (pDVar21 != (DIR *)0x0) break;\nLAB_000255f4:\n              free(local_b8);\n              local_b8 = pvVar11;\n            }\n          } while( true );\n        }\nLAB_00025608:\n        closedir(*(DIR **)(iVar2 + 0xc));\n        *(undefined4 *)(iVar2 + 0xc) = 0;\n        *(undefined2 *)(iVar2 + 0x3c) = 7;\n        local_b8 = (void *)0x0;\n        param_1[0xb] = param_1[0xb] | 0x4000;\n        *piVar9 = iVar15;\n        goto LAB_0002563f;\n      }\n      pvVar1 = (void *)((int)pvVar11 + 0xa4);\n      memcpy(pvVar1,pdVar10->d_name,__n);\n      __ptr = (void *)param_1[5];\n      *(undefined1 *)((int)pvVar11 + __n + 0xa4) = 0;\n      *(size_t *)((int)pvVar11 + 0x34) = __n;\n      *(int **)((int)pvVar11 + 0x2c) = param_1;\n      *(void **)((int)pvVar11 + 0x1c) = __ptr;\n      *(undefined4 *)((int)pvVar11 + 0x20) = 0;\n      *(undefined4 *)((int)pvVar11 + 0xc) = 0;\n      *(undefined4 *)((int)pvVar11 + 0x3e) = 0x30000;\n      *(undefined4 *)((int)pvVar11 + 0x10) = 0;\n      *(undefined4 *)((int)pvVar11 + 0x14) = 0;\n      if (local_b0 <= __n) {\n        uVar13 = local_d0 + 0x101 + param_1[8] + __n;\n        if (uVar13 < (uint)param_1[8]) {\n          iVar15 = 0x24;\n          free(__ptr);\n          param_1[5] = 0;\n          *piVar9 = 0x24;\n        }\n        else {\n          param_1[8] = uVar13;\n          pvVar14 = realloc(__ptr,uVar13);\n          if (pvVar14 != (void *)0x0) {\n            param_1[5] = (int)pvVar14;\n            if ((__ptr != pvVar14) && (bVar3 = true, (*(byte *)(param_1 + 0xb) & 4) != 0)) {\n              local_a4 = (undefined1 *)((int)pvVar14 + local_d0);\n            }\n            local_b0 = param_1[8] - local_d0;\n            goto LAB_000253d8;\n          }\n          free((void *)param_1[5]);\n          param_1[5] = 0;\n          iVar15 = *piVar9;\n        }\n        goto LAB_000255a6;\n      }\nLAB_000253d8:\n      if (CARRY4(__n,local_d0)) {\n        free(pvVar11);\n        if (local_b8 != (void *)0x0) {\n          pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n          pvVar11 = *(void **)((int)local_b8 + 8);\n          if (pDVar21 == (DIR *)0x0) goto LAB_00025e84;\n          do {\n            closedir(pDVar21);\n            free(local_b8);\n            local_b8 = pvVar11;\n            while( true ) {\n              if (local_b8 == (void *)0x0) goto LAB_00025e94;\n              pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n              pvVar11 = *(void **)((int)local_b8 + 8);\n              if (pDVar21 != (DIR *)0x0) break;\nLAB_00025e84:\n              free(local_b8);\n              local_b8 = pvVar11;\n            }\n          } while( true );\n        }\nLAB_00025e94:\n        closedir(*(DIR **)(iVar2 + 0xc));\n        *(undefined4 *)(iVar2 + 0xc) = 0;\n        *(undefined2 *)(iVar2 + 0x3c) = 7;\n        local_b8 = (void *)0x0;\n        param_1[0xb] = param_1[0xb] | 0x4000;\n        *piVar9 = 0x24;\n        goto LAB_0002563f;\n      }\n      uVar12 = *(undefined4 *)((int)&pdVar10->d_ino + 4);\n      *(size_t *)((int)pvVar11 + 0x28) = __n + local_d0;\n      *(int *)((int)pvVar11 + 0x30) = iVar15 + 1;\n      *(int *)((int)pvVar11 + 4) = *param_1;\n      _Var5 = pdVar10->d_ino;\n      *(undefined4 *)((int)pvVar11 + 0xa0) = uVar12;\n      *(int *)((int)pvVar11 + 0x9c) = (int)_Var5;\n      uVar13 = param_1[0xb];\n      if ((uVar13 & 4) == 0) {\n        *(void **)((int)pvVar11 + 0x18) = pvVar1;\n      }\n      else {\n        *(undefined4 *)((int)pvVar11 + 0x18) = *(undefined4 *)((int)pvVar11 + 0x1c);\n        memmove(local_a4,pvVar1,*(int *)((int)pvVar11 + 0x34) + 1);\n        uVar13 = param_1[0xb];\n      }\n      if ((param_1[10] == 0) || ((uVar13 & 0x400) != 0)) {\n        uVar23 = pdVar10->d_type - 1;\n        if (((uVar13 & 0x18) == 0x18) && ((pdVar10->d_type & 0xfb) != 0)) {\n          *(undefined2 *)((int)pvVar11 + 0x3c) = 0xb;\n          if (uVar23 < 0xc) {\n            *(undefined4 *)((int)pvVar11 + 0x54) = *(undefined4 *)(&DAT_00031560 + uVar23 * 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 (uVar23 < 0xc) {\n            *(undefined4 *)((int)pvVar11 + 0x54) = *(undefined4 *)(&DAT_00031560 + uVar23 * 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        uVar8 = FUN_00024740();\n        *(undefined2 *)((int)pvVar11 + 0x3c) = uVar8;\n      }\n      *(undefined4 *)((int)pvVar11 + 8) = 0;\n      pvVar1 = pvVar11;\n      if (local_b8 != (void *)0x0) {\n        *(void **)((int)local_c4 + 8) = pvVar11;\n        pvVar1 = local_b8;\n      }\n      local_b8 = pvVar1;\n      local_c4 = pvVar11;\n      if (local_d4 == 10000) {\n        if (param_1[10] == 0) {\n          iVar17 = *(int *)(iVar2 + 0x2c);\n          if ((*(byte *)(iVar17 + 0x2d) & 2) != 0) {\n            iVar18 = *(int *)(iVar17 + 0x30);\n            if (iVar18 == 0) {\n              iVar18 = FUN_0001df90(0xd,0,FUN_000246b0,FUN_000246e0,puVar6);\n              *(int *)(iVar17 + 0x30) = iVar18;\n              if (iVar18 != 0) goto LAB_00025920;\nLAB_000259b0:\n              if ((local_9c < 0) ||\n                 (iVar19 = fstatfs64(local_9c,&local_74), iVar17 = local_74.f_type, iVar19 != 0))\n              goto LAB_00025a48;\n              local_d4 = local_74.f_type;\n              if ((iVar18 != 0) &&\n                 (__ptr_00 = (undefined4 *)malloc(0xc), __ptr_00 != (undefined4 *)0x0)) {\n                uVar12 = *(undefined4 *)(iVar2 + 0x44);\n                __ptr_00[1] = *(undefined4 *)(iVar2 + 0x48);\n                *__ptr_00 = uVar12;\n                __ptr_00[2] = iVar17;\n                puVar20 = (undefined4 *)FUN_0001e8d0(iVar18,__ptr_00);\n                if (puVar20 == (undefined4 *)0x0) {\n                  free(__ptr_00);\n                  local_d4 = local_74.f_type;\n                }\n                else {\n                  if (__ptr_00 != puVar20) {\n                    \n                    abort();\n                  }\n                  local_d4 = local_74.f_type;\n                }\n              }\n            }\n            else {\nLAB_00025920:\n              local_7c = *(undefined4 *)(iVar2 + 0x48);\n              local_80 = *(undefined4 *)(iVar2 + 0x44);\n              iVar17 = FUN_0001dce0(iVar18,&local_80);\n              if (iVar17 == 0) goto LAB_000259b0;\n              local_d4 = *(int *)(iVar17 + 8);\n            }\n            if (((local_d4 == 0x6969) || (local_d4 == 0x1021994)) || (local_d4 == -0xacb2be)) {\n              bVar4 = false;\n              goto LAB_00025473;\n            }\n          }\nLAB_00025a48:\n          bVar4 = true;\n        }\nLAB_00025473:\n        local_d4 = 0x2711;\n        goto LAB_000252fb;\n      }\n      local_d4 = local_d4 + 1;\n    }" ({ "{") (do_statement "do {\n        pDVar16 = *(DIR **)(iVar2 + 0xc);\n        if (pDVar16 == (DIR *)0x0) goto LAB_000256de;\n        piVar9 = __errno_location();\n        *piVar9 = 0;\n        pdVar10 = readdir64(pDVar16);\n        if (pdVar10 == (dirent64 *)0x0) {\n          if (*piVar9 != 0) {\n            *(int *)(iVar2 + 0x20) = *piVar9;\n            *(ushort *)(iVar2 + 0x3c) =\n                 (-(ushort)(pDVar21 == (DIR *)0x0 && local_d4 == 0) & 0xfffd) + 7;\n          }\n          if (*(DIR **)(iVar2 + 0xc) != (DIR *)0x0) {\n            closedir(*(DIR **)(iVar2 + 0xc));\n            *(undefined4 *)(iVar2 + 0xc) = 0;\n          }\n          goto LAB_000256de;\n        }\n      } while ((((*(byte *)(param_1 + 0xb) & 0x20) == 0) && (pdVar10->d_name[0] == '.')) &&\n              ((pdVar10->d_name[1] == '\0' || (*(short *)(pdVar10->d_name + 1) == 0x2e))));" (do "do") (compound_statement "{\n        pDVar16 = *(DIR **)(iVar2 + 0xc);\n        if (pDVar16 == (DIR *)0x0) goto LAB_000256de;\n        piVar9 = __errno_location();\n        *piVar9 = 0;\n        pdVar10 = readdir64(pDVar16);\n        if (pdVar10 == (dirent64 *)0x0) {\n          if (*piVar9 != 0) {\n            *(int *)(iVar2 + 0x20) = *piVar9;\n            *(ushort *)(iVar2 + 0x3c) =\n                 (-(ushort)(pDVar21 == (DIR *)0x0 && local_d4 == 0) & 0xfffd) + 7;\n          }\n          if (*(DIR **)(iVar2 + 0xc) != (DIR *)0x0) {\n            closedir(*(DIR **)(iVar2 + 0xc));\n            *(undefined4 *)(iVar2 + 0xc) = 0;\n          }\n          goto LAB_000256de;\n        }\n      }" ({ "{") (expression_statement "pDVar16 = *(DIR **)(iVar2 + 0xc);" (assignment_expression "pDVar16 = *(DIR **)(iVar2 + 0xc)" (identifier "pDVar16") (= "=") (pointer_expression "*(DIR **)(iVar2 + 0xc)" (* "*") (cast_expression "(DIR **)(iVar2 + 0xc)" (( "(") (type_descriptor "DIR **" (type_identifier "DIR") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar2 + 0xc)" (( "(") (binary_expression "iVar2 + 0xc" (identifier "iVar2") (+ "+") (number_literal "0xc")) () ")"))))) (; ";")) (if_statement "if (pDVar16 == (DIR *)0x0) goto LAB_000256de;" (if "if") (parenthesized_expression "(pDVar16 == (DIR *)0x0)" (( "(") (binary_expression "pDVar16 == (DIR *)0x0" (identifier "pDVar16") (== "==") (cast_expression "(DIR *)0x0" (( "(") (type_descriptor "DIR *" (type_identifier "DIR") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (goto_statement "goto LAB_000256de;" (goto "goto") (statement_identifier "LAB_000256de") (; ";"))) (expression_statement "piVar9 = __errno_location();" (assignment_expression "piVar9 = __errno_location()" (identifier "piVar9") (= "=") (call_expression "__errno_location()" (identifier "__errno_location") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "*piVar9 = 0;" (assignment_expression "*piVar9 = 0" (pointer_expression "*piVar9" (* "*") (identifier "piVar9")) (= "=") (number_literal "0")) (; ";")) (expression_statement "pdVar10 = readdir64(pDVar16);" (assignment_expression "pdVar10 = readdir64(pDVar16)" (identifier "pdVar10") (= "=") (call_expression "readdir64(pDVar16)" (identifier "readdir64") (argument_list "(pDVar16)" (( "(") (identifier "pDVar16") () ")")))) (; ";")) (if_statement "if (pdVar10 == (dirent64 *)0x0) {\n          if (*piVar9 != 0) {\n            *(int *)(iVar2 + 0x20) = *piVar9;\n            *(ushort *)(iVar2 + 0x3c) =\n                 (-(ushort)(pDVar21 == (DIR *)0x0 && local_d4 == 0) & 0xfffd) + 7;\n          }\n          if (*(DIR **)(iVar2 + 0xc) != (DIR *)0x0) {\n            closedir(*(DIR **)(iVar2 + 0xc));\n            *(undefined4 *)(iVar2 + 0xc) = 0;\n          }\n          goto LAB_000256de;\n        }" (if "if") (parenthesized_expression "(pdVar10 == (dirent64 *)0x0)" (( "(") (binary_expression "pdVar10 == (dirent64 *)0x0" (identifier "pdVar10") (== "==") (cast_expression "(dirent64 *)0x0" (( "(") (type_descriptor "dirent64 *" (type_identifier "dirent64") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n          if (*piVar9 != 0) {\n            *(int *)(iVar2 + 0x20) = *piVar9;\n            *(ushort *)(iVar2 + 0x3c) =\n                 (-(ushort)(pDVar21 == (DIR *)0x0 && local_d4 == 0) & 0xfffd) + 7;\n          }\n          if (*(DIR **)(iVar2 + 0xc) != (DIR *)0x0) {\n            closedir(*(DIR **)(iVar2 + 0xc));\n            *(undefined4 *)(iVar2 + 0xc) = 0;\n          }\n          goto LAB_000256de;\n        }" ({ "{") (if_statement "if (*piVar9 != 0) {\n            *(int *)(iVar2 + 0x20) = *piVar9;\n            *(ushort *)(iVar2 + 0x3c) =\n                 (-(ushort)(pDVar21 == (DIR *)0x0 && local_d4 == 0) & 0xfffd) + 7;\n          }" (if "if") (parenthesized_expression "(*piVar9 != 0)" (( "(") (binary_expression "*piVar9 != 0" (pointer_expression "*piVar9" (* "*") (identifier "piVar9")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n            *(int *)(iVar2 + 0x20) = *piVar9;\n            *(ushort *)(iVar2 + 0x3c) =\n                 (-(ushort)(pDVar21 == (DIR *)0x0 && local_d4 == 0) & 0xfffd) + 7;\n          }" ({ "{") (expression_statement "*(int *)(iVar2 + 0x20) = *piVar9;" (assignment_expression "*(int *)(iVar2 + 0x20) = *piVar9" (pointer_expression "*(int *)(iVar2 + 0x20)" (* "*") (cast_expression "(int *)(iVar2 + 0x20)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0x20)" (( "(") (binary_expression "iVar2 + 0x20" (identifier "iVar2") (+ "+") (number_literal "0x20")) () ")")))) (= "=") (pointer_expression "*piVar9" (* "*") (identifier "piVar9"))) (; ";")) (expression_statement "*(ushort *)(iVar2 + 0x3c) =\n                 (-(ushort)(pDVar21 == (DIR *)0x0 && local_d4 == 0) & 0xfffd) + 7;" (assignment_expression "*(ushort *)(iVar2 + 0x3c) =\n                 (-(ushort)(pDVar21 == (DIR *)0x0 && local_d4 == 0) & 0xfffd) + 7" (pointer_expression "*(ushort *)(iVar2 + 0x3c)" (* "*") (cast_expression "(ushort *)(iVar2 + 0x3c)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0x3c)" (( "(") (binary_expression "iVar2 + 0x3c" (identifier "iVar2") (+ "+") (number_literal "0x3c")) () ")")))) (= "=") (binary_expression "(-(ushort)(pDVar21 == (DIR *)0x0 && local_d4 == 0) & 0xfffd) + 7" (parenthesized_expression "(-(ushort)(pDVar21 == (DIR *)0x0 && local_d4 == 0) & 0xfffd)" (( "(") (binary_expression "-(ushort)(pDVar21 == (DIR *)0x0 && local_d4 == 0) & 0xfffd" (unary_expression "-(ushort)(pDVar21 == (DIR *)0x0 && local_d4 == 0)" (- "-") (call_expression "(ushort)(pDVar21 == (DIR *)0x0 && local_d4 == 0)" (parenthesized_expression "(ushort)" (( "(") (identifier "ushort") () ")")) (argument_list "(pDVar21 == (DIR *)0x0 && local_d4 == 0)" (( "(") (binary_expression "pDVar21 == (DIR *)0x0 && local_d4 == 0" (binary_expression "pDVar21 == (DIR *)0x0" (identifier "pDVar21") (== "==") (cast_expression "(DIR *)0x0" (( "(") (type_descriptor "DIR *" (type_identifier "DIR") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (&& "&&") (binary_expression "local_d4 == 0" (identifier "local_d4") (== "==") (number_literal "0"))) () ")")))) (& "&") (number_literal "0xfffd")) () ")")) (+ "+") (number_literal "7"))) (; ";")) (} "}"))) (if_statement "if (*(DIR **)(iVar2 + 0xc) != (DIR *)0x0) {\n            closedir(*(DIR **)(iVar2 + 0xc));\n            *(undefined4 *)(iVar2 + 0xc) = 0;\n          }" (if "if") (parenthesized_expression "(*(DIR **)(iVar2 + 0xc) != (DIR *)0x0)" (( "(") (binary_expression "*(DIR **)(iVar2 + 0xc) != (DIR *)0x0" (pointer_expression "*(DIR **)(iVar2 + 0xc)" (* "*") (cast_expression "(DIR **)(iVar2 + 0xc)" (( "(") (type_descriptor "DIR **" (type_identifier "DIR") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar2 + 0xc)" (( "(") (binary_expression "iVar2 + 0xc" (identifier "iVar2") (+ "+") (number_literal "0xc")) () ")")))) (!= "!=") (cast_expression "(DIR *)0x0" (( "(") (type_descriptor "DIR *" (type_identifier "DIR") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n            closedir(*(DIR **)(iVar2 + 0xc));\n            *(undefined4 *)(iVar2 + 0xc) = 0;\n          }" ({ "{") (expression_statement "closedir(*(DIR **)(iVar2 + 0xc));" (call_expression "closedir(*(DIR **)(iVar2 + 0xc))" (identifier "closedir") (argument_list "(*(DIR **)(iVar2 + 0xc))" (( "(") (pointer_expression "*(DIR **)(iVar2 + 0xc)" (* "*") (cast_expression "(DIR **)(iVar2 + 0xc)" (( "(") (type_descriptor "DIR **" (type_identifier "DIR") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar2 + 0xc)" (( "(") (binary_expression "iVar2 + 0xc" (identifier "iVar2") (+ "+") (number_literal "0xc")) () ")")))) () ")"))) (; ";")) (expression_statement "*(undefined4 *)(iVar2 + 0xc) = 0;" (assignment_expression "*(undefined4 *)(iVar2 + 0xc) = 0" (pointer_expression "*(undefined4 *)(iVar2 + 0xc)" (* "*") (cast_expression "(undefined4 *)(iVar2 + 0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0xc)" (( "(") (binary_expression "iVar2 + 0xc" (identifier "iVar2") (+ "+") (number_literal "0xc")) () ")")))) (= "=") (number_literal "0")) (; ";")) (} "}"))) (goto_statement "goto LAB_000256de;" (goto "goto") (statement_identifier "LAB_000256de") (; ";")) (} "}"))) (} "}")) (while "while") (parenthesized_expression "((((*(byte *)(param_1 + 0xb) & 0x20) == 0) && (pdVar10->d_name[0] == '.')) &&\n              ((pdVar10->d_name[1] == '\0' || (*(short *)(pdVar10->d_name + 1) == 0x2e))))" (( "(") (binary_expression "(((*(byte *)(param_1 + 0xb) & 0x20) == 0) && (pdVar10->d_name[0] == '.')) &&\n              ((pdVar10->d_name[1] == '\0' || (*(short *)(pdVar10->d_name + 1) == 0x2e)))" (parenthesized_expression "(((*(byte *)(param_1 + 0xb) & 0x20) == 0) && (pdVar10->d_name[0] == '.'))" (( "(") (binary_expression "((*(byte *)(param_1 + 0xb) & 0x20) == 0) && (pdVar10->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 "(pdVar10->d_name[0] == '.')" (( "(") (binary_expression "pdVar10->d_name[0] == '.'" (subscript_expression "pdVar10->d_name[0]" (field_expression "pdVar10->d_name" (identifier "pdVar10") (-> "->") (field_identifier "d_name")) ([ "[") (number_literal "0") (] "]")) (== "==") (char_literal "'.'" (' "'") (character ".") (' "'"))) () ")"))) () ")")) (&& "&&") (parenthesized_expression "((pdVar10->d_name[1] == '\0' || (*(short *)(pdVar10->d_name + 1) == 0x2e)))" (( "(") (parenthesized_expression "(pdVar10->d_name[1] == '\0' || (*(short *)(pdVar10->d_name + 1) == 0x2e))" (( "(") (binary_expression "pdVar10->d_name[1] == '\0' || (*(short *)(pdVar10->d_name + 1) == 0x2e)" (binary_expression "pdVar10->d_name[1] == '\0'" (subscript_expression "pdVar10->d_name[1]" (field_expression "pdVar10->d_name" (identifier "pdVar10") (-> "->") (field_identifier "d_name")) ([ "[") (number_literal "1") (] "]")) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) (|| "||") (parenthesized_expression "(*(short *)(pdVar10->d_name + 1) == 0x2e)" (( "(") (binary_expression "*(short *)(pdVar10->d_name + 1) == 0x2e" (pointer_expression "*(short *)(pdVar10->d_name + 1)" (* "*") (cast_expression "(short *)(pdVar10->d_name + 1)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pdVar10->d_name + 1)" (( "(") (binary_expression "pdVar10->d_name + 1" (field_expression "pdVar10->d_name" (identifier "pdVar10") (-> "->") (field_identifier "d_name")) (+ "+") (number_literal "1")) () ")")))) (== "==") (number_literal "0x2e")) () ")"))) () ")")) () ")"))) () ")")) (; ";")) (expression_statement "__n = strlen(pdVar10->d_name);" (assignment_expression "__n = strlen(pdVar10->d_name)" (identifier "__n") (= "=") (call_expression "strlen(pdVar10->d_name)" (identifier "strlen") (argument_list "(pdVar10->d_name)" (( "(") (field_expression "pdVar10->d_name" (identifier "pdVar10") (-> "->") (field_identifier "d_name")) () ")")))) (; ";")) (expression_statement "pvVar11 = malloc(__n + 0xa8 & 0xfffffffc);" (assignment_expression "pvVar11 = malloc(__n + 0xa8 & 0xfffffffc)" (identifier "pvVar11") (= "=") (call_expression "malloc(__n + 0xa8 & 0xfffffffc)" (identifier "malloc") (argument_list "(__n + 0xa8 & 0xfffffffc)" (( "(") (binary_expression "__n + 0xa8 & 0xfffffffc" (binary_expression "__n + 0xa8" (identifier "__n") (+ "+") (number_literal "0xa8")) (& "&") (number_literal "0xfffffffc")) () ")")))) (; ";")) (if_statement "if (pvVar11 == (void *)0x0) {\n        iVar15 = *piVar9;\nLAB_000255a6:\n        free(pvVar11);\n        if (local_b8 != (void *)0x0) {\n          pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n          pvVar11 = *(void **)((int)local_b8 + 8);\n          if (pDVar21 == (DIR *)0x0) goto LAB_000255f4;\n          do {\n            closedir(pDVar21);\n            free(local_b8);\n            local_b8 = pvVar11;\n            while( true ) {\n              if (local_b8 == (void *)0x0) goto LAB_00025608;\n              pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n              pvVar11 = *(void **)((int)local_b8 + 8);\n              if (pDVar21 != (DIR *)0x0) break;\nLAB_000255f4:\n              free(local_b8);\n              local_b8 = pvVar11;\n            }\n          } while( true );\n        }\nLAB_00025608:\n        closedir(*(DIR **)(iVar2 + 0xc));\n        *(undefined4 *)(iVar2 + 0xc) = 0;\n        *(undefined2 *)(iVar2 + 0x3c) = 7;\n        local_b8 = (void *)0x0;\n        param_1[0xb] = param_1[0xb] | 0x4000;\n        *piVar9 = iVar15;\n        goto LAB_0002563f;\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 "{\n        iVar15 = *piVar9;\nLAB_000255a6:\n        free(pvVar11);\n        if (local_b8 != (void *)0x0) {\n          pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n          pvVar11 = *(void **)((int)local_b8 + 8);\n          if (pDVar21 == (DIR *)0x0) goto LAB_000255f4;\n          do {\n            closedir(pDVar21);\n            free(local_b8);\n            local_b8 = pvVar11;\n            while( true ) {\n              if (local_b8 == (void *)0x0) goto LAB_00025608;\n              pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n              pvVar11 = *(void **)((int)local_b8 + 8);\n              if (pDVar21 != (DIR *)0x0) break;\nLAB_000255f4:\n              free(local_b8);\n              local_b8 = pvVar11;\n            }\n          } while( true );\n        }\nLAB_00025608:\n        closedir(*(DIR **)(iVar2 + 0xc));\n        *(undefined4 *)(iVar2 + 0xc) = 0;\n        *(undefined2 *)(iVar2 + 0x3c) = 7;\n        local_b8 = (void *)0x0;\n        param_1[0xb] = param_1[0xb] | 0x4000;\n        *piVar9 = iVar15;\n        goto LAB_0002563f;\n      }" ({ "{") (expression_statement "iVar15 = *piVar9;" (assignment_expression "iVar15 = *piVar9" (identifier "iVar15") (= "=") (pointer_expression "*piVar9" (* "*") (identifier "piVar9"))) (; ";")) (labeled_statement "LAB_000255a6:\n        free(pvVar11);" (statement_identifier "LAB_000255a6") (: ":") (expression_statement "free(pvVar11);" (call_expression "free(pvVar11)" (identifier "free") (argument_list "(pvVar11)" (( "(") (identifier "pvVar11") () ")"))) (; ";"))) (if_statement "if (local_b8 != (void *)0x0) {\n          pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n          pvVar11 = *(void **)((int)local_b8 + 8);\n          if (pDVar21 == (DIR *)0x0) goto LAB_000255f4;\n          do {\n            closedir(pDVar21);\n            free(local_b8);\n            local_b8 = pvVar11;\n            while( true ) {\n              if (local_b8 == (void *)0x0) goto LAB_00025608;\n              pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n              pvVar11 = *(void **)((int)local_b8 + 8);\n              if (pDVar21 != (DIR *)0x0) break;\nLAB_000255f4:\n              free(local_b8);\n              local_b8 = pvVar11;\n            }\n          } while( true );\n        }" (if "if") (parenthesized_expression "(local_b8 != (void *)0x0)" (( "(") (binary_expression "local_b8 != (void *)0x0" (identifier "local_b8") (!= "!=") (cast_expression "(void *)0x0" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n          pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n          pvVar11 = *(void **)((int)local_b8 + 8);\n          if (pDVar21 == (DIR *)0x0) goto LAB_000255f4;\n          do {\n            closedir(pDVar21);\n            free(local_b8);\n            local_b8 = pvVar11;\n            while( true ) {\n              if (local_b8 == (void *)0x0) goto LAB_00025608;\n              pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n              pvVar11 = *(void **)((int)local_b8 + 8);\n              if (pDVar21 != (DIR *)0x0) break;\nLAB_000255f4:\n              free(local_b8);\n              local_b8 = pvVar11;\n            }\n          } while( true );\n        }" ({ "{") (expression_statement "pDVar21 = *(DIR **)((int)local_b8 + 0xc);" (assignment_expression "pDVar21 = *(DIR **)((int)local_b8 + 0xc)" (identifier "pDVar21") (= "=") (pointer_expression "*(DIR **)((int)local_b8 + 0xc)" (* "*") (cast_expression "(DIR **)((int)local_b8 + 0xc)" (( "(") (type_descriptor "DIR **" (type_identifier "DIR") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "((int)local_b8 + 0xc)" (( "(") (binary_expression "(int)local_b8 + 0xc" (cast_expression "(int)local_b8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_b8")) (+ "+") (number_literal "0xc")) () ")"))))) (; ";")) (expression_statement "pvVar11 = *(void **)((int)local_b8 + 8);" (assignment_expression "pvVar11 = *(void **)((int)local_b8 + 8)" (identifier "pvVar11") (= "=") (pointer_expression "*(void **)((int)local_b8 + 8)" (* "*") (cast_expression "(void **)((int)local_b8 + 8)" (( "(") (type_descriptor "void **" (primitive_type "void") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "((int)local_b8 + 8)" (( "(") (binary_expression "(int)local_b8 + 8" (cast_expression "(int)local_b8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_b8")) (+ "+") (number_literal "8")) () ")"))))) (; ";")) (if_statement "if (pDVar21 == (DIR *)0x0) goto LAB_000255f4;" (if "if") (parenthesized_expression "(pDVar21 == (DIR *)0x0)" (( "(") (binary_expression "pDVar21 == (DIR *)0x0" (identifier "pDVar21") (== "==") (cast_expression "(DIR *)0x0" (( "(") (type_descriptor "DIR *" (type_identifier "DIR") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (goto_statement "goto LAB_000255f4;" (goto "goto") (statement_identifier "LAB_000255f4") (; ";"))) (do_statement "do {\n            closedir(pDVar21);\n            free(local_b8);\n            local_b8 = pvVar11;\n            while( true ) {\n              if (local_b8 == (void *)0x0) goto LAB_00025608;\n              pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n              pvVar11 = *(void **)((int)local_b8 + 8);\n              if (pDVar21 != (DIR *)0x0) break;\nLAB_000255f4:\n              free(local_b8);\n              local_b8 = pvVar11;\n            }\n          } while( true );" (do "do") (compound_statement "{\n            closedir(pDVar21);\n            free(local_b8);\n            local_b8 = pvVar11;\n            while( true ) {\n              if (local_b8 == (void *)0x0) goto LAB_00025608;\n              pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n              pvVar11 = *(void **)((int)local_b8 + 8);\n              if (pDVar21 != (DIR *)0x0) break;\nLAB_000255f4:\n              free(local_b8);\n              local_b8 = pvVar11;\n            }\n          }" ({ "{") (expression_statement "closedir(pDVar21);" (call_expression "closedir(pDVar21)" (identifier "closedir") (argument_list "(pDVar21)" (( "(") (identifier "pDVar21") () ")"))) (; ";")) (expression_statement "free(local_b8);" (call_expression "free(local_b8)" (identifier "free") (argument_list "(local_b8)" (( "(") (identifier "local_b8") () ")"))) (; ";")) (expression_statement "local_b8 = pvVar11;" (assignment_expression "local_b8 = pvVar11" (identifier "local_b8") (= "=") (identifier "pvVar11")) (; ";")) (while_statement "while( true ) {\n              if (local_b8 == (void *)0x0) goto LAB_00025608;\n              pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n              pvVar11 = *(void **)((int)local_b8 + 8);\n              if (pDVar21 != (DIR *)0x0) break;\nLAB_000255f4:\n              free(local_b8);\n              local_b8 = pvVar11;\n            }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n              if (local_b8 == (void *)0x0) goto LAB_00025608;\n              pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n              pvVar11 = *(void **)((int)local_b8 + 8);\n              if (pDVar21 != (DIR *)0x0) break;\nLAB_000255f4:\n              free(local_b8);\n              local_b8 = pvVar11;\n            }" ({ "{") (if_statement "if (local_b8 == (void *)0x0) goto LAB_00025608;" (if "if") (parenthesized_expression "(local_b8 == (void *)0x0)" (( "(") (binary_expression "local_b8 == (void *)0x0" (identifier "local_b8") (== "==") (cast_expression "(void *)0x0" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (goto_statement "goto LAB_00025608;" (goto "goto") (statement_identifier "LAB_00025608") (; ";"))) (expression_statement "pDVar21 = *(DIR **)((int)local_b8 + 0xc);" (assignment_expression "pDVar21 = *(DIR **)((int)local_b8 + 0xc)" (identifier "pDVar21") (= "=") (pointer_expression "*(DIR **)((int)local_b8 + 0xc)" (* "*") (cast_expression "(DIR **)((int)local_b8 + 0xc)" (( "(") (type_descriptor "DIR **" (type_identifier "DIR") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "((int)local_b8 + 0xc)" (( "(") (binary_expression "(int)local_b8 + 0xc" (cast_expression "(int)local_b8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_b8")) (+ "+") (number_literal "0xc")) () ")"))))) (; ";")) (expression_statement "pvVar11 = *(void **)((int)local_b8 + 8);" (assignment_expression "pvVar11 = *(void **)((int)local_b8 + 8)" (identifier "pvVar11") (= "=") (pointer_expression "*(void **)((int)local_b8 + 8)" (* "*") (cast_expression "(void **)((int)local_b8 + 8)" (( "(") (type_descriptor "void **" (primitive_type "void") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "((int)local_b8 + 8)" (( "(") (binary_expression "(int)local_b8 + 8" (cast_expression "(int)local_b8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_b8")) (+ "+") (number_literal "8")) () ")"))))) (; ";")) (if_statement "if (pDVar21 != (DIR *)0x0) break;" (if "if") (parenthesized_expression "(pDVar21 != (DIR *)0x0)" (( "(") (binary_expression "pDVar21 != (DIR *)0x0" (identifier "pDVar21") (!= "!=") (cast_expression "(DIR *)0x0" (( "(") (type_descriptor "DIR *" (type_identifier "DIR") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (break_statement "break;" (break "break") (; ";"))) (labeled_statement "LAB_000255f4:\n              free(local_b8);" (statement_identifier "LAB_000255f4") (: ":") (expression_statement "free(local_b8);" (call_expression "free(local_b8)" (identifier "free") (argument_list "(local_b8)" (( "(") (identifier "local_b8") () ")"))) (; ";"))) (expression_statement "local_b8 = pvVar11;" (assignment_expression "local_b8 = pvVar11" (identifier "local_b8") (= "=") (identifier "pvVar11")) (; ";")) (} "}"))) (} "}")) (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (; ";")) (} "}"))) (labeled_statement "LAB_00025608:\n        closedir(*(DIR **)(iVar2 + 0xc));" (statement_identifier "LAB_00025608") (: ":") (expression_statement "closedir(*(DIR **)(iVar2 + 0xc));" (call_expression "closedir(*(DIR **)(iVar2 + 0xc))" (identifier "closedir") (argument_list "(*(DIR **)(iVar2 + 0xc))" (( "(") (pointer_expression "*(DIR **)(iVar2 + 0xc)" (* "*") (cast_expression "(DIR **)(iVar2 + 0xc)" (( "(") (type_descriptor "DIR **" (type_identifier "DIR") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar2 + 0xc)" (( "(") (binary_expression "iVar2 + 0xc" (identifier "iVar2") (+ "+") (number_literal "0xc")) () ")")))) () ")"))) (; ";"))) (expression_statement "*(undefined4 *)(iVar2 + 0xc) = 0;" (assignment_expression "*(undefined4 *)(iVar2 + 0xc) = 0" (pointer_expression "*(undefined4 *)(iVar2 + 0xc)" (* "*") (cast_expression "(undefined4 *)(iVar2 + 0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0xc)" (( "(") (binary_expression "iVar2 + 0xc" (identifier "iVar2") (+ "+") (number_literal "0xc")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined2 *)(iVar2 + 0x3c) = 7;" (assignment_expression "*(undefined2 *)(iVar2 + 0x3c) = 7" (pointer_expression "*(undefined2 *)(iVar2 + 0x3c)" (* "*") (cast_expression "(undefined2 *)(iVar2 + 0x3c)" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0x3c)" (( "(") (binary_expression "iVar2 + 0x3c" (identifier "iVar2") (+ "+") (number_literal "0x3c")) () ")")))) (= "=") (number_literal "7")) (; ";")) (expression_statement "local_b8 = (void *)0x0;" (assignment_expression "local_b8 = (void *)0x0" (identifier "local_b8") (= "=") (cast_expression "(void *)0x0" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (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 "*piVar9 = iVar15;" (assignment_expression "*piVar9 = iVar15" (pointer_expression "*piVar9" (* "*") (identifier "piVar9")) (= "=") (identifier "iVar15")) (; ";")) (goto_statement "goto LAB_0002563f;" (goto "goto") (statement_identifier "LAB_0002563f") (; ";")) (} "}"))) (expression_statement "pvVar1 = (void *)((int)pvVar11 + 0xa4);" (assignment_expression "pvVar1 = (void *)((int)pvVar11 + 0xa4)" (identifier "pvVar1") (= "=") (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")) () ")")))) (; ";")) (expression_statement "memcpy(pvVar1,pdVar10->d_name,__n);" (call_expression "memcpy(pvVar1,pdVar10->d_name,__n)" (identifier "memcpy") (argument_list "(pvVar1,pdVar10->d_name,__n)" (( "(") (identifier "pvVar1") (, ",") (field_expression "pdVar10->d_name" (identifier "pdVar10") (-> "->") (field_identifier "d_name")) (, ",") (identifier "__n") () ")"))) (; ";")) (expression_statement "__ptr = (void *)param_1[5];" (assignment_expression "__ptr = (void *)param_1[5]" (identifier "__ptr") (= "=") (cast_expression "(void *)param_1[5]" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[5]" (identifier "param_1") ([ "[") (number_literal "5") (] "]")))) (; ";")) (expression_statement "*(undefined1 *)((int)pvVar11 + __n + 0xa4) = 0;" (assignment_expression "*(undefined1 *)((int)pvVar11 + __n + 0xa4) = 0" (pointer_expression "*(undefined1 *)((int)pvVar11 + __n + 0xa4)" (* "*") (cast_expression "(undefined1 *)((int)pvVar11 + __n + 0xa4)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)pvVar11 + __n + 0xa4)" (( "(") (binary_expression "(int)pvVar11 + __n + 0xa4" (binary_expression "(int)pvVar11 + __n" (cast_expression "(int)pvVar11" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pvVar11")) (+ "+") (identifier "__n")) (+ "+") (number_literal "0xa4")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(size_t *)((int)pvVar11 + 0x34) = __n;" (assignment_expression "*(size_t *)((int)pvVar11 + 0x34) = __n" (pointer_expression "*(size_t *)((int)pvVar11 + 0x34)" (* "*") (cast_expression "(size_t *)((int)pvVar11 + 0x34)" (( "(") (type_descriptor "size_t *" (primitive_type "size_t") (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")) () ")")))) (= "=") (identifier "__n")) (; ";")) (expression_statement "*(int **)((int)pvVar11 + 0x2c) = param_1;" (assignment_expression "*(int **)((int)pvVar11 + 0x2c) = param_1" (pointer_expression "*(int **)((int)pvVar11 + 0x2c)" (* "*") (cast_expression "(int **)((int)pvVar11 + 0x2c)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "((int)pvVar11 + 0x2c)" (( "(") (binary_expression "(int)pvVar11 + 0x2c" (cast_expression "(int)pvVar11" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pvVar11")) (+ "+") (number_literal "0x2c")) () ")")))) (= "=") (identifier "param_1")) (; ";")) (expression_statement "*(void **)((int)pvVar11 + 0x1c) = __ptr;" (assignment_expression "*(void **)((int)pvVar11 + 0x1c) = __ptr" (pointer_expression "*(void **)((int)pvVar11 + 0x1c)" (* "*") (cast_expression "(void **)((int)pvVar11 + 0x1c)" (( "(") (type_descriptor "void **" (primitive_type "void") (abstract_pointer_declarator "**" (* "*") (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")) () ")")))) (= "=") (identifier "__ptr")) (; ";")) (expression_statement "*(undefined4 *)((int)pvVar11 + 0x20) = 0;" (assignment_expression "*(undefined4 *)((int)pvVar11 + 0x20) = 0" (pointer_expression "*(undefined4 *)((int)pvVar11 + 0x20)" (* "*") (cast_expression "(undefined4 *)((int)pvVar11 + 0x20)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)pvVar11 + 0x20)" (( "(") (binary_expression "(int)pvVar11 + 0x20" (cast_expression "(int)pvVar11" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pvVar11")) (+ "+") (number_literal "0x20")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined4 *)((int)pvVar11 + 0xc) = 0;" (assignment_expression "*(undefined4 *)((int)pvVar11 + 0xc) = 0" (pointer_expression "*(undefined4 *)((int)pvVar11 + 0xc)" (* "*") (cast_expression "(undefined4 *)((int)pvVar11 + 0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)pvVar11 + 0xc)" (( "(") (binary_expression "(int)pvVar11 + 0xc" (cast_expression "(int)pvVar11" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pvVar11")) (+ "+") (number_literal "0xc")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined4 *)((int)pvVar11 + 0x3e) = 0x30000;" (assignment_expression "*(undefined4 *)((int)pvVar11 + 0x3e) = 0x30000" (pointer_expression "*(undefined4 *)((int)pvVar11 + 0x3e)" (* "*") (cast_expression "(undefined4 *)((int)pvVar11 + 0x3e)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)pvVar11 + 0x3e)" (( "(") (binary_expression "(int)pvVar11 + 0x3e" (cast_expression "(int)pvVar11" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pvVar11")) (+ "+") (number_literal "0x3e")) () ")")))) (= "=") (number_literal "0x30000")) (; ";")) (expression_statement "*(undefined4 *)((int)pvVar11 + 0x10) = 0;" (assignment_expression "*(undefined4 *)((int)pvVar11 + 0x10) = 0" (pointer_expression "*(undefined4 *)((int)pvVar11 + 0x10)" (* "*") (cast_expression "(undefined4 *)((int)pvVar11 + 0x10)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)pvVar11 + 0x10)" (( "(") (binary_expression "(int)pvVar11 + 0x10" (cast_expression "(int)pvVar11" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pvVar11")) (+ "+") (number_literal "0x10")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined4 *)((int)pvVar11 + 0x14) = 0;" (assignment_expression "*(undefined4 *)((int)pvVar11 + 0x14) = 0" (pointer_expression "*(undefined4 *)((int)pvVar11 + 0x14)" (* "*") (cast_expression "(undefined4 *)((int)pvVar11 + 0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)pvVar11 + 0x14)" (( "(") (binary_expression "(int)pvVar11 + 0x14" (cast_expression "(int)pvVar11" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pvVar11")) (+ "+") (number_literal "0x14")) () ")")))) (= "=") (number_literal "0")) (; ";")) (if_statement "if (local_b0 <= __n) {\n        uVar13 = local_d0 + 0x101 + param_1[8] + __n;\n        if (uVar13 < (uint)param_1[8]) {\n          iVar15 = 0x24;\n          free(__ptr);\n          param_1[5] = 0;\n          *piVar9 = 0x24;\n        }\n        else {\n          param_1[8] = uVar13;\n          pvVar14 = realloc(__ptr,uVar13);\n          if (pvVar14 != (void *)0x0) {\n            param_1[5] = (int)pvVar14;\n            if ((__ptr != pvVar14) && (bVar3 = true, (*(byte *)(param_1 + 0xb) & 4) != 0)) {\n              local_a4 = (undefined1 *)((int)pvVar14 + local_d0);\n            }\n            local_b0 = param_1[8] - local_d0;\n            goto LAB_000253d8;\n          }\n          free((void *)param_1[5]);\n          param_1[5] = 0;\n          iVar15 = *piVar9;\n        }\n        goto LAB_000255a6;\n      }" (if "if") (parenthesized_expression "(local_b0 <= __n)" (( "(") (binary_expression "local_b0 <= __n" (identifier "local_b0") (<= "<=") (identifier "__n")) () ")")) (compound_statement "{\n        uVar13 = local_d0 + 0x101 + param_1[8] + __n;\n        if (uVar13 < (uint)param_1[8]) {\n          iVar15 = 0x24;\n          free(__ptr);\n          param_1[5] = 0;\n          *piVar9 = 0x24;\n        }\n        else {\n          param_1[8] = uVar13;\n          pvVar14 = realloc(__ptr,uVar13);\n          if (pvVar14 != (void *)0x0) {\n            param_1[5] = (int)pvVar14;\n            if ((__ptr != pvVar14) && (bVar3 = true, (*(byte *)(param_1 + 0xb) & 4) != 0)) {\n              local_a4 = (undefined1 *)((int)pvVar14 + local_d0);\n            }\n            local_b0 = param_1[8] - local_d0;\n            goto LAB_000253d8;\n          }\n          free((void *)param_1[5]);\n          param_1[5] = 0;\n          iVar15 = *piVar9;\n        }\n        goto LAB_000255a6;\n      }" ({ "{") (expression_statement "uVar13 = local_d0 + 0x101 + param_1[8] + __n;" (assignment_expression "uVar13 = local_d0 + 0x101 + param_1[8] + __n" (identifier "uVar13") (= "=") (binary_expression "local_d0 + 0x101 + param_1[8] + __n" (binary_expression "local_d0 + 0x101 + param_1[8]" (binary_expression "local_d0 + 0x101" (identifier "local_d0") (+ "+") (number_literal "0x101")) (+ "+") (subscript_expression "param_1[8]" (identifier "param_1") ([ "[") (number_literal "8") (] "]"))) (+ "+") (identifier "__n"))) (; ";")) (if_statement "if (uVar13 < (uint)param_1[8]) {\n          iVar15 = 0x24;\n          free(__ptr);\n          param_1[5] = 0;\n          *piVar9 = 0x24;\n        }\n        else {\n          param_1[8] = uVar13;\n          pvVar14 = realloc(__ptr,uVar13);\n          if (pvVar14 != (void *)0x0) {\n            param_1[5] = (int)pvVar14;\n            if ((__ptr != pvVar14) && (bVar3 = true, (*(byte *)(param_1 + 0xb) & 4) != 0)) {\n              local_a4 = (undefined1 *)((int)pvVar14 + local_d0);\n            }\n            local_b0 = param_1[8] - local_d0;\n            goto LAB_000253d8;\n          }\n          free((void *)param_1[5]);\n          param_1[5] = 0;\n          iVar15 = *piVar9;\n        }" (if "if") (parenthesized_expression "(uVar13 < (uint)param_1[8])" (( "(") (binary_expression "uVar13 < (uint)param_1[8]" (identifier "uVar13") (< "<") (cast_expression "(uint)param_1[8]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "param_1[8]" (identifier "param_1") ([ "[") (number_literal "8") (] "]")))) () ")")) (compound_statement "{\n          iVar15 = 0x24;\n          free(__ptr);\n          param_1[5] = 0;\n          *piVar9 = 0x24;\n        }" ({ "{") (expression_statement "iVar15 = 0x24;" (assignment_expression "iVar15 = 0x24" (identifier "iVar15") (= "=") (number_literal "0x24")) (; ";")) (expression_statement "free(__ptr);" (call_expression "free(__ptr)" (identifier "free") (argument_list "(__ptr)" (( "(") (identifier "__ptr") () ")"))) (; ";")) (expression_statement "param_1[5] = 0;" (assignment_expression "param_1[5] = 0" (subscript_expression "param_1[5]" (identifier "param_1") ([ "[") (number_literal "5") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*piVar9 = 0x24;" (assignment_expression "*piVar9 = 0x24" (pointer_expression "*piVar9" (* "*") (identifier "piVar9")) (= "=") (number_literal "0x24")) (; ";")) (} "}")) (else_clause "else {\n          param_1[8] = uVar13;\n          pvVar14 = realloc(__ptr,uVar13);\n          if (pvVar14 != (void *)0x0) {\n            param_1[5] = (int)pvVar14;\n            if ((__ptr != pvVar14) && (bVar3 = true, (*(byte *)(param_1 + 0xb) & 4) != 0)) {\n              local_a4 = (undefined1 *)((int)pvVar14 + local_d0);\n            }\n            local_b0 = param_1[8] - local_d0;\n            goto LAB_000253d8;\n          }\n          free((void *)param_1[5]);\n          param_1[5] = 0;\n          iVar15 = *piVar9;\n        }" (else "else") (compound_statement "{\n          param_1[8] = uVar13;\n          pvVar14 = realloc(__ptr,uVar13);\n          if (pvVar14 != (void *)0x0) {\n            param_1[5] = (int)pvVar14;\n            if ((__ptr != pvVar14) && (bVar3 = true, (*(byte *)(param_1 + 0xb) & 4) != 0)) {\n              local_a4 = (undefined1 *)((int)pvVar14 + local_d0);\n            }\n            local_b0 = param_1[8] - local_d0;\n            goto LAB_000253d8;\n          }\n          free((void *)param_1[5]);\n          param_1[5] = 0;\n          iVar15 = *piVar9;\n        }" ({ "{") (expression_statement "param_1[8] = uVar13;" (assignment_expression "param_1[8] = uVar13" (subscript_expression "param_1[8]" (identifier "param_1") ([ "[") (number_literal "8") (] "]")) (= "=") (identifier "uVar13")) (; ";")) (expression_statement "pvVar14 = realloc(__ptr,uVar13);" (assignment_expression "pvVar14 = realloc(__ptr,uVar13)" (identifier "pvVar14") (= "=") (call_expression "realloc(__ptr,uVar13)" (identifier "realloc") (argument_list "(__ptr,uVar13)" (( "(") (identifier "__ptr") (, ",") (identifier "uVar13") () ")")))) (; ";")) (if_statement "if (pvVar14 != (void *)0x0) {\n            param_1[5] = (int)pvVar14;\n            if ((__ptr != pvVar14) && (bVar3 = true, (*(byte *)(param_1 + 0xb) & 4) != 0)) {\n              local_a4 = (undefined1 *)((int)pvVar14 + local_d0);\n            }\n            local_b0 = param_1[8] - local_d0;\n            goto LAB_000253d8;\n          }" (if "if") (parenthesized_expression "(pvVar14 != (void *)0x0)" (( "(") (binary_expression "pvVar14 != (void *)0x0" (identifier "pvVar14") (!= "!=") (cast_expression "(void *)0x0" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n            param_1[5] = (int)pvVar14;\n            if ((__ptr != pvVar14) && (bVar3 = true, (*(byte *)(param_1 + 0xb) & 4) != 0)) {\n              local_a4 = (undefined1 *)((int)pvVar14 + local_d0);\n            }\n            local_b0 = param_1[8] - local_d0;\n            goto LAB_000253d8;\n          }" ({ "{") (expression_statement "param_1[5] = (int)pvVar14;" (assignment_expression "param_1[5] = (int)pvVar14" (subscript_expression "param_1[5]" (identifier "param_1") ([ "[") (number_literal "5") (] "]")) (= "=") (cast_expression "(int)pvVar14" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pvVar14"))) (; ";")) (if_statement "if ((__ptr != pvVar14) && (bVar3 = true, (*(byte *)(param_1 + 0xb) & 4) != 0)) {\n              local_a4 = (undefined1 *)((int)pvVar14 + local_d0);\n            }" (if "if") (parenthesized_expression "((__ptr != pvVar14) && (bVar3 = true, (*(byte *)(param_1 + 0xb) & 4) != 0))" (( "(") (binary_expression "(__ptr != pvVar14) && (bVar3 = true, (*(byte *)(param_1 + 0xb) & 4) != 0)" (parenthesized_expression "(__ptr != pvVar14)" (( "(") (binary_expression "__ptr != pvVar14" (identifier "__ptr") (!= "!=") (identifier "pvVar14")) () ")")) (&& "&&") (parenthesized_expression "(bVar3 = true, (*(byte *)(param_1 + 0xb) & 4) != 0)" (( "(") (comma_expression "bVar3 = true, (*(byte *)(param_1 + 0xb) & 4) != 0" (assignment_expression "bVar3 = true" (identifier "bVar3") (= "=") (true "true")) (, ",") (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              local_a4 = (undefined1 *)((int)pvVar14 + local_d0);\n            }" ({ "{") (expression_statement "local_a4 = (undefined1 *)((int)pvVar14 + local_d0);" (assignment_expression "local_a4 = (undefined1 *)((int)pvVar14 + local_d0)" (identifier "local_a4") (= "=") (cast_expression "(undefined1 *)((int)pvVar14 + local_d0)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)pvVar14 + local_d0)" (( "(") (binary_expression "(int)pvVar14 + local_d0" (cast_expression "(int)pvVar14" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pvVar14")) (+ "+") (identifier "local_d0")) () ")")))) (; ";")) (} "}"))) (expression_statement "local_b0 = param_1[8] - local_d0;" (assignment_expression "local_b0 = param_1[8] - local_d0" (identifier "local_b0") (= "=") (binary_expression "param_1[8] - local_d0" (subscript_expression "param_1[8]" (identifier "param_1") ([ "[") (number_literal "8") (] "]")) (- "-") (identifier "local_d0"))) (; ";")) (goto_statement "goto LAB_000253d8;" (goto "goto") (statement_identifier "LAB_000253d8") (; ";")) (} "}"))) (expression_statement "free((void *)param_1[5]);" (call_expression "free((void *)param_1[5])" (identifier "free") (argument_list "((void *)param_1[5])" (( "(") (cast_expression "(void *)param_1[5]" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[5]" (identifier "param_1") ([ "[") (number_literal "5") (] "]"))) () ")"))) (; ";")) (expression_statement "param_1[5] = 0;" (assignment_expression "param_1[5] = 0" (subscript_expression "param_1[5]" (identifier "param_1") ([ "[") (number_literal "5") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "iVar15 = *piVar9;" (assignment_expression "iVar15 = *piVar9" (identifier "iVar15") (= "=") (pointer_expression "*piVar9" (* "*") (identifier "piVar9"))) (; ";")) (} "}")))) (goto_statement "goto LAB_000255a6;" (goto "goto") (statement_identifier "LAB_000255a6") (; ";")) (} "}"))) (labeled_statement "LAB_000253d8:\n      if (CARRY4(__n,local_d0)) {\n        free(pvVar11);\n        if (local_b8 != (void *)0x0) {\n          pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n          pvVar11 = *(void **)((int)local_b8 + 8);\n          if (pDVar21 == (DIR *)0x0) goto LAB_00025e84;\n          do {\n            closedir(pDVar21);\n            free(local_b8);\n            local_b8 = pvVar11;\n            while( true ) {\n              if (local_b8 == (void *)0x0) goto LAB_00025e94;\n              pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n              pvVar11 = *(void **)((int)local_b8 + 8);\n              if (pDVar21 != (DIR *)0x0) break;\nLAB_00025e84:\n              free(local_b8);\n              local_b8 = pvVar11;\n            }\n          } while( true );\n        }\nLAB_00025e94:\n        closedir(*(DIR **)(iVar2 + 0xc));\n        *(undefined4 *)(iVar2 + 0xc) = 0;\n        *(undefined2 *)(iVar2 + 0x3c) = 7;\n        local_b8 = (void *)0x0;\n        param_1[0xb] = param_1[0xb] | 0x4000;\n        *piVar9 = 0x24;\n        goto LAB_0002563f;\n      }" (statement_identifier "LAB_000253d8") (: ":") (if_statement "if (CARRY4(__n,local_d0)) {\n        free(pvVar11);\n        if (local_b8 != (void *)0x0) {\n          pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n          pvVar11 = *(void **)((int)local_b8 + 8);\n          if (pDVar21 == (DIR *)0x0) goto LAB_00025e84;\n          do {\n            closedir(pDVar21);\n            free(local_b8);\n            local_b8 = pvVar11;\n            while( true ) {\n              if (local_b8 == (void *)0x0) goto LAB_00025e94;\n              pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n              pvVar11 = *(void **)((int)local_b8 + 8);\n              if (pDVar21 != (DIR *)0x0) break;\nLAB_00025e84:\n              free(local_b8);\n              local_b8 = pvVar11;\n            }\n          } while( true );\n        }\nLAB_00025e94:\n        closedir(*(DIR **)(iVar2 + 0xc));\n        *(undefined4 *)(iVar2 + 0xc) = 0;\n        *(undefined2 *)(iVar2 + 0x3c) = 7;\n        local_b8 = (void *)0x0;\n        param_1[0xb] = param_1[0xb] | 0x4000;\n        *piVar9 = 0x24;\n        goto LAB_0002563f;\n      }" (if "if") (parenthesized_expression "(CARRY4(__n,local_d0))" (( "(") (call_expression "CARRY4(__n,local_d0)" (identifier "CARRY4") (argument_list "(__n,local_d0)" (( "(") (identifier "__n") (, ",") (identifier "local_d0") () ")"))) () ")")) (compound_statement "{\n        free(pvVar11);\n        if (local_b8 != (void *)0x0) {\n          pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n          pvVar11 = *(void **)((int)local_b8 + 8);\n          if (pDVar21 == (DIR *)0x0) goto LAB_00025e84;\n          do {\n            closedir(pDVar21);\n            free(local_b8);\n            local_b8 = pvVar11;\n            while( true ) {\n              if (local_b8 == (void *)0x0) goto LAB_00025e94;\n              pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n              pvVar11 = *(void **)((int)local_b8 + 8);\n              if (pDVar21 != (DIR *)0x0) break;\nLAB_00025e84:\n              free(local_b8);\n              local_b8 = pvVar11;\n            }\n          } while( true );\n        }\nLAB_00025e94:\n        closedir(*(DIR **)(iVar2 + 0xc));\n        *(undefined4 *)(iVar2 + 0xc) = 0;\n        *(undefined2 *)(iVar2 + 0x3c) = 7;\n        local_b8 = (void *)0x0;\n        param_1[0xb] = param_1[0xb] | 0x4000;\n        *piVar9 = 0x24;\n        goto LAB_0002563f;\n      }" ({ "{") (expression_statement "free(pvVar11);" (call_expression "free(pvVar11)" (identifier "free") (argument_list "(pvVar11)" (( "(") (identifier "pvVar11") () ")"))) (; ";")) (if_statement "if (local_b8 != (void *)0x0) {\n          pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n          pvVar11 = *(void **)((int)local_b8 + 8);\n          if (pDVar21 == (DIR *)0x0) goto LAB_00025e84;\n          do {\n            closedir(pDVar21);\n            free(local_b8);\n            local_b8 = pvVar11;\n            while( true ) {\n              if (local_b8 == (void *)0x0) goto LAB_00025e94;\n              pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n              pvVar11 = *(void **)((int)local_b8 + 8);\n              if (pDVar21 != (DIR *)0x0) break;\nLAB_00025e84:\n              free(local_b8);\n              local_b8 = pvVar11;\n            }\n          } while( true );\n        }" (if "if") (parenthesized_expression "(local_b8 != (void *)0x0)" (( "(") (binary_expression "local_b8 != (void *)0x0" (identifier "local_b8") (!= "!=") (cast_expression "(void *)0x0" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n          pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n          pvVar11 = *(void **)((int)local_b8 + 8);\n          if (pDVar21 == (DIR *)0x0) goto LAB_00025e84;\n          do {\n            closedir(pDVar21);\n            free(local_b8);\n            local_b8 = pvVar11;\n            while( true ) {\n              if (local_b8 == (void *)0x0) goto LAB_00025e94;\n              pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n              pvVar11 = *(void **)((int)local_b8 + 8);\n              if (pDVar21 != (DIR *)0x0) break;\nLAB_00025e84:\n              free(local_b8);\n              local_b8 = pvVar11;\n            }\n          } while( true );\n        }" ({ "{") (expression_statement "pDVar21 = *(DIR **)((int)local_b8 + 0xc);" (assignment_expression "pDVar21 = *(DIR **)((int)local_b8 + 0xc)" (identifier "pDVar21") (= "=") (pointer_expression "*(DIR **)((int)local_b8 + 0xc)" (* "*") (cast_expression "(DIR **)((int)local_b8 + 0xc)" (( "(") (type_descriptor "DIR **" (type_identifier "DIR") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "((int)local_b8 + 0xc)" (( "(") (binary_expression "(int)local_b8 + 0xc" (cast_expression "(int)local_b8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_b8")) (+ "+") (number_literal "0xc")) () ")"))))) (; ";")) (expression_statement "pvVar11 = *(void **)((int)local_b8 + 8);" (assignment_expression "pvVar11 = *(void **)((int)local_b8 + 8)" (identifier "pvVar11") (= "=") (pointer_expression "*(void **)((int)local_b8 + 8)" (* "*") (cast_expression "(void **)((int)local_b8 + 8)" (( "(") (type_descriptor "void **" (primitive_type "void") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "((int)local_b8 + 8)" (( "(") (binary_expression "(int)local_b8 + 8" (cast_expression "(int)local_b8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_b8")) (+ "+") (number_literal "8")) () ")"))))) (; ";")) (if_statement "if (pDVar21 == (DIR *)0x0) goto LAB_00025e84;" (if "if") (parenthesized_expression "(pDVar21 == (DIR *)0x0)" (( "(") (binary_expression "pDVar21 == (DIR *)0x0" (identifier "pDVar21") (== "==") (cast_expression "(DIR *)0x0" (( "(") (type_descriptor "DIR *" (type_identifier "DIR") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (goto_statement "goto LAB_00025e84;" (goto "goto") (statement_identifier "LAB_00025e84") (; ";"))) (do_statement "do {\n            closedir(pDVar21);\n            free(local_b8);\n            local_b8 = pvVar11;\n            while( true ) {\n              if (local_b8 == (void *)0x0) goto LAB_00025e94;\n              pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n              pvVar11 = *(void **)((int)local_b8 + 8);\n              if (pDVar21 != (DIR *)0x0) break;\nLAB_00025e84:\n              free(local_b8);\n              local_b8 = pvVar11;\n            }\n          } while( true );" (do "do") (compound_statement "{\n            closedir(pDVar21);\n            free(local_b8);\n            local_b8 = pvVar11;\n            while( true ) {\n              if (local_b8 == (void *)0x0) goto LAB_00025e94;\n              pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n              pvVar11 = *(void **)((int)local_b8 + 8);\n              if (pDVar21 != (DIR *)0x0) break;\nLAB_00025e84:\n              free(local_b8);\n              local_b8 = pvVar11;\n            }\n          }" ({ "{") (expression_statement "closedir(pDVar21);" (call_expression "closedir(pDVar21)" (identifier "closedir") (argument_list "(pDVar21)" (( "(") (identifier "pDVar21") () ")"))) (; ";")) (expression_statement "free(local_b8);" (call_expression "free(local_b8)" (identifier "free") (argument_list "(local_b8)" (( "(") (identifier "local_b8") () ")"))) (; ";")) (expression_statement "local_b8 = pvVar11;" (assignment_expression "local_b8 = pvVar11" (identifier "local_b8") (= "=") (identifier "pvVar11")) (; ";")) (while_statement "while( true ) {\n              if (local_b8 == (void *)0x0) goto LAB_00025e94;\n              pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n              pvVar11 = *(void **)((int)local_b8 + 8);\n              if (pDVar21 != (DIR *)0x0) break;\nLAB_00025e84:\n              free(local_b8);\n              local_b8 = pvVar11;\n            }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n              if (local_b8 == (void *)0x0) goto LAB_00025e94;\n              pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n              pvVar11 = *(void **)((int)local_b8 + 8);\n              if (pDVar21 != (DIR *)0x0) break;\nLAB_00025e84:\n              free(local_b8);\n              local_b8 = pvVar11;\n            }" ({ "{") (if_statement "if (local_b8 == (void *)0x0) goto LAB_00025e94;" (if "if") (parenthesized_expression "(local_b8 == (void *)0x0)" (( "(") (binary_expression "local_b8 == (void *)0x0" (identifier "local_b8") (== "==") (cast_expression "(void *)0x0" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (goto_statement "goto LAB_00025e94;" (goto "goto") (statement_identifier "LAB_00025e94") (; ";"))) (expression_statement "pDVar21 = *(DIR **)((int)local_b8 + 0xc);" (assignment_expression "pDVar21 = *(DIR **)((int)local_b8 + 0xc)" (identifier "pDVar21") (= "=") (pointer_expression "*(DIR **)((int)local_b8 + 0xc)" (* "*") (cast_expression "(DIR **)((int)local_b8 + 0xc)" (( "(") (type_descriptor "DIR **" (type_identifier "DIR") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "((int)local_b8 + 0xc)" (( "(") (binary_expression "(int)local_b8 + 0xc" (cast_expression "(int)local_b8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_b8")) (+ "+") (number_literal "0xc")) () ")"))))) (; ";")) (expression_statement "pvVar11 = *(void **)((int)local_b8 + 8);" (assignment_expression "pvVar11 = *(void **)((int)local_b8 + 8)" (identifier "pvVar11") (= "=") (pointer_expression "*(void **)((int)local_b8 + 8)" (* "*") (cast_expression "(void **)((int)local_b8 + 8)" (( "(") (type_descriptor "void **" (primitive_type "void") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "((int)local_b8 + 8)" (( "(") (binary_expression "(int)local_b8 + 8" (cast_expression "(int)local_b8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_b8")) (+ "+") (number_literal "8")) () ")"))))) (; ";")) (if_statement "if (pDVar21 != (DIR *)0x0) break;" (if "if") (parenthesized_expression "(pDVar21 != (DIR *)0x0)" (( "(") (binary_expression "pDVar21 != (DIR *)0x0" (identifier "pDVar21") (!= "!=") (cast_expression "(DIR *)0x0" (( "(") (type_descriptor "DIR *" (type_identifier "DIR") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (break_statement "break;" (break "break") (; ";"))) (labeled_statement "LAB_00025e84:\n              free(local_b8);" (statement_identifier "LAB_00025e84") (: ":") (expression_statement "free(local_b8);" (call_expression "free(local_b8)" (identifier "free") (argument_list "(local_b8)" (( "(") (identifier "local_b8") () ")"))) (; ";"))) (expression_statement "local_b8 = pvVar11;" (assignment_expression "local_b8 = pvVar11" (identifier "local_b8") (= "=") (identifier "pvVar11")) (; ";")) (} "}"))) (} "}")) (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (; ";")) (} "}"))) (labeled_statement "LAB_00025e94:\n        closedir(*(DIR **)(iVar2 + 0xc));" (statement_identifier "LAB_00025e94") (: ":") (expression_statement "closedir(*(DIR **)(iVar2 + 0xc));" (call_expression "closedir(*(DIR **)(iVar2 + 0xc))" (identifier "closedir") (argument_list "(*(DIR **)(iVar2 + 0xc))" (( "(") (pointer_expression "*(DIR **)(iVar2 + 0xc)" (* "*") (cast_expression "(DIR **)(iVar2 + 0xc)" (( "(") (type_descriptor "DIR **" (type_identifier "DIR") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar2 + 0xc)" (( "(") (binary_expression "iVar2 + 0xc" (identifier "iVar2") (+ "+") (number_literal "0xc")) () ")")))) () ")"))) (; ";"))) (expression_statement "*(undefined4 *)(iVar2 + 0xc) = 0;" (assignment_expression "*(undefined4 *)(iVar2 + 0xc) = 0" (pointer_expression "*(undefined4 *)(iVar2 + 0xc)" (* "*") (cast_expression "(undefined4 *)(iVar2 + 0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0xc)" (( "(") (binary_expression "iVar2 + 0xc" (identifier "iVar2") (+ "+") (number_literal "0xc")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined2 *)(iVar2 + 0x3c) = 7;" (assignment_expression "*(undefined2 *)(iVar2 + 0x3c) = 7" (pointer_expression "*(undefined2 *)(iVar2 + 0x3c)" (* "*") (cast_expression "(undefined2 *)(iVar2 + 0x3c)" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0x3c)" (( "(") (binary_expression "iVar2 + 0x3c" (identifier "iVar2") (+ "+") (number_literal "0x3c")) () ")")))) (= "=") (number_literal "7")) (; ";")) (expression_statement "local_b8 = (void *)0x0;" (assignment_expression "local_b8 = (void *)0x0" (identifier "local_b8") (= "=") (cast_expression "(void *)0x0" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (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 "*piVar9 = 0x24;" (assignment_expression "*piVar9 = 0x24" (pointer_expression "*piVar9" (* "*") (identifier "piVar9")) (= "=") (number_literal "0x24")) (; ";")) (goto_statement "goto LAB_0002563f;" (goto "goto") (statement_identifier "LAB_0002563f") (; ";")) (} "}")))) (expression_statement "uVar12 = *(undefined4 *)((int)&pdVar10->d_ino + 4);" (assignment_expression "uVar12 = *(undefined4 *)((int)&pdVar10->d_ino + 4)" (identifier "uVar12") (= "=") (pointer_expression "*(undefined4 *)((int)&pdVar10->d_ino + 4)" (* "*") (cast_expression "(undefined4 *)((int)&pdVar10->d_ino + 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)&pdVar10->d_ino + 4)" (( "(") (binary_expression "(int)&pdVar10->d_ino + 4" (cast_expression "(int)&pdVar10->d_ino" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (pointer_expression "&pdVar10->d_ino" (& "&") (field_expression "pdVar10->d_ino" (identifier "pdVar10") (-> "->") (field_identifier "d_ino")))) (+ "+") (number_literal "4")) () ")"))))) (; ";")) (expression_statement "*(size_t *)((int)pvVar11 + 0x28) = __n + local_d0;" (assignment_expression "*(size_t *)((int)pvVar11 + 0x28) = __n + local_d0" (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 "__n + local_d0" (identifier "__n") (+ "+") (identifier "local_d0"))) (; ";")) (expression_statement "*(int *)((int)pvVar11 + 0x30) = iVar15 + 1;" (assignment_expression "*(int *)((int)pvVar11 + 0x30) = iVar15 + 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 "iVar15 + 1" (identifier "iVar15") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*(int *)((int)pvVar11 + 4) = *param_1;" (assignment_expression "*(int *)((int)pvVar11 + 4) = *param_1" (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")) () ")")))) (= "=") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (; ";")) (expression_statement "_Var5 = pdVar10->d_ino;" (assignment_expression "_Var5 = pdVar10->d_ino" (identifier "_Var5") (= "=") (field_expression "pdVar10->d_ino" (identifier "pdVar10") (-> "->") (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)_Var5;" (assignment_expression "*(int *)((int)pvVar11 + 0x9c) = (int)_Var5" (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)_Var5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "_Var5"))) (; ";")) (expression_statement "uVar13 = param_1[0xb];" (assignment_expression "uVar13 = param_1[0xb]" (identifier "uVar13") (= "=") (subscript_expression "param_1[0xb]" (identifier "param_1") ([ "[") (number_literal "0xb") (] "]"))) (; ";")) (if_statement "if ((uVar13 & 4) == 0) {\n        *(void **)((int)pvVar11 + 0x18) = pvVar1;\n      }\n      else {\n        *(undefined4 *)((int)pvVar11 + 0x18) = *(undefined4 *)((int)pvVar11 + 0x1c);\n        memmove(local_a4,pvVar1,*(int *)((int)pvVar11 + 0x34) + 1);\n        uVar13 = param_1[0xb];\n      }" (if "if") (parenthesized_expression "((uVar13 & 4) == 0)" (( "(") (binary_expression "(uVar13 & 4) == 0" (parenthesized_expression "(uVar13 & 4)" (( "(") (binary_expression "uVar13 & 4" (identifier "uVar13") (& "&") (number_literal "4")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        *(void **)((int)pvVar11 + 0x18) = pvVar1;\n      }" ({ "{") (expression_statement "*(void **)((int)pvVar11 + 0x18) = pvVar1;" (assignment_expression "*(void **)((int)pvVar11 + 0x18) = pvVar1" (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")) () ")")))) (= "=") (identifier "pvVar1")) (; ";")) (} "}")) (else_clause "else {\n        *(undefined4 *)((int)pvVar11 + 0x18) = *(undefined4 *)((int)pvVar11 + 0x1c);\n        memmove(local_a4,pvVar1,*(int *)((int)pvVar11 + 0x34) + 1);\n        uVar13 = param_1[0xb];\n      }" (else "else") (compound_statement "{\n        *(undefined4 *)((int)pvVar11 + 0x18) = *(undefined4 *)((int)pvVar11 + 0x1c);\n        memmove(local_a4,pvVar1,*(int *)((int)pvVar11 + 0x34) + 1);\n        uVar13 = 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_a4,pvVar1,*(int *)((int)pvVar11 + 0x34) + 1);" (call_expression "memmove(local_a4,pvVar1,*(int *)((int)pvVar11 + 0x34) + 1)" (identifier "memmove") (argument_list "(local_a4,pvVar1,*(int *)((int)pvVar11 + 0x34) + 1)" (( "(") (identifier "local_a4") (, ",") (identifier "pvVar1") (, ",") (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 "uVar13 = param_1[0xb];" (assignment_expression "uVar13 = param_1[0xb]" (identifier "uVar13") (= "=") (subscript_expression "param_1[0xb]" (identifier "param_1") ([ "[") (number_literal "0xb") (] "]"))) (; ";")) (} "}")))) (if_statement "if ((param_1[10] == 0) || ((uVar13 & 0x400) != 0)) {\n        uVar23 = pdVar10->d_type - 1;\n        if (((uVar13 & 0x18) == 0x18) && ((pdVar10->d_type & 0xfb) != 0)) {\n          *(undefined2 *)((int)pvVar11 + 0x3c) = 0xb;\n          if (uVar23 < 0xc) {\n            *(undefined4 *)((int)pvVar11 + 0x54) = *(undefined4 *)(&DAT_00031560 + uVar23 * 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 (uVar23 < 0xc) {\n            *(undefined4 *)((int)pvVar11 + 0x54) = *(undefined4 *)(&DAT_00031560 + uVar23 * 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        uVar8 = FUN_00024740();\n        *(undefined2 *)((int)pvVar11 + 0x3c) = uVar8;\n      }" (if "if") (parenthesized_expression "((param_1[10] == 0) || ((uVar13 & 0x400) != 0))" (( "(") (binary_expression "(param_1[10] == 0) || ((uVar13 & 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 "((uVar13 & 0x400) != 0)" (( "(") (binary_expression "(uVar13 & 0x400) != 0" (parenthesized_expression "(uVar13 & 0x400)" (( "(") (binary_expression "uVar13 & 0x400" (identifier "uVar13") (& "&") (number_literal "0x400")) () ")")) (!= "!=") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n        uVar23 = pdVar10->d_type - 1;\n        if (((uVar13 & 0x18) == 0x18) && ((pdVar10->d_type & 0xfb) != 0)) {\n          *(undefined2 *)((int)pvVar11 + 0x3c) = 0xb;\n          if (uVar23 < 0xc) {\n            *(undefined4 *)((int)pvVar11 + 0x54) = *(undefined4 *)(&DAT_00031560 + uVar23 * 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 (uVar23 < 0xc) {\n            *(undefined4 *)((int)pvVar11 + 0x54) = *(undefined4 *)(&DAT_00031560 + uVar23 * 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 "uVar23 = pdVar10->d_type - 1;" (assignment_expression "uVar23 = pdVar10->d_type - 1" (identifier "uVar23") (= "=") (binary_expression "pdVar10->d_type - 1" (field_expression "pdVar10->d_type" (identifier "pdVar10") (-> "->") (field_identifier "d_type")) (- "-") (number_literal "1"))) (; ";")) (if_statement "if (((uVar13 & 0x18) == 0x18) && ((pdVar10->d_type & 0xfb) != 0)) {\n          *(undefined2 *)((int)pvVar11 + 0x3c) = 0xb;\n          if (uVar23 < 0xc) {\n            *(undefined4 *)((int)pvVar11 + 0x54) = *(undefined4 *)(&DAT_00031560 + uVar23 * 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 (uVar23 < 0xc) {\n            *(undefined4 *)((int)pvVar11 + 0x54) = *(undefined4 *)(&DAT_00031560 + uVar23 * 4);\n            uVar12 = 2;\n          }\n          else {\n            *(undefined4 *)((int)pvVar11 + 0x54) = 0;\n            uVar12 = 2;\n          }\n        }" (if "if") (parenthesized_expression "(((uVar13 & 0x18) == 0x18) && ((pdVar10->d_type & 0xfb) != 0))" (( "(") (binary_expression "((uVar13 & 0x18) == 0x18) && ((pdVar10->d_type & 0xfb) != 0)" (parenthesized_expression "((uVar13 & 0x18) == 0x18)" (( "(") (binary_expression "(uVar13 & 0x18) == 0x18" (parenthesized_expression "(uVar13 & 0x18)" (( "(") (binary_expression "uVar13 & 0x18" (identifier "uVar13") (& "&") (number_literal "0x18")) () ")")) (== "==") (number_literal "0x18")) () ")")) (&& "&&") (parenthesized_expression "((pdVar10->d_type & 0xfb) != 0)" (( "(") (binary_expression "(pdVar10->d_type & 0xfb) != 0" (parenthesized_expression "(pdVar10->d_type & 0xfb)" (( "(") (binary_expression "pdVar10->d_type & 0xfb" (field_expression "pdVar10->d_type" (identifier "pdVar10") (-> "->") (field_identifier "d_type")) (& "&") (number_literal "0xfb")) () ")")) (!= "!=") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n          *(undefined2 *)((int)pvVar11 + 0x3c) = 0xb;\n          if (uVar23 < 0xc) {\n            *(undefined4 *)((int)pvVar11 + 0x54) = *(undefined4 *)(&DAT_00031560 + uVar23 * 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 (uVar23 < 0xc) {\n            *(undefined4 *)((int)pvVar11 + 0x54) = *(undefined4 *)(&DAT_00031560 + uVar23 * 4);\n            uVar12 = 1;\n          }\n          else {\n            *(undefined4 *)((int)pvVar11 + 0x54) = 0;\n            uVar12 = 1;\n          }" (if "if") (parenthesized_expression "(uVar23 < 0xc)" (( "(") (binary_expression "uVar23 < 0xc" (identifier "uVar23") (< "<") (number_literal "0xc")) () ")")) (compound_statement "{\n            *(undefined4 *)((int)pvVar11 + 0x54) = *(undefined4 *)(&DAT_00031560 + uVar23 * 4);\n            uVar12 = 1;\n          }" ({ "{") (expression_statement "*(undefined4 *)((int)pvVar11 + 0x54) = *(undefined4 *)(&DAT_00031560 + uVar23 * 4);" (assignment_expression "*(undefined4 *)((int)pvVar11 + 0x54) = *(undefined4 *)(&DAT_00031560 + uVar23 * 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_00031560 + uVar23 * 4)" (* "*") (cast_expression "(undefined4 *)(&DAT_00031560 + uVar23 * 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(&DAT_00031560 + uVar23 * 4)" (( "(") (binary_expression "&DAT_00031560 + uVar23 * 4" (pointer_expression "&DAT_00031560" (& "&") (identifier "DAT_00031560")) (+ "+") (binary_expression "uVar23 * 4" (identifier "uVar23") (* "*") (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 (uVar23 < 0xc) {\n            *(undefined4 *)((int)pvVar11 + 0x54) = *(undefined4 *)(&DAT_00031560 + uVar23 * 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 (uVar23 < 0xc) {\n            *(undefined4 *)((int)pvVar11 + 0x54) = *(undefined4 *)(&DAT_00031560 + uVar23 * 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 (uVar23 < 0xc) {\n            *(undefined4 *)((int)pvVar11 + 0x54) = *(undefined4 *)(&DAT_00031560 + uVar23 * 4);\n            uVar12 = 2;\n          }\n          else {\n            *(undefined4 *)((int)pvVar11 + 0x54) = 0;\n            uVar12 = 2;\n          }" (if "if") (parenthesized_expression "(uVar23 < 0xc)" (( "(") (binary_expression "uVar23 < 0xc" (identifier "uVar23") (< "<") (number_literal "0xc")) () ")")) (compound_statement "{\n            *(undefined4 *)((int)pvVar11 + 0x54) = *(undefined4 *)(&DAT_00031560 + uVar23 * 4);\n            uVar12 = 2;\n          }" ({ "{") (expression_statement "*(undefined4 *)((int)pvVar11 + 0x54) = *(undefined4 *)(&DAT_00031560 + uVar23 * 4);" (assignment_expression "*(undefined4 *)((int)pvVar11 + 0x54) = *(undefined4 *)(&DAT_00031560 + uVar23 * 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_00031560 + uVar23 * 4)" (* "*") (cast_expression "(undefined4 *)(&DAT_00031560 + uVar23 * 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(&DAT_00031560 + uVar23 * 4)" (( "(") (binary_expression "&DAT_00031560 + uVar23 * 4" (pointer_expression "&DAT_00031560" (& "&") (identifier "DAT_00031560")) (+ "+") (binary_expression "uVar23 * 4" (identifier "uVar23") (* "*") (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        uVar8 = FUN_00024740();\n        *(undefined2 *)((int)pvVar11 + 0x3c) = uVar8;\n      }" (else "else") (compound_statement "{\n        uVar8 = FUN_00024740();\n        *(undefined2 *)((int)pvVar11 + 0x3c) = uVar8;\n      }" ({ "{") (expression_statement "uVar8 = FUN_00024740();" (assignment_expression "uVar8 = FUN_00024740()" (identifier "uVar8") (= "=") (call_expression "FUN_00024740()" (identifier "FUN_00024740") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "*(undefined2 *)((int)pvVar11 + 0x3c) = uVar8;" (assignment_expression "*(undefined2 *)((int)pvVar11 + 0x3c) = uVar8" (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 "uVar8")) (; ";")) (} "}")))) (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 "pvVar1 = pvVar11;" (assignment_expression "pvVar1 = pvVar11" (identifier "pvVar1") (= "=") (identifier "pvVar11")) (; ";")) (if_statement "if (local_b8 != (void *)0x0) {\n        *(void **)((int)local_c4 + 8) = pvVar11;\n        pvVar1 = local_b8;\n      }" (if "if") (parenthesized_expression "(local_b8 != (void *)0x0)" (( "(") (binary_expression "local_b8 != (void *)0x0" (identifier "local_b8") (!= "!=") (cast_expression "(void *)0x0" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n        *(void **)((int)local_c4 + 8) = pvVar11;\n        pvVar1 = local_b8;\n      }" ({ "{") (expression_statement "*(void **)((int)local_c4 + 8) = pvVar11;" (assignment_expression "*(void **)((int)local_c4 + 8) = pvVar11" (pointer_expression "*(void **)((int)local_c4 + 8)" (* "*") (cast_expression "(void **)((int)local_c4 + 8)" (( "(") (type_descriptor "void **" (primitive_type "void") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "((int)local_c4 + 8)" (( "(") (binary_expression "(int)local_c4 + 8" (cast_expression "(int)local_c4" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_c4")) (+ "+") (number_literal "8")) () ")")))) (= "=") (identifier "pvVar11")) (; ";")) (expression_statement "pvVar1 = local_b8;" (assignment_expression "pvVar1 = local_b8" (identifier "pvVar1") (= "=") (identifier "local_b8")) (; ";")) (} "}"))) (expression_statement "local_b8 = pvVar1;" (assignment_expression "local_b8 = pvVar1" (identifier "local_b8") (= "=") (identifier "pvVar1")) (; ";")) (expression_statement "local_c4 = pvVar11;" (assignment_expression "local_c4 = pvVar11" (identifier "local_c4") (= "=") (identifier "pvVar11")) (; ";")) (if_statement "if (local_d4 == 10000) {\n        if (param_1[10] == 0) {\n          iVar17 = *(int *)(iVar2 + 0x2c);\n          if ((*(byte *)(iVar17 + 0x2d) & 2) != 0) {\n            iVar18 = *(int *)(iVar17 + 0x30);\n            if (iVar18 == 0) {\n              iVar18 = FUN_0001df90(0xd,0,FUN_000246b0,FUN_000246e0,puVar6);\n              *(int *)(iVar17 + 0x30) = iVar18;\n              if (iVar18 != 0) goto LAB_00025920;\nLAB_000259b0:\n              if ((local_9c < 0) ||\n                 (iVar19 = fstatfs64(local_9c,&local_74), iVar17 = local_74.f_type, iVar19 != 0))\n              goto LAB_00025a48;\n              local_d4 = local_74.f_type;\n              if ((iVar18 != 0) &&\n                 (__ptr_00 = (undefined4 *)malloc(0xc), __ptr_00 != (undefined4 *)0x0)) {\n                uVar12 = *(undefined4 *)(iVar2 + 0x44);\n                __ptr_00[1] = *(undefined4 *)(iVar2 + 0x48);\n                *__ptr_00 = uVar12;\n                __ptr_00[2] = iVar17;\n                puVar20 = (undefined4 *)FUN_0001e8d0(iVar18,__ptr_00);\n                if (puVar20 == (undefined4 *)0x0) {\n                  free(__ptr_00);\n                  local_d4 = local_74.f_type;\n                }\n                else {\n                  if (__ptr_00 != puVar20) {\n                    \n                    abort();\n                  }\n                  local_d4 = local_74.f_type;\n                }\n              }\n            }\n            else {\nLAB_00025920:\n              local_7c = *(undefined4 *)(iVar2 + 0x48);\n              local_80 = *(undefined4 *)(iVar2 + 0x44);\n              iVar17 = FUN_0001dce0(iVar18,&local_80);\n              if (iVar17 == 0) goto LAB_000259b0;\n              local_d4 = *(int *)(iVar17 + 8);\n            }\n            if (((local_d4 == 0x6969) || (local_d4 == 0x1021994)) || (local_d4 == -0xacb2be)) {\n              bVar4 = false;\n              goto LAB_00025473;\n            }\n          }\nLAB_00025a48:\n          bVar4 = true;\n        }\nLAB_00025473:\n        local_d4 = 0x2711;\n        goto LAB_000252fb;\n      }" (if "if") (parenthesized_expression "(local_d4 == 10000)" (( "(") (binary_expression "local_d4 == 10000" (identifier "local_d4") (== "==") (number_literal "10000")) () ")")) (compound_statement "{\n        if (param_1[10] == 0) {\n          iVar17 = *(int *)(iVar2 + 0x2c);\n          if ((*(byte *)(iVar17 + 0x2d) & 2) != 0) {\n            iVar18 = *(int *)(iVar17 + 0x30);\n            if (iVar18 == 0) {\n              iVar18 = FUN_0001df90(0xd,0,FUN_000246b0,FUN_000246e0,puVar6);\n              *(int *)(iVar17 + 0x30) = iVar18;\n              if (iVar18 != 0) goto LAB_00025920;\nLAB_000259b0:\n              if ((local_9c < 0) ||\n                 (iVar19 = fstatfs64(local_9c,&local_74), iVar17 = local_74.f_type, iVar19 != 0))\n              goto LAB_00025a48;\n              local_d4 = local_74.f_type;\n              if ((iVar18 != 0) &&\n                 (__ptr_00 = (undefined4 *)malloc(0xc), __ptr_00 != (undefined4 *)0x0)) {\n                uVar12 = *(undefined4 *)(iVar2 + 0x44);\n                __ptr_00[1] = *(undefined4 *)(iVar2 + 0x48);\n                *__ptr_00 = uVar12;\n                __ptr_00[2] = iVar17;\n                puVar20 = (undefined4 *)FUN_0001e8d0(iVar18,__ptr_00);\n                if (puVar20 == (undefined4 *)0x0) {\n                  free(__ptr_00);\n                  local_d4 = local_74.f_type;\n                }\n                else {\n                  if (__ptr_00 != puVar20) {\n                    \n                    abort();\n                  }\n                  local_d4 = local_74.f_type;\n                }\n              }\n            }\n            else {\nLAB_00025920:\n              local_7c = *(undefined4 *)(iVar2 + 0x48);\n              local_80 = *(undefined4 *)(iVar2 + 0x44);\n              iVar17 = FUN_0001dce0(iVar18,&local_80);\n              if (iVar17 == 0) goto LAB_000259b0;\n              local_d4 = *(int *)(iVar17 + 8);\n            }\n            if (((local_d4 == 0x6969) || (local_d4 == 0x1021994)) || (local_d4 == -0xacb2be)) {\n              bVar4 = false;\n              goto LAB_00025473;\n            }\n          }\nLAB_00025a48:\n          bVar4 = true;\n        }\nLAB_00025473:\n        local_d4 = 0x2711;\n        goto LAB_000252fb;\n      }" ({ "{") (if_statement "if (param_1[10] == 0) {\n          iVar17 = *(int *)(iVar2 + 0x2c);\n          if ((*(byte *)(iVar17 + 0x2d) & 2) != 0) {\n            iVar18 = *(int *)(iVar17 + 0x30);\n            if (iVar18 == 0) {\n              iVar18 = FUN_0001df90(0xd,0,FUN_000246b0,FUN_000246e0,puVar6);\n              *(int *)(iVar17 + 0x30) = iVar18;\n              if (iVar18 != 0) goto LAB_00025920;\nLAB_000259b0:\n              if ((local_9c < 0) ||\n                 (iVar19 = fstatfs64(local_9c,&local_74), iVar17 = local_74.f_type, iVar19 != 0))\n              goto LAB_00025a48;\n              local_d4 = local_74.f_type;\n              if ((iVar18 != 0) &&\n                 (__ptr_00 = (undefined4 *)malloc(0xc), __ptr_00 != (undefined4 *)0x0)) {\n                uVar12 = *(undefined4 *)(iVar2 + 0x44);\n                __ptr_00[1] = *(undefined4 *)(iVar2 + 0x48);\n                *__ptr_00 = uVar12;\n                __ptr_00[2] = iVar17;\n                puVar20 = (undefined4 *)FUN_0001e8d0(iVar18,__ptr_00);\n                if (puVar20 == (undefined4 *)0x0) {\n                  free(__ptr_00);\n                  local_d4 = local_74.f_type;\n                }\n                else {\n                  if (__ptr_00 != puVar20) {\n                    \n                    abort();\n                  }\n                  local_d4 = local_74.f_type;\n                }\n              }\n            }\n            else {\nLAB_00025920:\n              local_7c = *(undefined4 *)(iVar2 + 0x48);\n              local_80 = *(undefined4 *)(iVar2 + 0x44);\n              iVar17 = FUN_0001dce0(iVar18,&local_80);\n              if (iVar17 == 0) goto LAB_000259b0;\n              local_d4 = *(int *)(iVar17 + 8);\n            }\n            if (((local_d4 == 0x6969) || (local_d4 == 0x1021994)) || (local_d4 == -0xacb2be)) {\n              bVar4 = false;\n              goto LAB_00025473;\n            }\n          }\nLAB_00025a48:\n          bVar4 = true;\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          iVar17 = *(int *)(iVar2 + 0x2c);\n          if ((*(byte *)(iVar17 + 0x2d) & 2) != 0) {\n            iVar18 = *(int *)(iVar17 + 0x30);\n            if (iVar18 == 0) {\n              iVar18 = FUN_0001df90(0xd,0,FUN_000246b0,FUN_000246e0,puVar6);\n              *(int *)(iVar17 + 0x30) = iVar18;\n              if (iVar18 != 0) goto LAB_00025920;\nLAB_000259b0:\n              if ((local_9c < 0) ||\n                 (iVar19 = fstatfs64(local_9c,&local_74), iVar17 = local_74.f_type, iVar19 != 0))\n              goto LAB_00025a48;\n              local_d4 = local_74.f_type;\n              if ((iVar18 != 0) &&\n                 (__ptr_00 = (undefined4 *)malloc(0xc), __ptr_00 != (undefined4 *)0x0)) {\n                uVar12 = *(undefined4 *)(iVar2 + 0x44);\n                __ptr_00[1] = *(undefined4 *)(iVar2 + 0x48);\n                *__ptr_00 = uVar12;\n                __ptr_00[2] = iVar17;\n                puVar20 = (undefined4 *)FUN_0001e8d0(iVar18,__ptr_00);\n                if (puVar20 == (undefined4 *)0x0) {\n                  free(__ptr_00);\n                  local_d4 = local_74.f_type;\n                }\n                else {\n                  if (__ptr_00 != puVar20) {\n                    \n                    abort();\n                  }\n                  local_d4 = local_74.f_type;\n                }\n              }\n            }\n            else {\nLAB_00025920:\n              local_7c = *(undefined4 *)(iVar2 + 0x48);\n              local_80 = *(undefined4 *)(iVar2 + 0x44);\n              iVar17 = FUN_0001dce0(iVar18,&local_80);\n              if (iVar17 == 0) goto LAB_000259b0;\n              local_d4 = *(int *)(iVar17 + 8);\n            }\n            if (((local_d4 == 0x6969) || (local_d4 == 0x1021994)) || (local_d4 == -0xacb2be)) {\n              bVar4 = false;\n              goto LAB_00025473;\n            }\n          }\nLAB_00025a48:\n          bVar4 = true;\n        }" ({ "{") (expression_statement "iVar17 = *(int *)(iVar2 + 0x2c);" (assignment_expression "iVar17 = *(int *)(iVar2 + 0x2c)" (identifier "iVar17") (= "=") (pointer_expression "*(int *)(iVar2 + 0x2c)" (* "*") (cast_expression "(int *)(iVar2 + 0x2c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0x2c)" (( "(") (binary_expression "iVar2 + 0x2c" (identifier "iVar2") (+ "+") (number_literal "0x2c")) () ")"))))) (; ";")) (if_statement "if ((*(byte *)(iVar17 + 0x2d) & 2) != 0) {\n            iVar18 = *(int *)(iVar17 + 0x30);\n            if (iVar18 == 0) {\n              iVar18 = FUN_0001df90(0xd,0,FUN_000246b0,FUN_000246e0,puVar6);\n              *(int *)(iVar17 + 0x30) = iVar18;\n              if (iVar18 != 0) goto LAB_00025920;\nLAB_000259b0:\n              if ((local_9c < 0) ||\n                 (iVar19 = fstatfs64(local_9c,&local_74), iVar17 = local_74.f_type, iVar19 != 0))\n              goto LAB_00025a48;\n              local_d4 = local_74.f_type;\n              if ((iVar18 != 0) &&\n                 (__ptr_00 = (undefined4 *)malloc(0xc), __ptr_00 != (undefined4 *)0x0)) {\n                uVar12 = *(undefined4 *)(iVar2 + 0x44);\n                __ptr_00[1] = *(undefined4 *)(iVar2 + 0x48);\n                *__ptr_00 = uVar12;\n                __ptr_00[2] = iVar17;\n                puVar20 = (undefined4 *)FUN_0001e8d0(iVar18,__ptr_00);\n                if (puVar20 == (undefined4 *)0x0) {\n                  free(__ptr_00);\n                  local_d4 = local_74.f_type;\n                }\n                else {\n                  if (__ptr_00 != puVar20) {\n                    \n                    abort();\n                  }\n                  local_d4 = local_74.f_type;\n                }\n              }\n            }\n            else {\nLAB_00025920:\n              local_7c = *(undefined4 *)(iVar2 + 0x48);\n              local_80 = *(undefined4 *)(iVar2 + 0x44);\n              iVar17 = FUN_0001dce0(iVar18,&local_80);\n              if (iVar17 == 0) goto LAB_000259b0;\n              local_d4 = *(int *)(iVar17 + 8);\n            }\n            if (((local_d4 == 0x6969) || (local_d4 == 0x1021994)) || (local_d4 == -0xacb2be)) {\n              bVar4 = false;\n              goto LAB_00025473;\n            }\n          }" (if "if") (parenthesized_expression "((*(byte *)(iVar17 + 0x2d) & 2) != 0)" (( "(") (binary_expression "(*(byte *)(iVar17 + 0x2d) & 2) != 0" (parenthesized_expression "(*(byte *)(iVar17 + 0x2d) & 2)" (( "(") (binary_expression "*(byte *)(iVar17 + 0x2d) & 2" (pointer_expression "*(byte *)(iVar17 + 0x2d)" (* "*") (cast_expression "(byte *)(iVar17 + 0x2d)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar17 + 0x2d)" (( "(") (binary_expression "iVar17 + 0x2d" (identifier "iVar17") (+ "+") (number_literal "0x2d")) () ")")))) (& "&") (number_literal "2")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n            iVar18 = *(int *)(iVar17 + 0x30);\n            if (iVar18 == 0) {\n              iVar18 = FUN_0001df90(0xd,0,FUN_000246b0,FUN_000246e0,puVar6);\n              *(int *)(iVar17 + 0x30) = iVar18;\n              if (iVar18 != 0) goto LAB_00025920;\nLAB_000259b0:\n              if ((local_9c < 0) ||\n                 (iVar19 = fstatfs64(local_9c,&local_74), iVar17 = local_74.f_type, iVar19 != 0))\n              goto LAB_00025a48;\n              local_d4 = local_74.f_type;\n              if ((iVar18 != 0) &&\n                 (__ptr_00 = (undefined4 *)malloc(0xc), __ptr_00 != (undefined4 *)0x0)) {\n                uVar12 = *(undefined4 *)(iVar2 + 0x44);\n                __ptr_00[1] = *(undefined4 *)(iVar2 + 0x48);\n                *__ptr_00 = uVar12;\n                __ptr_00[2] = iVar17;\n                puVar20 = (undefined4 *)FUN_0001e8d0(iVar18,__ptr_00);\n                if (puVar20 == (undefined4 *)0x0) {\n                  free(__ptr_00);\n                  local_d4 = local_74.f_type;\n                }\n                else {\n                  if (__ptr_00 != puVar20) {\n                    \n                    abort();\n                  }\n                  local_d4 = local_74.f_type;\n                }\n              }\n            }\n            else {\nLAB_00025920:\n              local_7c = *(undefined4 *)(iVar2 + 0x48);\n              local_80 = *(undefined4 *)(iVar2 + 0x44);\n              iVar17 = FUN_0001dce0(iVar18,&local_80);\n              if (iVar17 == 0) goto LAB_000259b0;\n              local_d4 = *(int *)(iVar17 + 8);\n            }\n            if (((local_d4 == 0x6969) || (local_d4 == 0x1021994)) || (local_d4 == -0xacb2be)) {\n              bVar4 = false;\n              goto LAB_00025473;\n            }\n          }" ({ "{") (expression_statement "iVar18 = *(int *)(iVar17 + 0x30);" (assignment_expression "iVar18 = *(int *)(iVar17 + 0x30)" (identifier "iVar18") (= "=") (pointer_expression "*(int *)(iVar17 + 0x30)" (* "*") (cast_expression "(int *)(iVar17 + 0x30)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar17 + 0x30)" (( "(") (binary_expression "iVar17 + 0x30" (identifier "iVar17") (+ "+") (number_literal "0x30")) () ")"))))) (; ";")) (if_statement "if (iVar18 == 0) {\n              iVar18 = FUN_0001df90(0xd,0,FUN_000246b0,FUN_000246e0,puVar6);\n              *(int *)(iVar17 + 0x30) = iVar18;\n              if (iVar18 != 0) goto LAB_00025920;\nLAB_000259b0:\n              if ((local_9c < 0) ||\n                 (iVar19 = fstatfs64(local_9c,&local_74), iVar17 = local_74.f_type, iVar19 != 0))\n              goto LAB_00025a48;\n              local_d4 = local_74.f_type;\n              if ((iVar18 != 0) &&\n                 (__ptr_00 = (undefined4 *)malloc(0xc), __ptr_00 != (undefined4 *)0x0)) {\n                uVar12 = *(undefined4 *)(iVar2 + 0x44);\n                __ptr_00[1] = *(undefined4 *)(iVar2 + 0x48);\n                *__ptr_00 = uVar12;\n                __ptr_00[2] = iVar17;\n                puVar20 = (undefined4 *)FUN_0001e8d0(iVar18,__ptr_00);\n                if (puVar20 == (undefined4 *)0x0) {\n                  free(__ptr_00);\n                  local_d4 = local_74.f_type;\n                }\n                else {\n                  if (__ptr_00 != puVar20) {\n                    \n                    abort();\n                  }\n                  local_d4 = local_74.f_type;\n                }\n              }\n            }\n            else {\nLAB_00025920:\n              local_7c = *(undefined4 *)(iVar2 + 0x48);\n              local_80 = *(undefined4 *)(iVar2 + 0x44);\n              iVar17 = FUN_0001dce0(iVar18,&local_80);\n              if (iVar17 == 0) goto LAB_000259b0;\n              local_d4 = *(int *)(iVar17 + 8);\n            }" (if "if") (parenthesized_expression "(iVar18 == 0)" (( "(") (binary_expression "iVar18 == 0" (identifier "iVar18") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n              iVar18 = FUN_0001df90(0xd,0,FUN_000246b0,FUN_000246e0,puVar6);\n              *(int *)(iVar17 + 0x30) = iVar18;\n              if (iVar18 != 0) goto LAB_00025920;\nLAB_000259b0:\n              if ((local_9c < 0) ||\n                 (iVar19 = fstatfs64(local_9c,&local_74), iVar17 = local_74.f_type, iVar19 != 0))\n              goto LAB_00025a48;\n              local_d4 = local_74.f_type;\n              if ((iVar18 != 0) &&\n                 (__ptr_00 = (undefined4 *)malloc(0xc), __ptr_00 != (undefined4 *)0x0)) {\n                uVar12 = *(undefined4 *)(iVar2 + 0x44);\n                __ptr_00[1] = *(undefined4 *)(iVar2 + 0x48);\n                *__ptr_00 = uVar12;\n                __ptr_00[2] = iVar17;\n                puVar20 = (undefined4 *)FUN_0001e8d0(iVar18,__ptr_00);\n                if (puVar20 == (undefined4 *)0x0) {\n                  free(__ptr_00);\n                  local_d4 = local_74.f_type;\n                }\n                else {\n                  if (__ptr_00 != puVar20) {\n                    \n                    abort();\n                  }\n                  local_d4 = local_74.f_type;\n                }\n              }\n            }" ({ "{") (expression_statement "iVar18 = FUN_0001df90(0xd,0,FUN_000246b0,FUN_000246e0,puVar6);" (assignment_expression "iVar18 = FUN_0001df90(0xd,0,FUN_000246b0,FUN_000246e0,puVar6)" (identifier "iVar18") (= "=") (call_expression "FUN_0001df90(0xd,0,FUN_000246b0,FUN_000246e0,puVar6)" (identifier "FUN_0001df90") (argument_list "(0xd,0,FUN_000246b0,FUN_000246e0,puVar6)" (( "(") (number_literal "0xd") (, ",") (number_literal "0") (, ",") (identifier "FUN_000246b0") (, ",") (identifier "FUN_000246e0") (, ",") (identifier "puVar6") () ")")))) (; ";")) (expression_statement "*(int *)(iVar17 + 0x30) = iVar18;" (assignment_expression "*(int *)(iVar17 + 0x30) = iVar18" (pointer_expression "*(int *)(iVar17 + 0x30)" (* "*") (cast_expression "(int *)(iVar17 + 0x30)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar17 + 0x30)" (( "(") (binary_expression "iVar17 + 0x30" (identifier "iVar17") (+ "+") (number_literal "0x30")) () ")")))) (= "=") (identifier "iVar18")) (; ";")) (if_statement "if (iVar18 != 0) goto LAB_00025920;" (if "if") (parenthesized_expression "(iVar18 != 0)" (( "(") (binary_expression "iVar18 != 0" (identifier "iVar18") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_00025920;" (goto "goto") (statement_identifier "LAB_00025920") (; ";"))) (labeled_statement "LAB_000259b0:\n              if ((local_9c < 0) ||\n                 (iVar19 = fstatfs64(local_9c,&local_74), iVar17 = local_74.f_type, iVar19 != 0))\n              goto LAB_00025a48;" (statement_identifier "LAB_000259b0") (: ":") (if_statement "if ((local_9c < 0) ||\n                 (iVar19 = fstatfs64(local_9c,&local_74), iVar17 = local_74.f_type, iVar19 != 0))\n              goto LAB_00025a48;" (if "if") (parenthesized_expression "((local_9c < 0) ||\n                 (iVar19 = fstatfs64(local_9c,&local_74), iVar17 = local_74.f_type, iVar19 != 0))" (( "(") (binary_expression "(local_9c < 0) ||\n                 (iVar19 = fstatfs64(local_9c,&local_74), iVar17 = local_74.f_type, iVar19 != 0)" (parenthesized_expression "(local_9c < 0)" (( "(") (binary_expression "local_9c < 0" (identifier "local_9c") (< "<") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(iVar19 = fstatfs64(local_9c,&local_74), iVar17 = local_74.f_type, iVar19 != 0)" (( "(") (comma_expression "iVar19 = fstatfs64(local_9c,&local_74), iVar17 = local_74.f_type, iVar19 != 0" (assignment_expression "iVar19 = fstatfs64(local_9c,&local_74)" (identifier "iVar19") (= "=") (call_expression "fstatfs64(local_9c,&local_74)" (identifier "fstatfs64") (argument_list "(local_9c,&local_74)" (( "(") (identifier "local_9c") (, ",") (pointer_expression "&local_74" (& "&") (identifier "local_74")) () ")")))) (, ",") (comma_expression "iVar17 = local_74.f_type, iVar19 != 0" (assignment_expression "iVar17 = local_74.f_type" (identifier "iVar17") (= "=") (field_expression "local_74.f_type" (identifier "local_74") (. ".") (field_identifier "f_type"))) (, ",") (binary_expression "iVar19 != 0" (identifier "iVar19") (!= "!=") (number_literal "0")))) () ")"))) () ")")) (goto_statement "goto LAB_00025a48;" (goto "goto") (statement_identifier "LAB_00025a48") (; ";")))) (expression_statement "local_d4 = local_74.f_type;" (assignment_expression "local_d4 = local_74.f_type" (identifier "local_d4") (= "=") (field_expression "local_74.f_type" (identifier "local_74") (. ".") (field_identifier "f_type"))) (; ";")) (if_statement "if ((iVar18 != 0) &&\n                 (__ptr_00 = (undefined4 *)malloc(0xc), __ptr_00 != (undefined4 *)0x0)) {\n                uVar12 = *(undefined4 *)(iVar2 + 0x44);\n                __ptr_00[1] = *(undefined4 *)(iVar2 + 0x48);\n                *__ptr_00 = uVar12;\n                __ptr_00[2] = iVar17;\n                puVar20 = (undefined4 *)FUN_0001e8d0(iVar18,__ptr_00);\n                if (puVar20 == (undefined4 *)0x0) {\n                  free(__ptr_00);\n                  local_d4 = local_74.f_type;\n                }\n                else {\n                  if (__ptr_00 != puVar20) {\n                    \n                    abort();\n                  }\n                  local_d4 = local_74.f_type;\n                }\n              }" (if "if") (parenthesized_expression "((iVar18 != 0) &&\n                 (__ptr_00 = (undefined4 *)malloc(0xc), __ptr_00 != (undefined4 *)0x0))" (( "(") (binary_expression "(iVar18 != 0) &&\n                 (__ptr_00 = (undefined4 *)malloc(0xc), __ptr_00 != (undefined4 *)0x0)" (parenthesized_expression "(iVar18 != 0)" (( "(") (binary_expression "iVar18 != 0" (identifier "iVar18") (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(__ptr_00 = (undefined4 *)malloc(0xc), __ptr_00 != (undefined4 *)0x0)" (( "(") (comma_expression "__ptr_00 = (undefined4 *)malloc(0xc), __ptr_00 != (undefined4 *)0x0" (assignment_expression "__ptr_00 = (undefined4 *)malloc(0xc)" (identifier "__ptr_00") (= "=") (cast_expression "(undefined4 *)malloc(0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "malloc(0xc)" (identifier "malloc") (argument_list "(0xc)" (( "(") (number_literal "0xc") () ")"))))) (, ",") (binary_expression "__ptr_00 != (undefined4 *)0x0" (identifier "__ptr_00") (!= "!=") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")))) () ")"))) () ")")) (compound_statement "{\n                uVar12 = *(undefined4 *)(iVar2 + 0x44);\n                __ptr_00[1] = *(undefined4 *)(iVar2 + 0x48);\n                *__ptr_00 = uVar12;\n                __ptr_00[2] = iVar17;\n                puVar20 = (undefined4 *)FUN_0001e8d0(iVar18,__ptr_00);\n                if (puVar20 == (undefined4 *)0x0) {\n                  free(__ptr_00);\n                  local_d4 = local_74.f_type;\n                }\n                else {\n                  if (__ptr_00 != puVar20) {\n                    \n                    abort();\n                  }\n                  local_d4 = local_74.f_type;\n                }\n              }" ({ "{") (expression_statement "uVar12 = *(undefined4 *)(iVar2 + 0x44);" (assignment_expression "uVar12 = *(undefined4 *)(iVar2 + 0x44)" (identifier "uVar12") (= "=") (pointer_expression "*(undefined4 *)(iVar2 + 0x44)" (* "*") (cast_expression "(undefined4 *)(iVar2 + 0x44)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0x44)" (( "(") (binary_expression "iVar2 + 0x44" (identifier "iVar2") (+ "+") (number_literal "0x44")) () ")"))))) (; ";")) (expression_statement "__ptr_00[1] = *(undefined4 *)(iVar2 + 0x48);" (assignment_expression "__ptr_00[1] = *(undefined4 *)(iVar2 + 0x48)" (subscript_expression "__ptr_00[1]" (identifier "__ptr_00") ([ "[") (number_literal "1") (] "]")) (= "=") (pointer_expression "*(undefined4 *)(iVar2 + 0x48)" (* "*") (cast_expression "(undefined4 *)(iVar2 + 0x48)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0x48)" (( "(") (binary_expression "iVar2 + 0x48" (identifier "iVar2") (+ "+") (number_literal "0x48")) () ")"))))) (; ";")) (expression_statement "*__ptr_00 = uVar12;" (assignment_expression "*__ptr_00 = uVar12" (pointer_expression "*__ptr_00" (* "*") (identifier "__ptr_00")) (= "=") (identifier "uVar12")) (; ";")) (expression_statement "__ptr_00[2] = iVar17;" (assignment_expression "__ptr_00[2] = iVar17" (subscript_expression "__ptr_00[2]" (identifier "__ptr_00") ([ "[") (number_literal "2") (] "]")) (= "=") (identifier "iVar17")) (; ";")) (expression_statement "puVar20 = (undefined4 *)FUN_0001e8d0(iVar18,__ptr_00);" (assignment_expression "puVar20 = (undefined4 *)FUN_0001e8d0(iVar18,__ptr_00)" (identifier "puVar20") (= "=") (cast_expression "(undefined4 *)FUN_0001e8d0(iVar18,__ptr_00)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_0001e8d0(iVar18,__ptr_00)" (identifier "FUN_0001e8d0") (argument_list "(iVar18,__ptr_00)" (( "(") (identifier "iVar18") (, ",") (identifier "__ptr_00") () ")"))))) (; ";")) (if_statement "if (puVar20 == (undefined4 *)0x0) {\n                  free(__ptr_00);\n                  local_d4 = local_74.f_type;\n                }\n                else {\n                  if (__ptr_00 != puVar20) {\n                    \n                    abort();\n                  }\n                  local_d4 = local_74.f_type;\n                }" (if "if") (parenthesized_expression "(puVar20 == (undefined4 *)0x0)" (( "(") (binary_expression "puVar20 == (undefined4 *)0x0" (identifier "puVar20") (== "==") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n                  free(__ptr_00);\n                  local_d4 = local_74.f_type;\n                }" ({ "{") (expression_statement "free(__ptr_00);" (call_expression "free(__ptr_00)" (identifier "free") (argument_list "(__ptr_00)" (( "(") (identifier "__ptr_00") () ")"))) (; ";")) (expression_statement "local_d4 = local_74.f_type;" (assignment_expression "local_d4 = local_74.f_type" (identifier "local_d4") (= "=") (field_expression "local_74.f_type" (identifier "local_74") (. ".") (field_identifier "f_type"))) (; ";")) (} "}")) (else_clause "else {\n                  if (__ptr_00 != puVar20) {\n                    \n                    abort();\n                  }\n                  local_d4 = local_74.f_type;\n                }" (else "else") (compound_statement "{\n                  if (__ptr_00 != puVar20) {\n                    \n                    abort();\n                  }\n                  local_d4 = local_74.f_type;\n                }" ({ "{") (if_statement "if (__ptr_00 != puVar20) {\n                    \n                    abort();\n                  }" (if "if") (parenthesized_expression "(__ptr_00 != puVar20)" (( "(") (binary_expression "__ptr_00 != puVar20" (identifier "__ptr_00") (!= "!=") (identifier "puVar20")) () ")")) (compound_statement "{\n                    \n                    abort();\n                  }" ({ "{") (expression_statement "abort();" (call_expression "abort()" (identifier "abort") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (expression_statement "local_d4 = local_74.f_type;" (assignment_expression "local_d4 = local_74.f_type" (identifier "local_d4") (= "=") (field_expression "local_74.f_type" (identifier "local_74") (. ".") (field_identifier "f_type"))) (; ";")) (} "}")))) (} "}"))) (} "}")) (else_clause "else {\nLAB_00025920:\n              local_7c = *(undefined4 *)(iVar2 + 0x48);\n              local_80 = *(undefined4 *)(iVar2 + 0x44);\n              iVar17 = FUN_0001dce0(iVar18,&local_80);\n              if (iVar17 == 0) goto LAB_000259b0;\n              local_d4 = *(int *)(iVar17 + 8);\n            }" (else "else") (compound_statement "{\nLAB_00025920:\n              local_7c = *(undefined4 *)(iVar2 + 0x48);\n              local_80 = *(undefined4 *)(iVar2 + 0x44);\n              iVar17 = FUN_0001dce0(iVar18,&local_80);\n              if (iVar17 == 0) goto LAB_000259b0;\n              local_d4 = *(int *)(iVar17 + 8);\n            }" ({ "{") (labeled_statement "LAB_00025920:\n              local_7c = *(undefined4 *)(iVar2 + 0x48);" (statement_identifier "LAB_00025920") (: ":") (expression_statement "local_7c = *(undefined4 *)(iVar2 + 0x48);" (assignment_expression "local_7c = *(undefined4 *)(iVar2 + 0x48)" (identifier "local_7c") (= "=") (pointer_expression "*(undefined4 *)(iVar2 + 0x48)" (* "*") (cast_expression "(undefined4 *)(iVar2 + 0x48)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0x48)" (( "(") (binary_expression "iVar2 + 0x48" (identifier "iVar2") (+ "+") (number_literal "0x48")) () ")"))))) (; ";"))) (expression_statement "local_80 = *(undefined4 *)(iVar2 + 0x44);" (assignment_expression "local_80 = *(undefined4 *)(iVar2 + 0x44)" (identifier "local_80") (= "=") (pointer_expression "*(undefined4 *)(iVar2 + 0x44)" (* "*") (cast_expression "(undefined4 *)(iVar2 + 0x44)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0x44)" (( "(") (binary_expression "iVar2 + 0x44" (identifier "iVar2") (+ "+") (number_literal "0x44")) () ")"))))) (; ";")) (expression_statement "iVar17 = FUN_0001dce0(iVar18,&local_80);" (assignment_expression "iVar17 = FUN_0001dce0(iVar18,&local_80)" (identifier "iVar17") (= "=") (call_expression "FUN_0001dce0(iVar18,&local_80)" (identifier "FUN_0001dce0") (argument_list "(iVar18,&local_80)" (( "(") (identifier "iVar18") (, ",") (pointer_expression "&local_80" (& "&") (identifier "local_80")) () ")")))) (; ";")) (if_statement "if (iVar17 == 0) goto LAB_000259b0;" (if "if") (parenthesized_expression "(iVar17 == 0)" (( "(") (binary_expression "iVar17 == 0" (identifier "iVar17") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_000259b0;" (goto "goto") (statement_identifier "LAB_000259b0") (; ";"))) (expression_statement "local_d4 = *(int *)(iVar17 + 8);" (assignment_expression "local_d4 = *(int *)(iVar17 + 8)" (identifier "local_d4") (= "=") (pointer_expression "*(int *)(iVar17 + 8)" (* "*") (cast_expression "(int *)(iVar17 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar17 + 8)" (( "(") (binary_expression "iVar17 + 8" (identifier "iVar17") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (} "}")))) (if_statement "if (((local_d4 == 0x6969) || (local_d4 == 0x1021994)) || (local_d4 == -0xacb2be)) {\n              bVar4 = false;\n              goto LAB_00025473;\n            }" (if "if") (parenthesized_expression "(((local_d4 == 0x6969) || (local_d4 == 0x1021994)) || (local_d4 == -0xacb2be))" (( "(") (binary_expression "((local_d4 == 0x6969) || (local_d4 == 0x1021994)) || (local_d4 == -0xacb2be)" (parenthesized_expression "((local_d4 == 0x6969) || (local_d4 == 0x1021994))" (( "(") (binary_expression "(local_d4 == 0x6969) || (local_d4 == 0x1021994)" (parenthesized_expression "(local_d4 == 0x6969)" (( "(") (binary_expression "local_d4 == 0x6969" (identifier "local_d4") (== "==") (number_literal "0x6969")) () ")")) (|| "||") (parenthesized_expression "(local_d4 == 0x1021994)" (( "(") (binary_expression "local_d4 == 0x1021994" (identifier "local_d4") (== "==") (number_literal "0x1021994")) () ")"))) () ")")) (|| "||") (parenthesized_expression "(local_d4 == -0xacb2be)" (( "(") (binary_expression "local_d4 == -0xacb2be" (identifier "local_d4") (== "==") (number_literal "-0xacb2be")) () ")"))) () ")")) (compound_statement "{\n              bVar4 = false;\n              goto LAB_00025473;\n            }" ({ "{") (expression_statement "bVar4 = false;" (assignment_expression "bVar4 = false" (identifier "bVar4") (= "=") (false "false")) (; ";")) (goto_statement "goto LAB_00025473;" (goto "goto") (statement_identifier "LAB_00025473") (; ";")) (} "}"))) (} "}"))) (labeled_statement "LAB_00025a48:\n          bVar4 = true;" (statement_identifier "LAB_00025a48") (: ":") (expression_statement "bVar4 = true;" (assignment_expression "bVar4 = true" (identifier "bVar4") (= "=") (true "true")) (; ";"))) (} "}"))) (labeled_statement "LAB_00025473:\n        local_d4 = 0x2711;" (statement_identifier "LAB_00025473") (: ":") (expression_statement "local_d4 = 0x2711;" (assignment_expression "local_d4 = 0x2711" (identifier "local_d4") (= "=") (number_literal "0x2711")) (; ";"))) (goto_statement "goto LAB_000252fb;" (goto "goto") (statement_identifier "LAB_000252fb") (; ";")) (} "}"))) (expression_statement "local_d4 = local_d4 + 1;" (assignment_expression "local_d4 = local_d4 + 1" (identifier "local_d4") (= "=") (binary_expression "local_d4 + 1" (identifier "local_d4") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(local_d4 < local_a8)" (( "(") (binary_expression "local_d4 < local_a8" (identifier "local_d4") (< "<") (identifier "local_a8")) () ")")) (; ";"))) (labeled_statement "LAB_000256de:\n    if (bVar3) {\n      iVar15 = param_1[5];\n      for (iVar17 = param_1[1]; iVar17 != 0; iVar17 = *(int *)(iVar17 + 8)) {\n        while (*(int *)(iVar17 + 0x18) != iVar17 + 0xa4) {\n          iVar18 = *(int *)(iVar17 + 0x1c);\n          *(int *)(iVar17 + 0x1c) = iVar15;\n          *(int *)(iVar17 + 0x18) = (*(int *)(iVar17 + 0x18) - iVar18) + iVar15;\n          iVar17 = *(int *)(iVar17 + 8);\n          if (iVar17 == 0) goto LAB_00025aef;\n        }\n        *(int *)(iVar17 + 0x1c) = iVar15;\n      }\nLAB_00025aef:\n      iVar17 = *(int *)((int)local_b8 + 0x30);\n      pvVar11 = local_b8;\n      while (-1 < iVar17) {\n        while( true ) {\n          if (*(int *)((int)pvVar11 + 0x18) != (int)pvVar11 + 0xa4) {\n            *(int *)((int)pvVar11 + 0x18) =\n                 (*(int *)((int)pvVar11 + 0x18) - *(int *)((int)pvVar11 + 0x1c)) + iVar15;\n          }\n          pvVar1 = *(void **)((int)pvVar11 + 8);\n          *(int *)((int)pvVar11 + 0x1c) = iVar15;\n          if (pvVar1 == (void *)0x0) break;\n          pvVar11 = pvVar1;\n          if (*(int *)((int)pvVar1 + 0x30) < 0) goto LAB_000256e9;\n        }\n        pvVar11 = *(void **)((int)pvVar11 + 4);\n        iVar17 = *(int *)((int)pvVar11 + 0x30);\n      }\n    }" (statement_identifier "LAB_000256de") (: ":") (if_statement "if (bVar3) {\n      iVar15 = param_1[5];\n      for (iVar17 = param_1[1]; iVar17 != 0; iVar17 = *(int *)(iVar17 + 8)) {\n        while (*(int *)(iVar17 + 0x18) != iVar17 + 0xa4) {\n          iVar18 = *(int *)(iVar17 + 0x1c);\n          *(int *)(iVar17 + 0x1c) = iVar15;\n          *(int *)(iVar17 + 0x18) = (*(int *)(iVar17 + 0x18) - iVar18) + iVar15;\n          iVar17 = *(int *)(iVar17 + 8);\n          if (iVar17 == 0) goto LAB_00025aef;\n        }\n        *(int *)(iVar17 + 0x1c) = iVar15;\n      }\nLAB_00025aef:\n      iVar17 = *(int *)((int)local_b8 + 0x30);\n      pvVar11 = local_b8;\n      while (-1 < iVar17) {\n        while( true ) {\n          if (*(int *)((int)pvVar11 + 0x18) != (int)pvVar11 + 0xa4) {\n            *(int *)((int)pvVar11 + 0x18) =\n                 (*(int *)((int)pvVar11 + 0x18) - *(int *)((int)pvVar11 + 0x1c)) + iVar15;\n          }\n          pvVar1 = *(void **)((int)pvVar11 + 8);\n          *(int *)((int)pvVar11 + 0x1c) = iVar15;\n          if (pvVar1 == (void *)0x0) break;\n          pvVar11 = pvVar1;\n          if (*(int *)((int)pvVar1 + 0x30) < 0) goto LAB_000256e9;\n        }\n        pvVar11 = *(void **)((int)pvVar11 + 4);\n        iVar17 = *(int *)((int)pvVar11 + 0x30);\n      }\n    }" (if "if") (parenthesized_expression "(bVar3)" (( "(") (identifier "bVar3") () ")")) (compound_statement "{\n      iVar15 = param_1[5];\n      for (iVar17 = param_1[1]; iVar17 != 0; iVar17 = *(int *)(iVar17 + 8)) {\n        while (*(int *)(iVar17 + 0x18) != iVar17 + 0xa4) {\n          iVar18 = *(int *)(iVar17 + 0x1c);\n          *(int *)(iVar17 + 0x1c) = iVar15;\n          *(int *)(iVar17 + 0x18) = (*(int *)(iVar17 + 0x18) - iVar18) + iVar15;\n          iVar17 = *(int *)(iVar17 + 8);\n          if (iVar17 == 0) goto LAB_00025aef;\n        }\n        *(int *)(iVar17 + 0x1c) = iVar15;\n      }\nLAB_00025aef:\n      iVar17 = *(int *)((int)local_b8 + 0x30);\n      pvVar11 = local_b8;\n      while (-1 < iVar17) {\n        while( true ) {\n          if (*(int *)((int)pvVar11 + 0x18) != (int)pvVar11 + 0xa4) {\n            *(int *)((int)pvVar11 + 0x18) =\n                 (*(int *)((int)pvVar11 + 0x18) - *(int *)((int)pvVar11 + 0x1c)) + iVar15;\n          }\n          pvVar1 = *(void **)((int)pvVar11 + 8);\n          *(int *)((int)pvVar11 + 0x1c) = iVar15;\n          if (pvVar1 == (void *)0x0) break;\n          pvVar11 = pvVar1;\n          if (*(int *)((int)pvVar1 + 0x30) < 0) goto LAB_000256e9;\n        }\n        pvVar11 = *(void **)((int)pvVar11 + 4);\n        iVar17 = *(int *)((int)pvVar11 + 0x30);\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 (iVar17 = param_1[1]; iVar17 != 0; iVar17 = *(int *)(iVar17 + 8)) {\n        while (*(int *)(iVar17 + 0x18) != iVar17 + 0xa4) {\n          iVar18 = *(int *)(iVar17 + 0x1c);\n          *(int *)(iVar17 + 0x1c) = iVar15;\n          *(int *)(iVar17 + 0x18) = (*(int *)(iVar17 + 0x18) - iVar18) + iVar15;\n          iVar17 = *(int *)(iVar17 + 8);\n          if (iVar17 == 0) goto LAB_00025aef;\n        }\n        *(int *)(iVar17 + 0x1c) = iVar15;\n      }" (for "for") (( "(") (assignment_expression "iVar17 = param_1[1]" (identifier "iVar17") (= "=") (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]"))) (; ";") (binary_expression "iVar17 != 0" (identifier "iVar17") (!= "!=") (number_literal "0")) (; ";") (assignment_expression "iVar17 = *(int *)(iVar17 + 8)" (identifier "iVar17") (= "=") (pointer_expression "*(int *)(iVar17 + 8)" (* "*") (cast_expression "(int *)(iVar17 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar17 + 8)" (( "(") (binary_expression "iVar17 + 8" (identifier "iVar17") (+ "+") (number_literal "8")) () ")"))))) () ")") (compound_statement "{\n        while (*(int *)(iVar17 + 0x18) != iVar17 + 0xa4) {\n          iVar18 = *(int *)(iVar17 + 0x1c);\n          *(int *)(iVar17 + 0x1c) = iVar15;\n          *(int *)(iVar17 + 0x18) = (*(int *)(iVar17 + 0x18) - iVar18) + iVar15;\n          iVar17 = *(int *)(iVar17 + 8);\n          if (iVar17 == 0) goto LAB_00025aef;\n        }\n        *(int *)(iVar17 + 0x1c) = iVar15;\n      }" ({ "{") (while_statement "while (*(int *)(iVar17 + 0x18) != iVar17 + 0xa4) {\n          iVar18 = *(int *)(iVar17 + 0x1c);\n          *(int *)(iVar17 + 0x1c) = iVar15;\n          *(int *)(iVar17 + 0x18) = (*(int *)(iVar17 + 0x18) - iVar18) + iVar15;\n          iVar17 = *(int *)(iVar17 + 8);\n          if (iVar17 == 0) goto LAB_00025aef;\n        }" (while "while") (parenthesized_expression "(*(int *)(iVar17 + 0x18) != iVar17 + 0xa4)" (( "(") (binary_expression "*(int *)(iVar17 + 0x18) != iVar17 + 0xa4" (pointer_expression "*(int *)(iVar17 + 0x18)" (* "*") (cast_expression "(int *)(iVar17 + 0x18)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar17 + 0x18)" (( "(") (binary_expression "iVar17 + 0x18" (identifier "iVar17") (+ "+") (number_literal "0x18")) () ")")))) (!= "!=") (binary_expression "iVar17 + 0xa4" (identifier "iVar17") (+ "+") (number_literal "0xa4"))) () ")")) (compound_statement "{\n          iVar18 = *(int *)(iVar17 + 0x1c);\n          *(int *)(iVar17 + 0x1c) = iVar15;\n          *(int *)(iVar17 + 0x18) = (*(int *)(iVar17 + 0x18) - iVar18) + iVar15;\n          iVar17 = *(int *)(iVar17 + 8);\n          if (iVar17 == 0) goto LAB_00025aef;\n        }" ({ "{") (expression_statement "iVar18 = *(int *)(iVar17 + 0x1c);" (assignment_expression "iVar18 = *(int *)(iVar17 + 0x1c)" (identifier "iVar18") (= "=") (pointer_expression "*(int *)(iVar17 + 0x1c)" (* "*") (cast_expression "(int *)(iVar17 + 0x1c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar17 + 0x1c)" (( "(") (binary_expression "iVar17 + 0x1c" (identifier "iVar17") (+ "+") (number_literal "0x1c")) () ")"))))) (; ";")) (expression_statement "*(int *)(iVar17 + 0x1c) = iVar15;" (assignment_expression "*(int *)(iVar17 + 0x1c) = iVar15" (pointer_expression "*(int *)(iVar17 + 0x1c)" (* "*") (cast_expression "(int *)(iVar17 + 0x1c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar17 + 0x1c)" (( "(") (binary_expression "iVar17 + 0x1c" (identifier "iVar17") (+ "+") (number_literal "0x1c")) () ")")))) (= "=") (identifier "iVar15")) (; ";")) (expression_statement "*(int *)(iVar17 + 0x18) = (*(int *)(iVar17 + 0x18) - iVar18) + iVar15;" (assignment_expression "*(int *)(iVar17 + 0x18) = (*(int *)(iVar17 + 0x18) - iVar18) + iVar15" (pointer_expression "*(int *)(iVar17 + 0x18)" (* "*") (cast_expression "(int *)(iVar17 + 0x18)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar17 + 0x18)" (( "(") (binary_expression "iVar17 + 0x18" (identifier "iVar17") (+ "+") (number_literal "0x18")) () ")")))) (= "=") (binary_expression "(*(int *)(iVar17 + 0x18) - iVar18) + iVar15" (parenthesized_expression "(*(int *)(iVar17 + 0x18) - iVar18)" (( "(") (binary_expression "*(int *)(iVar17 + 0x18) - iVar18" (pointer_expression "*(int *)(iVar17 + 0x18)" (* "*") (cast_expression "(int *)(iVar17 + 0x18)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar17 + 0x18)" (( "(") (binary_expression "iVar17 + 0x18" (identifier "iVar17") (+ "+") (number_literal "0x18")) () ")")))) (- "-") (identifier "iVar18")) () ")")) (+ "+") (identifier "iVar15"))) (; ";")) (expression_statement "iVar17 = *(int *)(iVar17 + 8);" (assignment_expression "iVar17 = *(int *)(iVar17 + 8)" (identifier "iVar17") (= "=") (pointer_expression "*(int *)(iVar17 + 8)" (* "*") (cast_expression "(int *)(iVar17 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar17 + 8)" (( "(") (binary_expression "iVar17 + 8" (identifier "iVar17") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (if_statement "if (iVar17 == 0) goto LAB_00025aef;" (if "if") (parenthesized_expression "(iVar17 == 0)" (( "(") (binary_expression "iVar17 == 0" (identifier "iVar17") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_00025aef;" (goto "goto") (statement_identifier "LAB_00025aef") (; ";"))) (} "}"))) (expression_statement "*(int *)(iVar17 + 0x1c) = iVar15;" (assignment_expression "*(int *)(iVar17 + 0x1c) = iVar15" (pointer_expression "*(int *)(iVar17 + 0x1c)" (* "*") (cast_expression "(int *)(iVar17 + 0x1c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar17 + 0x1c)" (( "(") (binary_expression "iVar17 + 0x1c" (identifier "iVar17") (+ "+") (number_literal "0x1c")) () ")")))) (= "=") (identifier "iVar15")) (; ";")) (} "}"))) (labeled_statement "LAB_00025aef:\n      iVar17 = *(int *)((int)local_b8 + 0x30);" (statement_identifier "LAB_00025aef") (: ":") (expression_statement "iVar17 = *(int *)((int)local_b8 + 0x30);" (assignment_expression "iVar17 = *(int *)((int)local_b8 + 0x30)" (identifier "iVar17") (= "=") (pointer_expression "*(int *)((int)local_b8 + 0x30)" (* "*") (cast_expression "(int *)((int)local_b8 + 0x30)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)local_b8 + 0x30)" (( "(") (binary_expression "(int)local_b8 + 0x30" (cast_expression "(int)local_b8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_b8")) (+ "+") (number_literal "0x30")) () ")"))))) (; ";"))) (expression_statement "pvVar11 = local_b8;" (assignment_expression "pvVar11 = local_b8" (identifier "pvVar11") (= "=") (identifier "local_b8")) (; ";")) (while_statement "while (-1 < iVar17) {\n        while( true ) {\n          if (*(int *)((int)pvVar11 + 0x18) != (int)pvVar11 + 0xa4) {\n            *(int *)((int)pvVar11 + 0x18) =\n                 (*(int *)((int)pvVar11 + 0x18) - *(int *)((int)pvVar11 + 0x1c)) + iVar15;\n          }\n          pvVar1 = *(void **)((int)pvVar11 + 8);\n          *(int *)((int)pvVar11 + 0x1c) = iVar15;\n          if (pvVar1 == (void *)0x0) break;\n          pvVar11 = pvVar1;\n          if (*(int *)((int)pvVar1 + 0x30) < 0) goto LAB_000256e9;\n        }\n        pvVar11 = *(void **)((int)pvVar11 + 4);\n        iVar17 = *(int *)((int)pvVar11 + 0x30);\n      }" (while "while") (parenthesized_expression "(-1 < iVar17)" (( "(") (binary_expression "-1 < iVar17" (number_literal "-1") (< "<") (identifier "iVar17")) () ")")) (compound_statement "{\n        while( true ) {\n          if (*(int *)((int)pvVar11 + 0x18) != (int)pvVar11 + 0xa4) {\n            *(int *)((int)pvVar11 + 0x18) =\n                 (*(int *)((int)pvVar11 + 0x18) - *(int *)((int)pvVar11 + 0x1c)) + iVar15;\n          }\n          pvVar1 = *(void **)((int)pvVar11 + 8);\n          *(int *)((int)pvVar11 + 0x1c) = iVar15;\n          if (pvVar1 == (void *)0x0) break;\n          pvVar11 = pvVar1;\n          if (*(int *)((int)pvVar1 + 0x30) < 0) goto LAB_000256e9;\n        }\n        pvVar11 = *(void **)((int)pvVar11 + 4);\n        iVar17 = *(int *)((int)pvVar11 + 0x30);\n      }" ({ "{") (while_statement "while( true ) {\n          if (*(int *)((int)pvVar11 + 0x18) != (int)pvVar11 + 0xa4) {\n            *(int *)((int)pvVar11 + 0x18) =\n                 (*(int *)((int)pvVar11 + 0x18) - *(int *)((int)pvVar11 + 0x1c)) + iVar15;\n          }\n          pvVar1 = *(void **)((int)pvVar11 + 8);\n          *(int *)((int)pvVar11 + 0x1c) = iVar15;\n          if (pvVar1 == (void *)0x0) break;\n          pvVar11 = pvVar1;\n          if (*(int *)((int)pvVar1 + 0x30) < 0) goto LAB_000256e9;\n        }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n          if (*(int *)((int)pvVar11 + 0x18) != (int)pvVar11 + 0xa4) {\n            *(int *)((int)pvVar11 + 0x18) =\n                 (*(int *)((int)pvVar11 + 0x18) - *(int *)((int)pvVar11 + 0x1c)) + iVar15;\n          }\n          pvVar1 = *(void **)((int)pvVar11 + 8);\n          *(int *)((int)pvVar11 + 0x1c) = iVar15;\n          if (pvVar1 == (void *)0x0) break;\n          pvVar11 = pvVar1;\n          if (*(int *)((int)pvVar1 + 0x30) < 0) goto LAB_000256e9;\n        }" ({ "{") (if_statement "if (*(int *)((int)pvVar11 + 0x18) != (int)pvVar11 + 0xa4) {\n            *(int *)((int)pvVar11 + 0x18) =\n                 (*(int *)((int)pvVar11 + 0x18) - *(int *)((int)pvVar11 + 0x1c)) + iVar15;\n          }" (if "if") (parenthesized_expression "(*(int *)((int)pvVar11 + 0x18) != (int)pvVar11 + 0xa4)" (( "(") (binary_expression "*(int *)((int)pvVar11 + 0x18) != (int)pvVar11 + 0xa4" (pointer_expression "*(int *)((int)pvVar11 + 0x18)" (* "*") (cast_expression "(int *)((int)pvVar11 + 0x18)" (( "(") (type_descriptor "int *" (primitive_type "int") (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")) () ")")))) (!= "!=") (binary_expression "(int)pvVar11 + 0xa4" (cast_expression "(int)pvVar11" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pvVar11")) (+ "+") (number_literal "0xa4"))) () ")")) (compound_statement "{\n            *(int *)((int)pvVar11 + 0x18) =\n                 (*(int *)((int)pvVar11 + 0x18) - *(int *)((int)pvVar11 + 0x1c)) + iVar15;\n          }" ({ "{") (expression_statement "*(int *)((int)pvVar11 + 0x18) =\n                 (*(int *)((int)pvVar11 + 0x18) - *(int *)((int)pvVar11 + 0x1c)) + iVar15;" (assignment_expression "*(int *)((int)pvVar11 + 0x18) =\n                 (*(int *)((int)pvVar11 + 0x18) - *(int *)((int)pvVar11 + 0x1c)) + iVar15" (pointer_expression "*(int *)((int)pvVar11 + 0x18)" (* "*") (cast_expression "(int *)((int)pvVar11 + 0x18)" (( "(") (type_descriptor "int *" (primitive_type "int") (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")) () ")")))) (= "=") (binary_expression "(*(int *)((int)pvVar11 + 0x18) - *(int *)((int)pvVar11 + 0x1c)) + iVar15" (parenthesized_expression "(*(int *)((int)pvVar11 + 0x18) - *(int *)((int)pvVar11 + 0x1c))" (( "(") (binary_expression "*(int *)((int)pvVar11 + 0x18) - *(int *)((int)pvVar11 + 0x1c)" (pointer_expression "*(int *)((int)pvVar11 + 0x18)" (* "*") (cast_expression "(int *)((int)pvVar11 + 0x18)" (( "(") (type_descriptor "int *" (primitive_type "int") (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 "*(int *)((int)pvVar11 + 0x1c)" (* "*") (cast_expression "(int *)((int)pvVar11 + 0x1c)" (( "(") (type_descriptor "int *" (primitive_type "int") (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")) () ")"))))) () ")")) (+ "+") (identifier "iVar15"))) (; ";")) (} "}"))) (expression_statement "pvVar1 = *(void **)((int)pvVar11 + 8);" (assignment_expression "pvVar1 = *(void **)((int)pvVar11 + 8)" (identifier "pvVar1") (= "=") (pointer_expression "*(void **)((int)pvVar11 + 8)" (* "*") (cast_expression "(void **)((int)pvVar11 + 8)" (( "(") (type_descriptor "void **" (primitive_type "void") (abstract_pointer_declarator "**" (* "*") (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")) () ")"))))) (; ";")) (expression_statement "*(int *)((int)pvVar11 + 0x1c) = iVar15;" (assignment_expression "*(int *)((int)pvVar11 + 0x1c) = iVar15" (pointer_expression "*(int *)((int)pvVar11 + 0x1c)" (* "*") (cast_expression "(int *)((int)pvVar11 + 0x1c)" (( "(") (type_descriptor "int *" (primitive_type "int") (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")) () ")")))) (= "=") (identifier "iVar15")) (; ";")) (if_statement "if (pvVar1 == (void *)0x0) break;" (if "if") (parenthesized_expression "(pvVar1 == (void *)0x0)" (( "(") (binary_expression "pvVar1 == (void *)0x0" (identifier "pvVar1") (== "==") (cast_expression "(void *)0x0" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "pvVar11 = pvVar1;" (assignment_expression "pvVar11 = pvVar1" (identifier "pvVar11") (= "=") (identifier "pvVar1")) (; ";")) (if_statement "if (*(int *)((int)pvVar1 + 0x30) < 0) goto LAB_000256e9;" (if "if") (parenthesized_expression "(*(int *)((int)pvVar1 + 0x30) < 0)" (( "(") (binary_expression "*(int *)((int)pvVar1 + 0x30) < 0" (pointer_expression "*(int *)((int)pvVar1 + 0x30)" (* "*") (cast_expression "(int *)((int)pvVar1 + 0x30)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)pvVar1 + 0x30)" (( "(") (binary_expression "(int)pvVar1 + 0x30" (cast_expression "(int)pvVar1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pvVar1")) (+ "+") (number_literal "0x30")) () ")")))) (< "<") (number_literal "0")) () ")")) (goto_statement "goto LAB_000256e9;" (goto "goto") (statement_identifier "LAB_000256e9") (; ";"))) (} "}"))) (expression_statement "pvVar11 = *(void **)((int)pvVar11 + 4);" (assignment_expression "pvVar11 = *(void **)((int)pvVar11 + 4)" (identifier "pvVar11") (= "=") (pointer_expression "*(void **)((int)pvVar11 + 4)" (* "*") (cast_expression "(void **)((int)pvVar11 + 4)" (( "(") (type_descriptor "void **" (primitive_type "void") (abstract_pointer_declarator "**" (* "*") (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")) () ")"))))) (; ";")) (expression_statement "iVar17 = *(int *)((int)pvVar11 + 0x30);" (assignment_expression "iVar17 = *(int *)((int)pvVar11 + 0x30)" (identifier "iVar17") (= "=") (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")) () ")"))))) (; ";")) (} "}"))) (} "}")))) (labeled_statement "LAB_000256e9:\n    if ((*(byte *)(param_1 + 0xb) & 4) != 0) {\n      if ((param_1[8] == local_d0) || (local_d4 == 0)) {\n        local_a4 = local_a4 + -1;\n      }\n      *local_a4 = 0;\n    }" (statement_identifier "LAB_000256e9") (: ":") (if_statement "if ((*(byte *)(param_1 + 0xb) & 4) != 0) {\n      if ((param_1[8] == local_d0) || (local_d4 == 0)) {\n        local_a4 = local_a4 + -1;\n      }\n      *local_a4 = 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_d0) || (local_d4 == 0)) {\n        local_a4 = local_a4 + -1;\n      }\n      *local_a4 = 0;\n    }" ({ "{") (if_statement "if ((param_1[8] == local_d0) || (local_d4 == 0)) {\n        local_a4 = local_a4 + -1;\n      }" (if "if") (parenthesized_expression "((param_1[8] == local_d0) || (local_d4 == 0))" (( "(") (binary_expression "(param_1[8] == local_d0) || (local_d4 == 0)" (parenthesized_expression "(param_1[8] == local_d0)" (( "(") (binary_expression "param_1[8] == local_d0" (subscript_expression "param_1[8]" (identifier "param_1") ([ "[") (number_literal "8") (] "]")) (== "==") (identifier "local_d0")) () ")")) (|| "||") (parenthesized_expression "(local_d4 == 0)" (( "(") (binary_expression "local_d4 == 0" (identifier "local_d4") (== "==") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n        local_a4 = local_a4 + -1;\n      }" ({ "{") (expression_statement "local_a4 = local_a4 + -1;" (assignment_expression "local_a4 = local_a4 + -1" (identifier "local_a4") (= "=") (binary_expression "local_a4 + -1" (identifier "local_a4") (+ "+") (number_literal "-1"))) (; ";")) (} "}"))) (expression_statement "*local_a4 = 0;" (assignment_expression "*local_a4 = 0" (pointer_expression "*local_a4" (* "*") (identifier "local_a4")) (= "=") (number_literal "0")) (; ";")) (} "}")))) (if_statement "if ((pDVar21 == (DIR *)0x0) && (bVar25)) {\n      if ((param_2 == 1) || (local_d4 == 0)) {\n        if (*(int *)(iVar2 + 0x30) == 0) {\n          iVar15 = FUN_00024bb0();\n        }\n        else {\n          iVar15 = FUN_00024e60(&DAT_0002e141);\n        }\n        if (iVar15 != 0) {\n          *(undefined2 *)(iVar2 + 0x3c) = 7;\n          param_1[0xb] = param_1[0xb] | 0x4000;\n          while (pvVar11 = local_b8, local_b8 != (void *)0x0) {\n            while( true ) {\n              local_b8 = *(void **)((int)pvVar11 + 8);\n              if (*(DIR **)((int)pvVar11 + 0xc) == (DIR *)0x0) break;\n              closedir(*(DIR **)((int)pvVar11 + 0xc));\n              free(pvVar11);\n              pvVar11 = local_b8;\n              if (local_b8 == (void *)0x0) goto LAB_00025c40;\n            }\n            free(pvVar11);\n          }\n          goto LAB_00025c40;\n        }\n        goto LAB_0002574d;\n      }\n    }\n    else {\nLAB_0002574d:\n      if (local_d4 == 0) {\n        if (((param_2 == 3) && (*(short *)(iVar2 + 0x3c) != 4)) && (*(short *)(iVar2 + 0x3c) != 7))\n        {\n          *(undefined2 *)(iVar2 + 0x3c) = 6;\n        }\n        if (local_b8 != (void *)0x0) {\n          pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n          pvVar11 = *(void **)((int)local_b8 + 8);\n          if (pDVar21 == (DIR *)0x0) goto LAB_00025c94;\n          do {\n            closedir(pDVar21);\n            free(local_b8);\n            local_b8 = pvVar11;\n            while( true ) {\n              if (local_b8 == (void *)0x0) goto LAB_00025c40;\n              pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n              pvVar11 = *(void **)((int)local_b8 + 8);\n              if (pDVar21 != (DIR *)0x0) break;\nLAB_00025c94:\n              free(local_b8);\n              local_b8 = pvVar11;\n            }\n          } while( true );\n        }\n        goto LAB_00025c40;\n      }\n    }" (if "if") (parenthesized_expression "((pDVar21 == (DIR *)0x0) && (bVar25))" (( "(") (binary_expression "(pDVar21 == (DIR *)0x0) && (bVar25)" (parenthesized_expression "(pDVar21 == (DIR *)0x0)" (( "(") (binary_expression "pDVar21 == (DIR *)0x0" (identifier "pDVar21") (== "==") (cast_expression "(DIR *)0x0" (( "(") (type_descriptor "DIR *" (type_identifier "DIR") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (&& "&&") (parenthesized_expression "(bVar25)" (( "(") (identifier "bVar25") () ")"))) () ")")) (compound_statement "{\n      if ((param_2 == 1) || (local_d4 == 0)) {\n        if (*(int *)(iVar2 + 0x30) == 0) {\n          iVar15 = FUN_00024bb0();\n        }\n        else {\n          iVar15 = FUN_00024e60(&DAT_0002e141);\n        }\n        if (iVar15 != 0) {\n          *(undefined2 *)(iVar2 + 0x3c) = 7;\n          param_1[0xb] = param_1[0xb] | 0x4000;\n          while (pvVar11 = local_b8, local_b8 != (void *)0x0) {\n            while( true ) {\n              local_b8 = *(void **)((int)pvVar11 + 8);\n              if (*(DIR **)((int)pvVar11 + 0xc) == (DIR *)0x0) break;\n              closedir(*(DIR **)((int)pvVar11 + 0xc));\n              free(pvVar11);\n              pvVar11 = local_b8;\n              if (local_b8 == (void *)0x0) goto LAB_00025c40;\n            }\n            free(pvVar11);\n          }\n          goto LAB_00025c40;\n        }\n        goto LAB_0002574d;\n      }\n    }" ({ "{") (if_statement "if ((param_2 == 1) || (local_d4 == 0)) {\n        if (*(int *)(iVar2 + 0x30) == 0) {\n          iVar15 = FUN_00024bb0();\n        }\n        else {\n          iVar15 = FUN_00024e60(&DAT_0002e141);\n        }\n        if (iVar15 != 0) {\n          *(undefined2 *)(iVar2 + 0x3c) = 7;\n          param_1[0xb] = param_1[0xb] | 0x4000;\n          while (pvVar11 = local_b8, local_b8 != (void *)0x0) {\n            while( true ) {\n              local_b8 = *(void **)((int)pvVar11 + 8);\n              if (*(DIR **)((int)pvVar11 + 0xc) == (DIR *)0x0) break;\n              closedir(*(DIR **)((int)pvVar11 + 0xc));\n              free(pvVar11);\n              pvVar11 = local_b8;\n              if (local_b8 == (void *)0x0) goto LAB_00025c40;\n            }\n            free(pvVar11);\n          }\n          goto LAB_00025c40;\n        }\n        goto LAB_0002574d;\n      }" (if "if") (parenthesized_expression "((param_2 == 1) || (local_d4 == 0))" (( "(") (binary_expression "(param_2 == 1) || (local_d4 == 0)" (parenthesized_expression "(param_2 == 1)" (( "(") (binary_expression "param_2 == 1" (identifier "param_2") (== "==") (number_literal "1")) () ")")) (|| "||") (parenthesized_expression "(local_d4 == 0)" (( "(") (binary_expression "local_d4 == 0" (identifier "local_d4") (== "==") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n        if (*(int *)(iVar2 + 0x30) == 0) {\n          iVar15 = FUN_00024bb0();\n        }\n        else {\n          iVar15 = FUN_00024e60(&DAT_0002e141);\n        }\n        if (iVar15 != 0) {\n          *(undefined2 *)(iVar2 + 0x3c) = 7;\n          param_1[0xb] = param_1[0xb] | 0x4000;\n          while (pvVar11 = local_b8, local_b8 != (void *)0x0) {\n            while( true ) {\n              local_b8 = *(void **)((int)pvVar11 + 8);\n              if (*(DIR **)((int)pvVar11 + 0xc) == (DIR *)0x0) break;\n              closedir(*(DIR **)((int)pvVar11 + 0xc));\n              free(pvVar11);\n              pvVar11 = local_b8;\n              if (local_b8 == (void *)0x0) goto LAB_00025c40;\n            }\n            free(pvVar11);\n          }\n          goto LAB_00025c40;\n        }\n        goto LAB_0002574d;\n      }" ({ "{") (if_statement "if (*(int *)(iVar2 + 0x30) == 0) {\n          iVar15 = FUN_00024bb0();\n        }\n        else {\n          iVar15 = FUN_00024e60(&DAT_0002e141);\n        }" (if "if") (parenthesized_expression "(*(int *)(iVar2 + 0x30) == 0)" (( "(") (binary_expression "*(int *)(iVar2 + 0x30) == 0" (pointer_expression "*(int *)(iVar2 + 0x30)" (* "*") (cast_expression "(int *)(iVar2 + 0x30)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0x30)" (( "(") (binary_expression "iVar2 + 0x30" (identifier "iVar2") (+ "+") (number_literal "0x30")) () ")")))) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          iVar15 = FUN_00024bb0();\n        }" ({ "{") (expression_statement "iVar15 = FUN_00024bb0();" (assignment_expression "iVar15 = FUN_00024bb0()" (identifier "iVar15") (= "=") (call_expression "FUN_00024bb0()" (identifier "FUN_00024bb0") (argument_list "()" (( "(") () ")")))) (; ";")) (} "}")) (else_clause "else {\n          iVar15 = FUN_00024e60(&DAT_0002e141);\n        }" (else "else") (compound_statement "{\n          iVar15 = FUN_00024e60(&DAT_0002e141);\n        }" ({ "{") (expression_statement "iVar15 = FUN_00024e60(&DAT_0002e141);" (assignment_expression "iVar15 = FUN_00024e60(&DAT_0002e141)" (identifier "iVar15") (= "=") (call_expression "FUN_00024e60(&DAT_0002e141)" (identifier "FUN_00024e60") (argument_list "(&DAT_0002e141)" (( "(") (pointer_expression "&DAT_0002e141" (& "&") (identifier "DAT_0002e141")) () ")")))) (; ";")) (} "}")))) (if_statement "if (iVar15 != 0) {\n          *(undefined2 *)(iVar2 + 0x3c) = 7;\n          param_1[0xb] = param_1[0xb] | 0x4000;\n          while (pvVar11 = local_b8, local_b8 != (void *)0x0) {\n            while( true ) {\n              local_b8 = *(void **)((int)pvVar11 + 8);\n              if (*(DIR **)((int)pvVar11 + 0xc) == (DIR *)0x0) break;\n              closedir(*(DIR **)((int)pvVar11 + 0xc));\n              free(pvVar11);\n              pvVar11 = local_b8;\n              if (local_b8 == (void *)0x0) goto LAB_00025c40;\n            }\n            free(pvVar11);\n          }\n          goto LAB_00025c40;\n        }" (if "if") (parenthesized_expression "(iVar15 != 0)" (( "(") (binary_expression "iVar15 != 0" (identifier "iVar15") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          *(undefined2 *)(iVar2 + 0x3c) = 7;\n          param_1[0xb] = param_1[0xb] | 0x4000;\n          while (pvVar11 = local_b8, local_b8 != (void *)0x0) {\n            while( true ) {\n              local_b8 = *(void **)((int)pvVar11 + 8);\n              if (*(DIR **)((int)pvVar11 + 0xc) == (DIR *)0x0) break;\n              closedir(*(DIR **)((int)pvVar11 + 0xc));\n              free(pvVar11);\n              pvVar11 = local_b8;\n              if (local_b8 == (void *)0x0) goto LAB_00025c40;\n            }\n            free(pvVar11);\n          }\n          goto LAB_00025c40;\n        }" ({ "{") (expression_statement "*(undefined2 *)(iVar2 + 0x3c) = 7;" (assignment_expression "*(undefined2 *)(iVar2 + 0x3c) = 7" (pointer_expression "*(undefined2 *)(iVar2 + 0x3c)" (* "*") (cast_expression "(undefined2 *)(iVar2 + 0x3c)" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0x3c)" (( "(") (binary_expression "iVar2 + 0x3c" (identifier "iVar2") (+ "+") (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"))) (; ";")) (while_statement "while (pvVar11 = local_b8, local_b8 != (void *)0x0) {\n            while( true ) {\n              local_b8 = *(void **)((int)pvVar11 + 8);\n              if (*(DIR **)((int)pvVar11 + 0xc) == (DIR *)0x0) break;\n              closedir(*(DIR **)((int)pvVar11 + 0xc));\n              free(pvVar11);\n              pvVar11 = local_b8;\n              if (local_b8 == (void *)0x0) goto LAB_00025c40;\n            }\n            free(pvVar11);\n          }" (while "while") (parenthesized_expression "(pvVar11 = local_b8, local_b8 != (void *)0x0)" (( "(") (comma_expression "pvVar11 = local_b8, local_b8 != (void *)0x0" (assignment_expression "pvVar11 = local_b8" (identifier "pvVar11") (= "=") (identifier "local_b8")) (, ",") (binary_expression "local_b8 != (void *)0x0" (identifier "local_b8") (!= "!=") (cast_expression "(void *)0x0" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")))) () ")")) (compound_statement "{\n            while( true ) {\n              local_b8 = *(void **)((int)pvVar11 + 8);\n              if (*(DIR **)((int)pvVar11 + 0xc) == (DIR *)0x0) break;\n              closedir(*(DIR **)((int)pvVar11 + 0xc));\n              free(pvVar11);\n              pvVar11 = local_b8;\n              if (local_b8 == (void *)0x0) goto LAB_00025c40;\n            }\n            free(pvVar11);\n          }" ({ "{") (while_statement "while( true ) {\n              local_b8 = *(void **)((int)pvVar11 + 8);\n              if (*(DIR **)((int)pvVar11 + 0xc) == (DIR *)0x0) break;\n              closedir(*(DIR **)((int)pvVar11 + 0xc));\n              free(pvVar11);\n              pvVar11 = local_b8;\n              if (local_b8 == (void *)0x0) goto LAB_00025c40;\n            }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n              local_b8 = *(void **)((int)pvVar11 + 8);\n              if (*(DIR **)((int)pvVar11 + 0xc) == (DIR *)0x0) break;\n              closedir(*(DIR **)((int)pvVar11 + 0xc));\n              free(pvVar11);\n              pvVar11 = local_b8;\n              if (local_b8 == (void *)0x0) goto LAB_00025c40;\n            }" ({ "{") (expression_statement "local_b8 = *(void **)((int)pvVar11 + 8);" (assignment_expression "local_b8 = *(void **)((int)pvVar11 + 8)" (identifier "local_b8") (= "=") (pointer_expression "*(void **)((int)pvVar11 + 8)" (* "*") (cast_expression "(void **)((int)pvVar11 + 8)" (( "(") (type_descriptor "void **" (primitive_type "void") (abstract_pointer_declarator "**" (* "*") (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")) () ")"))))) (; ";")) (if_statement "if (*(DIR **)((int)pvVar11 + 0xc) == (DIR *)0x0) break;" (if "if") (parenthesized_expression "(*(DIR **)((int)pvVar11 + 0xc) == (DIR *)0x0)" (( "(") (binary_expression "*(DIR **)((int)pvVar11 + 0xc) == (DIR *)0x0" (pointer_expression "*(DIR **)((int)pvVar11 + 0xc)" (* "*") (cast_expression "(DIR **)((int)pvVar11 + 0xc)" (( "(") (type_descriptor "DIR **" (type_identifier "DIR") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "((int)pvVar11 + 0xc)" (( "(") (binary_expression "(int)pvVar11 + 0xc" (cast_expression "(int)pvVar11" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pvVar11")) (+ "+") (number_literal "0xc")) () ")")))) (== "==") (cast_expression "(DIR *)0x0" (( "(") (type_descriptor "DIR *" (type_identifier "DIR") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "closedir(*(DIR **)((int)pvVar11 + 0xc));" (call_expression "closedir(*(DIR **)((int)pvVar11 + 0xc))" (identifier "closedir") (argument_list "(*(DIR **)((int)pvVar11 + 0xc))" (( "(") (pointer_expression "*(DIR **)((int)pvVar11 + 0xc)" (* "*") (cast_expression "(DIR **)((int)pvVar11 + 0xc)" (( "(") (type_descriptor "DIR **" (type_identifier "DIR") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "((int)pvVar11 + 0xc)" (( "(") (binary_expression "(int)pvVar11 + 0xc" (cast_expression "(int)pvVar11" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pvVar11")) (+ "+") (number_literal "0xc")) () ")")))) () ")"))) (; ";")) (expression_statement "free(pvVar11);" (call_expression "free(pvVar11)" (identifier "free") (argument_list "(pvVar11)" (( "(") (identifier "pvVar11") () ")"))) (; ";")) (expression_statement "pvVar11 = local_b8;" (assignment_expression "pvVar11 = local_b8" (identifier "pvVar11") (= "=") (identifier "local_b8")) (; ";")) (if_statement "if (local_b8 == (void *)0x0) goto LAB_00025c40;" (if "if") (parenthesized_expression "(local_b8 == (void *)0x0)" (( "(") (binary_expression "local_b8 == (void *)0x0" (identifier "local_b8") (== "==") (cast_expression "(void *)0x0" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (goto_statement "goto LAB_00025c40;" (goto "goto") (statement_identifier "LAB_00025c40") (; ";"))) (} "}"))) (expression_statement "free(pvVar11);" (call_expression "free(pvVar11)" (identifier "free") (argument_list "(pvVar11)" (( "(") (identifier "pvVar11") () ")"))) (; ";")) (} "}"))) (goto_statement "goto LAB_00025c40;" (goto "goto") (statement_identifier "LAB_00025c40") (; ";")) (} "}"))) (goto_statement "goto LAB_0002574d;" (goto "goto") (statement_identifier "LAB_0002574d") (; ";")) (} "}"))) (} "}")) (else_clause "else {\nLAB_0002574d:\n      if (local_d4 == 0) {\n        if (((param_2 == 3) && (*(short *)(iVar2 + 0x3c) != 4)) && (*(short *)(iVar2 + 0x3c) != 7))\n        {\n          *(undefined2 *)(iVar2 + 0x3c) = 6;\n        }\n        if (local_b8 != (void *)0x0) {\n          pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n          pvVar11 = *(void **)((int)local_b8 + 8);\n          if (pDVar21 == (DIR *)0x0) goto LAB_00025c94;\n          do {\n            closedir(pDVar21);\n            free(local_b8);\n            local_b8 = pvVar11;\n            while( true ) {\n              if (local_b8 == (void *)0x0) goto LAB_00025c40;\n              pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n              pvVar11 = *(void **)((int)local_b8 + 8);\n              if (pDVar21 != (DIR *)0x0) break;\nLAB_00025c94:\n              free(local_b8);\n              local_b8 = pvVar11;\n            }\n          } while( true );\n        }\n        goto LAB_00025c40;\n      }\n    }" (else "else") (compound_statement "{\nLAB_0002574d:\n      if (local_d4 == 0) {\n        if (((param_2 == 3) && (*(short *)(iVar2 + 0x3c) != 4)) && (*(short *)(iVar2 + 0x3c) != 7))\n        {\n          *(undefined2 *)(iVar2 + 0x3c) = 6;\n        }\n        if (local_b8 != (void *)0x0) {\n          pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n          pvVar11 = *(void **)((int)local_b8 + 8);\n          if (pDVar21 == (DIR *)0x0) goto LAB_00025c94;\n          do {\n            closedir(pDVar21);\n            free(local_b8);\n            local_b8 = pvVar11;\n            while( true ) {\n              if (local_b8 == (void *)0x0) goto LAB_00025c40;\n              pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n              pvVar11 = *(void **)((int)local_b8 + 8);\n              if (pDVar21 != (DIR *)0x0) break;\nLAB_00025c94:\n              free(local_b8);\n              local_b8 = pvVar11;\n            }\n          } while( true );\n        }\n        goto LAB_00025c40;\n      }\n    }" ({ "{") (labeled_statement "LAB_0002574d:\n      if (local_d4 == 0) {\n        if (((param_2 == 3) && (*(short *)(iVar2 + 0x3c) != 4)) && (*(short *)(iVar2 + 0x3c) != 7))\n        {\n          *(undefined2 *)(iVar2 + 0x3c) = 6;\n        }\n        if (local_b8 != (void *)0x0) {\n          pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n          pvVar11 = *(void **)((int)local_b8 + 8);\n          if (pDVar21 == (DIR *)0x0) goto LAB_00025c94;\n          do {\n            closedir(pDVar21);\n            free(local_b8);\n            local_b8 = pvVar11;\n            while( true ) {\n              if (local_b8 == (void *)0x0) goto LAB_00025c40;\n              pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n              pvVar11 = *(void **)((int)local_b8 + 8);\n              if (pDVar21 != (DIR *)0x0) break;\nLAB_00025c94:\n              free(local_b8);\n              local_b8 = pvVar11;\n            }\n          } while( true );\n        }\n        goto LAB_00025c40;\n      }" (statement_identifier "LAB_0002574d") (: ":") (if_statement "if (local_d4 == 0) {\n        if (((param_2 == 3) && (*(short *)(iVar2 + 0x3c) != 4)) && (*(short *)(iVar2 + 0x3c) != 7))\n        {\n          *(undefined2 *)(iVar2 + 0x3c) = 6;\n        }\n        if (local_b8 != (void *)0x0) {\n          pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n          pvVar11 = *(void **)((int)local_b8 + 8);\n          if (pDVar21 == (DIR *)0x0) goto LAB_00025c94;\n          do {\n            closedir(pDVar21);\n            free(local_b8);\n            local_b8 = pvVar11;\n            while( true ) {\n              if (local_b8 == (void *)0x0) goto LAB_00025c40;\n              pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n              pvVar11 = *(void **)((int)local_b8 + 8);\n              if (pDVar21 != (DIR *)0x0) break;\nLAB_00025c94:\n              free(local_b8);\n              local_b8 = pvVar11;\n            }\n          } while( true );\n        }\n        goto LAB_00025c40;\n      }" (if "if") (parenthesized_expression "(local_d4 == 0)" (( "(") (binary_expression "local_d4 == 0" (identifier "local_d4") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        if (((param_2 == 3) && (*(short *)(iVar2 + 0x3c) != 4)) && (*(short *)(iVar2 + 0x3c) != 7))\n        {\n          *(undefined2 *)(iVar2 + 0x3c) = 6;\n        }\n        if (local_b8 != (void *)0x0) {\n          pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n          pvVar11 = *(void **)((int)local_b8 + 8);\n          if (pDVar21 == (DIR *)0x0) goto LAB_00025c94;\n          do {\n            closedir(pDVar21);\n            free(local_b8);\n            local_b8 = pvVar11;\n            while( true ) {\n              if (local_b8 == (void *)0x0) goto LAB_00025c40;\n              pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n              pvVar11 = *(void **)((int)local_b8 + 8);\n              if (pDVar21 != (DIR *)0x0) break;\nLAB_00025c94:\n              free(local_b8);\n              local_b8 = pvVar11;\n            }\n          } while( true );\n        }\n        goto LAB_00025c40;\n      }" ({ "{") (if_statement "if (((param_2 == 3) && (*(short *)(iVar2 + 0x3c) != 4)) && (*(short *)(iVar2 + 0x3c) != 7))\n        {\n          *(undefined2 *)(iVar2 + 0x3c) = 6;\n        }" (if "if") (parenthesized_expression "(((param_2 == 3) && (*(short *)(iVar2 + 0x3c) != 4)) && (*(short *)(iVar2 + 0x3c) != 7))" (( "(") (binary_expression "((param_2 == 3) && (*(short *)(iVar2 + 0x3c) != 4)) && (*(short *)(iVar2 + 0x3c) != 7)" (parenthesized_expression "((param_2 == 3) && (*(short *)(iVar2 + 0x3c) != 4))" (( "(") (binary_expression "(param_2 == 3) && (*(short *)(iVar2 + 0x3c) != 4)" (parenthesized_expression "(param_2 == 3)" (( "(") (binary_expression "param_2 == 3" (identifier "param_2") (== "==") (number_literal "3")) () ")")) (&& "&&") (parenthesized_expression "(*(short *)(iVar2 + 0x3c) != 4)" (( "(") (binary_expression "*(short *)(iVar2 + 0x3c) != 4" (pointer_expression "*(short *)(iVar2 + 0x3c)" (* "*") (cast_expression "(short *)(iVar2 + 0x3c)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0x3c)" (( "(") (binary_expression "iVar2 + 0x3c" (identifier "iVar2") (+ "+") (number_literal "0x3c")) () ")")))) (!= "!=") (number_literal "4")) () ")"))) () ")")) (&& "&&") (parenthesized_expression "(*(short *)(iVar2 + 0x3c) != 7)" (( "(") (binary_expression "*(short *)(iVar2 + 0x3c) != 7" (pointer_expression "*(short *)(iVar2 + 0x3c)" (* "*") (cast_expression "(short *)(iVar2 + 0x3c)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0x3c)" (( "(") (binary_expression "iVar2 + 0x3c" (identifier "iVar2") (+ "+") (number_literal "0x3c")) () ")")))) (!= "!=") (number_literal "7")) () ")"))) () ")")) (compound_statement "{\n          *(undefined2 *)(iVar2 + 0x3c) = 6;\n        }" ({ "{") (expression_statement "*(undefined2 *)(iVar2 + 0x3c) = 6;" (assignment_expression "*(undefined2 *)(iVar2 + 0x3c) = 6" (pointer_expression "*(undefined2 *)(iVar2 + 0x3c)" (* "*") (cast_expression "(undefined2 *)(iVar2 + 0x3c)" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0x3c)" (( "(") (binary_expression "iVar2 + 0x3c" (identifier "iVar2") (+ "+") (number_literal "0x3c")) () ")")))) (= "=") (number_literal "6")) (; ";")) (} "}"))) (if_statement "if (local_b8 != (void *)0x0) {\n          pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n          pvVar11 = *(void **)((int)local_b8 + 8);\n          if (pDVar21 == (DIR *)0x0) goto LAB_00025c94;\n          do {\n            closedir(pDVar21);\n            free(local_b8);\n            local_b8 = pvVar11;\n            while( true ) {\n              if (local_b8 == (void *)0x0) goto LAB_00025c40;\n              pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n              pvVar11 = *(void **)((int)local_b8 + 8);\n              if (pDVar21 != (DIR *)0x0) break;\nLAB_00025c94:\n              free(local_b8);\n              local_b8 = pvVar11;\n            }\n          } while( true );\n        }" (if "if") (parenthesized_expression "(local_b8 != (void *)0x0)" (( "(") (binary_expression "local_b8 != (void *)0x0" (identifier "local_b8") (!= "!=") (cast_expression "(void *)0x0" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n          pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n          pvVar11 = *(void **)((int)local_b8 + 8);\n          if (pDVar21 == (DIR *)0x0) goto LAB_00025c94;\n          do {\n            closedir(pDVar21);\n            free(local_b8);\n            local_b8 = pvVar11;\n            while( true ) {\n              if (local_b8 == (void *)0x0) goto LAB_00025c40;\n              pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n              pvVar11 = *(void **)((int)local_b8 + 8);\n              if (pDVar21 != (DIR *)0x0) break;\nLAB_00025c94:\n              free(local_b8);\n              local_b8 = pvVar11;\n            }\n          } while( true );\n        }" ({ "{") (expression_statement "pDVar21 = *(DIR **)((int)local_b8 + 0xc);" (assignment_expression "pDVar21 = *(DIR **)((int)local_b8 + 0xc)" (identifier "pDVar21") (= "=") (pointer_expression "*(DIR **)((int)local_b8 + 0xc)" (* "*") (cast_expression "(DIR **)((int)local_b8 + 0xc)" (( "(") (type_descriptor "DIR **" (type_identifier "DIR") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "((int)local_b8 + 0xc)" (( "(") (binary_expression "(int)local_b8 + 0xc" (cast_expression "(int)local_b8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_b8")) (+ "+") (number_literal "0xc")) () ")"))))) (; ";")) (expression_statement "pvVar11 = *(void **)((int)local_b8 + 8);" (assignment_expression "pvVar11 = *(void **)((int)local_b8 + 8)" (identifier "pvVar11") (= "=") (pointer_expression "*(void **)((int)local_b8 + 8)" (* "*") (cast_expression "(void **)((int)local_b8 + 8)" (( "(") (type_descriptor "void **" (primitive_type "void") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "((int)local_b8 + 8)" (( "(") (binary_expression "(int)local_b8 + 8" (cast_expression "(int)local_b8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_b8")) (+ "+") (number_literal "8")) () ")"))))) (; ";")) (if_statement "if (pDVar21 == (DIR *)0x0) goto LAB_00025c94;" (if "if") (parenthesized_expression "(pDVar21 == (DIR *)0x0)" (( "(") (binary_expression "pDVar21 == (DIR *)0x0" (identifier "pDVar21") (== "==") (cast_expression "(DIR *)0x0" (( "(") (type_descriptor "DIR *" (type_identifier "DIR") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (goto_statement "goto LAB_00025c94;" (goto "goto") (statement_identifier "LAB_00025c94") (; ";"))) (do_statement "do {\n            closedir(pDVar21);\n            free(local_b8);\n            local_b8 = pvVar11;\n            while( true ) {\n              if (local_b8 == (void *)0x0) goto LAB_00025c40;\n              pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n              pvVar11 = *(void **)((int)local_b8 + 8);\n              if (pDVar21 != (DIR *)0x0) break;\nLAB_00025c94:\n              free(local_b8);\n              local_b8 = pvVar11;\n            }\n          } while( true );" (do "do") (compound_statement "{\n            closedir(pDVar21);\n            free(local_b8);\n            local_b8 = pvVar11;\n            while( true ) {\n              if (local_b8 == (void *)0x0) goto LAB_00025c40;\n              pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n              pvVar11 = *(void **)((int)local_b8 + 8);\n              if (pDVar21 != (DIR *)0x0) break;\nLAB_00025c94:\n              free(local_b8);\n              local_b8 = pvVar11;\n            }\n          }" ({ "{") (expression_statement "closedir(pDVar21);" (call_expression "closedir(pDVar21)" (identifier "closedir") (argument_list "(pDVar21)" (( "(") (identifier "pDVar21") () ")"))) (; ";")) (expression_statement "free(local_b8);" (call_expression "free(local_b8)" (identifier "free") (argument_list "(local_b8)" (( "(") (identifier "local_b8") () ")"))) (; ";")) (expression_statement "local_b8 = pvVar11;" (assignment_expression "local_b8 = pvVar11" (identifier "local_b8") (= "=") (identifier "pvVar11")) (; ";")) (while_statement "while( true ) {\n              if (local_b8 == (void *)0x0) goto LAB_00025c40;\n              pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n              pvVar11 = *(void **)((int)local_b8 + 8);\n              if (pDVar21 != (DIR *)0x0) break;\nLAB_00025c94:\n              free(local_b8);\n              local_b8 = pvVar11;\n            }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n              if (local_b8 == (void *)0x0) goto LAB_00025c40;\n              pDVar21 = *(DIR **)((int)local_b8 + 0xc);\n              pvVar11 = *(void **)((int)local_b8 + 8);\n              if (pDVar21 != (DIR *)0x0) break;\nLAB_00025c94:\n              free(local_b8);\n              local_b8 = pvVar11;\n            }" ({ "{") (if_statement "if (local_b8 == (void *)0x0) goto LAB_00025c40;" (if "if") (parenthesized_expression "(local_b8 == (void *)0x0)" (( "(") (binary_expression "local_b8 == (void *)0x0" (identifier "local_b8") (== "==") (cast_expression "(void *)0x0" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (goto_statement "goto LAB_00025c40;" (goto "goto") (statement_identifier "LAB_00025c40") (; ";"))) (expression_statement "pDVar21 = *(DIR **)((int)local_b8 + 0xc);" (assignment_expression "pDVar21 = *(DIR **)((int)local_b8 + 0xc)" (identifier "pDVar21") (= "=") (pointer_expression "*(DIR **)((int)local_b8 + 0xc)" (* "*") (cast_expression "(DIR **)((int)local_b8 + 0xc)" (( "(") (type_descriptor "DIR **" (type_identifier "DIR") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "((int)local_b8 + 0xc)" (( "(") (binary_expression "(int)local_b8 + 0xc" (cast_expression "(int)local_b8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_b8")) (+ "+") (number_literal "0xc")) () ")"))))) (; ";")) (expression_statement "pvVar11 = *(void **)((int)local_b8 + 8);" (assignment_expression "pvVar11 = *(void **)((int)local_b8 + 8)" (identifier "pvVar11") (= "=") (pointer_expression "*(void **)((int)local_b8 + 8)" (* "*") (cast_expression "(void **)((int)local_b8 + 8)" (( "(") (type_descriptor "void **" (primitive_type "void") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "((int)local_b8 + 8)" (( "(") (binary_expression "(int)local_b8 + 8" (cast_expression "(int)local_b8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_b8")) (+ "+") (number_literal "8")) () ")"))))) (; ";")) (if_statement "if (pDVar21 != (DIR *)0x0) break;" (if "if") (parenthesized_expression "(pDVar21 != (DIR *)0x0)" (( "(") (binary_expression "pDVar21 != (DIR *)0x0" (identifier "pDVar21") (!= "!=") (cast_expression "(DIR *)0x0" (( "(") (type_descriptor "DIR *" (type_identifier "DIR") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (break_statement "break;" (break "break") (; ";"))) (labeled_statement "LAB_00025c94:\n              free(local_b8);" (statement_identifier "LAB_00025c94") (: ":") (expression_statement "free(local_b8);" (call_expression "free(local_b8)" (identifier "free") (argument_list "(local_b8)" (( "(") (identifier "local_b8") () ")"))) (; ";"))) (expression_statement "local_b8 = pvVar11;" (assignment_expression "local_b8 = pvVar11" (identifier "local_b8") (= "=") (identifier "pvVar11")) (; ";")) (} "}"))) (} "}")) (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (; ";")) (} "}"))) (goto_statement "goto LAB_00025c40;" (goto "goto") (statement_identifier "LAB_00025c40") (; ";")) (} "}")))) (} "}")))) (if_statement "if (bVar4) {\n      param_1[10] = (int)FUN_00024700;\n      local_b8 = (void *)FUN_000248e0();\n      param_1[10] = 0;\n    }\n    else if ((param_1[10] != 0) && (local_d4 != 1)) {\n      local_b8 = (void *)FUN_000248e0();\n    }" (if "if") (parenthesized_expression "(bVar4)" (( "(") (identifier "bVar4") () ")")) (compound_statement "{\n      param_1[10] = (int)FUN_00024700;\n      local_b8 = (void *)FUN_000248e0();\n      param_1[10] = 0;\n    }" ({ "{") (expression_statement "param_1[10] = (int)FUN_00024700;" (assignment_expression "param_1[10] = (int)FUN_00024700" (subscript_expression "param_1[10]" (identifier "param_1") ([ "[") (number_literal "10") (] "]")) (= "=") (cast_expression "(int)FUN_00024700" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "FUN_00024700"))) (; ";")) (expression_statement "local_b8 = (void *)FUN_000248e0();" (assignment_expression "local_b8 = (void *)FUN_000248e0()" (identifier "local_b8") (= "=") (cast_expression "(void *)FUN_000248e0()" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_000248e0()" (identifier "FUN_000248e0") (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")) (; ";")) (} "}")) (else_clause "else if ((param_1[10] != 0) && (local_d4 != 1)) {\n      local_b8 = (void *)FUN_000248e0();\n    }" (else "else") (if_statement "if ((param_1[10] != 0) && (local_d4 != 1)) {\n      local_b8 = (void *)FUN_000248e0();\n    }" (if "if") (parenthesized_expression "((param_1[10] != 0) && (local_d4 != 1))" (( "(") (binary_expression "(param_1[10] != 0) && (local_d4 != 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_d4 != 1)" (( "(") (binary_expression "local_d4 != 1" (identifier "local_d4") (!= "!=") (number_literal "1")) () ")"))) () ")")) (compound_statement "{\n      local_b8 = (void *)FUN_000248e0();\n    }" ({ "{") (expression_statement "local_b8 = (void *)FUN_000248e0();" (assignment_expression "local_b8 = (void *)FUN_000248e0()" (identifier "local_b8") (= "=") (cast_expression "(void *)FUN_000248e0()" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_000248e0()" (identifier "FUN_000248e0") (argument_list "()" (( "(") () ")"))))) (; ";")) (} "}"))))) (} "}")))) (labeled_statement "LAB_0002563f:\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return local_b8;\n  }" (statement_identifier "LAB_0002563f") (: ":") (if_statement "if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return local_b8;\n  }" (if "if") (parenthesized_expression "(local_20 == *(int *)(in_GS_OFFSET + 0x14))" (( "(") (binary_expression "local_20 == *(int *)(in_GS_OFFSET + 0x14)" (identifier "local_20") (== "==") (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" (* "*") (cast_expression "(int *)(in_GS_OFFSET + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(in_GS_OFFSET + 0x14)" (( "(") (binary_expression "in_GS_OFFSET + 0x14" (identifier "in_GS_OFFSET") (+ "+") (number_literal "0x14")) () ")"))))) () ")")) (compound_statement "{\n    return local_b8;\n  }" ({ "{") (return_statement "return local_b8;" (return "return") (identifier "local_b8") (; ";")) (} "}")))) (expression_statement "FUN_0002d5d0();" (call_expression "FUN_0002d5d0()" (identifier "FUN_0002d5d0") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")))

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

type_7 * __regparm3 fts_build(type_1 *sp,int var_13)

{
  int var_59;
  size_t var_22;
  char *var_39;
  type_1 *pFVar4;
  type_2 *var_55;
  bool bVar6;
  bool bVar7;
  type_3 _Var8;
  type_4 _Var9;
  type_5 *data_freer;
  type_6 _Var10;
  type_7 *pFVar11;
  type_8 _Var12;
  type_9 uVar13;
  int *piVar14;
  type_10 *var_26;
  size_t var_30;
  type_7 *var_31;
  type_11 uVar16;
  type_12 var_3;
  char *var_38;
  int var_18;
  type_13 *var_8;
  void *var_52;
  type_14 *var_43;
  int var_46;
  type_11 *var_47;
  type_11 *var_49;
  type_15 var_14;
  type_2 *var_54;
  type_13 *var_2;
  type_13 *var_34;
  size_t var_23;
  type_12 var_4;
  type_7 *pFVar30;
  int var_1;
  bool bVar31;
  type_12 var_27;
  type_12 var_24;
  type_7 *local_c4;
  type_7 *var_33;
  type_12 var_36;
  type_12 var_53;
  char *var_56;
  int var_6;
  type_16 tmp;
  type_17 fs_buf;
  
  var_59 = *(int *)(var_1 + 0x14);
  pFVar30 = sp->fts_cur;
  var_2 = (type_13 *)pFVar30->fts_dirp;
  if (var_2 == (type_13 *)0x0) {
    var_3 = sp->fts_options;
    var_4 = var_3 & 0x10;
    if (((var_4 != 0) && (var_4 = 0x20000, (var_3 & 1) != 0)) &&
       (var_4 = pFVar30->fts_level, var_4 != 0)) {
      var_4 = 0x20000;
    }
    var_18 = -100;
    if ((var_3 & 0x204) == 0x200) {
      var_18 = sp->fts_cwd_fd;
    }
    var_6 = var_5(var_18,pFVar30->fts_accpath,(var_3 & 0x800) << 7 | var_4 | 0x90900);
    if (var_6 < 0) {
      pFVar30->fts_dirp = (type_13 *)0x0;
    }
    else {
      var_8 = var_7(var_6);
      if (var_8 != (type_13 *)0x0) {
        pFVar30->fts_dirp = (type_13 *)var_8;
        if (pFVar30->fts_info == 0xb) {
          uVar13 = var_9(sp,pFVar30,false);
          pFVar30->fts_info = uVar13;
        }
        else if (((type_12)sp->fts_options & 0x100) != 0) {
          var_10((type_1 *)sp->fts_options,(type_7 *)&sp->fts_cycle,(type_1 *)pFVar30);
          var_9(sp,pFVar30,false);
          _Var12 = var_11((type_1 *)sp->fts_options,(type_7 *)&sp->fts_cycle,(type_1 *)pFVar30);
          if (!_Var12) {
            piVar14 = var_12();
            var_33 = (type_7 *)0x0;
            *piVar14 = 0xc;
            goto LAB_0002563f;
          }
        }
        var_53 = (-(type_12)(sp->fts_compar == (type_18 *)0x0) &
                   0x186a1) - 1;
        if (var_13 == 2) {
LAB_00025bc8:
          bVar31 = false;
          var_3 = sp->fts_options;
          goto LAB_00025223;
        }
        if ((((sp->fts_options & 0x38U) == 0x18) && (pFVar30->fts_statp[0].st_nlink == 2)) &&
           (var_14 = type_15(pFVar30,var_6), var_14 != var_15)) {
          if (var_13 != 3) goto LAB_00025bc8;
          bVar31 = false;
        }
        else {
          bVar31 = var_13 == 3;
        }
        if (((sp->fts_options & 0x200) == 0) ||
           (var_6 = var_16(var_6,0x406,3), -1 < var_6)) {
          var_18 = var_17(sp,pFVar30,var_6,(char *)0x0);
          if (var_18 == 0) goto LAB_0002521b;
          var_34 = pFVar30->fts_dirp;
          uVar13 = pFVar30->fts_flags | 1;
          if (bVar31) goto LAB_000258a0;
LAB_000258ae:
          pFVar30->fts_flags = uVar13;
          var_19((type_13 *)var_34);
          pFVar30->fts_dirp = (type_13 *)0x0;
          var_3 = sp->fts_options;
          if (((var_3 & 0x200) != 0) && (-1 < var_6)) {
            var_20(var_6);
            var_3 = sp->fts_options;
          }
        }
        else {
          var_34 = pFVar30->fts_dirp;
          uVar13 = pFVar30->fts_flags | 1;
          if (bVar31) {
LAB_000258a0:
            piVar14 = var_12();
            pFVar30->fts_errno = *piVar14;
            goto LAB_000258ae;
          }
          pFVar30->fts_flags = uVar13;
          var_19((type_13 *)var_34);
          var_3 = sp->fts_options;
        }
        bVar31 = false;
        pFVar30->fts_dirp = (type_13 *)0x0;
        goto LAB_00025223;
      }
      piVar14 = var_12();
      var_18 = *piVar14;
      var_20(var_6);
      *piVar14 = var_18;
      pFVar30->fts_dirp = (type_13 *)0x0;
    }
joined_r0x00025c30:
    if (var_13 == 3) {
      pFVar30->fts_info = 4;
      piVar14 = var_12();
      pFVar30->fts_errno = *piVar14;
    }
LAB_00025c40:
    var_33 = (type_7 *)0x0;
  }
  else {
    var_6 = var_21(var_2);
    if (var_6 < 0) {
      var_19((type_13 *)pFVar30->fts_dirp);
      pFVar30->fts_dirp = (type_13 *)0x0;
      goto joined_r0x00025c30;
    }
    if (sp->fts_compar == (type_18 *)0x0) {
      var_53 = 100000;
      var_3 = sp->fts_options;
      bVar31 = true;
    }
    else {
      var_53 = 0xffffffff;
LAB_0002521b:
      bVar31 = true;
      var_3 = sp->fts_options;
    }
LAB_00025223:
    var_22 = pFVar30->fts_pathlen;
    var_23 = var_22 - 1;
    var_24 = var_22;
    if (pFVar30->fts_path[var_22 - 1] != '/') {
      var_24 = var_22 + 1;
      var_23 = var_22;
    }
    var_56 = (char *)0x0;
    if ((var_3 & 4) != 0) {
      var_56 = sp->fts_path + var_23 + 1;
      sp->fts_path[var_23] = '/';
    }
    data_freer = PTR_free_0003afa8;
    var_36 = sp->fts_pathlen - var_24;
    bVar7 = false;
    bVar6 = false;
    var_18 = pFVar30->fts_level;
    local_c4 = (type_7 *)0x0;
    var_27 = 0;
    var_33 = (type_7 *)0x0;
LAB_000252fb:
    do {
      do {
        var_8 = (type_13 *)pFVar30->fts_dirp;
        if (var_8 == (type_13 *)0x0) goto LAB_000256de;
        piVar14 = var_12();
        *piVar14 = 0;
        var_26 = var_25(var_8);
        if (var_26 == (type_10 *)0x0) {
          if (*piVar14 != 0) {
            pFVar30->fts_errno = *piVar14;
            pFVar30->fts_info = (-(type_9)(var_2 == (type_13 *)0x0 && var_27 == 0) & 0xfffd) + 7;
          }
          if ((type_13 *)pFVar30->fts_dirp != (type_13 *)0x0) {
            var_19((type_13 *)pFVar30->fts_dirp);
            pFVar30->fts_dirp = (type_13 *)0x0;
          }
          goto LAB_000256de;
        }
      } while ((((sp->fts_options & 0x20) == 0) && (var_26->d_name[0] == '.')) &&
              ((var_26->d_name[1] == '\0' || (*(short *)(var_26->d_name + 1) == 0x2e))));
      var_30 = var_28(var_26->d_name);
      var_31 = (type_7 *)var_29(var_30 + 0xa8 & 0xfffffffc);
      if (var_31 == (type_7 *)0x0) {
        var_18 = *piVar14;
LAB_000255a6:
        var_32(var_31);
        if (var_33 != (type_7 *)0x0) {
          var_34 = var_33->fts_dirp;
          var_54 = var_33->fts_link;
          if (var_34 == (type_13 *)0x0) goto LAB_000255f4;
          do {
            var_19((type_13 *)var_34);
            var_32(var_33);
            var_33 = var_54;
            while( true ) {
              if (var_33 == (type_7 *)0x0) goto LAB_00025608;
              var_34 = var_33->fts_dirp;
              var_54 = var_33->fts_link;
              if (var_34 != (type_13 *)0x0) break;
LAB_000255f4:
              var_32(var_33);
              var_33 = var_54;
            }
          } while( true );
        }
LAB_00025608:
        var_19((type_13 *)pFVar30->fts_dirp);
        pFVar30->fts_dirp = (type_13 *)0x0;
        pFVar30->fts_info = 7;
        var_33 = (type_7 *)0x0;
        sp->fts_options = sp->fts_options | 0x4000;
        *piVar14 = var_18;
        goto LAB_0002563f;
      }
      pFVar11 = var_31 + 1;
      var_35(pFVar11,var_26->d_name,var_30);
      var_39 = sp->fts_path;
      *(type_19 *)((int)var_31[1].fts_statp + (var_30 - 0x44)) = 0;
      var_31->fts_namelen = var_30;
      var_31->fts_fts = sp;
      var_31->fts_path = var_39;
      var_31->fts_errno = 0;
      var_31->fts_dirp = (type_13 *)0x0;
      var_31->fts_flags = 0;
      var_31->fts_instr = 3;
      var_31->fts_number = 0;
      var_31->fts_pointer = (void *)0x0;
      if (var_36 <= var_30) {
        var_3 = var_24 + 0x101 + sp->fts_pathlen + var_30;
        if (var_3 < sp->fts_pathlen) {
          var_18 = 0x24;
          var_32(var_39);
          sp->fts_path = (char *)0x0;
          *piVar14 = 0x24;
        }
        else {
          sp->fts_pathlen = var_3;
          var_38 = (char *)var_37(var_39,var_3);
          if (var_38 != (char *)0x0) {
            sp->fts_path = var_38;
            if ((var_39 != var_38) && (bVar6 = true, (sp->fts_options & 4) != 0)) {
              var_56 = var_38 + var_24;
            }
            var_36 = sp->fts_pathlen - var_24;
            goto LAB_000253d8;
          }
          var_32(sp->fts_path);
          sp->fts_path = (char *)0x0;
          var_18 = *piVar14;
        }
        goto LAB_000255a6;
      }
LAB_000253d8:
      if (var_40(var_30,var_24)) {
        var_32(var_31);
        if (var_33 != (type_7 *)0x0) {
          var_34 = var_33->fts_dirp;
          var_54 = var_33->fts_link;
          if (var_34 == (type_13 *)0x0) goto LAB_00025e84;
          do {
            var_19((type_13 *)var_34);
            var_32(var_33);
            var_33 = var_54;
            while( true ) {
              if (var_33 == (type_7 *)0x0) goto LAB_00025e94;
              var_34 = var_33->fts_dirp;
              var_54 = var_33->fts_link;
              if (var_34 != (type_13 *)0x0) break;
LAB_00025e84:
              var_32(var_33);
              var_33 = var_54;
            }
          } while( true );
        }
LAB_00025e94:
        var_19((type_13 *)pFVar30->fts_dirp);
        pFVar30->fts_dirp = (type_13 *)0x0;
        pFVar30->fts_info = 7;
        var_33 = (type_7 *)0x0;
        sp->fts_options = sp->fts_options | 0x4000;
        *piVar14 = 0x24;
        goto LAB_0002563f;
      }
      uVar16 = *(type_11 *)((int)&var_26->d_ino + 4);
      var_31->fts_pathlen = var_30 + var_24;
      var_31->fts_level = var_18 + 1;
      var_31->fts_parent = sp->fts_cur;
      _Var8 = var_26->d_ino;
      *(type_11 *)((int)&var_31->fts_statp[0].st_ino + 4) = uVar16;
      *(int *)&var_31->fts_statp[0].st_ino = (int)_Var8;
      var_3 = sp->fts_options;
      if ((var_3 & 4) == 0) {
        var_31->fts_accpath = (char *)pFVar11;
      }
      else {
        var_31->fts_accpath = var_31->fts_path;
        var_41(var_56,pFVar11,var_31->fts_namelen + 1);
        var_3 = sp->fts_options;
      }
      if ((sp->fts_compar == (type_18 *)0x0) ||
         ((var_3 & 0x400) != 0)) {
        var_4 = var_26->d_type - 1;
        if (((var_3 & 0x18) == 0x18) && ((var_26->d_type & 0xfb) != 0)) {
          var_31->fts_info = 0xb;
          if (var_4 < 0xc) {
            var_31->fts_statp[0].st_mode = *(type_20 *)(var_42 + var_4 * 4);
            uVar16 = 1;
          }
          else {
            var_31->fts_statp[0].st_mode = 0;
            uVar16 = 1;
          }
        }
        else {
          var_31->fts_info = 0xb;
          if (var_4 < 0xc) {
            var_31->fts_statp[0].st_mode = *(type_20 *)(var_42 + var_4 * 4);
            uVar16 = 2;
          }
          else {
            var_31->fts_statp[0].st_mode = 0;
            uVar16 = 2;
          }
        }
        *(type_11 *)&var_31->fts_statp[0].st_size = uVar16;
        *(type_11 *)((int)&var_31->fts_statp[0].st_size + 4) = 0;
      }
      else {
        uVar13 = var_9(sp,var_31,false);
        var_31->fts_info = uVar13;
      }
      var_31->fts_link = (type_2 *)0x0;
      pFVar11 = var_31;
      if (var_33 != (type_7 *)0x0) {
        local_c4->fts_link = var_31;
        pFVar11 = var_33;
      }
      var_33 = pFVar11;
      local_c4 = var_31;
      if (var_27 == 10000) {
        if (sp->fts_compar == (type_18 *)0x0) {
          pFVar4 = pFVar30->fts_fts;
          if ((pFVar4->fts_options & 0x200) != 0) {
            var_43 = pFVar4->fts_leaf_optimization_works_ht;
            if (var_43 == (type_14 *)0x0) {
              var_43 = var_44(0xd,(type_21 *)0x0,dev_type_hash,dev_type_compare,
                                      (type_22)data_freer);
              pFVar4->fts_leaf_optimization_works_ht = var_43;
              if (var_43 != (type_23 *)0x0) goto LAB_00025920;
LAB_000259b0:
              if ((var_6 < 0) ||
                 (var_46 = var_45(var_6,(type_24 *)&fs_buf), _Var10 = fs_buf.f_type,
                 var_46 != 0)) goto LAB_00025a48;
              var_27 = fs_buf.f_type;
              if ((var_43 != (type_23 *)0x0) &&
                 (var_47 = (type_11 *)var_29(0xc), var_47 != (type_11 *)0x0)) {
                _Var9 = pFVar30->fts_statp[0].st_dev;
                var_47[1] = *(type_11 *)((int)&pFVar30->fts_statp[0].st_dev + 4);
                *var_47 = (int)_Var9;
                var_47[2] = _Var10;
                var_49 = (type_11 *)var_48(var_43,var_47);
                if (var_49 == (type_11 *)0x0) {
                  var_32(var_47);
                  var_27 = fs_buf.f_type;
                }
                else {
                  if (var_47 != var_49) {
                    /* WARNING: Subroutine does not return */
                    var_50();
                  }
                  var_27 = fs_buf.f_type;
                }
              }
            }
            else {
LAB_00025920:
              tmp.st_dev._4_4_ = *(type_11 *)((int)&pFVar30->fts_statp[0].st_dev + 4);
              tmp.st_dev._0_4_ = (type_11)pFVar30->fts_statp[0].st_dev;
              var_52 = var_51(var_43,&tmp);
              if (var_52 == (void *)0x0) goto LAB_000259b0;
              var_27 = *(int *)((int)var_52 + 8);
            }
            if (((var_27 == 0x6969) || (var_27 == 0x1021994)) || (var_27 == -0xacb2be)) {
              bVar7 = false;
              goto LAB_00025473;
            }
          }
LAB_00025a48:
          bVar7 = true;
        }
LAB_00025473:
        var_27 = 0x2711;
        goto LAB_000252fb;
      }
      var_27 = var_27 + 1;
    } while (var_27 < var_53);
LAB_000256de:
    if (bVar6) {
      var_39 = sp->fts_path;
      for (var_54 = sp->fts_child; var_54 != (type_2 *)0x0; var_54 = var_54->fts_link) {
        while ((type_2 *)var_54->fts_accpath != var_54 + 1) {
          var_38 = var_54->fts_path;
          var_54->fts_path = var_39;
          var_54->fts_accpath = var_39 + ((int)var_54->fts_accpath - (int)var_38);
          var_54 = var_54->fts_link;
          if (var_54 == (type_2 *)0x0) goto LAB_00025aef;
        }
        var_54->fts_path = var_39;
      }
LAB_00025aef:
      var_18 = var_33->fts_level;
      var_54 = var_33;
      while (-1 < var_18) {
        while( true ) {
          if ((type_7 *)var_54->fts_accpath != var_54 + 1) {
            var_54->fts_accpath = var_39 + ((int)var_54->fts_accpath - (int)var_54->fts_path);
          }
          var_55 = var_54->fts_link;
          var_54->fts_path = var_39;
          if (var_55 == (type_2 *)0x0) break;
          var_54 = var_55;
          if (var_55->fts_level < 0) goto LAB_000256e9;
        }
        var_54 = var_54->fts_parent;
        var_18 = var_54->fts_level;
      }
    }
LAB_000256e9:
    if ((sp->fts_options & 4) != 0) {
      if ((sp->fts_pathlen == var_24) || (var_27 == 0)) {
        var_56 = var_56 + -1;
      }
      *var_56 = '\0';
    }
    if ((var_2 == (type_13 *)0x0) && (bVar31)) {
      if ((var_13 == 1) || (var_27 == 0)) {
        if (pFVar30->fts_level == 0) {
          var_18 = var_57(sp);
        }
        else {
          var_18 = var_17(sp,pFVar30->fts_parent,-1,"..");
        }
        if (var_18 != 0) {
          pFVar30->fts_info = 7;
          sp->fts_options = sp->fts_options | 0x4000;
          while (pFVar30 = var_33, var_33 != (type_7 *)0x0) {
            while( true ) {
              var_33 = pFVar30->fts_link;
              if ((type_13 *)pFVar30->fts_dirp == (type_13 *)0x0) break;
              var_19((type_13 *)pFVar30->fts_dirp);
              var_32(pFVar30);
              pFVar30 = var_33;
              if (var_33 == (type_2 *)0x0) goto LAB_00025c40;
            }
            var_32(pFVar30);
          }
          goto LAB_00025c40;
        }
        goto LAB_0002574d;
      }
    }
    else {
LAB_0002574d:
      if (var_27 == 0) {
        if (((var_13 == 3) && (pFVar30->fts_info != 4)) && (pFVar30->fts_info != 7)) {
          pFVar30->fts_info = 6;
        }
        if (var_33 != (type_7 *)0x0) {
          var_2 = (type_13 *)var_33->fts_dirp;
          var_54 = var_33->fts_link;
          if (var_2 == (type_13 *)0x0) goto LAB_00025c94;
          do {
            var_19(var_2);
            var_32(var_33);
            var_33 = var_54;
            while( true ) {
              if (var_33 == (type_7 *)0x0) goto LAB_00025c40;
              var_2 = (type_13 *)var_33->fts_dirp;
              var_54 = var_33->fts_link;
              if (var_2 != (type_13 *)0x0) break;
LAB_00025c94:
              var_32(var_33);
              var_33 = var_54;
            }
          } while( true );
        }
        goto LAB_00025c40;
      }
    }
    if (bVar7) {
      sp->fts_compar = fts_compare_ino;
      var_33 = var_58(sp,var_33,var_27);
      sp->fts_compar = (type_18 *)0x0;
    }
    else if ((sp->fts_compar != (type_18 *)0x0) && (var_27 != 1)
            ) {
      var_33 = var_58(sp,var_33,var_27);
    }
  }
LAB_0002563f:
  if (var_59 == *(int *)(var_1 + 0x14)) {
    return var_33;
  }
                    /* WARNING: Subroutine does not return */
  var_60();
}


(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: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (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: (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: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator 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: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator 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: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) 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)) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (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)))) 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: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (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 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: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) (goto_statement label: (statement_identifier)))))))) (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)))) alternative: (else_clause (compound_statement (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: (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 (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: (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: (subscript_expression argument: (identifier) index: (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 (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))) (goto_statement label: (statement_identifier)))) (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)))))) (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))))))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))))) 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: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (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: (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: (identifier))) (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: (false))) (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: (call_expression function: (identifier) arguments: (argument_list (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (labeled_statement label: (statement_identifier) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))))) (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: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (goto_statement label: (statement_identifier))) (do_statement body: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (while_statement condition: (parenthesized_expression (true)) body: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (goto_statement label: (statement_identifier))) (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: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator 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: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (break_statement)) (labeled_statement label: (statement_identifier) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (identifier)))))) condition: (parenthesized_expression (true))))) (labeled_statement label: (statement_identifier) (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: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (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))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (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) (field_expression argument: (identifier) field: (field_identifier)) (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (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: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (identifier)) right: (number_literal))))) 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: (identifier))) (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: (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: (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: (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: (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: (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: (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: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (subscript_expression argument: (identifier) index: (number_literal))) right: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (number_literal))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (number_literal)))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (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: (subscript_expression argument: (identifier) index: (number_literal)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (true)) 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: (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: (identifier)))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier)))) (goto_statement label: (statement_identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal)))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier))))))) (goto_statement label: (statement_identifier)))) (labeled_statement label: (statement_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)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))))) (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: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (goto_statement label: (statement_identifier))) (do_statement body: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (while_statement condition: (parenthesized_expression (true)) body: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (goto_statement label: (statement_identifier))) (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: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator 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: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (break_statement)) (labeled_statement label: (statement_identifier) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (identifier)))))) condition: (parenthesized_expression (true))))) (labeled_statement label: (statement_identifier) (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: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (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))) (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)) 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: (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: (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: (pointer_expression argument: (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: (identifier)))) 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) (identifier) (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: (subscript_expression argument: (identifier) index: (number_literal)) right: (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)) value: (parenthesized_expression (binary_expression left: (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 (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (number_literal) (number_literal) (identifier) (identifier) (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))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (pointer_expression argument: (identifier))))) right: (comma_expression left: (assignment_expression left: (identifier) right: (field_expression argument: (identifier) field: (field_identifier))) right: (binary_expression left: (identifier) right: (number_literal))))))) consequence: (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (field_expression argument: (identifier) field: (field_identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (number_literal))))) right: (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal))))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (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: (subscript_expression argument: (identifier) index: (number_literal)) 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: (pointer_expression argument: (identifier)) right: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (identifier) (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 (call_expression function: (identifier) arguments: (argument_list (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (field_expression argument: (identifier) field: (field_identifier))))) alternative: (else_clause (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list))))) (expression_statement (assignment_expression left: (identifier) right: (field_expression argument: (identifier) field: (field_identifier)))))))))) alternative: (else_clause (compound_statement (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: (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: (call_expression function: (identifier) arguments: (argument_list (identifier) (pointer_expression argument: (identifier)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (false))) (goto_statement label: (statement_identifier)))))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (true)))))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (number_literal)))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))))) (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (identifier)) 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: (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 (while_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)))) body: (compound_statement (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: (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: (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: (identifier))) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_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))))) (labeled_statement label: (statement_identifier) (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: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal)))))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (while_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier))) body: (compound_statement (while_statement condition: (parenthesized_expression (true)) 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: (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))))))) (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))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (break_statement)) (expression_statement (assignment_expression left: (identifier) right: (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: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))) 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: (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))))))) (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: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal)))))))))))) (labeled_statement label: (statement_identifier) (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: (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: (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)))) (while_statement condition: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (identifier)) right: (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal))))) body: (compound_statement (while_statement condition: (parenthesized_expression (true)) body: (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: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (break_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: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal)))))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (goto_statement label: (statement_identifier))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))))) (goto_statement label: (statement_identifier)))) (goto_statement label: (statement_identifier))))) alternative: (else_clause (compound_statement (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (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))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))))) (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: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (goto_statement label: (statement_identifier))) (do_statement body: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (while_statement condition: (parenthesized_expression (true)) body: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (goto_statement label: (statement_identifier))) (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: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator 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: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (break_statement)) (labeled_statement label: (statement_identifier) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (identifier)))))) condition: (parenthesized_expression (true))))) (goto_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)))) 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: (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)))))))))))) (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) consequence: (compound_statement (return_statement (identifier))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list))))))

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

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

{
  void *pvVar1;
  int iVar2;
  void *__ptr;
  bool bVar3;
  bool bVar4;
  __ino64_t _Var5;
  undefined *puVar6;
  char cVar7;
  undefined2 uVar8;
  int *piVar9;
  dirent64 *pdVar10;
  size_t __n;
  void *pvVar11;
  undefined4 uVar12;
  uint uVar13;
  void *pvVar14;
  int iVar15;
  DIR *pDVar16;
  int iVar17;
  int iVar18;
  int iVar19;
  undefined4 *__ptr_00;
  undefined4 *puVar20;
  DIR *pDVar21;
  uint uVar22;
  uint uVar23;
  ushort uVar24;
  int in_GS_OFFSET;
  bool bVar25;
  uint local_d4;
  uint local_d0;
  void *local_c4;
  void *local_b8;
  uint local_b0;
  uint local_a8;
  undefined1 *local_a4;
  int local_9c;
  undefined4 local_80;
  undefined4 local_7c;
  statfs64 local_74;
  int local_20;
  undefined4 uStack_14;
  
  uStack_14 = 0x251bb;
  local_20 = *(int *)(in_GS_OFFSET + 0x14);
  iVar2 = *param_1;
  pDVar21 = *(DIR **)(iVar2 + 0xc);
  if (pDVar21 == (DIR *)0x0) {
    uVar13 = param_1[0xb];
    uVar23 = uVar13 & 0x10;
    if (((uVar23 != 0) && (uVar23 = 0x20000, (uVar13 & 1) != 0)) &&
       (uVar23 = *(uint *)(iVar2 + 0x30), uVar23 != 0)) {
      uVar23 = 0x20000;
    }
    iVar15 = -100;
    if ((uVar13 & 0x204) == 0x200) {
      iVar15 = param_1[7];
    }
    local_9c = FUN_00029520(iVar15,*(undefined4 *)(iVar2 + 0x18),
                            (uVar13 & 0x800) << 7 | uVar23 | 0x90900);
    if (local_9c < 0) {
      *(undefined4 *)(iVar2 + 0xc) = 0;
    }
    else {
      pDVar16 = fdopendir(local_9c);
      if (pDVar16 != (DIR *)0x0) {
        *(DIR **)(iVar2 + 0xc) = pDVar16;
        if (*(short *)(iVar2 + 0x3c) == 0xb) {
          uVar8 = FUN_00024740();
          *(undefined2 *)(iVar2 + 0x3c) = uVar8;
        }
        else if ((param_1[0xb] & 0x100U) != 0) {
          FUN_00024aa0();
          FUN_00024740();
          cVar7 = FUN_000249d0();
          if (cVar7 == '\0') {
            piVar9 = __errno_location();
            local_b8 = (void *)0x0;
            *piVar9 = 0xc;
            goto LAB_0002563f;
          }
        }
        local_a8 = (-(uint)(param_1[10] == 0) & 0x186a1) - 1;
        if (param_2 == 2) {
LAB_00025bc8:
          bVar25 = false;
          uVar13 = param_1[0xb];
          goto LAB_00025223;
        }
        if ((((param_1[0xb] & 0x38U) == 0x18) && (*(int *)(iVar2 + 0x58) == 2)) &&
           (iVar15 = FUN_00024ca0(), iVar15 != 0)) {
          if (param_2 != 3) goto LAB_00025bc8;
          bVar25 = false;
        }
        else {
          bVar25 = param_2 == 3;
        }
        if (((*(byte *)((int)param_1 + 0x2d) & 2) == 0) ||
           (local_9c = FUN_000243f0(local_9c,0x406,3), -1 < local_9c)) {
          iVar15 = FUN_00024e60(0);
          if (iVar15 == 0) goto LAB_0002521b;
          pDVar16 = *(DIR **)(iVar2 + 0xc);
          uVar24 = *(ushort *)(iVar2 + 0x3e) | 1;
          if (bVar25) goto LAB_000258a0;
LAB_000258ae:
          *(ushort *)(iVar2 + 0x3e) = uVar24;
          closedir(pDVar16);
          *(undefined4 *)(iVar2 + 0xc) = 0;
          uVar13 = param_1[0xb];
          if (((uVar13 & 0x200) != 0) && (-1 < local_9c)) {
            close(local_9c);
            uVar13 = param_1[0xb];
          }
        }
        else {
          pDVar16 = *(DIR **)(iVar2 + 0xc);
          uVar24 = *(ushort *)(iVar2 + 0x3e) | 1;
          if (bVar25) {
LAB_000258a0:
            piVar9 = __errno_location();
            *(int *)(iVar2 + 0x20) = *piVar9;
            goto LAB_000258ae;
          }
          *(ushort *)(iVar2 + 0x3e) = uVar24;
          closedir(pDVar16);
          uVar13 = param_1[0xb];
        }
        bVar25 = false;
        *(undefined4 *)(iVar2 + 0xc) = 0;
        goto LAB_00025223;
      }
      piVar9 = __errno_location();
      iVar15 = *piVar9;
      close(local_9c);
      *piVar9 = iVar15;
      *(undefined4 *)(iVar2 + 0xc) = 0;
    }
joined_r0x00025c30:
    if (param_2 == 3) {
      *(undefined2 *)(iVar2 + 0x3c) = 4;
      piVar9 = __errno_location();
      *(int *)(iVar2 + 0x20) = *piVar9;
    }
LAB_00025c40:
    local_b8 = (void *)0x0;
  }
  else {
    local_9c = dirfd(pDVar21);
    if (local_9c < 0) {
      closedir(*(DIR **)(iVar2 + 0xc));
      *(undefined4 *)(iVar2 + 0xc) = 0;
      goto joined_r0x00025c30;
    }
    if (param_1[10] == 0) {
      local_a8 = 100000;
      uVar13 = param_1[0xb];
      bVar25 = true;
    }
    else {
      local_a8 = 0xffffffff;
LAB_0002521b:
      bVar25 = true;
      uVar13 = param_1[0xb];
    }
LAB_00025223:
    uVar23 = *(uint *)(iVar2 + 0x28);
    uVar22 = uVar23 - 1;
    local_d0 = uVar23;
    if (*(char *)(*(int *)(iVar2 + 0x1c) + -1 + uVar23) != '/') {
      local_d0 = uVar23 + 1;
      uVar22 = uVar23;
    }
    local_a4 = (undefined1 *)0x0;
    if ((uVar13 & 4) != 0) {
      local_a4 = (undefined1 *)(uVar22 + param_1[5]) + 1;
      *(undefined1 *)(uVar22 + param_1[5]) = 0x2f;
    }
    puVar6 = PTR_free_0003afa8;
    local_b0 = param_1[8] - local_d0;
    bVar4 = false;
    bVar3 = false;
    iVar15 = *(int *)(iVar2 + 0x30);
    local_c4 = (void *)0x0;
    local_d4 = 0;
    local_b8 = (void *)0x0;
LAB_000252fb:
    do {
      do {
        pDVar16 = *(DIR **)(iVar2 + 0xc);
        if (pDVar16 == (DIR *)0x0) goto LAB_000256de;
        piVar9 = __errno_location();
        *piVar9 = 0;
        pdVar10 = readdir64(pDVar16);
        if (pdVar10 == (dirent64 *)0x0) {
          if (*piVar9 != 0) {
            *(int *)(iVar2 + 0x20) = *piVar9;
            *(ushort *)(iVar2 + 0x3c) =
                 (-(ushort)(pDVar21 == (DIR *)0x0 && local_d4 == 0) & 0xfffd) + 7;
          }
          if (*(DIR **)(iVar2 + 0xc) != (DIR *)0x0) {
            closedir(*(DIR **)(iVar2 + 0xc));
            *(undefined4 *)(iVar2 + 0xc) = 0;
          }
          goto LAB_000256de;
        }
      } while ((((*(byte *)(param_1 + 0xb) & 0x20) == 0) && (pdVar10->d_name[0] == '.')) &&
              ((pdVar10->d_name[1] == '\0' || (*(short *)(pdVar10->d_name + 1) == 0x2e))));
      __n = strlen(pdVar10->d_name);
      pvVar11 = malloc(__n + 0xa8 & 0xfffffffc);
      if (pvVar11 == (void *)0x0) {
        iVar15 = *piVar9;
LAB_000255a6:
        free(pvVar11);
        if (local_b8 != (void *)0x0) {
          pDVar21 = *(DIR **)((int)local_b8 + 0xc);
          pvVar11 = *(void **)((int)local_b8 + 8);
          if (pDVar21 == (DIR *)0x0) goto LAB_000255f4;
          do {
            closedir(pDVar21);
            free(local_b8);
            local_b8 = pvVar11;
            while( true ) {
              if (local_b8 == (void *)0x0) goto LAB_00025608;
              pDVar21 = *(DIR **)((int)local_b8 + 0xc);
              pvVar11 = *(void **)((int)local_b8 + 8);
              if (pDVar21 != (DIR *)0x0) break;
LAB_000255f4:
              free(local_b8);
              local_b8 = pvVar11;
            }
          } while( true );
        }
LAB_00025608:
        closedir(*(DIR **)(iVar2 + 0xc));
        *(undefined4 *)(iVar2 + 0xc) = 0;
        *(undefined2 *)(iVar2 + 0x3c) = 7;
        local_b8 = (void *)0x0;
        param_1[0xb] = param_1[0xb] | 0x4000;
        *piVar9 = iVar15;
        goto LAB_0002563f;
      }
      pvVar1 = (void *)((int)pvVar11 + 0xa4);
      memcpy(pvVar1,pdVar10->d_name,__n);
      __ptr = (void *)param_1[5];
      *(undefined1 *)((int)pvVar11 + __n + 0xa4) = 0;
      *(size_t *)((int)pvVar11 + 0x34) = __n;
      *(int **)((int)pvVar11 + 0x2c) = param_1;
      *(void **)((int)pvVar11 + 0x1c) = __ptr;
      *(undefined4 *)((int)pvVar11 + 0x20) = 0;
      *(undefined4 *)((int)pvVar11 + 0xc) = 0;
      *(undefined4 *)((int)pvVar11 + 0x3e) = 0x30000;
      *(undefined4 *)((int)pvVar11 + 0x10) = 0;
      *(undefined4 *)((int)pvVar11 + 0x14) = 0;
      if (local_b0 <= __n) {
        uVar13 = local_d0 + 0x101 + param_1[8] + __n;
        if (uVar13 < (uint)param_1[8]) {
          iVar15 = 0x24;
          free(__ptr);
          param_1[5] = 0;
          *piVar9 = 0x24;
        }
        else {
          param_1[8] = uVar13;
          pvVar14 = realloc(__ptr,uVar13);
          if (pvVar14 != (void *)0x0) {
            param_1[5] = (int)pvVar14;
            if ((__ptr != pvVar14) && (bVar3 = true, (*(byte *)(param_1 + 0xb) & 4) != 0)) {
              local_a4 = (undefined1 *)((int)pvVar14 + local_d0);
            }
            local_b0 = param_1[8] - local_d0;
            goto LAB_000253d8;
          }
          free((void *)param_1[5]);
          param_1[5] = 0;
          iVar15 = *piVar9;
        }
        goto LAB_000255a6;
      }
LAB_000253d8:
      if (CARRY4(__n,local_d0)) {
        free(pvVar11);
        if (local_b8 != (void *)0x0) {
          pDVar21 = *(DIR **)((int)local_b8 + 0xc);
          pvVar11 = *(void **)((int)local_b8 + 8);
          if (pDVar21 == (DIR *)0x0) goto LAB_00025e84;
          do {
            closedir(pDVar21);
            free(local_b8);
            local_b8 = pvVar11;
            while( true ) {
              if (local_b8 == (void *)0x0) goto LAB_00025e94;
              pDVar21 = *(DIR **)((int)local_b8 + 0xc);
              pvVar11 = *(void **)((int)local_b8 + 8);
              if (pDVar21 != (DIR *)0x0) break;
LAB_00025e84:
              free(local_b8);
              local_b8 = pvVar11;
            }
          } while( true );
        }
LAB_00025e94:
        closedir(*(DIR **)(iVar2 + 0xc));
        *(undefined4 *)(iVar2 + 0xc) = 0;
        *(undefined2 *)(iVar2 + 0x3c) = 7;
        local_b8 = (void *)0x0;
        param_1[0xb] = param_1[0xb] | 0x4000;
        *piVar9 = 0x24;
        goto LAB_0002563f;
      }
      uVar12 = *(undefined4 *)((int)&pdVar10->d_ino + 4);
      *(size_t *)((int)pvVar11 + 0x28) = __n + local_d0;
      *(int *)((int)pvVar11 + 0x30) = iVar15 + 1;
      *(int *)((int)pvVar11 + 4) = *param_1;
      _Var5 = pdVar10->d_ino;
      *(undefined4 *)((int)pvVar11 + 0xa0) = uVar12;
      *(int *)((int)pvVar11 + 0x9c) = (int)_Var5;
      uVar13 = param_1[0xb];
      if ((uVar13 & 4) == 0) {
        *(void **)((int)pvVar11 + 0x18) = pvVar1;
      }
      else {
        *(undefined4 *)((int)pvVar11 + 0x18) = *(undefined4 *)((int)pvVar11 + 0x1c);
        memmove(local_a4,pvVar1,*(int *)((int)pvVar11 + 0x34) + 1);
        uVar13 = param_1[0xb];
      }
      if ((param_1[10] == 0) || ((uVar13 & 0x400) != 0)) {
        uVar23 = pdVar10->d_type - 1;
        if (((uVar13 & 0x18) == 0x18) && ((pdVar10->d_type & 0xfb) != 0)) {
          *(undefined2 *)((int)pvVar11 + 0x3c) = 0xb;
          if (uVar23 < 0xc) {
            *(undefined4 *)((int)pvVar11 + 0x54) = *(undefined4 *)(&DAT_00031560 + uVar23 * 4);
            uVar12 = 1;
          }
          else {
            *(undefined4 *)((int)pvVar11 + 0x54) = 0;
            uVar12 = 1;
          }
        }
        else {
          *(undefined2 *)((int)pvVar11 + 0x3c) = 0xb;
          if (uVar23 < 0xc) {
            *(undefined4 *)((int)pvVar11 + 0x54) = *(undefined4 *)(&DAT_00031560 + uVar23 * 4);
            uVar12 = 2;
          }
          else {
            *(undefined4 *)((int)pvVar11 + 0x54) = 0;
            uVar12 = 2;
          }
        }
        *(undefined4 *)((int)pvVar11 + 0x70) = uVar12;
        *(undefined4 *)((int)pvVar11 + 0x74) = 0;
      }
      else {
        uVar8 = FUN_00024740();
        *(undefined2 *)((int)pvVar11 + 0x3c) = uVar8;
      }
      *(undefined4 *)((int)pvVar11 + 8) = 0;
      pvVar1 = pvVar11;
      if (local_b8 != (void *)0x0) {
        *(void **)((int)local_c4 + 8) = pvVar11;
        pvVar1 = local_b8;
      }
      local_b8 = pvVar1;
      local_c4 = pvVar11;
      if (local_d4 == 10000) {
        if (param_1[10] == 0) {
          iVar17 = *(int *)(iVar2 + 0x2c);
          if ((*(byte *)(iVar17 + 0x2d) & 2) != 0) {
            iVar18 = *(int *)(iVar17 + 0x30);
            if (iVar18 == 0) {
              iVar18 = FUN_0001df90(0xd,0,FUN_000246b0,FUN_000246e0,puVar6);
              *(int *)(iVar17 + 0x30) = iVar18;
              if (iVar18 != 0) goto LAB_00025920;
LAB_000259b0:
              if ((local_9c < 0) ||
                 (iVar19 = fstatfs64(local_9c,&local_74), iVar17 = local_74.f_type, iVar19 != 0))
              goto LAB_00025a48;
              local_d4 = local_74.f_type;
              if ((iVar18 != 0) &&
                 (__ptr_00 = (undefined4 *)malloc(0xc), __ptr_00 != (undefined4 *)0x0)) {
                uVar12 = *(undefined4 *)(iVar2 + 0x44);
                __ptr_00[1] = *(undefined4 *)(iVar2 + 0x48);
                *__ptr_00 = uVar12;
                __ptr_00[2] = iVar17;
                puVar20 = (undefined4 *)FUN_0001e8d0(iVar18,__ptr_00);
                if (puVar20 == (undefined4 *)0x0) {
                  free(__ptr_00);
                  local_d4 = local_74.f_type;
                }
                else {
                  if (__ptr_00 != puVar20) {
                    /* WARNING: Subroutine does not return */
                    abort();
                  }
                  local_d4 = local_74.f_type;
                }
              }
            }
            else {
LAB_00025920:
              local_7c = *(undefined4 *)(iVar2 + 0x48);
              local_80 = *(undefined4 *)(iVar2 + 0x44);
              iVar17 = FUN_0001dce0(iVar18,&local_80);
              if (iVar17 == 0) goto LAB_000259b0;
              local_d4 = *(int *)(iVar17 + 8);
            }
            if (((local_d4 == 0x6969) || (local_d4 == 0x1021994)) || (local_d4 == -0xacb2be)) {
              bVar4 = false;
              goto LAB_00025473;
            }
          }
LAB_00025a48:
          bVar4 = true;
        }
LAB_00025473:
        local_d4 = 0x2711;
        goto LAB_000252fb;
      }
      local_d4 = local_d4 + 1;
    } while (local_d4 < local_a8);
LAB_000256de:
    if (bVar3) {
      iVar15 = param_1[5];
      for (iVar17 = param_1[1]; iVar17 != 0; iVar17 = *(int *)(iVar17 + 8)) {
        while (*(int *)(iVar17 + 0x18) != iVar17 + 0xa4) {
          iVar18 = *(int *)(iVar17 + 0x1c);
          *(int *)(iVar17 + 0x1c) = iVar15;
          *(int *)(iVar17 + 0x18) = (*(int *)(iVar17 + 0x18) - iVar18) + iVar15;
          iVar17 = *(int *)(iVar17 + 8);
          if (iVar17 == 0) goto LAB_00025aef;
        }
        *(int *)(iVar17 + 0x1c) = iVar15;
      }
LAB_00025aef:
      iVar17 = *(int *)((int)local_b8 + 0x30);
      pvVar11 = local_b8;
      while (-1 < iVar17) {
        while( true ) {
          if (*(int *)((int)pvVar11 + 0x18) != (int)pvVar11 + 0xa4) {
            *(int *)((int)pvVar11 + 0x18) =
                 (*(int *)((int)pvVar11 + 0x18) - *(int *)((int)pvVar11 + 0x1c)) + iVar15;
          }
          pvVar1 = *(void **)((int)pvVar11 + 8);
          *(int *)((int)pvVar11 + 0x1c) = iVar15;
          if (pvVar1 == (void *)0x0) break;
          pvVar11 = pvVar1;
          if (*(int *)((int)pvVar1 + 0x30) < 0) goto LAB_000256e9;
        }
        pvVar11 = *(void **)((int)pvVar11 + 4);
        iVar17 = *(int *)((int)pvVar11 + 0x30);
      }
    }
LAB_000256e9:
    if ((*(byte *)(param_1 + 0xb) & 4) != 0) {
      if ((param_1[8] == local_d0) || (local_d4 == 0)) {
        local_a4 = local_a4 + -1;
      }
      *local_a4 = 0;
    }
    if ((pDVar21 == (DIR *)0x0) && (bVar25)) {
      if ((param_2 == 1) || (local_d4 == 0)) {
        if (*(int *)(iVar2 + 0x30) == 0) {
          iVar15 = FUN_00024bb0();
        }
        else {
          iVar15 = FUN_00024e60(&DAT_0002e141);
        }
        if (iVar15 != 0) {
          *(undefined2 *)(iVar2 + 0x3c) = 7;
          param_1[0xb] = param_1[0xb] | 0x4000;
          while (pvVar11 = local_b8, local_b8 != (void *)0x0) {
            while( true ) {
              local_b8 = *(void **)((int)pvVar11 + 8);
              if (*(DIR **)((int)pvVar11 + 0xc) == (DIR *)0x0) break;
              closedir(*(DIR **)((int)pvVar11 + 0xc));
              free(pvVar11);
              pvVar11 = local_b8;
              if (local_b8 == (void *)0x0) goto LAB_00025c40;
            }
            free(pvVar11);
          }
          goto LAB_00025c40;
        }
        goto LAB_0002574d;
      }
    }
    else {
LAB_0002574d:
      if (local_d4 == 0) {
        if (((param_2 == 3) && (*(short *)(iVar2 + 0x3c) != 4)) && (*(short *)(iVar2 + 0x3c) != 7))
        {
          *(undefined2 *)(iVar2 + 0x3c) = 6;
        }
        if (local_b8 != (void *)0x0) {
          pDVar21 = *(DIR **)((int)local_b8 + 0xc);
          pvVar11 = *(void **)((int)local_b8 + 8);
          if (pDVar21 == (DIR *)0x0) goto LAB_00025c94;
          do {
            closedir(pDVar21);
            free(local_b8);
            local_b8 = pvVar11;
            while( true ) {
              if (local_b8 == (void *)0x0) goto LAB_00025c40;
              pDVar21 = *(DIR **)((int)local_b8 + 0xc);
              pvVar11 = *(void **)((int)local_b8 + 8);
              if (pDVar21 != (DIR *)0x0) break;
LAB_00025c94:
              free(local_b8);
              local_b8 = pvVar11;
            }
          } while( true );
        }
        goto LAB_00025c40;
      }
    }
    if (bVar4) {
      param_1[10] = (int)FUN_00024700;
      local_b8 = (void *)FUN_000248e0();
      param_1[10] = 0;
    }
    else if ((param_1[10] != 0) && (local_d4 != 1)) {
      local_b8 = (void *)FUN_000248e0();
    }
  }
LAB_0002563f:
  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {
    return local_b8;
  }
                    /* WARNING: Subroutine does not return */
  FUN_0002d5d0();
}

