
FTSENT * fts_read(FTS *sp)

{
  char cVar1;
  uint uVar2;
  size_t sVar3;
  char *pcVar4;
  _ftsent *p_Var5;
  long lVar6;
  _Bool _Var7;
  ushort uVar8;
  int iVar9;
  leaf_optimization lVar10;
  size_t sVar11;
  int *piVar12;
  FTSENT *pFVar13;
  FTSENT *pFVar14;
  ulong uVar15;
  FTSENT *pFVar16;
  char *pcVar17;
  byte bVar18;
  
  bVar18 = 0;
  pFVar16 = sp->fts_cur;
  if (pFVar16 == (FTSENT *)0x0) {
    return (FTSENT *)0x0;
  }
  if ((sp->fts_options & 0x4000) != 0) {
    return (FTSENT *)0x0;
  }
  uVar8 = pFVar16->fts_instr;
  pFVar16->fts_instr = 3;
  if (uVar8 == 1) {
    uVar8 = fts_stat(sp,pFVar16,false);
    pFVar16->fts_info = uVar8;
    return pFVar16;
  }
  pFVar13 = pFVar16;
  if (uVar8 == 2) {
    if (1 < (ushort)(pFVar16->fts_info - 0xc)) {
      if (pFVar16->fts_info != 1) goto LAB_00117717;
      goto LAB_00117457;
    }
    uVar8 = fts_stat(sp,pFVar16,true);
    pFVar16->fts_info = uVar8;
    if ((uVar8 == 1) && ((sp->fts_options & 4) == 0)) {
      iVar9 = diropen(sp,".");
      pFVar16->fts_symfd = iVar9;
      if (iVar9 < 0) {
        piVar12 = __errno_location();
        pFVar16->fts_errno = *piVar12;
        pFVar16->fts_info = 7;
      }
      else {
        pFVar16->fts_flags = pFVar16->fts_flags | 2;
      }
    }
  }
  else {
    if (pFVar16->fts_info == 1) {
      if (uVar8 == 4) goto LAB_00117473;
LAB_00117457:
      uVar2 = sp->fts_options;
      if (((uVar2 & 0x40) != 0) && (pFVar16->fts_statp[0].st_dev != sp->fts_dev)) {
LAB_00117473:
        if ((pFVar16->fts_flags & 2) != 0) {
          close(pFVar16->fts_symfd);
        }
        if (sp->fts_child != (FTSENT *)0x0) {
          fts_lfree(sp->fts_child);
          sp->fts_child = (_ftsent *)0x0;
        }
        pFVar16->fts_info = 6;
        leave_dir(sp,pFVar16);
        return pFVar16;
      }
      if (sp->fts_child == (FTSENT *)0x0) {
LAB_00117628:
        pFVar13 = fts_build(sp,3);
        sp->fts_child = pFVar13;
        if (pFVar13 == (FTSENT *)0x0) {
          if ((sp->fts_options & 0x4000) == 0) {
            if ((pFVar16->fts_errno != 0) && (pFVar16->fts_info != 4)) {
              pFVar16->fts_info = 7;
            }
            leave_dir(sp,pFVar16);
            return pFVar16;
          }
          return (FTSENT *)0x0;
        }
      }
      else {
        if ((uVar2 & 0x2000) != 0) {
          sp->fts_options = uVar2 & 0xffffdfff;
          fts_lfree(sp->fts_child);
          sp->fts_child = (_ftsent *)0x0;
          goto LAB_00117628;
        }
        iVar9 = fts_safe_changedir(sp,pFVar16,-1,pFVar16->fts_accpath);
        if (iVar9 != 0) {
          piVar12 = __errno_location();
          pFVar16->fts_errno = *piVar12;
          pFVar16->fts_flags = pFVar16->fts_flags | 1;
          for (p_Var5 = sp->fts_child; p_Var5 != (_ftsent *)0x0; p_Var5 = p_Var5->fts_link) {
            p_Var5->fts_accpath = p_Var5->fts_parent->fts_accpath;
          }
        }
      }
      pFVar16 = sp->fts_child;
      sp->fts_child = (_ftsent *)0x0;
    }
    else {
LAB_00117717:
      do {
        pFVar16 = pFVar13->fts_link;
        if (pFVar16 == (FTSENT *)0x0) {
          p_Var5 = pFVar13->fts_parent;
          if (p_Var5->fts_dirp != (DIR *)0x0) {
            sp->fts_cur = p_Var5;
            sp->fts_path[p_Var5->fts_pathlen] = '\0';
            pFVar16 = fts_build(sp,3);
            if (pFVar16 != (FTSENT *)0x0) {
              free(pFVar13);
              goto LAB_00117587;
            }
            if ((sp->fts_options & 0x4000) != 0) {
              return (FTSENT *)0x0;
            }
          }
          pFVar16 = pFVar13->fts_parent;
          sp->fts_cur = pFVar16;
          free(pFVar13);
          if (pFVar16->fts_level == -1) {
            free(pFVar16);
            piVar12 = __errno_location();
            *piVar12 = 0;
            sp->fts_cur = (_ftsent *)0x0;
            return (FTSENT *)0x0;
          }
          if (pFVar16->fts_info == 0xb) {
                    /* WARNING: Subroutine does not return */
            abort();
          }
          sp->fts_path[pFVar16->fts_pathlen] = '\0';
          if (pFVar16->fts_level == 0) {
            iVar9 = restore_initial_cwd(sp);
            if (iVar9 == 0) goto LAB_001177a7;
            piVar12 = __errno_location();
            pFVar16->fts_errno = *piVar12;
            sp->fts_options = sp->fts_options | 0x4000;
LAB_001179e4:
            if (pFVar16->fts_info == 2) {
              return (FTSENT *)0x0;
            }
          }
          else {
            if ((pFVar16->fts_flags & 2) == 0) {
              if (((pFVar16->fts_flags & 1) == 0) &&
                 (iVar9 = fts_safe_changedir(sp,pFVar16->fts_parent,-1,".."), iVar9 != 0)) {
                piVar12 = __errno_location();
                pFVar16->fts_errno = *piVar12;
                sp->fts_options = sp->fts_options | 0x4000;
                goto LAB_001179e4;
              }
            }
            else {
              if ((sp->fts_options & 4U) == 0) {
                if ((sp->fts_options & 0x200U) == 0) {
                  iVar9 = fchdir(pFVar16->fts_symfd);
                  if (iVar9 != 0) {
                    piVar12 = __errno_location();
                    pFVar16->fts_errno = *piVar12;
                    sp->fts_options = sp->fts_options | 0x4000;
                  }
                }
                else {
                  cwd_advance_fd(sp,pFVar16->fts_symfd,true);
                }
              }
              close(pFVar16->fts_symfd);
            }
LAB_001177a7:
            if (pFVar16->fts_info == 2) goto LAB_00117a88;
          }
          if (pFVar16->fts_errno == 0) {
            pFVar16->fts_info = 6;
            leave_dir(sp,pFVar16);
          }
          else {
            pFVar16->fts_info = 7;
          }
LAB_00117a88:
          if ((sp->fts_options & 0x4000U) != 0) {
            return (FTSENT *)0x0;
          }
          return pFVar16;
        }
        sp->fts_cur = pFVar16;
        free(pFVar13);
        if (pFVar16->fts_level == 0) {
          iVar9 = restore_initial_cwd(sp);
          if (iVar9 != 0) {
            sp->fts_options = sp->fts_options | 0x4000;
            return (FTSENT *)0x0;
          }
          free_dir(sp);
          pFVar16->fts_pathlen = pFVar16->fts_namelen;
          pFVar13 = pFVar16 + 1;
          memmove(sp->fts_path,pFVar13,pFVar16->fts_namelen + 1);
          pFVar14 = (FTSENT *)strrchr((char *)pFVar13,0x2f);
          if ((pFVar14 == (FTSENT *)0x0) ||
             ((pFVar13 == pFVar14 && (*(char *)((long)&pFVar14->fts_cycle + 1) == '\0'))))
          goto LAB_0011784f;
          pcVar4 = (char *)((long)&pFVar14->fts_cycle + 1);
          uVar15 = 0xffffffffffffffff;
          pcVar17 = pcVar4;
          goto code_r0x00117837;
        }
        pFVar13 = pFVar16;
      } while (pFVar16->fts_instr == 4);
      if (pFVar16->fts_instr == 2) {
        uVar8 = fts_stat(sp,pFVar16,true);
        pFVar16->fts_info = uVar8;
        if ((uVar8 == 1) && ((sp->fts_options & 4) == 0)) {
          iVar9 = diropen(sp,".");
          pFVar16->fts_symfd = iVar9;
          if (iVar9 < 0) {
            piVar12 = __errno_location();
            pFVar16->fts_errno = *piVar12;
            pFVar16->fts_info = 7;
          }
          else {
            pFVar16->fts_flags = pFVar16->fts_flags | 2;
          }
        }
        pFVar16->fts_instr = 3;
      }
    }
LAB_00117587:
    sVar3 = pFVar16->fts_parent->fts_pathlen;
    sVar11 = sVar3 - 1;
    if (pFVar16->fts_parent->fts_path[sVar3 - 1] != '/') {
      sVar11 = sVar3;
    }
    pcVar4 = sp->fts_path;
    pcVar4[sVar11] = '/';
    memmove(pcVar4 + sVar11 + 1,pFVar16 + 1,pFVar16->fts_namelen + 1);
  }
  goto LAB_001175c0;
  while( true ) {
    uVar15 = uVar15 - 1;
    cVar1 = *pcVar17;
    pcVar17 = pcVar17 + (ulong)bVar18 * -2 + 1;
    if (cVar1 == '\0') break;
code_r0x00117837:
    if (uVar15 == 0) break;
  }
  memmove(pFVar13,pcVar4,~uVar15);
  pFVar16->fts_namelen = ~uVar15 - 1;
LAB_0011784f:
  pcVar4 = sp->fts_path;
  pFVar16->fts_path = pcVar4;
  pFVar16->fts_accpath = pcVar4;
  setup_dir(sp);
LAB_001175c0:
  sp->fts_cur = pFVar16;
  if (pFVar16->fts_info == 0xb) {
    lVar6 = pFVar16->fts_statp[0].st_size;
    if (lVar6 != 2) {
      if (lVar6 == 1) {
        return pFVar16;
      }
                    /* WARNING: Subroutine does not return */
      abort();
    }
    pFVar13 = pFVar16->fts_parent;
    if (((pFVar13->fts_n_dirs_remaining == 0) && ((sp->fts_options & 0x18U) == 0x18)) &&
       (lVar10 = leaf_optimization(pFVar13,sp->fts_cwd_fd), lVar10 == NOSTAT_LEAF_OPTIMIZATION))
    goto LAB_001175cf;
    uVar8 = fts_stat(sp,pFVar16,false);
    pFVar16->fts_info = uVar8;
    if ((pFVar16->fts_statp[0].st_mode & 0xf000) != 0x4000) goto LAB_001175cf;
    if (pFVar16->fts_level != 0) {
      uVar15 = pFVar13->fts_n_dirs_remaining - 1;
      if (0xfffffffffffffffd < uVar15) {
        if (uVar8 != 1) {
          return pFVar16;
        }
        goto LAB_001175ea;
      }
      pFVar13->fts_n_dirs_remaining = uVar15;
      goto LAB_001175cf;
    }
    if (uVar8 != 1) {
      return pFVar16;
    }
  }
  else {
LAB_001175cf:
    if (pFVar16->fts_info != 1) {
      return pFVar16;
    }
    if (pFVar16->fts_level != 0) goto LAB_001175ea;
  }
  sp->fts_dev = pFVar16->fts_statp[0].st_dev;
LAB_001175ea:
  _Var7 = enter_dir(sp,pFVar16);
  if (!_Var7) {
    piVar12 = __errno_location();
    *piVar12 = 0xc;
    pFVar16 = (FTSENT *)0x0;
  }
  return pFVar16;
}



void * fts_read(long *param_1)

{
  char *__s;
  uint uVar1;
  char cVar2;
  undefined2 uVar3;
  short sVar4;
  int iVar5;
  long lVar6;
  int *piVar7;
  long lVar8;
  char *pcVar9;
  ulong uVar10;
  void *pvVar11;
  void *pvVar12;
  char *pcVar13;
  byte bVar14;
  
  bVar14 = 0;
  pvVar11 = (void *)*param_1;
  if (pvVar11 == (void *)0x0) {
    return (void *)0x0;
  }
  if ((*(byte *)((long)param_1 + 0x49) & 0x40) != 0) {
    return (void *)0x0;
  }
  sVar4 = *(short *)((long)pvVar11 + 0x74);
  *(undefined2 *)((long)pvVar11 + 0x74) = 3;
  if (sVar4 == 1) {
    uVar3 = FUN_00115abc(param_1,pvVar11,0);
    *(undefined2 *)((long)pvVar11 + 0x70) = uVar3;
    return pvVar11;
  }
  pvVar12 = pvVar11;
  if (sVar4 == 2) {
    if (1 < (ushort)(*(short *)((long)pvVar11 + 0x70) - 0xcU)) {
      if (*(short *)((long)pvVar11 + 0x70) != 1) goto LAB_00117717;
      goto LAB_00117457;
    }
    sVar4 = FUN_00115abc(param_1,pvVar11,1);
    *(short *)((long)pvVar11 + 0x70) = sVar4;
    if ((sVar4 == 1) && ((*(byte *)(param_1 + 9) & 4) == 0)) {
      iVar5 = FUN_00115e27(param_1,&DAT_0011ff42);
      *(int *)((long)pvVar11 + 0x44) = iVar5;
      if (iVar5 < 0) {
        piVar7 = __errno_location();
        *(int *)((long)pvVar11 + 0x40) = *piVar7;
        *(undefined2 *)((long)pvVar11 + 0x70) = 7;
      }
      else {
        *(ushort *)((long)pvVar11 + 0x72) = *(ushort *)((long)pvVar11 + 0x72) | 2;
      }
    }
  }
  else {
    if (*(short *)((long)pvVar11 + 0x70) == 1) {
      if (sVar4 == 4) goto LAB_00117473;
LAB_00117457:
      uVar1 = *(uint *)(param_1 + 9);
      if (((uVar1 & 0x40) != 0) && (*(long *)((long)pvVar11 + 0x78) != param_1[3])) {
LAB_00117473:
        if ((*(byte *)((long)pvVar11 + 0x72) & 2) != 0) {
          close(*(int *)((long)pvVar11 + 0x44));
        }
        if (param_1[1] != 0) {
          FUN_00115e7a();
          param_1[1] = 0;
        }
        *(undefined2 *)((long)pvVar11 + 0x70) = 6;
        FUN_00116412(param_1,pvVar11);
        return pvVar11;
      }
      if (param_1[1] == 0) {
LAB_00117628:
        lVar8 = FUN_001164c9(param_1,3);
        param_1[1] = lVar8;
        if (lVar8 == 0) {
          if ((*(byte *)((long)param_1 + 0x49) & 0x40) == 0) {
            if ((*(int *)((long)pvVar11 + 0x40) != 0) && (*(short *)((long)pvVar11 + 0x70) != 4)) {
              *(undefined2 *)((long)pvVar11 + 0x70) = 7;
            }
            FUN_00116412(param_1,pvVar11);
            return pvVar11;
          }
          return (void *)0x0;
        }
      }
      else {
        if ((uVar1 & 0x2000) != 0) {
          *(uint *)(param_1 + 9) = uVar1 & 0xffffdfff;
          FUN_00115e7a();
          param_1[1] = 0;
          goto LAB_00117628;
        }
        iVar5 = FUN_00116203(param_1,pvVar11,0xffffffff,*(undefined8 *)((long)pvVar11 + 0x30));
        if (iVar5 != 0) {
          piVar7 = __errno_location();
          *(int *)((long)pvVar11 + 0x40) = *piVar7;
          *(ushort *)((long)pvVar11 + 0x72) = *(ushort *)((long)pvVar11 + 0x72) | 1;
          for (lVar8 = param_1[1]; lVar8 != 0; lVar8 = *(long *)(lVar8 + 0x10)) {
            *(undefined8 *)(lVar8 + 0x30) = *(undefined8 *)(*(long *)(lVar8 + 8) + 0x30);
          }
        }
      }
      pvVar11 = (void *)param_1[1];
      param_1[1] = 0;
    }
    else {
LAB_00117717:
      do {
        pvVar11 = *(void **)((long)pvVar12 + 0x10);
        if (pvVar11 == (void *)0x0) {
          lVar8 = *(long *)((long)pvVar12 + 8);
          if (*(long *)(lVar8 + 0x18) != 0) {
            *param_1 = lVar8;
            *(undefined1 *)(param_1[4] + *(long *)(lVar8 + 0x48)) = 0;
            pvVar11 = (void *)FUN_001164c9(param_1,3);
            if (pvVar11 != (void *)0x0) {
              free(pvVar12);
              goto LAB_00117587;
            }
            if ((*(byte *)((long)param_1 + 0x49) & 0x40) != 0) {
              return (void *)0x0;
            }
          }
          pvVar11 = *(void **)((long)pvVar12 + 8);
          *param_1 = (long)pvVar11;
          free(pvVar12);
          if (*(long *)((long)pvVar11 + 0x58) == -1) {
            free(pvVar11);
            piVar7 = __errno_location();
            *piVar7 = 0;
            *param_1 = 0;
            return (void *)0x0;
          }
          if (*(short *)((long)pvVar11 + 0x70) == 0xb) {
                    /* WARNING: Subroutine does not return */
            abort();
          }
          *(undefined1 *)(param_1[4] + *(long *)((long)pvVar11 + 0x48)) = 0;
          if (*(long *)((long)pvVar11 + 0x58) == 0) {
            iVar5 = FUN_001161af(param_1);
            if (iVar5 == 0) goto LAB_001177a7;
            piVar7 = __errno_location();
            *(int *)((long)pvVar11 + 0x40) = *piVar7;
            *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;
LAB_001179e4:
            if (*(short *)((long)pvVar11 + 0x70) == 2) {
              return (void *)0x0;
            }
          }
          else {
            if ((*(ushort *)((long)pvVar11 + 0x72) & 2) == 0) {
              if (((*(ushort *)((long)pvVar11 + 0x72) & 1) == 0) &&
                 (iVar5 = FUN_00116203(param_1,*(undefined8 *)((long)pvVar11 + 8),0xffffffff,
                                       &DAT_0011ff41), iVar5 != 0)) {
                piVar7 = __errno_location();
                *(int *)((long)pvVar11 + 0x40) = *piVar7;
                *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;
                goto LAB_001179e4;
              }
            }
            else {
              if ((*(uint *)(param_1 + 9) & 4) == 0) {
                if ((*(uint *)(param_1 + 9) & 0x200) == 0) {
                  iVar5 = fchdir(*(int *)((long)pvVar11 + 0x44));
                  if (iVar5 != 0) {
                    piVar7 = __errno_location();
                    *(int *)((long)pvVar11 + 0x40) = *piVar7;
                    *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;
                  }
                }
                else {
                  FUN_0011615c(param_1,*(undefined4 *)((long)pvVar11 + 0x44),1);
                }
              }
              close(*(int *)((long)pvVar11 + 0x44));
            }
LAB_001177a7:
            if (*(short *)((long)pvVar11 + 0x70) == 2) goto LAB_00117a88;
          }
          if (*(int *)((long)pvVar11 + 0x40) == 0) {
            *(undefined2 *)((long)pvVar11 + 0x70) = 6;
            FUN_00116412(param_1,pvVar11);
          }
          else {
            *(undefined2 *)((long)pvVar11 + 0x70) = 7;
          }
LAB_00117a88:
          if ((*(uint *)(param_1 + 9) & 0x4000) != 0) {
            return (void *)0x0;
          }
          return pvVar11;
        }
        *param_1 = (long)pvVar11;
        free(pvVar12);
        if (*(long *)((long)pvVar11 + 0x58) == 0) {
          iVar5 = FUN_001161af(param_1);
          if (iVar5 != 0) {
            *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;
            return (void *)0x0;
          }
          FUN_00115eb3(param_1);
          *(long *)((long)pvVar11 + 0x48) = *(long *)((long)pvVar11 + 0x60);
          __s = (char *)((long)pvVar11 + 0x108);
          memmove((void *)param_1[4],__s,*(long *)((long)pvVar11 + 0x60) + 1);
          pcVar9 = strrchr(__s,0x2f);
          if ((pcVar9 == (char *)0x0) || ((__s == pcVar9 && (pcVar9[1] == '\0'))))
          goto LAB_0011784f;
          uVar10 = 0xffffffffffffffff;
          pcVar13 = pcVar9 + 1;
          goto code_r0x00117837;
        }
        pvVar12 = pvVar11;
      } while (*(short *)((long)pvVar11 + 0x74) == 4);
      if (*(short *)((long)pvVar11 + 0x74) == 2) {
        sVar4 = FUN_00115abc(param_1,pvVar11,1);
        *(short *)((long)pvVar11 + 0x70) = sVar4;
        if ((sVar4 == 1) && ((*(byte *)(param_1 + 9) & 4) == 0)) {
          iVar5 = FUN_00115e27(param_1,&DAT_0011ff42);
          *(int *)((long)pvVar11 + 0x44) = iVar5;
          if (iVar5 < 0) {
            piVar7 = __errno_location();
            *(int *)((long)pvVar11 + 0x40) = *piVar7;
            *(undefined2 *)((long)pvVar11 + 0x70) = 7;
          }
          else {
            *(ushort *)((long)pvVar11 + 0x72) = *(ushort *)((long)pvVar11 + 0x72) | 2;
          }
        }
        *(undefined2 *)((long)pvVar11 + 0x74) = 3;
      }
    }
LAB_00117587:
    lVar8 = *(long *)(*(long *)((long)pvVar11 + 8) + 0x48);
    lVar6 = lVar8 + -1;
    if (*(char *)(*(long *)(*(long *)((long)pvVar11 + 8) + 0x38) + -1 + lVar8) != '/') {
      lVar6 = lVar8;
    }
    lVar8 = param_1[4];
    *(undefined1 *)(lVar6 + lVar8) = 0x2f;
    memmove((undefined1 *)(lVar6 + lVar8) + 1,(void *)((long)pvVar11 + 0x108),
            *(long *)((long)pvVar11 + 0x60) + 1);
  }
  goto LAB_001175c0;
  while( true ) {
    uVar10 = uVar10 - 1;
    cVar2 = *pcVar13;
    pcVar13 = pcVar13 + (ulong)bVar14 * -2 + 1;
    if (cVar2 == '\0') break;
code_r0x00117837:
    if (uVar10 == 0) break;
  }
  memmove(__s,pcVar9 + 1,~uVar10);
  *(ulong *)((long)pvVar11 + 0x60) = ~uVar10 - 1;
LAB_0011784f:
  lVar8 = param_1[4];
  *(long *)((long)pvVar11 + 0x38) = lVar8;
  *(long *)((long)pvVar11 + 0x30) = lVar8;
  FUN_00115dc3(param_1);
LAB_001175c0:
  *param_1 = (long)pvVar11;
  if (*(short *)((long)pvVar11 + 0x70) == 0xb) {
    if (*(long *)((long)pvVar11 + 0xa8) != 2) {
      if (*(long *)((long)pvVar11 + 0xa8) == 1) {
        return pvVar11;
      }
                    /* WARNING: Subroutine does not return */
      abort();
    }
    lVar8 = *(long *)((long)pvVar11 + 8);
    if (((*(long *)(lVar8 + 0x68) == 0) && ((*(uint *)(param_1 + 9) & 0x18) == 0x18)) &&
       (iVar5 = FUN_0011603e(lVar8,*(undefined4 *)((long)param_1 + 0x2c)), iVar5 == 2))
    goto LAB_001175cf;
    sVar4 = FUN_00115abc(param_1,pvVar11,0);
    *(short *)((long)pvVar11 + 0x70) = sVar4;
    if ((*(uint *)((long)pvVar11 + 0x90) & 0xf000) != 0x4000) goto LAB_001175cf;
    if (*(long *)((long)pvVar11 + 0x58) != 0) {
      uVar10 = *(long *)(lVar8 + 0x68) - 1;
      if (0xfffffffffffffffd < uVar10) {
        if (sVar4 != 1) {
          return pvVar11;
        }
        goto LAB_001175ea;
      }
      *(ulong *)(lVar8 + 0x68) = uVar10;
      goto LAB_001175cf;
    }
    if (sVar4 != 1) {
      return pvVar11;
    }
  }
  else {
LAB_001175cf:
    if (*(short *)((long)pvVar11 + 0x70) != 1) {
      return pvVar11;
    }
    if (*(long *)((long)pvVar11 + 0x58) != 0) goto LAB_001175ea;
  }
  param_1[3] = *(long *)((long)pvVar11 + 0x78);
LAB_001175ea:
  cVar2 = FUN_001160b2(param_1,pvVar11);
  if (cVar2 == '\0') {
    piVar7 = __errno_location();
    *piVar7 = 0xc;
    pvVar11 = (void *)0x0;
  }
  return pvVar11;
}


PUSH R13
PUSH R12
PUSH RBP
PUSH RBX
SUB RSP,0x8
MOV RBP,qword ptr [RDI]
TEST RBP,RBP
JZ 0x00117a62
TEST byte ptr [RDI + 0x49],0x40
JNZ 0x00117a5d
MOV R12,RDI
MOVZX EAX,word ptr [RBP + 0x74]
MOV word ptr [RBP + 0x74],0x3
CMP AX,0x1
JZ 0x001174ab
CMP AX,0x2
JZ 0x001174c1
CMP word ptr [RBP + 0x70],0x1
JNZ 0x00117717
CMP AX,0x4
JZ 0x00117473
MOV EAX,dword ptr [R12 + 0x48]
TEST AL,0x40
JZ 0x00117546
MOV RSI,qword ptr [R12 + 0x18]
CMP qword ptr [RBP + 0x78],RSI
JZ 0x00117546
TEST byte ptr [RBP + 0x72],0x2
JNZ 0x00117539
MOV RDI,qword ptr [R12 + 0x8]
TEST RDI,RDI
JZ 0x00117495
CALL 0x00115e7a
MOV qword ptr [R12 + 0x8],0x0
MOV word ptr [RBP + 0x70],0x6
MOV RSI,RBP
MOV RDI,R12
CALL 0x00116412
JMP 0x00117a62
MOV EDX,0x0
MOV RSI,RBP
CALL 0x00115abc
MOV word ptr [RBP + 0x70],AX
JMP 0x00117a62
MOVZX EAX,word ptr [RBP + 0x70]
LEA EDX,[RAX + -0xc]
CMP DX,0x1
JBE 0x001174dd
CMP AX,0x1
JNZ 0x00117717
JMP 0x00117457
MOV EDX,0x1
MOV RSI,RBP
CALL 0x00115abc
MOV word ptr [RBP + 0x70],AX
CMP AX,0x1
JNZ 0x001175c0
TEST byte ptr [R12 + 0x48],0x4
JNZ 0x001175c0
LEA RSI,[0x11ff42]
MOV RDI,R12
CALL 0x00115e27
MOV dword ptr [RBP + 0x44],EAX
TEST EAX,EAX
JS 0x00117524
OR word ptr [RBP + 0x72],0x2
JMP 0x001175c0
CALL 0x001040b0
MOV EAX,dword ptr [RAX]
MOV dword ptr [RBP + 0x40],EAX
MOV word ptr [RBP + 0x70],0x7
JMP 0x001175c0
MOV EDI,dword ptr [RBP + 0x44]
CALL 0x00104420
JMP 0x0011747d
MOV RDI,qword ptr [R12 + 0x8]
TEST RDI,RDI
JZ 0x00117628
TEST AH,0x20
JNZ 0x00117612
MOV RCX,qword ptr [RBP + 0x30]
MOV EDX,0xffffffff
MOV RSI,RBP
MOV RDI,R12
CALL 0x00116203
TEST EAX,EAX
JNZ 0x00117672
MOV RBP,qword ptr [R12 + 0x8]
MOV qword ptr [R12 + 0x8],0x0
MOV RCX,qword ptr [RBP + 0x8]
MOV RDX,qword ptr [RCX + 0x48]
LEA RAX,[RDX + -0x1]
MOV RCX,qword ptr [RCX + 0x38]
CMP byte ptr [RCX + RDX*0x1 + -0x1],0x2f
CMOVNZ RAX,RDX
ADD RAX,qword ptr [R12 + 0x20]
MOV byte ptr [RAX],0x2f
MOV RCX,qword ptr [RBP + 0x60]
LEA RDX,[RCX + 0x1]
LEA RSI,[RBP + 0x108]
LEA RDI,[RAX + 0x1]
CALL 0x001047e0
MOV qword ptr [R12],RBP
CMP word ptr [RBP + 0x70],0xb
JZ 0x001178f0
CMP word ptr [RBP + 0x70],0x1
JNZ 0x00117a62
CMP qword ptr [RBP + 0x58],0x0
JNZ 0x001175ea
MOV RAX,qword ptr [RBP + 0x78]
MOV qword ptr [R12 + 0x18],RAX
MOV RSI,RBP
MOV RDI,R12
CALL 0x001160b2
TEST AL,AL
JNZ 0x00117a62
CALL 0x001040b0
MOV dword ptr [RAX],0xc
MOV EBP,0x0
JMP 0x00117a62
AND AH,0xdf
MOV dword ptr [R12 + 0x48],EAX
CALL 0x00115e7a
MOV qword ptr [R12 + 0x8],0x0
MOV ESI,0x3
MOV RDI,R12
CALL 0x001164c9
MOV qword ptr [R12 + 0x8],RAX
TEST RAX,RAX
JNZ 0x00117579
TEST byte ptr [R12 + 0x49],0x40
JNZ 0x00117a70
CMP dword ptr [RBP + 0x40],0x0
JZ 0x00117662
CMP word ptr [RBP + 0x70],0x4
JZ 0x00117662
MOV word ptr [RBP + 0x70],0x7
MOV RSI,RBP
MOV RDI,R12
CALL 0x00116412
JMP 0x00117a62
CALL 0x001040b0
MOV EAX,dword ptr [RAX]
MOV dword ptr [RBP + 0x40],EAX
OR word ptr [RBP + 0x72],0x1
MOV RAX,qword ptr [R12 + 0x8]
TEST RAX,RAX
JZ 0x00117579
MOV RDX,qword ptr [RAX + 0x8]
MOV RDX,qword ptr [RDX + 0x30]
MOV qword ptr [RAX + 0x30],RDX
MOV RAX,qword ptr [RAX + 0x10]
TEST RAX,RAX
JNZ 0x0011768f
JMP 0x00117579
MOV qword ptr [R12],RAX
MOV RDX,qword ptr [R12 + 0x20]
MOV RAX,qword ptr [RAX + 0x48]
MOV byte ptr [RDX + RAX*0x1],0x0
MOV ESI,0x3
MOV RDI,R12
CALL 0x001164c9
MOV R13,RAX
TEST RAX,RAX
JNZ 0x001176df
TEST byte ptr [R12 + 0x49],0x40
JZ 0x0011772f
MOV RBP,RAX
JMP 0x00117a62
MOV RDI,RBP
CALL 0x00104a30
MOV RBP,R13
JMP 0x00117587
MOV qword ptr [R12],RBX
MOV RDI,RBP
CALL 0x00104a30
CMP qword ptr [RBX + 0x58],0x0
JZ 0x001177d5
MOVZX EAX,word ptr [RBX + 0x74]
MOV RBP,RBX
CMP AX,0x4
JNZ 0x00117887
MOV RBX,qword ptr [RBP + 0x10]
TEST RBX,RBX
JNZ 0x001176ef
MOV RAX,qword ptr [RBP + 0x8]
CMP qword ptr [RAX + 0x18],0x0
JNZ 0x001176a9
MOV R13,qword ptr [RBP + 0x8]
MOV qword ptr [R12],R13
MOV RDI,RBP
CALL 0x00104a30
CMP qword ptr [R13 + 0x58],-0x1
JZ 0x00117998
CMP word ptr [R13 + 0x70],0xb
JZ 0x001179bb
MOV RDX,qword ptr [R12 + 0x20]
MOV RAX,qword ptr [R13 + 0x48]
MOV byte ptr [RDX + RAX*0x1],0x0
CMP qword ptr [R13 + 0x58],0x0
JZ 0x001179c0
MOVZX EAX,word ptr [R13 + 0x72]
TEST AL,0x2
JZ 0x00117a1f
MOV EAX,dword ptr [R12 + 0x48]
TEST AL,0x4
JNZ 0x0011779e
TEST AH,0x2
JZ 0x001179f5
MOV ESI,dword ptr [R13 + 0x44]
MOV EDX,0x1
MOV RDI,R12
CALL 0x0011615c
MOV EDI,dword ptr [R13 + 0x44]
CALL 0x00104420
CMP word ptr [R13 + 0x70],0x2
JZ 0x00117a88
CMP dword ptr [R13 + 0x40],0x0
JNZ 0x00117a81
MOV word ptr [R13 + 0x70],0x6
MOV RSI,R13
MOV RDI,R12
CALL 0x00116412
JMP 0x00117a88
MOV RDI,R12
CALL 0x001161af
TEST EAX,EAX
JNZ 0x0011786c
MOV RDI,R12
CALL 0x00115eb3
MOV RAX,qword ptr [RBX + 0x60]
MOV qword ptr [RBX + 0x48],RAX
LEA RBP,[RBX + 0x108]
LEA RDX,[RAX + 0x1]
MOV RDI,qword ptr [R12 + 0x20]
MOV RSI,RBP
CALL 0x001047e0
MOV ESI,0x2f
MOV RDI,RBP
CALL 0x00104360
TEST RAX,RAX
JZ 0x0011784f
CMP RBP,RAX
JZ 0x0011787f
LEA RSI,[RAX + 0x1]
MOV RCX,-0x1
MOV EAX,0x0
MOV RDI,RSI
SCASB.REPNE RDI
NOT RCX
MOV RDX,RCX
LEA R13,[RCX + -0x1]
MOV RDI,RBP
CALL 0x001047e0
MOV qword ptr [RBX + 0x60],R13
MOV RAX,qword ptr [R12 + 0x20]
MOV qword ptr [RBX + 0x38],RAX
MOV qword ptr [RBX + 0x30],RAX
MOV RDI,R12
CALL 0x00115dc3
MOV RBP,RBX
JMP 0x001175c0
OR dword ptr [R12 + 0x48],0x4000
MOV EBP,0x0
JMP 0x00117a62
CMP byte ptr [RAX + 0x1],0x0
JZ 0x0011784f
JMP 0x00117824
CMP AX,0x2
JNZ 0x00117587
MOV EDX,0x1
MOV RSI,RBX
MOV RDI,R12
CALL 0x00115abc
MOV word ptr [RBX + 0x70],AX
CMP AX,0x1
JZ 0x001178b9
MOV word ptr [RBX + 0x74],0x3
MOV RBP,RBX
JMP 0x00117587
TEST byte ptr [R12 + 0x48],0x4
JNZ 0x001178ab
LEA RSI,[0x11ff42]
MOV RDI,R12
CALL 0x00115e27
MOV dword ptr [RBX + 0x44],EAX
TEST EAX,EAX
JS 0x001178de
OR word ptr [RBX + 0x72],0x2
JMP 0x001178ab
CALL 0x001040b0
MOV EAX,dword ptr [RAX]
MOV dword ptr [RBX + 0x40],EAX
MOV word ptr [RBX + 0x70],0x7
JMP 0x001178ab
MOV RAX,qword ptr [RBP + 0xa8]
CMP RAX,0x2
JZ 0x0011790c
CMP RAX,0x1
JZ 0x00117a62
CALL 0x001040a0
MOV RBX,qword ptr [RBP + 0x8]
CMP qword ptr [RBX + 0x68],0x0
JNZ 0x00117924
MOV EAX,dword ptr [R12 + 0x48]
AND EAX,0x18
CMP EAX,0x18
JZ 0x00117978
MOV EDX,0x0
MOV RSI,RBP
MOV RDI,R12
CALL 0x00115abc
MOV word ptr [RBP + 0x70],AX
MOV EDX,dword ptr [RBP + 0x90]
AND EDX,0xf000
CMP EDX,0x4000
JNZ 0x001175cf
CMP qword ptr [RBP + 0x58],0x0
JZ 0x00117a75
MOV RSI,qword ptr [RBX + 0x68]
LEA RDX,[RSI + -0x1]
CMP RDX,-0x3
JBE 0x0011798f
CMP AX,0x1
JZ 0x001175ea
JMP 0x00117a62
MOV ESI,dword ptr [R12 + 0x2c]
MOV RDI,RBX
CALL 0x0011603e
CMP EAX,0x2
JNZ 0x00117924
JMP 0x001175cf
MOV qword ptr [RBX + 0x68],RDX
JMP 0x001175cf
MOV RDI,R13
CALL 0x00104a30
CALL 0x001040b0
MOV dword ptr [RAX],0x0
MOV qword ptr [R12],0x0
MOV RBP,RBX
JMP 0x00117a62
CALL 0x001040a0
MOV RDI,R12
CALL 0x001161af
TEST EAX,EAX
JZ 0x001177a7
CALL 0x001040b0
MOV EAX,dword ptr [RAX]
MOV dword ptr [R13 + 0x40],EAX
OR dword ptr [R12 + 0x48],0x4000
MOV RBP,RBX
CMP word ptr [R13 + 0x70],0x2
JNZ 0x001177b3
JMP 0x00117a62
MOV EDI,dword ptr [R13 + 0x44]
CALL 0x00104700
TEST EAX,EAX
JZ 0x0011779e
CALL 0x001040b0
MOV EAX,dword ptr [RAX]
MOV dword ptr [R13 + 0x40],EAX
OR dword ptr [R12 + 0x48],0x4000
JMP 0x0011779e
TEST AL,0x1
JNZ 0x001177a7
MOV RSI,qword ptr [R13 + 0x8]
LEA RCX,[0x11ff41]
MOV EDX,0xffffffff
MOV RDI,R12
CALL 0x00116203
TEST EAX,EAX
JZ 0x001177a7
CALL 0x001040b0
MOV EAX,dword ptr [RAX]
MOV dword ptr [R13 + 0x40],EAX
OR dword ptr [R12 + 0x48],0x4000
JMP 0x001179e4
MOV EBP,0x0
MOV RAX,RBP
ADD RSP,0x8
POP RBX
POP RBP
POP R12
POP R13
RET
MOV RBP,RAX
JMP 0x00117a62
CMP AX,0x1
JZ 0x001175e1
JMP 0x00117a62
MOV word ptr [R13 + 0x70],0x7
MOV EAX,dword ptr [R12 + 0x48]
AND EAX,0x4000
CMOVZ RBX,R13
MOV RBP,RBX
JMP 0x00117a62
(translation_unit "void * fts_read(long *param_1)\n\n{\n  char *__s;\n  uint uVar1;\n  char cVar2;\n  undefined2 uVar3;\n  short sVar4;\n  int iVar5;\n  long lVar6;\n  int *piVar7;\n  long lVar8;\n  char *pcVar9;\n  ulong uVar10;\n  void *pvVar11;\n  void *pvVar12;\n  char *pcVar13;\n  byte bVar14;\n  \n  bVar14 = 0;\n  pvVar11 = (void *)*param_1;\n  if (pvVar11 == (void *)0x0) {\n    return (void *)0x0;\n  }\n  if ((*(byte *)((long)param_1 + 0x49) & 0x40) != 0) {\n    return (void *)0x0;\n  }\n  sVar4 = *(short *)((long)pvVar11 + 0x74);\n  *(undefined2 *)((long)pvVar11 + 0x74) = 3;\n  if (sVar4 == 1) {\n    uVar3 = FUN_00115abc(param_1,pvVar11,0);\n    *(undefined2 *)((long)pvVar11 + 0x70) = uVar3;\n    return pvVar11;\n  }\n  pvVar12 = pvVar11;\n  if (sVar4 == 2) {\n    if (1 < (ushort)(*(short *)((long)pvVar11 + 0x70) - 0xcU)) {\n      if (*(short *)((long)pvVar11 + 0x70) != 1) goto LAB_00117717;\n      goto LAB_00117457;\n    }\n    sVar4 = FUN_00115abc(param_1,pvVar11,1);\n    *(short *)((long)pvVar11 + 0x70) = sVar4;\n    if ((sVar4 == 1) && ((*(byte *)(param_1 + 9) & 4) == 0)) {\n      iVar5 = FUN_00115e27(param_1,&DAT_0011ff42);\n      *(int *)((long)pvVar11 + 0x44) = iVar5;\n      if (iVar5 < 0) {\n        piVar7 = __errno_location();\n        *(int *)((long)pvVar11 + 0x40) = *piVar7;\n        *(undefined2 *)((long)pvVar11 + 0x70) = 7;\n      }\n      else {\n        *(ushort *)((long)pvVar11 + 0x72) = *(ushort *)((long)pvVar11 + 0x72) | 2;\n      }\n    }\n  }\n  else {\n    if (*(short *)((long)pvVar11 + 0x70) == 1) {\n      if (sVar4 == 4) goto LAB_00117473;\nLAB_00117457:\n      uVar1 = *(uint *)(param_1 + 9);\n      if (((uVar1 & 0x40) != 0) && (*(long *)((long)pvVar11 + 0x78) != param_1[3])) {\nLAB_00117473:\n        if ((*(byte *)((long)pvVar11 + 0x72) & 2) != 0) {\n          close(*(int *)((long)pvVar11 + 0x44));\n        }\n        if (param_1[1] != 0) {\n          FUN_00115e7a();\n          param_1[1] = 0;\n        }\n        *(undefined2 *)((long)pvVar11 + 0x70) = 6;\n        FUN_00116412(param_1,pvVar11);\n        return pvVar11;\n      }\n      if (param_1[1] == 0) {\nLAB_00117628:\n        lVar8 = FUN_001164c9(param_1,3);\n        param_1[1] = lVar8;\n        if (lVar8 == 0) {\n          if ((*(byte *)((long)param_1 + 0x49) & 0x40) == 0) {\n            if ((*(int *)((long)pvVar11 + 0x40) != 0) && (*(short *)((long)pvVar11 + 0x70) != 4)) {\n              *(undefined2 *)((long)pvVar11 + 0x70) = 7;\n            }\n            FUN_00116412(param_1,pvVar11);\n            return pvVar11;\n          }\n          return (void *)0x0;\n        }\n      }\n      else {\n        if ((uVar1 & 0x2000) != 0) {\n          *(uint *)(param_1 + 9) = uVar1 & 0xffffdfff;\n          FUN_00115e7a();\n          param_1[1] = 0;\n          goto LAB_00117628;\n        }\n        iVar5 = FUN_00116203(param_1,pvVar11,0xffffffff,*(undefined8 *)((long)pvVar11 + 0x30));\n        if (iVar5 != 0) {\n          piVar7 = __errno_location();\n          *(int *)((long)pvVar11 + 0x40) = *piVar7;\n          *(ushort *)((long)pvVar11 + 0x72) = *(ushort *)((long)pvVar11 + 0x72) | 1;\n          for (lVar8 = param_1[1]; lVar8 != 0; lVar8 = *(long *)(lVar8 + 0x10)) {\n            *(undefined8 *)(lVar8 + 0x30) = *(undefined8 *)(*(long *)(lVar8 + 8) + 0x30);\n          }\n        }\n      }\n      pvVar11 = (void *)param_1[1];\n      param_1[1] = 0;\n    }\n    else {\nLAB_00117717:\n      do {\n        pvVar11 = *(void **)((long)pvVar12 + 0x10);\n        if (pvVar11 == (void *)0x0) {\n          lVar8 = *(long *)((long)pvVar12 + 8);\n          if (*(long *)(lVar8 + 0x18) != 0) {\n            *param_1 = lVar8;\n            *(undefined1 *)(param_1[4] + *(long *)(lVar8 + 0x48)) = 0;\n            pvVar11 = (void *)FUN_001164c9(param_1,3);\n            if (pvVar11 != (void *)0x0) {\n              free(pvVar12);\n              goto LAB_00117587;\n            }\n            if ((*(byte *)((long)param_1 + 0x49) & 0x40) != 0) {\n              return (void *)0x0;\n            }\n          }\n          pvVar11 = *(void **)((long)pvVar12 + 8);\n          *param_1 = (long)pvVar11;\n          free(pvVar12);\n          if (*(long *)((long)pvVar11 + 0x58) == -1) {\n            free(pvVar11);\n            piVar7 = __errno_location();\n            *piVar7 = 0;\n            *param_1 = 0;\n            return (void *)0x0;\n          }\n          if (*(short *)((long)pvVar11 + 0x70) == 0xb) {\n                    /* WARNING: Subroutine does not return */\n            abort();\n          }\n          *(undefined1 *)(param_1[4] + *(long *)((long)pvVar11 + 0x48)) = 0;\n          if (*(long *)((long)pvVar11 + 0x58) == 0) {\n            iVar5 = FUN_001161af(param_1);\n            if (iVar5 == 0) goto LAB_001177a7;\n            piVar7 = __errno_location();\n            *(int *)((long)pvVar11 + 0x40) = *piVar7;\n            *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\nLAB_001179e4:\n            if (*(short *)((long)pvVar11 + 0x70) == 2) {\n              return (void *)0x0;\n            }\n          }\n          else {\n            if ((*(ushort *)((long)pvVar11 + 0x72) & 2) == 0) {\n              if (((*(ushort *)((long)pvVar11 + 0x72) & 1) == 0) &&\n                 (iVar5 = FUN_00116203(param_1,*(undefined8 *)((long)pvVar11 + 8),0xffffffff,\n                                       &DAT_0011ff41), iVar5 != 0)) {\n                piVar7 = __errno_location();\n                *(int *)((long)pvVar11 + 0x40) = *piVar7;\n                *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\n                goto LAB_001179e4;\n              }\n            }\n            else {\n              if ((*(uint *)(param_1 + 9) & 4) == 0) {\n                if ((*(uint *)(param_1 + 9) & 0x200) == 0) {\n                  iVar5 = fchdir(*(int *)((long)pvVar11 + 0x44));\n                  if (iVar5 != 0) {\n                    piVar7 = __errno_location();\n                    *(int *)((long)pvVar11 + 0x40) = *piVar7;\n                    *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\n                  }\n                }\n                else {\n                  FUN_0011615c(param_1,*(undefined4 *)((long)pvVar11 + 0x44),1);\n                }\n              }\n              close(*(int *)((long)pvVar11 + 0x44));\n            }\nLAB_001177a7:\n            if (*(short *)((long)pvVar11 + 0x70) == 2) goto LAB_00117a88;\n          }\n          if (*(int *)((long)pvVar11 + 0x40) == 0) {\n            *(undefined2 *)((long)pvVar11 + 0x70) = 6;\n            FUN_00116412(param_1,pvVar11);\n          }\n          else {\n            *(undefined2 *)((long)pvVar11 + 0x70) = 7;\n          }\nLAB_00117a88:\n          if ((*(uint *)(param_1 + 9) & 0x4000) != 0) {\n            return (void *)0x0;\n          }\n          return pvVar11;\n        }\n        *param_1 = (long)pvVar11;\n        free(pvVar12);\n        if (*(long *)((long)pvVar11 + 0x58) == 0) {\n          iVar5 = FUN_001161af(param_1);\n          if (iVar5 != 0) {\n            *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\n            return (void *)0x0;\n          }\n          FUN_00115eb3(param_1);\n          *(long *)((long)pvVar11 + 0x48) = *(long *)((long)pvVar11 + 0x60);\n          __s = (char *)((long)pvVar11 + 0x108);\n          memmove((void *)param_1[4],__s,*(long *)((long)pvVar11 + 0x60) + 1);\n          pcVar9 = strrchr(__s,0x2f);\n          if ((pcVar9 == (char *)0x0) || ((__s == pcVar9 && (pcVar9[1] == '\0'))))\n          goto LAB_0011784f;\n          uVar10 = 0xffffffffffffffff;\n          pcVar13 = pcVar9 + 1;\n          goto code_r0x00117837;\n        }\n        pvVar12 = pvVar11;\n      } while (*(short *)((long)pvVar11 + 0x74) == 4);\n      if (*(short *)((long)pvVar11 + 0x74) == 2) {\n        sVar4 = FUN_00115abc(param_1,pvVar11,1);\n        *(short *)((long)pvVar11 + 0x70) = sVar4;\n        if ((sVar4 == 1) && ((*(byte *)(param_1 + 9) & 4) == 0)) {\n          iVar5 = FUN_00115e27(param_1,&DAT_0011ff42);\n          *(int *)((long)pvVar11 + 0x44) = iVar5;\n          if (iVar5 < 0) {\n            piVar7 = __errno_location();\n            *(int *)((long)pvVar11 + 0x40) = *piVar7;\n            *(undefined2 *)((long)pvVar11 + 0x70) = 7;\n          }\n          else {\n            *(ushort *)((long)pvVar11 + 0x72) = *(ushort *)((long)pvVar11 + 0x72) | 2;\n          }\n        }\n        *(undefined2 *)((long)pvVar11 + 0x74) = 3;\n      }\n    }\nLAB_00117587:\n    lVar8 = *(long *)(*(long *)((long)pvVar11 + 8) + 0x48);\n    lVar6 = lVar8 + -1;\n    if (*(char *)(*(long *)(*(long *)((long)pvVar11 + 8) + 0x38) + -1 + lVar8) != '/') {\n      lVar6 = lVar8;\n    }\n    lVar8 = param_1[4];\n    *(undefined1 *)(lVar6 + lVar8) = 0x2f;\n    memmove((undefined1 *)(lVar6 + lVar8) + 1,(void *)((long)pvVar11 + 0x108),\n            *(long *)((long)pvVar11 + 0x60) + 1);\n  }\n  goto LAB_001175c0;\n  while( true ) {\n    uVar10 = uVar10 - 1;\n    cVar2 = *pcVar13;\n    pcVar13 = pcVar13 + (ulong)bVar14 * -2 + 1;\n    if (cVar2 == '\0') break;\ncode_r0x00117837:\n    if (uVar10 == 0) break;\n  }\n  memmove(__s,pcVar9 + 1,~uVar10);\n  *(ulong *)((long)pvVar11 + 0x60) = ~uVar10 - 1;\nLAB_0011784f:\n  lVar8 = param_1[4];\n  *(long *)((long)pvVar11 + 0x38) = lVar8;\n  *(long *)((long)pvVar11 + 0x30) = lVar8;\n  FUN_00115dc3(param_1);\nLAB_001175c0:\n  *param_1 = (long)pvVar11;\n  if (*(short *)((long)pvVar11 + 0x70) == 0xb) {\n    if (*(long *)((long)pvVar11 + 0xa8) != 2) {\n      if (*(long *)((long)pvVar11 + 0xa8) == 1) {\n        return pvVar11;\n      }\n                    /* WARNING: Subroutine does not return */\n      abort();\n    }\n    lVar8 = *(long *)((long)pvVar11 + 8);\n    if (((*(long *)(lVar8 + 0x68) == 0) && ((*(uint *)(param_1 + 9) & 0x18) == 0x18)) &&\n       (iVar5 = FUN_0011603e(lVar8,*(undefined4 *)((long)param_1 + 0x2c)), iVar5 == 2))\n    goto LAB_001175cf;\n    sVar4 = FUN_00115abc(param_1,pvVar11,0);\n    *(short *)((long)pvVar11 + 0x70) = sVar4;\n    if ((*(uint *)((long)pvVar11 + 0x90) & 0xf000) != 0x4000) goto LAB_001175cf;\n    if (*(long *)((long)pvVar11 + 0x58) != 0) {\n      uVar10 = *(long *)(lVar8 + 0x68) - 1;\n      if (0xfffffffffffffffd < uVar10) {\n        if (sVar4 != 1) {\n          return pvVar11;\n        }\n        goto LAB_001175ea;\n      }\n      *(ulong *)(lVar8 + 0x68) = uVar10;\n      goto LAB_001175cf;\n    }\n    if (sVar4 != 1) {\n      return pvVar11;\n    }\n  }\n  else {\nLAB_001175cf:\n    if (*(short *)((long)pvVar11 + 0x70) != 1) {\n      return pvVar11;\n    }\n    if (*(long *)((long)pvVar11 + 0x58) != 0) goto LAB_001175ea;\n  }\n  param_1[3] = *(long *)((long)pvVar11 + 0x78);\nLAB_001175ea:\n  cVar2 = FUN_001160b2(param_1,pvVar11);\n  if (cVar2 == '\0') {\n    piVar7 = __errno_location();\n    *piVar7 = 0xc;\n    pvVar11 = (void *)0x0;\n  }\n  return pvVar11;\n}\n\n" (function_definition "void * fts_read(long *param_1)\n\n{\n  char *__s;\n  uint uVar1;\n  char cVar2;\n  undefined2 uVar3;\n  short sVar4;\n  int iVar5;\n  long lVar6;\n  int *piVar7;\n  long lVar8;\n  char *pcVar9;\n  ulong uVar10;\n  void *pvVar11;\n  void *pvVar12;\n  char *pcVar13;\n  byte bVar14;\n  \n  bVar14 = 0;\n  pvVar11 = (void *)*param_1;\n  if (pvVar11 == (void *)0x0) {\n    return (void *)0x0;\n  }\n  if ((*(byte *)((long)param_1 + 0x49) & 0x40) != 0) {\n    return (void *)0x0;\n  }\n  sVar4 = *(short *)((long)pvVar11 + 0x74);\n  *(undefined2 *)((long)pvVar11 + 0x74) = 3;\n  if (sVar4 == 1) {\n    uVar3 = FUN_00115abc(param_1,pvVar11,0);\n    *(undefined2 *)((long)pvVar11 + 0x70) = uVar3;\n    return pvVar11;\n  }\n  pvVar12 = pvVar11;\n  if (sVar4 == 2) {\n    if (1 < (ushort)(*(short *)((long)pvVar11 + 0x70) - 0xcU)) {\n      if (*(short *)((long)pvVar11 + 0x70) != 1) goto LAB_00117717;\n      goto LAB_00117457;\n    }\n    sVar4 = FUN_00115abc(param_1,pvVar11,1);\n    *(short *)((long)pvVar11 + 0x70) = sVar4;\n    if ((sVar4 == 1) && ((*(byte *)(param_1 + 9) & 4) == 0)) {\n      iVar5 = FUN_00115e27(param_1,&DAT_0011ff42);\n      *(int *)((long)pvVar11 + 0x44) = iVar5;\n      if (iVar5 < 0) {\n        piVar7 = __errno_location();\n        *(int *)((long)pvVar11 + 0x40) = *piVar7;\n        *(undefined2 *)((long)pvVar11 + 0x70) = 7;\n      }\n      else {\n        *(ushort *)((long)pvVar11 + 0x72) = *(ushort *)((long)pvVar11 + 0x72) | 2;\n      }\n    }\n  }\n  else {\n    if (*(short *)((long)pvVar11 + 0x70) == 1) {\n      if (sVar4 == 4) goto LAB_00117473;\nLAB_00117457:\n      uVar1 = *(uint *)(param_1 + 9);\n      if (((uVar1 & 0x40) != 0) && (*(long *)((long)pvVar11 + 0x78) != param_1[3])) {\nLAB_00117473:\n        if ((*(byte *)((long)pvVar11 + 0x72) & 2) != 0) {\n          close(*(int *)((long)pvVar11 + 0x44));\n        }\n        if (param_1[1] != 0) {\n          FUN_00115e7a();\n          param_1[1] = 0;\n        }\n        *(undefined2 *)((long)pvVar11 + 0x70) = 6;\n        FUN_00116412(param_1,pvVar11);\n        return pvVar11;\n      }\n      if (param_1[1] == 0) {\nLAB_00117628:\n        lVar8 = FUN_001164c9(param_1,3);\n        param_1[1] = lVar8;\n        if (lVar8 == 0) {\n          if ((*(byte *)((long)param_1 + 0x49) & 0x40) == 0) {\n            if ((*(int *)((long)pvVar11 + 0x40) != 0) && (*(short *)((long)pvVar11 + 0x70) != 4)) {\n              *(undefined2 *)((long)pvVar11 + 0x70) = 7;\n            }\n            FUN_00116412(param_1,pvVar11);\n            return pvVar11;\n          }\n          return (void *)0x0;\n        }\n      }\n      else {\n        if ((uVar1 & 0x2000) != 0) {\n          *(uint *)(param_1 + 9) = uVar1 & 0xffffdfff;\n          FUN_00115e7a();\n          param_1[1] = 0;\n          goto LAB_00117628;\n        }\n        iVar5 = FUN_00116203(param_1,pvVar11,0xffffffff,*(undefined8 *)((long)pvVar11 + 0x30));\n        if (iVar5 != 0) {\n          piVar7 = __errno_location();\n          *(int *)((long)pvVar11 + 0x40) = *piVar7;\n          *(ushort *)((long)pvVar11 + 0x72) = *(ushort *)((long)pvVar11 + 0x72) | 1;\n          for (lVar8 = param_1[1]; lVar8 != 0; lVar8 = *(long *)(lVar8 + 0x10)) {\n            *(undefined8 *)(lVar8 + 0x30) = *(undefined8 *)(*(long *)(lVar8 + 8) + 0x30);\n          }\n        }\n      }\n      pvVar11 = (void *)param_1[1];\n      param_1[1] = 0;\n    }\n    else {\nLAB_00117717:\n      do {\n        pvVar11 = *(void **)((long)pvVar12 + 0x10);\n        if (pvVar11 == (void *)0x0) {\n          lVar8 = *(long *)((long)pvVar12 + 8);\n          if (*(long *)(lVar8 + 0x18) != 0) {\n            *param_1 = lVar8;\n            *(undefined1 *)(param_1[4] + *(long *)(lVar8 + 0x48)) = 0;\n            pvVar11 = (void *)FUN_001164c9(param_1,3);\n            if (pvVar11 != (void *)0x0) {\n              free(pvVar12);\n              goto LAB_00117587;\n            }\n            if ((*(byte *)((long)param_1 + 0x49) & 0x40) != 0) {\n              return (void *)0x0;\n            }\n          }\n          pvVar11 = *(void **)((long)pvVar12 + 8);\n          *param_1 = (long)pvVar11;\n          free(pvVar12);\n          if (*(long *)((long)pvVar11 + 0x58) == -1) {\n            free(pvVar11);\n            piVar7 = __errno_location();\n            *piVar7 = 0;\n            *param_1 = 0;\n            return (void *)0x0;\n          }\n          if (*(short *)((long)pvVar11 + 0x70) == 0xb) {\n                    /* WARNING: Subroutine does not return */\n            abort();\n          }\n          *(undefined1 *)(param_1[4] + *(long *)((long)pvVar11 + 0x48)) = 0;\n          if (*(long *)((long)pvVar11 + 0x58) == 0) {\n            iVar5 = FUN_001161af(param_1);\n            if (iVar5 == 0) goto LAB_001177a7;\n            piVar7 = __errno_location();\n            *(int *)((long)pvVar11 + 0x40) = *piVar7;\n            *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\nLAB_001179e4:\n            if (*(short *)((long)pvVar11 + 0x70) == 2) {\n              return (void *)0x0;\n            }\n          }\n          else {\n            if ((*(ushort *)((long)pvVar11 + 0x72) & 2) == 0) {\n              if (((*(ushort *)((long)pvVar11 + 0x72) & 1) == 0) &&\n                 (iVar5 = FUN_00116203(param_1,*(undefined8 *)((long)pvVar11 + 8),0xffffffff,\n                                       &DAT_0011ff41), iVar5 != 0)) {\n                piVar7 = __errno_location();\n                *(int *)((long)pvVar11 + 0x40) = *piVar7;\n                *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\n                goto LAB_001179e4;\n              }\n            }\n            else {\n              if ((*(uint *)(param_1 + 9) & 4) == 0) {\n                if ((*(uint *)(param_1 + 9) & 0x200) == 0) {\n                  iVar5 = fchdir(*(int *)((long)pvVar11 + 0x44));\n                  if (iVar5 != 0) {\n                    piVar7 = __errno_location();\n                    *(int *)((long)pvVar11 + 0x40) = *piVar7;\n                    *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\n                  }\n                }\n                else {\n                  FUN_0011615c(param_1,*(undefined4 *)((long)pvVar11 + 0x44),1);\n                }\n              }\n              close(*(int *)((long)pvVar11 + 0x44));\n            }\nLAB_001177a7:\n            if (*(short *)((long)pvVar11 + 0x70) == 2) goto LAB_00117a88;\n          }\n          if (*(int *)((long)pvVar11 + 0x40) == 0) {\n            *(undefined2 *)((long)pvVar11 + 0x70) = 6;\n            FUN_00116412(param_1,pvVar11);\n          }\n          else {\n            *(undefined2 *)((long)pvVar11 + 0x70) = 7;\n          }\nLAB_00117a88:\n          if ((*(uint *)(param_1 + 9) & 0x4000) != 0) {\n            return (void *)0x0;\n          }\n          return pvVar11;\n        }\n        *param_1 = (long)pvVar11;\n        free(pvVar12);\n        if (*(long *)((long)pvVar11 + 0x58) == 0) {\n          iVar5 = FUN_001161af(param_1);\n          if (iVar5 != 0) {\n            *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\n            return (void *)0x0;\n          }\n          FUN_00115eb3(param_1);\n          *(long *)((long)pvVar11 + 0x48) = *(long *)((long)pvVar11 + 0x60);\n          __s = (char *)((long)pvVar11 + 0x108);\n          memmove((void *)param_1[4],__s,*(long *)((long)pvVar11 + 0x60) + 1);\n          pcVar9 = strrchr(__s,0x2f);\n          if ((pcVar9 == (char *)0x0) || ((__s == pcVar9 && (pcVar9[1] == '\0'))))\n          goto LAB_0011784f;\n          uVar10 = 0xffffffffffffffff;\n          pcVar13 = pcVar9 + 1;\n          goto code_r0x00117837;\n        }\n        pvVar12 = pvVar11;\n      } while (*(short *)((long)pvVar11 + 0x74) == 4);\n      if (*(short *)((long)pvVar11 + 0x74) == 2) {\n        sVar4 = FUN_00115abc(param_1,pvVar11,1);\n        *(short *)((long)pvVar11 + 0x70) = sVar4;\n        if ((sVar4 == 1) && ((*(byte *)(param_1 + 9) & 4) == 0)) {\n          iVar5 = FUN_00115e27(param_1,&DAT_0011ff42);\n          *(int *)((long)pvVar11 + 0x44) = iVar5;\n          if (iVar5 < 0) {\n            piVar7 = __errno_location();\n            *(int *)((long)pvVar11 + 0x40) = *piVar7;\n            *(undefined2 *)((long)pvVar11 + 0x70) = 7;\n          }\n          else {\n            *(ushort *)((long)pvVar11 + 0x72) = *(ushort *)((long)pvVar11 + 0x72) | 2;\n          }\n        }\n        *(undefined2 *)((long)pvVar11 + 0x74) = 3;\n      }\n    }\nLAB_00117587:\n    lVar8 = *(long *)(*(long *)((long)pvVar11 + 8) + 0x48);\n    lVar6 = lVar8 + -1;\n    if (*(char *)(*(long *)(*(long *)((long)pvVar11 + 8) + 0x38) + -1 + lVar8) != '/') {\n      lVar6 = lVar8;\n    }\n    lVar8 = param_1[4];\n    *(undefined1 *)(lVar6 + lVar8) = 0x2f;\n    memmove((undefined1 *)(lVar6 + lVar8) + 1,(void *)((long)pvVar11 + 0x108),\n            *(long *)((long)pvVar11 + 0x60) + 1);\n  }\n  goto LAB_001175c0;\n  while( true ) {\n    uVar10 = uVar10 - 1;\n    cVar2 = *pcVar13;\n    pcVar13 = pcVar13 + (ulong)bVar14 * -2 + 1;\n    if (cVar2 == '\0') break;\ncode_r0x00117837:\n    if (uVar10 == 0) break;\n  }\n  memmove(__s,pcVar9 + 1,~uVar10);\n  *(ulong *)((long)pvVar11 + 0x60) = ~uVar10 - 1;\nLAB_0011784f:\n  lVar8 = param_1[4];\n  *(long *)((long)pvVar11 + 0x38) = lVar8;\n  *(long *)((long)pvVar11 + 0x30) = lVar8;\n  FUN_00115dc3(param_1);\nLAB_001175c0:\n  *param_1 = (long)pvVar11;\n  if (*(short *)((long)pvVar11 + 0x70) == 0xb) {\n    if (*(long *)((long)pvVar11 + 0xa8) != 2) {\n      if (*(long *)((long)pvVar11 + 0xa8) == 1) {\n        return pvVar11;\n      }\n                    /* WARNING: Subroutine does not return */\n      abort();\n    }\n    lVar8 = *(long *)((long)pvVar11 + 8);\n    if (((*(long *)(lVar8 + 0x68) == 0) && ((*(uint *)(param_1 + 9) & 0x18) == 0x18)) &&\n       (iVar5 = FUN_0011603e(lVar8,*(undefined4 *)((long)param_1 + 0x2c)), iVar5 == 2))\n    goto LAB_001175cf;\n    sVar4 = FUN_00115abc(param_1,pvVar11,0);\n    *(short *)((long)pvVar11 + 0x70) = sVar4;\n    if ((*(uint *)((long)pvVar11 + 0x90) & 0xf000) != 0x4000) goto LAB_001175cf;\n    if (*(long *)((long)pvVar11 + 0x58) != 0) {\n      uVar10 = *(long *)(lVar8 + 0x68) - 1;\n      if (0xfffffffffffffffd < uVar10) {\n        if (sVar4 != 1) {\n          return pvVar11;\n        }\n        goto LAB_001175ea;\n      }\n      *(ulong *)(lVar8 + 0x68) = uVar10;\n      goto LAB_001175cf;\n    }\n    if (sVar4 != 1) {\n      return pvVar11;\n    }\n  }\n  else {\nLAB_001175cf:\n    if (*(short *)((long)pvVar11 + 0x70) != 1) {\n      return pvVar11;\n    }\n    if (*(long *)((long)pvVar11 + 0x58) != 0) goto LAB_001175ea;\n  }\n  param_1[3] = *(long *)((long)pvVar11 + 0x78);\nLAB_001175ea:\n  cVar2 = FUN_001160b2(param_1,pvVar11);\n  if (cVar2 == '\0') {\n    piVar7 = __errno_location();\n    *piVar7 = 0xc;\n    pvVar11 = (void *)0x0;\n  }\n  return pvVar11;\n}" primitive_type (pointer_declarator "* fts_read(long *param_1)" * (function_declarator "fts_read(long *param_1)" identifier (parameter_list "(long *param_1)" ( (parameter_declaration "long *param_1" (sized_type_specifier "long" long) (pointer_declarator "*param_1" * identifier)) )))) (compound_statement "{\n  char *__s;\n  uint uVar1;\n  char cVar2;\n  undefined2 uVar3;\n  short sVar4;\n  int iVar5;\n  long lVar6;\n  int *piVar7;\n  long lVar8;\n  char *pcVar9;\n  ulong uVar10;\n  void *pvVar11;\n  void *pvVar12;\n  char *pcVar13;\n  byte bVar14;\n  \n  bVar14 = 0;\n  pvVar11 = (void *)*param_1;\n  if (pvVar11 == (void *)0x0) {\n    return (void *)0x0;\n  }\n  if ((*(byte *)((long)param_1 + 0x49) & 0x40) != 0) {\n    return (void *)0x0;\n  }\n  sVar4 = *(short *)((long)pvVar11 + 0x74);\n  *(undefined2 *)((long)pvVar11 + 0x74) = 3;\n  if (sVar4 == 1) {\n    uVar3 = FUN_00115abc(param_1,pvVar11,0);\n    *(undefined2 *)((long)pvVar11 + 0x70) = uVar3;\n    return pvVar11;\n  }\n  pvVar12 = pvVar11;\n  if (sVar4 == 2) {\n    if (1 < (ushort)(*(short *)((long)pvVar11 + 0x70) - 0xcU)) {\n      if (*(short *)((long)pvVar11 + 0x70) != 1) goto LAB_00117717;\n      goto LAB_00117457;\n    }\n    sVar4 = FUN_00115abc(param_1,pvVar11,1);\n    *(short *)((long)pvVar11 + 0x70) = sVar4;\n    if ((sVar4 == 1) && ((*(byte *)(param_1 + 9) & 4) == 0)) {\n      iVar5 = FUN_00115e27(param_1,&DAT_0011ff42);\n      *(int *)((long)pvVar11 + 0x44) = iVar5;\n      if (iVar5 < 0) {\n        piVar7 = __errno_location();\n        *(int *)((long)pvVar11 + 0x40) = *piVar7;\n        *(undefined2 *)((long)pvVar11 + 0x70) = 7;\n      }\n      else {\n        *(ushort *)((long)pvVar11 + 0x72) = *(ushort *)((long)pvVar11 + 0x72) | 2;\n      }\n    }\n  }\n  else {\n    if (*(short *)((long)pvVar11 + 0x70) == 1) {\n      if (sVar4 == 4) goto LAB_00117473;\nLAB_00117457:\n      uVar1 = *(uint *)(param_1 + 9);\n      if (((uVar1 & 0x40) != 0) && (*(long *)((long)pvVar11 + 0x78) != param_1[3])) {\nLAB_00117473:\n        if ((*(byte *)((long)pvVar11 + 0x72) & 2) != 0) {\n          close(*(int *)((long)pvVar11 + 0x44));\n        }\n        if (param_1[1] != 0) {\n          FUN_00115e7a();\n          param_1[1] = 0;\n        }\n        *(undefined2 *)((long)pvVar11 + 0x70) = 6;\n        FUN_00116412(param_1,pvVar11);\n        return pvVar11;\n      }\n      if (param_1[1] == 0) {\nLAB_00117628:\n        lVar8 = FUN_001164c9(param_1,3);\n        param_1[1] = lVar8;\n        if (lVar8 == 0) {\n          if ((*(byte *)((long)param_1 + 0x49) & 0x40) == 0) {\n            if ((*(int *)((long)pvVar11 + 0x40) != 0) && (*(short *)((long)pvVar11 + 0x70) != 4)) {\n              *(undefined2 *)((long)pvVar11 + 0x70) = 7;\n            }\n            FUN_00116412(param_1,pvVar11);\n            return pvVar11;\n          }\n          return (void *)0x0;\n        }\n      }\n      else {\n        if ((uVar1 & 0x2000) != 0) {\n          *(uint *)(param_1 + 9) = uVar1 & 0xffffdfff;\n          FUN_00115e7a();\n          param_1[1] = 0;\n          goto LAB_00117628;\n        }\n        iVar5 = FUN_00116203(param_1,pvVar11,0xffffffff,*(undefined8 *)((long)pvVar11 + 0x30));\n        if (iVar5 != 0) {\n          piVar7 = __errno_location();\n          *(int *)((long)pvVar11 + 0x40) = *piVar7;\n          *(ushort *)((long)pvVar11 + 0x72) = *(ushort *)((long)pvVar11 + 0x72) | 1;\n          for (lVar8 = param_1[1]; lVar8 != 0; lVar8 = *(long *)(lVar8 + 0x10)) {\n            *(undefined8 *)(lVar8 + 0x30) = *(undefined8 *)(*(long *)(lVar8 + 8) + 0x30);\n          }\n        }\n      }\n      pvVar11 = (void *)param_1[1];\n      param_1[1] = 0;\n    }\n    else {\nLAB_00117717:\n      do {\n        pvVar11 = *(void **)((long)pvVar12 + 0x10);\n        if (pvVar11 == (void *)0x0) {\n          lVar8 = *(long *)((long)pvVar12 + 8);\n          if (*(long *)(lVar8 + 0x18) != 0) {\n            *param_1 = lVar8;\n            *(undefined1 *)(param_1[4] + *(long *)(lVar8 + 0x48)) = 0;\n            pvVar11 = (void *)FUN_001164c9(param_1,3);\n            if (pvVar11 != (void *)0x0) {\n              free(pvVar12);\n              goto LAB_00117587;\n            }\n            if ((*(byte *)((long)param_1 + 0x49) & 0x40) != 0) {\n              return (void *)0x0;\n            }\n          }\n          pvVar11 = *(void **)((long)pvVar12 + 8);\n          *param_1 = (long)pvVar11;\n          free(pvVar12);\n          if (*(long *)((long)pvVar11 + 0x58) == -1) {\n            free(pvVar11);\n            piVar7 = __errno_location();\n            *piVar7 = 0;\n            *param_1 = 0;\n            return (void *)0x0;\n          }\n          if (*(short *)((long)pvVar11 + 0x70) == 0xb) {\n                    /* WARNING: Subroutine does not return */\n            abort();\n          }\n          *(undefined1 *)(param_1[4] + *(long *)((long)pvVar11 + 0x48)) = 0;\n          if (*(long *)((long)pvVar11 + 0x58) == 0) {\n            iVar5 = FUN_001161af(param_1);\n            if (iVar5 == 0) goto LAB_001177a7;\n            piVar7 = __errno_location();\n            *(int *)((long)pvVar11 + 0x40) = *piVar7;\n            *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\nLAB_001179e4:\n            if (*(short *)((long)pvVar11 + 0x70) == 2) {\n              return (void *)0x0;\n            }\n          }\n          else {\n            if ((*(ushort *)((long)pvVar11 + 0x72) & 2) == 0) {\n              if (((*(ushort *)((long)pvVar11 + 0x72) & 1) == 0) &&\n                 (iVar5 = FUN_00116203(param_1,*(undefined8 *)((long)pvVar11 + 8),0xffffffff,\n                                       &DAT_0011ff41), iVar5 != 0)) {\n                piVar7 = __errno_location();\n                *(int *)((long)pvVar11 + 0x40) = *piVar7;\n                *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\n                goto LAB_001179e4;\n              }\n            }\n            else {\n              if ((*(uint *)(param_1 + 9) & 4) == 0) {\n                if ((*(uint *)(param_1 + 9) & 0x200) == 0) {\n                  iVar5 = fchdir(*(int *)((long)pvVar11 + 0x44));\n                  if (iVar5 != 0) {\n                    piVar7 = __errno_location();\n                    *(int *)((long)pvVar11 + 0x40) = *piVar7;\n                    *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\n                  }\n                }\n                else {\n                  FUN_0011615c(param_1,*(undefined4 *)((long)pvVar11 + 0x44),1);\n                }\n              }\n              close(*(int *)((long)pvVar11 + 0x44));\n            }\nLAB_001177a7:\n            if (*(short *)((long)pvVar11 + 0x70) == 2) goto LAB_00117a88;\n          }\n          if (*(int *)((long)pvVar11 + 0x40) == 0) {\n            *(undefined2 *)((long)pvVar11 + 0x70) = 6;\n            FUN_00116412(param_1,pvVar11);\n          }\n          else {\n            *(undefined2 *)((long)pvVar11 + 0x70) = 7;\n          }\nLAB_00117a88:\n          if ((*(uint *)(param_1 + 9) & 0x4000) != 0) {\n            return (void *)0x0;\n          }\n          return pvVar11;\n        }\n        *param_1 = (long)pvVar11;\n        free(pvVar12);\n        if (*(long *)((long)pvVar11 + 0x58) == 0) {\n          iVar5 = FUN_001161af(param_1);\n          if (iVar5 != 0) {\n            *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\n            return (void *)0x0;\n          }\n          FUN_00115eb3(param_1);\n          *(long *)((long)pvVar11 + 0x48) = *(long *)((long)pvVar11 + 0x60);\n          __s = (char *)((long)pvVar11 + 0x108);\n          memmove((void *)param_1[4],__s,*(long *)((long)pvVar11 + 0x60) + 1);\n          pcVar9 = strrchr(__s,0x2f);\n          if ((pcVar9 == (char *)0x0) || ((__s == pcVar9 && (pcVar9[1] == '\0'))))\n          goto LAB_0011784f;\n          uVar10 = 0xffffffffffffffff;\n          pcVar13 = pcVar9 + 1;\n          goto code_r0x00117837;\n        }\n        pvVar12 = pvVar11;\n      } while (*(short *)((long)pvVar11 + 0x74) == 4);\n      if (*(short *)((long)pvVar11 + 0x74) == 2) {\n        sVar4 = FUN_00115abc(param_1,pvVar11,1);\n        *(short *)((long)pvVar11 + 0x70) = sVar4;\n        if ((sVar4 == 1) && ((*(byte *)(param_1 + 9) & 4) == 0)) {\n          iVar5 = FUN_00115e27(param_1,&DAT_0011ff42);\n          *(int *)((long)pvVar11 + 0x44) = iVar5;\n          if (iVar5 < 0) {\n            piVar7 = __errno_location();\n            *(int *)((long)pvVar11 + 0x40) = *piVar7;\n            *(undefined2 *)((long)pvVar11 + 0x70) = 7;\n          }\n          else {\n            *(ushort *)((long)pvVar11 + 0x72) = *(ushort *)((long)pvVar11 + 0x72) | 2;\n          }\n        }\n        *(undefined2 *)((long)pvVar11 + 0x74) = 3;\n      }\n    }\nLAB_00117587:\n    lVar8 = *(long *)(*(long *)((long)pvVar11 + 8) + 0x48);\n    lVar6 = lVar8 + -1;\n    if (*(char *)(*(long *)(*(long *)((long)pvVar11 + 8) + 0x38) + -1 + lVar8) != '/') {\n      lVar6 = lVar8;\n    }\n    lVar8 = param_1[4];\n    *(undefined1 *)(lVar6 + lVar8) = 0x2f;\n    memmove((undefined1 *)(lVar6 + lVar8) + 1,(void *)((long)pvVar11 + 0x108),\n            *(long *)((long)pvVar11 + 0x60) + 1);\n  }\n  goto LAB_001175c0;\n  while( true ) {\n    uVar10 = uVar10 - 1;\n    cVar2 = *pcVar13;\n    pcVar13 = pcVar13 + (ulong)bVar14 * -2 + 1;\n    if (cVar2 == '\0') break;\ncode_r0x00117837:\n    if (uVar10 == 0) break;\n  }\n  memmove(__s,pcVar9 + 1,~uVar10);\n  *(ulong *)((long)pvVar11 + 0x60) = ~uVar10 - 1;\nLAB_0011784f:\n  lVar8 = param_1[4];\n  *(long *)((long)pvVar11 + 0x38) = lVar8;\n  *(long *)((long)pvVar11 + 0x30) = lVar8;\n  FUN_00115dc3(param_1);\nLAB_001175c0:\n  *param_1 = (long)pvVar11;\n  if (*(short *)((long)pvVar11 + 0x70) == 0xb) {\n    if (*(long *)((long)pvVar11 + 0xa8) != 2) {\n      if (*(long *)((long)pvVar11 + 0xa8) == 1) {\n        return pvVar11;\n      }\n                    /* WARNING: Subroutine does not return */\n      abort();\n    }\n    lVar8 = *(long *)((long)pvVar11 + 8);\n    if (((*(long *)(lVar8 + 0x68) == 0) && ((*(uint *)(param_1 + 9) & 0x18) == 0x18)) &&\n       (iVar5 = FUN_0011603e(lVar8,*(undefined4 *)((long)param_1 + 0x2c)), iVar5 == 2))\n    goto LAB_001175cf;\n    sVar4 = FUN_00115abc(param_1,pvVar11,0);\n    *(short *)((long)pvVar11 + 0x70) = sVar4;\n    if ((*(uint *)((long)pvVar11 + 0x90) & 0xf000) != 0x4000) goto LAB_001175cf;\n    if (*(long *)((long)pvVar11 + 0x58) != 0) {\n      uVar10 = *(long *)(lVar8 + 0x68) - 1;\n      if (0xfffffffffffffffd < uVar10) {\n        if (sVar4 != 1) {\n          return pvVar11;\n        }\n        goto LAB_001175ea;\n      }\n      *(ulong *)(lVar8 + 0x68) = uVar10;\n      goto LAB_001175cf;\n    }\n    if (sVar4 != 1) {\n      return pvVar11;\n    }\n  }\n  else {\nLAB_001175cf:\n    if (*(short *)((long)pvVar11 + 0x70) != 1) {\n      return pvVar11;\n    }\n    if (*(long *)((long)pvVar11 + 0x58) != 0) goto LAB_001175ea;\n  }\n  param_1[3] = *(long *)((long)pvVar11 + 0x78);\nLAB_001175ea:\n  cVar2 = FUN_001160b2(param_1,pvVar11);\n  if (cVar2 == '\0') {\n    piVar7 = __errno_location();\n    *piVar7 = 0xc;\n    pvVar11 = (void *)0x0;\n  }\n  return pvVar11;\n}" { (declaration "char *__s;" primitive_type (pointer_declarator "*__s" * identifier) ;) (declaration "uint uVar1;" type_identifier identifier ;) (declaration "char cVar2;" primitive_type identifier ;) (declaration "undefined2 uVar3;" type_identifier identifier ;) (declaration "short sVar4;" (sized_type_specifier "short" short) identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "long lVar6;" (sized_type_specifier "long" long) identifier ;) (declaration "int *piVar7;" primitive_type (pointer_declarator "*piVar7" * identifier) ;) (declaration "long lVar8;" (sized_type_specifier "long" long) identifier ;) (declaration "char *pcVar9;" primitive_type (pointer_declarator "*pcVar9" * identifier) ;) (declaration "ulong uVar10;" type_identifier identifier ;) (declaration "void *pvVar11;" primitive_type (pointer_declarator "*pvVar11" * identifier) ;) (declaration "void *pvVar12;" primitive_type (pointer_declarator "*pvVar12" * identifier) ;) (declaration "char *pcVar13;" primitive_type (pointer_declarator "*pcVar13" * identifier) ;) (declaration "byte bVar14;" type_identifier identifier ;) (expression_statement "bVar14 = 0;" (assignment_expression "bVar14 = 0" identifier = number_literal) ;) (expression_statement "pvVar11 = (void *)*param_1;" (assignment_expression "pvVar11 = (void *)*param_1" identifier = (cast_expression "(void *)*param_1" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_1" * identifier))) ;) (if_statement "if (pvVar11 == (void *)0x0) {\n    return (void *)0x0;\n  }" if (parenthesized_expression "(pvVar11 == (void *)0x0)" ( (binary_expression "pvVar11 == (void *)0x0" identifier == (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    return (void *)0x0;\n  }" { (return_statement "return (void *)0x0;" return (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (if_statement "if ((*(byte *)((long)param_1 + 0x49) & 0x40) != 0) {\n    return (void *)0x0;\n  }" if (parenthesized_expression "((*(byte *)((long)param_1 + 0x49) & 0x40) != 0)" ( (binary_expression "(*(byte *)((long)param_1 + 0x49) & 0x40) != 0" (parenthesized_expression "(*(byte *)((long)param_1 + 0x49) & 0x40)" ( (binary_expression "*(byte *)((long)param_1 + 0x49) & 0x40" (pointer_expression "*(byte *)((long)param_1 + 0x49)" * (cast_expression "(byte *)((long)param_1 + 0x49)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_1 + 0x49)" ( (binary_expression "(long)param_1 + 0x49" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n    return (void *)0x0;\n  }" { (return_statement "return (void *)0x0;" return (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (expression_statement "sVar4 = *(short *)((long)pvVar11 + 0x74);" (assignment_expression "sVar4 = *(short *)((long)pvVar11 + 0x74)" identifier = (pointer_expression "*(short *)((long)pvVar11 + 0x74)" * (cast_expression "(short *)((long)pvVar11 + 0x74)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)pvVar11 + 0x74)" ( (binary_expression "(long)pvVar11 + 0x74" (cast_expression "(long)pvVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ))))) ;) (expression_statement "*(undefined2 *)((long)pvVar11 + 0x74) = 3;" (assignment_expression "*(undefined2 *)((long)pvVar11 + 0x74) = 3" (pointer_expression "*(undefined2 *)((long)pvVar11 + 0x74)" * (cast_expression "(undefined2 *)((long)pvVar11 + 0x74)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)pvVar11 + 0x74)" ( (binary_expression "(long)pvVar11 + 0x74" (cast_expression "(long)pvVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = number_literal) ;) (if_statement "if (sVar4 == 1) {\n    uVar3 = FUN_00115abc(param_1,pvVar11,0);\n    *(undefined2 *)((long)pvVar11 + 0x70) = uVar3;\n    return pvVar11;\n  }" if (parenthesized_expression "(sVar4 == 1)" ( (binary_expression "sVar4 == 1" identifier == number_literal) )) (compound_statement "{\n    uVar3 = FUN_00115abc(param_1,pvVar11,0);\n    *(undefined2 *)((long)pvVar11 + 0x70) = uVar3;\n    return pvVar11;\n  }" { (expression_statement "uVar3 = FUN_00115abc(param_1,pvVar11,0);" (assignment_expression "uVar3 = FUN_00115abc(param_1,pvVar11,0)" identifier = (call_expression "FUN_00115abc(param_1,pvVar11,0)" identifier (argument_list "(param_1,pvVar11,0)" ( identifier , identifier , number_literal )))) ;) (expression_statement "*(undefined2 *)((long)pvVar11 + 0x70) = uVar3;" (assignment_expression "*(undefined2 *)((long)pvVar11 + 0x70) = uVar3" (pointer_expression "*(undefined2 *)((long)pvVar11 + 0x70)" * (cast_expression "(undefined2 *)((long)pvVar11 + 0x70)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)pvVar11 + 0x70)" ( (binary_expression "(long)pvVar11 + 0x70" (cast_expression "(long)pvVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = identifier) ;) (return_statement "return pvVar11;" return identifier ;) })) (expression_statement "pvVar12 = pvVar11;" (assignment_expression "pvVar12 = pvVar11" identifier = identifier) ;) (if_statement "if (sVar4 == 2) {\n    if (1 < (ushort)(*(short *)((long)pvVar11 + 0x70) - 0xcU)) {\n      if (*(short *)((long)pvVar11 + 0x70) != 1) goto LAB_00117717;\n      goto LAB_00117457;\n    }\n    sVar4 = FUN_00115abc(param_1,pvVar11,1);\n    *(short *)((long)pvVar11 + 0x70) = sVar4;\n    if ((sVar4 == 1) && ((*(byte *)(param_1 + 9) & 4) == 0)) {\n      iVar5 = FUN_00115e27(param_1,&DAT_0011ff42);\n      *(int *)((long)pvVar11 + 0x44) = iVar5;\n      if (iVar5 < 0) {\n        piVar7 = __errno_location();\n        *(int *)((long)pvVar11 + 0x40) = *piVar7;\n        *(undefined2 *)((long)pvVar11 + 0x70) = 7;\n      }\n      else {\n        *(ushort *)((long)pvVar11 + 0x72) = *(ushort *)((long)pvVar11 + 0x72) | 2;\n      }\n    }\n  }\n  else {\n    if (*(short *)((long)pvVar11 + 0x70) == 1) {\n      if (sVar4 == 4) goto LAB_00117473;\nLAB_00117457:\n      uVar1 = *(uint *)(param_1 + 9);\n      if (((uVar1 & 0x40) != 0) && (*(long *)((long)pvVar11 + 0x78) != param_1[3])) {\nLAB_00117473:\n        if ((*(byte *)((long)pvVar11 + 0x72) & 2) != 0) {\n          close(*(int *)((long)pvVar11 + 0x44));\n        }\n        if (param_1[1] != 0) {\n          FUN_00115e7a();\n          param_1[1] = 0;\n        }\n        *(undefined2 *)((long)pvVar11 + 0x70) = 6;\n        FUN_00116412(param_1,pvVar11);\n        return pvVar11;\n      }\n      if (param_1[1] == 0) {\nLAB_00117628:\n        lVar8 = FUN_001164c9(param_1,3);\n        param_1[1] = lVar8;\n        if (lVar8 == 0) {\n          if ((*(byte *)((long)param_1 + 0x49) & 0x40) == 0) {\n            if ((*(int *)((long)pvVar11 + 0x40) != 0) && (*(short *)((long)pvVar11 + 0x70) != 4)) {\n              *(undefined2 *)((long)pvVar11 + 0x70) = 7;\n            }\n            FUN_00116412(param_1,pvVar11);\n            return pvVar11;\n          }\n          return (void *)0x0;\n        }\n      }\n      else {\n        if ((uVar1 & 0x2000) != 0) {\n          *(uint *)(param_1 + 9) = uVar1 & 0xffffdfff;\n          FUN_00115e7a();\n          param_1[1] = 0;\n          goto LAB_00117628;\n        }\n        iVar5 = FUN_00116203(param_1,pvVar11,0xffffffff,*(undefined8 *)((long)pvVar11 + 0x30));\n        if (iVar5 != 0) {\n          piVar7 = __errno_location();\n          *(int *)((long)pvVar11 + 0x40) = *piVar7;\n          *(ushort *)((long)pvVar11 + 0x72) = *(ushort *)((long)pvVar11 + 0x72) | 1;\n          for (lVar8 = param_1[1]; lVar8 != 0; lVar8 = *(long *)(lVar8 + 0x10)) {\n            *(undefined8 *)(lVar8 + 0x30) = *(undefined8 *)(*(long *)(lVar8 + 8) + 0x30);\n          }\n        }\n      }\n      pvVar11 = (void *)param_1[1];\n      param_1[1] = 0;\n    }\n    else {\nLAB_00117717:\n      do {\n        pvVar11 = *(void **)((long)pvVar12 + 0x10);\n        if (pvVar11 == (void *)0x0) {\n          lVar8 = *(long *)((long)pvVar12 + 8);\n          if (*(long *)(lVar8 + 0x18) != 0) {\n            *param_1 = lVar8;\n            *(undefined1 *)(param_1[4] + *(long *)(lVar8 + 0x48)) = 0;\n            pvVar11 = (void *)FUN_001164c9(param_1,3);\n            if (pvVar11 != (void *)0x0) {\n              free(pvVar12);\n              goto LAB_00117587;\n            }\n            if ((*(byte *)((long)param_1 + 0x49) & 0x40) != 0) {\n              return (void *)0x0;\n            }\n          }\n          pvVar11 = *(void **)((long)pvVar12 + 8);\n          *param_1 = (long)pvVar11;\n          free(pvVar12);\n          if (*(long *)((long)pvVar11 + 0x58) == -1) {\n            free(pvVar11);\n            piVar7 = __errno_location();\n            *piVar7 = 0;\n            *param_1 = 0;\n            return (void *)0x0;\n          }\n          if (*(short *)((long)pvVar11 + 0x70) == 0xb) {\n                    /* WARNING: Subroutine does not return */\n            abort();\n          }\n          *(undefined1 *)(param_1[4] + *(long *)((long)pvVar11 + 0x48)) = 0;\n          if (*(long *)((long)pvVar11 + 0x58) == 0) {\n            iVar5 = FUN_001161af(param_1);\n            if (iVar5 == 0) goto LAB_001177a7;\n            piVar7 = __errno_location();\n            *(int *)((long)pvVar11 + 0x40) = *piVar7;\n            *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\nLAB_001179e4:\n            if (*(short *)((long)pvVar11 + 0x70) == 2) {\n              return (void *)0x0;\n            }\n          }\n          else {\n            if ((*(ushort *)((long)pvVar11 + 0x72) & 2) == 0) {\n              if (((*(ushort *)((long)pvVar11 + 0x72) & 1) == 0) &&\n                 (iVar5 = FUN_00116203(param_1,*(undefined8 *)((long)pvVar11 + 8),0xffffffff,\n                                       &DAT_0011ff41), iVar5 != 0)) {\n                piVar7 = __errno_location();\n                *(int *)((long)pvVar11 + 0x40) = *piVar7;\n                *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\n                goto LAB_001179e4;\n              }\n            }\n            else {\n              if ((*(uint *)(param_1 + 9) & 4) == 0) {\n                if ((*(uint *)(param_1 + 9) & 0x200) == 0) {\n                  iVar5 = fchdir(*(int *)((long)pvVar11 + 0x44));\n                  if (iVar5 != 0) {\n                    piVar7 = __errno_location();\n                    *(int *)((long)pvVar11 + 0x40) = *piVar7;\n                    *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\n                  }\n                }\n                else {\n                  FUN_0011615c(param_1,*(undefined4 *)((long)pvVar11 + 0x44),1);\n                }\n              }\n              close(*(int *)((long)pvVar11 + 0x44));\n            }\nLAB_001177a7:\n            if (*(short *)((long)pvVar11 + 0x70) == 2) goto LAB_00117a88;\n          }\n          if (*(int *)((long)pvVar11 + 0x40) == 0) {\n            *(undefined2 *)((long)pvVar11 + 0x70) = 6;\n            FUN_00116412(param_1,pvVar11);\n          }\n          else {\n            *(undefined2 *)((long)pvVar11 + 0x70) = 7;\n          }\nLAB_00117a88:\n          if ((*(uint *)(param_1 + 9) & 0x4000) != 0) {\n            return (void *)0x0;\n          }\n          return pvVar11;\n        }\n        *param_1 = (long)pvVar11;\n        free(pvVar12);\n        if (*(long *)((long)pvVar11 + 0x58) == 0) {\n          iVar5 = FUN_001161af(param_1);\n          if (iVar5 != 0) {\n            *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\n            return (void *)0x0;\n          }\n          FUN_00115eb3(param_1);\n          *(long *)((long)pvVar11 + 0x48) = *(long *)((long)pvVar11 + 0x60);\n          __s = (char *)((long)pvVar11 + 0x108);\n          memmove((void *)param_1[4],__s,*(long *)((long)pvVar11 + 0x60) + 1);\n          pcVar9 = strrchr(__s,0x2f);\n          if ((pcVar9 == (char *)0x0) || ((__s == pcVar9 && (pcVar9[1] == '\0'))))\n          goto LAB_0011784f;\n          uVar10 = 0xffffffffffffffff;\n          pcVar13 = pcVar9 + 1;\n          goto code_r0x00117837;\n        }\n        pvVar12 = pvVar11;\n      } while (*(short *)((long)pvVar11 + 0x74) == 4);\n      if (*(short *)((long)pvVar11 + 0x74) == 2) {\n        sVar4 = FUN_00115abc(param_1,pvVar11,1);\n        *(short *)((long)pvVar11 + 0x70) = sVar4;\n        if ((sVar4 == 1) && ((*(byte *)(param_1 + 9) & 4) == 0)) {\n          iVar5 = FUN_00115e27(param_1,&DAT_0011ff42);\n          *(int *)((long)pvVar11 + 0x44) = iVar5;\n          if (iVar5 < 0) {\n            piVar7 = __errno_location();\n            *(int *)((long)pvVar11 + 0x40) = *piVar7;\n            *(undefined2 *)((long)pvVar11 + 0x70) = 7;\n          }\n          else {\n            *(ushort *)((long)pvVar11 + 0x72) = *(ushort *)((long)pvVar11 + 0x72) | 2;\n          }\n        }\n        *(undefined2 *)((long)pvVar11 + 0x74) = 3;\n      }\n    }\nLAB_00117587:\n    lVar8 = *(long *)(*(long *)((long)pvVar11 + 8) + 0x48);\n    lVar6 = lVar8 + -1;\n    if (*(char *)(*(long *)(*(long *)((long)pvVar11 + 8) + 0x38) + -1 + lVar8) != '/') {\n      lVar6 = lVar8;\n    }\n    lVar8 = param_1[4];\n    *(undefined1 *)(lVar6 + lVar8) = 0x2f;\n    memmove((undefined1 *)(lVar6 + lVar8) + 1,(void *)((long)pvVar11 + 0x108),\n            *(long *)((long)pvVar11 + 0x60) + 1);\n  }" if (parenthesized_expression "(sVar4 == 2)" ( (binary_expression "sVar4 == 2" identifier == number_literal) )) (compound_statement "{\n    if (1 < (ushort)(*(short *)((long)pvVar11 + 0x70) - 0xcU)) {\n      if (*(short *)((long)pvVar11 + 0x70) != 1) goto LAB_00117717;\n      goto LAB_00117457;\n    }\n    sVar4 = FUN_00115abc(param_1,pvVar11,1);\n    *(short *)((long)pvVar11 + 0x70) = sVar4;\n    if ((sVar4 == 1) && ((*(byte *)(param_1 + 9) & 4) == 0)) {\n      iVar5 = FUN_00115e27(param_1,&DAT_0011ff42);\n      *(int *)((long)pvVar11 + 0x44) = iVar5;\n      if (iVar5 < 0) {\n        piVar7 = __errno_location();\n        *(int *)((long)pvVar11 + 0x40) = *piVar7;\n        *(undefined2 *)((long)pvVar11 + 0x70) = 7;\n      }\n      else {\n        *(ushort *)((long)pvVar11 + 0x72) = *(ushort *)((long)pvVar11 + 0x72) | 2;\n      }\n    }\n  }" { (if_statement "if (1 < (ushort)(*(short *)((long)pvVar11 + 0x70) - 0xcU)) {\n      if (*(short *)((long)pvVar11 + 0x70) != 1) goto LAB_00117717;\n      goto LAB_00117457;\n    }" if (parenthesized_expression "(1 < (ushort)(*(short *)((long)pvVar11 + 0x70) - 0xcU))" ( (binary_expression "1 < (ushort)(*(short *)((long)pvVar11 + 0x70) - 0xcU)" number_literal < (call_expression "(ushort)(*(short *)((long)pvVar11 + 0x70) - 0xcU)" (parenthesized_expression "(ushort)" ( identifier )) (argument_list "(*(short *)((long)pvVar11 + 0x70) - 0xcU)" ( (binary_expression "*(short *)((long)pvVar11 + 0x70) - 0xcU" (pointer_expression "*(short *)((long)pvVar11 + 0x70)" * (cast_expression "(short *)((long)pvVar11 + 0x70)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)pvVar11 + 0x70)" ( (binary_expression "(long)pvVar11 + 0x70" (cast_expression "(long)pvVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) - number_literal) )))) )) (compound_statement "{\n      if (*(short *)((long)pvVar11 + 0x70) != 1) goto LAB_00117717;\n      goto LAB_00117457;\n    }" { (if_statement "if (*(short *)((long)pvVar11 + 0x70) != 1) goto LAB_00117717;" if (parenthesized_expression "(*(short *)((long)pvVar11 + 0x70) != 1)" ( (binary_expression "*(short *)((long)pvVar11 + 0x70) != 1" (pointer_expression "*(short *)((long)pvVar11 + 0x70)" * (cast_expression "(short *)((long)pvVar11 + 0x70)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)pvVar11 + 0x70)" ( (binary_expression "(long)pvVar11 + 0x70" (cast_expression "(long)pvVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) != number_literal) )) (goto_statement "goto LAB_00117717;" goto statement_identifier ;)) (goto_statement "goto LAB_00117457;" goto statement_identifier ;) })) (expression_statement "sVar4 = FUN_00115abc(param_1,pvVar11,1);" (assignment_expression "sVar4 = FUN_00115abc(param_1,pvVar11,1)" identifier = (call_expression "FUN_00115abc(param_1,pvVar11,1)" identifier (argument_list "(param_1,pvVar11,1)" ( identifier , identifier , number_literal )))) ;) (expression_statement "*(short *)((long)pvVar11 + 0x70) = sVar4;" (assignment_expression "*(short *)((long)pvVar11 + 0x70) = sVar4" (pointer_expression "*(short *)((long)pvVar11 + 0x70)" * (cast_expression "(short *)((long)pvVar11 + 0x70)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)pvVar11 + 0x70)" ( (binary_expression "(long)pvVar11 + 0x70" (cast_expression "(long)pvVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = identifier) ;) (if_statement "if ((sVar4 == 1) && ((*(byte *)(param_1 + 9) & 4) == 0)) {\n      iVar5 = FUN_00115e27(param_1,&DAT_0011ff42);\n      *(int *)((long)pvVar11 + 0x44) = iVar5;\n      if (iVar5 < 0) {\n        piVar7 = __errno_location();\n        *(int *)((long)pvVar11 + 0x40) = *piVar7;\n        *(undefined2 *)((long)pvVar11 + 0x70) = 7;\n      }\n      else {\n        *(ushort *)((long)pvVar11 + 0x72) = *(ushort *)((long)pvVar11 + 0x72) | 2;\n      }\n    }" if (parenthesized_expression "((sVar4 == 1) && ((*(byte *)(param_1 + 9) & 4) == 0))" ( (binary_expression "(sVar4 == 1) && ((*(byte *)(param_1 + 9) & 4) == 0)" (parenthesized_expression "(sVar4 == 1)" ( (binary_expression "sVar4 == 1" identifier == number_literal) )) && (parenthesized_expression "((*(byte *)(param_1 + 9) & 4) == 0)" ( (binary_expression "(*(byte *)(param_1 + 9) & 4) == 0" (parenthesized_expression "(*(byte *)(param_1 + 9) & 4)" ( (binary_expression "*(byte *)(param_1 + 9) & 4" (pointer_expression "*(byte *)(param_1 + 9)" * (cast_expression "(byte *)(param_1 + 9)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 9)" ( (binary_expression "param_1 + 9" identifier + number_literal) )))) & number_literal) )) == number_literal) ))) )) (compound_statement "{\n      iVar5 = FUN_00115e27(param_1,&DAT_0011ff42);\n      *(int *)((long)pvVar11 + 0x44) = iVar5;\n      if (iVar5 < 0) {\n        piVar7 = __errno_location();\n        *(int *)((long)pvVar11 + 0x40) = *piVar7;\n        *(undefined2 *)((long)pvVar11 + 0x70) = 7;\n      }\n      else {\n        *(ushort *)((long)pvVar11 + 0x72) = *(ushort *)((long)pvVar11 + 0x72) | 2;\n      }\n    }" { (expression_statement "iVar5 = FUN_00115e27(param_1,&DAT_0011ff42);" (assignment_expression "iVar5 = FUN_00115e27(param_1,&DAT_0011ff42)" identifier = (call_expression "FUN_00115e27(param_1,&DAT_0011ff42)" identifier (argument_list "(param_1,&DAT_0011ff42)" ( identifier , (pointer_expression "&DAT_0011ff42" & identifier) )))) ;) (expression_statement "*(int *)((long)pvVar11 + 0x44) = iVar5;" (assignment_expression "*(int *)((long)pvVar11 + 0x44) = iVar5" (pointer_expression "*(int *)((long)pvVar11 + 0x44)" * (cast_expression "(int *)((long)pvVar11 + 0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)pvVar11 + 0x44)" ( (binary_expression "(long)pvVar11 + 0x44" (cast_expression "(long)pvVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = identifier) ;) (if_statement "if (iVar5 < 0) {\n        piVar7 = __errno_location();\n        *(int *)((long)pvVar11 + 0x40) = *piVar7;\n        *(undefined2 *)((long)pvVar11 + 0x70) = 7;\n      }\n      else {\n        *(ushort *)((long)pvVar11 + 0x72) = *(ushort *)((long)pvVar11 + 0x72) | 2;\n      }" if (parenthesized_expression "(iVar5 < 0)" ( (binary_expression "iVar5 < 0" identifier < number_literal) )) (compound_statement "{\n        piVar7 = __errno_location();\n        *(int *)((long)pvVar11 + 0x40) = *piVar7;\n        *(undefined2 *)((long)pvVar11 + 0x70) = 7;\n      }" { (expression_statement "piVar7 = __errno_location();" (assignment_expression "piVar7 = __errno_location()" identifier = (call_expression "__errno_location()" identifier (argument_list "()" ( )))) ;) (expression_statement "*(int *)((long)pvVar11 + 0x40) = *piVar7;" (assignment_expression "*(int *)((long)pvVar11 + 0x40) = *piVar7" (pointer_expression "*(int *)((long)pvVar11 + 0x40)" * (cast_expression "(int *)((long)pvVar11 + 0x40)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)pvVar11 + 0x40)" ( (binary_expression "(long)pvVar11 + 0x40" (cast_expression "(long)pvVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = (pointer_expression "*piVar7" * identifier)) ;) (expression_statement "*(undefined2 *)((long)pvVar11 + 0x70) = 7;" (assignment_expression "*(undefined2 *)((long)pvVar11 + 0x70) = 7" (pointer_expression "*(undefined2 *)((long)pvVar11 + 0x70)" * (cast_expression "(undefined2 *)((long)pvVar11 + 0x70)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)pvVar11 + 0x70)" ( (binary_expression "(long)pvVar11 + 0x70" (cast_expression "(long)pvVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = number_literal) ;) }) (else_clause "else {\n        *(ushort *)((long)pvVar11 + 0x72) = *(ushort *)((long)pvVar11 + 0x72) | 2;\n      }" else (compound_statement "{\n        *(ushort *)((long)pvVar11 + 0x72) = *(ushort *)((long)pvVar11 + 0x72) | 2;\n      }" { (expression_statement "*(ushort *)((long)pvVar11 + 0x72) = *(ushort *)((long)pvVar11 + 0x72) | 2;" (assignment_expression "*(ushort *)((long)pvVar11 + 0x72) = *(ushort *)((long)pvVar11 + 0x72) | 2" (pointer_expression "*(ushort *)((long)pvVar11 + 0x72)" * (cast_expression "(ushort *)((long)pvVar11 + 0x72)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)pvVar11 + 0x72)" ( (binary_expression "(long)pvVar11 + 0x72" (cast_expression "(long)pvVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = (binary_expression "*(ushort *)((long)pvVar11 + 0x72) | 2" (pointer_expression "*(ushort *)((long)pvVar11 + 0x72)" * (cast_expression "(ushort *)((long)pvVar11 + 0x72)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)pvVar11 + 0x72)" ( (binary_expression "(long)pvVar11 + 0x72" (cast_expression "(long)pvVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) | number_literal)) ;) }))) })) }) (else_clause "else {\n    if (*(short *)((long)pvVar11 + 0x70) == 1) {\n      if (sVar4 == 4) goto LAB_00117473;\nLAB_00117457:\n      uVar1 = *(uint *)(param_1 + 9);\n      if (((uVar1 & 0x40) != 0) && (*(long *)((long)pvVar11 + 0x78) != param_1[3])) {\nLAB_00117473:\n        if ((*(byte *)((long)pvVar11 + 0x72) & 2) != 0) {\n          close(*(int *)((long)pvVar11 + 0x44));\n        }\n        if (param_1[1] != 0) {\n          FUN_00115e7a();\n          param_1[1] = 0;\n        }\n        *(undefined2 *)((long)pvVar11 + 0x70) = 6;\n        FUN_00116412(param_1,pvVar11);\n        return pvVar11;\n      }\n      if (param_1[1] == 0) {\nLAB_00117628:\n        lVar8 = FUN_001164c9(param_1,3);\n        param_1[1] = lVar8;\n        if (lVar8 == 0) {\n          if ((*(byte *)((long)param_1 + 0x49) & 0x40) == 0) {\n            if ((*(int *)((long)pvVar11 + 0x40) != 0) && (*(short *)((long)pvVar11 + 0x70) != 4)) {\n              *(undefined2 *)((long)pvVar11 + 0x70) = 7;\n            }\n            FUN_00116412(param_1,pvVar11);\n            return pvVar11;\n          }\n          return (void *)0x0;\n        }\n      }\n      else {\n        if ((uVar1 & 0x2000) != 0) {\n          *(uint *)(param_1 + 9) = uVar1 & 0xffffdfff;\n          FUN_00115e7a();\n          param_1[1] = 0;\n          goto LAB_00117628;\n        }\n        iVar5 = FUN_00116203(param_1,pvVar11,0xffffffff,*(undefined8 *)((long)pvVar11 + 0x30));\n        if (iVar5 != 0) {\n          piVar7 = __errno_location();\n          *(int *)((long)pvVar11 + 0x40) = *piVar7;\n          *(ushort *)((long)pvVar11 + 0x72) = *(ushort *)((long)pvVar11 + 0x72) | 1;\n          for (lVar8 = param_1[1]; lVar8 != 0; lVar8 = *(long *)(lVar8 + 0x10)) {\n            *(undefined8 *)(lVar8 + 0x30) = *(undefined8 *)(*(long *)(lVar8 + 8) + 0x30);\n          }\n        }\n      }\n      pvVar11 = (void *)param_1[1];\n      param_1[1] = 0;\n    }\n    else {\nLAB_00117717:\n      do {\n        pvVar11 = *(void **)((long)pvVar12 + 0x10);\n        if (pvVar11 == (void *)0x0) {\n          lVar8 = *(long *)((long)pvVar12 + 8);\n          if (*(long *)(lVar8 + 0x18) != 0) {\n            *param_1 = lVar8;\n            *(undefined1 *)(param_1[4] + *(long *)(lVar8 + 0x48)) = 0;\n            pvVar11 = (void *)FUN_001164c9(param_1,3);\n            if (pvVar11 != (void *)0x0) {\n              free(pvVar12);\n              goto LAB_00117587;\n            }\n            if ((*(byte *)((long)param_1 + 0x49) & 0x40) != 0) {\n              return (void *)0x0;\n            }\n          }\n          pvVar11 = *(void **)((long)pvVar12 + 8);\n          *param_1 = (long)pvVar11;\n          free(pvVar12);\n          if (*(long *)((long)pvVar11 + 0x58) == -1) {\n            free(pvVar11);\n            piVar7 = __errno_location();\n            *piVar7 = 0;\n            *param_1 = 0;\n            return (void *)0x0;\n          }\n          if (*(short *)((long)pvVar11 + 0x70) == 0xb) {\n                    /* WARNING: Subroutine does not return */\n            abort();\n          }\n          *(undefined1 *)(param_1[4] + *(long *)((long)pvVar11 + 0x48)) = 0;\n          if (*(long *)((long)pvVar11 + 0x58) == 0) {\n            iVar5 = FUN_001161af(param_1);\n            if (iVar5 == 0) goto LAB_001177a7;\n            piVar7 = __errno_location();\n            *(int *)((long)pvVar11 + 0x40) = *piVar7;\n            *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\nLAB_001179e4:\n            if (*(short *)((long)pvVar11 + 0x70) == 2) {\n              return (void *)0x0;\n            }\n          }\n          else {\n            if ((*(ushort *)((long)pvVar11 + 0x72) & 2) == 0) {\n              if (((*(ushort *)((long)pvVar11 + 0x72) & 1) == 0) &&\n                 (iVar5 = FUN_00116203(param_1,*(undefined8 *)((long)pvVar11 + 8),0xffffffff,\n                                       &DAT_0011ff41), iVar5 != 0)) {\n                piVar7 = __errno_location();\n                *(int *)((long)pvVar11 + 0x40) = *piVar7;\n                *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\n                goto LAB_001179e4;\n              }\n            }\n            else {\n              if ((*(uint *)(param_1 + 9) & 4) == 0) {\n                if ((*(uint *)(param_1 + 9) & 0x200) == 0) {\n                  iVar5 = fchdir(*(int *)((long)pvVar11 + 0x44));\n                  if (iVar5 != 0) {\n                    piVar7 = __errno_location();\n                    *(int *)((long)pvVar11 + 0x40) = *piVar7;\n                    *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\n                  }\n                }\n                else {\n                  FUN_0011615c(param_1,*(undefined4 *)((long)pvVar11 + 0x44),1);\n                }\n              }\n              close(*(int *)((long)pvVar11 + 0x44));\n            }\nLAB_001177a7:\n            if (*(short *)((long)pvVar11 + 0x70) == 2) goto LAB_00117a88;\n          }\n          if (*(int *)((long)pvVar11 + 0x40) == 0) {\n            *(undefined2 *)((long)pvVar11 + 0x70) = 6;\n            FUN_00116412(param_1,pvVar11);\n          }\n          else {\n            *(undefined2 *)((long)pvVar11 + 0x70) = 7;\n          }\nLAB_00117a88:\n          if ((*(uint *)(param_1 + 9) & 0x4000) != 0) {\n            return (void *)0x0;\n          }\n          return pvVar11;\n        }\n        *param_1 = (long)pvVar11;\n        free(pvVar12);\n        if (*(long *)((long)pvVar11 + 0x58) == 0) {\n          iVar5 = FUN_001161af(param_1);\n          if (iVar5 != 0) {\n            *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\n            return (void *)0x0;\n          }\n          FUN_00115eb3(param_1);\n          *(long *)((long)pvVar11 + 0x48) = *(long *)((long)pvVar11 + 0x60);\n          __s = (char *)((long)pvVar11 + 0x108);\n          memmove((void *)param_1[4],__s,*(long *)((long)pvVar11 + 0x60) + 1);\n          pcVar9 = strrchr(__s,0x2f);\n          if ((pcVar9 == (char *)0x0) || ((__s == pcVar9 && (pcVar9[1] == '\0'))))\n          goto LAB_0011784f;\n          uVar10 = 0xffffffffffffffff;\n          pcVar13 = pcVar9 + 1;\n          goto code_r0x00117837;\n        }\n        pvVar12 = pvVar11;\n      } while (*(short *)((long)pvVar11 + 0x74) == 4);\n      if (*(short *)((long)pvVar11 + 0x74) == 2) {\n        sVar4 = FUN_00115abc(param_1,pvVar11,1);\n        *(short *)((long)pvVar11 + 0x70) = sVar4;\n        if ((sVar4 == 1) && ((*(byte *)(param_1 + 9) & 4) == 0)) {\n          iVar5 = FUN_00115e27(param_1,&DAT_0011ff42);\n          *(int *)((long)pvVar11 + 0x44) = iVar5;\n          if (iVar5 < 0) {\n            piVar7 = __errno_location();\n            *(int *)((long)pvVar11 + 0x40) = *piVar7;\n            *(undefined2 *)((long)pvVar11 + 0x70) = 7;\n          }\n          else {\n            *(ushort *)((long)pvVar11 + 0x72) = *(ushort *)((long)pvVar11 + 0x72) | 2;\n          }\n        }\n        *(undefined2 *)((long)pvVar11 + 0x74) = 3;\n      }\n    }\nLAB_00117587:\n    lVar8 = *(long *)(*(long *)((long)pvVar11 + 8) + 0x48);\n    lVar6 = lVar8 + -1;\n    if (*(char *)(*(long *)(*(long *)((long)pvVar11 + 8) + 0x38) + -1 + lVar8) != '/') {\n      lVar6 = lVar8;\n    }\n    lVar8 = param_1[4];\n    *(undefined1 *)(lVar6 + lVar8) = 0x2f;\n    memmove((undefined1 *)(lVar6 + lVar8) + 1,(void *)((long)pvVar11 + 0x108),\n            *(long *)((long)pvVar11 + 0x60) + 1);\n  }" else (compound_statement "{\n    if (*(short *)((long)pvVar11 + 0x70) == 1) {\n      if (sVar4 == 4) goto LAB_00117473;\nLAB_00117457:\n      uVar1 = *(uint *)(param_1 + 9);\n      if (((uVar1 & 0x40) != 0) && (*(long *)((long)pvVar11 + 0x78) != param_1[3])) {\nLAB_00117473:\n        if ((*(byte *)((long)pvVar11 + 0x72) & 2) != 0) {\n          close(*(int *)((long)pvVar11 + 0x44));\n        }\n        if (param_1[1] != 0) {\n          FUN_00115e7a();\n          param_1[1] = 0;\n        }\n        *(undefined2 *)((long)pvVar11 + 0x70) = 6;\n        FUN_00116412(param_1,pvVar11);\n        return pvVar11;\n      }\n      if (param_1[1] == 0) {\nLAB_00117628:\n        lVar8 = FUN_001164c9(param_1,3);\n        param_1[1] = lVar8;\n        if (lVar8 == 0) {\n          if ((*(byte *)((long)param_1 + 0x49) & 0x40) == 0) {\n            if ((*(int *)((long)pvVar11 + 0x40) != 0) && (*(short *)((long)pvVar11 + 0x70) != 4)) {\n              *(undefined2 *)((long)pvVar11 + 0x70) = 7;\n            }\n            FUN_00116412(param_1,pvVar11);\n            return pvVar11;\n          }\n          return (void *)0x0;\n        }\n      }\n      else {\n        if ((uVar1 & 0x2000) != 0) {\n          *(uint *)(param_1 + 9) = uVar1 & 0xffffdfff;\n          FUN_00115e7a();\n          param_1[1] = 0;\n          goto LAB_00117628;\n        }\n        iVar5 = FUN_00116203(param_1,pvVar11,0xffffffff,*(undefined8 *)((long)pvVar11 + 0x30));\n        if (iVar5 != 0) {\n          piVar7 = __errno_location();\n          *(int *)((long)pvVar11 + 0x40) = *piVar7;\n          *(ushort *)((long)pvVar11 + 0x72) = *(ushort *)((long)pvVar11 + 0x72) | 1;\n          for (lVar8 = param_1[1]; lVar8 != 0; lVar8 = *(long *)(lVar8 + 0x10)) {\n            *(undefined8 *)(lVar8 + 0x30) = *(undefined8 *)(*(long *)(lVar8 + 8) + 0x30);\n          }\n        }\n      }\n      pvVar11 = (void *)param_1[1];\n      param_1[1] = 0;\n    }\n    else {\nLAB_00117717:\n      do {\n        pvVar11 = *(void **)((long)pvVar12 + 0x10);\n        if (pvVar11 == (void *)0x0) {\n          lVar8 = *(long *)((long)pvVar12 + 8);\n          if (*(long *)(lVar8 + 0x18) != 0) {\n            *param_1 = lVar8;\n            *(undefined1 *)(param_1[4] + *(long *)(lVar8 + 0x48)) = 0;\n            pvVar11 = (void *)FUN_001164c9(param_1,3);\n            if (pvVar11 != (void *)0x0) {\n              free(pvVar12);\n              goto LAB_00117587;\n            }\n            if ((*(byte *)((long)param_1 + 0x49) & 0x40) != 0) {\n              return (void *)0x0;\n            }\n          }\n          pvVar11 = *(void **)((long)pvVar12 + 8);\n          *param_1 = (long)pvVar11;\n          free(pvVar12);\n          if (*(long *)((long)pvVar11 + 0x58) == -1) {\n            free(pvVar11);\n            piVar7 = __errno_location();\n            *piVar7 = 0;\n            *param_1 = 0;\n            return (void *)0x0;\n          }\n          if (*(short *)((long)pvVar11 + 0x70) == 0xb) {\n                    /* WARNING: Subroutine does not return */\n            abort();\n          }\n          *(undefined1 *)(param_1[4] + *(long *)((long)pvVar11 + 0x48)) = 0;\n          if (*(long *)((long)pvVar11 + 0x58) == 0) {\n            iVar5 = FUN_001161af(param_1);\n            if (iVar5 == 0) goto LAB_001177a7;\n            piVar7 = __errno_location();\n            *(int *)((long)pvVar11 + 0x40) = *piVar7;\n            *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\nLAB_001179e4:\n            if (*(short *)((long)pvVar11 + 0x70) == 2) {\n              return (void *)0x0;\n            }\n          }\n          else {\n            if ((*(ushort *)((long)pvVar11 + 0x72) & 2) == 0) {\n              if (((*(ushort *)((long)pvVar11 + 0x72) & 1) == 0) &&\n                 (iVar5 = FUN_00116203(param_1,*(undefined8 *)((long)pvVar11 + 8),0xffffffff,\n                                       &DAT_0011ff41), iVar5 != 0)) {\n                piVar7 = __errno_location();\n                *(int *)((long)pvVar11 + 0x40) = *piVar7;\n                *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\n                goto LAB_001179e4;\n              }\n            }\n            else {\n              if ((*(uint *)(param_1 + 9) & 4) == 0) {\n                if ((*(uint *)(param_1 + 9) & 0x200) == 0) {\n                  iVar5 = fchdir(*(int *)((long)pvVar11 + 0x44));\n                  if (iVar5 != 0) {\n                    piVar7 = __errno_location();\n                    *(int *)((long)pvVar11 + 0x40) = *piVar7;\n                    *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\n                  }\n                }\n                else {\n                  FUN_0011615c(param_1,*(undefined4 *)((long)pvVar11 + 0x44),1);\n                }\n              }\n              close(*(int *)((long)pvVar11 + 0x44));\n            }\nLAB_001177a7:\n            if (*(short *)((long)pvVar11 + 0x70) == 2) goto LAB_00117a88;\n          }\n          if (*(int *)((long)pvVar11 + 0x40) == 0) {\n            *(undefined2 *)((long)pvVar11 + 0x70) = 6;\n            FUN_00116412(param_1,pvVar11);\n          }\n          else {\n            *(undefined2 *)((long)pvVar11 + 0x70) = 7;\n          }\nLAB_00117a88:\n          if ((*(uint *)(param_1 + 9) & 0x4000) != 0) {\n            return (void *)0x0;\n          }\n          return pvVar11;\n        }\n        *param_1 = (long)pvVar11;\n        free(pvVar12);\n        if (*(long *)((long)pvVar11 + 0x58) == 0) {\n          iVar5 = FUN_001161af(param_1);\n          if (iVar5 != 0) {\n            *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\n            return (void *)0x0;\n          }\n          FUN_00115eb3(param_1);\n          *(long *)((long)pvVar11 + 0x48) = *(long *)((long)pvVar11 + 0x60);\n          __s = (char *)((long)pvVar11 + 0x108);\n          memmove((void *)param_1[4],__s,*(long *)((long)pvVar11 + 0x60) + 1);\n          pcVar9 = strrchr(__s,0x2f);\n          if ((pcVar9 == (char *)0x0) || ((__s == pcVar9 && (pcVar9[1] == '\0'))))\n          goto LAB_0011784f;\n          uVar10 = 0xffffffffffffffff;\n          pcVar13 = pcVar9 + 1;\n          goto code_r0x00117837;\n        }\n        pvVar12 = pvVar11;\n      } while (*(short *)((long)pvVar11 + 0x74) == 4);\n      if (*(short *)((long)pvVar11 + 0x74) == 2) {\n        sVar4 = FUN_00115abc(param_1,pvVar11,1);\n        *(short *)((long)pvVar11 + 0x70) = sVar4;\n        if ((sVar4 == 1) && ((*(byte *)(param_1 + 9) & 4) == 0)) {\n          iVar5 = FUN_00115e27(param_1,&DAT_0011ff42);\n          *(int *)((long)pvVar11 + 0x44) = iVar5;\n          if (iVar5 < 0) {\n            piVar7 = __errno_location();\n            *(int *)((long)pvVar11 + 0x40) = *piVar7;\n            *(undefined2 *)((long)pvVar11 + 0x70) = 7;\n          }\n          else {\n            *(ushort *)((long)pvVar11 + 0x72) = *(ushort *)((long)pvVar11 + 0x72) | 2;\n          }\n        }\n        *(undefined2 *)((long)pvVar11 + 0x74) = 3;\n      }\n    }\nLAB_00117587:\n    lVar8 = *(long *)(*(long *)((long)pvVar11 + 8) + 0x48);\n    lVar6 = lVar8 + -1;\n    if (*(char *)(*(long *)(*(long *)((long)pvVar11 + 8) + 0x38) + -1 + lVar8) != '/') {\n      lVar6 = lVar8;\n    }\n    lVar8 = param_1[4];\n    *(undefined1 *)(lVar6 + lVar8) = 0x2f;\n    memmove((undefined1 *)(lVar6 + lVar8) + 1,(void *)((long)pvVar11 + 0x108),\n            *(long *)((long)pvVar11 + 0x60) + 1);\n  }" { (if_statement "if (*(short *)((long)pvVar11 + 0x70) == 1) {\n      if (sVar4 == 4) goto LAB_00117473;\nLAB_00117457:\n      uVar1 = *(uint *)(param_1 + 9);\n      if (((uVar1 & 0x40) != 0) && (*(long *)((long)pvVar11 + 0x78) != param_1[3])) {\nLAB_00117473:\n        if ((*(byte *)((long)pvVar11 + 0x72) & 2) != 0) {\n          close(*(int *)((long)pvVar11 + 0x44));\n        }\n        if (param_1[1] != 0) {\n          FUN_00115e7a();\n          param_1[1] = 0;\n        }\n        *(undefined2 *)((long)pvVar11 + 0x70) = 6;\n        FUN_00116412(param_1,pvVar11);\n        return pvVar11;\n      }\n      if (param_1[1] == 0) {\nLAB_00117628:\n        lVar8 = FUN_001164c9(param_1,3);\n        param_1[1] = lVar8;\n        if (lVar8 == 0) {\n          if ((*(byte *)((long)param_1 + 0x49) & 0x40) == 0) {\n            if ((*(int *)((long)pvVar11 + 0x40) != 0) && (*(short *)((long)pvVar11 + 0x70) != 4)) {\n              *(undefined2 *)((long)pvVar11 + 0x70) = 7;\n            }\n            FUN_00116412(param_1,pvVar11);\n            return pvVar11;\n          }\n          return (void *)0x0;\n        }\n      }\n      else {\n        if ((uVar1 & 0x2000) != 0) {\n          *(uint *)(param_1 + 9) = uVar1 & 0xffffdfff;\n          FUN_00115e7a();\n          param_1[1] = 0;\n          goto LAB_00117628;\n        }\n        iVar5 = FUN_00116203(param_1,pvVar11,0xffffffff,*(undefined8 *)((long)pvVar11 + 0x30));\n        if (iVar5 != 0) {\n          piVar7 = __errno_location();\n          *(int *)((long)pvVar11 + 0x40) = *piVar7;\n          *(ushort *)((long)pvVar11 + 0x72) = *(ushort *)((long)pvVar11 + 0x72) | 1;\n          for (lVar8 = param_1[1]; lVar8 != 0; lVar8 = *(long *)(lVar8 + 0x10)) {\n            *(undefined8 *)(lVar8 + 0x30) = *(undefined8 *)(*(long *)(lVar8 + 8) + 0x30);\n          }\n        }\n      }\n      pvVar11 = (void *)param_1[1];\n      param_1[1] = 0;\n    }\n    else {\nLAB_00117717:\n      do {\n        pvVar11 = *(void **)((long)pvVar12 + 0x10);\n        if (pvVar11 == (void *)0x0) {\n          lVar8 = *(long *)((long)pvVar12 + 8);\n          if (*(long *)(lVar8 + 0x18) != 0) {\n            *param_1 = lVar8;\n            *(undefined1 *)(param_1[4] + *(long *)(lVar8 + 0x48)) = 0;\n            pvVar11 = (void *)FUN_001164c9(param_1,3);\n            if (pvVar11 != (void *)0x0) {\n              free(pvVar12);\n              goto LAB_00117587;\n            }\n            if ((*(byte *)((long)param_1 + 0x49) & 0x40) != 0) {\n              return (void *)0x0;\n            }\n          }\n          pvVar11 = *(void **)((long)pvVar12 + 8);\n          *param_1 = (long)pvVar11;\n          free(pvVar12);\n          if (*(long *)((long)pvVar11 + 0x58) == -1) {\n            free(pvVar11);\n            piVar7 = __errno_location();\n            *piVar7 = 0;\n            *param_1 = 0;\n            return (void *)0x0;\n          }\n          if (*(short *)((long)pvVar11 + 0x70) == 0xb) {\n                    /* WARNING: Subroutine does not return */\n            abort();\n          }\n          *(undefined1 *)(param_1[4] + *(long *)((long)pvVar11 + 0x48)) = 0;\n          if (*(long *)((long)pvVar11 + 0x58) == 0) {\n            iVar5 = FUN_001161af(param_1);\n            if (iVar5 == 0) goto LAB_001177a7;\n            piVar7 = __errno_location();\n            *(int *)((long)pvVar11 + 0x40) = *piVar7;\n            *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\nLAB_001179e4:\n            if (*(short *)((long)pvVar11 + 0x70) == 2) {\n              return (void *)0x0;\n            }\n          }\n          else {\n            if ((*(ushort *)((long)pvVar11 + 0x72) & 2) == 0) {\n              if (((*(ushort *)((long)pvVar11 + 0x72) & 1) == 0) &&\n                 (iVar5 = FUN_00116203(param_1,*(undefined8 *)((long)pvVar11 + 8),0xffffffff,\n                                       &DAT_0011ff41), iVar5 != 0)) {\n                piVar7 = __errno_location();\n                *(int *)((long)pvVar11 + 0x40) = *piVar7;\n                *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\n                goto LAB_001179e4;\n              }\n            }\n            else {\n              if ((*(uint *)(param_1 + 9) & 4) == 0) {\n                if ((*(uint *)(param_1 + 9) & 0x200) == 0) {\n                  iVar5 = fchdir(*(int *)((long)pvVar11 + 0x44));\n                  if (iVar5 != 0) {\n                    piVar7 = __errno_location();\n                    *(int *)((long)pvVar11 + 0x40) = *piVar7;\n                    *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\n                  }\n                }\n                else {\n                  FUN_0011615c(param_1,*(undefined4 *)((long)pvVar11 + 0x44),1);\n                }\n              }\n              close(*(int *)((long)pvVar11 + 0x44));\n            }\nLAB_001177a7:\n            if (*(short *)((long)pvVar11 + 0x70) == 2) goto LAB_00117a88;\n          }\n          if (*(int *)((long)pvVar11 + 0x40) == 0) {\n            *(undefined2 *)((long)pvVar11 + 0x70) = 6;\n            FUN_00116412(param_1,pvVar11);\n          }\n          else {\n            *(undefined2 *)((long)pvVar11 + 0x70) = 7;\n          }\nLAB_00117a88:\n          if ((*(uint *)(param_1 + 9) & 0x4000) != 0) {\n            return (void *)0x0;\n          }\n          return pvVar11;\n        }\n        *param_1 = (long)pvVar11;\n        free(pvVar12);\n        if (*(long *)((long)pvVar11 + 0x58) == 0) {\n          iVar5 = FUN_001161af(param_1);\n          if (iVar5 != 0) {\n            *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\n            return (void *)0x0;\n          }\n          FUN_00115eb3(param_1);\n          *(long *)((long)pvVar11 + 0x48) = *(long *)((long)pvVar11 + 0x60);\n          __s = (char *)((long)pvVar11 + 0x108);\n          memmove((void *)param_1[4],__s,*(long *)((long)pvVar11 + 0x60) + 1);\n          pcVar9 = strrchr(__s,0x2f);\n          if ((pcVar9 == (char *)0x0) || ((__s == pcVar9 && (pcVar9[1] == '\0'))))\n          goto LAB_0011784f;\n          uVar10 = 0xffffffffffffffff;\n          pcVar13 = pcVar9 + 1;\n          goto code_r0x00117837;\n        }\n        pvVar12 = pvVar11;\n      } while (*(short *)((long)pvVar11 + 0x74) == 4);\n      if (*(short *)((long)pvVar11 + 0x74) == 2) {\n        sVar4 = FUN_00115abc(param_1,pvVar11,1);\n        *(short *)((long)pvVar11 + 0x70) = sVar4;\n        if ((sVar4 == 1) && ((*(byte *)(param_1 + 9) & 4) == 0)) {\n          iVar5 = FUN_00115e27(param_1,&DAT_0011ff42);\n          *(int *)((long)pvVar11 + 0x44) = iVar5;\n          if (iVar5 < 0) {\n            piVar7 = __errno_location();\n            *(int *)((long)pvVar11 + 0x40) = *piVar7;\n            *(undefined2 *)((long)pvVar11 + 0x70) = 7;\n          }\n          else {\n            *(ushort *)((long)pvVar11 + 0x72) = *(ushort *)((long)pvVar11 + 0x72) | 2;\n          }\n        }\n        *(undefined2 *)((long)pvVar11 + 0x74) = 3;\n      }\n    }" if (parenthesized_expression "(*(short *)((long)pvVar11 + 0x70) == 1)" ( (binary_expression "*(short *)((long)pvVar11 + 0x70) == 1" (pointer_expression "*(short *)((long)pvVar11 + 0x70)" * (cast_expression "(short *)((long)pvVar11 + 0x70)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)pvVar11 + 0x70)" ( (binary_expression "(long)pvVar11 + 0x70" (cast_expression "(long)pvVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) == number_literal) )) (compound_statement "{\n      if (sVar4 == 4) goto LAB_00117473;\nLAB_00117457:\n      uVar1 = *(uint *)(param_1 + 9);\n      if (((uVar1 & 0x40) != 0) && (*(long *)((long)pvVar11 + 0x78) != param_1[3])) {\nLAB_00117473:\n        if ((*(byte *)((long)pvVar11 + 0x72) & 2) != 0) {\n          close(*(int *)((long)pvVar11 + 0x44));\n        }\n        if (param_1[1] != 0) {\n          FUN_00115e7a();\n          param_1[1] = 0;\n        }\n        *(undefined2 *)((long)pvVar11 + 0x70) = 6;\n        FUN_00116412(param_1,pvVar11);\n        return pvVar11;\n      }\n      if (param_1[1] == 0) {\nLAB_00117628:\n        lVar8 = FUN_001164c9(param_1,3);\n        param_1[1] = lVar8;\n        if (lVar8 == 0) {\n          if ((*(byte *)((long)param_1 + 0x49) & 0x40) == 0) {\n            if ((*(int *)((long)pvVar11 + 0x40) != 0) && (*(short *)((long)pvVar11 + 0x70) != 4)) {\n              *(undefined2 *)((long)pvVar11 + 0x70) = 7;\n            }\n            FUN_00116412(param_1,pvVar11);\n            return pvVar11;\n          }\n          return (void *)0x0;\n        }\n      }\n      else {\n        if ((uVar1 & 0x2000) != 0) {\n          *(uint *)(param_1 + 9) = uVar1 & 0xffffdfff;\n          FUN_00115e7a();\n          param_1[1] = 0;\n          goto LAB_00117628;\n        }\n        iVar5 = FUN_00116203(param_1,pvVar11,0xffffffff,*(undefined8 *)((long)pvVar11 + 0x30));\n        if (iVar5 != 0) {\n          piVar7 = __errno_location();\n          *(int *)((long)pvVar11 + 0x40) = *piVar7;\n          *(ushort *)((long)pvVar11 + 0x72) = *(ushort *)((long)pvVar11 + 0x72) | 1;\n          for (lVar8 = param_1[1]; lVar8 != 0; lVar8 = *(long *)(lVar8 + 0x10)) {\n            *(undefined8 *)(lVar8 + 0x30) = *(undefined8 *)(*(long *)(lVar8 + 8) + 0x30);\n          }\n        }\n      }\n      pvVar11 = (void *)param_1[1];\n      param_1[1] = 0;\n    }" { (if_statement "if (sVar4 == 4) goto LAB_00117473;" if (parenthesized_expression "(sVar4 == 4)" ( (binary_expression "sVar4 == 4" identifier == number_literal) )) (goto_statement "goto LAB_00117473;" goto statement_identifier ;)) (labeled_statement "LAB_00117457:\n      uVar1 = *(uint *)(param_1 + 9);" statement_identifier : (expression_statement "uVar1 = *(uint *)(param_1 + 9);" (assignment_expression "uVar1 = *(uint *)(param_1 + 9)" identifier = (pointer_expression "*(uint *)(param_1 + 9)" * (cast_expression "(uint *)(param_1 + 9)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 9)" ( (binary_expression "param_1 + 9" identifier + number_literal) ))))) ;)) (if_statement "if (((uVar1 & 0x40) != 0) && (*(long *)((long)pvVar11 + 0x78) != param_1[3])) {\nLAB_00117473:\n        if ((*(byte *)((long)pvVar11 + 0x72) & 2) != 0) {\n          close(*(int *)((long)pvVar11 + 0x44));\n        }\n        if (param_1[1] != 0) {\n          FUN_00115e7a();\n          param_1[1] = 0;\n        }\n        *(undefined2 *)((long)pvVar11 + 0x70) = 6;\n        FUN_00116412(param_1,pvVar11);\n        return pvVar11;\n      }" if (parenthesized_expression "(((uVar1 & 0x40) != 0) && (*(long *)((long)pvVar11 + 0x78) != param_1[3]))" ( (binary_expression "((uVar1 & 0x40) != 0) && (*(long *)((long)pvVar11 + 0x78) != param_1[3])" (parenthesized_expression "((uVar1 & 0x40) != 0)" ( (binary_expression "(uVar1 & 0x40) != 0" (parenthesized_expression "(uVar1 & 0x40)" ( (binary_expression "uVar1 & 0x40" identifier & number_literal) )) != number_literal) )) && (parenthesized_expression "(*(long *)((long)pvVar11 + 0x78) != param_1[3])" ( (binary_expression "*(long *)((long)pvVar11 + 0x78) != param_1[3]" (pointer_expression "*(long *)((long)pvVar11 + 0x78)" * (cast_expression "(long *)((long)pvVar11 + 0x78)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)pvVar11 + 0x78)" ( (binary_expression "(long)pvVar11 + 0x78" (cast_expression "(long)pvVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) != (subscript_expression "param_1[3]" identifier [ number_literal ])) ))) )) (compound_statement "{\nLAB_00117473:\n        if ((*(byte *)((long)pvVar11 + 0x72) & 2) != 0) {\n          close(*(int *)((long)pvVar11 + 0x44));\n        }\n        if (param_1[1] != 0) {\n          FUN_00115e7a();\n          param_1[1] = 0;\n        }\n        *(undefined2 *)((long)pvVar11 + 0x70) = 6;\n        FUN_00116412(param_1,pvVar11);\n        return pvVar11;\n      }" { (labeled_statement "LAB_00117473:\n        if ((*(byte *)((long)pvVar11 + 0x72) & 2) != 0) {\n          close(*(int *)((long)pvVar11 + 0x44));\n        }" statement_identifier : (if_statement "if ((*(byte *)((long)pvVar11 + 0x72) & 2) != 0) {\n          close(*(int *)((long)pvVar11 + 0x44));\n        }" if (parenthesized_expression "((*(byte *)((long)pvVar11 + 0x72) & 2) != 0)" ( (binary_expression "(*(byte *)((long)pvVar11 + 0x72) & 2) != 0" (parenthesized_expression "(*(byte *)((long)pvVar11 + 0x72) & 2)" ( (binary_expression "*(byte *)((long)pvVar11 + 0x72) & 2" (pointer_expression "*(byte *)((long)pvVar11 + 0x72)" * (cast_expression "(byte *)((long)pvVar11 + 0x72)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)pvVar11 + 0x72)" ( (binary_expression "(long)pvVar11 + 0x72" (cast_expression "(long)pvVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n          close(*(int *)((long)pvVar11 + 0x44));\n        }" { (expression_statement "close(*(int *)((long)pvVar11 + 0x44));" (call_expression "close(*(int *)((long)pvVar11 + 0x44))" identifier (argument_list "(*(int *)((long)pvVar11 + 0x44))" ( (pointer_expression "*(int *)((long)pvVar11 + 0x44)" * (cast_expression "(int *)((long)pvVar11 + 0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)pvVar11 + 0x44)" ( (binary_expression "(long)pvVar11 + 0x44" (cast_expression "(long)pvVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) ))) ;) }))) (if_statement "if (param_1[1] != 0) {\n          FUN_00115e7a();\n          param_1[1] = 0;\n        }" if (parenthesized_expression "(param_1[1] != 0)" ( (binary_expression "param_1[1] != 0" (subscript_expression "param_1[1]" identifier [ number_literal ]) != number_literal) )) (compound_statement "{\n          FUN_00115e7a();\n          param_1[1] = 0;\n        }" { (expression_statement "FUN_00115e7a();" (call_expression "FUN_00115e7a()" identifier (argument_list "()" ( ))) ;) (expression_statement "param_1[1] = 0;" (assignment_expression "param_1[1] = 0" (subscript_expression "param_1[1]" identifier [ number_literal ]) = number_literal) ;) })) (expression_statement "*(undefined2 *)((long)pvVar11 + 0x70) = 6;" (assignment_expression "*(undefined2 *)((long)pvVar11 + 0x70) = 6" (pointer_expression "*(undefined2 *)((long)pvVar11 + 0x70)" * (cast_expression "(undefined2 *)((long)pvVar11 + 0x70)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)pvVar11 + 0x70)" ( (binary_expression "(long)pvVar11 + 0x70" (cast_expression "(long)pvVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "FUN_00116412(param_1,pvVar11);" (call_expression "FUN_00116412(param_1,pvVar11)" identifier (argument_list "(param_1,pvVar11)" ( identifier , identifier ))) ;) (return_statement "return pvVar11;" return identifier ;) })) (if_statement "if (param_1[1] == 0) {\nLAB_00117628:\n        lVar8 = FUN_001164c9(param_1,3);\n        param_1[1] = lVar8;\n        if (lVar8 == 0) {\n          if ((*(byte *)((long)param_1 + 0x49) & 0x40) == 0) {\n            if ((*(int *)((long)pvVar11 + 0x40) != 0) && (*(short *)((long)pvVar11 + 0x70) != 4)) {\n              *(undefined2 *)((long)pvVar11 + 0x70) = 7;\n            }\n            FUN_00116412(param_1,pvVar11);\n            return pvVar11;\n          }\n          return (void *)0x0;\n        }\n      }\n      else {\n        if ((uVar1 & 0x2000) != 0) {\n          *(uint *)(param_1 + 9) = uVar1 & 0xffffdfff;\n          FUN_00115e7a();\n          param_1[1] = 0;\n          goto LAB_00117628;\n        }\n        iVar5 = FUN_00116203(param_1,pvVar11,0xffffffff,*(undefined8 *)((long)pvVar11 + 0x30));\n        if (iVar5 != 0) {\n          piVar7 = __errno_location();\n          *(int *)((long)pvVar11 + 0x40) = *piVar7;\n          *(ushort *)((long)pvVar11 + 0x72) = *(ushort *)((long)pvVar11 + 0x72) | 1;\n          for (lVar8 = param_1[1]; lVar8 != 0; lVar8 = *(long *)(lVar8 + 0x10)) {\n            *(undefined8 *)(lVar8 + 0x30) = *(undefined8 *)(*(long *)(lVar8 + 8) + 0x30);\n          }\n        }\n      }" if (parenthesized_expression "(param_1[1] == 0)" ( (binary_expression "param_1[1] == 0" (subscript_expression "param_1[1]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\nLAB_00117628:\n        lVar8 = FUN_001164c9(param_1,3);\n        param_1[1] = lVar8;\n        if (lVar8 == 0) {\n          if ((*(byte *)((long)param_1 + 0x49) & 0x40) == 0) {\n            if ((*(int *)((long)pvVar11 + 0x40) != 0) && (*(short *)((long)pvVar11 + 0x70) != 4)) {\n              *(undefined2 *)((long)pvVar11 + 0x70) = 7;\n            }\n            FUN_00116412(param_1,pvVar11);\n            return pvVar11;\n          }\n          return (void *)0x0;\n        }\n      }" { (labeled_statement "LAB_00117628:\n        lVar8 = FUN_001164c9(param_1,3);" statement_identifier : (expression_statement "lVar8 = FUN_001164c9(param_1,3);" (assignment_expression "lVar8 = FUN_001164c9(param_1,3)" identifier = (call_expression "FUN_001164c9(param_1,3)" identifier (argument_list "(param_1,3)" ( identifier , number_literal )))) ;)) (expression_statement "param_1[1] = lVar8;" (assignment_expression "param_1[1] = lVar8" (subscript_expression "param_1[1]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (lVar8 == 0) {\n          if ((*(byte *)((long)param_1 + 0x49) & 0x40) == 0) {\n            if ((*(int *)((long)pvVar11 + 0x40) != 0) && (*(short *)((long)pvVar11 + 0x70) != 4)) {\n              *(undefined2 *)((long)pvVar11 + 0x70) = 7;\n            }\n            FUN_00116412(param_1,pvVar11);\n            return pvVar11;\n          }\n          return (void *)0x0;\n        }" if (parenthesized_expression "(lVar8 == 0)" ( (binary_expression "lVar8 == 0" identifier == number_literal) )) (compound_statement "{\n          if ((*(byte *)((long)param_1 + 0x49) & 0x40) == 0) {\n            if ((*(int *)((long)pvVar11 + 0x40) != 0) && (*(short *)((long)pvVar11 + 0x70) != 4)) {\n              *(undefined2 *)((long)pvVar11 + 0x70) = 7;\n            }\n            FUN_00116412(param_1,pvVar11);\n            return pvVar11;\n          }\n          return (void *)0x0;\n        }" { (if_statement "if ((*(byte *)((long)param_1 + 0x49) & 0x40) == 0) {\n            if ((*(int *)((long)pvVar11 + 0x40) != 0) && (*(short *)((long)pvVar11 + 0x70) != 4)) {\n              *(undefined2 *)((long)pvVar11 + 0x70) = 7;\n            }\n            FUN_00116412(param_1,pvVar11);\n            return pvVar11;\n          }" if (parenthesized_expression "((*(byte *)((long)param_1 + 0x49) & 0x40) == 0)" ( (binary_expression "(*(byte *)((long)param_1 + 0x49) & 0x40) == 0" (parenthesized_expression "(*(byte *)((long)param_1 + 0x49) & 0x40)" ( (binary_expression "*(byte *)((long)param_1 + 0x49) & 0x40" (pointer_expression "*(byte *)((long)param_1 + 0x49)" * (cast_expression "(byte *)((long)param_1 + 0x49)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_1 + 0x49)" ( (binary_expression "(long)param_1 + 0x49" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n            if ((*(int *)((long)pvVar11 + 0x40) != 0) && (*(short *)((long)pvVar11 + 0x70) != 4)) {\n              *(undefined2 *)((long)pvVar11 + 0x70) = 7;\n            }\n            FUN_00116412(param_1,pvVar11);\n            return pvVar11;\n          }" { (if_statement "if ((*(int *)((long)pvVar11 + 0x40) != 0) && (*(short *)((long)pvVar11 + 0x70) != 4)) {\n              *(undefined2 *)((long)pvVar11 + 0x70) = 7;\n            }" if (parenthesized_expression "((*(int *)((long)pvVar11 + 0x40) != 0) && (*(short *)((long)pvVar11 + 0x70) != 4))" ( (binary_expression "(*(int *)((long)pvVar11 + 0x40) != 0) && (*(short *)((long)pvVar11 + 0x70) != 4)" (parenthesized_expression "(*(int *)((long)pvVar11 + 0x40) != 0)" ( (binary_expression "*(int *)((long)pvVar11 + 0x40) != 0" (pointer_expression "*(int *)((long)pvVar11 + 0x40)" * (cast_expression "(int *)((long)pvVar11 + 0x40)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)pvVar11 + 0x40)" ( (binary_expression "(long)pvVar11 + 0x40" (cast_expression "(long)pvVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) != number_literal) )) && (parenthesized_expression "(*(short *)((long)pvVar11 + 0x70) != 4)" ( (binary_expression "*(short *)((long)pvVar11 + 0x70) != 4" (pointer_expression "*(short *)((long)pvVar11 + 0x70)" * (cast_expression "(short *)((long)pvVar11 + 0x70)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)pvVar11 + 0x70)" ( (binary_expression "(long)pvVar11 + 0x70" (cast_expression "(long)pvVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) != number_literal) ))) )) (compound_statement "{\n              *(undefined2 *)((long)pvVar11 + 0x70) = 7;\n            }" { (expression_statement "*(undefined2 *)((long)pvVar11 + 0x70) = 7;" (assignment_expression "*(undefined2 *)((long)pvVar11 + 0x70) = 7" (pointer_expression "*(undefined2 *)((long)pvVar11 + 0x70)" * (cast_expression "(undefined2 *)((long)pvVar11 + 0x70)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)pvVar11 + 0x70)" ( (binary_expression "(long)pvVar11 + 0x70" (cast_expression "(long)pvVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = number_literal) ;) })) (expression_statement "FUN_00116412(param_1,pvVar11);" (call_expression "FUN_00116412(param_1,pvVar11)" identifier (argument_list "(param_1,pvVar11)" ( identifier , identifier ))) ;) (return_statement "return pvVar11;" return identifier ;) })) (return_statement "return (void *)0x0;" return (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) }) (else_clause "else {\n        if ((uVar1 & 0x2000) != 0) {\n          *(uint *)(param_1 + 9) = uVar1 & 0xffffdfff;\n          FUN_00115e7a();\n          param_1[1] = 0;\n          goto LAB_00117628;\n        }\n        iVar5 = FUN_00116203(param_1,pvVar11,0xffffffff,*(undefined8 *)((long)pvVar11 + 0x30));\n        if (iVar5 != 0) {\n          piVar7 = __errno_location();\n          *(int *)((long)pvVar11 + 0x40) = *piVar7;\n          *(ushort *)((long)pvVar11 + 0x72) = *(ushort *)((long)pvVar11 + 0x72) | 1;\n          for (lVar8 = param_1[1]; lVar8 != 0; lVar8 = *(long *)(lVar8 + 0x10)) {\n            *(undefined8 *)(lVar8 + 0x30) = *(undefined8 *)(*(long *)(lVar8 + 8) + 0x30);\n          }\n        }\n      }" else (compound_statement "{\n        if ((uVar1 & 0x2000) != 0) {\n          *(uint *)(param_1 + 9) = uVar1 & 0xffffdfff;\n          FUN_00115e7a();\n          param_1[1] = 0;\n          goto LAB_00117628;\n        }\n        iVar5 = FUN_00116203(param_1,pvVar11,0xffffffff,*(undefined8 *)((long)pvVar11 + 0x30));\n        if (iVar5 != 0) {\n          piVar7 = __errno_location();\n          *(int *)((long)pvVar11 + 0x40) = *piVar7;\n          *(ushort *)((long)pvVar11 + 0x72) = *(ushort *)((long)pvVar11 + 0x72) | 1;\n          for (lVar8 = param_1[1]; lVar8 != 0; lVar8 = *(long *)(lVar8 + 0x10)) {\n            *(undefined8 *)(lVar8 + 0x30) = *(undefined8 *)(*(long *)(lVar8 + 8) + 0x30);\n          }\n        }\n      }" { (if_statement "if ((uVar1 & 0x2000) != 0) {\n          *(uint *)(param_1 + 9) = uVar1 & 0xffffdfff;\n          FUN_00115e7a();\n          param_1[1] = 0;\n          goto LAB_00117628;\n        }" if (parenthesized_expression "((uVar1 & 0x2000) != 0)" ( (binary_expression "(uVar1 & 0x2000) != 0" (parenthesized_expression "(uVar1 & 0x2000)" ( (binary_expression "uVar1 & 0x2000" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n          *(uint *)(param_1 + 9) = uVar1 & 0xffffdfff;\n          FUN_00115e7a();\n          param_1[1] = 0;\n          goto LAB_00117628;\n        }" { (expression_statement "*(uint *)(param_1 + 9) = uVar1 & 0xffffdfff;" (assignment_expression "*(uint *)(param_1 + 9) = uVar1 & 0xffffdfff" (pointer_expression "*(uint *)(param_1 + 9)" * (cast_expression "(uint *)(param_1 + 9)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 9)" ( (binary_expression "param_1 + 9" identifier + number_literal) )))) = (binary_expression "uVar1 & 0xffffdfff" identifier & number_literal)) ;) (expression_statement "FUN_00115e7a();" (call_expression "FUN_00115e7a()" identifier (argument_list "()" ( ))) ;) (expression_statement "param_1[1] = 0;" (assignment_expression "param_1[1] = 0" (subscript_expression "param_1[1]" identifier [ number_literal ]) = number_literal) ;) (goto_statement "goto LAB_00117628;" goto statement_identifier ;) })) (expression_statement "iVar5 = FUN_00116203(param_1,pvVar11,0xffffffff,*(undefined8 *)((long)pvVar11 + 0x30));" (assignment_expression "iVar5 = FUN_00116203(param_1,pvVar11,0xffffffff,*(undefined8 *)((long)pvVar11 + 0x30))" identifier = (call_expression "FUN_00116203(param_1,pvVar11,0xffffffff,*(undefined8 *)((long)pvVar11 + 0x30))" identifier (argument_list "(param_1,pvVar11,0xffffffff,*(undefined8 *)((long)pvVar11 + 0x30))" ( identifier , identifier , number_literal , (pointer_expression "*(undefined8 *)((long)pvVar11 + 0x30)" * (cast_expression "(undefined8 *)((long)pvVar11 + 0x30)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)pvVar11 + 0x30)" ( (binary_expression "(long)pvVar11 + 0x30" (cast_expression "(long)pvVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) )))) ;) (if_statement "if (iVar5 != 0) {\n          piVar7 = __errno_location();\n          *(int *)((long)pvVar11 + 0x40) = *piVar7;\n          *(ushort *)((long)pvVar11 + 0x72) = *(ushort *)((long)pvVar11 + 0x72) | 1;\n          for (lVar8 = param_1[1]; lVar8 != 0; lVar8 = *(long *)(lVar8 + 0x10)) {\n            *(undefined8 *)(lVar8 + 0x30) = *(undefined8 *)(*(long *)(lVar8 + 8) + 0x30);\n          }\n        }" if (parenthesized_expression "(iVar5 != 0)" ( (binary_expression "iVar5 != 0" identifier != number_literal) )) (compound_statement "{\n          piVar7 = __errno_location();\n          *(int *)((long)pvVar11 + 0x40) = *piVar7;\n          *(ushort *)((long)pvVar11 + 0x72) = *(ushort *)((long)pvVar11 + 0x72) | 1;\n          for (lVar8 = param_1[1]; lVar8 != 0; lVar8 = *(long *)(lVar8 + 0x10)) {\n            *(undefined8 *)(lVar8 + 0x30) = *(undefined8 *)(*(long *)(lVar8 + 8) + 0x30);\n          }\n        }" { (expression_statement "piVar7 = __errno_location();" (assignment_expression "piVar7 = __errno_location()" identifier = (call_expression "__errno_location()" identifier (argument_list "()" ( )))) ;) (expression_statement "*(int *)((long)pvVar11 + 0x40) = *piVar7;" (assignment_expression "*(int *)((long)pvVar11 + 0x40) = *piVar7" (pointer_expression "*(int *)((long)pvVar11 + 0x40)" * (cast_expression "(int *)((long)pvVar11 + 0x40)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)pvVar11 + 0x40)" ( (binary_expression "(long)pvVar11 + 0x40" (cast_expression "(long)pvVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = (pointer_expression "*piVar7" * identifier)) ;) (expression_statement "*(ushort *)((long)pvVar11 + 0x72) = *(ushort *)((long)pvVar11 + 0x72) | 1;" (assignment_expression "*(ushort *)((long)pvVar11 + 0x72) = *(ushort *)((long)pvVar11 + 0x72) | 1" (pointer_expression "*(ushort *)((long)pvVar11 + 0x72)" * (cast_expression "(ushort *)((long)pvVar11 + 0x72)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)pvVar11 + 0x72)" ( (binary_expression "(long)pvVar11 + 0x72" (cast_expression "(long)pvVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = (binary_expression "*(ushort *)((long)pvVar11 + 0x72) | 1" (pointer_expression "*(ushort *)((long)pvVar11 + 0x72)" * (cast_expression "(ushort *)((long)pvVar11 + 0x72)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)pvVar11 + 0x72)" ( (binary_expression "(long)pvVar11 + 0x72" (cast_expression "(long)pvVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) | number_literal)) ;) (for_statement "for (lVar8 = param_1[1]; lVar8 != 0; lVar8 = *(long *)(lVar8 + 0x10)) {\n            *(undefined8 *)(lVar8 + 0x30) = *(undefined8 *)(*(long *)(lVar8 + 8) + 0x30);\n          }" for ( (assignment_expression "lVar8 = param_1[1]" identifier = (subscript_expression "param_1[1]" identifier [ number_literal ])) ; (binary_expression "lVar8 != 0" identifier != number_literal) ; (assignment_expression "lVar8 = *(long *)(lVar8 + 0x10)" identifier = (pointer_expression "*(long *)(lVar8 + 0x10)" * (cast_expression "(long *)(lVar8 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar8 + 0x10)" ( (binary_expression "lVar8 + 0x10" identifier + number_literal) ))))) ) (compound_statement "{\n            *(undefined8 *)(lVar8 + 0x30) = *(undefined8 *)(*(long *)(lVar8 + 8) + 0x30);\n          }" { (expression_statement "*(undefined8 *)(lVar8 + 0x30) = *(undefined8 *)(*(long *)(lVar8 + 8) + 0x30);" (assignment_expression "*(undefined8 *)(lVar8 + 0x30) = *(undefined8 *)(*(long *)(lVar8 + 8) + 0x30)" (pointer_expression "*(undefined8 *)(lVar8 + 0x30)" * (cast_expression "(undefined8 *)(lVar8 + 0x30)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar8 + 0x30)" ( (binary_expression "lVar8 + 0x30" identifier + number_literal) )))) = (pointer_expression "*(undefined8 *)(*(long *)(lVar8 + 8) + 0x30)" * (cast_expression "(undefined8 *)(*(long *)(lVar8 + 8) + 0x30)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(lVar8 + 8) + 0x30)" ( (binary_expression "*(long *)(lVar8 + 8) + 0x30" (pointer_expression "*(long *)(lVar8 + 8)" * (cast_expression "(long *)(lVar8 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar8 + 8)" ( (binary_expression "lVar8 + 8" identifier + number_literal) )))) + number_literal) ))))) ;) })) })) }))) (expression_statement "pvVar11 = (void *)param_1[1];" (assignment_expression "pvVar11 = (void *)param_1[1]" identifier = (cast_expression "(void *)param_1[1]" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[1]" identifier [ number_literal ]))) ;) (expression_statement "param_1[1] = 0;" (assignment_expression "param_1[1] = 0" (subscript_expression "param_1[1]" identifier [ number_literal ]) = number_literal) ;) }) (else_clause "else {\nLAB_00117717:\n      do {\n        pvVar11 = *(void **)((long)pvVar12 + 0x10);\n        if (pvVar11 == (void *)0x0) {\n          lVar8 = *(long *)((long)pvVar12 + 8);\n          if (*(long *)(lVar8 + 0x18) != 0) {\n            *param_1 = lVar8;\n            *(undefined1 *)(param_1[4] + *(long *)(lVar8 + 0x48)) = 0;\n            pvVar11 = (void *)FUN_001164c9(param_1,3);\n            if (pvVar11 != (void *)0x0) {\n              free(pvVar12);\n              goto LAB_00117587;\n            }\n            if ((*(byte *)((long)param_1 + 0x49) & 0x40) != 0) {\n              return (void *)0x0;\n            }\n          }\n          pvVar11 = *(void **)((long)pvVar12 + 8);\n          *param_1 = (long)pvVar11;\n          free(pvVar12);\n          if (*(long *)((long)pvVar11 + 0x58) == -1) {\n            free(pvVar11);\n            piVar7 = __errno_location();\n            *piVar7 = 0;\n            *param_1 = 0;\n            return (void *)0x0;\n          }\n          if (*(short *)((long)pvVar11 + 0x70) == 0xb) {\n                    /* WARNING: Subroutine does not return */\n            abort();\n          }\n          *(undefined1 *)(param_1[4] + *(long *)((long)pvVar11 + 0x48)) = 0;\n          if (*(long *)((long)pvVar11 + 0x58) == 0) {\n            iVar5 = FUN_001161af(param_1);\n            if (iVar5 == 0) goto LAB_001177a7;\n            piVar7 = __errno_location();\n            *(int *)((long)pvVar11 + 0x40) = *piVar7;\n            *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\nLAB_001179e4:\n            if (*(short *)((long)pvVar11 + 0x70) == 2) {\n              return (void *)0x0;\n            }\n          }\n          else {\n            if ((*(ushort *)((long)pvVar11 + 0x72) & 2) == 0) {\n              if (((*(ushort *)((long)pvVar11 + 0x72) & 1) == 0) &&\n                 (iVar5 = FUN_00116203(param_1,*(undefined8 *)((long)pvVar11 + 8),0xffffffff,\n                                       &DAT_0011ff41), iVar5 != 0)) {\n                piVar7 = __errno_location();\n                *(int *)((long)pvVar11 + 0x40) = *piVar7;\n                *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\n                goto LAB_001179e4;\n              }\n            }\n            else {\n              if ((*(uint *)(param_1 + 9) & 4) == 0) {\n                if ((*(uint *)(param_1 + 9) & 0x200) == 0) {\n                  iVar5 = fchdir(*(int *)((long)pvVar11 + 0x44));\n                  if (iVar5 != 0) {\n                    piVar7 = __errno_location();\n                    *(int *)((long)pvVar11 + 0x40) = *piVar7;\n                    *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\n                  }\n                }\n                else {\n                  FUN_0011615c(param_1,*(undefined4 *)((long)pvVar11 + 0x44),1);\n                }\n              }\n              close(*(int *)((long)pvVar11 + 0x44));\n            }\nLAB_001177a7:\n            if (*(short *)((long)pvVar11 + 0x70) == 2) goto LAB_00117a88;\n          }\n          if (*(int *)((long)pvVar11 + 0x40) == 0) {\n            *(undefined2 *)((long)pvVar11 + 0x70) = 6;\n            FUN_00116412(param_1,pvVar11);\n          }\n          else {\n            *(undefined2 *)((long)pvVar11 + 0x70) = 7;\n          }\nLAB_00117a88:\n          if ((*(uint *)(param_1 + 9) & 0x4000) != 0) {\n            return (void *)0x0;\n          }\n          return pvVar11;\n        }\n        *param_1 = (long)pvVar11;\n        free(pvVar12);\n        if (*(long *)((long)pvVar11 + 0x58) == 0) {\n          iVar5 = FUN_001161af(param_1);\n          if (iVar5 != 0) {\n            *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\n            return (void *)0x0;\n          }\n          FUN_00115eb3(param_1);\n          *(long *)((long)pvVar11 + 0x48) = *(long *)((long)pvVar11 + 0x60);\n          __s = (char *)((long)pvVar11 + 0x108);\n          memmove((void *)param_1[4],__s,*(long *)((long)pvVar11 + 0x60) + 1);\n          pcVar9 = strrchr(__s,0x2f);\n          if ((pcVar9 == (char *)0x0) || ((__s == pcVar9 && (pcVar9[1] == '\0'))))\n          goto LAB_0011784f;\n          uVar10 = 0xffffffffffffffff;\n          pcVar13 = pcVar9 + 1;\n          goto code_r0x00117837;\n        }\n        pvVar12 = pvVar11;\n      } while (*(short *)((long)pvVar11 + 0x74) == 4);\n      if (*(short *)((long)pvVar11 + 0x74) == 2) {\n        sVar4 = FUN_00115abc(param_1,pvVar11,1);\n        *(short *)((long)pvVar11 + 0x70) = sVar4;\n        if ((sVar4 == 1) && ((*(byte *)(param_1 + 9) & 4) == 0)) {\n          iVar5 = FUN_00115e27(param_1,&DAT_0011ff42);\n          *(int *)((long)pvVar11 + 0x44) = iVar5;\n          if (iVar5 < 0) {\n            piVar7 = __errno_location();\n            *(int *)((long)pvVar11 + 0x40) = *piVar7;\n            *(undefined2 *)((long)pvVar11 + 0x70) = 7;\n          }\n          else {\n            *(ushort *)((long)pvVar11 + 0x72) = *(ushort *)((long)pvVar11 + 0x72) | 2;\n          }\n        }\n        *(undefined2 *)((long)pvVar11 + 0x74) = 3;\n      }\n    }" else (compound_statement "{\nLAB_00117717:\n      do {\n        pvVar11 = *(void **)((long)pvVar12 + 0x10);\n        if (pvVar11 == (void *)0x0) {\n          lVar8 = *(long *)((long)pvVar12 + 8);\n          if (*(long *)(lVar8 + 0x18) != 0) {\n            *param_1 = lVar8;\n            *(undefined1 *)(param_1[4] + *(long *)(lVar8 + 0x48)) = 0;\n            pvVar11 = (void *)FUN_001164c9(param_1,3);\n            if (pvVar11 != (void *)0x0) {\n              free(pvVar12);\n              goto LAB_00117587;\n            }\n            if ((*(byte *)((long)param_1 + 0x49) & 0x40) != 0) {\n              return (void *)0x0;\n            }\n          }\n          pvVar11 = *(void **)((long)pvVar12 + 8);\n          *param_1 = (long)pvVar11;\n          free(pvVar12);\n          if (*(long *)((long)pvVar11 + 0x58) == -1) {\n            free(pvVar11);\n            piVar7 = __errno_location();\n            *piVar7 = 0;\n            *param_1 = 0;\n            return (void *)0x0;\n          }\n          if (*(short *)((long)pvVar11 + 0x70) == 0xb) {\n                    /* WARNING: Subroutine does not return */\n            abort();\n          }\n          *(undefined1 *)(param_1[4] + *(long *)((long)pvVar11 + 0x48)) = 0;\n          if (*(long *)((long)pvVar11 + 0x58) == 0) {\n            iVar5 = FUN_001161af(param_1);\n            if (iVar5 == 0) goto LAB_001177a7;\n            piVar7 = __errno_location();\n            *(int *)((long)pvVar11 + 0x40) = *piVar7;\n            *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\nLAB_001179e4:\n            if (*(short *)((long)pvVar11 + 0x70) == 2) {\n              return (void *)0x0;\n            }\n          }\n          else {\n            if ((*(ushort *)((long)pvVar11 + 0x72) & 2) == 0) {\n              if (((*(ushort *)((long)pvVar11 + 0x72) & 1) == 0) &&\n                 (iVar5 = FUN_00116203(param_1,*(undefined8 *)((long)pvVar11 + 8),0xffffffff,\n                                       &DAT_0011ff41), iVar5 != 0)) {\n                piVar7 = __errno_location();\n                *(int *)((long)pvVar11 + 0x40) = *piVar7;\n                *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\n                goto LAB_001179e4;\n              }\n            }\n            else {\n              if ((*(uint *)(param_1 + 9) & 4) == 0) {\n                if ((*(uint *)(param_1 + 9) & 0x200) == 0) {\n                  iVar5 = fchdir(*(int *)((long)pvVar11 + 0x44));\n                  if (iVar5 != 0) {\n                    piVar7 = __errno_location();\n                    *(int *)((long)pvVar11 + 0x40) = *piVar7;\n                    *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\n                  }\n                }\n                else {\n                  FUN_0011615c(param_1,*(undefined4 *)((long)pvVar11 + 0x44),1);\n                }\n              }\n              close(*(int *)((long)pvVar11 + 0x44));\n            }\nLAB_001177a7:\n            if (*(short *)((long)pvVar11 + 0x70) == 2) goto LAB_00117a88;\n          }\n          if (*(int *)((long)pvVar11 + 0x40) == 0) {\n            *(undefined2 *)((long)pvVar11 + 0x70) = 6;\n            FUN_00116412(param_1,pvVar11);\n          }\n          else {\n            *(undefined2 *)((long)pvVar11 + 0x70) = 7;\n          }\nLAB_00117a88:\n          if ((*(uint *)(param_1 + 9) & 0x4000) != 0) {\n            return (void *)0x0;\n          }\n          return pvVar11;\n        }\n        *param_1 = (long)pvVar11;\n        free(pvVar12);\n        if (*(long *)((long)pvVar11 + 0x58) == 0) {\n          iVar5 = FUN_001161af(param_1);\n          if (iVar5 != 0) {\n            *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\n            return (void *)0x0;\n          }\n          FUN_00115eb3(param_1);\n          *(long *)((long)pvVar11 + 0x48) = *(long *)((long)pvVar11 + 0x60);\n          __s = (char *)((long)pvVar11 + 0x108);\n          memmove((void *)param_1[4],__s,*(long *)((long)pvVar11 + 0x60) + 1);\n          pcVar9 = strrchr(__s,0x2f);\n          if ((pcVar9 == (char *)0x0) || ((__s == pcVar9 && (pcVar9[1] == '\0'))))\n          goto LAB_0011784f;\n          uVar10 = 0xffffffffffffffff;\n          pcVar13 = pcVar9 + 1;\n          goto code_r0x00117837;\n        }\n        pvVar12 = pvVar11;\n      } while (*(short *)((long)pvVar11 + 0x74) == 4);\n      if (*(short *)((long)pvVar11 + 0x74) == 2) {\n        sVar4 = FUN_00115abc(param_1,pvVar11,1);\n        *(short *)((long)pvVar11 + 0x70) = sVar4;\n        if ((sVar4 == 1) && ((*(byte *)(param_1 + 9) & 4) == 0)) {\n          iVar5 = FUN_00115e27(param_1,&DAT_0011ff42);\n          *(int *)((long)pvVar11 + 0x44) = iVar5;\n          if (iVar5 < 0) {\n            piVar7 = __errno_location();\n            *(int *)((long)pvVar11 + 0x40) = *piVar7;\n            *(undefined2 *)((long)pvVar11 + 0x70) = 7;\n          }\n          else {\n            *(ushort *)((long)pvVar11 + 0x72) = *(ushort *)((long)pvVar11 + 0x72) | 2;\n          }\n        }\n        *(undefined2 *)((long)pvVar11 + 0x74) = 3;\n      }\n    }" { (labeled_statement "LAB_00117717:\n      do {\n        pvVar11 = *(void **)((long)pvVar12 + 0x10);\n        if (pvVar11 == (void *)0x0) {\n          lVar8 = *(long *)((long)pvVar12 + 8);\n          if (*(long *)(lVar8 + 0x18) != 0) {\n            *param_1 = lVar8;\n            *(undefined1 *)(param_1[4] + *(long *)(lVar8 + 0x48)) = 0;\n            pvVar11 = (void *)FUN_001164c9(param_1,3);\n            if (pvVar11 != (void *)0x0) {\n              free(pvVar12);\n              goto LAB_00117587;\n            }\n            if ((*(byte *)((long)param_1 + 0x49) & 0x40) != 0) {\n              return (void *)0x0;\n            }\n          }\n          pvVar11 = *(void **)((long)pvVar12 + 8);\n          *param_1 = (long)pvVar11;\n          free(pvVar12);\n          if (*(long *)((long)pvVar11 + 0x58) == -1) {\n            free(pvVar11);\n            piVar7 = __errno_location();\n            *piVar7 = 0;\n            *param_1 = 0;\n            return (void *)0x0;\n          }\n          if (*(short *)((long)pvVar11 + 0x70) == 0xb) {\n                    /* WARNING: Subroutine does not return */\n            abort();\n          }\n          *(undefined1 *)(param_1[4] + *(long *)((long)pvVar11 + 0x48)) = 0;\n          if (*(long *)((long)pvVar11 + 0x58) == 0) {\n            iVar5 = FUN_001161af(param_1);\n            if (iVar5 == 0) goto LAB_001177a7;\n            piVar7 = __errno_location();\n            *(int *)((long)pvVar11 + 0x40) = *piVar7;\n            *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\nLAB_001179e4:\n            if (*(short *)((long)pvVar11 + 0x70) == 2) {\n              return (void *)0x0;\n            }\n          }\n          else {\n            if ((*(ushort *)((long)pvVar11 + 0x72) & 2) == 0) {\n              if (((*(ushort *)((long)pvVar11 + 0x72) & 1) == 0) &&\n                 (iVar5 = FUN_00116203(param_1,*(undefined8 *)((long)pvVar11 + 8),0xffffffff,\n                                       &DAT_0011ff41), iVar5 != 0)) {\n                piVar7 = __errno_location();\n                *(int *)((long)pvVar11 + 0x40) = *piVar7;\n                *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\n                goto LAB_001179e4;\n              }\n            }\n            else {\n              if ((*(uint *)(param_1 + 9) & 4) == 0) {\n                if ((*(uint *)(param_1 + 9) & 0x200) == 0) {\n                  iVar5 = fchdir(*(int *)((long)pvVar11 + 0x44));\n                  if (iVar5 != 0) {\n                    piVar7 = __errno_location();\n                    *(int *)((long)pvVar11 + 0x40) = *piVar7;\n                    *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\n                  }\n                }\n                else {\n                  FUN_0011615c(param_1,*(undefined4 *)((long)pvVar11 + 0x44),1);\n                }\n              }\n              close(*(int *)((long)pvVar11 + 0x44));\n            }\nLAB_001177a7:\n            if (*(short *)((long)pvVar11 + 0x70) == 2) goto LAB_00117a88;\n          }\n          if (*(int *)((long)pvVar11 + 0x40) == 0) {\n            *(undefined2 *)((long)pvVar11 + 0x70) = 6;\n            FUN_00116412(param_1,pvVar11);\n          }\n          else {\n            *(undefined2 *)((long)pvVar11 + 0x70) = 7;\n          }\nLAB_00117a88:\n          if ((*(uint *)(param_1 + 9) & 0x4000) != 0) {\n            return (void *)0x0;\n          }\n          return pvVar11;\n        }\n        *param_1 = (long)pvVar11;\n        free(pvVar12);\n        if (*(long *)((long)pvVar11 + 0x58) == 0) {\n          iVar5 = FUN_001161af(param_1);\n          if (iVar5 != 0) {\n            *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\n            return (void *)0x0;\n          }\n          FUN_00115eb3(param_1);\n          *(long *)((long)pvVar11 + 0x48) = *(long *)((long)pvVar11 + 0x60);\n          __s = (char *)((long)pvVar11 + 0x108);\n          memmove((void *)param_1[4],__s,*(long *)((long)pvVar11 + 0x60) + 1);\n          pcVar9 = strrchr(__s,0x2f);\n          if ((pcVar9 == (char *)0x0) || ((__s == pcVar9 && (pcVar9[1] == '\0'))))\n          goto LAB_0011784f;\n          uVar10 = 0xffffffffffffffff;\n          pcVar13 = pcVar9 + 1;\n          goto code_r0x00117837;\n        }\n        pvVar12 = pvVar11;\n      } while (*(short *)((long)pvVar11 + 0x74) == 4);" statement_identifier : (do_statement "do {\n        pvVar11 = *(void **)((long)pvVar12 + 0x10);\n        if (pvVar11 == (void *)0x0) {\n          lVar8 = *(long *)((long)pvVar12 + 8);\n          if (*(long *)(lVar8 + 0x18) != 0) {\n            *param_1 = lVar8;\n            *(undefined1 *)(param_1[4] + *(long *)(lVar8 + 0x48)) = 0;\n            pvVar11 = (void *)FUN_001164c9(param_1,3);\n            if (pvVar11 != (void *)0x0) {\n              free(pvVar12);\n              goto LAB_00117587;\n            }\n            if ((*(byte *)((long)param_1 + 0x49) & 0x40) != 0) {\n              return (void *)0x0;\n            }\n          }\n          pvVar11 = *(void **)((long)pvVar12 + 8);\n          *param_1 = (long)pvVar11;\n          free(pvVar12);\n          if (*(long *)((long)pvVar11 + 0x58) == -1) {\n            free(pvVar11);\n            piVar7 = __errno_location();\n            *piVar7 = 0;\n            *param_1 = 0;\n            return (void *)0x0;\n          }\n          if (*(short *)((long)pvVar11 + 0x70) == 0xb) {\n                    /* WARNING: Subroutine does not return */\n            abort();\n          }\n          *(undefined1 *)(param_1[4] + *(long *)((long)pvVar11 + 0x48)) = 0;\n          if (*(long *)((long)pvVar11 + 0x58) == 0) {\n            iVar5 = FUN_001161af(param_1);\n            if (iVar5 == 0) goto LAB_001177a7;\n            piVar7 = __errno_location();\n            *(int *)((long)pvVar11 + 0x40) = *piVar7;\n            *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\nLAB_001179e4:\n            if (*(short *)((long)pvVar11 + 0x70) == 2) {\n              return (void *)0x0;\n            }\n          }\n          else {\n            if ((*(ushort *)((long)pvVar11 + 0x72) & 2) == 0) {\n              if (((*(ushort *)((long)pvVar11 + 0x72) & 1) == 0) &&\n                 (iVar5 = FUN_00116203(param_1,*(undefined8 *)((long)pvVar11 + 8),0xffffffff,\n                                       &DAT_0011ff41), iVar5 != 0)) {\n                piVar7 = __errno_location();\n                *(int *)((long)pvVar11 + 0x40) = *piVar7;\n                *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\n                goto LAB_001179e4;\n              }\n            }\n            else {\n              if ((*(uint *)(param_1 + 9) & 4) == 0) {\n                if ((*(uint *)(param_1 + 9) & 0x200) == 0) {\n                  iVar5 = fchdir(*(int *)((long)pvVar11 + 0x44));\n                  if (iVar5 != 0) {\n                    piVar7 = __errno_location();\n                    *(int *)((long)pvVar11 + 0x40) = *piVar7;\n                    *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\n                  }\n                }\n                else {\n                  FUN_0011615c(param_1,*(undefined4 *)((long)pvVar11 + 0x44),1);\n                }\n              }\n              close(*(int *)((long)pvVar11 + 0x44));\n            }\nLAB_001177a7:\n            if (*(short *)((long)pvVar11 + 0x70) == 2) goto LAB_00117a88;\n          }\n          if (*(int *)((long)pvVar11 + 0x40) == 0) {\n            *(undefined2 *)((long)pvVar11 + 0x70) = 6;\n            FUN_00116412(param_1,pvVar11);\n          }\n          else {\n            *(undefined2 *)((long)pvVar11 + 0x70) = 7;\n          }\nLAB_00117a88:\n          if ((*(uint *)(param_1 + 9) & 0x4000) != 0) {\n            return (void *)0x0;\n          }\n          return pvVar11;\n        }\n        *param_1 = (long)pvVar11;\n        free(pvVar12);\n        if (*(long *)((long)pvVar11 + 0x58) == 0) {\n          iVar5 = FUN_001161af(param_1);\n          if (iVar5 != 0) {\n            *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\n            return (void *)0x0;\n          }\n          FUN_00115eb3(param_1);\n          *(long *)((long)pvVar11 + 0x48) = *(long *)((long)pvVar11 + 0x60);\n          __s = (char *)((long)pvVar11 + 0x108);\n          memmove((void *)param_1[4],__s,*(long *)((long)pvVar11 + 0x60) + 1);\n          pcVar9 = strrchr(__s,0x2f);\n          if ((pcVar9 == (char *)0x0) || ((__s == pcVar9 && (pcVar9[1] == '\0'))))\n          goto LAB_0011784f;\n          uVar10 = 0xffffffffffffffff;\n          pcVar13 = pcVar9 + 1;\n          goto code_r0x00117837;\n        }\n        pvVar12 = pvVar11;\n      } while (*(short *)((long)pvVar11 + 0x74) == 4);" do (compound_statement "{\n        pvVar11 = *(void **)((long)pvVar12 + 0x10);\n        if (pvVar11 == (void *)0x0) {\n          lVar8 = *(long *)((long)pvVar12 + 8);\n          if (*(long *)(lVar8 + 0x18) != 0) {\n            *param_1 = lVar8;\n            *(undefined1 *)(param_1[4] + *(long *)(lVar8 + 0x48)) = 0;\n            pvVar11 = (void *)FUN_001164c9(param_1,3);\n            if (pvVar11 != (void *)0x0) {\n              free(pvVar12);\n              goto LAB_00117587;\n            }\n            if ((*(byte *)((long)param_1 + 0x49) & 0x40) != 0) {\n              return (void *)0x0;\n            }\n          }\n          pvVar11 = *(void **)((long)pvVar12 + 8);\n          *param_1 = (long)pvVar11;\n          free(pvVar12);\n          if (*(long *)((long)pvVar11 + 0x58) == -1) {\n            free(pvVar11);\n            piVar7 = __errno_location();\n            *piVar7 = 0;\n            *param_1 = 0;\n            return (void *)0x0;\n          }\n          if (*(short *)((long)pvVar11 + 0x70) == 0xb) {\n                    /* WARNING: Subroutine does not return */\n            abort();\n          }\n          *(undefined1 *)(param_1[4] + *(long *)((long)pvVar11 + 0x48)) = 0;\n          if (*(long *)((long)pvVar11 + 0x58) == 0) {\n            iVar5 = FUN_001161af(param_1);\n            if (iVar5 == 0) goto LAB_001177a7;\n            piVar7 = __errno_location();\n            *(int *)((long)pvVar11 + 0x40) = *piVar7;\n            *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\nLAB_001179e4:\n            if (*(short *)((long)pvVar11 + 0x70) == 2) {\n              return (void *)0x0;\n            }\n          }\n          else {\n            if ((*(ushort *)((long)pvVar11 + 0x72) & 2) == 0) {\n              if (((*(ushort *)((long)pvVar11 + 0x72) & 1) == 0) &&\n                 (iVar5 = FUN_00116203(param_1,*(undefined8 *)((long)pvVar11 + 8),0xffffffff,\n                                       &DAT_0011ff41), iVar5 != 0)) {\n                piVar7 = __errno_location();\n                *(int *)((long)pvVar11 + 0x40) = *piVar7;\n                *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\n                goto LAB_001179e4;\n              }\n            }\n            else {\n              if ((*(uint *)(param_1 + 9) & 4) == 0) {\n                if ((*(uint *)(param_1 + 9) & 0x200) == 0) {\n                  iVar5 = fchdir(*(int *)((long)pvVar11 + 0x44));\n                  if (iVar5 != 0) {\n                    piVar7 = __errno_location();\n                    *(int *)((long)pvVar11 + 0x40) = *piVar7;\n                    *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\n                  }\n                }\n                else {\n                  FUN_0011615c(param_1,*(undefined4 *)((long)pvVar11 + 0x44),1);\n                }\n              }\n              close(*(int *)((long)pvVar11 + 0x44));\n            }\nLAB_001177a7:\n            if (*(short *)((long)pvVar11 + 0x70) == 2) goto LAB_00117a88;\n          }\n          if (*(int *)((long)pvVar11 + 0x40) == 0) {\n            *(undefined2 *)((long)pvVar11 + 0x70) = 6;\n            FUN_00116412(param_1,pvVar11);\n          }\n          else {\n            *(undefined2 *)((long)pvVar11 + 0x70) = 7;\n          }\nLAB_00117a88:\n          if ((*(uint *)(param_1 + 9) & 0x4000) != 0) {\n            return (void *)0x0;\n          }\n          return pvVar11;\n        }\n        *param_1 = (long)pvVar11;\n        free(pvVar12);\n        if (*(long *)((long)pvVar11 + 0x58) == 0) {\n          iVar5 = FUN_001161af(param_1);\n          if (iVar5 != 0) {\n            *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\n            return (void *)0x0;\n          }\n          FUN_00115eb3(param_1);\n          *(long *)((long)pvVar11 + 0x48) = *(long *)((long)pvVar11 + 0x60);\n          __s = (char *)((long)pvVar11 + 0x108);\n          memmove((void *)param_1[4],__s,*(long *)((long)pvVar11 + 0x60) + 1);\n          pcVar9 = strrchr(__s,0x2f);\n          if ((pcVar9 == (char *)0x0) || ((__s == pcVar9 && (pcVar9[1] == '\0'))))\n          goto LAB_0011784f;\n          uVar10 = 0xffffffffffffffff;\n          pcVar13 = pcVar9 + 1;\n          goto code_r0x00117837;\n        }\n        pvVar12 = pvVar11;\n      }" { (expression_statement "pvVar11 = *(void **)((long)pvVar12 + 0x10);" (assignment_expression "pvVar11 = *(void **)((long)pvVar12 + 0x10)" identifier = (pointer_expression "*(void **)((long)pvVar12 + 0x10)" * (cast_expression "(void **)((long)pvVar12 + 0x10)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((long)pvVar12 + 0x10)" ( (binary_expression "(long)pvVar12 + 0x10" (cast_expression "(long)pvVar12" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ))))) ;) (if_statement "if (pvVar11 == (void *)0x0) {\n          lVar8 = *(long *)((long)pvVar12 + 8);\n          if (*(long *)(lVar8 + 0x18) != 0) {\n            *param_1 = lVar8;\n            *(undefined1 *)(param_1[4] + *(long *)(lVar8 + 0x48)) = 0;\n            pvVar11 = (void *)FUN_001164c9(param_1,3);\n            if (pvVar11 != (void *)0x0) {\n              free(pvVar12);\n              goto LAB_00117587;\n            }\n            if ((*(byte *)((long)param_1 + 0x49) & 0x40) != 0) {\n              return (void *)0x0;\n            }\n          }\n          pvVar11 = *(void **)((long)pvVar12 + 8);\n          *param_1 = (long)pvVar11;\n          free(pvVar12);\n          if (*(long *)((long)pvVar11 + 0x58) == -1) {\n            free(pvVar11);\n            piVar7 = __errno_location();\n            *piVar7 = 0;\n            *param_1 = 0;\n            return (void *)0x0;\n          }\n          if (*(short *)((long)pvVar11 + 0x70) == 0xb) {\n                    /* WARNING: Subroutine does not return */\n            abort();\n          }\n          *(undefined1 *)(param_1[4] + *(long *)((long)pvVar11 + 0x48)) = 0;\n          if (*(long *)((long)pvVar11 + 0x58) == 0) {\n            iVar5 = FUN_001161af(param_1);\n            if (iVar5 == 0) goto LAB_001177a7;\n            piVar7 = __errno_location();\n            *(int *)((long)pvVar11 + 0x40) = *piVar7;\n            *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\nLAB_001179e4:\n            if (*(short *)((long)pvVar11 + 0x70) == 2) {\n              return (void *)0x0;\n            }\n          }\n          else {\n            if ((*(ushort *)((long)pvVar11 + 0x72) & 2) == 0) {\n              if (((*(ushort *)((long)pvVar11 + 0x72) & 1) == 0) &&\n                 (iVar5 = FUN_00116203(param_1,*(undefined8 *)((long)pvVar11 + 8),0xffffffff,\n                                       &DAT_0011ff41), iVar5 != 0)) {\n                piVar7 = __errno_location();\n                *(int *)((long)pvVar11 + 0x40) = *piVar7;\n                *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\n                goto LAB_001179e4;\n              }\n            }\n            else {\n              if ((*(uint *)(param_1 + 9) & 4) == 0) {\n                if ((*(uint *)(param_1 + 9) & 0x200) == 0) {\n                  iVar5 = fchdir(*(int *)((long)pvVar11 + 0x44));\n                  if (iVar5 != 0) {\n                    piVar7 = __errno_location();\n                    *(int *)((long)pvVar11 + 0x40) = *piVar7;\n                    *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\n                  }\n                }\n                else {\n                  FUN_0011615c(param_1,*(undefined4 *)((long)pvVar11 + 0x44),1);\n                }\n              }\n              close(*(int *)((long)pvVar11 + 0x44));\n            }\nLAB_001177a7:\n            if (*(short *)((long)pvVar11 + 0x70) == 2) goto LAB_00117a88;\n          }\n          if (*(int *)((long)pvVar11 + 0x40) == 0) {\n            *(undefined2 *)((long)pvVar11 + 0x70) = 6;\n            FUN_00116412(param_1,pvVar11);\n          }\n          else {\n            *(undefined2 *)((long)pvVar11 + 0x70) = 7;\n          }\nLAB_00117a88:\n          if ((*(uint *)(param_1 + 9) & 0x4000) != 0) {\n            return (void *)0x0;\n          }\n          return pvVar11;\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          lVar8 = *(long *)((long)pvVar12 + 8);\n          if (*(long *)(lVar8 + 0x18) != 0) {\n            *param_1 = lVar8;\n            *(undefined1 *)(param_1[4] + *(long *)(lVar8 + 0x48)) = 0;\n            pvVar11 = (void *)FUN_001164c9(param_1,3);\n            if (pvVar11 != (void *)0x0) {\n              free(pvVar12);\n              goto LAB_00117587;\n            }\n            if ((*(byte *)((long)param_1 + 0x49) & 0x40) != 0) {\n              return (void *)0x0;\n            }\n          }\n          pvVar11 = *(void **)((long)pvVar12 + 8);\n          *param_1 = (long)pvVar11;\n          free(pvVar12);\n          if (*(long *)((long)pvVar11 + 0x58) == -1) {\n            free(pvVar11);\n            piVar7 = __errno_location();\n            *piVar7 = 0;\n            *param_1 = 0;\n            return (void *)0x0;\n          }\n          if (*(short *)((long)pvVar11 + 0x70) == 0xb) {\n                    /* WARNING: Subroutine does not return */\n            abort();\n          }\n          *(undefined1 *)(param_1[4] + *(long *)((long)pvVar11 + 0x48)) = 0;\n          if (*(long *)((long)pvVar11 + 0x58) == 0) {\n            iVar5 = FUN_001161af(param_1);\n            if (iVar5 == 0) goto LAB_001177a7;\n            piVar7 = __errno_location();\n            *(int *)((long)pvVar11 + 0x40) = *piVar7;\n            *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\nLAB_001179e4:\n            if (*(short *)((long)pvVar11 + 0x70) == 2) {\n              return (void *)0x0;\n            }\n          }\n          else {\n            if ((*(ushort *)((long)pvVar11 + 0x72) & 2) == 0) {\n              if (((*(ushort *)((long)pvVar11 + 0x72) & 1) == 0) &&\n                 (iVar5 = FUN_00116203(param_1,*(undefined8 *)((long)pvVar11 + 8),0xffffffff,\n                                       &DAT_0011ff41), iVar5 != 0)) {\n                piVar7 = __errno_location();\n                *(int *)((long)pvVar11 + 0x40) = *piVar7;\n                *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\n                goto LAB_001179e4;\n              }\n            }\n            else {\n              if ((*(uint *)(param_1 + 9) & 4) == 0) {\n                if ((*(uint *)(param_1 + 9) & 0x200) == 0) {\n                  iVar5 = fchdir(*(int *)((long)pvVar11 + 0x44));\n                  if (iVar5 != 0) {\n                    piVar7 = __errno_location();\n                    *(int *)((long)pvVar11 + 0x40) = *piVar7;\n                    *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\n                  }\n                }\n                else {\n                  FUN_0011615c(param_1,*(undefined4 *)((long)pvVar11 + 0x44),1);\n                }\n              }\n              close(*(int *)((long)pvVar11 + 0x44));\n            }\nLAB_001177a7:\n            if (*(short *)((long)pvVar11 + 0x70) == 2) goto LAB_00117a88;\n          }\n          if (*(int *)((long)pvVar11 + 0x40) == 0) {\n            *(undefined2 *)((long)pvVar11 + 0x70) = 6;\n            FUN_00116412(param_1,pvVar11);\n          }\n          else {\n            *(undefined2 *)((long)pvVar11 + 0x70) = 7;\n          }\nLAB_00117a88:\n          if ((*(uint *)(param_1 + 9) & 0x4000) != 0) {\n            return (void *)0x0;\n          }\n          return pvVar11;\n        }" { (expression_statement "lVar8 = *(long *)((long)pvVar12 + 8);" (assignment_expression "lVar8 = *(long *)((long)pvVar12 + 8)" identifier = (pointer_expression "*(long *)((long)pvVar12 + 8)" * (cast_expression "(long *)((long)pvVar12 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)pvVar12 + 8)" ( (binary_expression "(long)pvVar12 + 8" (cast_expression "(long)pvVar12" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ))))) ;) (if_statement "if (*(long *)(lVar8 + 0x18) != 0) {\n            *param_1 = lVar8;\n            *(undefined1 *)(param_1[4] + *(long *)(lVar8 + 0x48)) = 0;\n            pvVar11 = (void *)FUN_001164c9(param_1,3);\n            if (pvVar11 != (void *)0x0) {\n              free(pvVar12);\n              goto LAB_00117587;\n            }\n            if ((*(byte *)((long)param_1 + 0x49) & 0x40) != 0) {\n              return (void *)0x0;\n            }\n          }" if (parenthesized_expression "(*(long *)(lVar8 + 0x18) != 0)" ( (binary_expression "*(long *)(lVar8 + 0x18) != 0" (pointer_expression "*(long *)(lVar8 + 0x18)" * (cast_expression "(long *)(lVar8 + 0x18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar8 + 0x18)" ( (binary_expression "lVar8 + 0x18" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n            *param_1 = lVar8;\n            *(undefined1 *)(param_1[4] + *(long *)(lVar8 + 0x48)) = 0;\n            pvVar11 = (void *)FUN_001164c9(param_1,3);\n            if (pvVar11 != (void *)0x0) {\n              free(pvVar12);\n              goto LAB_00117587;\n            }\n            if ((*(byte *)((long)param_1 + 0x49) & 0x40) != 0) {\n              return (void *)0x0;\n            }\n          }" { (expression_statement "*param_1 = lVar8;" (assignment_expression "*param_1 = lVar8" (pointer_expression "*param_1" * identifier) = identifier) ;) (expression_statement "*(undefined1 *)(param_1[4] + *(long *)(lVar8 + 0x48)) = 0;" (assignment_expression "*(undefined1 *)(param_1[4] + *(long *)(lVar8 + 0x48)) = 0" (pointer_expression "*(undefined1 *)(param_1[4] + *(long *)(lVar8 + 0x48))" * (cast_expression "(undefined1 *)(param_1[4] + *(long *)(lVar8 + 0x48))" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1[4] + *(long *)(lVar8 + 0x48))" ( (binary_expression "param_1[4] + *(long *)(lVar8 + 0x48)" (subscript_expression "param_1[4]" identifier [ number_literal ]) + (pointer_expression "*(long *)(lVar8 + 0x48)" * (cast_expression "(long *)(lVar8 + 0x48)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar8 + 0x48)" ( (binary_expression "lVar8 + 0x48" identifier + number_literal) ))))) )))) = number_literal) ;) (expression_statement "pvVar11 = (void *)FUN_001164c9(param_1,3);" (assignment_expression "pvVar11 = (void *)FUN_001164c9(param_1,3)" identifier = (cast_expression "(void *)FUN_001164c9(param_1,3)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_001164c9(param_1,3)" identifier (argument_list "(param_1,3)" ( identifier , number_literal ))))) ;) (if_statement "if (pvVar11 != (void *)0x0) {\n              free(pvVar12);\n              goto LAB_00117587;\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              free(pvVar12);\n              goto LAB_00117587;\n            }" { (expression_statement "free(pvVar12);" (call_expression "free(pvVar12)" identifier (argument_list "(pvVar12)" ( identifier ))) ;) (goto_statement "goto LAB_00117587;" goto statement_identifier ;) })) (if_statement "if ((*(byte *)((long)param_1 + 0x49) & 0x40) != 0) {\n              return (void *)0x0;\n            }" if (parenthesized_expression "((*(byte *)((long)param_1 + 0x49) & 0x40) != 0)" ( (binary_expression "(*(byte *)((long)param_1 + 0x49) & 0x40) != 0" (parenthesized_expression "(*(byte *)((long)param_1 + 0x49) & 0x40)" ( (binary_expression "*(byte *)((long)param_1 + 0x49) & 0x40" (pointer_expression "*(byte *)((long)param_1 + 0x49)" * (cast_expression "(byte *)((long)param_1 + 0x49)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_1 + 0x49)" ( (binary_expression "(long)param_1 + 0x49" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n              return (void *)0x0;\n            }" { (return_statement "return (void *)0x0;" return (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) })) (expression_statement "pvVar11 = *(void **)((long)pvVar12 + 8);" (assignment_expression "pvVar11 = *(void **)((long)pvVar12 + 8)" identifier = (pointer_expression "*(void **)((long)pvVar12 + 8)" * (cast_expression "(void **)((long)pvVar12 + 8)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((long)pvVar12 + 8)" ( (binary_expression "(long)pvVar12 + 8" (cast_expression "(long)pvVar12" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ))))) ;) (expression_statement "*param_1 = (long)pvVar11;" (assignment_expression "*param_1 = (long)pvVar11" (pointer_expression "*param_1" * identifier) = (cast_expression "(long)pvVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) ;) (expression_statement "free(pvVar12);" (call_expression "free(pvVar12)" identifier (argument_list "(pvVar12)" ( identifier ))) ;) (if_statement "if (*(long *)((long)pvVar11 + 0x58) == -1) {\n            free(pvVar11);\n            piVar7 = __errno_location();\n            *piVar7 = 0;\n            *param_1 = 0;\n            return (void *)0x0;\n          }" if (parenthesized_expression "(*(long *)((long)pvVar11 + 0x58) == -1)" ( (binary_expression "*(long *)((long)pvVar11 + 0x58) == -1" (pointer_expression "*(long *)((long)pvVar11 + 0x58)" * (cast_expression "(long *)((long)pvVar11 + 0x58)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)pvVar11 + 0x58)" ( (binary_expression "(long)pvVar11 + 0x58" (cast_expression "(long)pvVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) == number_literal) )) (compound_statement "{\n            free(pvVar11);\n            piVar7 = __errno_location();\n            *piVar7 = 0;\n            *param_1 = 0;\n            return (void *)0x0;\n          }" { (expression_statement "free(pvVar11);" (call_expression "free(pvVar11)" identifier (argument_list "(pvVar11)" ( identifier ))) ;) (expression_statement "piVar7 = __errno_location();" (assignment_expression "piVar7 = __errno_location()" identifier = (call_expression "__errno_location()" identifier (argument_list "()" ( )))) ;) (expression_statement "*piVar7 = 0;" (assignment_expression "*piVar7 = 0" (pointer_expression "*piVar7" * identifier) = number_literal) ;) (expression_statement "*param_1 = 0;" (assignment_expression "*param_1 = 0" (pointer_expression "*param_1" * identifier) = number_literal) ;) (return_statement "return (void *)0x0;" return (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (if_statement "if (*(short *)((long)pvVar11 + 0x70) == 0xb) {\n                    /* WARNING: Subroutine does not return */\n            abort();\n          }" if (parenthesized_expression "(*(short *)((long)pvVar11 + 0x70) == 0xb)" ( (binary_expression "*(short *)((long)pvVar11 + 0x70) == 0xb" (pointer_expression "*(short *)((long)pvVar11 + 0x70)" * (cast_expression "(short *)((long)pvVar11 + 0x70)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)pvVar11 + 0x70)" ( (binary_expression "(long)pvVar11 + 0x70" (cast_expression "(long)pvVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) == number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n            abort();\n          }" { comment (expression_statement "abort();" (call_expression "abort()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "*(undefined1 *)(param_1[4] + *(long *)((long)pvVar11 + 0x48)) = 0;" (assignment_expression "*(undefined1 *)(param_1[4] + *(long *)((long)pvVar11 + 0x48)) = 0" (pointer_expression "*(undefined1 *)(param_1[4] + *(long *)((long)pvVar11 + 0x48))" * (cast_expression "(undefined1 *)(param_1[4] + *(long *)((long)pvVar11 + 0x48))" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1[4] + *(long *)((long)pvVar11 + 0x48))" ( (binary_expression "param_1[4] + *(long *)((long)pvVar11 + 0x48)" (subscript_expression "param_1[4]" identifier [ number_literal ]) + (pointer_expression "*(long *)((long)pvVar11 + 0x48)" * (cast_expression "(long *)((long)pvVar11 + 0x48)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)pvVar11 + 0x48)" ( (binary_expression "(long)pvVar11 + 0x48" (cast_expression "(long)pvVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ))))) )))) = number_literal) ;) (if_statement "if (*(long *)((long)pvVar11 + 0x58) == 0) {\n            iVar5 = FUN_001161af(param_1);\n            if (iVar5 == 0) goto LAB_001177a7;\n            piVar7 = __errno_location();\n            *(int *)((long)pvVar11 + 0x40) = *piVar7;\n            *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\nLAB_001179e4:\n            if (*(short *)((long)pvVar11 + 0x70) == 2) {\n              return (void *)0x0;\n            }\n          }\n          else {\n            if ((*(ushort *)((long)pvVar11 + 0x72) & 2) == 0) {\n              if (((*(ushort *)((long)pvVar11 + 0x72) & 1) == 0) &&\n                 (iVar5 = FUN_00116203(param_1,*(undefined8 *)((long)pvVar11 + 8),0xffffffff,\n                                       &DAT_0011ff41), iVar5 != 0)) {\n                piVar7 = __errno_location();\n                *(int *)((long)pvVar11 + 0x40) = *piVar7;\n                *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\n                goto LAB_001179e4;\n              }\n            }\n            else {\n              if ((*(uint *)(param_1 + 9) & 4) == 0) {\n                if ((*(uint *)(param_1 + 9) & 0x200) == 0) {\n                  iVar5 = fchdir(*(int *)((long)pvVar11 + 0x44));\n                  if (iVar5 != 0) {\n                    piVar7 = __errno_location();\n                    *(int *)((long)pvVar11 + 0x40) = *piVar7;\n                    *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\n                  }\n                }\n                else {\n                  FUN_0011615c(param_1,*(undefined4 *)((long)pvVar11 + 0x44),1);\n                }\n              }\n              close(*(int *)((long)pvVar11 + 0x44));\n            }\nLAB_001177a7:\n            if (*(short *)((long)pvVar11 + 0x70) == 2) goto LAB_00117a88;\n          }" if (parenthesized_expression "(*(long *)((long)pvVar11 + 0x58) == 0)" ( (binary_expression "*(long *)((long)pvVar11 + 0x58) == 0" (pointer_expression "*(long *)((long)pvVar11 + 0x58)" * (cast_expression "(long *)((long)pvVar11 + 0x58)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)pvVar11 + 0x58)" ( (binary_expression "(long)pvVar11 + 0x58" (cast_expression "(long)pvVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) == number_literal) )) (compound_statement "{\n            iVar5 = FUN_001161af(param_1);\n            if (iVar5 == 0) goto LAB_001177a7;\n            piVar7 = __errno_location();\n            *(int *)((long)pvVar11 + 0x40) = *piVar7;\n            *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\nLAB_001179e4:\n            if (*(short *)((long)pvVar11 + 0x70) == 2) {\n              return (void *)0x0;\n            }\n          }" { (expression_statement "iVar5 = FUN_001161af(param_1);" (assignment_expression "iVar5 = FUN_001161af(param_1)" identifier = (call_expression "FUN_001161af(param_1)" identifier (argument_list "(param_1)" ( identifier )))) ;) (if_statement "if (iVar5 == 0) goto LAB_001177a7;" if (parenthesized_expression "(iVar5 == 0)" ( (binary_expression "iVar5 == 0" identifier == number_literal) )) (goto_statement "goto LAB_001177a7;" goto statement_identifier ;)) (expression_statement "piVar7 = __errno_location();" (assignment_expression "piVar7 = __errno_location()" identifier = (call_expression "__errno_location()" identifier (argument_list "()" ( )))) ;) (expression_statement "*(int *)((long)pvVar11 + 0x40) = *piVar7;" (assignment_expression "*(int *)((long)pvVar11 + 0x40) = *piVar7" (pointer_expression "*(int *)((long)pvVar11 + 0x40)" * (cast_expression "(int *)((long)pvVar11 + 0x40)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)pvVar11 + 0x40)" ( (binary_expression "(long)pvVar11 + 0x40" (cast_expression "(long)pvVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = (pointer_expression "*piVar7" * identifier)) ;) (expression_statement "*(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;" (assignment_expression "*(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000" (pointer_expression "*(uint *)(param_1 + 9)" * (cast_expression "(uint *)(param_1 + 9)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 9)" ( (binary_expression "param_1 + 9" identifier + number_literal) )))) = (binary_expression "*(uint *)(param_1 + 9) | 0x4000" (pointer_expression "*(uint *)(param_1 + 9)" * (cast_expression "(uint *)(param_1 + 9)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 9)" ( (binary_expression "param_1 + 9" identifier + number_literal) )))) | number_literal)) ;) (labeled_statement "LAB_001179e4:\n            if (*(short *)((long)pvVar11 + 0x70) == 2) {\n              return (void *)0x0;\n            }" statement_identifier : (if_statement "if (*(short *)((long)pvVar11 + 0x70) == 2) {\n              return (void *)0x0;\n            }" if (parenthesized_expression "(*(short *)((long)pvVar11 + 0x70) == 2)" ( (binary_expression "*(short *)((long)pvVar11 + 0x70) == 2" (pointer_expression "*(short *)((long)pvVar11 + 0x70)" * (cast_expression "(short *)((long)pvVar11 + 0x70)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)pvVar11 + 0x70)" ( (binary_expression "(long)pvVar11 + 0x70" (cast_expression "(long)pvVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) == number_literal) )) (compound_statement "{\n              return (void *)0x0;\n            }" { (return_statement "return (void *)0x0;" return (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) ;) }))) }) (else_clause "else {\n            if ((*(ushort *)((long)pvVar11 + 0x72) & 2) == 0) {\n              if (((*(ushort *)((long)pvVar11 + 0x72) & 1) == 0) &&\n                 (iVar5 = FUN_00116203(param_1,*(undefined8 *)((long)pvVar11 + 8),0xffffffff,\n                                       &DAT_0011ff41), iVar5 != 0)) {\n                piVar7 = __errno_location();\n                *(int *)((long)pvVar11 + 0x40) = *piVar7;\n                *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\n                goto LAB_001179e4;\n              }\n            }\n            else {\n              if ((*(uint *)(param_1 + 9) & 4) == 0) {\n                if ((*(uint *)(param_1 + 9) & 0x200) == 0) {\n                  iVar5 = fchdir(*(int *)((long)pvVar11 + 0x44));\n                  if (iVar5 != 0) {\n                    piVar7 = __errno_location();\n                    *(int *)((long)pvVar11 + 0x40) = *piVar7;\n                    *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\n                  }\n                }\n                else {\n                  FUN_0011615c(param_1,*(undefined4 *)((long)pvVar11 + 0x44),1);\n                }\n              }\n              close(*(int *)((long)pvVar11 + 0x44));\n            }\nLAB_001177a7:\n            if (*(short *)((long)pvVar11 + 0x70) == 2) goto LAB_00117a88;\n          }" else (compound_statement "{\n            if ((*(ushort *)((long)pvVar11 + 0x72) & 2) == 0) {\n              if (((*(ushort *)((long)pvVar11 + 0x72) & 1) == 0) &&\n                 (iVar5 = FUN_00116203(param_1,*(undefined8 *)((long)pvVar11 + 8),0xffffffff,\n                                       &DAT_0011ff41), iVar5 != 0)) {\n                piVar7 = __errno_location();\n                *(int *)((long)pvVar11 + 0x40) = *piVar7;\n                *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\n                goto LAB_001179e4;\n              }\n            }\n            else {\n              if ((*(uint *)(param_1 + 9) & 4) == 0) {\n                if ((*(uint *)(param_1 + 9) & 0x200) == 0) {\n                  iVar5 = fchdir(*(int *)((long)pvVar11 + 0x44));\n                  if (iVar5 != 0) {\n                    piVar7 = __errno_location();\n                    *(int *)((long)pvVar11 + 0x40) = *piVar7;\n                    *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\n                  }\n                }\n                else {\n                  FUN_0011615c(param_1,*(undefined4 *)((long)pvVar11 + 0x44),1);\n                }\n              }\n              close(*(int *)((long)pvVar11 + 0x44));\n            }\nLAB_001177a7:\n            if (*(short *)((long)pvVar11 + 0x70) == 2) goto LAB_00117a88;\n          }" { (if_statement "if ((*(ushort *)((long)pvVar11 + 0x72) & 2) == 0) {\n              if (((*(ushort *)((long)pvVar11 + 0x72) & 1) == 0) &&\n                 (iVar5 = FUN_00116203(param_1,*(undefined8 *)((long)pvVar11 + 8),0xffffffff,\n                                       &DAT_0011ff41), iVar5 != 0)) {\n                piVar7 = __errno_location();\n                *(int *)((long)pvVar11 + 0x40) = *piVar7;\n                *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\n                goto LAB_001179e4;\n              }\n            }\n            else {\n              if ((*(uint *)(param_1 + 9) & 4) == 0) {\n                if ((*(uint *)(param_1 + 9) & 0x200) == 0) {\n                  iVar5 = fchdir(*(int *)((long)pvVar11 + 0x44));\n                  if (iVar5 != 0) {\n                    piVar7 = __errno_location();\n                    *(int *)((long)pvVar11 + 0x40) = *piVar7;\n                    *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\n                  }\n                }\n                else {\n                  FUN_0011615c(param_1,*(undefined4 *)((long)pvVar11 + 0x44),1);\n                }\n              }\n              close(*(int *)((long)pvVar11 + 0x44));\n            }" if (parenthesized_expression "((*(ushort *)((long)pvVar11 + 0x72) & 2) == 0)" ( (binary_expression "(*(ushort *)((long)pvVar11 + 0x72) & 2) == 0" (parenthesized_expression "(*(ushort *)((long)pvVar11 + 0x72) & 2)" ( (binary_expression "*(ushort *)((long)pvVar11 + 0x72) & 2" (pointer_expression "*(ushort *)((long)pvVar11 + 0x72)" * (cast_expression "(ushort *)((long)pvVar11 + 0x72)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)pvVar11 + 0x72)" ( (binary_expression "(long)pvVar11 + 0x72" (cast_expression "(long)pvVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n              if (((*(ushort *)((long)pvVar11 + 0x72) & 1) == 0) &&\n                 (iVar5 = FUN_00116203(param_1,*(undefined8 *)((long)pvVar11 + 8),0xffffffff,\n                                       &DAT_0011ff41), iVar5 != 0)) {\n                piVar7 = __errno_location();\n                *(int *)((long)pvVar11 + 0x40) = *piVar7;\n                *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\n                goto LAB_001179e4;\n              }\n            }" { (if_statement "if (((*(ushort *)((long)pvVar11 + 0x72) & 1) == 0) &&\n                 (iVar5 = FUN_00116203(param_1,*(undefined8 *)((long)pvVar11 + 8),0xffffffff,\n                                       &DAT_0011ff41), iVar5 != 0)) {\n                piVar7 = __errno_location();\n                *(int *)((long)pvVar11 + 0x40) = *piVar7;\n                *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\n                goto LAB_001179e4;\n              }" if (parenthesized_expression "(((*(ushort *)((long)pvVar11 + 0x72) & 1) == 0) &&\n                 (iVar5 = FUN_00116203(param_1,*(undefined8 *)((long)pvVar11 + 8),0xffffffff,\n                                       &DAT_0011ff41), iVar5 != 0))" ( (binary_expression "((*(ushort *)((long)pvVar11 + 0x72) & 1) == 0) &&\n                 (iVar5 = FUN_00116203(param_1,*(undefined8 *)((long)pvVar11 + 8),0xffffffff,\n                                       &DAT_0011ff41), iVar5 != 0)" (parenthesized_expression "((*(ushort *)((long)pvVar11 + 0x72) & 1) == 0)" ( (binary_expression "(*(ushort *)((long)pvVar11 + 0x72) & 1) == 0" (parenthesized_expression "(*(ushort *)((long)pvVar11 + 0x72) & 1)" ( (binary_expression "*(ushort *)((long)pvVar11 + 0x72) & 1" (pointer_expression "*(ushort *)((long)pvVar11 + 0x72)" * (cast_expression "(ushort *)((long)pvVar11 + 0x72)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)pvVar11 + 0x72)" ( (binary_expression "(long)pvVar11 + 0x72" (cast_expression "(long)pvVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) & number_literal) )) == number_literal) )) && (parenthesized_expression "(iVar5 = FUN_00116203(param_1,*(undefined8 *)((long)pvVar11 + 8),0xffffffff,\n                                       &DAT_0011ff41), iVar5 != 0)" ( (comma_expression "iVar5 = FUN_00116203(param_1,*(undefined8 *)((long)pvVar11 + 8),0xffffffff,\n                                       &DAT_0011ff41), iVar5 != 0" (assignment_expression "iVar5 = FUN_00116203(param_1,*(undefined8 *)((long)pvVar11 + 8),0xffffffff,\n                                       &DAT_0011ff41)" identifier = (call_expression "FUN_00116203(param_1,*(undefined8 *)((long)pvVar11 + 8),0xffffffff,\n                                       &DAT_0011ff41)" identifier (argument_list "(param_1,*(undefined8 *)((long)pvVar11 + 8),0xffffffff,\n                                       &DAT_0011ff41)" ( identifier , (pointer_expression "*(undefined8 *)((long)pvVar11 + 8)" * (cast_expression "(undefined8 *)((long)pvVar11 + 8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)pvVar11 + 8)" ( (binary_expression "(long)pvVar11 + 8" (cast_expression "(long)pvVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) , number_literal , (pointer_expression "&DAT_0011ff41" & identifier) )))) , (binary_expression "iVar5 != 0" identifier != number_literal)) ))) )) (compound_statement "{\n                piVar7 = __errno_location();\n                *(int *)((long)pvVar11 + 0x40) = *piVar7;\n                *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\n                goto LAB_001179e4;\n              }" { (expression_statement "piVar7 = __errno_location();" (assignment_expression "piVar7 = __errno_location()" identifier = (call_expression "__errno_location()" identifier (argument_list "()" ( )))) ;) (expression_statement "*(int *)((long)pvVar11 + 0x40) = *piVar7;" (assignment_expression "*(int *)((long)pvVar11 + 0x40) = *piVar7" (pointer_expression "*(int *)((long)pvVar11 + 0x40)" * (cast_expression "(int *)((long)pvVar11 + 0x40)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)pvVar11 + 0x40)" ( (binary_expression "(long)pvVar11 + 0x40" (cast_expression "(long)pvVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = (pointer_expression "*piVar7" * identifier)) ;) (expression_statement "*(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;" (assignment_expression "*(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000" (pointer_expression "*(uint *)(param_1 + 9)" * (cast_expression "(uint *)(param_1 + 9)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 9)" ( (binary_expression "param_1 + 9" identifier + number_literal) )))) = (binary_expression "*(uint *)(param_1 + 9) | 0x4000" (pointer_expression "*(uint *)(param_1 + 9)" * (cast_expression "(uint *)(param_1 + 9)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 9)" ( (binary_expression "param_1 + 9" identifier + number_literal) )))) | number_literal)) ;) (goto_statement "goto LAB_001179e4;" goto statement_identifier ;) })) }) (else_clause "else {\n              if ((*(uint *)(param_1 + 9) & 4) == 0) {\n                if ((*(uint *)(param_1 + 9) & 0x200) == 0) {\n                  iVar5 = fchdir(*(int *)((long)pvVar11 + 0x44));\n                  if (iVar5 != 0) {\n                    piVar7 = __errno_location();\n                    *(int *)((long)pvVar11 + 0x40) = *piVar7;\n                    *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\n                  }\n                }\n                else {\n                  FUN_0011615c(param_1,*(undefined4 *)((long)pvVar11 + 0x44),1);\n                }\n              }\n              close(*(int *)((long)pvVar11 + 0x44));\n            }" else (compound_statement "{\n              if ((*(uint *)(param_1 + 9) & 4) == 0) {\n                if ((*(uint *)(param_1 + 9) & 0x200) == 0) {\n                  iVar5 = fchdir(*(int *)((long)pvVar11 + 0x44));\n                  if (iVar5 != 0) {\n                    piVar7 = __errno_location();\n                    *(int *)((long)pvVar11 + 0x40) = *piVar7;\n                    *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\n                  }\n                }\n                else {\n                  FUN_0011615c(param_1,*(undefined4 *)((long)pvVar11 + 0x44),1);\n                }\n              }\n              close(*(int *)((long)pvVar11 + 0x44));\n            }" { (if_statement "if ((*(uint *)(param_1 + 9) & 4) == 0) {\n                if ((*(uint *)(param_1 + 9) & 0x200) == 0) {\n                  iVar5 = fchdir(*(int *)((long)pvVar11 + 0x44));\n                  if (iVar5 != 0) {\n                    piVar7 = __errno_location();\n                    *(int *)((long)pvVar11 + 0x40) = *piVar7;\n                    *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\n                  }\n                }\n                else {\n                  FUN_0011615c(param_1,*(undefined4 *)((long)pvVar11 + 0x44),1);\n                }\n              }" if (parenthesized_expression "((*(uint *)(param_1 + 9) & 4) == 0)" ( (binary_expression "(*(uint *)(param_1 + 9) & 4) == 0" (parenthesized_expression "(*(uint *)(param_1 + 9) & 4)" ( (binary_expression "*(uint *)(param_1 + 9) & 4" (pointer_expression "*(uint *)(param_1 + 9)" * (cast_expression "(uint *)(param_1 + 9)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 9)" ( (binary_expression "param_1 + 9" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n                if ((*(uint *)(param_1 + 9) & 0x200) == 0) {\n                  iVar5 = fchdir(*(int *)((long)pvVar11 + 0x44));\n                  if (iVar5 != 0) {\n                    piVar7 = __errno_location();\n                    *(int *)((long)pvVar11 + 0x40) = *piVar7;\n                    *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\n                  }\n                }\n                else {\n                  FUN_0011615c(param_1,*(undefined4 *)((long)pvVar11 + 0x44),1);\n                }\n              }" { (if_statement "if ((*(uint *)(param_1 + 9) & 0x200) == 0) {\n                  iVar5 = fchdir(*(int *)((long)pvVar11 + 0x44));\n                  if (iVar5 != 0) {\n                    piVar7 = __errno_location();\n                    *(int *)((long)pvVar11 + 0x40) = *piVar7;\n                    *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\n                  }\n                }\n                else {\n                  FUN_0011615c(param_1,*(undefined4 *)((long)pvVar11 + 0x44),1);\n                }" if (parenthesized_expression "((*(uint *)(param_1 + 9) & 0x200) == 0)" ( (binary_expression "(*(uint *)(param_1 + 9) & 0x200) == 0" (parenthesized_expression "(*(uint *)(param_1 + 9) & 0x200)" ( (binary_expression "*(uint *)(param_1 + 9) & 0x200" (pointer_expression "*(uint *)(param_1 + 9)" * (cast_expression "(uint *)(param_1 + 9)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 9)" ( (binary_expression "param_1 + 9" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n                  iVar5 = fchdir(*(int *)((long)pvVar11 + 0x44));\n                  if (iVar5 != 0) {\n                    piVar7 = __errno_location();\n                    *(int *)((long)pvVar11 + 0x40) = *piVar7;\n                    *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\n                  }\n                }" { (expression_statement "iVar5 = fchdir(*(int *)((long)pvVar11 + 0x44));" (assignment_expression "iVar5 = fchdir(*(int *)((long)pvVar11 + 0x44))" identifier = (call_expression "fchdir(*(int *)((long)pvVar11 + 0x44))" identifier (argument_list "(*(int *)((long)pvVar11 + 0x44))" ( (pointer_expression "*(int *)((long)pvVar11 + 0x44)" * (cast_expression "(int *)((long)pvVar11 + 0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)pvVar11 + 0x44)" ( (binary_expression "(long)pvVar11 + 0x44" (cast_expression "(long)pvVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) )))) ;) (if_statement "if (iVar5 != 0) {\n                    piVar7 = __errno_location();\n                    *(int *)((long)pvVar11 + 0x40) = *piVar7;\n                    *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\n                  }" if (parenthesized_expression "(iVar5 != 0)" ( (binary_expression "iVar5 != 0" identifier != number_literal) )) (compound_statement "{\n                    piVar7 = __errno_location();\n                    *(int *)((long)pvVar11 + 0x40) = *piVar7;\n                    *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\n                  }" { (expression_statement "piVar7 = __errno_location();" (assignment_expression "piVar7 = __errno_location()" identifier = (call_expression "__errno_location()" identifier (argument_list "()" ( )))) ;) (expression_statement "*(int *)((long)pvVar11 + 0x40) = *piVar7;" (assignment_expression "*(int *)((long)pvVar11 + 0x40) = *piVar7" (pointer_expression "*(int *)((long)pvVar11 + 0x40)" * (cast_expression "(int *)((long)pvVar11 + 0x40)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)pvVar11 + 0x40)" ( (binary_expression "(long)pvVar11 + 0x40" (cast_expression "(long)pvVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = (pointer_expression "*piVar7" * identifier)) ;) (expression_statement "*(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;" (assignment_expression "*(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000" (pointer_expression "*(uint *)(param_1 + 9)" * (cast_expression "(uint *)(param_1 + 9)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 9)" ( (binary_expression "param_1 + 9" identifier + number_literal) )))) = (binary_expression "*(uint *)(param_1 + 9) | 0x4000" (pointer_expression "*(uint *)(param_1 + 9)" * (cast_expression "(uint *)(param_1 + 9)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 9)" ( (binary_expression "param_1 + 9" identifier + number_literal) )))) | number_literal)) ;) })) }) (else_clause "else {\n                  FUN_0011615c(param_1,*(undefined4 *)((long)pvVar11 + 0x44),1);\n                }" else (compound_statement "{\n                  FUN_0011615c(param_1,*(undefined4 *)((long)pvVar11 + 0x44),1);\n                }" { (expression_statement "FUN_0011615c(param_1,*(undefined4 *)((long)pvVar11 + 0x44),1);" (call_expression "FUN_0011615c(param_1,*(undefined4 *)((long)pvVar11 + 0x44),1)" identifier (argument_list "(param_1,*(undefined4 *)((long)pvVar11 + 0x44),1)" ( identifier , (pointer_expression "*(undefined4 *)((long)pvVar11 + 0x44)" * (cast_expression "(undefined4 *)((long)pvVar11 + 0x44)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)pvVar11 + 0x44)" ( (binary_expression "(long)pvVar11 + 0x44" (cast_expression "(long)pvVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) , number_literal ))) ;) }))) })) (expression_statement "close(*(int *)((long)pvVar11 + 0x44));" (call_expression "close(*(int *)((long)pvVar11 + 0x44))" identifier (argument_list "(*(int *)((long)pvVar11 + 0x44))" ( (pointer_expression "*(int *)((long)pvVar11 + 0x44)" * (cast_expression "(int *)((long)pvVar11 + 0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)pvVar11 + 0x44)" ( (binary_expression "(long)pvVar11 + 0x44" (cast_expression "(long)pvVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) ))) ;) }))) (labeled_statement "LAB_001177a7:\n            if (*(short *)((long)pvVar11 + 0x70) == 2) goto LAB_00117a88;" statement_identifier : (if_statement "if (*(short *)((long)pvVar11 + 0x70) == 2) goto LAB_00117a88;" if (parenthesized_expression "(*(short *)((long)pvVar11 + 0x70) == 2)" ( (binary_expression "*(short *)((long)pvVar11 + 0x70) == 2" (pointer_expression "*(short *)((long)pvVar11 + 0x70)" * (cast_expression "(short *)((long)pvVar11 + 0x70)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)pvVar11 + 0x70)" ( (binary_expression "(long)pvVar11 + 0x70" (cast_expression "(long)pvVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) == number_literal) )) (goto_statement "goto LAB_00117a88;" goto statement_identifier ;))) }))) (if_statement "if (*(int *)((long)pvVar11 + 0x40) == 0) {\n            *(undefined2 *)((long)pvVar11 + 0x70) = 6;\n            FUN_00116412(param_1,pvVar11);\n          }\n          else {\n            *(undefined2 *)((long)pvVar11 + 0x70) = 7;\n          }" if (parenthesized_expression "(*(int *)((long)pvVar11 + 0x40) == 0)" ( (binary_expression "*(int *)((long)pvVar11 + 0x40) == 0" (pointer_expression "*(int *)((long)pvVar11 + 0x40)" * (cast_expression "(int *)((long)pvVar11 + 0x40)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)pvVar11 + 0x40)" ( (binary_expression "(long)pvVar11 + 0x40" (cast_expression "(long)pvVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) == number_literal) )) (compound_statement "{\n            *(undefined2 *)((long)pvVar11 + 0x70) = 6;\n            FUN_00116412(param_1,pvVar11);\n          }" { (expression_statement "*(undefined2 *)((long)pvVar11 + 0x70) = 6;" (assignment_expression "*(undefined2 *)((long)pvVar11 + 0x70) = 6" (pointer_expression "*(undefined2 *)((long)pvVar11 + 0x70)" * (cast_expression "(undefined2 *)((long)pvVar11 + 0x70)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)pvVar11 + 0x70)" ( (binary_expression "(long)pvVar11 + 0x70" (cast_expression "(long)pvVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "FUN_00116412(param_1,pvVar11);" (call_expression "FUN_00116412(param_1,pvVar11)" identifier (argument_list "(param_1,pvVar11)" ( identifier , identifier ))) ;) }) (else_clause "else {\n            *(undefined2 *)((long)pvVar11 + 0x70) = 7;\n          }" else (compound_statement "{\n            *(undefined2 *)((long)pvVar11 + 0x70) = 7;\n          }" { (expression_statement "*(undefined2 *)((long)pvVar11 + 0x70) = 7;" (assignment_expression "*(undefined2 *)((long)pvVar11 + 0x70) = 7" (pointer_expression "*(undefined2 *)((long)pvVar11 + 0x70)" * (cast_expression "(undefined2 *)((long)pvVar11 + 0x70)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)pvVar11 + 0x70)" ( (binary_expression "(long)pvVar11 + 0x70" (cast_expression "(long)pvVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = number_literal) ;) }))) (labeled_statement "LAB_00117a88:\n          if ((*(uint *)(param_1 + 9) & 0x4000) != 0) {\n            return (void *)0x0;\n          }" statement_identifier : (if_statement "if ((*(uint *)(param_1 + 9) & 0x4000) != 0) {\n            return (void *)0x0;\n          }" if (parenthesized_expression "((*(uint *)(param_1 + 9) & 0x4000) != 0)" ( (binary_expression "(*(uint *)(param_1 + 9) & 0x4000) != 0" (parenthesized_expression "(*(uint *)(param_1 + 9) & 0x4000)" ( (binary_expression "*(uint *)(param_1 + 9) & 0x4000" (pointer_expression "*(uint *)(param_1 + 9)" * (cast_expression "(uint *)(param_1 + 9)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 9)" ( (binary_expression "param_1 + 9" identifier + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n            return (void *)0x0;\n          }" { (return_statement "return (void *)0x0;" return (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) ;) }))) (return_statement "return pvVar11;" return identifier ;) })) (expression_statement "*param_1 = (long)pvVar11;" (assignment_expression "*param_1 = (long)pvVar11" (pointer_expression "*param_1" * identifier) = (cast_expression "(long)pvVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) ;) (expression_statement "free(pvVar12);" (call_expression "free(pvVar12)" identifier (argument_list "(pvVar12)" ( identifier ))) ;) (if_statement "if (*(long *)((long)pvVar11 + 0x58) == 0) {\n          iVar5 = FUN_001161af(param_1);\n          if (iVar5 != 0) {\n            *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\n            return (void *)0x0;\n          }\n          FUN_00115eb3(param_1);\n          *(long *)((long)pvVar11 + 0x48) = *(long *)((long)pvVar11 + 0x60);\n          __s = (char *)((long)pvVar11 + 0x108);\n          memmove((void *)param_1[4],__s,*(long *)((long)pvVar11 + 0x60) + 1);\n          pcVar9 = strrchr(__s,0x2f);\n          if ((pcVar9 == (char *)0x0) || ((__s == pcVar9 && (pcVar9[1] == '\0'))))\n          goto LAB_0011784f;\n          uVar10 = 0xffffffffffffffff;\n          pcVar13 = pcVar9 + 1;\n          goto code_r0x00117837;\n        }" if (parenthesized_expression "(*(long *)((long)pvVar11 + 0x58) == 0)" ( (binary_expression "*(long *)((long)pvVar11 + 0x58) == 0" (pointer_expression "*(long *)((long)pvVar11 + 0x58)" * (cast_expression "(long *)((long)pvVar11 + 0x58)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)pvVar11 + 0x58)" ( (binary_expression "(long)pvVar11 + 0x58" (cast_expression "(long)pvVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) == number_literal) )) (compound_statement "{\n          iVar5 = FUN_001161af(param_1);\n          if (iVar5 != 0) {\n            *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\n            return (void *)0x0;\n          }\n          FUN_00115eb3(param_1);\n          *(long *)((long)pvVar11 + 0x48) = *(long *)((long)pvVar11 + 0x60);\n          __s = (char *)((long)pvVar11 + 0x108);\n          memmove((void *)param_1[4],__s,*(long *)((long)pvVar11 + 0x60) + 1);\n          pcVar9 = strrchr(__s,0x2f);\n          if ((pcVar9 == (char *)0x0) || ((__s == pcVar9 && (pcVar9[1] == '\0'))))\n          goto LAB_0011784f;\n          uVar10 = 0xffffffffffffffff;\n          pcVar13 = pcVar9 + 1;\n          goto code_r0x00117837;\n        }" { (expression_statement "iVar5 = FUN_001161af(param_1);" (assignment_expression "iVar5 = FUN_001161af(param_1)" identifier = (call_expression "FUN_001161af(param_1)" identifier (argument_list "(param_1)" ( identifier )))) ;) (if_statement "if (iVar5 != 0) {\n            *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\n            return (void *)0x0;\n          }" if (parenthesized_expression "(iVar5 != 0)" ( (binary_expression "iVar5 != 0" identifier != number_literal) )) (compound_statement "{\n            *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\n            return (void *)0x0;\n          }" { (expression_statement "*(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;" (assignment_expression "*(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000" (pointer_expression "*(uint *)(param_1 + 9)" * (cast_expression "(uint *)(param_1 + 9)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 9)" ( (binary_expression "param_1 + 9" identifier + number_literal) )))) = (binary_expression "*(uint *)(param_1 + 9) | 0x4000" (pointer_expression "*(uint *)(param_1 + 9)" * (cast_expression "(uint *)(param_1 + 9)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 9)" ( (binary_expression "param_1 + 9" identifier + number_literal) )))) | number_literal)) ;) (return_statement "return (void *)0x0;" return (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (expression_statement "FUN_00115eb3(param_1);" (call_expression "FUN_00115eb3(param_1)" identifier (argument_list "(param_1)" ( identifier ))) ;) (expression_statement "*(long *)((long)pvVar11 + 0x48) = *(long *)((long)pvVar11 + 0x60);" (assignment_expression "*(long *)((long)pvVar11 + 0x48) = *(long *)((long)pvVar11 + 0x60)" (pointer_expression "*(long *)((long)pvVar11 + 0x48)" * (cast_expression "(long *)((long)pvVar11 + 0x48)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)pvVar11 + 0x48)" ( (binary_expression "(long)pvVar11 + 0x48" (cast_expression "(long)pvVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = (pointer_expression "*(long *)((long)pvVar11 + 0x60)" * (cast_expression "(long *)((long)pvVar11 + 0x60)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)pvVar11 + 0x60)" ( (binary_expression "(long)pvVar11 + 0x60" (cast_expression "(long)pvVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ))))) ;) (expression_statement "__s = (char *)((long)pvVar11 + 0x108);" (assignment_expression "__s = (char *)((long)pvVar11 + 0x108)" identifier = (cast_expression "(char *)((long)pvVar11 + 0x108)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)pvVar11 + 0x108)" ( (binary_expression "(long)pvVar11 + 0x108" (cast_expression "(long)pvVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) ;) (expression_statement "memmove((void *)param_1[4],__s,*(long *)((long)pvVar11 + 0x60) + 1);" (call_expression "memmove((void *)param_1[4],__s,*(long *)((long)pvVar11 + 0x60) + 1)" identifier (argument_list "((void *)param_1[4],__s,*(long *)((long)pvVar11 + 0x60) + 1)" ( (cast_expression "(void *)param_1[4]" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[4]" identifier [ number_literal ])) , identifier , (binary_expression "*(long *)((long)pvVar11 + 0x60) + 1" (pointer_expression "*(long *)((long)pvVar11 + 0x60)" * (cast_expression "(long *)((long)pvVar11 + 0x60)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)pvVar11 + 0x60)" ( (binary_expression "(long)pvVar11 + 0x60" (cast_expression "(long)pvVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) + number_literal) ))) ;) (expression_statement "pcVar9 = strrchr(__s,0x2f);" (assignment_expression "pcVar9 = strrchr(__s,0x2f)" identifier = (call_expression "strrchr(__s,0x2f)" identifier (argument_list "(__s,0x2f)" ( identifier , number_literal )))) ;) (if_statement "if ((pcVar9 == (char *)0x0) || ((__s == pcVar9 && (pcVar9[1] == '\0'))))\n          goto LAB_0011784f;" if (parenthesized_expression "((pcVar9 == (char *)0x0) || ((__s == pcVar9 && (pcVar9[1] == '\0'))))" ( (binary_expression "(pcVar9 == (char *)0x0) || ((__s == pcVar9 && (pcVar9[1] == '\0')))" (parenthesized_expression "(pcVar9 == (char *)0x0)" ( (binary_expression "pcVar9 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "((__s == pcVar9 && (pcVar9[1] == '\0')))" ( (parenthesized_expression "(__s == pcVar9 && (pcVar9[1] == '\0'))" ( (binary_expression "__s == pcVar9 && (pcVar9[1] == '\0')" (binary_expression "__s == pcVar9" identifier == identifier) && (parenthesized_expression "(pcVar9[1] == '\0')" ( (binary_expression "pcVar9[1] == '\0'" (subscript_expression "pcVar9[1]" identifier [ number_literal ]) == (char_literal "'\0'" ' escape_sequence ')) ))) )) ))) )) (goto_statement "goto LAB_0011784f;" goto statement_identifier ;)) (expression_statement "uVar10 = 0xffffffffffffffff;" (assignment_expression "uVar10 = 0xffffffffffffffff" identifier = number_literal) ;) (expression_statement "pcVar13 = pcVar9 + 1;" (assignment_expression "pcVar13 = pcVar9 + 1" identifier = (binary_expression "pcVar9 + 1" identifier + number_literal)) ;) (goto_statement "goto code_r0x00117837;" goto statement_identifier ;) })) (expression_statement "pvVar12 = pvVar11;" (assignment_expression "pvVar12 = pvVar11" identifier = identifier) ;) }) while (parenthesized_expression "(*(short *)((long)pvVar11 + 0x74) == 4)" ( (binary_expression "*(short *)((long)pvVar11 + 0x74) == 4" (pointer_expression "*(short *)((long)pvVar11 + 0x74)" * (cast_expression "(short *)((long)pvVar11 + 0x74)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)pvVar11 + 0x74)" ( (binary_expression "(long)pvVar11 + 0x74" (cast_expression "(long)pvVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) == number_literal) )) ;)) (if_statement "if (*(short *)((long)pvVar11 + 0x74) == 2) {\n        sVar4 = FUN_00115abc(param_1,pvVar11,1);\n        *(short *)((long)pvVar11 + 0x70) = sVar4;\n        if ((sVar4 == 1) && ((*(byte *)(param_1 + 9) & 4) == 0)) {\n          iVar5 = FUN_00115e27(param_1,&DAT_0011ff42);\n          *(int *)((long)pvVar11 + 0x44) = iVar5;\n          if (iVar5 < 0) {\n            piVar7 = __errno_location();\n            *(int *)((long)pvVar11 + 0x40) = *piVar7;\n            *(undefined2 *)((long)pvVar11 + 0x70) = 7;\n          }\n          else {\n            *(ushort *)((long)pvVar11 + 0x72) = *(ushort *)((long)pvVar11 + 0x72) | 2;\n          }\n        }\n        *(undefined2 *)((long)pvVar11 + 0x74) = 3;\n      }" if (parenthesized_expression "(*(short *)((long)pvVar11 + 0x74) == 2)" ( (binary_expression "*(short *)((long)pvVar11 + 0x74) == 2" (pointer_expression "*(short *)((long)pvVar11 + 0x74)" * (cast_expression "(short *)((long)pvVar11 + 0x74)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)pvVar11 + 0x74)" ( (binary_expression "(long)pvVar11 + 0x74" (cast_expression "(long)pvVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) == number_literal) )) (compound_statement "{\n        sVar4 = FUN_00115abc(param_1,pvVar11,1);\n        *(short *)((long)pvVar11 + 0x70) = sVar4;\n        if ((sVar4 == 1) && ((*(byte *)(param_1 + 9) & 4) == 0)) {\n          iVar5 = FUN_00115e27(param_1,&DAT_0011ff42);\n          *(int *)((long)pvVar11 + 0x44) = iVar5;\n          if (iVar5 < 0) {\n            piVar7 = __errno_location();\n            *(int *)((long)pvVar11 + 0x40) = *piVar7;\n            *(undefined2 *)((long)pvVar11 + 0x70) = 7;\n          }\n          else {\n            *(ushort *)((long)pvVar11 + 0x72) = *(ushort *)((long)pvVar11 + 0x72) | 2;\n          }\n        }\n        *(undefined2 *)((long)pvVar11 + 0x74) = 3;\n      }" { (expression_statement "sVar4 = FUN_00115abc(param_1,pvVar11,1);" (assignment_expression "sVar4 = FUN_00115abc(param_1,pvVar11,1)" identifier = (call_expression "FUN_00115abc(param_1,pvVar11,1)" identifier (argument_list "(param_1,pvVar11,1)" ( identifier , identifier , number_literal )))) ;) (expression_statement "*(short *)((long)pvVar11 + 0x70) = sVar4;" (assignment_expression "*(short *)((long)pvVar11 + 0x70) = sVar4" (pointer_expression "*(short *)((long)pvVar11 + 0x70)" * (cast_expression "(short *)((long)pvVar11 + 0x70)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)pvVar11 + 0x70)" ( (binary_expression "(long)pvVar11 + 0x70" (cast_expression "(long)pvVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = identifier) ;) (if_statement "if ((sVar4 == 1) && ((*(byte *)(param_1 + 9) & 4) == 0)) {\n          iVar5 = FUN_00115e27(param_1,&DAT_0011ff42);\n          *(int *)((long)pvVar11 + 0x44) = iVar5;\n          if (iVar5 < 0) {\n            piVar7 = __errno_location();\n            *(int *)((long)pvVar11 + 0x40) = *piVar7;\n            *(undefined2 *)((long)pvVar11 + 0x70) = 7;\n          }\n          else {\n            *(ushort *)((long)pvVar11 + 0x72) = *(ushort *)((long)pvVar11 + 0x72) | 2;\n          }\n        }" if (parenthesized_expression "((sVar4 == 1) && ((*(byte *)(param_1 + 9) & 4) == 0))" ( (binary_expression "(sVar4 == 1) && ((*(byte *)(param_1 + 9) & 4) == 0)" (parenthesized_expression "(sVar4 == 1)" ( (binary_expression "sVar4 == 1" identifier == number_literal) )) && (parenthesized_expression "((*(byte *)(param_1 + 9) & 4) == 0)" ( (binary_expression "(*(byte *)(param_1 + 9) & 4) == 0" (parenthesized_expression "(*(byte *)(param_1 + 9) & 4)" ( (binary_expression "*(byte *)(param_1 + 9) & 4" (pointer_expression "*(byte *)(param_1 + 9)" * (cast_expression "(byte *)(param_1 + 9)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 9)" ( (binary_expression "param_1 + 9" identifier + number_literal) )))) & number_literal) )) == number_literal) ))) )) (compound_statement "{\n          iVar5 = FUN_00115e27(param_1,&DAT_0011ff42);\n          *(int *)((long)pvVar11 + 0x44) = iVar5;\n          if (iVar5 < 0) {\n            piVar7 = __errno_location();\n            *(int *)((long)pvVar11 + 0x40) = *piVar7;\n            *(undefined2 *)((long)pvVar11 + 0x70) = 7;\n          }\n          else {\n            *(ushort *)((long)pvVar11 + 0x72) = *(ushort *)((long)pvVar11 + 0x72) | 2;\n          }\n        }" { (expression_statement "iVar5 = FUN_00115e27(param_1,&DAT_0011ff42);" (assignment_expression "iVar5 = FUN_00115e27(param_1,&DAT_0011ff42)" identifier = (call_expression "FUN_00115e27(param_1,&DAT_0011ff42)" identifier (argument_list "(param_1,&DAT_0011ff42)" ( identifier , (pointer_expression "&DAT_0011ff42" & identifier) )))) ;) (expression_statement "*(int *)((long)pvVar11 + 0x44) = iVar5;" (assignment_expression "*(int *)((long)pvVar11 + 0x44) = iVar5" (pointer_expression "*(int *)((long)pvVar11 + 0x44)" * (cast_expression "(int *)((long)pvVar11 + 0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)pvVar11 + 0x44)" ( (binary_expression "(long)pvVar11 + 0x44" (cast_expression "(long)pvVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = identifier) ;) (if_statement "if (iVar5 < 0) {\n            piVar7 = __errno_location();\n            *(int *)((long)pvVar11 + 0x40) = *piVar7;\n            *(undefined2 *)((long)pvVar11 + 0x70) = 7;\n          }\n          else {\n            *(ushort *)((long)pvVar11 + 0x72) = *(ushort *)((long)pvVar11 + 0x72) | 2;\n          }" if (parenthesized_expression "(iVar5 < 0)" ( (binary_expression "iVar5 < 0" identifier < number_literal) )) (compound_statement "{\n            piVar7 = __errno_location();\n            *(int *)((long)pvVar11 + 0x40) = *piVar7;\n            *(undefined2 *)((long)pvVar11 + 0x70) = 7;\n          }" { (expression_statement "piVar7 = __errno_location();" (assignment_expression "piVar7 = __errno_location()" identifier = (call_expression "__errno_location()" identifier (argument_list "()" ( )))) ;) (expression_statement "*(int *)((long)pvVar11 + 0x40) = *piVar7;" (assignment_expression "*(int *)((long)pvVar11 + 0x40) = *piVar7" (pointer_expression "*(int *)((long)pvVar11 + 0x40)" * (cast_expression "(int *)((long)pvVar11 + 0x40)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)pvVar11 + 0x40)" ( (binary_expression "(long)pvVar11 + 0x40" (cast_expression "(long)pvVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = (pointer_expression "*piVar7" * identifier)) ;) (expression_statement "*(undefined2 *)((long)pvVar11 + 0x70) = 7;" (assignment_expression "*(undefined2 *)((long)pvVar11 + 0x70) = 7" (pointer_expression "*(undefined2 *)((long)pvVar11 + 0x70)" * (cast_expression "(undefined2 *)((long)pvVar11 + 0x70)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)pvVar11 + 0x70)" ( (binary_expression "(long)pvVar11 + 0x70" (cast_expression "(long)pvVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = number_literal) ;) }) (else_clause "else {\n            *(ushort *)((long)pvVar11 + 0x72) = *(ushort *)((long)pvVar11 + 0x72) | 2;\n          }" else (compound_statement "{\n            *(ushort *)((long)pvVar11 + 0x72) = *(ushort *)((long)pvVar11 + 0x72) | 2;\n          }" { (expression_statement "*(ushort *)((long)pvVar11 + 0x72) = *(ushort *)((long)pvVar11 + 0x72) | 2;" (assignment_expression "*(ushort *)((long)pvVar11 + 0x72) = *(ushort *)((long)pvVar11 + 0x72) | 2" (pointer_expression "*(ushort *)((long)pvVar11 + 0x72)" * (cast_expression "(ushort *)((long)pvVar11 + 0x72)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)pvVar11 + 0x72)" ( (binary_expression "(long)pvVar11 + 0x72" (cast_expression "(long)pvVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = (binary_expression "*(ushort *)((long)pvVar11 + 0x72) | 2" (pointer_expression "*(ushort *)((long)pvVar11 + 0x72)" * (cast_expression "(ushort *)((long)pvVar11 + 0x72)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)pvVar11 + 0x72)" ( (binary_expression "(long)pvVar11 + 0x72" (cast_expression "(long)pvVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) | number_literal)) ;) }))) })) (expression_statement "*(undefined2 *)((long)pvVar11 + 0x74) = 3;" (assignment_expression "*(undefined2 *)((long)pvVar11 + 0x74) = 3" (pointer_expression "*(undefined2 *)((long)pvVar11 + 0x74)" * (cast_expression "(undefined2 *)((long)pvVar11 + 0x74)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)pvVar11 + 0x74)" ( (binary_expression "(long)pvVar11 + 0x74" (cast_expression "(long)pvVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = number_literal) ;) })) }))) (labeled_statement "LAB_00117587:\n    lVar8 = *(long *)(*(long *)((long)pvVar11 + 8) + 0x48);" statement_identifier : (expression_statement "lVar8 = *(long *)(*(long *)((long)pvVar11 + 8) + 0x48);" (assignment_expression "lVar8 = *(long *)(*(long *)((long)pvVar11 + 8) + 0x48)" identifier = (pointer_expression "*(long *)(*(long *)((long)pvVar11 + 8) + 0x48)" * (cast_expression "(long *)(*(long *)((long)pvVar11 + 8) + 0x48)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)((long)pvVar11 + 8) + 0x48)" ( (binary_expression "*(long *)((long)pvVar11 + 8) + 0x48" (pointer_expression "*(long *)((long)pvVar11 + 8)" * (cast_expression "(long *)((long)pvVar11 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)pvVar11 + 8)" ( (binary_expression "(long)pvVar11 + 8" (cast_expression "(long)pvVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) + number_literal) ))))) ;)) (expression_statement "lVar6 = lVar8 + -1;" (assignment_expression "lVar6 = lVar8 + -1" identifier = (binary_expression "lVar8 + -1" identifier + number_literal)) ;) (if_statement "if (*(char *)(*(long *)(*(long *)((long)pvVar11 + 8) + 0x38) + -1 + lVar8) != '/') {\n      lVar6 = lVar8;\n    }" if (parenthesized_expression "(*(char *)(*(long *)(*(long *)((long)pvVar11 + 8) + 0x38) + -1 + lVar8) != '/')" ( (binary_expression "*(char *)(*(long *)(*(long *)((long)pvVar11 + 8) + 0x38) + -1 + lVar8) != '/'" (pointer_expression "*(char *)(*(long *)(*(long *)((long)pvVar11 + 8) + 0x38) + -1 + lVar8)" * (cast_expression "(char *)(*(long *)(*(long *)((long)pvVar11 + 8) + 0x38) + -1 + lVar8)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(*(long *)((long)pvVar11 + 8) + 0x38) + -1 + lVar8)" ( (binary_expression "*(long *)(*(long *)((long)pvVar11 + 8) + 0x38) + -1 + lVar8" (binary_expression "*(long *)(*(long *)((long)pvVar11 + 8) + 0x38) + -1" (pointer_expression "*(long *)(*(long *)((long)pvVar11 + 8) + 0x38)" * (cast_expression "(long *)(*(long *)((long)pvVar11 + 8) + 0x38)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)((long)pvVar11 + 8) + 0x38)" ( (binary_expression "*(long *)((long)pvVar11 + 8) + 0x38" (pointer_expression "*(long *)((long)pvVar11 + 8)" * (cast_expression "(long *)((long)pvVar11 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)pvVar11 + 8)" ( (binary_expression "(long)pvVar11 + 8" (cast_expression "(long)pvVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) + number_literal) )))) + number_literal) + identifier) )))) != (char_literal "'/'" ' character ')) )) (compound_statement "{\n      lVar6 = lVar8;\n    }" { (expression_statement "lVar6 = lVar8;" (assignment_expression "lVar6 = lVar8" identifier = identifier) ;) })) (expression_statement "lVar8 = param_1[4];" (assignment_expression "lVar8 = param_1[4]" identifier = (subscript_expression "param_1[4]" identifier [ number_literal ])) ;) (expression_statement "*(undefined1 *)(lVar6 + lVar8) = 0x2f;" (assignment_expression "*(undefined1 *)(lVar6 + lVar8) = 0x2f" (pointer_expression "*(undefined1 *)(lVar6 + lVar8)" * (cast_expression "(undefined1 *)(lVar6 + lVar8)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar6 + lVar8)" ( (binary_expression "lVar6 + lVar8" identifier + identifier) )))) = number_literal) ;) (expression_statement "memmove((undefined1 *)(lVar6 + lVar8) + 1,(void *)((long)pvVar11 + 0x108),\n            *(long *)((long)pvVar11 + 0x60) + 1);" (call_expression "memmove((undefined1 *)(lVar6 + lVar8) + 1,(void *)((long)pvVar11 + 0x108),\n            *(long *)((long)pvVar11 + 0x60) + 1)" identifier (argument_list "((undefined1 *)(lVar6 + lVar8) + 1,(void *)((long)pvVar11 + 0x108),\n            *(long *)((long)pvVar11 + 0x60) + 1)" ( (binary_expression "(undefined1 *)(lVar6 + lVar8) + 1" (cast_expression "(undefined1 *)(lVar6 + lVar8)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar6 + lVar8)" ( (binary_expression "lVar6 + lVar8" identifier + identifier) ))) + number_literal) , (cast_expression "(void *)((long)pvVar11 + 0x108)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)pvVar11 + 0x108)" ( (binary_expression "(long)pvVar11 + 0x108" (cast_expression "(long)pvVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ))) , (binary_expression "*(long *)((long)pvVar11 + 0x60) + 1" (pointer_expression "*(long *)((long)pvVar11 + 0x60)" * (cast_expression "(long *)((long)pvVar11 + 0x60)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)pvVar11 + 0x60)" ( (binary_expression "(long)pvVar11 + 0x60" (cast_expression "(long)pvVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) + number_literal) ))) ;) }))) (goto_statement "goto LAB_001175c0;" goto statement_identifier ;) (while_statement "while( true ) {\n    uVar10 = uVar10 - 1;\n    cVar2 = *pcVar13;\n    pcVar13 = pcVar13 + (ulong)bVar14 * -2 + 1;\n    if (cVar2 == '\0') break;\ncode_r0x00117837:\n    if (uVar10 == 0) break;\n  }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n    uVar10 = uVar10 - 1;\n    cVar2 = *pcVar13;\n    pcVar13 = pcVar13 + (ulong)bVar14 * -2 + 1;\n    if (cVar2 == '\0') break;\ncode_r0x00117837:\n    if (uVar10 == 0) break;\n  }" { (expression_statement "uVar10 = uVar10 - 1;" (assignment_expression "uVar10 = uVar10 - 1" identifier = (binary_expression "uVar10 - 1" identifier - number_literal)) ;) (expression_statement "cVar2 = *pcVar13;" (assignment_expression "cVar2 = *pcVar13" identifier = (pointer_expression "*pcVar13" * identifier)) ;) (expression_statement "pcVar13 = pcVar13 + (ulong)bVar14 * -2 + 1;" (assignment_expression "pcVar13 = pcVar13 + (ulong)bVar14 * -2 + 1" identifier = (binary_expression "pcVar13 + (ulong)bVar14 * -2 + 1" (binary_expression "pcVar13 + (ulong)bVar14 * -2" identifier + (binary_expression "(ulong)bVar14 * -2" (cast_expression "(ulong)bVar14" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (if_statement "if (cVar2 == '\0') break;" if (parenthesized_expression "(cVar2 == '\0')" ( (binary_expression "cVar2 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (break_statement "break;" break ;)) (labeled_statement "code_r0x00117837:\n    if (uVar10 == 0) break;" statement_identifier : (if_statement "if (uVar10 == 0) break;" if (parenthesized_expression "(uVar10 == 0)" ( (binary_expression "uVar10 == 0" identifier == number_literal) )) (break_statement "break;" break ;))) })) (expression_statement "memmove(__s,pcVar9 + 1,~uVar10);" (call_expression "memmove(__s,pcVar9 + 1,~uVar10)" identifier (argument_list "(__s,pcVar9 + 1,~uVar10)" ( identifier , (binary_expression "pcVar9 + 1" identifier + number_literal) , (unary_expression "~uVar10" ~ identifier) ))) ;) (expression_statement "*(ulong *)((long)pvVar11 + 0x60) = ~uVar10 - 1;" (assignment_expression "*(ulong *)((long)pvVar11 + 0x60) = ~uVar10 - 1" (pointer_expression "*(ulong *)((long)pvVar11 + 0x60)" * (cast_expression "(ulong *)((long)pvVar11 + 0x60)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)pvVar11 + 0x60)" ( (binary_expression "(long)pvVar11 + 0x60" (cast_expression "(long)pvVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = (binary_expression "~uVar10 - 1" (unary_expression "~uVar10" ~ identifier) - number_literal)) ;) (labeled_statement "LAB_0011784f:\n  lVar8 = param_1[4];" statement_identifier : (expression_statement "lVar8 = param_1[4];" (assignment_expression "lVar8 = param_1[4]" identifier = (subscript_expression "param_1[4]" identifier [ number_literal ])) ;)) (expression_statement "*(long *)((long)pvVar11 + 0x38) = lVar8;" (assignment_expression "*(long *)((long)pvVar11 + 0x38) = lVar8" (pointer_expression "*(long *)((long)pvVar11 + 0x38)" * (cast_expression "(long *)((long)pvVar11 + 0x38)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)pvVar11 + 0x38)" ( (binary_expression "(long)pvVar11 + 0x38" (cast_expression "(long)pvVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(long *)((long)pvVar11 + 0x30) = lVar8;" (assignment_expression "*(long *)((long)pvVar11 + 0x30) = lVar8" (pointer_expression "*(long *)((long)pvVar11 + 0x30)" * (cast_expression "(long *)((long)pvVar11 + 0x30)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)pvVar11 + 0x30)" ( (binary_expression "(long)pvVar11 + 0x30" (cast_expression "(long)pvVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "FUN_00115dc3(param_1);" (call_expression "FUN_00115dc3(param_1)" identifier (argument_list "(param_1)" ( identifier ))) ;) (labeled_statement "LAB_001175c0:\n  *param_1 = (long)pvVar11;" statement_identifier : (expression_statement "*param_1 = (long)pvVar11;" (assignment_expression "*param_1 = (long)pvVar11" (pointer_expression "*param_1" * identifier) = (cast_expression "(long)pvVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) ;)) (if_statement "if (*(short *)((long)pvVar11 + 0x70) == 0xb) {\n    if (*(long *)((long)pvVar11 + 0xa8) != 2) {\n      if (*(long *)((long)pvVar11 + 0xa8) == 1) {\n        return pvVar11;\n      }\n                    /* WARNING: Subroutine does not return */\n      abort();\n    }\n    lVar8 = *(long *)((long)pvVar11 + 8);\n    if (((*(long *)(lVar8 + 0x68) == 0) && ((*(uint *)(param_1 + 9) & 0x18) == 0x18)) &&\n       (iVar5 = FUN_0011603e(lVar8,*(undefined4 *)((long)param_1 + 0x2c)), iVar5 == 2))\n    goto LAB_001175cf;\n    sVar4 = FUN_00115abc(param_1,pvVar11,0);\n    *(short *)((long)pvVar11 + 0x70) = sVar4;\n    if ((*(uint *)((long)pvVar11 + 0x90) & 0xf000) != 0x4000) goto LAB_001175cf;\n    if (*(long *)((long)pvVar11 + 0x58) != 0) {\n      uVar10 = *(long *)(lVar8 + 0x68) - 1;\n      if (0xfffffffffffffffd < uVar10) {\n        if (sVar4 != 1) {\n          return pvVar11;\n        }\n        goto LAB_001175ea;\n      }\n      *(ulong *)(lVar8 + 0x68) = uVar10;\n      goto LAB_001175cf;\n    }\n    if (sVar4 != 1) {\n      return pvVar11;\n    }\n  }\n  else {\nLAB_001175cf:\n    if (*(short *)((long)pvVar11 + 0x70) != 1) {\n      return pvVar11;\n    }\n    if (*(long *)((long)pvVar11 + 0x58) != 0) goto LAB_001175ea;\n  }" if (parenthesized_expression "(*(short *)((long)pvVar11 + 0x70) == 0xb)" ( (binary_expression "*(short *)((long)pvVar11 + 0x70) == 0xb" (pointer_expression "*(short *)((long)pvVar11 + 0x70)" * (cast_expression "(short *)((long)pvVar11 + 0x70)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)pvVar11 + 0x70)" ( (binary_expression "(long)pvVar11 + 0x70" (cast_expression "(long)pvVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) == number_literal) )) (compound_statement "{\n    if (*(long *)((long)pvVar11 + 0xa8) != 2) {\n      if (*(long *)((long)pvVar11 + 0xa8) == 1) {\n        return pvVar11;\n      }\n                    /* WARNING: Subroutine does not return */\n      abort();\n    }\n    lVar8 = *(long *)((long)pvVar11 + 8);\n    if (((*(long *)(lVar8 + 0x68) == 0) && ((*(uint *)(param_1 + 9) & 0x18) == 0x18)) &&\n       (iVar5 = FUN_0011603e(lVar8,*(undefined4 *)((long)param_1 + 0x2c)), iVar5 == 2))\n    goto LAB_001175cf;\n    sVar4 = FUN_00115abc(param_1,pvVar11,0);\n    *(short *)((long)pvVar11 + 0x70) = sVar4;\n    if ((*(uint *)((long)pvVar11 + 0x90) & 0xf000) != 0x4000) goto LAB_001175cf;\n    if (*(long *)((long)pvVar11 + 0x58) != 0) {\n      uVar10 = *(long *)(lVar8 + 0x68) - 1;\n      if (0xfffffffffffffffd < uVar10) {\n        if (sVar4 != 1) {\n          return pvVar11;\n        }\n        goto LAB_001175ea;\n      }\n      *(ulong *)(lVar8 + 0x68) = uVar10;\n      goto LAB_001175cf;\n    }\n    if (sVar4 != 1) {\n      return pvVar11;\n    }\n  }" { (if_statement "if (*(long *)((long)pvVar11 + 0xa8) != 2) {\n      if (*(long *)((long)pvVar11 + 0xa8) == 1) {\n        return pvVar11;\n      }\n                    /* WARNING: Subroutine does not return */\n      abort();\n    }" if (parenthesized_expression "(*(long *)((long)pvVar11 + 0xa8) != 2)" ( (binary_expression "*(long *)((long)pvVar11 + 0xa8) != 2" (pointer_expression "*(long *)((long)pvVar11 + 0xa8)" * (cast_expression "(long *)((long)pvVar11 + 0xa8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)pvVar11 + 0xa8)" ( (binary_expression "(long)pvVar11 + 0xa8" (cast_expression "(long)pvVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) != number_literal) )) (compound_statement "{\n      if (*(long *)((long)pvVar11 + 0xa8) == 1) {\n        return pvVar11;\n      }\n                    /* WARNING: Subroutine does not return */\n      abort();\n    }" { (if_statement "if (*(long *)((long)pvVar11 + 0xa8) == 1) {\n        return pvVar11;\n      }" if (parenthesized_expression "(*(long *)((long)pvVar11 + 0xa8) == 1)" ( (binary_expression "*(long *)((long)pvVar11 + 0xa8) == 1" (pointer_expression "*(long *)((long)pvVar11 + 0xa8)" * (cast_expression "(long *)((long)pvVar11 + 0xa8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)pvVar11 + 0xa8)" ( (binary_expression "(long)pvVar11 + 0xa8" (cast_expression "(long)pvVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) == number_literal) )) (compound_statement "{\n        return pvVar11;\n      }" { (return_statement "return pvVar11;" return identifier ;) })) comment (expression_statement "abort();" (call_expression "abort()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "lVar8 = *(long *)((long)pvVar11 + 8);" (assignment_expression "lVar8 = *(long *)((long)pvVar11 + 8)" identifier = (pointer_expression "*(long *)((long)pvVar11 + 8)" * (cast_expression "(long *)((long)pvVar11 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)pvVar11 + 8)" ( (binary_expression "(long)pvVar11 + 8" (cast_expression "(long)pvVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ))))) ;) (if_statement "if (((*(long *)(lVar8 + 0x68) == 0) && ((*(uint *)(param_1 + 9) & 0x18) == 0x18)) &&\n       (iVar5 = FUN_0011603e(lVar8,*(undefined4 *)((long)param_1 + 0x2c)), iVar5 == 2))\n    goto LAB_001175cf;" if (parenthesized_expression "(((*(long *)(lVar8 + 0x68) == 0) && ((*(uint *)(param_1 + 9) & 0x18) == 0x18)) &&\n       (iVar5 = FUN_0011603e(lVar8,*(undefined4 *)((long)param_1 + 0x2c)), iVar5 == 2))" ( (binary_expression "((*(long *)(lVar8 + 0x68) == 0) && ((*(uint *)(param_1 + 9) & 0x18) == 0x18)) &&\n       (iVar5 = FUN_0011603e(lVar8,*(undefined4 *)((long)param_1 + 0x2c)), iVar5 == 2)" (parenthesized_expression "((*(long *)(lVar8 + 0x68) == 0) && ((*(uint *)(param_1 + 9) & 0x18) == 0x18))" ( (binary_expression "(*(long *)(lVar8 + 0x68) == 0) && ((*(uint *)(param_1 + 9) & 0x18) == 0x18)" (parenthesized_expression "(*(long *)(lVar8 + 0x68) == 0)" ( (binary_expression "*(long *)(lVar8 + 0x68) == 0" (pointer_expression "*(long *)(lVar8 + 0x68)" * (cast_expression "(long *)(lVar8 + 0x68)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar8 + 0x68)" ( (binary_expression "lVar8 + 0x68" identifier + number_literal) )))) == number_literal) )) && (parenthesized_expression "((*(uint *)(param_1 + 9) & 0x18) == 0x18)" ( (binary_expression "(*(uint *)(param_1 + 9) & 0x18) == 0x18" (parenthesized_expression "(*(uint *)(param_1 + 9) & 0x18)" ( (binary_expression "*(uint *)(param_1 + 9) & 0x18" (pointer_expression "*(uint *)(param_1 + 9)" * (cast_expression "(uint *)(param_1 + 9)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 9)" ( (binary_expression "param_1 + 9" identifier + number_literal) )))) & number_literal) )) == number_literal) ))) )) && (parenthesized_expression "(iVar5 = FUN_0011603e(lVar8,*(undefined4 *)((long)param_1 + 0x2c)), iVar5 == 2)" ( (comma_expression "iVar5 = FUN_0011603e(lVar8,*(undefined4 *)((long)param_1 + 0x2c)), iVar5 == 2" (assignment_expression "iVar5 = FUN_0011603e(lVar8,*(undefined4 *)((long)param_1 + 0x2c))" identifier = (call_expression "FUN_0011603e(lVar8,*(undefined4 *)((long)param_1 + 0x2c))" identifier (argument_list "(lVar8,*(undefined4 *)((long)param_1 + 0x2c))" ( identifier , (pointer_expression "*(undefined4 *)((long)param_1 + 0x2c)" * (cast_expression "(undefined4 *)((long)param_1 + 0x2c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_1 + 0x2c)" ( (binary_expression "(long)param_1 + 0x2c" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) )))) , (binary_expression "iVar5 == 2" identifier == number_literal)) ))) )) (goto_statement "goto LAB_001175cf;" goto statement_identifier ;)) (expression_statement "sVar4 = FUN_00115abc(param_1,pvVar11,0);" (assignment_expression "sVar4 = FUN_00115abc(param_1,pvVar11,0)" identifier = (call_expression "FUN_00115abc(param_1,pvVar11,0)" identifier (argument_list "(param_1,pvVar11,0)" ( identifier , identifier , number_literal )))) ;) (expression_statement "*(short *)((long)pvVar11 + 0x70) = sVar4;" (assignment_expression "*(short *)((long)pvVar11 + 0x70) = sVar4" (pointer_expression "*(short *)((long)pvVar11 + 0x70)" * (cast_expression "(short *)((long)pvVar11 + 0x70)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)pvVar11 + 0x70)" ( (binary_expression "(long)pvVar11 + 0x70" (cast_expression "(long)pvVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = identifier) ;) (if_statement "if ((*(uint *)((long)pvVar11 + 0x90) & 0xf000) != 0x4000) goto LAB_001175cf;" if (parenthesized_expression "((*(uint *)((long)pvVar11 + 0x90) & 0xf000) != 0x4000)" ( (binary_expression "(*(uint *)((long)pvVar11 + 0x90) & 0xf000) != 0x4000" (parenthesized_expression "(*(uint *)((long)pvVar11 + 0x90) & 0xf000)" ( (binary_expression "*(uint *)((long)pvVar11 + 0x90) & 0xf000" (pointer_expression "*(uint *)((long)pvVar11 + 0x90)" * (cast_expression "(uint *)((long)pvVar11 + 0x90)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)pvVar11 + 0x90)" ( (binary_expression "(long)pvVar11 + 0x90" (cast_expression "(long)pvVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) & number_literal) )) != number_literal) )) (goto_statement "goto LAB_001175cf;" goto statement_identifier ;)) (if_statement "if (*(long *)((long)pvVar11 + 0x58) != 0) {\n      uVar10 = *(long *)(lVar8 + 0x68) - 1;\n      if (0xfffffffffffffffd < uVar10) {\n        if (sVar4 != 1) {\n          return pvVar11;\n        }\n        goto LAB_001175ea;\n      }\n      *(ulong *)(lVar8 + 0x68) = uVar10;\n      goto LAB_001175cf;\n    }" if (parenthesized_expression "(*(long *)((long)pvVar11 + 0x58) != 0)" ( (binary_expression "*(long *)((long)pvVar11 + 0x58) != 0" (pointer_expression "*(long *)((long)pvVar11 + 0x58)" * (cast_expression "(long *)((long)pvVar11 + 0x58)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)pvVar11 + 0x58)" ( (binary_expression "(long)pvVar11 + 0x58" (cast_expression "(long)pvVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) != number_literal) )) (compound_statement "{\n      uVar10 = *(long *)(lVar8 + 0x68) - 1;\n      if (0xfffffffffffffffd < uVar10) {\n        if (sVar4 != 1) {\n          return pvVar11;\n        }\n        goto LAB_001175ea;\n      }\n      *(ulong *)(lVar8 + 0x68) = uVar10;\n      goto LAB_001175cf;\n    }" { (expression_statement "uVar10 = *(long *)(lVar8 + 0x68) - 1;" (assignment_expression "uVar10 = *(long *)(lVar8 + 0x68) - 1" identifier = (binary_expression "*(long *)(lVar8 + 0x68) - 1" (pointer_expression "*(long *)(lVar8 + 0x68)" * (cast_expression "(long *)(lVar8 + 0x68)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar8 + 0x68)" ( (binary_expression "lVar8 + 0x68" identifier + number_literal) )))) - number_literal)) ;) (if_statement "if (0xfffffffffffffffd < uVar10) {\n        if (sVar4 != 1) {\n          return pvVar11;\n        }\n        goto LAB_001175ea;\n      }" if (parenthesized_expression "(0xfffffffffffffffd < uVar10)" ( (binary_expression "0xfffffffffffffffd < uVar10" number_literal < identifier) )) (compound_statement "{\n        if (sVar4 != 1) {\n          return pvVar11;\n        }\n        goto LAB_001175ea;\n      }" { (if_statement "if (sVar4 != 1) {\n          return pvVar11;\n        }" if (parenthesized_expression "(sVar4 != 1)" ( (binary_expression "sVar4 != 1" identifier != number_literal) )) (compound_statement "{\n          return pvVar11;\n        }" { (return_statement "return pvVar11;" return identifier ;) })) (goto_statement "goto LAB_001175ea;" goto statement_identifier ;) })) (expression_statement "*(ulong *)(lVar8 + 0x68) = uVar10;" (assignment_expression "*(ulong *)(lVar8 + 0x68) = uVar10" (pointer_expression "*(ulong *)(lVar8 + 0x68)" * (cast_expression "(ulong *)(lVar8 + 0x68)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar8 + 0x68)" ( (binary_expression "lVar8 + 0x68" identifier + number_literal) )))) = identifier) ;) (goto_statement "goto LAB_001175cf;" goto statement_identifier ;) })) (if_statement "if (sVar4 != 1) {\n      return pvVar11;\n    }" if (parenthesized_expression "(sVar4 != 1)" ( (binary_expression "sVar4 != 1" identifier != number_literal) )) (compound_statement "{\n      return pvVar11;\n    }" { (return_statement "return pvVar11;" return identifier ;) })) }) (else_clause "else {\nLAB_001175cf:\n    if (*(short *)((long)pvVar11 + 0x70) != 1) {\n      return pvVar11;\n    }\n    if (*(long *)((long)pvVar11 + 0x58) != 0) goto LAB_001175ea;\n  }" else (compound_statement "{\nLAB_001175cf:\n    if (*(short *)((long)pvVar11 + 0x70) != 1) {\n      return pvVar11;\n    }\n    if (*(long *)((long)pvVar11 + 0x58) != 0) goto LAB_001175ea;\n  }" { (labeled_statement "LAB_001175cf:\n    if (*(short *)((long)pvVar11 + 0x70) != 1) {\n      return pvVar11;\n    }" statement_identifier : (if_statement "if (*(short *)((long)pvVar11 + 0x70) != 1) {\n      return pvVar11;\n    }" if (parenthesized_expression "(*(short *)((long)pvVar11 + 0x70) != 1)" ( (binary_expression "*(short *)((long)pvVar11 + 0x70) != 1" (pointer_expression "*(short *)((long)pvVar11 + 0x70)" * (cast_expression "(short *)((long)pvVar11 + 0x70)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)pvVar11 + 0x70)" ( (binary_expression "(long)pvVar11 + 0x70" (cast_expression "(long)pvVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) != number_literal) )) (compound_statement "{\n      return pvVar11;\n    }" { (return_statement "return pvVar11;" return identifier ;) }))) (if_statement "if (*(long *)((long)pvVar11 + 0x58) != 0) goto LAB_001175ea;" if (parenthesized_expression "(*(long *)((long)pvVar11 + 0x58) != 0)" ( (binary_expression "*(long *)((long)pvVar11 + 0x58) != 0" (pointer_expression "*(long *)((long)pvVar11 + 0x58)" * (cast_expression "(long *)((long)pvVar11 + 0x58)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)pvVar11 + 0x58)" ( (binary_expression "(long)pvVar11 + 0x58" (cast_expression "(long)pvVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) != number_literal) )) (goto_statement "goto LAB_001175ea;" goto statement_identifier ;)) }))) (expression_statement "param_1[3] = *(long *)((long)pvVar11 + 0x78);" (assignment_expression "param_1[3] = *(long *)((long)pvVar11 + 0x78)" (subscript_expression "param_1[3]" identifier [ number_literal ]) = (pointer_expression "*(long *)((long)pvVar11 + 0x78)" * (cast_expression "(long *)((long)pvVar11 + 0x78)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)pvVar11 + 0x78)" ( (binary_expression "(long)pvVar11 + 0x78" (cast_expression "(long)pvVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ))))) ;) (labeled_statement "LAB_001175ea:\n  cVar2 = FUN_001160b2(param_1,pvVar11);" statement_identifier : (expression_statement "cVar2 = FUN_001160b2(param_1,pvVar11);" (assignment_expression "cVar2 = FUN_001160b2(param_1,pvVar11)" identifier = (call_expression "FUN_001160b2(param_1,pvVar11)" identifier (argument_list "(param_1,pvVar11)" ( identifier , identifier )))) ;)) (if_statement "if (cVar2 == '\0') {\n    piVar7 = __errno_location();\n    *piVar7 = 0xc;\n    pvVar11 = (void *)0x0;\n  }" if (parenthesized_expression "(cVar2 == '\0')" ( (binary_expression "cVar2 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    piVar7 = __errno_location();\n    *piVar7 = 0xc;\n    pvVar11 = (void *)0x0;\n  }" { (expression_statement "piVar7 = __errno_location();" (assignment_expression "piVar7 = __errno_location()" identifier = (call_expression "__errno_location()" identifier (argument_list "()" ( )))) ;) (expression_statement "*piVar7 = 0xc;" (assignment_expression "*piVar7 = 0xc" (pointer_expression "*piVar7" * identifier) = number_literal) ;) (expression_statement "pvVar11 = (void *)0x0;" (assignment_expression "pvVar11 = (void *)0x0" identifier = (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) })) (return_statement "return pvVar11;" return identifier ;) })))
(translation_unit "FTSENT * fts_read(FTS *sp)\n\n{\n  char cVar1;\n  uint uVar2;\n  size_t sVar3;\n  char *pcVar4;\n  _ftsent *p_Var5;\n  long lVar6;\n  _Bool _Var7;\n  ushort uVar8;\n  int iVar9;\n  leaf_optimization lVar10;\n  size_t sVar11;\n  int *piVar12;\n  FTSENT *pFVar13;\n  FTSENT *pFVar14;\n  ulong uVar15;\n  FTSENT *pFVar16;\n  char *pcVar17;\n  byte bVar18;\n  \n  bVar18 = 0;\n  pFVar16 = sp->fts_cur;\n  if (pFVar16 == (FTSENT *)0x0) {\n    return (FTSENT *)0x0;\n  }\n  if ((sp->fts_options & 0x4000) != 0) {\n    return (FTSENT *)0x0;\n  }\n  uVar8 = pFVar16->fts_instr;\n  pFVar16->fts_instr = 3;\n  if (uVar8 == 1) {\n    uVar8 = fts_stat(sp,pFVar16,false);\n    pFVar16->fts_info = uVar8;\n    return pFVar16;\n  }\n  pFVar13 = pFVar16;\n  if (uVar8 == 2) {\n    if (1 < (ushort)(pFVar16->fts_info - 0xc)) {\n      if (pFVar16->fts_info != 1) goto LAB_00117717;\n      goto LAB_00117457;\n    }\n    uVar8 = fts_stat(sp,pFVar16,true);\n    pFVar16->fts_info = uVar8;\n    if ((uVar8 == 1) && ((sp->fts_options & 4) == 0)) {\n      iVar9 = diropen(sp,".");\n      pFVar16->fts_symfd = iVar9;\n      if (iVar9 < 0) {\n        piVar12 = __errno_location();\n        pFVar16->fts_errno = *piVar12;\n        pFVar16->fts_info = 7;\n      }\n      else {\n        pFVar16->fts_flags = pFVar16->fts_flags | 2;\n      }\n    }\n  }\n  else {\n    if (pFVar16->fts_info == 1) {\n      if (uVar8 == 4) goto LAB_00117473;\nLAB_00117457:\n      uVar2 = sp->fts_options;\n      if (((uVar2 & 0x40) != 0) && (pFVar16->fts_statp[0].st_dev != sp->fts_dev)) {\nLAB_00117473:\n        if ((pFVar16->fts_flags & 2) != 0) {\n          close(pFVar16->fts_symfd);\n        }\n        if (sp->fts_child != (FTSENT *)0x0) {\n          fts_lfree(sp->fts_child);\n          sp->fts_child = (_ftsent *)0x0;\n        }\n        pFVar16->fts_info = 6;\n        leave_dir(sp,pFVar16);\n        return pFVar16;\n      }\n      if (sp->fts_child == (FTSENT *)0x0) {\nLAB_00117628:\n        pFVar13 = fts_build(sp,3);\n        sp->fts_child = pFVar13;\n        if (pFVar13 == (FTSENT *)0x0) {\n          if ((sp->fts_options & 0x4000) == 0) {\n            if ((pFVar16->fts_errno != 0) && (pFVar16->fts_info != 4)) {\n              pFVar16->fts_info = 7;\n            }\n            leave_dir(sp,pFVar16);\n            return pFVar16;\n          }\n          return (FTSENT *)0x0;\n        }\n      }\n      else {\n        if ((uVar2 & 0x2000) != 0) {\n          sp->fts_options = uVar2 & 0xffffdfff;\n          fts_lfree(sp->fts_child);\n          sp->fts_child = (_ftsent *)0x0;\n          goto LAB_00117628;\n        }\n        iVar9 = fts_safe_changedir(sp,pFVar16,-1,pFVar16->fts_accpath);\n        if (iVar9 != 0) {\n          piVar12 = __errno_location();\n          pFVar16->fts_errno = *piVar12;\n          pFVar16->fts_flags = pFVar16->fts_flags | 1;\n          for (p_Var5 = sp->fts_child; p_Var5 != (_ftsent *)0x0; p_Var5 = p_Var5->fts_link) {\n            p_Var5->fts_accpath = p_Var5->fts_parent->fts_accpath;\n          }\n        }\n      }\n      pFVar16 = sp->fts_child;\n      sp->fts_child = (_ftsent *)0x0;\n    }\n    else {\nLAB_00117717:\n      do {\n        pFVar16 = pFVar13->fts_link;\n        if (pFVar16 == (FTSENT *)0x0) {\n          p_Var5 = pFVar13->fts_parent;\n          if (p_Var5->fts_dirp != (DIR *)0x0) {\n            sp->fts_cur = p_Var5;\n            sp->fts_path[p_Var5->fts_pathlen] = '\0';\n            pFVar16 = fts_build(sp,3);\n            if (pFVar16 != (FTSENT *)0x0) {\n              free(pFVar13);\n              goto LAB_00117587;\n            }\n            if ((sp->fts_options & 0x4000) != 0) {\n              return (FTSENT *)0x0;\n            }\n          }\n          pFVar16 = pFVar13->fts_parent;\n          sp->fts_cur = pFVar16;\n          free(pFVar13);\n          if (pFVar16->fts_level == -1) {\n            free(pFVar16);\n            piVar12 = __errno_location();\n            *piVar12 = 0;\n            sp->fts_cur = (_ftsent *)0x0;\n            return (FTSENT *)0x0;\n          }\n          if (pFVar16->fts_info == 0xb) {\n                    /* WARNING: Subroutine does not return */\n            abort();\n          }\n          sp->fts_path[pFVar16->fts_pathlen] = '\0';\n          if (pFVar16->fts_level == 0) {\n            iVar9 = restore_initial_cwd(sp);\n            if (iVar9 == 0) goto LAB_001177a7;\n            piVar12 = __errno_location();\n            pFVar16->fts_errno = *piVar12;\n            sp->fts_options = sp->fts_options | 0x4000;\nLAB_001179e4:\n            if (pFVar16->fts_info == 2) {\n              return (FTSENT *)0x0;\n            }\n          }\n          else {\n            if ((pFVar16->fts_flags & 2) == 0) {\n              if (((pFVar16->fts_flags & 1) == 0) &&\n                 (iVar9 = fts_safe_changedir(sp,pFVar16->fts_parent,-1,".."), iVar9 != 0)) {\n                piVar12 = __errno_location();\n                pFVar16->fts_errno = *piVar12;\n                sp->fts_options = sp->fts_options | 0x4000;\n                goto LAB_001179e4;\n              }\n            }\n            else {\n              if ((sp->fts_options & 4U) == 0) {\n                if ((sp->fts_options & 0x200U) == 0) {\n                  iVar9 = fchdir(pFVar16->fts_symfd);\n                  if (iVar9 != 0) {\n                    piVar12 = __errno_location();\n                    pFVar16->fts_errno = *piVar12;\n                    sp->fts_options = sp->fts_options | 0x4000;\n                  }\n                }\n                else {\n                  cwd_advance_fd(sp,pFVar16->fts_symfd,true);\n                }\n              }\n              close(pFVar16->fts_symfd);\n            }\nLAB_001177a7:\n            if (pFVar16->fts_info == 2) goto LAB_00117a88;\n          }\n          if (pFVar16->fts_errno == 0) {\n            pFVar16->fts_info = 6;\n            leave_dir(sp,pFVar16);\n          }\n          else {\n            pFVar16->fts_info = 7;\n          }\nLAB_00117a88:\n          if ((sp->fts_options & 0x4000U) != 0) {\n            return (FTSENT *)0x0;\n          }\n          return pFVar16;\n        }\n        sp->fts_cur = pFVar16;\n        free(pFVar13);\n        if (pFVar16->fts_level == 0) {\n          iVar9 = restore_initial_cwd(sp);\n          if (iVar9 != 0) {\n            sp->fts_options = sp->fts_options | 0x4000;\n            return (FTSENT *)0x0;\n          }\n          free_dir(sp);\n          pFVar16->fts_pathlen = pFVar16->fts_namelen;\n          pFVar13 = pFVar16 + 1;\n          memmove(sp->fts_path,pFVar13,pFVar16->fts_namelen + 1);\n          pFVar14 = (FTSENT *)strrchr((char *)pFVar13,0x2f);\n          if ((pFVar14 == (FTSENT *)0x0) ||\n             ((pFVar13 == pFVar14 && (*(char *)((long)&pFVar14->fts_cycle + 1) == '\0'))))\n          goto LAB_0011784f;\n          pcVar4 = (char *)((long)&pFVar14->fts_cycle + 1);\n          uVar15 = 0xffffffffffffffff;\n          pcVar17 = pcVar4;\n          goto code_r0x00117837;\n        }\n        pFVar13 = pFVar16;\n      } while (pFVar16->fts_instr == 4);\n      if (pFVar16->fts_instr == 2) {\n        uVar8 = fts_stat(sp,pFVar16,true);\n        pFVar16->fts_info = uVar8;\n        if ((uVar8 == 1) && ((sp->fts_options & 4) == 0)) {\n          iVar9 = diropen(sp,".");\n          pFVar16->fts_symfd = iVar9;\n          if (iVar9 < 0) {\n            piVar12 = __errno_location();\n            pFVar16->fts_errno = *piVar12;\n            pFVar16->fts_info = 7;\n          }\n          else {\n            pFVar16->fts_flags = pFVar16->fts_flags | 2;\n          }\n        }\n        pFVar16->fts_instr = 3;\n      }\n    }\nLAB_00117587:\n    sVar3 = pFVar16->fts_parent->fts_pathlen;\n    sVar11 = sVar3 - 1;\n    if (pFVar16->fts_parent->fts_path[sVar3 - 1] != '/') {\n      sVar11 = sVar3;\n    }\n    pcVar4 = sp->fts_path;\n    pcVar4[sVar11] = '/';\n    memmove(pcVar4 + sVar11 + 1,pFVar16 + 1,pFVar16->fts_namelen + 1);\n  }\n  goto LAB_001175c0;\n  while( true ) {\n    uVar15 = uVar15 - 1;\n    cVar1 = *pcVar17;\n    pcVar17 = pcVar17 + (ulong)bVar18 * -2 + 1;\n    if (cVar1 == '\0') break;\ncode_r0x00117837:\n    if (uVar15 == 0) break;\n  }\n  memmove(pFVar13,pcVar4,~uVar15);\n  pFVar16->fts_namelen = ~uVar15 - 1;\nLAB_0011784f:\n  pcVar4 = sp->fts_path;\n  pFVar16->fts_path = pcVar4;\n  pFVar16->fts_accpath = pcVar4;\n  setup_dir(sp);\nLAB_001175c0:\n  sp->fts_cur = pFVar16;\n  if (pFVar16->fts_info == 0xb) {\n    lVar6 = pFVar16->fts_statp[0].st_size;\n    if (lVar6 != 2) {\n      if (lVar6 == 1) {\n        return pFVar16;\n      }\n                    /* WARNING: Subroutine does not return */\n      abort();\n    }\n    pFVar13 = pFVar16->fts_parent;\n    if (((pFVar13->fts_n_dirs_remaining == 0) && ((sp->fts_options & 0x18U) == 0x18)) &&\n       (lVar10 = leaf_optimization(pFVar13,sp->fts_cwd_fd), lVar10 == NOSTAT_LEAF_OPTIMIZATION))\n    goto LAB_001175cf;\n    uVar8 = fts_stat(sp,pFVar16,false);\n    pFVar16->fts_info = uVar8;\n    if ((pFVar16->fts_statp[0].st_mode & 0xf000) != 0x4000) goto LAB_001175cf;\n    if (pFVar16->fts_level != 0) {\n      uVar15 = pFVar13->fts_n_dirs_remaining - 1;\n      if (0xfffffffffffffffd < uVar15) {\n        if (uVar8 != 1) {\n          return pFVar16;\n        }\n        goto LAB_001175ea;\n      }\n      pFVar13->fts_n_dirs_remaining = uVar15;\n      goto LAB_001175cf;\n    }\n    if (uVar8 != 1) {\n      return pFVar16;\n    }\n  }\n  else {\nLAB_001175cf:\n    if (pFVar16->fts_info != 1) {\n      return pFVar16;\n    }\n    if (pFVar16->fts_level != 0) goto LAB_001175ea;\n  }\n  sp->fts_dev = pFVar16->fts_statp[0].st_dev;\nLAB_001175ea:\n  _Var7 = enter_dir(sp,pFVar16);\n  if (!_Var7) {\n    piVar12 = __errno_location();\n    *piVar12 = 0xc;\n    pFVar16 = (FTSENT *)0x0;\n  }\n  return pFVar16;\n}\n\n" (function_definition "FTSENT * fts_read(FTS *sp)\n\n{\n  char cVar1;\n  uint uVar2;\n  size_t sVar3;\n  char *pcVar4;\n  _ftsent *p_Var5;\n  long lVar6;\n  _Bool _Var7;\n  ushort uVar8;\n  int iVar9;\n  leaf_optimization lVar10;\n  size_t sVar11;\n  int *piVar12;\n  FTSENT *pFVar13;\n  FTSENT *pFVar14;\n  ulong uVar15;\n  FTSENT *pFVar16;\n  char *pcVar17;\n  byte bVar18;\n  \n  bVar18 = 0;\n  pFVar16 = sp->fts_cur;\n  if (pFVar16 == (FTSENT *)0x0) {\n    return (FTSENT *)0x0;\n  }\n  if ((sp->fts_options & 0x4000) != 0) {\n    return (FTSENT *)0x0;\n  }\n  uVar8 = pFVar16->fts_instr;\n  pFVar16->fts_instr = 3;\n  if (uVar8 == 1) {\n    uVar8 = fts_stat(sp,pFVar16,false);\n    pFVar16->fts_info = uVar8;\n    return pFVar16;\n  }\n  pFVar13 = pFVar16;\n  if (uVar8 == 2) {\n    if (1 < (ushort)(pFVar16->fts_info - 0xc)) {\n      if (pFVar16->fts_info != 1) goto LAB_00117717;\n      goto LAB_00117457;\n    }\n    uVar8 = fts_stat(sp,pFVar16,true);\n    pFVar16->fts_info = uVar8;\n    if ((uVar8 == 1) && ((sp->fts_options & 4) == 0)) {\n      iVar9 = diropen(sp,".");\n      pFVar16->fts_symfd = iVar9;\n      if (iVar9 < 0) {\n        piVar12 = __errno_location();\n        pFVar16->fts_errno = *piVar12;\n        pFVar16->fts_info = 7;\n      }\n      else {\n        pFVar16->fts_flags = pFVar16->fts_flags | 2;\n      }\n    }\n  }\n  else {\n    if (pFVar16->fts_info == 1) {\n      if (uVar8 == 4) goto LAB_00117473;\nLAB_00117457:\n      uVar2 = sp->fts_options;\n      if (((uVar2 & 0x40) != 0) && (pFVar16->fts_statp[0].st_dev != sp->fts_dev)) {\nLAB_00117473:\n        if ((pFVar16->fts_flags & 2) != 0) {\n          close(pFVar16->fts_symfd);\n        }\n        if (sp->fts_child != (FTSENT *)0x0) {\n          fts_lfree(sp->fts_child);\n          sp->fts_child = (_ftsent *)0x0;\n        }\n        pFVar16->fts_info = 6;\n        leave_dir(sp,pFVar16);\n        return pFVar16;\n      }\n      if (sp->fts_child == (FTSENT *)0x0) {\nLAB_00117628:\n        pFVar13 = fts_build(sp,3);\n        sp->fts_child = pFVar13;\n        if (pFVar13 == (FTSENT *)0x0) {\n          if ((sp->fts_options & 0x4000) == 0) {\n            if ((pFVar16->fts_errno != 0) && (pFVar16->fts_info != 4)) {\n              pFVar16->fts_info = 7;\n            }\n            leave_dir(sp,pFVar16);\n            return pFVar16;\n          }\n          return (FTSENT *)0x0;\n        }\n      }\n      else {\n        if ((uVar2 & 0x2000) != 0) {\n          sp->fts_options = uVar2 & 0xffffdfff;\n          fts_lfree(sp->fts_child);\n          sp->fts_child = (_ftsent *)0x0;\n          goto LAB_00117628;\n        }\n        iVar9 = fts_safe_changedir(sp,pFVar16,-1,pFVar16->fts_accpath);\n        if (iVar9 != 0) {\n          piVar12 = __errno_location();\n          pFVar16->fts_errno = *piVar12;\n          pFVar16->fts_flags = pFVar16->fts_flags | 1;\n          for (p_Var5 = sp->fts_child; p_Var5 != (_ftsent *)0x0; p_Var5 = p_Var5->fts_link) {\n            p_Var5->fts_accpath = p_Var5->fts_parent->fts_accpath;\n          }\n        }\n      }\n      pFVar16 = sp->fts_child;\n      sp->fts_child = (_ftsent *)0x0;\n    }\n    else {\nLAB_00117717:\n      do {\n        pFVar16 = pFVar13->fts_link;\n        if (pFVar16 == (FTSENT *)0x0) {\n          p_Var5 = pFVar13->fts_parent;\n          if (p_Var5->fts_dirp != (DIR *)0x0) {\n            sp->fts_cur = p_Var5;\n            sp->fts_path[p_Var5->fts_pathlen] = '\0';\n            pFVar16 = fts_build(sp,3);\n            if (pFVar16 != (FTSENT *)0x0) {\n              free(pFVar13);\n              goto LAB_00117587;\n            }\n            if ((sp->fts_options & 0x4000) != 0) {\n              return (FTSENT *)0x0;\n            }\n          }\n          pFVar16 = pFVar13->fts_parent;\n          sp->fts_cur = pFVar16;\n          free(pFVar13);\n          if (pFVar16->fts_level == -1) {\n            free(pFVar16);\n            piVar12 = __errno_location();\n            *piVar12 = 0;\n            sp->fts_cur = (_ftsent *)0x0;\n            return (FTSENT *)0x0;\n          }\n          if (pFVar16->fts_info == 0xb) {\n                    /* WARNING: Subroutine does not return */\n            abort();\n          }\n          sp->fts_path[pFVar16->fts_pathlen] = '\0';\n          if (pFVar16->fts_level == 0) {\n            iVar9 = restore_initial_cwd(sp);\n            if (iVar9 == 0) goto LAB_001177a7;\n            piVar12 = __errno_location();\n            pFVar16->fts_errno = *piVar12;\n            sp->fts_options = sp->fts_options | 0x4000;\nLAB_001179e4:\n            if (pFVar16->fts_info == 2) {\n              return (FTSENT *)0x0;\n            }\n          }\n          else {\n            if ((pFVar16->fts_flags & 2) == 0) {\n              if (((pFVar16->fts_flags & 1) == 0) &&\n                 (iVar9 = fts_safe_changedir(sp,pFVar16->fts_parent,-1,".."), iVar9 != 0)) {\n                piVar12 = __errno_location();\n                pFVar16->fts_errno = *piVar12;\n                sp->fts_options = sp->fts_options | 0x4000;\n                goto LAB_001179e4;\n              }\n            }\n            else {\n              if ((sp->fts_options & 4U) == 0) {\n                if ((sp->fts_options & 0x200U) == 0) {\n                  iVar9 = fchdir(pFVar16->fts_symfd);\n                  if (iVar9 != 0) {\n                    piVar12 = __errno_location();\n                    pFVar16->fts_errno = *piVar12;\n                    sp->fts_options = sp->fts_options | 0x4000;\n                  }\n                }\n                else {\n                  cwd_advance_fd(sp,pFVar16->fts_symfd,true);\n                }\n              }\n              close(pFVar16->fts_symfd);\n            }\nLAB_001177a7:\n            if (pFVar16->fts_info == 2) goto LAB_00117a88;\n          }\n          if (pFVar16->fts_errno == 0) {\n            pFVar16->fts_info = 6;\n            leave_dir(sp,pFVar16);\n          }\n          else {\n            pFVar16->fts_info = 7;\n          }\nLAB_00117a88:\n          if ((sp->fts_options & 0x4000U) != 0) {\n            return (FTSENT *)0x0;\n          }\n          return pFVar16;\n        }\n        sp->fts_cur = pFVar16;\n        free(pFVar13);\n        if (pFVar16->fts_level == 0) {\n          iVar9 = restore_initial_cwd(sp);\n          if (iVar9 != 0) {\n            sp->fts_options = sp->fts_options | 0x4000;\n            return (FTSENT *)0x0;\n          }\n          free_dir(sp);\n          pFVar16->fts_pathlen = pFVar16->fts_namelen;\n          pFVar13 = pFVar16 + 1;\n          memmove(sp->fts_path,pFVar13,pFVar16->fts_namelen + 1);\n          pFVar14 = (FTSENT *)strrchr((char *)pFVar13,0x2f);\n          if ((pFVar14 == (FTSENT *)0x0) ||\n             ((pFVar13 == pFVar14 && (*(char *)((long)&pFVar14->fts_cycle + 1) == '\0'))))\n          goto LAB_0011784f;\n          pcVar4 = (char *)((long)&pFVar14->fts_cycle + 1);\n          uVar15 = 0xffffffffffffffff;\n          pcVar17 = pcVar4;\n          goto code_r0x00117837;\n        }\n        pFVar13 = pFVar16;\n      } while (pFVar16->fts_instr == 4);\n      if (pFVar16->fts_instr == 2) {\n        uVar8 = fts_stat(sp,pFVar16,true);\n        pFVar16->fts_info = uVar8;\n        if ((uVar8 == 1) && ((sp->fts_options & 4) == 0)) {\n          iVar9 = diropen(sp,".");\n          pFVar16->fts_symfd = iVar9;\n          if (iVar9 < 0) {\n            piVar12 = __errno_location();\n            pFVar16->fts_errno = *piVar12;\n            pFVar16->fts_info = 7;\n          }\n          else {\n            pFVar16->fts_flags = pFVar16->fts_flags | 2;\n          }\n        }\n        pFVar16->fts_instr = 3;\n      }\n    }\nLAB_00117587:\n    sVar3 = pFVar16->fts_parent->fts_pathlen;\n    sVar11 = sVar3 - 1;\n    if (pFVar16->fts_parent->fts_path[sVar3 - 1] != '/') {\n      sVar11 = sVar3;\n    }\n    pcVar4 = sp->fts_path;\n    pcVar4[sVar11] = '/';\n    memmove(pcVar4 + sVar11 + 1,pFVar16 + 1,pFVar16->fts_namelen + 1);\n  }\n  goto LAB_001175c0;\n  while( true ) {\n    uVar15 = uVar15 - 1;\n    cVar1 = *pcVar17;\n    pcVar17 = pcVar17 + (ulong)bVar18 * -2 + 1;\n    if (cVar1 == '\0') break;\ncode_r0x00117837:\n    if (uVar15 == 0) break;\n  }\n  memmove(pFVar13,pcVar4,~uVar15);\n  pFVar16->fts_namelen = ~uVar15 - 1;\nLAB_0011784f:\n  pcVar4 = sp->fts_path;\n  pFVar16->fts_path = pcVar4;\n  pFVar16->fts_accpath = pcVar4;\n  setup_dir(sp);\nLAB_001175c0:\n  sp->fts_cur = pFVar16;\n  if (pFVar16->fts_info == 0xb) {\n    lVar6 = pFVar16->fts_statp[0].st_size;\n    if (lVar6 != 2) {\n      if (lVar6 == 1) {\n        return pFVar16;\n      }\n                    /* WARNING: Subroutine does not return */\n      abort();\n    }\n    pFVar13 = pFVar16->fts_parent;\n    if (((pFVar13->fts_n_dirs_remaining == 0) && ((sp->fts_options & 0x18U) == 0x18)) &&\n       (lVar10 = leaf_optimization(pFVar13,sp->fts_cwd_fd), lVar10 == NOSTAT_LEAF_OPTIMIZATION))\n    goto LAB_001175cf;\n    uVar8 = fts_stat(sp,pFVar16,false);\n    pFVar16->fts_info = uVar8;\n    if ((pFVar16->fts_statp[0].st_mode & 0xf000) != 0x4000) goto LAB_001175cf;\n    if (pFVar16->fts_level != 0) {\n      uVar15 = pFVar13->fts_n_dirs_remaining - 1;\n      if (0xfffffffffffffffd < uVar15) {\n        if (uVar8 != 1) {\n          return pFVar16;\n        }\n        goto LAB_001175ea;\n      }\n      pFVar13->fts_n_dirs_remaining = uVar15;\n      goto LAB_001175cf;\n    }\n    if (uVar8 != 1) {\n      return pFVar16;\n    }\n  }\n  else {\nLAB_001175cf:\n    if (pFVar16->fts_info != 1) {\n      return pFVar16;\n    }\n    if (pFVar16->fts_level != 0) goto LAB_001175ea;\n  }\n  sp->fts_dev = pFVar16->fts_statp[0].st_dev;\nLAB_001175ea:\n  _Var7 = enter_dir(sp,pFVar16);\n  if (!_Var7) {\n    piVar12 = __errno_location();\n    *piVar12 = 0xc;\n    pFVar16 = (FTSENT *)0x0;\n  }\n  return pFVar16;\n}" type_identifier (pointer_declarator "* fts_read(FTS *sp)" * (function_declarator "fts_read(FTS *sp)" identifier (parameter_list "(FTS *sp)" ( (parameter_declaration "FTS *sp" type_identifier (pointer_declarator "*sp" * identifier)) )))) (compound_statement "{\n  char cVar1;\n  uint uVar2;\n  size_t sVar3;\n  char *pcVar4;\n  _ftsent *p_Var5;\n  long lVar6;\n  _Bool _Var7;\n  ushort uVar8;\n  int iVar9;\n  leaf_optimization lVar10;\n  size_t sVar11;\n  int *piVar12;\n  FTSENT *pFVar13;\n  FTSENT *pFVar14;\n  ulong uVar15;\n  FTSENT *pFVar16;\n  char *pcVar17;\n  byte bVar18;\n  \n  bVar18 = 0;\n  pFVar16 = sp->fts_cur;\n  if (pFVar16 == (FTSENT *)0x0) {\n    return (FTSENT *)0x0;\n  }\n  if ((sp->fts_options & 0x4000) != 0) {\n    return (FTSENT *)0x0;\n  }\n  uVar8 = pFVar16->fts_instr;\n  pFVar16->fts_instr = 3;\n  if (uVar8 == 1) {\n    uVar8 = fts_stat(sp,pFVar16,false);\n    pFVar16->fts_info = uVar8;\n    return pFVar16;\n  }\n  pFVar13 = pFVar16;\n  if (uVar8 == 2) {\n    if (1 < (ushort)(pFVar16->fts_info - 0xc)) {\n      if (pFVar16->fts_info != 1) goto LAB_00117717;\n      goto LAB_00117457;\n    }\n    uVar8 = fts_stat(sp,pFVar16,true);\n    pFVar16->fts_info = uVar8;\n    if ((uVar8 == 1) && ((sp->fts_options & 4) == 0)) {\n      iVar9 = diropen(sp,".");\n      pFVar16->fts_symfd = iVar9;\n      if (iVar9 < 0) {\n        piVar12 = __errno_location();\n        pFVar16->fts_errno = *piVar12;\n        pFVar16->fts_info = 7;\n      }\n      else {\n        pFVar16->fts_flags = pFVar16->fts_flags | 2;\n      }\n    }\n  }\n  else {\n    if (pFVar16->fts_info == 1) {\n      if (uVar8 == 4) goto LAB_00117473;\nLAB_00117457:\n      uVar2 = sp->fts_options;\n      if (((uVar2 & 0x40) != 0) && (pFVar16->fts_statp[0].st_dev != sp->fts_dev)) {\nLAB_00117473:\n        if ((pFVar16->fts_flags & 2) != 0) {\n          close(pFVar16->fts_symfd);\n        }\n        if (sp->fts_child != (FTSENT *)0x0) {\n          fts_lfree(sp->fts_child);\n          sp->fts_child = (_ftsent *)0x0;\n        }\n        pFVar16->fts_info = 6;\n        leave_dir(sp,pFVar16);\n        return pFVar16;\n      }\n      if (sp->fts_child == (FTSENT *)0x0) {\nLAB_00117628:\n        pFVar13 = fts_build(sp,3);\n        sp->fts_child = pFVar13;\n        if (pFVar13 == (FTSENT *)0x0) {\n          if ((sp->fts_options & 0x4000) == 0) {\n            if ((pFVar16->fts_errno != 0) && (pFVar16->fts_info != 4)) {\n              pFVar16->fts_info = 7;\n            }\n            leave_dir(sp,pFVar16);\n            return pFVar16;\n          }\n          return (FTSENT *)0x0;\n        }\n      }\n      else {\n        if ((uVar2 & 0x2000) != 0) {\n          sp->fts_options = uVar2 & 0xffffdfff;\n          fts_lfree(sp->fts_child);\n          sp->fts_child = (_ftsent *)0x0;\n          goto LAB_00117628;\n        }\n        iVar9 = fts_safe_changedir(sp,pFVar16,-1,pFVar16->fts_accpath);\n        if (iVar9 != 0) {\n          piVar12 = __errno_location();\n          pFVar16->fts_errno = *piVar12;\n          pFVar16->fts_flags = pFVar16->fts_flags | 1;\n          for (p_Var5 = sp->fts_child; p_Var5 != (_ftsent *)0x0; p_Var5 = p_Var5->fts_link) {\n            p_Var5->fts_accpath = p_Var5->fts_parent->fts_accpath;\n          }\n        }\n      }\n      pFVar16 = sp->fts_child;\n      sp->fts_child = (_ftsent *)0x0;\n    }\n    else {\nLAB_00117717:\n      do {\n        pFVar16 = pFVar13->fts_link;\n        if (pFVar16 == (FTSENT *)0x0) {\n          p_Var5 = pFVar13->fts_parent;\n          if (p_Var5->fts_dirp != (DIR *)0x0) {\n            sp->fts_cur = p_Var5;\n            sp->fts_path[p_Var5->fts_pathlen] = '\0';\n            pFVar16 = fts_build(sp,3);\n            if (pFVar16 != (FTSENT *)0x0) {\n              free(pFVar13);\n              goto LAB_00117587;\n            }\n            if ((sp->fts_options & 0x4000) != 0) {\n              return (FTSENT *)0x0;\n            }\n          }\n          pFVar16 = pFVar13->fts_parent;\n          sp->fts_cur = pFVar16;\n          free(pFVar13);\n          if (pFVar16->fts_level == -1) {\n            free(pFVar16);\n            piVar12 = __errno_location();\n            *piVar12 = 0;\n            sp->fts_cur = (_ftsent *)0x0;\n            return (FTSENT *)0x0;\n          }\n          if (pFVar16->fts_info == 0xb) {\n                    /* WARNING: Subroutine does not return */\n            abort();\n          }\n          sp->fts_path[pFVar16->fts_pathlen] = '\0';\n          if (pFVar16->fts_level == 0) {\n            iVar9 = restore_initial_cwd(sp);\n            if (iVar9 == 0) goto LAB_001177a7;\n            piVar12 = __errno_location();\n            pFVar16->fts_errno = *piVar12;\n            sp->fts_options = sp->fts_options | 0x4000;\nLAB_001179e4:\n            if (pFVar16->fts_info == 2) {\n              return (FTSENT *)0x0;\n            }\n          }\n          else {\n            if ((pFVar16->fts_flags & 2) == 0) {\n              if (((pFVar16->fts_flags & 1) == 0) &&\n                 (iVar9 = fts_safe_changedir(sp,pFVar16->fts_parent,-1,".."), iVar9 != 0)) {\n                piVar12 = __errno_location();\n                pFVar16->fts_errno = *piVar12;\n                sp->fts_options = sp->fts_options | 0x4000;\n                goto LAB_001179e4;\n              }\n            }\n            else {\n              if ((sp->fts_options & 4U) == 0) {\n                if ((sp->fts_options & 0x200U) == 0) {\n                  iVar9 = fchdir(pFVar16->fts_symfd);\n                  if (iVar9 != 0) {\n                    piVar12 = __errno_location();\n                    pFVar16->fts_errno = *piVar12;\n                    sp->fts_options = sp->fts_options | 0x4000;\n                  }\n                }\n                else {\n                  cwd_advance_fd(sp,pFVar16->fts_symfd,true);\n                }\n              }\n              close(pFVar16->fts_symfd);\n            }\nLAB_001177a7:\n            if (pFVar16->fts_info == 2) goto LAB_00117a88;\n          }\n          if (pFVar16->fts_errno == 0) {\n            pFVar16->fts_info = 6;\n            leave_dir(sp,pFVar16);\n          }\n          else {\n            pFVar16->fts_info = 7;\n          }\nLAB_00117a88:\n          if ((sp->fts_options & 0x4000U) != 0) {\n            return (FTSENT *)0x0;\n          }\n          return pFVar16;\n        }\n        sp->fts_cur = pFVar16;\n        free(pFVar13);\n        if (pFVar16->fts_level == 0) {\n          iVar9 = restore_initial_cwd(sp);\n          if (iVar9 != 0) {\n            sp->fts_options = sp->fts_options | 0x4000;\n            return (FTSENT *)0x0;\n          }\n          free_dir(sp);\n          pFVar16->fts_pathlen = pFVar16->fts_namelen;\n          pFVar13 = pFVar16 + 1;\n          memmove(sp->fts_path,pFVar13,pFVar16->fts_namelen + 1);\n          pFVar14 = (FTSENT *)strrchr((char *)pFVar13,0x2f);\n          if ((pFVar14 == (FTSENT *)0x0) ||\n             ((pFVar13 == pFVar14 && (*(char *)((long)&pFVar14->fts_cycle + 1) == '\0'))))\n          goto LAB_0011784f;\n          pcVar4 = (char *)((long)&pFVar14->fts_cycle + 1);\n          uVar15 = 0xffffffffffffffff;\n          pcVar17 = pcVar4;\n          goto code_r0x00117837;\n        }\n        pFVar13 = pFVar16;\n      } while (pFVar16->fts_instr == 4);\n      if (pFVar16->fts_instr == 2) {\n        uVar8 = fts_stat(sp,pFVar16,true);\n        pFVar16->fts_info = uVar8;\n        if ((uVar8 == 1) && ((sp->fts_options & 4) == 0)) {\n          iVar9 = diropen(sp,".");\n          pFVar16->fts_symfd = iVar9;\n          if (iVar9 < 0) {\n            piVar12 = __errno_location();\n            pFVar16->fts_errno = *piVar12;\n            pFVar16->fts_info = 7;\n          }\n          else {\n            pFVar16->fts_flags = pFVar16->fts_flags | 2;\n          }\n        }\n        pFVar16->fts_instr = 3;\n      }\n    }\nLAB_00117587:\n    sVar3 = pFVar16->fts_parent->fts_pathlen;\n    sVar11 = sVar3 - 1;\n    if (pFVar16->fts_parent->fts_path[sVar3 - 1] != '/') {\n      sVar11 = sVar3;\n    }\n    pcVar4 = sp->fts_path;\n    pcVar4[sVar11] = '/';\n    memmove(pcVar4 + sVar11 + 1,pFVar16 + 1,pFVar16->fts_namelen + 1);\n  }\n  goto LAB_001175c0;\n  while( true ) {\n    uVar15 = uVar15 - 1;\n    cVar1 = *pcVar17;\n    pcVar17 = pcVar17 + (ulong)bVar18 * -2 + 1;\n    if (cVar1 == '\0') break;\ncode_r0x00117837:\n    if (uVar15 == 0) break;\n  }\n  memmove(pFVar13,pcVar4,~uVar15);\n  pFVar16->fts_namelen = ~uVar15 - 1;\nLAB_0011784f:\n  pcVar4 = sp->fts_path;\n  pFVar16->fts_path = pcVar4;\n  pFVar16->fts_accpath = pcVar4;\n  setup_dir(sp);\nLAB_001175c0:\n  sp->fts_cur = pFVar16;\n  if (pFVar16->fts_info == 0xb) {\n    lVar6 = pFVar16->fts_statp[0].st_size;\n    if (lVar6 != 2) {\n      if (lVar6 == 1) {\n        return pFVar16;\n      }\n                    /* WARNING: Subroutine does not return */\n      abort();\n    }\n    pFVar13 = pFVar16->fts_parent;\n    if (((pFVar13->fts_n_dirs_remaining == 0) && ((sp->fts_options & 0x18U) == 0x18)) &&\n       (lVar10 = leaf_optimization(pFVar13,sp->fts_cwd_fd), lVar10 == NOSTAT_LEAF_OPTIMIZATION))\n    goto LAB_001175cf;\n    uVar8 = fts_stat(sp,pFVar16,false);\n    pFVar16->fts_info = uVar8;\n    if ((pFVar16->fts_statp[0].st_mode & 0xf000) != 0x4000) goto LAB_001175cf;\n    if (pFVar16->fts_level != 0) {\n      uVar15 = pFVar13->fts_n_dirs_remaining - 1;\n      if (0xfffffffffffffffd < uVar15) {\n        if (uVar8 != 1) {\n          return pFVar16;\n        }\n        goto LAB_001175ea;\n      }\n      pFVar13->fts_n_dirs_remaining = uVar15;\n      goto LAB_001175cf;\n    }\n    if (uVar8 != 1) {\n      return pFVar16;\n    }\n  }\n  else {\nLAB_001175cf:\n    if (pFVar16->fts_info != 1) {\n      return pFVar16;\n    }\n    if (pFVar16->fts_level != 0) goto LAB_001175ea;\n  }\n  sp->fts_dev = pFVar16->fts_statp[0].st_dev;\nLAB_001175ea:\n  _Var7 = enter_dir(sp,pFVar16);\n  if (!_Var7) {\n    piVar12 = __errno_location();\n    *piVar12 = 0xc;\n    pFVar16 = (FTSENT *)0x0;\n  }\n  return pFVar16;\n}" { (declaration "char cVar1;" primitive_type identifier ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "size_t sVar3;" primitive_type identifier ;) (declaration "char *pcVar4;" primitive_type (pointer_declarator "*pcVar4" * identifier) ;) (declaration "_ftsent *p_Var5;" type_identifier (pointer_declarator "*p_Var5" * identifier) ;) (declaration "long lVar6;" (sized_type_specifier "long" long) identifier ;) (declaration "_Bool _Var7;" type_identifier identifier ;) (declaration "ushort uVar8;" type_identifier identifier ;) (declaration "int iVar9;" primitive_type identifier ;) (declaration "leaf_optimization lVar10;" type_identifier identifier ;) (declaration "size_t sVar11;" primitive_type identifier ;) (declaration "int *piVar12;" primitive_type (pointer_declarator "*piVar12" * identifier) ;) (declaration "FTSENT *pFVar13;" type_identifier (pointer_declarator "*pFVar13" * identifier) ;) (declaration "FTSENT *pFVar14;" type_identifier (pointer_declarator "*pFVar14" * identifier) ;) (declaration "ulong uVar15;" type_identifier identifier ;) (declaration "FTSENT *pFVar16;" type_identifier (pointer_declarator "*pFVar16" * identifier) ;) (declaration "char *pcVar17;" primitive_type (pointer_declarator "*pcVar17" * identifier) ;) (declaration "byte bVar18;" type_identifier identifier ;) (expression_statement "bVar18 = 0;" (assignment_expression "bVar18 = 0" identifier = number_literal) ;) (expression_statement "pFVar16 = sp->fts_cur;" (assignment_expression "pFVar16 = sp->fts_cur" identifier = (field_expression "sp->fts_cur" identifier -> field_identifier)) ;) (if_statement "if (pFVar16 == (FTSENT *)0x0) {\n    return (FTSENT *)0x0;\n  }" if (parenthesized_expression "(pFVar16 == (FTSENT *)0x0)" ( (binary_expression "pFVar16 == (FTSENT *)0x0" identifier == (cast_expression "(FTSENT *)0x0" ( (type_descriptor "FTSENT *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    return (FTSENT *)0x0;\n  }" { (return_statement "return (FTSENT *)0x0;" return (cast_expression "(FTSENT *)0x0" ( (type_descriptor "FTSENT *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (if_statement "if ((sp->fts_options & 0x4000) != 0) {\n    return (FTSENT *)0x0;\n  }" if (parenthesized_expression "((sp->fts_options & 0x4000) != 0)" ( (binary_expression "(sp->fts_options & 0x4000) != 0" (parenthesized_expression "(sp->fts_options & 0x4000)" ( (binary_expression "sp->fts_options & 0x4000" (field_expression "sp->fts_options" identifier -> field_identifier) & number_literal) )) != number_literal) )) (compound_statement "{\n    return (FTSENT *)0x0;\n  }" { (return_statement "return (FTSENT *)0x0;" return (cast_expression "(FTSENT *)0x0" ( (type_descriptor "FTSENT *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (expression_statement "uVar8 = pFVar16->fts_instr;" (assignment_expression "uVar8 = pFVar16->fts_instr" identifier = (field_expression "pFVar16->fts_instr" identifier -> field_identifier)) ;) (expression_statement "pFVar16->fts_instr = 3;" (assignment_expression "pFVar16->fts_instr = 3" (field_expression "pFVar16->fts_instr" identifier -> field_identifier) = number_literal) ;) (if_statement "if (uVar8 == 1) {\n    uVar8 = fts_stat(sp,pFVar16,false);\n    pFVar16->fts_info = uVar8;\n    return pFVar16;\n  }" if (parenthesized_expression "(uVar8 == 1)" ( (binary_expression "uVar8 == 1" identifier == number_literal) )) (compound_statement "{\n    uVar8 = fts_stat(sp,pFVar16,false);\n    pFVar16->fts_info = uVar8;\n    return pFVar16;\n  }" { (expression_statement "uVar8 = fts_stat(sp,pFVar16,false);" (assignment_expression "uVar8 = fts_stat(sp,pFVar16,false)" identifier = (call_expression "fts_stat(sp,pFVar16,false)" identifier (argument_list "(sp,pFVar16,false)" ( identifier , identifier , false )))) ;) (expression_statement "pFVar16->fts_info = uVar8;" (assignment_expression "pFVar16->fts_info = uVar8" (field_expression "pFVar16->fts_info" identifier -> field_identifier) = identifier) ;) (return_statement "return pFVar16;" return identifier ;) })) (expression_statement "pFVar13 = pFVar16;" (assignment_expression "pFVar13 = pFVar16" identifier = identifier) ;) (if_statement "if (uVar8 == 2) {\n    if (1 < (ushort)(pFVar16->fts_info - 0xc)) {\n      if (pFVar16->fts_info != 1) goto LAB_00117717;\n      goto LAB_00117457;\n    }\n    uVar8 = fts_stat(sp,pFVar16,true);\n    pFVar16->fts_info = uVar8;\n    if ((uVar8 == 1) && ((sp->fts_options & 4) == 0)) {\n      iVar9 = diropen(sp,".");\n      pFVar16->fts_symfd = iVar9;\n      if (iVar9 < 0) {\n        piVar12 = __errno_location();\n        pFVar16->fts_errno = *piVar12;\n        pFVar16->fts_info = 7;\n      }\n      else {\n        pFVar16->fts_flags = pFVar16->fts_flags | 2;\n      }\n    }\n  }\n  else {\n    if (pFVar16->fts_info == 1) {\n      if (uVar8 == 4) goto LAB_00117473;\nLAB_00117457:\n      uVar2 = sp->fts_options;\n      if (((uVar2 & 0x40) != 0) && (pFVar16->fts_statp[0].st_dev != sp->fts_dev)) {\nLAB_00117473:\n        if ((pFVar16->fts_flags & 2) != 0) {\n          close(pFVar16->fts_symfd);\n        }\n        if (sp->fts_child != (FTSENT *)0x0) {\n          fts_lfree(sp->fts_child);\n          sp->fts_child = (_ftsent *)0x0;\n        }\n        pFVar16->fts_info = 6;\n        leave_dir(sp,pFVar16);\n        return pFVar16;\n      }\n      if (sp->fts_child == (FTSENT *)0x0) {\nLAB_00117628:\n        pFVar13 = fts_build(sp,3);\n        sp->fts_child = pFVar13;\n        if (pFVar13 == (FTSENT *)0x0) {\n          if ((sp->fts_options & 0x4000) == 0) {\n            if ((pFVar16->fts_errno != 0) && (pFVar16->fts_info != 4)) {\n              pFVar16->fts_info = 7;\n            }\n            leave_dir(sp,pFVar16);\n            return pFVar16;\n          }\n          return (FTSENT *)0x0;\n        }\n      }\n      else {\n        if ((uVar2 & 0x2000) != 0) {\n          sp->fts_options = uVar2 & 0xffffdfff;\n          fts_lfree(sp->fts_child);\n          sp->fts_child = (_ftsent *)0x0;\n          goto LAB_00117628;\n        }\n        iVar9 = fts_safe_changedir(sp,pFVar16,-1,pFVar16->fts_accpath);\n        if (iVar9 != 0) {\n          piVar12 = __errno_location();\n          pFVar16->fts_errno = *piVar12;\n          pFVar16->fts_flags = pFVar16->fts_flags | 1;\n          for (p_Var5 = sp->fts_child; p_Var5 != (_ftsent *)0x0; p_Var5 = p_Var5->fts_link) {\n            p_Var5->fts_accpath = p_Var5->fts_parent->fts_accpath;\n          }\n        }\n      }\n      pFVar16 = sp->fts_child;\n      sp->fts_child = (_ftsent *)0x0;\n    }\n    else {\nLAB_00117717:\n      do {\n        pFVar16 = pFVar13->fts_link;\n        if (pFVar16 == (FTSENT *)0x0) {\n          p_Var5 = pFVar13->fts_parent;\n          if (p_Var5->fts_dirp != (DIR *)0x0) {\n            sp->fts_cur = p_Var5;\n            sp->fts_path[p_Var5->fts_pathlen] = '\0';\n            pFVar16 = fts_build(sp,3);\n            if (pFVar16 != (FTSENT *)0x0) {\n              free(pFVar13);\n              goto LAB_00117587;\n            }\n            if ((sp->fts_options & 0x4000) != 0) {\n              return (FTSENT *)0x0;\n            }\n          }\n          pFVar16 = pFVar13->fts_parent;\n          sp->fts_cur = pFVar16;\n          free(pFVar13);\n          if (pFVar16->fts_level == -1) {\n            free(pFVar16);\n            piVar12 = __errno_location();\n            *piVar12 = 0;\n            sp->fts_cur = (_ftsent *)0x0;\n            return (FTSENT *)0x0;\n          }\n          if (pFVar16->fts_info == 0xb) {\n                    /* WARNING: Subroutine does not return */\n            abort();\n          }\n          sp->fts_path[pFVar16->fts_pathlen] = '\0';\n          if (pFVar16->fts_level == 0) {\n            iVar9 = restore_initial_cwd(sp);\n            if (iVar9 == 0) goto LAB_001177a7;\n            piVar12 = __errno_location();\n            pFVar16->fts_errno = *piVar12;\n            sp->fts_options = sp->fts_options | 0x4000;\nLAB_001179e4:\n            if (pFVar16->fts_info == 2) {\n              return (FTSENT *)0x0;\n            }\n          }\n          else {\n            if ((pFVar16->fts_flags & 2) == 0) {\n              if (((pFVar16->fts_flags & 1) == 0) &&\n                 (iVar9 = fts_safe_changedir(sp,pFVar16->fts_parent,-1,".."), iVar9 != 0)) {\n                piVar12 = __errno_location();\n                pFVar16->fts_errno = *piVar12;\n                sp->fts_options = sp->fts_options | 0x4000;\n                goto LAB_001179e4;\n              }\n            }\n            else {\n              if ((sp->fts_options & 4U) == 0) {\n                if ((sp->fts_options & 0x200U) == 0) {\n                  iVar9 = fchdir(pFVar16->fts_symfd);\n                  if (iVar9 != 0) {\n                    piVar12 = __errno_location();\n                    pFVar16->fts_errno = *piVar12;\n                    sp->fts_options = sp->fts_options | 0x4000;\n                  }\n                }\n                else {\n                  cwd_advance_fd(sp,pFVar16->fts_symfd,true);\n                }\n              }\n              close(pFVar16->fts_symfd);\n            }\nLAB_001177a7:\n            if (pFVar16->fts_info == 2) goto LAB_00117a88;\n          }\n          if (pFVar16->fts_errno == 0) {\n            pFVar16->fts_info = 6;\n            leave_dir(sp,pFVar16);\n          }\n          else {\n            pFVar16->fts_info = 7;\n          }\nLAB_00117a88:\n          if ((sp->fts_options & 0x4000U) != 0) {\n            return (FTSENT *)0x0;\n          }\n          return pFVar16;\n        }\n        sp->fts_cur = pFVar16;\n        free(pFVar13);\n        if (pFVar16->fts_level == 0) {\n          iVar9 = restore_initial_cwd(sp);\n          if (iVar9 != 0) {\n            sp->fts_options = sp->fts_options | 0x4000;\n            return (FTSENT *)0x0;\n          }\n          free_dir(sp);\n          pFVar16->fts_pathlen = pFVar16->fts_namelen;\n          pFVar13 = pFVar16 + 1;\n          memmove(sp->fts_path,pFVar13,pFVar16->fts_namelen + 1);\n          pFVar14 = (FTSENT *)strrchr((char *)pFVar13,0x2f);\n          if ((pFVar14 == (FTSENT *)0x0) ||\n             ((pFVar13 == pFVar14 && (*(char *)((long)&pFVar14->fts_cycle + 1) == '\0'))))\n          goto LAB_0011784f;\n          pcVar4 = (char *)((long)&pFVar14->fts_cycle + 1);\n          uVar15 = 0xffffffffffffffff;\n          pcVar17 = pcVar4;\n          goto code_r0x00117837;\n        }\n        pFVar13 = pFVar16;\n      } while (pFVar16->fts_instr == 4);\n      if (pFVar16->fts_instr == 2) {\n        uVar8 = fts_stat(sp,pFVar16,true);\n        pFVar16->fts_info = uVar8;\n        if ((uVar8 == 1) && ((sp->fts_options & 4) == 0)) {\n          iVar9 = diropen(sp,".");\n          pFVar16->fts_symfd = iVar9;\n          if (iVar9 < 0) {\n            piVar12 = __errno_location();\n            pFVar16->fts_errno = *piVar12;\n            pFVar16->fts_info = 7;\n          }\n          else {\n            pFVar16->fts_flags = pFVar16->fts_flags | 2;\n          }\n        }\n        pFVar16->fts_instr = 3;\n      }\n    }\nLAB_00117587:\n    sVar3 = pFVar16->fts_parent->fts_pathlen;\n    sVar11 = sVar3 - 1;\n    if (pFVar16->fts_parent->fts_path[sVar3 - 1] != '/') {\n      sVar11 = sVar3;\n    }\n    pcVar4 = sp->fts_path;\n    pcVar4[sVar11] = '/';\n    memmove(pcVar4 + sVar11 + 1,pFVar16 + 1,pFVar16->fts_namelen + 1);\n  }" if (parenthesized_expression "(uVar8 == 2)" ( (binary_expression "uVar8 == 2" identifier == number_literal) )) (compound_statement "{\n    if (1 < (ushort)(pFVar16->fts_info - 0xc)) {\n      if (pFVar16->fts_info != 1) goto LAB_00117717;\n      goto LAB_00117457;\n    }\n    uVar8 = fts_stat(sp,pFVar16,true);\n    pFVar16->fts_info = uVar8;\n    if ((uVar8 == 1) && ((sp->fts_options & 4) == 0)) {\n      iVar9 = diropen(sp,".");\n      pFVar16->fts_symfd = iVar9;\n      if (iVar9 < 0) {\n        piVar12 = __errno_location();\n        pFVar16->fts_errno = *piVar12;\n        pFVar16->fts_info = 7;\n      }\n      else {\n        pFVar16->fts_flags = pFVar16->fts_flags | 2;\n      }\n    }\n  }" { (if_statement "if (1 < (ushort)(pFVar16->fts_info - 0xc)) {\n      if (pFVar16->fts_info != 1) goto LAB_00117717;\n      goto LAB_00117457;\n    }" if (parenthesized_expression "(1 < (ushort)(pFVar16->fts_info - 0xc))" ( (binary_expression "1 < (ushort)(pFVar16->fts_info - 0xc)" number_literal < (call_expression "(ushort)(pFVar16->fts_info - 0xc)" (parenthesized_expression "(ushort)" ( identifier )) (argument_list "(pFVar16->fts_info - 0xc)" ( (binary_expression "pFVar16->fts_info - 0xc" (field_expression "pFVar16->fts_info" identifier -> field_identifier) - number_literal) )))) )) (compound_statement "{\n      if (pFVar16->fts_info != 1) goto LAB_00117717;\n      goto LAB_00117457;\n    }" { (if_statement "if (pFVar16->fts_info != 1) goto LAB_00117717;" if (parenthesized_expression "(pFVar16->fts_info != 1)" ( (binary_expression "pFVar16->fts_info != 1" (field_expression "pFVar16->fts_info" identifier -> field_identifier) != number_literal) )) (goto_statement "goto LAB_00117717;" goto statement_identifier ;)) (goto_statement "goto LAB_00117457;" goto statement_identifier ;) })) (expression_statement "uVar8 = fts_stat(sp,pFVar16,true);" (assignment_expression "uVar8 = fts_stat(sp,pFVar16,true)" identifier = (call_expression "fts_stat(sp,pFVar16,true)" identifier (argument_list "(sp,pFVar16,true)" ( identifier , identifier , true )))) ;) (expression_statement "pFVar16->fts_info = uVar8;" (assignment_expression "pFVar16->fts_info = uVar8" (field_expression "pFVar16->fts_info" identifier -> field_identifier) = identifier) ;) (if_statement "if ((uVar8 == 1) && ((sp->fts_options & 4) == 0)) {\n      iVar9 = diropen(sp,".");\n      pFVar16->fts_symfd = iVar9;\n      if (iVar9 < 0) {\n        piVar12 = __errno_location();\n        pFVar16->fts_errno = *piVar12;\n        pFVar16->fts_info = 7;\n      }\n      else {\n        pFVar16->fts_flags = pFVar16->fts_flags | 2;\n      }\n    }" if (parenthesized_expression "((uVar8 == 1) && ((sp->fts_options & 4) == 0))" ( (binary_expression "(uVar8 == 1) && ((sp->fts_options & 4) == 0)" (parenthesized_expression "(uVar8 == 1)" ( (binary_expression "uVar8 == 1" identifier == number_literal) )) && (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      iVar9 = diropen(sp,".");\n      pFVar16->fts_symfd = iVar9;\n      if (iVar9 < 0) {\n        piVar12 = __errno_location();\n        pFVar16->fts_errno = *piVar12;\n        pFVar16->fts_info = 7;\n      }\n      else {\n        pFVar16->fts_flags = pFVar16->fts_flags | 2;\n      }\n    }" { (expression_statement "iVar9 = diropen(sp,".");" (assignment_expression "iVar9 = diropen(sp,".")" identifier = (call_expression "diropen(sp,".")" identifier (argument_list "(sp,".")" ( identifier , (string_literal ""."" " string_content ") )))) ;) (expression_statement "pFVar16->fts_symfd = iVar9;" (assignment_expression "pFVar16->fts_symfd = iVar9" (field_expression "pFVar16->fts_symfd" identifier -> field_identifier) = identifier) ;) (if_statement "if (iVar9 < 0) {\n        piVar12 = __errno_location();\n        pFVar16->fts_errno = *piVar12;\n        pFVar16->fts_info = 7;\n      }\n      else {\n        pFVar16->fts_flags = pFVar16->fts_flags | 2;\n      }" if (parenthesized_expression "(iVar9 < 0)" ( (binary_expression "iVar9 < 0" identifier < number_literal) )) (compound_statement "{\n        piVar12 = __errno_location();\n        pFVar16->fts_errno = *piVar12;\n        pFVar16->fts_info = 7;\n      }" { (expression_statement "piVar12 = __errno_location();" (assignment_expression "piVar12 = __errno_location()" identifier = (call_expression "__errno_location()" identifier (argument_list "()" ( )))) ;) (expression_statement "pFVar16->fts_errno = *piVar12;" (assignment_expression "pFVar16->fts_errno = *piVar12" (field_expression "pFVar16->fts_errno" identifier -> field_identifier) = (pointer_expression "*piVar12" * identifier)) ;) (expression_statement "pFVar16->fts_info = 7;" (assignment_expression "pFVar16->fts_info = 7" (field_expression "pFVar16->fts_info" identifier -> field_identifier) = number_literal) ;) }) (else_clause "else {\n        pFVar16->fts_flags = pFVar16->fts_flags | 2;\n      }" else (compound_statement "{\n        pFVar16->fts_flags = pFVar16->fts_flags | 2;\n      }" { (expression_statement "pFVar16->fts_flags = pFVar16->fts_flags | 2;" (assignment_expression "pFVar16->fts_flags = pFVar16->fts_flags | 2" (field_expression "pFVar16->fts_flags" identifier -> field_identifier) = (binary_expression "pFVar16->fts_flags | 2" (field_expression "pFVar16->fts_flags" identifier -> field_identifier) | number_literal)) ;) }))) })) }) (else_clause "else {\n    if (pFVar16->fts_info == 1) {\n      if (uVar8 == 4) goto LAB_00117473;\nLAB_00117457:\n      uVar2 = sp->fts_options;\n      if (((uVar2 & 0x40) != 0) && (pFVar16->fts_statp[0].st_dev != sp->fts_dev)) {\nLAB_00117473:\n        if ((pFVar16->fts_flags & 2) != 0) {\n          close(pFVar16->fts_symfd);\n        }\n        if (sp->fts_child != (FTSENT *)0x0) {\n          fts_lfree(sp->fts_child);\n          sp->fts_child = (_ftsent *)0x0;\n        }\n        pFVar16->fts_info = 6;\n        leave_dir(sp,pFVar16);\n        return pFVar16;\n      }\n      if (sp->fts_child == (FTSENT *)0x0) {\nLAB_00117628:\n        pFVar13 = fts_build(sp,3);\n        sp->fts_child = pFVar13;\n        if (pFVar13 == (FTSENT *)0x0) {\n          if ((sp->fts_options & 0x4000) == 0) {\n            if ((pFVar16->fts_errno != 0) && (pFVar16->fts_info != 4)) {\n              pFVar16->fts_info = 7;\n            }\n            leave_dir(sp,pFVar16);\n            return pFVar16;\n          }\n          return (FTSENT *)0x0;\n        }\n      }\n      else {\n        if ((uVar2 & 0x2000) != 0) {\n          sp->fts_options = uVar2 & 0xffffdfff;\n          fts_lfree(sp->fts_child);\n          sp->fts_child = (_ftsent *)0x0;\n          goto LAB_00117628;\n        }\n        iVar9 = fts_safe_changedir(sp,pFVar16,-1,pFVar16->fts_accpath);\n        if (iVar9 != 0) {\n          piVar12 = __errno_location();\n          pFVar16->fts_errno = *piVar12;\n          pFVar16->fts_flags = pFVar16->fts_flags | 1;\n          for (p_Var5 = sp->fts_child; p_Var5 != (_ftsent *)0x0; p_Var5 = p_Var5->fts_link) {\n            p_Var5->fts_accpath = p_Var5->fts_parent->fts_accpath;\n          }\n        }\n      }\n      pFVar16 = sp->fts_child;\n      sp->fts_child = (_ftsent *)0x0;\n    }\n    else {\nLAB_00117717:\n      do {\n        pFVar16 = pFVar13->fts_link;\n        if (pFVar16 == (FTSENT *)0x0) {\n          p_Var5 = pFVar13->fts_parent;\n          if (p_Var5->fts_dirp != (DIR *)0x0) {\n            sp->fts_cur = p_Var5;\n            sp->fts_path[p_Var5->fts_pathlen] = '\0';\n            pFVar16 = fts_build(sp,3);\n            if (pFVar16 != (FTSENT *)0x0) {\n              free(pFVar13);\n              goto LAB_00117587;\n            }\n            if ((sp->fts_options & 0x4000) != 0) {\n              return (FTSENT *)0x0;\n            }\n          }\n          pFVar16 = pFVar13->fts_parent;\n          sp->fts_cur = pFVar16;\n          free(pFVar13);\n          if (pFVar16->fts_level == -1) {\n            free(pFVar16);\n            piVar12 = __errno_location();\n            *piVar12 = 0;\n            sp->fts_cur = (_ftsent *)0x0;\n            return (FTSENT *)0x0;\n          }\n          if (pFVar16->fts_info == 0xb) {\n                    /* WARNING: Subroutine does not return */\n            abort();\n          }\n          sp->fts_path[pFVar16->fts_pathlen] = '\0';\n          if (pFVar16->fts_level == 0) {\n            iVar9 = restore_initial_cwd(sp);\n            if (iVar9 == 0) goto LAB_001177a7;\n            piVar12 = __errno_location();\n            pFVar16->fts_errno = *piVar12;\n            sp->fts_options = sp->fts_options | 0x4000;\nLAB_001179e4:\n            if (pFVar16->fts_info == 2) {\n              return (FTSENT *)0x0;\n            }\n          }\n          else {\n            if ((pFVar16->fts_flags & 2) == 0) {\n              if (((pFVar16->fts_flags & 1) == 0) &&\n                 (iVar9 = fts_safe_changedir(sp,pFVar16->fts_parent,-1,".."), iVar9 != 0)) {\n                piVar12 = __errno_location();\n                pFVar16->fts_errno = *piVar12;\n                sp->fts_options = sp->fts_options | 0x4000;\n                goto LAB_001179e4;\n              }\n            }\n            else {\n              if ((sp->fts_options & 4U) == 0) {\n                if ((sp->fts_options & 0x200U) == 0) {\n                  iVar9 = fchdir(pFVar16->fts_symfd);\n                  if (iVar9 != 0) {\n                    piVar12 = __errno_location();\n                    pFVar16->fts_errno = *piVar12;\n                    sp->fts_options = sp->fts_options | 0x4000;\n                  }\n                }\n                else {\n                  cwd_advance_fd(sp,pFVar16->fts_symfd,true);\n                }\n              }\n              close(pFVar16->fts_symfd);\n            }\nLAB_001177a7:\n            if (pFVar16->fts_info == 2) goto LAB_00117a88;\n          }\n          if (pFVar16->fts_errno == 0) {\n            pFVar16->fts_info = 6;\n            leave_dir(sp,pFVar16);\n          }\n          else {\n            pFVar16->fts_info = 7;\n          }\nLAB_00117a88:\n          if ((sp->fts_options & 0x4000U) != 0) {\n            return (FTSENT *)0x0;\n          }\n          return pFVar16;\n        }\n        sp->fts_cur = pFVar16;\n        free(pFVar13);\n        if (pFVar16->fts_level == 0) {\n          iVar9 = restore_initial_cwd(sp);\n          if (iVar9 != 0) {\n            sp->fts_options = sp->fts_options | 0x4000;\n            return (FTSENT *)0x0;\n          }\n          free_dir(sp);\n          pFVar16->fts_pathlen = pFVar16->fts_namelen;\n          pFVar13 = pFVar16 + 1;\n          memmove(sp->fts_path,pFVar13,pFVar16->fts_namelen + 1);\n          pFVar14 = (FTSENT *)strrchr((char *)pFVar13,0x2f);\n          if ((pFVar14 == (FTSENT *)0x0) ||\n             ((pFVar13 == pFVar14 && (*(char *)((long)&pFVar14->fts_cycle + 1) == '\0'))))\n          goto LAB_0011784f;\n          pcVar4 = (char *)((long)&pFVar14->fts_cycle + 1);\n          uVar15 = 0xffffffffffffffff;\n          pcVar17 = pcVar4;\n          goto code_r0x00117837;\n        }\n        pFVar13 = pFVar16;\n      } while (pFVar16->fts_instr == 4);\n      if (pFVar16->fts_instr == 2) {\n        uVar8 = fts_stat(sp,pFVar16,true);\n        pFVar16->fts_info = uVar8;\n        if ((uVar8 == 1) && ((sp->fts_options & 4) == 0)) {\n          iVar9 = diropen(sp,".");\n          pFVar16->fts_symfd = iVar9;\n          if (iVar9 < 0) {\n            piVar12 = __errno_location();\n            pFVar16->fts_errno = *piVar12;\n            pFVar16->fts_info = 7;\n          }\n          else {\n            pFVar16->fts_flags = pFVar16->fts_flags | 2;\n          }\n        }\n        pFVar16->fts_instr = 3;\n      }\n    }\nLAB_00117587:\n    sVar3 = pFVar16->fts_parent->fts_pathlen;\n    sVar11 = sVar3 - 1;\n    if (pFVar16->fts_parent->fts_path[sVar3 - 1] != '/') {\n      sVar11 = sVar3;\n    }\n    pcVar4 = sp->fts_path;\n    pcVar4[sVar11] = '/';\n    memmove(pcVar4 + sVar11 + 1,pFVar16 + 1,pFVar16->fts_namelen + 1);\n  }" else (compound_statement "{\n    if (pFVar16->fts_info == 1) {\n      if (uVar8 == 4) goto LAB_00117473;\nLAB_00117457:\n      uVar2 = sp->fts_options;\n      if (((uVar2 & 0x40) != 0) && (pFVar16->fts_statp[0].st_dev != sp->fts_dev)) {\nLAB_00117473:\n        if ((pFVar16->fts_flags & 2) != 0) {\n          close(pFVar16->fts_symfd);\n        }\n        if (sp->fts_child != (FTSENT *)0x0) {\n          fts_lfree(sp->fts_child);\n          sp->fts_child = (_ftsent *)0x0;\n        }\n        pFVar16->fts_info = 6;\n        leave_dir(sp,pFVar16);\n        return pFVar16;\n      }\n      if (sp->fts_child == (FTSENT *)0x0) {\nLAB_00117628:\n        pFVar13 = fts_build(sp,3);\n        sp->fts_child = pFVar13;\n        if (pFVar13 == (FTSENT *)0x0) {\n          if ((sp->fts_options & 0x4000) == 0) {\n            if ((pFVar16->fts_errno != 0) && (pFVar16->fts_info != 4)) {\n              pFVar16->fts_info = 7;\n            }\n            leave_dir(sp,pFVar16);\n            return pFVar16;\n          }\n          return (FTSENT *)0x0;\n        }\n      }\n      else {\n        if ((uVar2 & 0x2000) != 0) {\n          sp->fts_options = uVar2 & 0xffffdfff;\n          fts_lfree(sp->fts_child);\n          sp->fts_child = (_ftsent *)0x0;\n          goto LAB_00117628;\n        }\n        iVar9 = fts_safe_changedir(sp,pFVar16,-1,pFVar16->fts_accpath);\n        if (iVar9 != 0) {\n          piVar12 = __errno_location();\n          pFVar16->fts_errno = *piVar12;\n          pFVar16->fts_flags = pFVar16->fts_flags | 1;\n          for (p_Var5 = sp->fts_child; p_Var5 != (_ftsent *)0x0; p_Var5 = p_Var5->fts_link) {\n            p_Var5->fts_accpath = p_Var5->fts_parent->fts_accpath;\n          }\n        }\n      }\n      pFVar16 = sp->fts_child;\n      sp->fts_child = (_ftsent *)0x0;\n    }\n    else {\nLAB_00117717:\n      do {\n        pFVar16 = pFVar13->fts_link;\n        if (pFVar16 == (FTSENT *)0x0) {\n          p_Var5 = pFVar13->fts_parent;\n          if (p_Var5->fts_dirp != (DIR *)0x0) {\n            sp->fts_cur = p_Var5;\n            sp->fts_path[p_Var5->fts_pathlen] = '\0';\n            pFVar16 = fts_build(sp,3);\n            if (pFVar16 != (FTSENT *)0x0) {\n              free(pFVar13);\n              goto LAB_00117587;\n            }\n            if ((sp->fts_options & 0x4000) != 0) {\n              return (FTSENT *)0x0;\n            }\n          }\n          pFVar16 = pFVar13->fts_parent;\n          sp->fts_cur = pFVar16;\n          free(pFVar13);\n          if (pFVar16->fts_level == -1) {\n            free(pFVar16);\n            piVar12 = __errno_location();\n            *piVar12 = 0;\n            sp->fts_cur = (_ftsent *)0x0;\n            return (FTSENT *)0x0;\n          }\n          if (pFVar16->fts_info == 0xb) {\n                    /* WARNING: Subroutine does not return */\n            abort();\n          }\n          sp->fts_path[pFVar16->fts_pathlen] = '\0';\n          if (pFVar16->fts_level == 0) {\n            iVar9 = restore_initial_cwd(sp);\n            if (iVar9 == 0) goto LAB_001177a7;\n            piVar12 = __errno_location();\n            pFVar16->fts_errno = *piVar12;\n            sp->fts_options = sp->fts_options | 0x4000;\nLAB_001179e4:\n            if (pFVar16->fts_info == 2) {\n              return (FTSENT *)0x0;\n            }\n          }\n          else {\n            if ((pFVar16->fts_flags & 2) == 0) {\n              if (((pFVar16->fts_flags & 1) == 0) &&\n                 (iVar9 = fts_safe_changedir(sp,pFVar16->fts_parent,-1,".."), iVar9 != 0)) {\n                piVar12 = __errno_location();\n                pFVar16->fts_errno = *piVar12;\n                sp->fts_options = sp->fts_options | 0x4000;\n                goto LAB_001179e4;\n              }\n            }\n            else {\n              if ((sp->fts_options & 4U) == 0) {\n                if ((sp->fts_options & 0x200U) == 0) {\n                  iVar9 = fchdir(pFVar16->fts_symfd);\n                  if (iVar9 != 0) {\n                    piVar12 = __errno_location();\n                    pFVar16->fts_errno = *piVar12;\n                    sp->fts_options = sp->fts_options | 0x4000;\n                  }\n                }\n                else {\n                  cwd_advance_fd(sp,pFVar16->fts_symfd,true);\n                }\n              }\n              close(pFVar16->fts_symfd);\n            }\nLAB_001177a7:\n            if (pFVar16->fts_info == 2) goto LAB_00117a88;\n          }\n          if (pFVar16->fts_errno == 0) {\n            pFVar16->fts_info = 6;\n            leave_dir(sp,pFVar16);\n          }\n          else {\n            pFVar16->fts_info = 7;\n          }\nLAB_00117a88:\n          if ((sp->fts_options & 0x4000U) != 0) {\n            return (FTSENT *)0x0;\n          }\n          return pFVar16;\n        }\n        sp->fts_cur = pFVar16;\n        free(pFVar13);\n        if (pFVar16->fts_level == 0) {\n          iVar9 = restore_initial_cwd(sp);\n          if (iVar9 != 0) {\n            sp->fts_options = sp->fts_options | 0x4000;\n            return (FTSENT *)0x0;\n          }\n          free_dir(sp);\n          pFVar16->fts_pathlen = pFVar16->fts_namelen;\n          pFVar13 = pFVar16 + 1;\n          memmove(sp->fts_path,pFVar13,pFVar16->fts_namelen + 1);\n          pFVar14 = (FTSENT *)strrchr((char *)pFVar13,0x2f);\n          if ((pFVar14 == (FTSENT *)0x0) ||\n             ((pFVar13 == pFVar14 && (*(char *)((long)&pFVar14->fts_cycle + 1) == '\0'))))\n          goto LAB_0011784f;\n          pcVar4 = (char *)((long)&pFVar14->fts_cycle + 1);\n          uVar15 = 0xffffffffffffffff;\n          pcVar17 = pcVar4;\n          goto code_r0x00117837;\n        }\n        pFVar13 = pFVar16;\n      } while (pFVar16->fts_instr == 4);\n      if (pFVar16->fts_instr == 2) {\n        uVar8 = fts_stat(sp,pFVar16,true);\n        pFVar16->fts_info = uVar8;\n        if ((uVar8 == 1) && ((sp->fts_options & 4) == 0)) {\n          iVar9 = diropen(sp,".");\n          pFVar16->fts_symfd = iVar9;\n          if (iVar9 < 0) {\n            piVar12 = __errno_location();\n            pFVar16->fts_errno = *piVar12;\n            pFVar16->fts_info = 7;\n          }\n          else {\n            pFVar16->fts_flags = pFVar16->fts_flags | 2;\n          }\n        }\n        pFVar16->fts_instr = 3;\n      }\n    }\nLAB_00117587:\n    sVar3 = pFVar16->fts_parent->fts_pathlen;\n    sVar11 = sVar3 - 1;\n    if (pFVar16->fts_parent->fts_path[sVar3 - 1] != '/') {\n      sVar11 = sVar3;\n    }\n    pcVar4 = sp->fts_path;\n    pcVar4[sVar11] = '/';\n    memmove(pcVar4 + sVar11 + 1,pFVar16 + 1,pFVar16->fts_namelen + 1);\n  }" { (if_statement "if (pFVar16->fts_info == 1) {\n      if (uVar8 == 4) goto LAB_00117473;\nLAB_00117457:\n      uVar2 = sp->fts_options;\n      if (((uVar2 & 0x40) != 0) && (pFVar16->fts_statp[0].st_dev != sp->fts_dev)) {\nLAB_00117473:\n        if ((pFVar16->fts_flags & 2) != 0) {\n          close(pFVar16->fts_symfd);\n        }\n        if (sp->fts_child != (FTSENT *)0x0) {\n          fts_lfree(sp->fts_child);\n          sp->fts_child = (_ftsent *)0x0;\n        }\n        pFVar16->fts_info = 6;\n        leave_dir(sp,pFVar16);\n        return pFVar16;\n      }\n      if (sp->fts_child == (FTSENT *)0x0) {\nLAB_00117628:\n        pFVar13 = fts_build(sp,3);\n        sp->fts_child = pFVar13;\n        if (pFVar13 == (FTSENT *)0x0) {\n          if ((sp->fts_options & 0x4000) == 0) {\n            if ((pFVar16->fts_errno != 0) && (pFVar16->fts_info != 4)) {\n              pFVar16->fts_info = 7;\n            }\n            leave_dir(sp,pFVar16);\n            return pFVar16;\n          }\n          return (FTSENT *)0x0;\n        }\n      }\n      else {\n        if ((uVar2 & 0x2000) != 0) {\n          sp->fts_options = uVar2 & 0xffffdfff;\n          fts_lfree(sp->fts_child);\n          sp->fts_child = (_ftsent *)0x0;\n          goto LAB_00117628;\n        }\n        iVar9 = fts_safe_changedir(sp,pFVar16,-1,pFVar16->fts_accpath);\n        if (iVar9 != 0) {\n          piVar12 = __errno_location();\n          pFVar16->fts_errno = *piVar12;\n          pFVar16->fts_flags = pFVar16->fts_flags | 1;\n          for (p_Var5 = sp->fts_child; p_Var5 != (_ftsent *)0x0; p_Var5 = p_Var5->fts_link) {\n            p_Var5->fts_accpath = p_Var5->fts_parent->fts_accpath;\n          }\n        }\n      }\n      pFVar16 = sp->fts_child;\n      sp->fts_child = (_ftsent *)0x0;\n    }\n    else {\nLAB_00117717:\n      do {\n        pFVar16 = pFVar13->fts_link;\n        if (pFVar16 == (FTSENT *)0x0) {\n          p_Var5 = pFVar13->fts_parent;\n          if (p_Var5->fts_dirp != (DIR *)0x0) {\n            sp->fts_cur = p_Var5;\n            sp->fts_path[p_Var5->fts_pathlen] = '\0';\n            pFVar16 = fts_build(sp,3);\n            if (pFVar16 != (FTSENT *)0x0) {\n              free(pFVar13);\n              goto LAB_00117587;\n            }\n            if ((sp->fts_options & 0x4000) != 0) {\n              return (FTSENT *)0x0;\n            }\n          }\n          pFVar16 = pFVar13->fts_parent;\n          sp->fts_cur = pFVar16;\n          free(pFVar13);\n          if (pFVar16->fts_level == -1) {\n            free(pFVar16);\n            piVar12 = __errno_location();\n            *piVar12 = 0;\n            sp->fts_cur = (_ftsent *)0x0;\n            return (FTSENT *)0x0;\n          }\n          if (pFVar16->fts_info == 0xb) {\n                    /* WARNING: Subroutine does not return */\n            abort();\n          }\n          sp->fts_path[pFVar16->fts_pathlen] = '\0';\n          if (pFVar16->fts_level == 0) {\n            iVar9 = restore_initial_cwd(sp);\n            if (iVar9 == 0) goto LAB_001177a7;\n            piVar12 = __errno_location();\n            pFVar16->fts_errno = *piVar12;\n            sp->fts_options = sp->fts_options | 0x4000;\nLAB_001179e4:\n            if (pFVar16->fts_info == 2) {\n              return (FTSENT *)0x0;\n            }\n          }\n          else {\n            if ((pFVar16->fts_flags & 2) == 0) {\n              if (((pFVar16->fts_flags & 1) == 0) &&\n                 (iVar9 = fts_safe_changedir(sp,pFVar16->fts_parent,-1,".."), iVar9 != 0)) {\n                piVar12 = __errno_location();\n                pFVar16->fts_errno = *piVar12;\n                sp->fts_options = sp->fts_options | 0x4000;\n                goto LAB_001179e4;\n              }\n            }\n            else {\n              if ((sp->fts_options & 4U) == 0) {\n                if ((sp->fts_options & 0x200U) == 0) {\n                  iVar9 = fchdir(pFVar16->fts_symfd);\n                  if (iVar9 != 0) {\n                    piVar12 = __errno_location();\n                    pFVar16->fts_errno = *piVar12;\n                    sp->fts_options = sp->fts_options | 0x4000;\n                  }\n                }\n                else {\n                  cwd_advance_fd(sp,pFVar16->fts_symfd,true);\n                }\n              }\n              close(pFVar16->fts_symfd);\n            }\nLAB_001177a7:\n            if (pFVar16->fts_info == 2) goto LAB_00117a88;\n          }\n          if (pFVar16->fts_errno == 0) {\n            pFVar16->fts_info = 6;\n            leave_dir(sp,pFVar16);\n          }\n          else {\n            pFVar16->fts_info = 7;\n          }\nLAB_00117a88:\n          if ((sp->fts_options & 0x4000U) != 0) {\n            return (FTSENT *)0x0;\n          }\n          return pFVar16;\n        }\n        sp->fts_cur = pFVar16;\n        free(pFVar13);\n        if (pFVar16->fts_level == 0) {\n          iVar9 = restore_initial_cwd(sp);\n          if (iVar9 != 0) {\n            sp->fts_options = sp->fts_options | 0x4000;\n            return (FTSENT *)0x0;\n          }\n          free_dir(sp);\n          pFVar16->fts_pathlen = pFVar16->fts_namelen;\n          pFVar13 = pFVar16 + 1;\n          memmove(sp->fts_path,pFVar13,pFVar16->fts_namelen + 1);\n          pFVar14 = (FTSENT *)strrchr((char *)pFVar13,0x2f);\n          if ((pFVar14 == (FTSENT *)0x0) ||\n             ((pFVar13 == pFVar14 && (*(char *)((long)&pFVar14->fts_cycle + 1) == '\0'))))\n          goto LAB_0011784f;\n          pcVar4 = (char *)((long)&pFVar14->fts_cycle + 1);\n          uVar15 = 0xffffffffffffffff;\n          pcVar17 = pcVar4;\n          goto code_r0x00117837;\n        }\n        pFVar13 = pFVar16;\n      } while (pFVar16->fts_instr == 4);\n      if (pFVar16->fts_instr == 2) {\n        uVar8 = fts_stat(sp,pFVar16,true);\n        pFVar16->fts_info = uVar8;\n        if ((uVar8 == 1) && ((sp->fts_options & 4) == 0)) {\n          iVar9 = diropen(sp,".");\n          pFVar16->fts_symfd = iVar9;\n          if (iVar9 < 0) {\n            piVar12 = __errno_location();\n            pFVar16->fts_errno = *piVar12;\n            pFVar16->fts_info = 7;\n          }\n          else {\n            pFVar16->fts_flags = pFVar16->fts_flags | 2;\n          }\n        }\n        pFVar16->fts_instr = 3;\n      }\n    }" if (parenthesized_expression "(pFVar16->fts_info == 1)" ( (binary_expression "pFVar16->fts_info == 1" (field_expression "pFVar16->fts_info" identifier -> field_identifier) == number_literal) )) (compound_statement "{\n      if (uVar8 == 4) goto LAB_00117473;\nLAB_00117457:\n      uVar2 = sp->fts_options;\n      if (((uVar2 & 0x40) != 0) && (pFVar16->fts_statp[0].st_dev != sp->fts_dev)) {\nLAB_00117473:\n        if ((pFVar16->fts_flags & 2) != 0) {\n          close(pFVar16->fts_symfd);\n        }\n        if (sp->fts_child != (FTSENT *)0x0) {\n          fts_lfree(sp->fts_child);\n          sp->fts_child = (_ftsent *)0x0;\n        }\n        pFVar16->fts_info = 6;\n        leave_dir(sp,pFVar16);\n        return pFVar16;\n      }\n      if (sp->fts_child == (FTSENT *)0x0) {\nLAB_00117628:\n        pFVar13 = fts_build(sp,3);\n        sp->fts_child = pFVar13;\n        if (pFVar13 == (FTSENT *)0x0) {\n          if ((sp->fts_options & 0x4000) == 0) {\n            if ((pFVar16->fts_errno != 0) && (pFVar16->fts_info != 4)) {\n              pFVar16->fts_info = 7;\n            }\n            leave_dir(sp,pFVar16);\n            return pFVar16;\n          }\n          return (FTSENT *)0x0;\n        }\n      }\n      else {\n        if ((uVar2 & 0x2000) != 0) {\n          sp->fts_options = uVar2 & 0xffffdfff;\n          fts_lfree(sp->fts_child);\n          sp->fts_child = (_ftsent *)0x0;\n          goto LAB_00117628;\n        }\n        iVar9 = fts_safe_changedir(sp,pFVar16,-1,pFVar16->fts_accpath);\n        if (iVar9 != 0) {\n          piVar12 = __errno_location();\n          pFVar16->fts_errno = *piVar12;\n          pFVar16->fts_flags = pFVar16->fts_flags | 1;\n          for (p_Var5 = sp->fts_child; p_Var5 != (_ftsent *)0x0; p_Var5 = p_Var5->fts_link) {\n            p_Var5->fts_accpath = p_Var5->fts_parent->fts_accpath;\n          }\n        }\n      }\n      pFVar16 = sp->fts_child;\n      sp->fts_child = (_ftsent *)0x0;\n    }" { (if_statement "if (uVar8 == 4) goto LAB_00117473;" if (parenthesized_expression "(uVar8 == 4)" ( (binary_expression "uVar8 == 4" identifier == number_literal) )) (goto_statement "goto LAB_00117473;" goto statement_identifier ;)) (labeled_statement "LAB_00117457:\n      uVar2 = sp->fts_options;" statement_identifier : (expression_statement "uVar2 = sp->fts_options;" (assignment_expression "uVar2 = sp->fts_options" identifier = (field_expression "sp->fts_options" identifier -> field_identifier)) ;)) (if_statement "if (((uVar2 & 0x40) != 0) && (pFVar16->fts_statp[0].st_dev != sp->fts_dev)) {\nLAB_00117473:\n        if ((pFVar16->fts_flags & 2) != 0) {\n          close(pFVar16->fts_symfd);\n        }\n        if (sp->fts_child != (FTSENT *)0x0) {\n          fts_lfree(sp->fts_child);\n          sp->fts_child = (_ftsent *)0x0;\n        }\n        pFVar16->fts_info = 6;\n        leave_dir(sp,pFVar16);\n        return pFVar16;\n      }" if (parenthesized_expression "(((uVar2 & 0x40) != 0) && (pFVar16->fts_statp[0].st_dev != sp->fts_dev))" ( (binary_expression "((uVar2 & 0x40) != 0) && (pFVar16->fts_statp[0].st_dev != sp->fts_dev)" (parenthesized_expression "((uVar2 & 0x40) != 0)" ( (binary_expression "(uVar2 & 0x40) != 0" (parenthesized_expression "(uVar2 & 0x40)" ( (binary_expression "uVar2 & 0x40" identifier & number_literal) )) != number_literal) )) && (parenthesized_expression "(pFVar16->fts_statp[0].st_dev != sp->fts_dev)" ( (binary_expression "pFVar16->fts_statp[0].st_dev != sp->fts_dev" (field_expression "pFVar16->fts_statp[0].st_dev" (subscript_expression "pFVar16->fts_statp[0]" (field_expression "pFVar16->fts_statp" identifier -> field_identifier) [ number_literal ]) . field_identifier) != (field_expression "sp->fts_dev" identifier -> field_identifier)) ))) )) (compound_statement "{\nLAB_00117473:\n        if ((pFVar16->fts_flags & 2) != 0) {\n          close(pFVar16->fts_symfd);\n        }\n        if (sp->fts_child != (FTSENT *)0x0) {\n          fts_lfree(sp->fts_child);\n          sp->fts_child = (_ftsent *)0x0;\n        }\n        pFVar16->fts_info = 6;\n        leave_dir(sp,pFVar16);\n        return pFVar16;\n      }" { (labeled_statement "LAB_00117473:\n        if ((pFVar16->fts_flags & 2) != 0) {\n          close(pFVar16->fts_symfd);\n        }" statement_identifier : (if_statement "if ((pFVar16->fts_flags & 2) != 0) {\n          close(pFVar16->fts_symfd);\n        }" if (parenthesized_expression "((pFVar16->fts_flags & 2) != 0)" ( (binary_expression "(pFVar16->fts_flags & 2) != 0" (parenthesized_expression "(pFVar16->fts_flags & 2)" ( (binary_expression "pFVar16->fts_flags & 2" (field_expression "pFVar16->fts_flags" identifier -> field_identifier) & number_literal) )) != number_literal) )) (compound_statement "{\n          close(pFVar16->fts_symfd);\n        }" { (expression_statement "close(pFVar16->fts_symfd);" (call_expression "close(pFVar16->fts_symfd)" identifier (argument_list "(pFVar16->fts_symfd)" ( (field_expression "pFVar16->fts_symfd" identifier -> field_identifier) ))) ;) }))) (if_statement "if (sp->fts_child != (FTSENT *)0x0) {\n          fts_lfree(sp->fts_child);\n          sp->fts_child = (_ftsent *)0x0;\n        }" if (parenthesized_expression "(sp->fts_child != (FTSENT *)0x0)" ( (binary_expression "sp->fts_child != (FTSENT *)0x0" (field_expression "sp->fts_child" identifier -> field_identifier) != (cast_expression "(FTSENT *)0x0" ( (type_descriptor "FTSENT *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          fts_lfree(sp->fts_child);\n          sp->fts_child = (_ftsent *)0x0;\n        }" { (expression_statement "fts_lfree(sp->fts_child);" (call_expression "fts_lfree(sp->fts_child)" identifier (argument_list "(sp->fts_child)" ( (field_expression "sp->fts_child" identifier -> field_identifier) ))) ;) (expression_statement "sp->fts_child = (_ftsent *)0x0;" (assignment_expression "sp->fts_child = (_ftsent *)0x0" (field_expression "sp->fts_child" identifier -> field_identifier) = (cast_expression "(_ftsent *)0x0" ( (type_descriptor "_ftsent *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) })) (expression_statement "pFVar16->fts_info = 6;" (assignment_expression "pFVar16->fts_info = 6" (field_expression "pFVar16->fts_info" identifier -> field_identifier) = number_literal) ;) (expression_statement "leave_dir(sp,pFVar16);" (call_expression "leave_dir(sp,pFVar16)" identifier (argument_list "(sp,pFVar16)" ( identifier , identifier ))) ;) (return_statement "return pFVar16;" return identifier ;) })) (if_statement "if (sp->fts_child == (FTSENT *)0x0) {\nLAB_00117628:\n        pFVar13 = fts_build(sp,3);\n        sp->fts_child = pFVar13;\n        if (pFVar13 == (FTSENT *)0x0) {\n          if ((sp->fts_options & 0x4000) == 0) {\n            if ((pFVar16->fts_errno != 0) && (pFVar16->fts_info != 4)) {\n              pFVar16->fts_info = 7;\n            }\n            leave_dir(sp,pFVar16);\n            return pFVar16;\n          }\n          return (FTSENT *)0x0;\n        }\n      }\n      else {\n        if ((uVar2 & 0x2000) != 0) {\n          sp->fts_options = uVar2 & 0xffffdfff;\n          fts_lfree(sp->fts_child);\n          sp->fts_child = (_ftsent *)0x0;\n          goto LAB_00117628;\n        }\n        iVar9 = fts_safe_changedir(sp,pFVar16,-1,pFVar16->fts_accpath);\n        if (iVar9 != 0) {\n          piVar12 = __errno_location();\n          pFVar16->fts_errno = *piVar12;\n          pFVar16->fts_flags = pFVar16->fts_flags | 1;\n          for (p_Var5 = sp->fts_child; p_Var5 != (_ftsent *)0x0; p_Var5 = p_Var5->fts_link) {\n            p_Var5->fts_accpath = p_Var5->fts_parent->fts_accpath;\n          }\n        }\n      }" if (parenthesized_expression "(sp->fts_child == (FTSENT *)0x0)" ( (binary_expression "sp->fts_child == (FTSENT *)0x0" (field_expression "sp->fts_child" identifier -> field_identifier) == (cast_expression "(FTSENT *)0x0" ( (type_descriptor "FTSENT *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nLAB_00117628:\n        pFVar13 = fts_build(sp,3);\n        sp->fts_child = pFVar13;\n        if (pFVar13 == (FTSENT *)0x0) {\n          if ((sp->fts_options & 0x4000) == 0) {\n            if ((pFVar16->fts_errno != 0) && (pFVar16->fts_info != 4)) {\n              pFVar16->fts_info = 7;\n            }\n            leave_dir(sp,pFVar16);\n            return pFVar16;\n          }\n          return (FTSENT *)0x0;\n        }\n      }" { (labeled_statement "LAB_00117628:\n        pFVar13 = fts_build(sp,3);" statement_identifier : (expression_statement "pFVar13 = fts_build(sp,3);" (assignment_expression "pFVar13 = fts_build(sp,3)" identifier = (call_expression "fts_build(sp,3)" identifier (argument_list "(sp,3)" ( identifier , number_literal )))) ;)) (expression_statement "sp->fts_child = pFVar13;" (assignment_expression "sp->fts_child = pFVar13" (field_expression "sp->fts_child" identifier -> field_identifier) = identifier) ;) (if_statement "if (pFVar13 == (FTSENT *)0x0) {\n          if ((sp->fts_options & 0x4000) == 0) {\n            if ((pFVar16->fts_errno != 0) && (pFVar16->fts_info != 4)) {\n              pFVar16->fts_info = 7;\n            }\n            leave_dir(sp,pFVar16);\n            return pFVar16;\n          }\n          return (FTSENT *)0x0;\n        }" if (parenthesized_expression "(pFVar13 == (FTSENT *)0x0)" ( (binary_expression "pFVar13 == (FTSENT *)0x0" identifier == (cast_expression "(FTSENT *)0x0" ( (type_descriptor "FTSENT *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          if ((sp->fts_options & 0x4000) == 0) {\n            if ((pFVar16->fts_errno != 0) && (pFVar16->fts_info != 4)) {\n              pFVar16->fts_info = 7;\n            }\n            leave_dir(sp,pFVar16);\n            return pFVar16;\n          }\n          return (FTSENT *)0x0;\n        }" { (if_statement "if ((sp->fts_options & 0x4000) == 0) {\n            if ((pFVar16->fts_errno != 0) && (pFVar16->fts_info != 4)) {\n              pFVar16->fts_info = 7;\n            }\n            leave_dir(sp,pFVar16);\n            return pFVar16;\n          }" if (parenthesized_expression "((sp->fts_options & 0x4000) == 0)" ( (binary_expression "(sp->fts_options & 0x4000) == 0" (parenthesized_expression "(sp->fts_options & 0x4000)" ( (binary_expression "sp->fts_options & 0x4000" (field_expression "sp->fts_options" identifier -> field_identifier) & number_literal) )) == number_literal) )) (compound_statement "{\n            if ((pFVar16->fts_errno != 0) && (pFVar16->fts_info != 4)) {\n              pFVar16->fts_info = 7;\n            }\n            leave_dir(sp,pFVar16);\n            return pFVar16;\n          }" { (if_statement "if ((pFVar16->fts_errno != 0) && (pFVar16->fts_info != 4)) {\n              pFVar16->fts_info = 7;\n            }" if (parenthesized_expression "((pFVar16->fts_errno != 0) && (pFVar16->fts_info != 4))" ( (binary_expression "(pFVar16->fts_errno != 0) && (pFVar16->fts_info != 4)" (parenthesized_expression "(pFVar16->fts_errno != 0)" ( (binary_expression "pFVar16->fts_errno != 0" (field_expression "pFVar16->fts_errno" identifier -> field_identifier) != number_literal) )) && (parenthesized_expression "(pFVar16->fts_info != 4)" ( (binary_expression "pFVar16->fts_info != 4" (field_expression "pFVar16->fts_info" identifier -> field_identifier) != number_literal) ))) )) (compound_statement "{\n              pFVar16->fts_info = 7;\n            }" { (expression_statement "pFVar16->fts_info = 7;" (assignment_expression "pFVar16->fts_info = 7" (field_expression "pFVar16->fts_info" identifier -> field_identifier) = number_literal) ;) })) (expression_statement "leave_dir(sp,pFVar16);" (call_expression "leave_dir(sp,pFVar16)" identifier (argument_list "(sp,pFVar16)" ( identifier , identifier ))) ;) (return_statement "return pFVar16;" return identifier ;) })) (return_statement "return (FTSENT *)0x0;" return (cast_expression "(FTSENT *)0x0" ( (type_descriptor "FTSENT *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) }) (else_clause "else {\n        if ((uVar2 & 0x2000) != 0) {\n          sp->fts_options = uVar2 & 0xffffdfff;\n          fts_lfree(sp->fts_child);\n          sp->fts_child = (_ftsent *)0x0;\n          goto LAB_00117628;\n        }\n        iVar9 = fts_safe_changedir(sp,pFVar16,-1,pFVar16->fts_accpath);\n        if (iVar9 != 0) {\n          piVar12 = __errno_location();\n          pFVar16->fts_errno = *piVar12;\n          pFVar16->fts_flags = pFVar16->fts_flags | 1;\n          for (p_Var5 = sp->fts_child; p_Var5 != (_ftsent *)0x0; p_Var5 = p_Var5->fts_link) {\n            p_Var5->fts_accpath = p_Var5->fts_parent->fts_accpath;\n          }\n        }\n      }" else (compound_statement "{\n        if ((uVar2 & 0x2000) != 0) {\n          sp->fts_options = uVar2 & 0xffffdfff;\n          fts_lfree(sp->fts_child);\n          sp->fts_child = (_ftsent *)0x0;\n          goto LAB_00117628;\n        }\n        iVar9 = fts_safe_changedir(sp,pFVar16,-1,pFVar16->fts_accpath);\n        if (iVar9 != 0) {\n          piVar12 = __errno_location();\n          pFVar16->fts_errno = *piVar12;\n          pFVar16->fts_flags = pFVar16->fts_flags | 1;\n          for (p_Var5 = sp->fts_child; p_Var5 != (_ftsent *)0x0; p_Var5 = p_Var5->fts_link) {\n            p_Var5->fts_accpath = p_Var5->fts_parent->fts_accpath;\n          }\n        }\n      }" { (if_statement "if ((uVar2 & 0x2000) != 0) {\n          sp->fts_options = uVar2 & 0xffffdfff;\n          fts_lfree(sp->fts_child);\n          sp->fts_child = (_ftsent *)0x0;\n          goto LAB_00117628;\n        }" if (parenthesized_expression "((uVar2 & 0x2000) != 0)" ( (binary_expression "(uVar2 & 0x2000) != 0" (parenthesized_expression "(uVar2 & 0x2000)" ( (binary_expression "uVar2 & 0x2000" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n          sp->fts_options = uVar2 & 0xffffdfff;\n          fts_lfree(sp->fts_child);\n          sp->fts_child = (_ftsent *)0x0;\n          goto LAB_00117628;\n        }" { (expression_statement "sp->fts_options = uVar2 & 0xffffdfff;" (assignment_expression "sp->fts_options = uVar2 & 0xffffdfff" (field_expression "sp->fts_options" identifier -> field_identifier) = (binary_expression "uVar2 & 0xffffdfff" identifier & number_literal)) ;) (expression_statement "fts_lfree(sp->fts_child);" (call_expression "fts_lfree(sp->fts_child)" identifier (argument_list "(sp->fts_child)" ( (field_expression "sp->fts_child" identifier -> field_identifier) ))) ;) (expression_statement "sp->fts_child = (_ftsent *)0x0;" (assignment_expression "sp->fts_child = (_ftsent *)0x0" (field_expression "sp->fts_child" identifier -> field_identifier) = (cast_expression "(_ftsent *)0x0" ( (type_descriptor "_ftsent *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (goto_statement "goto LAB_00117628;" goto statement_identifier ;) })) (expression_statement "iVar9 = fts_safe_changedir(sp,pFVar16,-1,pFVar16->fts_accpath);" (assignment_expression "iVar9 = fts_safe_changedir(sp,pFVar16,-1,pFVar16->fts_accpath)" identifier = (call_expression "fts_safe_changedir(sp,pFVar16,-1,pFVar16->fts_accpath)" identifier (argument_list "(sp,pFVar16,-1,pFVar16->fts_accpath)" ( identifier , identifier , number_literal , (field_expression "pFVar16->fts_accpath" identifier -> field_identifier) )))) ;) (if_statement "if (iVar9 != 0) {\n          piVar12 = __errno_location();\n          pFVar16->fts_errno = *piVar12;\n          pFVar16->fts_flags = pFVar16->fts_flags | 1;\n          for (p_Var5 = sp->fts_child; p_Var5 != (_ftsent *)0x0; p_Var5 = p_Var5->fts_link) {\n            p_Var5->fts_accpath = p_Var5->fts_parent->fts_accpath;\n          }\n        }" if (parenthesized_expression "(iVar9 != 0)" ( (binary_expression "iVar9 != 0" identifier != number_literal) )) (compound_statement "{\n          piVar12 = __errno_location();\n          pFVar16->fts_errno = *piVar12;\n          pFVar16->fts_flags = pFVar16->fts_flags | 1;\n          for (p_Var5 = sp->fts_child; p_Var5 != (_ftsent *)0x0; p_Var5 = p_Var5->fts_link) {\n            p_Var5->fts_accpath = p_Var5->fts_parent->fts_accpath;\n          }\n        }" { (expression_statement "piVar12 = __errno_location();" (assignment_expression "piVar12 = __errno_location()" identifier = (call_expression "__errno_location()" identifier (argument_list "()" ( )))) ;) (expression_statement "pFVar16->fts_errno = *piVar12;" (assignment_expression "pFVar16->fts_errno = *piVar12" (field_expression "pFVar16->fts_errno" identifier -> field_identifier) = (pointer_expression "*piVar12" * identifier)) ;) (expression_statement "pFVar16->fts_flags = pFVar16->fts_flags | 1;" (assignment_expression "pFVar16->fts_flags = pFVar16->fts_flags | 1" (field_expression "pFVar16->fts_flags" identifier -> field_identifier) = (binary_expression "pFVar16->fts_flags | 1" (field_expression "pFVar16->fts_flags" identifier -> field_identifier) | number_literal)) ;) (for_statement "for (p_Var5 = sp->fts_child; p_Var5 != (_ftsent *)0x0; p_Var5 = p_Var5->fts_link) {\n            p_Var5->fts_accpath = p_Var5->fts_parent->fts_accpath;\n          }" for ( (assignment_expression "p_Var5 = sp->fts_child" identifier = (field_expression "sp->fts_child" identifier -> field_identifier)) ; (binary_expression "p_Var5 != (_ftsent *)0x0" identifier != (cast_expression "(_ftsent *)0x0" ( (type_descriptor "_ftsent *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ; (assignment_expression "p_Var5 = p_Var5->fts_link" identifier = (field_expression "p_Var5->fts_link" identifier -> field_identifier)) ) (compound_statement "{\n            p_Var5->fts_accpath = p_Var5->fts_parent->fts_accpath;\n          }" { (expression_statement "p_Var5->fts_accpath = p_Var5->fts_parent->fts_accpath;" (assignment_expression "p_Var5->fts_accpath = p_Var5->fts_parent->fts_accpath" (field_expression "p_Var5->fts_accpath" identifier -> field_identifier) = (field_expression "p_Var5->fts_parent->fts_accpath" (field_expression "p_Var5->fts_parent" identifier -> field_identifier) -> field_identifier)) ;) })) })) }))) (expression_statement "pFVar16 = sp->fts_child;" (assignment_expression "pFVar16 = sp->fts_child" identifier = (field_expression "sp->fts_child" identifier -> field_identifier)) ;) (expression_statement "sp->fts_child = (_ftsent *)0x0;" (assignment_expression "sp->fts_child = (_ftsent *)0x0" (field_expression "sp->fts_child" identifier -> field_identifier) = (cast_expression "(_ftsent *)0x0" ( (type_descriptor "_ftsent *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }) (else_clause "else {\nLAB_00117717:\n      do {\n        pFVar16 = pFVar13->fts_link;\n        if (pFVar16 == (FTSENT *)0x0) {\n          p_Var5 = pFVar13->fts_parent;\n          if (p_Var5->fts_dirp != (DIR *)0x0) {\n            sp->fts_cur = p_Var5;\n            sp->fts_path[p_Var5->fts_pathlen] = '\0';\n            pFVar16 = fts_build(sp,3);\n            if (pFVar16 != (FTSENT *)0x0) {\n              free(pFVar13);\n              goto LAB_00117587;\n            }\n            if ((sp->fts_options & 0x4000) != 0) {\n              return (FTSENT *)0x0;\n            }\n          }\n          pFVar16 = pFVar13->fts_parent;\n          sp->fts_cur = pFVar16;\n          free(pFVar13);\n          if (pFVar16->fts_level == -1) {\n            free(pFVar16);\n            piVar12 = __errno_location();\n            *piVar12 = 0;\n            sp->fts_cur = (_ftsent *)0x0;\n            return (FTSENT *)0x0;\n          }\n          if (pFVar16->fts_info == 0xb) {\n                    /* WARNING: Subroutine does not return */\n            abort();\n          }\n          sp->fts_path[pFVar16->fts_pathlen] = '\0';\n          if (pFVar16->fts_level == 0) {\n            iVar9 = restore_initial_cwd(sp);\n            if (iVar9 == 0) goto LAB_001177a7;\n            piVar12 = __errno_location();\n            pFVar16->fts_errno = *piVar12;\n            sp->fts_options = sp->fts_options | 0x4000;\nLAB_001179e4:\n            if (pFVar16->fts_info == 2) {\n              return (FTSENT *)0x0;\n            }\n          }\n          else {\n            if ((pFVar16->fts_flags & 2) == 0) {\n              if (((pFVar16->fts_flags & 1) == 0) &&\n                 (iVar9 = fts_safe_changedir(sp,pFVar16->fts_parent,-1,".."), iVar9 != 0)) {\n                piVar12 = __errno_location();\n                pFVar16->fts_errno = *piVar12;\n                sp->fts_options = sp->fts_options | 0x4000;\n                goto LAB_001179e4;\n              }\n            }\n            else {\n              if ((sp->fts_options & 4U) == 0) {\n                if ((sp->fts_options & 0x200U) == 0) {\n                  iVar9 = fchdir(pFVar16->fts_symfd);\n                  if (iVar9 != 0) {\n                    piVar12 = __errno_location();\n                    pFVar16->fts_errno = *piVar12;\n                    sp->fts_options = sp->fts_options | 0x4000;\n                  }\n                }\n                else {\n                  cwd_advance_fd(sp,pFVar16->fts_symfd,true);\n                }\n              }\n              close(pFVar16->fts_symfd);\n            }\nLAB_001177a7:\n            if (pFVar16->fts_info == 2) goto LAB_00117a88;\n          }\n          if (pFVar16->fts_errno == 0) {\n            pFVar16->fts_info = 6;\n            leave_dir(sp,pFVar16);\n          }\n          else {\n            pFVar16->fts_info = 7;\n          }\nLAB_00117a88:\n          if ((sp->fts_options & 0x4000U) != 0) {\n            return (FTSENT *)0x0;\n          }\n          return pFVar16;\n        }\n        sp->fts_cur = pFVar16;\n        free(pFVar13);\n        if (pFVar16->fts_level == 0) {\n          iVar9 = restore_initial_cwd(sp);\n          if (iVar9 != 0) {\n            sp->fts_options = sp->fts_options | 0x4000;\n            return (FTSENT *)0x0;\n          }\n          free_dir(sp);\n          pFVar16->fts_pathlen = pFVar16->fts_namelen;\n          pFVar13 = pFVar16 + 1;\n          memmove(sp->fts_path,pFVar13,pFVar16->fts_namelen + 1);\n          pFVar14 = (FTSENT *)strrchr((char *)pFVar13,0x2f);\n          if ((pFVar14 == (FTSENT *)0x0) ||\n             ((pFVar13 == pFVar14 && (*(char *)((long)&pFVar14->fts_cycle + 1) == '\0'))))\n          goto LAB_0011784f;\n          pcVar4 = (char *)((long)&pFVar14->fts_cycle + 1);\n          uVar15 = 0xffffffffffffffff;\n          pcVar17 = pcVar4;\n          goto code_r0x00117837;\n        }\n        pFVar13 = pFVar16;\n      } while (pFVar16->fts_instr == 4);\n      if (pFVar16->fts_instr == 2) {\n        uVar8 = fts_stat(sp,pFVar16,true);\n        pFVar16->fts_info = uVar8;\n        if ((uVar8 == 1) && ((sp->fts_options & 4) == 0)) {\n          iVar9 = diropen(sp,".");\n          pFVar16->fts_symfd = iVar9;\n          if (iVar9 < 0) {\n            piVar12 = __errno_location();\n            pFVar16->fts_errno = *piVar12;\n            pFVar16->fts_info = 7;\n          }\n          else {\n            pFVar16->fts_flags = pFVar16->fts_flags | 2;\n          }\n        }\n        pFVar16->fts_instr = 3;\n      }\n    }" else (compound_statement "{\nLAB_00117717:\n      do {\n        pFVar16 = pFVar13->fts_link;\n        if (pFVar16 == (FTSENT *)0x0) {\n          p_Var5 = pFVar13->fts_parent;\n          if (p_Var5->fts_dirp != (DIR *)0x0) {\n            sp->fts_cur = p_Var5;\n            sp->fts_path[p_Var5->fts_pathlen] = '\0';\n            pFVar16 = fts_build(sp,3);\n            if (pFVar16 != (FTSENT *)0x0) {\n              free(pFVar13);\n              goto LAB_00117587;\n            }\n            if ((sp->fts_options & 0x4000) != 0) {\n              return (FTSENT *)0x0;\n            }\n          }\n          pFVar16 = pFVar13->fts_parent;\n          sp->fts_cur = pFVar16;\n          free(pFVar13);\n          if (pFVar16->fts_level == -1) {\n            free(pFVar16);\n            piVar12 = __errno_location();\n            *piVar12 = 0;\n            sp->fts_cur = (_ftsent *)0x0;\n            return (FTSENT *)0x0;\n          }\n          if (pFVar16->fts_info == 0xb) {\n                    /* WARNING: Subroutine does not return */\n            abort();\n          }\n          sp->fts_path[pFVar16->fts_pathlen] = '\0';\n          if (pFVar16->fts_level == 0) {\n            iVar9 = restore_initial_cwd(sp);\n            if (iVar9 == 0) goto LAB_001177a7;\n            piVar12 = __errno_location();\n            pFVar16->fts_errno = *piVar12;\n            sp->fts_options = sp->fts_options | 0x4000;\nLAB_001179e4:\n            if (pFVar16->fts_info == 2) {\n              return (FTSENT *)0x0;\n            }\n          }\n          else {\n            if ((pFVar16->fts_flags & 2) == 0) {\n              if (((pFVar16->fts_flags & 1) == 0) &&\n                 (iVar9 = fts_safe_changedir(sp,pFVar16->fts_parent,-1,".."), iVar9 != 0)) {\n                piVar12 = __errno_location();\n                pFVar16->fts_errno = *piVar12;\n                sp->fts_options = sp->fts_options | 0x4000;\n                goto LAB_001179e4;\n              }\n            }\n            else {\n              if ((sp->fts_options & 4U) == 0) {\n                if ((sp->fts_options & 0x200U) == 0) {\n                  iVar9 = fchdir(pFVar16->fts_symfd);\n                  if (iVar9 != 0) {\n                    piVar12 = __errno_location();\n                    pFVar16->fts_errno = *piVar12;\n                    sp->fts_options = sp->fts_options | 0x4000;\n                  }\n                }\n                else {\n                  cwd_advance_fd(sp,pFVar16->fts_symfd,true);\n                }\n              }\n              close(pFVar16->fts_symfd);\n            }\nLAB_001177a7:\n            if (pFVar16->fts_info == 2) goto LAB_00117a88;\n          }\n          if (pFVar16->fts_errno == 0) {\n            pFVar16->fts_info = 6;\n            leave_dir(sp,pFVar16);\n          }\n          else {\n            pFVar16->fts_info = 7;\n          }\nLAB_00117a88:\n          if ((sp->fts_options & 0x4000U) != 0) {\n            return (FTSENT *)0x0;\n          }\n          return pFVar16;\n        }\n        sp->fts_cur = pFVar16;\n        free(pFVar13);\n        if (pFVar16->fts_level == 0) {\n          iVar9 = restore_initial_cwd(sp);\n          if (iVar9 != 0) {\n            sp->fts_options = sp->fts_options | 0x4000;\n            return (FTSENT *)0x0;\n          }\n          free_dir(sp);\n          pFVar16->fts_pathlen = pFVar16->fts_namelen;\n          pFVar13 = pFVar16 + 1;\n          memmove(sp->fts_path,pFVar13,pFVar16->fts_namelen + 1);\n          pFVar14 = (FTSENT *)strrchr((char *)pFVar13,0x2f);\n          if ((pFVar14 == (FTSENT *)0x0) ||\n             ((pFVar13 == pFVar14 && (*(char *)((long)&pFVar14->fts_cycle + 1) == '\0'))))\n          goto LAB_0011784f;\n          pcVar4 = (char *)((long)&pFVar14->fts_cycle + 1);\n          uVar15 = 0xffffffffffffffff;\n          pcVar17 = pcVar4;\n          goto code_r0x00117837;\n        }\n        pFVar13 = pFVar16;\n      } while (pFVar16->fts_instr == 4);\n      if (pFVar16->fts_instr == 2) {\n        uVar8 = fts_stat(sp,pFVar16,true);\n        pFVar16->fts_info = uVar8;\n        if ((uVar8 == 1) && ((sp->fts_options & 4) == 0)) {\n          iVar9 = diropen(sp,".");\n          pFVar16->fts_symfd = iVar9;\n          if (iVar9 < 0) {\n            piVar12 = __errno_location();\n            pFVar16->fts_errno = *piVar12;\n            pFVar16->fts_info = 7;\n          }\n          else {\n            pFVar16->fts_flags = pFVar16->fts_flags | 2;\n          }\n        }\n        pFVar16->fts_instr = 3;\n      }\n    }" { (labeled_statement "LAB_00117717:\n      do {\n        pFVar16 = pFVar13->fts_link;\n        if (pFVar16 == (FTSENT *)0x0) {\n          p_Var5 = pFVar13->fts_parent;\n          if (p_Var5->fts_dirp != (DIR *)0x0) {\n            sp->fts_cur = p_Var5;\n            sp->fts_path[p_Var5->fts_pathlen] = '\0';\n            pFVar16 = fts_build(sp,3);\n            if (pFVar16 != (FTSENT *)0x0) {\n              free(pFVar13);\n              goto LAB_00117587;\n            }\n            if ((sp->fts_options & 0x4000) != 0) {\n              return (FTSENT *)0x0;\n            }\n          }\n          pFVar16 = pFVar13->fts_parent;\n          sp->fts_cur = pFVar16;\n          free(pFVar13);\n          if (pFVar16->fts_level == -1) {\n            free(pFVar16);\n            piVar12 = __errno_location();\n            *piVar12 = 0;\n            sp->fts_cur = (_ftsent *)0x0;\n            return (FTSENT *)0x0;\n          }\n          if (pFVar16->fts_info == 0xb) {\n                    /* WARNING: Subroutine does not return */\n            abort();\n          }\n          sp->fts_path[pFVar16->fts_pathlen] = '\0';\n          if (pFVar16->fts_level == 0) {\n            iVar9 = restore_initial_cwd(sp);\n            if (iVar9 == 0) goto LAB_001177a7;\n            piVar12 = __errno_location();\n            pFVar16->fts_errno = *piVar12;\n            sp->fts_options = sp->fts_options | 0x4000;\nLAB_001179e4:\n            if (pFVar16->fts_info == 2) {\n              return (FTSENT *)0x0;\n            }\n          }\n          else {\n            if ((pFVar16->fts_flags & 2) == 0) {\n              if (((pFVar16->fts_flags & 1) == 0) &&\n                 (iVar9 = fts_safe_changedir(sp,pFVar16->fts_parent,-1,".."), iVar9 != 0)) {\n                piVar12 = __errno_location();\n                pFVar16->fts_errno = *piVar12;\n                sp->fts_options = sp->fts_options | 0x4000;\n                goto LAB_001179e4;\n              }\n            }\n            else {\n              if ((sp->fts_options & 4U) == 0) {\n                if ((sp->fts_options & 0x200U) == 0) {\n                  iVar9 = fchdir(pFVar16->fts_symfd);\n                  if (iVar9 != 0) {\n                    piVar12 = __errno_location();\n                    pFVar16->fts_errno = *piVar12;\n                    sp->fts_options = sp->fts_options | 0x4000;\n                  }\n                }\n                else {\n                  cwd_advance_fd(sp,pFVar16->fts_symfd,true);\n                }\n              }\n              close(pFVar16->fts_symfd);\n            }\nLAB_001177a7:\n            if (pFVar16->fts_info == 2) goto LAB_00117a88;\n          }\n          if (pFVar16->fts_errno == 0) {\n            pFVar16->fts_info = 6;\n            leave_dir(sp,pFVar16);\n          }\n          else {\n            pFVar16->fts_info = 7;\n          }\nLAB_00117a88:\n          if ((sp->fts_options & 0x4000U) != 0) {\n            return (FTSENT *)0x0;\n          }\n          return pFVar16;\n        }\n        sp->fts_cur = pFVar16;\n        free(pFVar13);\n        if (pFVar16->fts_level == 0) {\n          iVar9 = restore_initial_cwd(sp);\n          if (iVar9 != 0) {\n            sp->fts_options = sp->fts_options | 0x4000;\n            return (FTSENT *)0x0;\n          }\n          free_dir(sp);\n          pFVar16->fts_pathlen = pFVar16->fts_namelen;\n          pFVar13 = pFVar16 + 1;\n          memmove(sp->fts_path,pFVar13,pFVar16->fts_namelen + 1);\n          pFVar14 = (FTSENT *)strrchr((char *)pFVar13,0x2f);\n          if ((pFVar14 == (FTSENT *)0x0) ||\n             ((pFVar13 == pFVar14 && (*(char *)((long)&pFVar14->fts_cycle + 1) == '\0'))))\n          goto LAB_0011784f;\n          pcVar4 = (char *)((long)&pFVar14->fts_cycle + 1);\n          uVar15 = 0xffffffffffffffff;\n          pcVar17 = pcVar4;\n          goto code_r0x00117837;\n        }\n        pFVar13 = pFVar16;\n      } while (pFVar16->fts_instr == 4);" statement_identifier : (do_statement "do {\n        pFVar16 = pFVar13->fts_link;\n        if (pFVar16 == (FTSENT *)0x0) {\n          p_Var5 = pFVar13->fts_parent;\n          if (p_Var5->fts_dirp != (DIR *)0x0) {\n            sp->fts_cur = p_Var5;\n            sp->fts_path[p_Var5->fts_pathlen] = '\0';\n            pFVar16 = fts_build(sp,3);\n            if (pFVar16 != (FTSENT *)0x0) {\n              free(pFVar13);\n              goto LAB_00117587;\n            }\n            if ((sp->fts_options & 0x4000) != 0) {\n              return (FTSENT *)0x0;\n            }\n          }\n          pFVar16 = pFVar13->fts_parent;\n          sp->fts_cur = pFVar16;\n          free(pFVar13);\n          if (pFVar16->fts_level == -1) {\n            free(pFVar16);\n            piVar12 = __errno_location();\n            *piVar12 = 0;\n            sp->fts_cur = (_ftsent *)0x0;\n            return (FTSENT *)0x0;\n          }\n          if (pFVar16->fts_info == 0xb) {\n                    /* WARNING: Subroutine does not return */\n            abort();\n          }\n          sp->fts_path[pFVar16->fts_pathlen] = '\0';\n          if (pFVar16->fts_level == 0) {\n            iVar9 = restore_initial_cwd(sp);\n            if (iVar9 == 0) goto LAB_001177a7;\n            piVar12 = __errno_location();\n            pFVar16->fts_errno = *piVar12;\n            sp->fts_options = sp->fts_options | 0x4000;\nLAB_001179e4:\n            if (pFVar16->fts_info == 2) {\n              return (FTSENT *)0x0;\n            }\n          }\n          else {\n            if ((pFVar16->fts_flags & 2) == 0) {\n              if (((pFVar16->fts_flags & 1) == 0) &&\n                 (iVar9 = fts_safe_changedir(sp,pFVar16->fts_parent,-1,".."), iVar9 != 0)) {\n                piVar12 = __errno_location();\n                pFVar16->fts_errno = *piVar12;\n                sp->fts_options = sp->fts_options | 0x4000;\n                goto LAB_001179e4;\n              }\n            }\n            else {\n              if ((sp->fts_options & 4U) == 0) {\n                if ((sp->fts_options & 0x200U) == 0) {\n                  iVar9 = fchdir(pFVar16->fts_symfd);\n                  if (iVar9 != 0) {\n                    piVar12 = __errno_location();\n                    pFVar16->fts_errno = *piVar12;\n                    sp->fts_options = sp->fts_options | 0x4000;\n                  }\n                }\n                else {\n                  cwd_advance_fd(sp,pFVar16->fts_symfd,true);\n                }\n              }\n              close(pFVar16->fts_symfd);\n            }\nLAB_001177a7:\n            if (pFVar16->fts_info == 2) goto LAB_00117a88;\n          }\n          if (pFVar16->fts_errno == 0) {\n            pFVar16->fts_info = 6;\n            leave_dir(sp,pFVar16);\n          }\n          else {\n            pFVar16->fts_info = 7;\n          }\nLAB_00117a88:\n          if ((sp->fts_options & 0x4000U) != 0) {\n            return (FTSENT *)0x0;\n          }\n          return pFVar16;\n        }\n        sp->fts_cur = pFVar16;\n        free(pFVar13);\n        if (pFVar16->fts_level == 0) {\n          iVar9 = restore_initial_cwd(sp);\n          if (iVar9 != 0) {\n            sp->fts_options = sp->fts_options | 0x4000;\n            return (FTSENT *)0x0;\n          }\n          free_dir(sp);\n          pFVar16->fts_pathlen = pFVar16->fts_namelen;\n          pFVar13 = pFVar16 + 1;\n          memmove(sp->fts_path,pFVar13,pFVar16->fts_namelen + 1);\n          pFVar14 = (FTSENT *)strrchr((char *)pFVar13,0x2f);\n          if ((pFVar14 == (FTSENT *)0x0) ||\n             ((pFVar13 == pFVar14 && (*(char *)((long)&pFVar14->fts_cycle + 1) == '\0'))))\n          goto LAB_0011784f;\n          pcVar4 = (char *)((long)&pFVar14->fts_cycle + 1);\n          uVar15 = 0xffffffffffffffff;\n          pcVar17 = pcVar4;\n          goto code_r0x00117837;\n        }\n        pFVar13 = pFVar16;\n      } while (pFVar16->fts_instr == 4);" do (compound_statement "{\n        pFVar16 = pFVar13->fts_link;\n        if (pFVar16 == (FTSENT *)0x0) {\n          p_Var5 = pFVar13->fts_parent;\n          if (p_Var5->fts_dirp != (DIR *)0x0) {\n            sp->fts_cur = p_Var5;\n            sp->fts_path[p_Var5->fts_pathlen] = '\0';\n            pFVar16 = fts_build(sp,3);\n            if (pFVar16 != (FTSENT *)0x0) {\n              free(pFVar13);\n              goto LAB_00117587;\n            }\n            if ((sp->fts_options & 0x4000) != 0) {\n              return (FTSENT *)0x0;\n            }\n          }\n          pFVar16 = pFVar13->fts_parent;\n          sp->fts_cur = pFVar16;\n          free(pFVar13);\n          if (pFVar16->fts_level == -1) {\n            free(pFVar16);\n            piVar12 = __errno_location();\n            *piVar12 = 0;\n            sp->fts_cur = (_ftsent *)0x0;\n            return (FTSENT *)0x0;\n          }\n          if (pFVar16->fts_info == 0xb) {\n                    /* WARNING: Subroutine does not return */\n            abort();\n          }\n          sp->fts_path[pFVar16->fts_pathlen] = '\0';\n          if (pFVar16->fts_level == 0) {\n            iVar9 = restore_initial_cwd(sp);\n            if (iVar9 == 0) goto LAB_001177a7;\n            piVar12 = __errno_location();\n            pFVar16->fts_errno = *piVar12;\n            sp->fts_options = sp->fts_options | 0x4000;\nLAB_001179e4:\n            if (pFVar16->fts_info == 2) {\n              return (FTSENT *)0x0;\n            }\n          }\n          else {\n            if ((pFVar16->fts_flags & 2) == 0) {\n              if (((pFVar16->fts_flags & 1) == 0) &&\n                 (iVar9 = fts_safe_changedir(sp,pFVar16->fts_parent,-1,".."), iVar9 != 0)) {\n                piVar12 = __errno_location();\n                pFVar16->fts_errno = *piVar12;\n                sp->fts_options = sp->fts_options | 0x4000;\n                goto LAB_001179e4;\n              }\n            }\n            else {\n              if ((sp->fts_options & 4U) == 0) {\n                if ((sp->fts_options & 0x200U) == 0) {\n                  iVar9 = fchdir(pFVar16->fts_symfd);\n                  if (iVar9 != 0) {\n                    piVar12 = __errno_location();\n                    pFVar16->fts_errno = *piVar12;\n                    sp->fts_options = sp->fts_options | 0x4000;\n                  }\n                }\n                else {\n                  cwd_advance_fd(sp,pFVar16->fts_symfd,true);\n                }\n              }\n              close(pFVar16->fts_symfd);\n            }\nLAB_001177a7:\n            if (pFVar16->fts_info == 2) goto LAB_00117a88;\n          }\n          if (pFVar16->fts_errno == 0) {\n            pFVar16->fts_info = 6;\n            leave_dir(sp,pFVar16);\n          }\n          else {\n            pFVar16->fts_info = 7;\n          }\nLAB_00117a88:\n          if ((sp->fts_options & 0x4000U) != 0) {\n            return (FTSENT *)0x0;\n          }\n          return pFVar16;\n        }\n        sp->fts_cur = pFVar16;\n        free(pFVar13);\n        if (pFVar16->fts_level == 0) {\n          iVar9 = restore_initial_cwd(sp);\n          if (iVar9 != 0) {\n            sp->fts_options = sp->fts_options | 0x4000;\n            return (FTSENT *)0x0;\n          }\n          free_dir(sp);\n          pFVar16->fts_pathlen = pFVar16->fts_namelen;\n          pFVar13 = pFVar16 + 1;\n          memmove(sp->fts_path,pFVar13,pFVar16->fts_namelen + 1);\n          pFVar14 = (FTSENT *)strrchr((char *)pFVar13,0x2f);\n          if ((pFVar14 == (FTSENT *)0x0) ||\n             ((pFVar13 == pFVar14 && (*(char *)((long)&pFVar14->fts_cycle + 1) == '\0'))))\n          goto LAB_0011784f;\n          pcVar4 = (char *)((long)&pFVar14->fts_cycle + 1);\n          uVar15 = 0xffffffffffffffff;\n          pcVar17 = pcVar4;\n          goto code_r0x00117837;\n        }\n        pFVar13 = pFVar16;\n      }" { (expression_statement "pFVar16 = pFVar13->fts_link;" (assignment_expression "pFVar16 = pFVar13->fts_link" identifier = (field_expression "pFVar13->fts_link" identifier -> field_identifier)) ;) (if_statement "if (pFVar16 == (FTSENT *)0x0) {\n          p_Var5 = pFVar13->fts_parent;\n          if (p_Var5->fts_dirp != (DIR *)0x0) {\n            sp->fts_cur = p_Var5;\n            sp->fts_path[p_Var5->fts_pathlen] = '\0';\n            pFVar16 = fts_build(sp,3);\n            if (pFVar16 != (FTSENT *)0x0) {\n              free(pFVar13);\n              goto LAB_00117587;\n            }\n            if ((sp->fts_options & 0x4000) != 0) {\n              return (FTSENT *)0x0;\n            }\n          }\n          pFVar16 = pFVar13->fts_parent;\n          sp->fts_cur = pFVar16;\n          free(pFVar13);\n          if (pFVar16->fts_level == -1) {\n            free(pFVar16);\n            piVar12 = __errno_location();\n            *piVar12 = 0;\n            sp->fts_cur = (_ftsent *)0x0;\n            return (FTSENT *)0x0;\n          }\n          if (pFVar16->fts_info == 0xb) {\n                    /* WARNING: Subroutine does not return */\n            abort();\n          }\n          sp->fts_path[pFVar16->fts_pathlen] = '\0';\n          if (pFVar16->fts_level == 0) {\n            iVar9 = restore_initial_cwd(sp);\n            if (iVar9 == 0) goto LAB_001177a7;\n            piVar12 = __errno_location();\n            pFVar16->fts_errno = *piVar12;\n            sp->fts_options = sp->fts_options | 0x4000;\nLAB_001179e4:\n            if (pFVar16->fts_info == 2) {\n              return (FTSENT *)0x0;\n            }\n          }\n          else {\n            if ((pFVar16->fts_flags & 2) == 0) {\n              if (((pFVar16->fts_flags & 1) == 0) &&\n                 (iVar9 = fts_safe_changedir(sp,pFVar16->fts_parent,-1,".."), iVar9 != 0)) {\n                piVar12 = __errno_location();\n                pFVar16->fts_errno = *piVar12;\n                sp->fts_options = sp->fts_options | 0x4000;\n                goto LAB_001179e4;\n              }\n            }\n            else {\n              if ((sp->fts_options & 4U) == 0) {\n                if ((sp->fts_options & 0x200U) == 0) {\n                  iVar9 = fchdir(pFVar16->fts_symfd);\n                  if (iVar9 != 0) {\n                    piVar12 = __errno_location();\n                    pFVar16->fts_errno = *piVar12;\n                    sp->fts_options = sp->fts_options | 0x4000;\n                  }\n                }\n                else {\n                  cwd_advance_fd(sp,pFVar16->fts_symfd,true);\n                }\n              }\n              close(pFVar16->fts_symfd);\n            }\nLAB_001177a7:\n            if (pFVar16->fts_info == 2) goto LAB_00117a88;\n          }\n          if (pFVar16->fts_errno == 0) {\n            pFVar16->fts_info = 6;\n            leave_dir(sp,pFVar16);\n          }\n          else {\n            pFVar16->fts_info = 7;\n          }\nLAB_00117a88:\n          if ((sp->fts_options & 0x4000U) != 0) {\n            return (FTSENT *)0x0;\n          }\n          return pFVar16;\n        }" if (parenthesized_expression "(pFVar16 == (FTSENT *)0x0)" ( (binary_expression "pFVar16 == (FTSENT *)0x0" identifier == (cast_expression "(FTSENT *)0x0" ( (type_descriptor "FTSENT *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          p_Var5 = pFVar13->fts_parent;\n          if (p_Var5->fts_dirp != (DIR *)0x0) {\n            sp->fts_cur = p_Var5;\n            sp->fts_path[p_Var5->fts_pathlen] = '\0';\n            pFVar16 = fts_build(sp,3);\n            if (pFVar16 != (FTSENT *)0x0) {\n              free(pFVar13);\n              goto LAB_00117587;\n            }\n            if ((sp->fts_options & 0x4000) != 0) {\n              return (FTSENT *)0x0;\n            }\n          }\n          pFVar16 = pFVar13->fts_parent;\n          sp->fts_cur = pFVar16;\n          free(pFVar13);\n          if (pFVar16->fts_level == -1) {\n            free(pFVar16);\n            piVar12 = __errno_location();\n            *piVar12 = 0;\n            sp->fts_cur = (_ftsent *)0x0;\n            return (FTSENT *)0x0;\n          }\n          if (pFVar16->fts_info == 0xb) {\n                    /* WARNING: Subroutine does not return */\n            abort();\n          }\n          sp->fts_path[pFVar16->fts_pathlen] = '\0';\n          if (pFVar16->fts_level == 0) {\n            iVar9 = restore_initial_cwd(sp);\n            if (iVar9 == 0) goto LAB_001177a7;\n            piVar12 = __errno_location();\n            pFVar16->fts_errno = *piVar12;\n            sp->fts_options = sp->fts_options | 0x4000;\nLAB_001179e4:\n            if (pFVar16->fts_info == 2) {\n              return (FTSENT *)0x0;\n            }\n          }\n          else {\n            if ((pFVar16->fts_flags & 2) == 0) {\n              if (((pFVar16->fts_flags & 1) == 0) &&\n                 (iVar9 = fts_safe_changedir(sp,pFVar16->fts_parent,-1,".."), iVar9 != 0)) {\n                piVar12 = __errno_location();\n                pFVar16->fts_errno = *piVar12;\n                sp->fts_options = sp->fts_options | 0x4000;\n                goto LAB_001179e4;\n              }\n            }\n            else {\n              if ((sp->fts_options & 4U) == 0) {\n                if ((sp->fts_options & 0x200U) == 0) {\n                  iVar9 = fchdir(pFVar16->fts_symfd);\n                  if (iVar9 != 0) {\n                    piVar12 = __errno_location();\n                    pFVar16->fts_errno = *piVar12;\n                    sp->fts_options = sp->fts_options | 0x4000;\n                  }\n                }\n                else {\n                  cwd_advance_fd(sp,pFVar16->fts_symfd,true);\n                }\n              }\n              close(pFVar16->fts_symfd);\n            }\nLAB_001177a7:\n            if (pFVar16->fts_info == 2) goto LAB_00117a88;\n          }\n          if (pFVar16->fts_errno == 0) {\n            pFVar16->fts_info = 6;\n            leave_dir(sp,pFVar16);\n          }\n          else {\n            pFVar16->fts_info = 7;\n          }\nLAB_00117a88:\n          if ((sp->fts_options & 0x4000U) != 0) {\n            return (FTSENT *)0x0;\n          }\n          return pFVar16;\n        }" { (expression_statement "p_Var5 = pFVar13->fts_parent;" (assignment_expression "p_Var5 = pFVar13->fts_parent" identifier = (field_expression "pFVar13->fts_parent" identifier -> field_identifier)) ;) (if_statement "if (p_Var5->fts_dirp != (DIR *)0x0) {\n            sp->fts_cur = p_Var5;\n            sp->fts_path[p_Var5->fts_pathlen] = '\0';\n            pFVar16 = fts_build(sp,3);\n            if (pFVar16 != (FTSENT *)0x0) {\n              free(pFVar13);\n              goto LAB_00117587;\n            }\n            if ((sp->fts_options & 0x4000) != 0) {\n              return (FTSENT *)0x0;\n            }\n          }" if (parenthesized_expression "(p_Var5->fts_dirp != (DIR *)0x0)" ( (binary_expression "p_Var5->fts_dirp != (DIR *)0x0" (field_expression "p_Var5->fts_dirp" identifier -> field_identifier) != (cast_expression "(DIR *)0x0" ( (type_descriptor "DIR *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            sp->fts_cur = p_Var5;\n            sp->fts_path[p_Var5->fts_pathlen] = '\0';\n            pFVar16 = fts_build(sp,3);\n            if (pFVar16 != (FTSENT *)0x0) {\n              free(pFVar13);\n              goto LAB_00117587;\n            }\n            if ((sp->fts_options & 0x4000) != 0) {\n              return (FTSENT *)0x0;\n            }\n          }" { (expression_statement "sp->fts_cur = p_Var5;" (assignment_expression "sp->fts_cur = p_Var5" (field_expression "sp->fts_cur" identifier -> field_identifier) = identifier) ;) (expression_statement "sp->fts_path[p_Var5->fts_pathlen] = '\0';" (assignment_expression "sp->fts_path[p_Var5->fts_pathlen] = '\0'" (subscript_expression "sp->fts_path[p_Var5->fts_pathlen]" (field_expression "sp->fts_path" identifier -> field_identifier) [ (field_expression "p_Var5->fts_pathlen" identifier -> field_identifier) ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "pFVar16 = fts_build(sp,3);" (assignment_expression "pFVar16 = fts_build(sp,3)" identifier = (call_expression "fts_build(sp,3)" identifier (argument_list "(sp,3)" ( identifier , number_literal )))) ;) (if_statement "if (pFVar16 != (FTSENT *)0x0) {\n              free(pFVar13);\n              goto LAB_00117587;\n            }" if (parenthesized_expression "(pFVar16 != (FTSENT *)0x0)" ( (binary_expression "pFVar16 != (FTSENT *)0x0" identifier != (cast_expression "(FTSENT *)0x0" ( (type_descriptor "FTSENT *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n              free(pFVar13);\n              goto LAB_00117587;\n            }" { (expression_statement "free(pFVar13);" (call_expression "free(pFVar13)" identifier (argument_list "(pFVar13)" ( identifier ))) ;) (goto_statement "goto LAB_00117587;" goto statement_identifier ;) })) (if_statement "if ((sp->fts_options & 0x4000) != 0) {\n              return (FTSENT *)0x0;\n            }" if (parenthesized_expression "((sp->fts_options & 0x4000) != 0)" ( (binary_expression "(sp->fts_options & 0x4000) != 0" (parenthesized_expression "(sp->fts_options & 0x4000)" ( (binary_expression "sp->fts_options & 0x4000" (field_expression "sp->fts_options" identifier -> field_identifier) & number_literal) )) != number_literal) )) (compound_statement "{\n              return (FTSENT *)0x0;\n            }" { (return_statement "return (FTSENT *)0x0;" return (cast_expression "(FTSENT *)0x0" ( (type_descriptor "FTSENT *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) })) (expression_statement "pFVar16 = pFVar13->fts_parent;" (assignment_expression "pFVar16 = pFVar13->fts_parent" identifier = (field_expression "pFVar13->fts_parent" identifier -> field_identifier)) ;) (expression_statement "sp->fts_cur = pFVar16;" (assignment_expression "sp->fts_cur = pFVar16" (field_expression "sp->fts_cur" identifier -> field_identifier) = identifier) ;) (expression_statement "free(pFVar13);" (call_expression "free(pFVar13)" identifier (argument_list "(pFVar13)" ( identifier ))) ;) (if_statement "if (pFVar16->fts_level == -1) {\n            free(pFVar16);\n            piVar12 = __errno_location();\n            *piVar12 = 0;\n            sp->fts_cur = (_ftsent *)0x0;\n            return (FTSENT *)0x0;\n          }" if (parenthesized_expression "(pFVar16->fts_level == -1)" ( (binary_expression "pFVar16->fts_level == -1" (field_expression "pFVar16->fts_level" identifier -> field_identifier) == number_literal) )) (compound_statement "{\n            free(pFVar16);\n            piVar12 = __errno_location();\n            *piVar12 = 0;\n            sp->fts_cur = (_ftsent *)0x0;\n            return (FTSENT *)0x0;\n          }" { (expression_statement "free(pFVar16);" (call_expression "free(pFVar16)" identifier (argument_list "(pFVar16)" ( identifier ))) ;) (expression_statement "piVar12 = __errno_location();" (assignment_expression "piVar12 = __errno_location()" identifier = (call_expression "__errno_location()" identifier (argument_list "()" ( )))) ;) (expression_statement "*piVar12 = 0;" (assignment_expression "*piVar12 = 0" (pointer_expression "*piVar12" * identifier) = number_literal) ;) (expression_statement "sp->fts_cur = (_ftsent *)0x0;" (assignment_expression "sp->fts_cur = (_ftsent *)0x0" (field_expression "sp->fts_cur" identifier -> field_identifier) = (cast_expression "(_ftsent *)0x0" ( (type_descriptor "_ftsent *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (return_statement "return (FTSENT *)0x0;" return (cast_expression "(FTSENT *)0x0" ( (type_descriptor "FTSENT *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (if_statement "if (pFVar16->fts_info == 0xb) {\n                    /* WARNING: Subroutine does not return */\n            abort();\n          }" if (parenthesized_expression "(pFVar16->fts_info == 0xb)" ( (binary_expression "pFVar16->fts_info == 0xb" (field_expression "pFVar16->fts_info" identifier -> field_identifier) == number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n            abort();\n          }" { comment (expression_statement "abort();" (call_expression "abort()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "sp->fts_path[pFVar16->fts_pathlen] = '\0';" (assignment_expression "sp->fts_path[pFVar16->fts_pathlen] = '\0'" (subscript_expression "sp->fts_path[pFVar16->fts_pathlen]" (field_expression "sp->fts_path" identifier -> field_identifier) [ (field_expression "pFVar16->fts_pathlen" identifier -> field_identifier) ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (if_statement "if (pFVar16->fts_level == 0) {\n            iVar9 = restore_initial_cwd(sp);\n            if (iVar9 == 0) goto LAB_001177a7;\n            piVar12 = __errno_location();\n            pFVar16->fts_errno = *piVar12;\n            sp->fts_options = sp->fts_options | 0x4000;\nLAB_001179e4:\n            if (pFVar16->fts_info == 2) {\n              return (FTSENT *)0x0;\n            }\n          }\n          else {\n            if ((pFVar16->fts_flags & 2) == 0) {\n              if (((pFVar16->fts_flags & 1) == 0) &&\n                 (iVar9 = fts_safe_changedir(sp,pFVar16->fts_parent,-1,".."), iVar9 != 0)) {\n                piVar12 = __errno_location();\n                pFVar16->fts_errno = *piVar12;\n                sp->fts_options = sp->fts_options | 0x4000;\n                goto LAB_001179e4;\n              }\n            }\n            else {\n              if ((sp->fts_options & 4U) == 0) {\n                if ((sp->fts_options & 0x200U) == 0) {\n                  iVar9 = fchdir(pFVar16->fts_symfd);\n                  if (iVar9 != 0) {\n                    piVar12 = __errno_location();\n                    pFVar16->fts_errno = *piVar12;\n                    sp->fts_options = sp->fts_options | 0x4000;\n                  }\n                }\n                else {\n                  cwd_advance_fd(sp,pFVar16->fts_symfd,true);\n                }\n              }\n              close(pFVar16->fts_symfd);\n            }\nLAB_001177a7:\n            if (pFVar16->fts_info == 2) goto LAB_00117a88;\n          }" if (parenthesized_expression "(pFVar16->fts_level == 0)" ( (binary_expression "pFVar16->fts_level == 0" (field_expression "pFVar16->fts_level" identifier -> field_identifier) == number_literal) )) (compound_statement "{\n            iVar9 = restore_initial_cwd(sp);\n            if (iVar9 == 0) goto LAB_001177a7;\n            piVar12 = __errno_location();\n            pFVar16->fts_errno = *piVar12;\n            sp->fts_options = sp->fts_options | 0x4000;\nLAB_001179e4:\n            if (pFVar16->fts_info == 2) {\n              return (FTSENT *)0x0;\n            }\n          }" { (expression_statement "iVar9 = restore_initial_cwd(sp);" (assignment_expression "iVar9 = restore_initial_cwd(sp)" identifier = (call_expression "restore_initial_cwd(sp)" identifier (argument_list "(sp)" ( identifier )))) ;) (if_statement "if (iVar9 == 0) goto LAB_001177a7;" if (parenthesized_expression "(iVar9 == 0)" ( (binary_expression "iVar9 == 0" identifier == number_literal) )) (goto_statement "goto LAB_001177a7;" goto statement_identifier ;)) (expression_statement "piVar12 = __errno_location();" (assignment_expression "piVar12 = __errno_location()" identifier = (call_expression "__errno_location()" identifier (argument_list "()" ( )))) ;) (expression_statement "pFVar16->fts_errno = *piVar12;" (assignment_expression "pFVar16->fts_errno = *piVar12" (field_expression "pFVar16->fts_errno" identifier -> field_identifier) = (pointer_expression "*piVar12" * identifier)) ;) (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)) ;) (labeled_statement "LAB_001179e4:\n            if (pFVar16->fts_info == 2) {\n              return (FTSENT *)0x0;\n            }" statement_identifier : (if_statement "if (pFVar16->fts_info == 2) {\n              return (FTSENT *)0x0;\n            }" if (parenthesized_expression "(pFVar16->fts_info == 2)" ( (binary_expression "pFVar16->fts_info == 2" (field_expression "pFVar16->fts_info" identifier -> field_identifier) == number_literal) )) (compound_statement "{\n              return (FTSENT *)0x0;\n            }" { (return_statement "return (FTSENT *)0x0;" return (cast_expression "(FTSENT *)0x0" ( (type_descriptor "FTSENT *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) }))) }) (else_clause "else {\n            if ((pFVar16->fts_flags & 2) == 0) {\n              if (((pFVar16->fts_flags & 1) == 0) &&\n                 (iVar9 = fts_safe_changedir(sp,pFVar16->fts_parent,-1,".."), iVar9 != 0)) {\n                piVar12 = __errno_location();\n                pFVar16->fts_errno = *piVar12;\n                sp->fts_options = sp->fts_options | 0x4000;\n                goto LAB_001179e4;\n              }\n            }\n            else {\n              if ((sp->fts_options & 4U) == 0) {\n                if ((sp->fts_options & 0x200U) == 0) {\n                  iVar9 = fchdir(pFVar16->fts_symfd);\n                  if (iVar9 != 0) {\n                    piVar12 = __errno_location();\n                    pFVar16->fts_errno = *piVar12;\n                    sp->fts_options = sp->fts_options | 0x4000;\n                  }\n                }\n                else {\n                  cwd_advance_fd(sp,pFVar16->fts_symfd,true);\n                }\n              }\n              close(pFVar16->fts_symfd);\n            }\nLAB_001177a7:\n            if (pFVar16->fts_info == 2) goto LAB_00117a88;\n          }" else (compound_statement "{\n            if ((pFVar16->fts_flags & 2) == 0) {\n              if (((pFVar16->fts_flags & 1) == 0) &&\n                 (iVar9 = fts_safe_changedir(sp,pFVar16->fts_parent,-1,".."), iVar9 != 0)) {\n                piVar12 = __errno_location();\n                pFVar16->fts_errno = *piVar12;\n                sp->fts_options = sp->fts_options | 0x4000;\n                goto LAB_001179e4;\n              }\n            }\n            else {\n              if ((sp->fts_options & 4U) == 0) {\n                if ((sp->fts_options & 0x200U) == 0) {\n                  iVar9 = fchdir(pFVar16->fts_symfd);\n                  if (iVar9 != 0) {\n                    piVar12 = __errno_location();\n                    pFVar16->fts_errno = *piVar12;\n                    sp->fts_options = sp->fts_options | 0x4000;\n                  }\n                }\n                else {\n                  cwd_advance_fd(sp,pFVar16->fts_symfd,true);\n                }\n              }\n              close(pFVar16->fts_symfd);\n            }\nLAB_001177a7:\n            if (pFVar16->fts_info == 2) goto LAB_00117a88;\n          }" { (if_statement "if ((pFVar16->fts_flags & 2) == 0) {\n              if (((pFVar16->fts_flags & 1) == 0) &&\n                 (iVar9 = fts_safe_changedir(sp,pFVar16->fts_parent,-1,".."), iVar9 != 0)) {\n                piVar12 = __errno_location();\n                pFVar16->fts_errno = *piVar12;\n                sp->fts_options = sp->fts_options | 0x4000;\n                goto LAB_001179e4;\n              }\n            }\n            else {\n              if ((sp->fts_options & 4U) == 0) {\n                if ((sp->fts_options & 0x200U) == 0) {\n                  iVar9 = fchdir(pFVar16->fts_symfd);\n                  if (iVar9 != 0) {\n                    piVar12 = __errno_location();\n                    pFVar16->fts_errno = *piVar12;\n                    sp->fts_options = sp->fts_options | 0x4000;\n                  }\n                }\n                else {\n                  cwd_advance_fd(sp,pFVar16->fts_symfd,true);\n                }\n              }\n              close(pFVar16->fts_symfd);\n            }" if (parenthesized_expression "((pFVar16->fts_flags & 2) == 0)" ( (binary_expression "(pFVar16->fts_flags & 2) == 0" (parenthesized_expression "(pFVar16->fts_flags & 2)" ( (binary_expression "pFVar16->fts_flags & 2" (field_expression "pFVar16->fts_flags" identifier -> field_identifier) & number_literal) )) == number_literal) )) (compound_statement "{\n              if (((pFVar16->fts_flags & 1) == 0) &&\n                 (iVar9 = fts_safe_changedir(sp,pFVar16->fts_parent,-1,".."), iVar9 != 0)) {\n                piVar12 = __errno_location();\n                pFVar16->fts_errno = *piVar12;\n                sp->fts_options = sp->fts_options | 0x4000;\n                goto LAB_001179e4;\n              }\n            }" { (if_statement "if (((pFVar16->fts_flags & 1) == 0) &&\n                 (iVar9 = fts_safe_changedir(sp,pFVar16->fts_parent,-1,".."), iVar9 != 0)) {\n                piVar12 = __errno_location();\n                pFVar16->fts_errno = *piVar12;\n                sp->fts_options = sp->fts_options | 0x4000;\n                goto LAB_001179e4;\n              }" if (parenthesized_expression "(((pFVar16->fts_flags & 1) == 0) &&\n                 (iVar9 = fts_safe_changedir(sp,pFVar16->fts_parent,-1,".."), iVar9 != 0))" ( (binary_expression "((pFVar16->fts_flags & 1) == 0) &&\n                 (iVar9 = fts_safe_changedir(sp,pFVar16->fts_parent,-1,".."), iVar9 != 0)" (parenthesized_expression "((pFVar16->fts_flags & 1) == 0)" ( (binary_expression "(pFVar16->fts_flags & 1) == 0" (parenthesized_expression "(pFVar16->fts_flags & 1)" ( (binary_expression "pFVar16->fts_flags & 1" (field_expression "pFVar16->fts_flags" identifier -> field_identifier) & number_literal) )) == number_literal) )) && (parenthesized_expression "(iVar9 = fts_safe_changedir(sp,pFVar16->fts_parent,-1,".."), iVar9 != 0)" ( (comma_expression "iVar9 = fts_safe_changedir(sp,pFVar16->fts_parent,-1,".."), iVar9 != 0" (assignment_expression "iVar9 = fts_safe_changedir(sp,pFVar16->fts_parent,-1,"..")" identifier = (call_expression "fts_safe_changedir(sp,pFVar16->fts_parent,-1,"..")" identifier (argument_list "(sp,pFVar16->fts_parent,-1,"..")" ( identifier , (field_expression "pFVar16->fts_parent" identifier -> field_identifier) , number_literal , (string_literal "".."" " string_content ") )))) , (binary_expression "iVar9 != 0" identifier != number_literal)) ))) )) (compound_statement "{\n                piVar12 = __errno_location();\n                pFVar16->fts_errno = *piVar12;\n                sp->fts_options = sp->fts_options | 0x4000;\n                goto LAB_001179e4;\n              }" { (expression_statement "piVar12 = __errno_location();" (assignment_expression "piVar12 = __errno_location()" identifier = (call_expression "__errno_location()" identifier (argument_list "()" ( )))) ;) (expression_statement "pFVar16->fts_errno = *piVar12;" (assignment_expression "pFVar16->fts_errno = *piVar12" (field_expression "pFVar16->fts_errno" identifier -> field_identifier) = (pointer_expression "*piVar12" * identifier)) ;) (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)) ;) (goto_statement "goto LAB_001179e4;" goto statement_identifier ;) })) }) (else_clause "else {\n              if ((sp->fts_options & 4U) == 0) {\n                if ((sp->fts_options & 0x200U) == 0) {\n                  iVar9 = fchdir(pFVar16->fts_symfd);\n                  if (iVar9 != 0) {\n                    piVar12 = __errno_location();\n                    pFVar16->fts_errno = *piVar12;\n                    sp->fts_options = sp->fts_options | 0x4000;\n                  }\n                }\n                else {\n                  cwd_advance_fd(sp,pFVar16->fts_symfd,true);\n                }\n              }\n              close(pFVar16->fts_symfd);\n            }" else (compound_statement "{\n              if ((sp->fts_options & 4U) == 0) {\n                if ((sp->fts_options & 0x200U) == 0) {\n                  iVar9 = fchdir(pFVar16->fts_symfd);\n                  if (iVar9 != 0) {\n                    piVar12 = __errno_location();\n                    pFVar16->fts_errno = *piVar12;\n                    sp->fts_options = sp->fts_options | 0x4000;\n                  }\n                }\n                else {\n                  cwd_advance_fd(sp,pFVar16->fts_symfd,true);\n                }\n              }\n              close(pFVar16->fts_symfd);\n            }" { (if_statement "if ((sp->fts_options & 4U) == 0) {\n                if ((sp->fts_options & 0x200U) == 0) {\n                  iVar9 = fchdir(pFVar16->fts_symfd);\n                  if (iVar9 != 0) {\n                    piVar12 = __errno_location();\n                    pFVar16->fts_errno = *piVar12;\n                    sp->fts_options = sp->fts_options | 0x4000;\n                  }\n                }\n                else {\n                  cwd_advance_fd(sp,pFVar16->fts_symfd,true);\n                }\n              }" if (parenthesized_expression "((sp->fts_options & 4U) == 0)" ( (binary_expression "(sp->fts_options & 4U) == 0" (parenthesized_expression "(sp->fts_options & 4U)" ( (binary_expression "sp->fts_options & 4U" (field_expression "sp->fts_options" identifier -> field_identifier) & number_literal) )) == number_literal) )) (compound_statement "{\n                if ((sp->fts_options & 0x200U) == 0) {\n                  iVar9 = fchdir(pFVar16->fts_symfd);\n                  if (iVar9 != 0) {\n                    piVar12 = __errno_location();\n                    pFVar16->fts_errno = *piVar12;\n                    sp->fts_options = sp->fts_options | 0x4000;\n                  }\n                }\n                else {\n                  cwd_advance_fd(sp,pFVar16->fts_symfd,true);\n                }\n              }" { (if_statement "if ((sp->fts_options & 0x200U) == 0) {\n                  iVar9 = fchdir(pFVar16->fts_symfd);\n                  if (iVar9 != 0) {\n                    piVar12 = __errno_location();\n                    pFVar16->fts_errno = *piVar12;\n                    sp->fts_options = sp->fts_options | 0x4000;\n                  }\n                }\n                else {\n                  cwd_advance_fd(sp,pFVar16->fts_symfd,true);\n                }" if (parenthesized_expression "((sp->fts_options & 0x200U) == 0)" ( (binary_expression "(sp->fts_options & 0x200U) == 0" (parenthesized_expression "(sp->fts_options & 0x200U)" ( (binary_expression "sp->fts_options & 0x200U" (field_expression "sp->fts_options" identifier -> field_identifier) & number_literal) )) == number_literal) )) (compound_statement "{\n                  iVar9 = fchdir(pFVar16->fts_symfd);\n                  if (iVar9 != 0) {\n                    piVar12 = __errno_location();\n                    pFVar16->fts_errno = *piVar12;\n                    sp->fts_options = sp->fts_options | 0x4000;\n                  }\n                }" { (expression_statement "iVar9 = fchdir(pFVar16->fts_symfd);" (assignment_expression "iVar9 = fchdir(pFVar16->fts_symfd)" identifier = (call_expression "fchdir(pFVar16->fts_symfd)" identifier (argument_list "(pFVar16->fts_symfd)" ( (field_expression "pFVar16->fts_symfd" identifier -> field_identifier) )))) ;) (if_statement "if (iVar9 != 0) {\n                    piVar12 = __errno_location();\n                    pFVar16->fts_errno = *piVar12;\n                    sp->fts_options = sp->fts_options | 0x4000;\n                  }" if (parenthesized_expression "(iVar9 != 0)" ( (binary_expression "iVar9 != 0" identifier != number_literal) )) (compound_statement "{\n                    piVar12 = __errno_location();\n                    pFVar16->fts_errno = *piVar12;\n                    sp->fts_options = sp->fts_options | 0x4000;\n                  }" { (expression_statement "piVar12 = __errno_location();" (assignment_expression "piVar12 = __errno_location()" identifier = (call_expression "__errno_location()" identifier (argument_list "()" ( )))) ;) (expression_statement "pFVar16->fts_errno = *piVar12;" (assignment_expression "pFVar16->fts_errno = *piVar12" (field_expression "pFVar16->fts_errno" identifier -> field_identifier) = (pointer_expression "*piVar12" * identifier)) ;) (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)) ;) })) }) (else_clause "else {\n                  cwd_advance_fd(sp,pFVar16->fts_symfd,true);\n                }" else (compound_statement "{\n                  cwd_advance_fd(sp,pFVar16->fts_symfd,true);\n                }" { (expression_statement "cwd_advance_fd(sp,pFVar16->fts_symfd,true);" (call_expression "cwd_advance_fd(sp,pFVar16->fts_symfd,true)" identifier (argument_list "(sp,pFVar16->fts_symfd,true)" ( identifier , (field_expression "pFVar16->fts_symfd" identifier -> field_identifier) , true ))) ;) }))) })) (expression_statement "close(pFVar16->fts_symfd);" (call_expression "close(pFVar16->fts_symfd)" identifier (argument_list "(pFVar16->fts_symfd)" ( (field_expression "pFVar16->fts_symfd" identifier -> field_identifier) ))) ;) }))) (labeled_statement "LAB_001177a7:\n            if (pFVar16->fts_info == 2) goto LAB_00117a88;" statement_identifier : (if_statement "if (pFVar16->fts_info == 2) goto LAB_00117a88;" if (parenthesized_expression "(pFVar16->fts_info == 2)" ( (binary_expression "pFVar16->fts_info == 2" (field_expression "pFVar16->fts_info" identifier -> field_identifier) == number_literal) )) (goto_statement "goto LAB_00117a88;" goto statement_identifier ;))) }))) (if_statement "if (pFVar16->fts_errno == 0) {\n            pFVar16->fts_info = 6;\n            leave_dir(sp,pFVar16);\n          }\n          else {\n            pFVar16->fts_info = 7;\n          }" if (parenthesized_expression "(pFVar16->fts_errno == 0)" ( (binary_expression "pFVar16->fts_errno == 0" (field_expression "pFVar16->fts_errno" identifier -> field_identifier) == number_literal) )) (compound_statement "{\n            pFVar16->fts_info = 6;\n            leave_dir(sp,pFVar16);\n          }" { (expression_statement "pFVar16->fts_info = 6;" (assignment_expression "pFVar16->fts_info = 6" (field_expression "pFVar16->fts_info" identifier -> field_identifier) = number_literal) ;) (expression_statement "leave_dir(sp,pFVar16);" (call_expression "leave_dir(sp,pFVar16)" identifier (argument_list "(sp,pFVar16)" ( identifier , identifier ))) ;) }) (else_clause "else {\n            pFVar16->fts_info = 7;\n          }" else (compound_statement "{\n            pFVar16->fts_info = 7;\n          }" { (expression_statement "pFVar16->fts_info = 7;" (assignment_expression "pFVar16->fts_info = 7" (field_expression "pFVar16->fts_info" identifier -> field_identifier) = number_literal) ;) }))) (labeled_statement "LAB_00117a88:\n          if ((sp->fts_options & 0x4000U) != 0) {\n            return (FTSENT *)0x0;\n          }" statement_identifier : (if_statement "if ((sp->fts_options & 0x4000U) != 0) {\n            return (FTSENT *)0x0;\n          }" if (parenthesized_expression "((sp->fts_options & 0x4000U) != 0)" ( (binary_expression "(sp->fts_options & 0x4000U) != 0" (parenthesized_expression "(sp->fts_options & 0x4000U)" ( (binary_expression "sp->fts_options & 0x4000U" (field_expression "sp->fts_options" identifier -> field_identifier) & number_literal) )) != number_literal) )) (compound_statement "{\n            return (FTSENT *)0x0;\n          }" { (return_statement "return (FTSENT *)0x0;" return (cast_expression "(FTSENT *)0x0" ( (type_descriptor "FTSENT *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) }))) (return_statement "return pFVar16;" return identifier ;) })) (expression_statement "sp->fts_cur = pFVar16;" (assignment_expression "sp->fts_cur = pFVar16" (field_expression "sp->fts_cur" identifier -> field_identifier) = identifier) ;) (expression_statement "free(pFVar13);" (call_expression "free(pFVar13)" identifier (argument_list "(pFVar13)" ( identifier ))) ;) (if_statement "if (pFVar16->fts_level == 0) {\n          iVar9 = restore_initial_cwd(sp);\n          if (iVar9 != 0) {\n            sp->fts_options = sp->fts_options | 0x4000;\n            return (FTSENT *)0x0;\n          }\n          free_dir(sp);\n          pFVar16->fts_pathlen = pFVar16->fts_namelen;\n          pFVar13 = pFVar16 + 1;\n          memmove(sp->fts_path,pFVar13,pFVar16->fts_namelen + 1);\n          pFVar14 = (FTSENT *)strrchr((char *)pFVar13,0x2f);\n          if ((pFVar14 == (FTSENT *)0x0) ||\n             ((pFVar13 == pFVar14 && (*(char *)((long)&pFVar14->fts_cycle + 1) == '\0'))))\n          goto LAB_0011784f;\n          pcVar4 = (char *)((long)&pFVar14->fts_cycle + 1);\n          uVar15 = 0xffffffffffffffff;\n          pcVar17 = pcVar4;\n          goto code_r0x00117837;\n        }" if (parenthesized_expression "(pFVar16->fts_level == 0)" ( (binary_expression "pFVar16->fts_level == 0" (field_expression "pFVar16->fts_level" identifier -> field_identifier) == number_literal) )) (compound_statement "{\n          iVar9 = restore_initial_cwd(sp);\n          if (iVar9 != 0) {\n            sp->fts_options = sp->fts_options | 0x4000;\n            return (FTSENT *)0x0;\n          }\n          free_dir(sp);\n          pFVar16->fts_pathlen = pFVar16->fts_namelen;\n          pFVar13 = pFVar16 + 1;\n          memmove(sp->fts_path,pFVar13,pFVar16->fts_namelen + 1);\n          pFVar14 = (FTSENT *)strrchr((char *)pFVar13,0x2f);\n          if ((pFVar14 == (FTSENT *)0x0) ||\n             ((pFVar13 == pFVar14 && (*(char *)((long)&pFVar14->fts_cycle + 1) == '\0'))))\n          goto LAB_0011784f;\n          pcVar4 = (char *)((long)&pFVar14->fts_cycle + 1);\n          uVar15 = 0xffffffffffffffff;\n          pcVar17 = pcVar4;\n          goto code_r0x00117837;\n        }" { (expression_statement "iVar9 = restore_initial_cwd(sp);" (assignment_expression "iVar9 = restore_initial_cwd(sp)" identifier = (call_expression "restore_initial_cwd(sp)" identifier (argument_list "(sp)" ( identifier )))) ;) (if_statement "if (iVar9 != 0) {\n            sp->fts_options = sp->fts_options | 0x4000;\n            return (FTSENT *)0x0;\n          }" if (parenthesized_expression "(iVar9 != 0)" ( (binary_expression "iVar9 != 0" identifier != number_literal) )) (compound_statement "{\n            sp->fts_options = sp->fts_options | 0x4000;\n            return (FTSENT *)0x0;\n          }" { (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)) ;) (return_statement "return (FTSENT *)0x0;" return (cast_expression "(FTSENT *)0x0" ( (type_descriptor "FTSENT *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (expression_statement "free_dir(sp);" (call_expression "free_dir(sp)" identifier (argument_list "(sp)" ( identifier ))) ;) (expression_statement "pFVar16->fts_pathlen = pFVar16->fts_namelen;" (assignment_expression "pFVar16->fts_pathlen = pFVar16->fts_namelen" (field_expression "pFVar16->fts_pathlen" identifier -> field_identifier) = (field_expression "pFVar16->fts_namelen" identifier -> field_identifier)) ;) (expression_statement "pFVar13 = pFVar16 + 1;" (assignment_expression "pFVar13 = pFVar16 + 1" identifier = (binary_expression "pFVar16 + 1" identifier + number_literal)) ;) (expression_statement "memmove(sp->fts_path,pFVar13,pFVar16->fts_namelen + 1);" (call_expression "memmove(sp->fts_path,pFVar13,pFVar16->fts_namelen + 1)" identifier (argument_list "(sp->fts_path,pFVar13,pFVar16->fts_namelen + 1)" ( (field_expression "sp->fts_path" identifier -> field_identifier) , identifier , (binary_expression "pFVar16->fts_namelen + 1" (field_expression "pFVar16->fts_namelen" identifier -> field_identifier) + number_literal) ))) ;) (expression_statement "pFVar14 = (FTSENT *)strrchr((char *)pFVar13,0x2f);" (assignment_expression "pFVar14 = (FTSENT *)strrchr((char *)pFVar13,0x2f)" identifier = (cast_expression "(FTSENT *)strrchr((char *)pFVar13,0x2f)" ( (type_descriptor "FTSENT *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "strrchr((char *)pFVar13,0x2f)" identifier (argument_list "((char *)pFVar13,0x2f)" ( (cast_expression "(char *)pFVar13" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , number_literal ))))) ;) (if_statement "if ((pFVar14 == (FTSENT *)0x0) ||\n             ((pFVar13 == pFVar14 && (*(char *)((long)&pFVar14->fts_cycle + 1) == '\0'))))\n          goto LAB_0011784f;" if (parenthesized_expression "((pFVar14 == (FTSENT *)0x0) ||\n             ((pFVar13 == pFVar14 && (*(char *)((long)&pFVar14->fts_cycle + 1) == '\0'))))" ( (binary_expression "(pFVar14 == (FTSENT *)0x0) ||\n             ((pFVar13 == pFVar14 && (*(char *)((long)&pFVar14->fts_cycle + 1) == '\0')))" (parenthesized_expression "(pFVar14 == (FTSENT *)0x0)" ( (binary_expression "pFVar14 == (FTSENT *)0x0" identifier == (cast_expression "(FTSENT *)0x0" ( (type_descriptor "FTSENT *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "((pFVar13 == pFVar14 && (*(char *)((long)&pFVar14->fts_cycle + 1) == '\0')))" ( (parenthesized_expression "(pFVar13 == pFVar14 && (*(char *)((long)&pFVar14->fts_cycle + 1) == '\0'))" ( (binary_expression "pFVar13 == pFVar14 && (*(char *)((long)&pFVar14->fts_cycle + 1) == '\0')" (binary_expression "pFVar13 == pFVar14" identifier == identifier) && (parenthesized_expression "(*(char *)((long)&pFVar14->fts_cycle + 1) == '\0')" ( (binary_expression "*(char *)((long)&pFVar14->fts_cycle + 1) == '\0'" (pointer_expression "*(char *)((long)&pFVar14->fts_cycle + 1)" * (cast_expression "(char *)((long)&pFVar14->fts_cycle + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)&pFVar14->fts_cycle + 1)" ( (binary_expression "(long)&pFVar14->fts_cycle + 1" (cast_expression "(long)&pFVar14->fts_cycle" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "&pFVar14->fts_cycle" & (field_expression "pFVar14->fts_cycle" identifier -> field_identifier))) + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) ))) )) ))) )) (goto_statement "goto LAB_0011784f;" goto statement_identifier ;)) (expression_statement "pcVar4 = (char *)((long)&pFVar14->fts_cycle + 1);" (assignment_expression "pcVar4 = (char *)((long)&pFVar14->fts_cycle + 1)" identifier = (cast_expression "(char *)((long)&pFVar14->fts_cycle + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)&pFVar14->fts_cycle + 1)" ( (binary_expression "(long)&pFVar14->fts_cycle + 1" (cast_expression "(long)&pFVar14->fts_cycle" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "&pFVar14->fts_cycle" & (field_expression "pFVar14->fts_cycle" identifier -> field_identifier))) + number_literal) )))) ;) (expression_statement "uVar15 = 0xffffffffffffffff;" (assignment_expression "uVar15 = 0xffffffffffffffff" identifier = number_literal) ;) (expression_statement "pcVar17 = pcVar4;" (assignment_expression "pcVar17 = pcVar4" identifier = identifier) ;) (goto_statement "goto code_r0x00117837;" goto statement_identifier ;) })) (expression_statement "pFVar13 = pFVar16;" (assignment_expression "pFVar13 = pFVar16" identifier = identifier) ;) }) while (parenthesized_expression "(pFVar16->fts_instr == 4)" ( (binary_expression "pFVar16->fts_instr == 4" (field_expression "pFVar16->fts_instr" identifier -> field_identifier) == number_literal) )) ;)) (if_statement "if (pFVar16->fts_instr == 2) {\n        uVar8 = fts_stat(sp,pFVar16,true);\n        pFVar16->fts_info = uVar8;\n        if ((uVar8 == 1) && ((sp->fts_options & 4) == 0)) {\n          iVar9 = diropen(sp,".");\n          pFVar16->fts_symfd = iVar9;\n          if (iVar9 < 0) {\n            piVar12 = __errno_location();\n            pFVar16->fts_errno = *piVar12;\n            pFVar16->fts_info = 7;\n          }\n          else {\n            pFVar16->fts_flags = pFVar16->fts_flags | 2;\n          }\n        }\n        pFVar16->fts_instr = 3;\n      }" if (parenthesized_expression "(pFVar16->fts_instr == 2)" ( (binary_expression "pFVar16->fts_instr == 2" (field_expression "pFVar16->fts_instr" identifier -> field_identifier) == number_literal) )) (compound_statement "{\n        uVar8 = fts_stat(sp,pFVar16,true);\n        pFVar16->fts_info = uVar8;\n        if ((uVar8 == 1) && ((sp->fts_options & 4) == 0)) {\n          iVar9 = diropen(sp,".");\n          pFVar16->fts_symfd = iVar9;\n          if (iVar9 < 0) {\n            piVar12 = __errno_location();\n            pFVar16->fts_errno = *piVar12;\n            pFVar16->fts_info = 7;\n          }\n          else {\n            pFVar16->fts_flags = pFVar16->fts_flags | 2;\n          }\n        }\n        pFVar16->fts_instr = 3;\n      }" { (expression_statement "uVar8 = fts_stat(sp,pFVar16,true);" (assignment_expression "uVar8 = fts_stat(sp,pFVar16,true)" identifier = (call_expression "fts_stat(sp,pFVar16,true)" identifier (argument_list "(sp,pFVar16,true)" ( identifier , identifier , true )))) ;) (expression_statement "pFVar16->fts_info = uVar8;" (assignment_expression "pFVar16->fts_info = uVar8" (field_expression "pFVar16->fts_info" identifier -> field_identifier) = identifier) ;) (if_statement "if ((uVar8 == 1) && ((sp->fts_options & 4) == 0)) {\n          iVar9 = diropen(sp,".");\n          pFVar16->fts_symfd = iVar9;\n          if (iVar9 < 0) {\n            piVar12 = __errno_location();\n            pFVar16->fts_errno = *piVar12;\n            pFVar16->fts_info = 7;\n          }\n          else {\n            pFVar16->fts_flags = pFVar16->fts_flags | 2;\n          }\n        }" if (parenthesized_expression "((uVar8 == 1) && ((sp->fts_options & 4) == 0))" ( (binary_expression "(uVar8 == 1) && ((sp->fts_options & 4) == 0)" (parenthesized_expression "(uVar8 == 1)" ( (binary_expression "uVar8 == 1" identifier == number_literal) )) && (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          iVar9 = diropen(sp,".");\n          pFVar16->fts_symfd = iVar9;\n          if (iVar9 < 0) {\n            piVar12 = __errno_location();\n            pFVar16->fts_errno = *piVar12;\n            pFVar16->fts_info = 7;\n          }\n          else {\n            pFVar16->fts_flags = pFVar16->fts_flags | 2;\n          }\n        }" { (expression_statement "iVar9 = diropen(sp,".");" (assignment_expression "iVar9 = diropen(sp,".")" identifier = (call_expression "diropen(sp,".")" identifier (argument_list "(sp,".")" ( identifier , (string_literal ""."" " string_content ") )))) ;) (expression_statement "pFVar16->fts_symfd = iVar9;" (assignment_expression "pFVar16->fts_symfd = iVar9" (field_expression "pFVar16->fts_symfd" identifier -> field_identifier) = identifier) ;) (if_statement "if (iVar9 < 0) {\n            piVar12 = __errno_location();\n            pFVar16->fts_errno = *piVar12;\n            pFVar16->fts_info = 7;\n          }\n          else {\n            pFVar16->fts_flags = pFVar16->fts_flags | 2;\n          }" if (parenthesized_expression "(iVar9 < 0)" ( (binary_expression "iVar9 < 0" identifier < number_literal) )) (compound_statement "{\n            piVar12 = __errno_location();\n            pFVar16->fts_errno = *piVar12;\n            pFVar16->fts_info = 7;\n          }" { (expression_statement "piVar12 = __errno_location();" (assignment_expression "piVar12 = __errno_location()" identifier = (call_expression "__errno_location()" identifier (argument_list "()" ( )))) ;) (expression_statement "pFVar16->fts_errno = *piVar12;" (assignment_expression "pFVar16->fts_errno = *piVar12" (field_expression "pFVar16->fts_errno" identifier -> field_identifier) = (pointer_expression "*piVar12" * identifier)) ;) (expression_statement "pFVar16->fts_info = 7;" (assignment_expression "pFVar16->fts_info = 7" (field_expression "pFVar16->fts_info" identifier -> field_identifier) = number_literal) ;) }) (else_clause "else {\n            pFVar16->fts_flags = pFVar16->fts_flags | 2;\n          }" else (compound_statement "{\n            pFVar16->fts_flags = pFVar16->fts_flags | 2;\n          }" { (expression_statement "pFVar16->fts_flags = pFVar16->fts_flags | 2;" (assignment_expression "pFVar16->fts_flags = pFVar16->fts_flags | 2" (field_expression "pFVar16->fts_flags" identifier -> field_identifier) = (binary_expression "pFVar16->fts_flags | 2" (field_expression "pFVar16->fts_flags" identifier -> field_identifier) | number_literal)) ;) }))) })) (expression_statement "pFVar16->fts_instr = 3;" (assignment_expression "pFVar16->fts_instr = 3" (field_expression "pFVar16->fts_instr" identifier -> field_identifier) = number_literal) ;) })) }))) (labeled_statement "LAB_00117587:\n    sVar3 = pFVar16->fts_parent->fts_pathlen;" statement_identifier : (expression_statement "sVar3 = pFVar16->fts_parent->fts_pathlen;" (assignment_expression "sVar3 = pFVar16->fts_parent->fts_pathlen" identifier = (field_expression "pFVar16->fts_parent->fts_pathlen" (field_expression "pFVar16->fts_parent" identifier -> field_identifier) -> field_identifier)) ;)) (expression_statement "sVar11 = sVar3 - 1;" (assignment_expression "sVar11 = sVar3 - 1" identifier = (binary_expression "sVar3 - 1" identifier - number_literal)) ;) (if_statement "if (pFVar16->fts_parent->fts_path[sVar3 - 1] != '/') {\n      sVar11 = sVar3;\n    }" if (parenthesized_expression "(pFVar16->fts_parent->fts_path[sVar3 - 1] != '/')" ( (binary_expression "pFVar16->fts_parent->fts_path[sVar3 - 1] != '/'" (subscript_expression "pFVar16->fts_parent->fts_path[sVar3 - 1]" (field_expression "pFVar16->fts_parent->fts_path" (field_expression "pFVar16->fts_parent" identifier -> field_identifier) -> field_identifier) [ (binary_expression "sVar3 - 1" identifier - number_literal) ]) != (char_literal "'/'" ' character ')) )) (compound_statement "{\n      sVar11 = sVar3;\n    }" { (expression_statement "sVar11 = sVar3;" (assignment_expression "sVar11 = sVar3" identifier = identifier) ;) })) (expression_statement "pcVar4 = sp->fts_path;" (assignment_expression "pcVar4 = sp->fts_path" identifier = (field_expression "sp->fts_path" identifier -> field_identifier)) ;) (expression_statement "pcVar4[sVar11] = '/';" (assignment_expression "pcVar4[sVar11] = '/'" (subscript_expression "pcVar4[sVar11]" identifier [ identifier ]) = (char_literal "'/'" ' character ')) ;) (expression_statement "memmove(pcVar4 + sVar11 + 1,pFVar16 + 1,pFVar16->fts_namelen + 1);" (call_expression "memmove(pcVar4 + sVar11 + 1,pFVar16 + 1,pFVar16->fts_namelen + 1)" identifier (argument_list "(pcVar4 + sVar11 + 1,pFVar16 + 1,pFVar16->fts_namelen + 1)" ( (binary_expression "pcVar4 + sVar11 + 1" (binary_expression "pcVar4 + sVar11" identifier + identifier) + number_literal) , (binary_expression "pFVar16 + 1" identifier + number_literal) , (binary_expression "pFVar16->fts_namelen + 1" (field_expression "pFVar16->fts_namelen" identifier -> field_identifier) + number_literal) ))) ;) }))) (goto_statement "goto LAB_001175c0;" goto statement_identifier ;) (while_statement "while( true ) {\n    uVar15 = uVar15 - 1;\n    cVar1 = *pcVar17;\n    pcVar17 = pcVar17 + (ulong)bVar18 * -2 + 1;\n    if (cVar1 == '\0') break;\ncode_r0x00117837:\n    if (uVar15 == 0) break;\n  }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n    uVar15 = uVar15 - 1;\n    cVar1 = *pcVar17;\n    pcVar17 = pcVar17 + (ulong)bVar18 * -2 + 1;\n    if (cVar1 == '\0') break;\ncode_r0x00117837:\n    if (uVar15 == 0) break;\n  }" { (expression_statement "uVar15 = uVar15 - 1;" (assignment_expression "uVar15 = uVar15 - 1" identifier = (binary_expression "uVar15 - 1" identifier - number_literal)) ;) (expression_statement "cVar1 = *pcVar17;" (assignment_expression "cVar1 = *pcVar17" identifier = (pointer_expression "*pcVar17" * identifier)) ;) (expression_statement "pcVar17 = pcVar17 + (ulong)bVar18 * -2 + 1;" (assignment_expression "pcVar17 = pcVar17 + (ulong)bVar18 * -2 + 1" identifier = (binary_expression "pcVar17 + (ulong)bVar18 * -2 + 1" (binary_expression "pcVar17 + (ulong)bVar18 * -2" identifier + (binary_expression "(ulong)bVar18 * -2" (cast_expression "(ulong)bVar18" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (if_statement "if (cVar1 == '\0') break;" if (parenthesized_expression "(cVar1 == '\0')" ( (binary_expression "cVar1 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (break_statement "break;" break ;)) (labeled_statement "code_r0x00117837:\n    if (uVar15 == 0) break;" statement_identifier : (if_statement "if (uVar15 == 0) break;" if (parenthesized_expression "(uVar15 == 0)" ( (binary_expression "uVar15 == 0" identifier == number_literal) )) (break_statement "break;" break ;))) })) (expression_statement "memmove(pFVar13,pcVar4,~uVar15);" (call_expression "memmove(pFVar13,pcVar4,~uVar15)" identifier (argument_list "(pFVar13,pcVar4,~uVar15)" ( identifier , identifier , (unary_expression "~uVar15" ~ identifier) ))) ;) (expression_statement "pFVar16->fts_namelen = ~uVar15 - 1;" (assignment_expression "pFVar16->fts_namelen = ~uVar15 - 1" (field_expression "pFVar16->fts_namelen" identifier -> field_identifier) = (binary_expression "~uVar15 - 1" (unary_expression "~uVar15" ~ identifier) - number_literal)) ;) (labeled_statement "LAB_0011784f:\n  pcVar4 = sp->fts_path;" statement_identifier : (expression_statement "pcVar4 = sp->fts_path;" (assignment_expression "pcVar4 = sp->fts_path" identifier = (field_expression "sp->fts_path" identifier -> field_identifier)) ;)) (expression_statement "pFVar16->fts_path = pcVar4;" (assignment_expression "pFVar16->fts_path = pcVar4" (field_expression "pFVar16->fts_path" identifier -> field_identifier) = identifier) ;) (expression_statement "pFVar16->fts_accpath = pcVar4;" (assignment_expression "pFVar16->fts_accpath = pcVar4" (field_expression "pFVar16->fts_accpath" identifier -> field_identifier) = identifier) ;) (expression_statement "setup_dir(sp);" (call_expression "setup_dir(sp)" identifier (argument_list "(sp)" ( identifier ))) ;) (labeled_statement "LAB_001175c0:\n  sp->fts_cur = pFVar16;" statement_identifier : (expression_statement "sp->fts_cur = pFVar16;" (assignment_expression "sp->fts_cur = pFVar16" (field_expression "sp->fts_cur" identifier -> field_identifier) = identifier) ;)) (if_statement "if (pFVar16->fts_info == 0xb) {\n    lVar6 = pFVar16->fts_statp[0].st_size;\n    if (lVar6 != 2) {\n      if (lVar6 == 1) {\n        return pFVar16;\n      }\n                    /* WARNING: Subroutine does not return */\n      abort();\n    }\n    pFVar13 = pFVar16->fts_parent;\n    if (((pFVar13->fts_n_dirs_remaining == 0) && ((sp->fts_options & 0x18U) == 0x18)) &&\n       (lVar10 = leaf_optimization(pFVar13,sp->fts_cwd_fd), lVar10 == NOSTAT_LEAF_OPTIMIZATION))\n    goto LAB_001175cf;\n    uVar8 = fts_stat(sp,pFVar16,false);\n    pFVar16->fts_info = uVar8;\n    if ((pFVar16->fts_statp[0].st_mode & 0xf000) != 0x4000) goto LAB_001175cf;\n    if (pFVar16->fts_level != 0) {\n      uVar15 = pFVar13->fts_n_dirs_remaining - 1;\n      if (0xfffffffffffffffd < uVar15) {\n        if (uVar8 != 1) {\n          return pFVar16;\n        }\n        goto LAB_001175ea;\n      }\n      pFVar13->fts_n_dirs_remaining = uVar15;\n      goto LAB_001175cf;\n    }\n    if (uVar8 != 1) {\n      return pFVar16;\n    }\n  }\n  else {\nLAB_001175cf:\n    if (pFVar16->fts_info != 1) {\n      return pFVar16;\n    }\n    if (pFVar16->fts_level != 0) goto LAB_001175ea;\n  }" if (parenthesized_expression "(pFVar16->fts_info == 0xb)" ( (binary_expression "pFVar16->fts_info == 0xb" (field_expression "pFVar16->fts_info" identifier -> field_identifier) == number_literal) )) (compound_statement "{\n    lVar6 = pFVar16->fts_statp[0].st_size;\n    if (lVar6 != 2) {\n      if (lVar6 == 1) {\n        return pFVar16;\n      }\n                    /* WARNING: Subroutine does not return */\n      abort();\n    }\n    pFVar13 = pFVar16->fts_parent;\n    if (((pFVar13->fts_n_dirs_remaining == 0) && ((sp->fts_options & 0x18U) == 0x18)) &&\n       (lVar10 = leaf_optimization(pFVar13,sp->fts_cwd_fd), lVar10 == NOSTAT_LEAF_OPTIMIZATION))\n    goto LAB_001175cf;\n    uVar8 = fts_stat(sp,pFVar16,false);\n    pFVar16->fts_info = uVar8;\n    if ((pFVar16->fts_statp[0].st_mode & 0xf000) != 0x4000) goto LAB_001175cf;\n    if (pFVar16->fts_level != 0) {\n      uVar15 = pFVar13->fts_n_dirs_remaining - 1;\n      if (0xfffffffffffffffd < uVar15) {\n        if (uVar8 != 1) {\n          return pFVar16;\n        }\n        goto LAB_001175ea;\n      }\n      pFVar13->fts_n_dirs_remaining = uVar15;\n      goto LAB_001175cf;\n    }\n    if (uVar8 != 1) {\n      return pFVar16;\n    }\n  }" { (expression_statement "lVar6 = pFVar16->fts_statp[0].st_size;" (assignment_expression "lVar6 = pFVar16->fts_statp[0].st_size" identifier = (field_expression "pFVar16->fts_statp[0].st_size" (subscript_expression "pFVar16->fts_statp[0]" (field_expression "pFVar16->fts_statp" identifier -> field_identifier) [ number_literal ]) . field_identifier)) ;) (if_statement "if (lVar6 != 2) {\n      if (lVar6 == 1) {\n        return pFVar16;\n      }\n                    /* WARNING: Subroutine does not return */\n      abort();\n    }" if (parenthesized_expression "(lVar6 != 2)" ( (binary_expression "lVar6 != 2" identifier != number_literal) )) (compound_statement "{\n      if (lVar6 == 1) {\n        return pFVar16;\n      }\n                    /* WARNING: Subroutine does not return */\n      abort();\n    }" { (if_statement "if (lVar6 == 1) {\n        return pFVar16;\n      }" if (parenthesized_expression "(lVar6 == 1)" ( (binary_expression "lVar6 == 1" identifier == number_literal) )) (compound_statement "{\n        return pFVar16;\n      }" { (return_statement "return pFVar16;" return identifier ;) })) comment (expression_statement "abort();" (call_expression "abort()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "pFVar13 = pFVar16->fts_parent;" (assignment_expression "pFVar13 = pFVar16->fts_parent" identifier = (field_expression "pFVar16->fts_parent" identifier -> field_identifier)) ;) (if_statement "if (((pFVar13->fts_n_dirs_remaining == 0) && ((sp->fts_options & 0x18U) == 0x18)) &&\n       (lVar10 = leaf_optimization(pFVar13,sp->fts_cwd_fd), lVar10 == NOSTAT_LEAF_OPTIMIZATION))\n    goto LAB_001175cf;" if (parenthesized_expression "(((pFVar13->fts_n_dirs_remaining == 0) && ((sp->fts_options & 0x18U) == 0x18)) &&\n       (lVar10 = leaf_optimization(pFVar13,sp->fts_cwd_fd), lVar10 == NOSTAT_LEAF_OPTIMIZATION))" ( (binary_expression "((pFVar13->fts_n_dirs_remaining == 0) && ((sp->fts_options & 0x18U) == 0x18)) &&\n       (lVar10 = leaf_optimization(pFVar13,sp->fts_cwd_fd), lVar10 == NOSTAT_LEAF_OPTIMIZATION)" (parenthesized_expression "((pFVar13->fts_n_dirs_remaining == 0) && ((sp->fts_options & 0x18U) == 0x18))" ( (binary_expression "(pFVar13->fts_n_dirs_remaining == 0) && ((sp->fts_options & 0x18U) == 0x18)" (parenthesized_expression "(pFVar13->fts_n_dirs_remaining == 0)" ( (binary_expression "pFVar13->fts_n_dirs_remaining == 0" (field_expression "pFVar13->fts_n_dirs_remaining" identifier -> field_identifier) == number_literal) )) && (parenthesized_expression "((sp->fts_options & 0x18U) == 0x18)" ( (binary_expression "(sp->fts_options & 0x18U) == 0x18" (parenthesized_expression "(sp->fts_options & 0x18U)" ( (binary_expression "sp->fts_options & 0x18U" (field_expression "sp->fts_options" identifier -> field_identifier) & number_literal) )) == number_literal) ))) )) && (parenthesized_expression "(lVar10 = leaf_optimization(pFVar13,sp->fts_cwd_fd), lVar10 == NOSTAT_LEAF_OPTIMIZATION)" ( (comma_expression "lVar10 = leaf_optimization(pFVar13,sp->fts_cwd_fd), lVar10 == NOSTAT_LEAF_OPTIMIZATION" (assignment_expression "lVar10 = leaf_optimization(pFVar13,sp->fts_cwd_fd)" identifier = (call_expression "leaf_optimization(pFVar13,sp->fts_cwd_fd)" identifier (argument_list "(pFVar13,sp->fts_cwd_fd)" ( identifier , (field_expression "sp->fts_cwd_fd" identifier -> field_identifier) )))) , (binary_expression "lVar10 == NOSTAT_LEAF_OPTIMIZATION" identifier == identifier)) ))) )) (goto_statement "goto LAB_001175cf;" goto statement_identifier ;)) (expression_statement "uVar8 = fts_stat(sp,pFVar16,false);" (assignment_expression "uVar8 = fts_stat(sp,pFVar16,false)" identifier = (call_expression "fts_stat(sp,pFVar16,false)" identifier (argument_list "(sp,pFVar16,false)" ( identifier , identifier , false )))) ;) (expression_statement "pFVar16->fts_info = uVar8;" (assignment_expression "pFVar16->fts_info = uVar8" (field_expression "pFVar16->fts_info" identifier -> field_identifier) = identifier) ;) (if_statement "if ((pFVar16->fts_statp[0].st_mode & 0xf000) != 0x4000) goto LAB_001175cf;" if (parenthesized_expression "((pFVar16->fts_statp[0].st_mode & 0xf000) != 0x4000)" ( (binary_expression "(pFVar16->fts_statp[0].st_mode & 0xf000) != 0x4000" (parenthesized_expression "(pFVar16->fts_statp[0].st_mode & 0xf000)" ( (binary_expression "pFVar16->fts_statp[0].st_mode & 0xf000" (field_expression "pFVar16->fts_statp[0].st_mode" (subscript_expression "pFVar16->fts_statp[0]" (field_expression "pFVar16->fts_statp" identifier -> field_identifier) [ number_literal ]) . field_identifier) & number_literal) )) != number_literal) )) (goto_statement "goto LAB_001175cf;" goto statement_identifier ;)) (if_statement "if (pFVar16->fts_level != 0) {\n      uVar15 = pFVar13->fts_n_dirs_remaining - 1;\n      if (0xfffffffffffffffd < uVar15) {\n        if (uVar8 != 1) {\n          return pFVar16;\n        }\n        goto LAB_001175ea;\n      }\n      pFVar13->fts_n_dirs_remaining = uVar15;\n      goto LAB_001175cf;\n    }" if (parenthesized_expression "(pFVar16->fts_level != 0)" ( (binary_expression "pFVar16->fts_level != 0" (field_expression "pFVar16->fts_level" identifier -> field_identifier) != number_literal) )) (compound_statement "{\n      uVar15 = pFVar13->fts_n_dirs_remaining - 1;\n      if (0xfffffffffffffffd < uVar15) {\n        if (uVar8 != 1) {\n          return pFVar16;\n        }\n        goto LAB_001175ea;\n      }\n      pFVar13->fts_n_dirs_remaining = uVar15;\n      goto LAB_001175cf;\n    }" { (expression_statement "uVar15 = pFVar13->fts_n_dirs_remaining - 1;" (assignment_expression "uVar15 = pFVar13->fts_n_dirs_remaining - 1" identifier = (binary_expression "pFVar13->fts_n_dirs_remaining - 1" (field_expression "pFVar13->fts_n_dirs_remaining" identifier -> field_identifier) - number_literal)) ;) (if_statement "if (0xfffffffffffffffd < uVar15) {\n        if (uVar8 != 1) {\n          return pFVar16;\n        }\n        goto LAB_001175ea;\n      }" if (parenthesized_expression "(0xfffffffffffffffd < uVar15)" ( (binary_expression "0xfffffffffffffffd < uVar15" number_literal < identifier) )) (compound_statement "{\n        if (uVar8 != 1) {\n          return pFVar16;\n        }\n        goto LAB_001175ea;\n      }" { (if_statement "if (uVar8 != 1) {\n          return pFVar16;\n        }" if (parenthesized_expression "(uVar8 != 1)" ( (binary_expression "uVar8 != 1" identifier != number_literal) )) (compound_statement "{\n          return pFVar16;\n        }" { (return_statement "return pFVar16;" return identifier ;) })) (goto_statement "goto LAB_001175ea;" goto statement_identifier ;) })) (expression_statement "pFVar13->fts_n_dirs_remaining = uVar15;" (assignment_expression "pFVar13->fts_n_dirs_remaining = uVar15" (field_expression "pFVar13->fts_n_dirs_remaining" identifier -> field_identifier) = identifier) ;) (goto_statement "goto LAB_001175cf;" goto statement_identifier ;) })) (if_statement "if (uVar8 != 1) {\n      return pFVar16;\n    }" if (parenthesized_expression "(uVar8 != 1)" ( (binary_expression "uVar8 != 1" identifier != number_literal) )) (compound_statement "{\n      return pFVar16;\n    }" { (return_statement "return pFVar16;" return identifier ;) })) }) (else_clause "else {\nLAB_001175cf:\n    if (pFVar16->fts_info != 1) {\n      return pFVar16;\n    }\n    if (pFVar16->fts_level != 0) goto LAB_001175ea;\n  }" else (compound_statement "{\nLAB_001175cf:\n    if (pFVar16->fts_info != 1) {\n      return pFVar16;\n    }\n    if (pFVar16->fts_level != 0) goto LAB_001175ea;\n  }" { (labeled_statement "LAB_001175cf:\n    if (pFVar16->fts_info != 1) {\n      return pFVar16;\n    }" statement_identifier : (if_statement "if (pFVar16->fts_info != 1) {\n      return pFVar16;\n    }" if (parenthesized_expression "(pFVar16->fts_info != 1)" ( (binary_expression "pFVar16->fts_info != 1" (field_expression "pFVar16->fts_info" identifier -> field_identifier) != number_literal) )) (compound_statement "{\n      return pFVar16;\n    }" { (return_statement "return pFVar16;" return identifier ;) }))) (if_statement "if (pFVar16->fts_level != 0) goto LAB_001175ea;" if (parenthesized_expression "(pFVar16->fts_level != 0)" ( (binary_expression "pFVar16->fts_level != 0" (field_expression "pFVar16->fts_level" identifier -> field_identifier) != number_literal) )) (goto_statement "goto LAB_001175ea;" goto statement_identifier ;)) }))) (expression_statement "sp->fts_dev = pFVar16->fts_statp[0].st_dev;" (assignment_expression "sp->fts_dev = pFVar16->fts_statp[0].st_dev" (field_expression "sp->fts_dev" identifier -> field_identifier) = (field_expression "pFVar16->fts_statp[0].st_dev" (subscript_expression "pFVar16->fts_statp[0]" (field_expression "pFVar16->fts_statp" identifier -> field_identifier) [ number_literal ]) . field_identifier)) ;) (labeled_statement "LAB_001175ea:\n  _Var7 = enter_dir(sp,pFVar16);" statement_identifier : (expression_statement "_Var7 = enter_dir(sp,pFVar16);" (assignment_expression "_Var7 = enter_dir(sp,pFVar16)" identifier = (call_expression "enter_dir(sp,pFVar16)" identifier (argument_list "(sp,pFVar16)" ( identifier , identifier )))) ;)) (if_statement "if (!_Var7) {\n    piVar12 = __errno_location();\n    *piVar12 = 0xc;\n    pFVar16 = (FTSENT *)0x0;\n  }" if (parenthesized_expression "(!_Var7)" ( (unary_expression "!_Var7" ! identifier) )) (compound_statement "{\n    piVar12 = __errno_location();\n    *piVar12 = 0xc;\n    pFVar16 = (FTSENT *)0x0;\n  }" { (expression_statement "piVar12 = __errno_location();" (assignment_expression "piVar12 = __errno_location()" identifier = (call_expression "__errno_location()" identifier (argument_list "()" ( )))) ;) (expression_statement "*piVar12 = 0xc;" (assignment_expression "*piVar12 = 0xc" (pointer_expression "*piVar12" * identifier) = number_literal) ;) (expression_statement "pFVar16 = (FTSENT *)0x0;" (assignment_expression "pFVar16 = (FTSENT *)0x0" identifier = (cast_expression "(FTSENT *)0x0" ( (type_descriptor "FTSENT *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) })) (return_statement "return pFVar16;" return identifier ;) })))
(translation_unit "void * fts_read(long *param_1)\n\n{\n  char *__s;\n  uint uVar1;\n  char cVar2;\n  undefined2 uVar3;\n  short sVar4;\n  int iVar5;\n  long lVar6;\n  int *piVar7;\n  long lVar8;\n  char *pcVar9;\n  ulong uVar10;\n  void *pvVar11;\n  void *pvVar12;\n  char *pcVar13;\n  byte bVar14;\n  \n  bVar14 = 0;\n  pvVar11 = (void *)*param_1;\n  if (pvVar11 == (void *)0x0) {\n    return (void *)0x0;\n  }\n  if ((*(byte *)((long)param_1 + 0x49) & 0x40) != 0) {\n    return (void *)0x0;\n  }\n  sVar4 = *(short *)((long)pvVar11 + 0x74);\n  *(undefined2 *)((long)pvVar11 + 0x74) = 3;\n  if (sVar4 == 1) {\n    uVar3 = FUN_00115abc(param_1,pvVar11,0);\n    *(undefined2 *)((long)pvVar11 + 0x70) = uVar3;\n    return pvVar11;\n  }\n  pvVar12 = pvVar11;\n  if (sVar4 == 2) {\n    if (1 < (ushort)(*(short *)((long)pvVar11 + 0x70) - 0xcU)) {\n      if (*(short *)((long)pvVar11 + 0x70) != 1) goto LAB_00117717;\n      goto LAB_00117457;\n    }\n    sVar4 = FUN_00115abc(param_1,pvVar11,1);\n    *(short *)((long)pvVar11 + 0x70) = sVar4;\n    if ((sVar4 == 1) && ((*(byte *)(param_1 + 9) & 4) == 0)) {\n      iVar5 = FUN_00115e27(param_1,&DAT_0011ff42);\n      *(int *)((long)pvVar11 + 0x44) = iVar5;\n      if (iVar5 < 0) {\n        piVar7 = __errno_location();\n        *(int *)((long)pvVar11 + 0x40) = *piVar7;\n        *(undefined2 *)((long)pvVar11 + 0x70) = 7;\n      }\n      else {\n        *(ushort *)((long)pvVar11 + 0x72) = *(ushort *)((long)pvVar11 + 0x72) | 2;\n      }\n    }\n  }\n  else {\n    if (*(short *)((long)pvVar11 + 0x70) == 1) {\n      if (sVar4 == 4) goto LAB_00117473;\nLAB_00117457:\n      uVar1 = *(uint *)(param_1 + 9);\n      if (((uVar1 & 0x40) != 0) && (*(long *)((long)pvVar11 + 0x78) != param_1[3])) {\nLAB_00117473:\n        if ((*(byte *)((long)pvVar11 + 0x72) & 2) != 0) {\n          close(*(int *)((long)pvVar11 + 0x44));\n        }\n        if (param_1[1] != 0) {\n          FUN_00115e7a();\n          param_1[1] = 0;\n        }\n        *(undefined2 *)((long)pvVar11 + 0x70) = 6;\n        FUN_00116412(param_1,pvVar11);\n        return pvVar11;\n      }\n      if (param_1[1] == 0) {\nLAB_00117628:\n        lVar8 = FUN_001164c9(param_1,3);\n        param_1[1] = lVar8;\n        if (lVar8 == 0) {\n          if ((*(byte *)((long)param_1 + 0x49) & 0x40) == 0) {\n            if ((*(int *)((long)pvVar11 + 0x40) != 0) && (*(short *)((long)pvVar11 + 0x70) != 4)) {\n              *(undefined2 *)((long)pvVar11 + 0x70) = 7;\n            }\n            FUN_00116412(param_1,pvVar11);\n            return pvVar11;\n          }\n          return (void *)0x0;\n        }\n      }\n      else {\n        if ((uVar1 & 0x2000) != 0) {\n          *(uint *)(param_1 + 9) = uVar1 & 0xffffdfff;\n          FUN_00115e7a();\n          param_1[1] = 0;\n          goto LAB_00117628;\n        }\n        iVar5 = FUN_00116203(param_1,pvVar11,0xffffffff,*(undefined8 *)((long)pvVar11 + 0x30));\n        if (iVar5 != 0) {\n          piVar7 = __errno_location();\n          *(int *)((long)pvVar11 + 0x40) = *piVar7;\n          *(ushort *)((long)pvVar11 + 0x72) = *(ushort *)((long)pvVar11 + 0x72) | 1;\n          for (lVar8 = param_1[1]; lVar8 != 0; lVar8 = *(long *)(lVar8 + 0x10)) {\n            *(undefined8 *)(lVar8 + 0x30) = *(undefined8 *)(*(long *)(lVar8 + 8) + 0x30);\n          }\n        }\n      }\n      pvVar11 = (void *)param_1[1];\n      param_1[1] = 0;\n    }\n    else {\nLAB_00117717:\n      do {\n        pvVar11 = *(void **)((long)pvVar12 + 0x10);\n        if (pvVar11 == (void *)0x0) {\n          lVar8 = *(long *)((long)pvVar12 + 8);\n          if (*(long *)(lVar8 + 0x18) != 0) {\n            *param_1 = lVar8;\n            *(undefined1 *)(param_1[4] + *(long *)(lVar8 + 0x48)) = 0;\n            pvVar11 = (void *)FUN_001164c9(param_1,3);\n            if (pvVar11 != (void *)0x0) {\n              free(pvVar12);\n              goto LAB_00117587;\n            }\n            if ((*(byte *)((long)param_1 + 0x49) & 0x40) != 0) {\n              return (void *)0x0;\n            }\n          }\n          pvVar11 = *(void **)((long)pvVar12 + 8);\n          *param_1 = (long)pvVar11;\n          free(pvVar12);\n          if (*(long *)((long)pvVar11 + 0x58) == -1) {\n            free(pvVar11);\n            piVar7 = __errno_location();\n            *piVar7 = 0;\n            *param_1 = 0;\n            return (void *)0x0;\n          }\n          if (*(short *)((long)pvVar11 + 0x70) == 0xb) {\n                    \n            abort();\n          }\n          *(undefined1 *)(param_1[4] + *(long *)((long)pvVar11 + 0x48)) = 0;\n          if (*(long *)((long)pvVar11 + 0x58) == 0) {\n            iVar5 = FUN_001161af(param_1);\n            if (iVar5 == 0) goto LAB_001177a7;\n            piVar7 = __errno_location();\n            *(int *)((long)pvVar11 + 0x40) = *piVar7;\n            *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\nLAB_001179e4:\n            if (*(short *)((long)pvVar11 + 0x70) == 2) {\n              return (void *)0x0;\n            }\n          }\n          else {\n            if ((*(ushort *)((long)pvVar11 + 0x72) & 2) == 0) {\n              if (((*(ushort *)((long)pvVar11 + 0x72) & 1) == 0) &&\n                 (iVar5 = FUN_00116203(param_1,*(undefined8 *)((long)pvVar11 + 8),0xffffffff,\n                                       &DAT_0011ff41), iVar5 != 0)) {\n                piVar7 = __errno_location();\n                *(int *)((long)pvVar11 + 0x40) = *piVar7;\n                *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\n                goto LAB_001179e4;\n              }\n            }\n            else {\n              if ((*(uint *)(param_1 + 9) & 4) == 0) {\n                if ((*(uint *)(param_1 + 9) & 0x200) == 0) {\n                  iVar5 = fchdir(*(int *)((long)pvVar11 + 0x44));\n                  if (iVar5 != 0) {\n                    piVar7 = __errno_location();\n                    *(int *)((long)pvVar11 + 0x40) = *piVar7;\n                    *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\n                  }\n                }\n                else {\n                  FUN_0011615c(param_1,*(undefined4 *)((long)pvVar11 + 0x44),1);\n                }\n              }\n              close(*(int *)((long)pvVar11 + 0x44));\n            }\nLAB_001177a7:\n            if (*(short *)((long)pvVar11 + 0x70) == 2) goto LAB_00117a88;\n          }\n          if (*(int *)((long)pvVar11 + 0x40) == 0) {\n            *(undefined2 *)((long)pvVar11 + 0x70) = 6;\n            FUN_00116412(param_1,pvVar11);\n          }\n          else {\n            *(undefined2 *)((long)pvVar11 + 0x70) = 7;\n          }\nLAB_00117a88:\n          if ((*(uint *)(param_1 + 9) & 0x4000) != 0) {\n            return (void *)0x0;\n          }\n          return pvVar11;\n        }\n        *param_1 = (long)pvVar11;\n        free(pvVar12);\n        if (*(long *)((long)pvVar11 + 0x58) == 0) {\n          iVar5 = FUN_001161af(param_1);\n          if (iVar5 != 0) {\n            *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\n            return (void *)0x0;\n          }\n          FUN_00115eb3(param_1);\n          *(long *)((long)pvVar11 + 0x48) = *(long *)((long)pvVar11 + 0x60);\n          __s = (char *)((long)pvVar11 + 0x108);\n          memmove((void *)param_1[4],__s,*(long *)((long)pvVar11 + 0x60) + 1);\n          pcVar9 = strrchr(__s,0x2f);\n          if ((pcVar9 == (char *)0x0) || ((__s == pcVar9 && (pcVar9[1] == '\0'))))\n          goto LAB_0011784f;\n          uVar10 = 0xffffffffffffffff;\n          pcVar13 = pcVar9 + 1;\n          goto code_r0x00117837;\n        }\n        pvVar12 = pvVar11;\n      } while (*(short *)((long)pvVar11 + 0x74) == 4);\n      if (*(short *)((long)pvVar11 + 0x74) == 2) {\n        sVar4 = FUN_00115abc(param_1,pvVar11,1);\n        *(short *)((long)pvVar11 + 0x70) = sVar4;\n        if ((sVar4 == 1) && ((*(byte *)(param_1 + 9) & 4) == 0)) {\n          iVar5 = FUN_00115e27(param_1,&DAT_0011ff42);\n          *(int *)((long)pvVar11 + 0x44) = iVar5;\n          if (iVar5 < 0) {\n            piVar7 = __errno_location();\n            *(int *)((long)pvVar11 + 0x40) = *piVar7;\n            *(undefined2 *)((long)pvVar11 + 0x70) = 7;\n          }\n          else {\n            *(ushort *)((long)pvVar11 + 0x72) = *(ushort *)((long)pvVar11 + 0x72) | 2;\n          }\n        }\n        *(undefined2 *)((long)pvVar11 + 0x74) = 3;\n      }\n    }\nLAB_00117587:\n    lVar8 = *(long *)(*(long *)((long)pvVar11 + 8) + 0x48);\n    lVar6 = lVar8 + -1;\n    if (*(char *)(*(long *)(*(long *)((long)pvVar11 + 8) + 0x38) + -1 + lVar8) != '/') {\n      lVar6 = lVar8;\n    }\n    lVar8 = param_1[4];\n    *(undefined1 *)(lVar6 + lVar8) = 0x2f;\n    memmove((undefined1 *)(lVar6 + lVar8) + 1,(void *)((long)pvVar11 + 0x108),\n            *(long *)((long)pvVar11 + 0x60) + 1);\n  }\n  goto LAB_001175c0;\n  while( true ) {\n    uVar10 = uVar10 - 1;\n    cVar2 = *pcVar13;\n    pcVar13 = pcVar13 + (ulong)bVar14 * -2 + 1;\n    if (cVar2 == '\0') break;\ncode_r0x00117837:\n    if (uVar10 == 0) break;\n  }\n  memmove(__s,pcVar9 + 1,~uVar10);\n  *(ulong *)((long)pvVar11 + 0x60) = ~uVar10 - 1;\nLAB_0011784f:\n  lVar8 = param_1[4];\n  *(long *)((long)pvVar11 + 0x38) = lVar8;\n  *(long *)((long)pvVar11 + 0x30) = lVar8;\n  FUN_00115dc3(param_1);\nLAB_001175c0:\n  *param_1 = (long)pvVar11;\n  if (*(short *)((long)pvVar11 + 0x70) == 0xb) {\n    if (*(long *)((long)pvVar11 + 0xa8) != 2) {\n      if (*(long *)((long)pvVar11 + 0xa8) == 1) {\n        return pvVar11;\n      }\n                    \n      abort();\n    }\n    lVar8 = *(long *)((long)pvVar11 + 8);\n    if (((*(long *)(lVar8 + 0x68) == 0) && ((*(uint *)(param_1 + 9) & 0x18) == 0x18)) &&\n       (iVar5 = FUN_0011603e(lVar8,*(undefined4 *)((long)param_1 + 0x2c)), iVar5 == 2))\n    goto LAB_001175cf;\n    sVar4 = FUN_00115abc(param_1,pvVar11,0);\n    *(short *)((long)pvVar11 + 0x70) = sVar4;\n    if ((*(uint *)((long)pvVar11 + 0x90) & 0xf000) != 0x4000) goto LAB_001175cf;\n    if (*(long *)((long)pvVar11 + 0x58) != 0) {\n      uVar10 = *(long *)(lVar8 + 0x68) - 1;\n      if (0xfffffffffffffffd < uVar10) {\n        if (sVar4 != 1) {\n          return pvVar11;\n        }\n        goto LAB_001175ea;\n      }\n      *(ulong *)(lVar8 + 0x68) = uVar10;\n      goto LAB_001175cf;\n    }\n    if (sVar4 != 1) {\n      return pvVar11;\n    }\n  }\n  else {\nLAB_001175cf:\n    if (*(short *)((long)pvVar11 + 0x70) != 1) {\n      return pvVar11;\n    }\n    if (*(long *)((long)pvVar11 + 0x58) != 0) goto LAB_001175ea;\n  }\n  param_1[3] = *(long *)((long)pvVar11 + 0x78);\nLAB_001175ea:\n  cVar2 = FUN_001160b2(param_1,pvVar11);\n  if (cVar2 == '\0') {\n    piVar7 = __errno_location();\n    *piVar7 = 0xc;\n    pvVar11 = (void *)0x0;\n  }\n  return pvVar11;\n}\n\n" (function_definition "void * fts_read(long *param_1)\n\n{\n  char *__s;\n  uint uVar1;\n  char cVar2;\n  undefined2 uVar3;\n  short sVar4;\n  int iVar5;\n  long lVar6;\n  int *piVar7;\n  long lVar8;\n  char *pcVar9;\n  ulong uVar10;\n  void *pvVar11;\n  void *pvVar12;\n  char *pcVar13;\n  byte bVar14;\n  \n  bVar14 = 0;\n  pvVar11 = (void *)*param_1;\n  if (pvVar11 == (void *)0x0) {\n    return (void *)0x0;\n  }\n  if ((*(byte *)((long)param_1 + 0x49) & 0x40) != 0) {\n    return (void *)0x0;\n  }\n  sVar4 = *(short *)((long)pvVar11 + 0x74);\n  *(undefined2 *)((long)pvVar11 + 0x74) = 3;\n  if (sVar4 == 1) {\n    uVar3 = FUN_00115abc(param_1,pvVar11,0);\n    *(undefined2 *)((long)pvVar11 + 0x70) = uVar3;\n    return pvVar11;\n  }\n  pvVar12 = pvVar11;\n  if (sVar4 == 2) {\n    if (1 < (ushort)(*(short *)((long)pvVar11 + 0x70) - 0xcU)) {\n      if (*(short *)((long)pvVar11 + 0x70) != 1) goto LAB_00117717;\n      goto LAB_00117457;\n    }\n    sVar4 = FUN_00115abc(param_1,pvVar11,1);\n    *(short *)((long)pvVar11 + 0x70) = sVar4;\n    if ((sVar4 == 1) && ((*(byte *)(param_1 + 9) & 4) == 0)) {\n      iVar5 = FUN_00115e27(param_1,&DAT_0011ff42);\n      *(int *)((long)pvVar11 + 0x44) = iVar5;\n      if (iVar5 < 0) {\n        piVar7 = __errno_location();\n        *(int *)((long)pvVar11 + 0x40) = *piVar7;\n        *(undefined2 *)((long)pvVar11 + 0x70) = 7;\n      }\n      else {\n        *(ushort *)((long)pvVar11 + 0x72) = *(ushort *)((long)pvVar11 + 0x72) | 2;\n      }\n    }\n  }\n  else {\n    if (*(short *)((long)pvVar11 + 0x70) == 1) {\n      if (sVar4 == 4) goto LAB_00117473;\nLAB_00117457:\n      uVar1 = *(uint *)(param_1 + 9);\n      if (((uVar1 & 0x40) != 0) && (*(long *)((long)pvVar11 + 0x78) != param_1[3])) {\nLAB_00117473:\n        if ((*(byte *)((long)pvVar11 + 0x72) & 2) != 0) {\n          close(*(int *)((long)pvVar11 + 0x44));\n        }\n        if (param_1[1] != 0) {\n          FUN_00115e7a();\n          param_1[1] = 0;\n        }\n        *(undefined2 *)((long)pvVar11 + 0x70) = 6;\n        FUN_00116412(param_1,pvVar11);\n        return pvVar11;\n      }\n      if (param_1[1] == 0) {\nLAB_00117628:\n        lVar8 = FUN_001164c9(param_1,3);\n        param_1[1] = lVar8;\n        if (lVar8 == 0) {\n          if ((*(byte *)((long)param_1 + 0x49) & 0x40) == 0) {\n            if ((*(int *)((long)pvVar11 + 0x40) != 0) && (*(short *)((long)pvVar11 + 0x70) != 4)) {\n              *(undefined2 *)((long)pvVar11 + 0x70) = 7;\n            }\n            FUN_00116412(param_1,pvVar11);\n            return pvVar11;\n          }\n          return (void *)0x0;\n        }\n      }\n      else {\n        if ((uVar1 & 0x2000) != 0) {\n          *(uint *)(param_1 + 9) = uVar1 & 0xffffdfff;\n          FUN_00115e7a();\n          param_1[1] = 0;\n          goto LAB_00117628;\n        }\n        iVar5 = FUN_00116203(param_1,pvVar11,0xffffffff,*(undefined8 *)((long)pvVar11 + 0x30));\n        if (iVar5 != 0) {\n          piVar7 = __errno_location();\n          *(int *)((long)pvVar11 + 0x40) = *piVar7;\n          *(ushort *)((long)pvVar11 + 0x72) = *(ushort *)((long)pvVar11 + 0x72) | 1;\n          for (lVar8 = param_1[1]; lVar8 != 0; lVar8 = *(long *)(lVar8 + 0x10)) {\n            *(undefined8 *)(lVar8 + 0x30) = *(undefined8 *)(*(long *)(lVar8 + 8) + 0x30);\n          }\n        }\n      }\n      pvVar11 = (void *)param_1[1];\n      param_1[1] = 0;\n    }\n    else {\nLAB_00117717:\n      do {\n        pvVar11 = *(void **)((long)pvVar12 + 0x10);\n        if (pvVar11 == (void *)0x0) {\n          lVar8 = *(long *)((long)pvVar12 + 8);\n          if (*(long *)(lVar8 + 0x18) != 0) {\n            *param_1 = lVar8;\n            *(undefined1 *)(param_1[4] + *(long *)(lVar8 + 0x48)) = 0;\n            pvVar11 = (void *)FUN_001164c9(param_1,3);\n            if (pvVar11 != (void *)0x0) {\n              free(pvVar12);\n              goto LAB_00117587;\n            }\n            if ((*(byte *)((long)param_1 + 0x49) & 0x40) != 0) {\n              return (void *)0x0;\n            }\n          }\n          pvVar11 = *(void **)((long)pvVar12 + 8);\n          *param_1 = (long)pvVar11;\n          free(pvVar12);\n          if (*(long *)((long)pvVar11 + 0x58) == -1) {\n            free(pvVar11);\n            piVar7 = __errno_location();\n            *piVar7 = 0;\n            *param_1 = 0;\n            return (void *)0x0;\n          }\n          if (*(short *)((long)pvVar11 + 0x70) == 0xb) {\n                    \n            abort();\n          }\n          *(undefined1 *)(param_1[4] + *(long *)((long)pvVar11 + 0x48)) = 0;\n          if (*(long *)((long)pvVar11 + 0x58) == 0) {\n            iVar5 = FUN_001161af(param_1);\n            if (iVar5 == 0) goto LAB_001177a7;\n            piVar7 = __errno_location();\n            *(int *)((long)pvVar11 + 0x40) = *piVar7;\n            *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\nLAB_001179e4:\n            if (*(short *)((long)pvVar11 + 0x70) == 2) {\n              return (void *)0x0;\n            }\n          }\n          else {\n            if ((*(ushort *)((long)pvVar11 + 0x72) & 2) == 0) {\n              if (((*(ushort *)((long)pvVar11 + 0x72) & 1) == 0) &&\n                 (iVar5 = FUN_00116203(param_1,*(undefined8 *)((long)pvVar11 + 8),0xffffffff,\n                                       &DAT_0011ff41), iVar5 != 0)) {\n                piVar7 = __errno_location();\n                *(int *)((long)pvVar11 + 0x40) = *piVar7;\n                *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\n                goto LAB_001179e4;\n              }\n            }\n            else {\n              if ((*(uint *)(param_1 + 9) & 4) == 0) {\n                if ((*(uint *)(param_1 + 9) & 0x200) == 0) {\n                  iVar5 = fchdir(*(int *)((long)pvVar11 + 0x44));\n                  if (iVar5 != 0) {\n                    piVar7 = __errno_location();\n                    *(int *)((long)pvVar11 + 0x40) = *piVar7;\n                    *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\n                  }\n                }\n                else {\n                  FUN_0011615c(param_1,*(undefined4 *)((long)pvVar11 + 0x44),1);\n                }\n              }\n              close(*(int *)((long)pvVar11 + 0x44));\n            }\nLAB_001177a7:\n            if (*(short *)((long)pvVar11 + 0x70) == 2) goto LAB_00117a88;\n          }\n          if (*(int *)((long)pvVar11 + 0x40) == 0) {\n            *(undefined2 *)((long)pvVar11 + 0x70) = 6;\n            FUN_00116412(param_1,pvVar11);\n          }\n          else {\n            *(undefined2 *)((long)pvVar11 + 0x70) = 7;\n          }\nLAB_00117a88:\n          if ((*(uint *)(param_1 + 9) & 0x4000) != 0) {\n            return (void *)0x0;\n          }\n          return pvVar11;\n        }\n        *param_1 = (long)pvVar11;\n        free(pvVar12);\n        if (*(long *)((long)pvVar11 + 0x58) == 0) {\n          iVar5 = FUN_001161af(param_1);\n          if (iVar5 != 0) {\n            *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\n            return (void *)0x0;\n          }\n          FUN_00115eb3(param_1);\n          *(long *)((long)pvVar11 + 0x48) = *(long *)((long)pvVar11 + 0x60);\n          __s = (char *)((long)pvVar11 + 0x108);\n          memmove((void *)param_1[4],__s,*(long *)((long)pvVar11 + 0x60) + 1);\n          pcVar9 = strrchr(__s,0x2f);\n          if ((pcVar9 == (char *)0x0) || ((__s == pcVar9 && (pcVar9[1] == '\0'))))\n          goto LAB_0011784f;\n          uVar10 = 0xffffffffffffffff;\n          pcVar13 = pcVar9 + 1;\n          goto code_r0x00117837;\n        }\n        pvVar12 = pvVar11;\n      } while (*(short *)((long)pvVar11 + 0x74) == 4);\n      if (*(short *)((long)pvVar11 + 0x74) == 2) {\n        sVar4 = FUN_00115abc(param_1,pvVar11,1);\n        *(short *)((long)pvVar11 + 0x70) = sVar4;\n        if ((sVar4 == 1) && ((*(byte *)(param_1 + 9) & 4) == 0)) {\n          iVar5 = FUN_00115e27(param_1,&DAT_0011ff42);\n          *(int *)((long)pvVar11 + 0x44) = iVar5;\n          if (iVar5 < 0) {\n            piVar7 = __errno_location();\n            *(int *)((long)pvVar11 + 0x40) = *piVar7;\n            *(undefined2 *)((long)pvVar11 + 0x70) = 7;\n          }\n          else {\n            *(ushort *)((long)pvVar11 + 0x72) = *(ushort *)((long)pvVar11 + 0x72) | 2;\n          }\n        }\n        *(undefined2 *)((long)pvVar11 + 0x74) = 3;\n      }\n    }\nLAB_00117587:\n    lVar8 = *(long *)(*(long *)((long)pvVar11 + 8) + 0x48);\n    lVar6 = lVar8 + -1;\n    if (*(char *)(*(long *)(*(long *)((long)pvVar11 + 8) + 0x38) + -1 + lVar8) != '/') {\n      lVar6 = lVar8;\n    }\n    lVar8 = param_1[4];\n    *(undefined1 *)(lVar6 + lVar8) = 0x2f;\n    memmove((undefined1 *)(lVar6 + lVar8) + 1,(void *)((long)pvVar11 + 0x108),\n            *(long *)((long)pvVar11 + 0x60) + 1);\n  }\n  goto LAB_001175c0;\n  while( true ) {\n    uVar10 = uVar10 - 1;\n    cVar2 = *pcVar13;\n    pcVar13 = pcVar13 + (ulong)bVar14 * -2 + 1;\n    if (cVar2 == '\0') break;\ncode_r0x00117837:\n    if (uVar10 == 0) break;\n  }\n  memmove(__s,pcVar9 + 1,~uVar10);\n  *(ulong *)((long)pvVar11 + 0x60) = ~uVar10 - 1;\nLAB_0011784f:\n  lVar8 = param_1[4];\n  *(long *)((long)pvVar11 + 0x38) = lVar8;\n  *(long *)((long)pvVar11 + 0x30) = lVar8;\n  FUN_00115dc3(param_1);\nLAB_001175c0:\n  *param_1 = (long)pvVar11;\n  if (*(short *)((long)pvVar11 + 0x70) == 0xb) {\n    if (*(long *)((long)pvVar11 + 0xa8) != 2) {\n      if (*(long *)((long)pvVar11 + 0xa8) == 1) {\n        return pvVar11;\n      }\n                    \n      abort();\n    }\n    lVar8 = *(long *)((long)pvVar11 + 8);\n    if (((*(long *)(lVar8 + 0x68) == 0) && ((*(uint *)(param_1 + 9) & 0x18) == 0x18)) &&\n       (iVar5 = FUN_0011603e(lVar8,*(undefined4 *)((long)param_1 + 0x2c)), iVar5 == 2))\n    goto LAB_001175cf;\n    sVar4 = FUN_00115abc(param_1,pvVar11,0);\n    *(short *)((long)pvVar11 + 0x70) = sVar4;\n    if ((*(uint *)((long)pvVar11 + 0x90) & 0xf000) != 0x4000) goto LAB_001175cf;\n    if (*(long *)((long)pvVar11 + 0x58) != 0) {\n      uVar10 = *(long *)(lVar8 + 0x68) - 1;\n      if (0xfffffffffffffffd < uVar10) {\n        if (sVar4 != 1) {\n          return pvVar11;\n        }\n        goto LAB_001175ea;\n      }\n      *(ulong *)(lVar8 + 0x68) = uVar10;\n      goto LAB_001175cf;\n    }\n    if (sVar4 != 1) {\n      return pvVar11;\n    }\n  }\n  else {\nLAB_001175cf:\n    if (*(short *)((long)pvVar11 + 0x70) != 1) {\n      return pvVar11;\n    }\n    if (*(long *)((long)pvVar11 + 0x58) != 0) goto LAB_001175ea;\n  }\n  param_1[3] = *(long *)((long)pvVar11 + 0x78);\nLAB_001175ea:\n  cVar2 = FUN_001160b2(param_1,pvVar11);\n  if (cVar2 == '\0') {\n    piVar7 = __errno_location();\n    *piVar7 = 0xc;\n    pvVar11 = (void *)0x0;\n  }\n  return pvVar11;\n}" primitive_type (pointer_declarator "* fts_read(long *param_1)" * (function_declarator "fts_read(long *param_1)" identifier (parameter_list "(long *param_1)" ( (parameter_declaration "long *param_1" (sized_type_specifier "long" long) (pointer_declarator "*param_1" * identifier)) )))) (compound_statement "{\n  char *__s;\n  uint uVar1;\n  char cVar2;\n  undefined2 uVar3;\n  short sVar4;\n  int iVar5;\n  long lVar6;\n  int *piVar7;\n  long lVar8;\n  char *pcVar9;\n  ulong uVar10;\n  void *pvVar11;\n  void *pvVar12;\n  char *pcVar13;\n  byte bVar14;\n  \n  bVar14 = 0;\n  pvVar11 = (void *)*param_1;\n  if (pvVar11 == (void *)0x0) {\n    return (void *)0x0;\n  }\n  if ((*(byte *)((long)param_1 + 0x49) & 0x40) != 0) {\n    return (void *)0x0;\n  }\n  sVar4 = *(short *)((long)pvVar11 + 0x74);\n  *(undefined2 *)((long)pvVar11 + 0x74) = 3;\n  if (sVar4 == 1) {\n    uVar3 = FUN_00115abc(param_1,pvVar11,0);\n    *(undefined2 *)((long)pvVar11 + 0x70) = uVar3;\n    return pvVar11;\n  }\n  pvVar12 = pvVar11;\n  if (sVar4 == 2) {\n    if (1 < (ushort)(*(short *)((long)pvVar11 + 0x70) - 0xcU)) {\n      if (*(short *)((long)pvVar11 + 0x70) != 1) goto LAB_00117717;\n      goto LAB_00117457;\n    }\n    sVar4 = FUN_00115abc(param_1,pvVar11,1);\n    *(short *)((long)pvVar11 + 0x70) = sVar4;\n    if ((sVar4 == 1) && ((*(byte *)(param_1 + 9) & 4) == 0)) {\n      iVar5 = FUN_00115e27(param_1,&DAT_0011ff42);\n      *(int *)((long)pvVar11 + 0x44) = iVar5;\n      if (iVar5 < 0) {\n        piVar7 = __errno_location();\n        *(int *)((long)pvVar11 + 0x40) = *piVar7;\n        *(undefined2 *)((long)pvVar11 + 0x70) = 7;\n      }\n      else {\n        *(ushort *)((long)pvVar11 + 0x72) = *(ushort *)((long)pvVar11 + 0x72) | 2;\n      }\n    }\n  }\n  else {\n    if (*(short *)((long)pvVar11 + 0x70) == 1) {\n      if (sVar4 == 4) goto LAB_00117473;\nLAB_00117457:\n      uVar1 = *(uint *)(param_1 + 9);\n      if (((uVar1 & 0x40) != 0) && (*(long *)((long)pvVar11 + 0x78) != param_1[3])) {\nLAB_00117473:\n        if ((*(byte *)((long)pvVar11 + 0x72) & 2) != 0) {\n          close(*(int *)((long)pvVar11 + 0x44));\n        }\n        if (param_1[1] != 0) {\n          FUN_00115e7a();\n          param_1[1] = 0;\n        }\n        *(undefined2 *)((long)pvVar11 + 0x70) = 6;\n        FUN_00116412(param_1,pvVar11);\n        return pvVar11;\n      }\n      if (param_1[1] == 0) {\nLAB_00117628:\n        lVar8 = FUN_001164c9(param_1,3);\n        param_1[1] = lVar8;\n        if (lVar8 == 0) {\n          if ((*(byte *)((long)param_1 + 0x49) & 0x40) == 0) {\n            if ((*(int *)((long)pvVar11 + 0x40) != 0) && (*(short *)((long)pvVar11 + 0x70) != 4)) {\n              *(undefined2 *)((long)pvVar11 + 0x70) = 7;\n            }\n            FUN_00116412(param_1,pvVar11);\n            return pvVar11;\n          }\n          return (void *)0x0;\n        }\n      }\n      else {\n        if ((uVar1 & 0x2000) != 0) {\n          *(uint *)(param_1 + 9) = uVar1 & 0xffffdfff;\n          FUN_00115e7a();\n          param_1[1] = 0;\n          goto LAB_00117628;\n        }\n        iVar5 = FUN_00116203(param_1,pvVar11,0xffffffff,*(undefined8 *)((long)pvVar11 + 0x30));\n        if (iVar5 != 0) {\n          piVar7 = __errno_location();\n          *(int *)((long)pvVar11 + 0x40) = *piVar7;\n          *(ushort *)((long)pvVar11 + 0x72) = *(ushort *)((long)pvVar11 + 0x72) | 1;\n          for (lVar8 = param_1[1]; lVar8 != 0; lVar8 = *(long *)(lVar8 + 0x10)) {\n            *(undefined8 *)(lVar8 + 0x30) = *(undefined8 *)(*(long *)(lVar8 + 8) + 0x30);\n          }\n        }\n      }\n      pvVar11 = (void *)param_1[1];\n      param_1[1] = 0;\n    }\n    else {\nLAB_00117717:\n      do {\n        pvVar11 = *(void **)((long)pvVar12 + 0x10);\n        if (pvVar11 == (void *)0x0) {\n          lVar8 = *(long *)((long)pvVar12 + 8);\n          if (*(long *)(lVar8 + 0x18) != 0) {\n            *param_1 = lVar8;\n            *(undefined1 *)(param_1[4] + *(long *)(lVar8 + 0x48)) = 0;\n            pvVar11 = (void *)FUN_001164c9(param_1,3);\n            if (pvVar11 != (void *)0x0) {\n              free(pvVar12);\n              goto LAB_00117587;\n            }\n            if ((*(byte *)((long)param_1 + 0x49) & 0x40) != 0) {\n              return (void *)0x0;\n            }\n          }\n          pvVar11 = *(void **)((long)pvVar12 + 8);\n          *param_1 = (long)pvVar11;\n          free(pvVar12);\n          if (*(long *)((long)pvVar11 + 0x58) == -1) {\n            free(pvVar11);\n            piVar7 = __errno_location();\n            *piVar7 = 0;\n            *param_1 = 0;\n            return (void *)0x0;\n          }\n          if (*(short *)((long)pvVar11 + 0x70) == 0xb) {\n                    \n            abort();\n          }\n          *(undefined1 *)(param_1[4] + *(long *)((long)pvVar11 + 0x48)) = 0;\n          if (*(long *)((long)pvVar11 + 0x58) == 0) {\n            iVar5 = FUN_001161af(param_1);\n            if (iVar5 == 0) goto LAB_001177a7;\n            piVar7 = __errno_location();\n            *(int *)((long)pvVar11 + 0x40) = *piVar7;\n            *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\nLAB_001179e4:\n            if (*(short *)((long)pvVar11 + 0x70) == 2) {\n              return (void *)0x0;\n            }\n          }\n          else {\n            if ((*(ushort *)((long)pvVar11 + 0x72) & 2) == 0) {\n              if (((*(ushort *)((long)pvVar11 + 0x72) & 1) == 0) &&\n                 (iVar5 = FUN_00116203(param_1,*(undefined8 *)((long)pvVar11 + 8),0xffffffff,\n                                       &DAT_0011ff41), iVar5 != 0)) {\n                piVar7 = __errno_location();\n                *(int *)((long)pvVar11 + 0x40) = *piVar7;\n                *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\n                goto LAB_001179e4;\n              }\n            }\n            else {\n              if ((*(uint *)(param_1 + 9) & 4) == 0) {\n                if ((*(uint *)(param_1 + 9) & 0x200) == 0) {\n                  iVar5 = fchdir(*(int *)((long)pvVar11 + 0x44));\n                  if (iVar5 != 0) {\n                    piVar7 = __errno_location();\n                    *(int *)((long)pvVar11 + 0x40) = *piVar7;\n                    *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\n                  }\n                }\n                else {\n                  FUN_0011615c(param_1,*(undefined4 *)((long)pvVar11 + 0x44),1);\n                }\n              }\n              close(*(int *)((long)pvVar11 + 0x44));\n            }\nLAB_001177a7:\n            if (*(short *)((long)pvVar11 + 0x70) == 2) goto LAB_00117a88;\n          }\n          if (*(int *)((long)pvVar11 + 0x40) == 0) {\n            *(undefined2 *)((long)pvVar11 + 0x70) = 6;\n            FUN_00116412(param_1,pvVar11);\n          }\n          else {\n            *(undefined2 *)((long)pvVar11 + 0x70) = 7;\n          }\nLAB_00117a88:\n          if ((*(uint *)(param_1 + 9) & 0x4000) != 0) {\n            return (void *)0x0;\n          }\n          return pvVar11;\n        }\n        *param_1 = (long)pvVar11;\n        free(pvVar12);\n        if (*(long *)((long)pvVar11 + 0x58) == 0) {\n          iVar5 = FUN_001161af(param_1);\n          if (iVar5 != 0) {\n            *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\n            return (void *)0x0;\n          }\n          FUN_00115eb3(param_1);\n          *(long *)((long)pvVar11 + 0x48) = *(long *)((long)pvVar11 + 0x60);\n          __s = (char *)((long)pvVar11 + 0x108);\n          memmove((void *)param_1[4],__s,*(long *)((long)pvVar11 + 0x60) + 1);\n          pcVar9 = strrchr(__s,0x2f);\n          if ((pcVar9 == (char *)0x0) || ((__s == pcVar9 && (pcVar9[1] == '\0'))))\n          goto LAB_0011784f;\n          uVar10 = 0xffffffffffffffff;\n          pcVar13 = pcVar9 + 1;\n          goto code_r0x00117837;\n        }\n        pvVar12 = pvVar11;\n      } while (*(short *)((long)pvVar11 + 0x74) == 4);\n      if (*(short *)((long)pvVar11 + 0x74) == 2) {\n        sVar4 = FUN_00115abc(param_1,pvVar11,1);\n        *(short *)((long)pvVar11 + 0x70) = sVar4;\n        if ((sVar4 == 1) && ((*(byte *)(param_1 + 9) & 4) == 0)) {\n          iVar5 = FUN_00115e27(param_1,&DAT_0011ff42);\n          *(int *)((long)pvVar11 + 0x44) = iVar5;\n          if (iVar5 < 0) {\n            piVar7 = __errno_location();\n            *(int *)((long)pvVar11 + 0x40) = *piVar7;\n            *(undefined2 *)((long)pvVar11 + 0x70) = 7;\n          }\n          else {\n            *(ushort *)((long)pvVar11 + 0x72) = *(ushort *)((long)pvVar11 + 0x72) | 2;\n          }\n        }\n        *(undefined2 *)((long)pvVar11 + 0x74) = 3;\n      }\n    }\nLAB_00117587:\n    lVar8 = *(long *)(*(long *)((long)pvVar11 + 8) + 0x48);\n    lVar6 = lVar8 + -1;\n    if (*(char *)(*(long *)(*(long *)((long)pvVar11 + 8) + 0x38) + -1 + lVar8) != '/') {\n      lVar6 = lVar8;\n    }\n    lVar8 = param_1[4];\n    *(undefined1 *)(lVar6 + lVar8) = 0x2f;\n    memmove((undefined1 *)(lVar6 + lVar8) + 1,(void *)((long)pvVar11 + 0x108),\n            *(long *)((long)pvVar11 + 0x60) + 1);\n  }\n  goto LAB_001175c0;\n  while( true ) {\n    uVar10 = uVar10 - 1;\n    cVar2 = *pcVar13;\n    pcVar13 = pcVar13 + (ulong)bVar14 * -2 + 1;\n    if (cVar2 == '\0') break;\ncode_r0x00117837:\n    if (uVar10 == 0) break;\n  }\n  memmove(__s,pcVar9 + 1,~uVar10);\n  *(ulong *)((long)pvVar11 + 0x60) = ~uVar10 - 1;\nLAB_0011784f:\n  lVar8 = param_1[4];\n  *(long *)((long)pvVar11 + 0x38) = lVar8;\n  *(long *)((long)pvVar11 + 0x30) = lVar8;\n  FUN_00115dc3(param_1);\nLAB_001175c0:\n  *param_1 = (long)pvVar11;\n  if (*(short *)((long)pvVar11 + 0x70) == 0xb) {\n    if (*(long *)((long)pvVar11 + 0xa8) != 2) {\n      if (*(long *)((long)pvVar11 + 0xa8) == 1) {\n        return pvVar11;\n      }\n                    \n      abort();\n    }\n    lVar8 = *(long *)((long)pvVar11 + 8);\n    if (((*(long *)(lVar8 + 0x68) == 0) && ((*(uint *)(param_1 + 9) & 0x18) == 0x18)) &&\n       (iVar5 = FUN_0011603e(lVar8,*(undefined4 *)((long)param_1 + 0x2c)), iVar5 == 2))\n    goto LAB_001175cf;\n    sVar4 = FUN_00115abc(param_1,pvVar11,0);\n    *(short *)((long)pvVar11 + 0x70) = sVar4;\n    if ((*(uint *)((long)pvVar11 + 0x90) & 0xf000) != 0x4000) goto LAB_001175cf;\n    if (*(long *)((long)pvVar11 + 0x58) != 0) {\n      uVar10 = *(long *)(lVar8 + 0x68) - 1;\n      if (0xfffffffffffffffd < uVar10) {\n        if (sVar4 != 1) {\n          return pvVar11;\n        }\n        goto LAB_001175ea;\n      }\n      *(ulong *)(lVar8 + 0x68) = uVar10;\n      goto LAB_001175cf;\n    }\n    if (sVar4 != 1) {\n      return pvVar11;\n    }\n  }\n  else {\nLAB_001175cf:\n    if (*(short *)((long)pvVar11 + 0x70) != 1) {\n      return pvVar11;\n    }\n    if (*(long *)((long)pvVar11 + 0x58) != 0) goto LAB_001175ea;\n  }\n  param_1[3] = *(long *)((long)pvVar11 + 0x78);\nLAB_001175ea:\n  cVar2 = FUN_001160b2(param_1,pvVar11);\n  if (cVar2 == '\0') {\n    piVar7 = __errno_location();\n    *piVar7 = 0xc;\n    pvVar11 = (void *)0x0;\n  }\n  return pvVar11;\n}" { (declaration "char *__s;" primitive_type (pointer_declarator "*__s" * identifier) ;) (declaration "uint uVar1;" type_identifier identifier ;) (declaration "char cVar2;" primitive_type identifier ;) (declaration "undefined2 uVar3;" type_identifier identifier ;) (declaration "short sVar4;" (sized_type_specifier "short" short) identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "long lVar6;" (sized_type_specifier "long" long) identifier ;) (declaration "int *piVar7;" primitive_type (pointer_declarator "*piVar7" * identifier) ;) (declaration "long lVar8;" (sized_type_specifier "long" long) identifier ;) (declaration "char *pcVar9;" primitive_type (pointer_declarator "*pcVar9" * identifier) ;) (declaration "ulong uVar10;" type_identifier identifier ;) (declaration "void *pvVar11;" primitive_type (pointer_declarator "*pvVar11" * identifier) ;) (declaration "void *pvVar12;" primitive_type (pointer_declarator "*pvVar12" * identifier) ;) (declaration "char *pcVar13;" primitive_type (pointer_declarator "*pcVar13" * identifier) ;) (declaration "byte bVar14;" type_identifier identifier ;) (expression_statement "bVar14 = 0;" (assignment_expression "bVar14 = 0" identifier = number_literal) ;) (expression_statement "pvVar11 = (void *)*param_1;" (assignment_expression "pvVar11 = (void *)*param_1" identifier = (cast_expression "(void *)*param_1" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_1" * identifier))) ;) (if_statement "if (pvVar11 == (void *)0x0) {\n    return (void *)0x0;\n  }" if (parenthesized_expression "(pvVar11 == (void *)0x0)" ( (binary_expression "pvVar11 == (void *)0x0" identifier == (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    return (void *)0x0;\n  }" { (return_statement "return (void *)0x0;" return (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (if_statement "if ((*(byte *)((long)param_1 + 0x49) & 0x40) != 0) {\n    return (void *)0x0;\n  }" if (parenthesized_expression "((*(byte *)((long)param_1 + 0x49) & 0x40) != 0)" ( (binary_expression "(*(byte *)((long)param_1 + 0x49) & 0x40) != 0" (parenthesized_expression "(*(byte *)((long)param_1 + 0x49) & 0x40)" ( (binary_expression "*(byte *)((long)param_1 + 0x49) & 0x40" (pointer_expression "*(byte *)((long)param_1 + 0x49)" * (cast_expression "(byte *)((long)param_1 + 0x49)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_1 + 0x49)" ( (binary_expression "(long)param_1 + 0x49" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n    return (void *)0x0;\n  }" { (return_statement "return (void *)0x0;" return (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (expression_statement "sVar4 = *(short *)((long)pvVar11 + 0x74);" (assignment_expression "sVar4 = *(short *)((long)pvVar11 + 0x74)" identifier = (pointer_expression "*(short *)((long)pvVar11 + 0x74)" * (cast_expression "(short *)((long)pvVar11 + 0x74)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)pvVar11 + 0x74)" ( (binary_expression "(long)pvVar11 + 0x74" (cast_expression "(long)pvVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ))))) ;) (expression_statement "*(undefined2 *)((long)pvVar11 + 0x74) = 3;" (assignment_expression "*(undefined2 *)((long)pvVar11 + 0x74) = 3" (pointer_expression "*(undefined2 *)((long)pvVar11 + 0x74)" * (cast_expression "(undefined2 *)((long)pvVar11 + 0x74)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)pvVar11 + 0x74)" ( (binary_expression "(long)pvVar11 + 0x74" (cast_expression "(long)pvVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = number_literal) ;) (if_statement "if (sVar4 == 1) {\n    uVar3 = FUN_00115abc(param_1,pvVar11,0);\n    *(undefined2 *)((long)pvVar11 + 0x70) = uVar3;\n    return pvVar11;\n  }" if (parenthesized_expression "(sVar4 == 1)" ( (binary_expression "sVar4 == 1" identifier == number_literal) )) (compound_statement "{\n    uVar3 = FUN_00115abc(param_1,pvVar11,0);\n    *(undefined2 *)((long)pvVar11 + 0x70) = uVar3;\n    return pvVar11;\n  }" { (expression_statement "uVar3 = FUN_00115abc(param_1,pvVar11,0);" (assignment_expression "uVar3 = FUN_00115abc(param_1,pvVar11,0)" identifier = (call_expression "FUN_00115abc(param_1,pvVar11,0)" identifier (argument_list "(param_1,pvVar11,0)" ( identifier , identifier , number_literal )))) ;) (expression_statement "*(undefined2 *)((long)pvVar11 + 0x70) = uVar3;" (assignment_expression "*(undefined2 *)((long)pvVar11 + 0x70) = uVar3" (pointer_expression "*(undefined2 *)((long)pvVar11 + 0x70)" * (cast_expression "(undefined2 *)((long)pvVar11 + 0x70)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)pvVar11 + 0x70)" ( (binary_expression "(long)pvVar11 + 0x70" (cast_expression "(long)pvVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = identifier) ;) (return_statement "return pvVar11;" return identifier ;) })) (expression_statement "pvVar12 = pvVar11;" (assignment_expression "pvVar12 = pvVar11" identifier = identifier) ;) (if_statement "if (sVar4 == 2) {\n    if (1 < (ushort)(*(short *)((long)pvVar11 + 0x70) - 0xcU)) {\n      if (*(short *)((long)pvVar11 + 0x70) != 1) goto LAB_00117717;\n      goto LAB_00117457;\n    }\n    sVar4 = FUN_00115abc(param_1,pvVar11,1);\n    *(short *)((long)pvVar11 + 0x70) = sVar4;\n    if ((sVar4 == 1) && ((*(byte *)(param_1 + 9) & 4) == 0)) {\n      iVar5 = FUN_00115e27(param_1,&DAT_0011ff42);\n      *(int *)((long)pvVar11 + 0x44) = iVar5;\n      if (iVar5 < 0) {\n        piVar7 = __errno_location();\n        *(int *)((long)pvVar11 + 0x40) = *piVar7;\n        *(undefined2 *)((long)pvVar11 + 0x70) = 7;\n      }\n      else {\n        *(ushort *)((long)pvVar11 + 0x72) = *(ushort *)((long)pvVar11 + 0x72) | 2;\n      }\n    }\n  }\n  else {\n    if (*(short *)((long)pvVar11 + 0x70) == 1) {\n      if (sVar4 == 4) goto LAB_00117473;\nLAB_00117457:\n      uVar1 = *(uint *)(param_1 + 9);\n      if (((uVar1 & 0x40) != 0) && (*(long *)((long)pvVar11 + 0x78) != param_1[3])) {\nLAB_00117473:\n        if ((*(byte *)((long)pvVar11 + 0x72) & 2) != 0) {\n          close(*(int *)((long)pvVar11 + 0x44));\n        }\n        if (param_1[1] != 0) {\n          FUN_00115e7a();\n          param_1[1] = 0;\n        }\n        *(undefined2 *)((long)pvVar11 + 0x70) = 6;\n        FUN_00116412(param_1,pvVar11);\n        return pvVar11;\n      }\n      if (param_1[1] == 0) {\nLAB_00117628:\n        lVar8 = FUN_001164c9(param_1,3);\n        param_1[1] = lVar8;\n        if (lVar8 == 0) {\n          if ((*(byte *)((long)param_1 + 0x49) & 0x40) == 0) {\n            if ((*(int *)((long)pvVar11 + 0x40) != 0) && (*(short *)((long)pvVar11 + 0x70) != 4)) {\n              *(undefined2 *)((long)pvVar11 + 0x70) = 7;\n            }\n            FUN_00116412(param_1,pvVar11);\n            return pvVar11;\n          }\n          return (void *)0x0;\n        }\n      }\n      else {\n        if ((uVar1 & 0x2000) != 0) {\n          *(uint *)(param_1 + 9) = uVar1 & 0xffffdfff;\n          FUN_00115e7a();\n          param_1[1] = 0;\n          goto LAB_00117628;\n        }\n        iVar5 = FUN_00116203(param_1,pvVar11,0xffffffff,*(undefined8 *)((long)pvVar11 + 0x30));\n        if (iVar5 != 0) {\n          piVar7 = __errno_location();\n          *(int *)((long)pvVar11 + 0x40) = *piVar7;\n          *(ushort *)((long)pvVar11 + 0x72) = *(ushort *)((long)pvVar11 + 0x72) | 1;\n          for (lVar8 = param_1[1]; lVar8 != 0; lVar8 = *(long *)(lVar8 + 0x10)) {\n            *(undefined8 *)(lVar8 + 0x30) = *(undefined8 *)(*(long *)(lVar8 + 8) + 0x30);\n          }\n        }\n      }\n      pvVar11 = (void *)param_1[1];\n      param_1[1] = 0;\n    }\n    else {\nLAB_00117717:\n      do {\n        pvVar11 = *(void **)((long)pvVar12 + 0x10);\n        if (pvVar11 == (void *)0x0) {\n          lVar8 = *(long *)((long)pvVar12 + 8);\n          if (*(long *)(lVar8 + 0x18) != 0) {\n            *param_1 = lVar8;\n            *(undefined1 *)(param_1[4] + *(long *)(lVar8 + 0x48)) = 0;\n            pvVar11 = (void *)FUN_001164c9(param_1,3);\n            if (pvVar11 != (void *)0x0) {\n              free(pvVar12);\n              goto LAB_00117587;\n            }\n            if ((*(byte *)((long)param_1 + 0x49) & 0x40) != 0) {\n              return (void *)0x0;\n            }\n          }\n          pvVar11 = *(void **)((long)pvVar12 + 8);\n          *param_1 = (long)pvVar11;\n          free(pvVar12);\n          if (*(long *)((long)pvVar11 + 0x58) == -1) {\n            free(pvVar11);\n            piVar7 = __errno_location();\n            *piVar7 = 0;\n            *param_1 = 0;\n            return (void *)0x0;\n          }\n          if (*(short *)((long)pvVar11 + 0x70) == 0xb) {\n                    \n            abort();\n          }\n          *(undefined1 *)(param_1[4] + *(long *)((long)pvVar11 + 0x48)) = 0;\n          if (*(long *)((long)pvVar11 + 0x58) == 0) {\n            iVar5 = FUN_001161af(param_1);\n            if (iVar5 == 0) goto LAB_001177a7;\n            piVar7 = __errno_location();\n            *(int *)((long)pvVar11 + 0x40) = *piVar7;\n            *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\nLAB_001179e4:\n            if (*(short *)((long)pvVar11 + 0x70) == 2) {\n              return (void *)0x0;\n            }\n          }\n          else {\n            if ((*(ushort *)((long)pvVar11 + 0x72) & 2) == 0) {\n              if (((*(ushort *)((long)pvVar11 + 0x72) & 1) == 0) &&\n                 (iVar5 = FUN_00116203(param_1,*(undefined8 *)((long)pvVar11 + 8),0xffffffff,\n                                       &DAT_0011ff41), iVar5 != 0)) {\n                piVar7 = __errno_location();\n                *(int *)((long)pvVar11 + 0x40) = *piVar7;\n                *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\n                goto LAB_001179e4;\n              }\n            }\n            else {\n              if ((*(uint *)(param_1 + 9) & 4) == 0) {\n                if ((*(uint *)(param_1 + 9) & 0x200) == 0) {\n                  iVar5 = fchdir(*(int *)((long)pvVar11 + 0x44));\n                  if (iVar5 != 0) {\n                    piVar7 = __errno_location();\n                    *(int *)((long)pvVar11 + 0x40) = *piVar7;\n                    *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\n                  }\n                }\n                else {\n                  FUN_0011615c(param_1,*(undefined4 *)((long)pvVar11 + 0x44),1);\n                }\n              }\n              close(*(int *)((long)pvVar11 + 0x44));\n            }\nLAB_001177a7:\n            if (*(short *)((long)pvVar11 + 0x70) == 2) goto LAB_00117a88;\n          }\n          if (*(int *)((long)pvVar11 + 0x40) == 0) {\n            *(undefined2 *)((long)pvVar11 + 0x70) = 6;\n            FUN_00116412(param_1,pvVar11);\n          }\n          else {\n            *(undefined2 *)((long)pvVar11 + 0x70) = 7;\n          }\nLAB_00117a88:\n          if ((*(uint *)(param_1 + 9) & 0x4000) != 0) {\n            return (void *)0x0;\n          }\n          return pvVar11;\n        }\n        *param_1 = (long)pvVar11;\n        free(pvVar12);\n        if (*(long *)((long)pvVar11 + 0x58) == 0) {\n          iVar5 = FUN_001161af(param_1);\n          if (iVar5 != 0) {\n            *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\n            return (void *)0x0;\n          }\n          FUN_00115eb3(param_1);\n          *(long *)((long)pvVar11 + 0x48) = *(long *)((long)pvVar11 + 0x60);\n          __s = (char *)((long)pvVar11 + 0x108);\n          memmove((void *)param_1[4],__s,*(long *)((long)pvVar11 + 0x60) + 1);\n          pcVar9 = strrchr(__s,0x2f);\n          if ((pcVar9 == (char *)0x0) || ((__s == pcVar9 && (pcVar9[1] == '\0'))))\n          goto LAB_0011784f;\n          uVar10 = 0xffffffffffffffff;\n          pcVar13 = pcVar9 + 1;\n          goto code_r0x00117837;\n        }\n        pvVar12 = pvVar11;\n      } while (*(short *)((long)pvVar11 + 0x74) == 4);\n      if (*(short *)((long)pvVar11 + 0x74) == 2) {\n        sVar4 = FUN_00115abc(param_1,pvVar11,1);\n        *(short *)((long)pvVar11 + 0x70) = sVar4;\n        if ((sVar4 == 1) && ((*(byte *)(param_1 + 9) & 4) == 0)) {\n          iVar5 = FUN_00115e27(param_1,&DAT_0011ff42);\n          *(int *)((long)pvVar11 + 0x44) = iVar5;\n          if (iVar5 < 0) {\n            piVar7 = __errno_location();\n            *(int *)((long)pvVar11 + 0x40) = *piVar7;\n            *(undefined2 *)((long)pvVar11 + 0x70) = 7;\n          }\n          else {\n            *(ushort *)((long)pvVar11 + 0x72) = *(ushort *)((long)pvVar11 + 0x72) | 2;\n          }\n        }\n        *(undefined2 *)((long)pvVar11 + 0x74) = 3;\n      }\n    }\nLAB_00117587:\n    lVar8 = *(long *)(*(long *)((long)pvVar11 + 8) + 0x48);\n    lVar6 = lVar8 + -1;\n    if (*(char *)(*(long *)(*(long *)((long)pvVar11 + 8) + 0x38) + -1 + lVar8) != '/') {\n      lVar6 = lVar8;\n    }\n    lVar8 = param_1[4];\n    *(undefined1 *)(lVar6 + lVar8) = 0x2f;\n    memmove((undefined1 *)(lVar6 + lVar8) + 1,(void *)((long)pvVar11 + 0x108),\n            *(long *)((long)pvVar11 + 0x60) + 1);\n  }" if (parenthesized_expression "(sVar4 == 2)" ( (binary_expression "sVar4 == 2" identifier == number_literal) )) (compound_statement "{\n    if (1 < (ushort)(*(short *)((long)pvVar11 + 0x70) - 0xcU)) {\n      if (*(short *)((long)pvVar11 + 0x70) != 1) goto LAB_00117717;\n      goto LAB_00117457;\n    }\n    sVar4 = FUN_00115abc(param_1,pvVar11,1);\n    *(short *)((long)pvVar11 + 0x70) = sVar4;\n    if ((sVar4 == 1) && ((*(byte *)(param_1 + 9) & 4) == 0)) {\n      iVar5 = FUN_00115e27(param_1,&DAT_0011ff42);\n      *(int *)((long)pvVar11 + 0x44) = iVar5;\n      if (iVar5 < 0) {\n        piVar7 = __errno_location();\n        *(int *)((long)pvVar11 + 0x40) = *piVar7;\n        *(undefined2 *)((long)pvVar11 + 0x70) = 7;\n      }\n      else {\n        *(ushort *)((long)pvVar11 + 0x72) = *(ushort *)((long)pvVar11 + 0x72) | 2;\n      }\n    }\n  }" { (if_statement "if (1 < (ushort)(*(short *)((long)pvVar11 + 0x70) - 0xcU)) {\n      if (*(short *)((long)pvVar11 + 0x70) != 1) goto LAB_00117717;\n      goto LAB_00117457;\n    }" if (parenthesized_expression "(1 < (ushort)(*(short *)((long)pvVar11 + 0x70) - 0xcU))" ( (binary_expression "1 < (ushort)(*(short *)((long)pvVar11 + 0x70) - 0xcU)" number_literal < (call_expression "(ushort)(*(short *)((long)pvVar11 + 0x70) - 0xcU)" (parenthesized_expression "(ushort)" ( identifier )) (argument_list "(*(short *)((long)pvVar11 + 0x70) - 0xcU)" ( (binary_expression "*(short *)((long)pvVar11 + 0x70) - 0xcU" (pointer_expression "*(short *)((long)pvVar11 + 0x70)" * (cast_expression "(short *)((long)pvVar11 + 0x70)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)pvVar11 + 0x70)" ( (binary_expression "(long)pvVar11 + 0x70" (cast_expression "(long)pvVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) - number_literal) )))) )) (compound_statement "{\n      if (*(short *)((long)pvVar11 + 0x70) != 1) goto LAB_00117717;\n      goto LAB_00117457;\n    }" { (if_statement "if (*(short *)((long)pvVar11 + 0x70) != 1) goto LAB_00117717;" if (parenthesized_expression "(*(short *)((long)pvVar11 + 0x70) != 1)" ( (binary_expression "*(short *)((long)pvVar11 + 0x70) != 1" (pointer_expression "*(short *)((long)pvVar11 + 0x70)" * (cast_expression "(short *)((long)pvVar11 + 0x70)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)pvVar11 + 0x70)" ( (binary_expression "(long)pvVar11 + 0x70" (cast_expression "(long)pvVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) != number_literal) )) (goto_statement "goto LAB_00117717;" goto statement_identifier ;)) (goto_statement "goto LAB_00117457;" goto statement_identifier ;) })) (expression_statement "sVar4 = FUN_00115abc(param_1,pvVar11,1);" (assignment_expression "sVar4 = FUN_00115abc(param_1,pvVar11,1)" identifier = (call_expression "FUN_00115abc(param_1,pvVar11,1)" identifier (argument_list "(param_1,pvVar11,1)" ( identifier , identifier , number_literal )))) ;) (expression_statement "*(short *)((long)pvVar11 + 0x70) = sVar4;" (assignment_expression "*(short *)((long)pvVar11 + 0x70) = sVar4" (pointer_expression "*(short *)((long)pvVar11 + 0x70)" * (cast_expression "(short *)((long)pvVar11 + 0x70)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)pvVar11 + 0x70)" ( (binary_expression "(long)pvVar11 + 0x70" (cast_expression "(long)pvVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = identifier) ;) (if_statement "if ((sVar4 == 1) && ((*(byte *)(param_1 + 9) & 4) == 0)) {\n      iVar5 = FUN_00115e27(param_1,&DAT_0011ff42);\n      *(int *)((long)pvVar11 + 0x44) = iVar5;\n      if (iVar5 < 0) {\n        piVar7 = __errno_location();\n        *(int *)((long)pvVar11 + 0x40) = *piVar7;\n        *(undefined2 *)((long)pvVar11 + 0x70) = 7;\n      }\n      else {\n        *(ushort *)((long)pvVar11 + 0x72) = *(ushort *)((long)pvVar11 + 0x72) | 2;\n      }\n    }" if (parenthesized_expression "((sVar4 == 1) && ((*(byte *)(param_1 + 9) & 4) == 0))" ( (binary_expression "(sVar4 == 1) && ((*(byte *)(param_1 + 9) & 4) == 0)" (parenthesized_expression "(sVar4 == 1)" ( (binary_expression "sVar4 == 1" identifier == number_literal) )) && (parenthesized_expression "((*(byte *)(param_1 + 9) & 4) == 0)" ( (binary_expression "(*(byte *)(param_1 + 9) & 4) == 0" (parenthesized_expression "(*(byte *)(param_1 + 9) & 4)" ( (binary_expression "*(byte *)(param_1 + 9) & 4" (pointer_expression "*(byte *)(param_1 + 9)" * (cast_expression "(byte *)(param_1 + 9)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 9)" ( (binary_expression "param_1 + 9" identifier + number_literal) )))) & number_literal) )) == number_literal) ))) )) (compound_statement "{\n      iVar5 = FUN_00115e27(param_1,&DAT_0011ff42);\n      *(int *)((long)pvVar11 + 0x44) = iVar5;\n      if (iVar5 < 0) {\n        piVar7 = __errno_location();\n        *(int *)((long)pvVar11 + 0x40) = *piVar7;\n        *(undefined2 *)((long)pvVar11 + 0x70) = 7;\n      }\n      else {\n        *(ushort *)((long)pvVar11 + 0x72) = *(ushort *)((long)pvVar11 + 0x72) | 2;\n      }\n    }" { (expression_statement "iVar5 = FUN_00115e27(param_1,&DAT_0011ff42);" (assignment_expression "iVar5 = FUN_00115e27(param_1,&DAT_0011ff42)" identifier = (call_expression "FUN_00115e27(param_1,&DAT_0011ff42)" identifier (argument_list "(param_1,&DAT_0011ff42)" ( identifier , (pointer_expression "&DAT_0011ff42" & identifier) )))) ;) (expression_statement "*(int *)((long)pvVar11 + 0x44) = iVar5;" (assignment_expression "*(int *)((long)pvVar11 + 0x44) = iVar5" (pointer_expression "*(int *)((long)pvVar11 + 0x44)" * (cast_expression "(int *)((long)pvVar11 + 0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)pvVar11 + 0x44)" ( (binary_expression "(long)pvVar11 + 0x44" (cast_expression "(long)pvVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = identifier) ;) (if_statement "if (iVar5 < 0) {\n        piVar7 = __errno_location();\n        *(int *)((long)pvVar11 + 0x40) = *piVar7;\n        *(undefined2 *)((long)pvVar11 + 0x70) = 7;\n      }\n      else {\n        *(ushort *)((long)pvVar11 + 0x72) = *(ushort *)((long)pvVar11 + 0x72) | 2;\n      }" if (parenthesized_expression "(iVar5 < 0)" ( (binary_expression "iVar5 < 0" identifier < number_literal) )) (compound_statement "{\n        piVar7 = __errno_location();\n        *(int *)((long)pvVar11 + 0x40) = *piVar7;\n        *(undefined2 *)((long)pvVar11 + 0x70) = 7;\n      }" { (expression_statement "piVar7 = __errno_location();" (assignment_expression "piVar7 = __errno_location()" identifier = (call_expression "__errno_location()" identifier (argument_list "()" ( )))) ;) (expression_statement "*(int *)((long)pvVar11 + 0x40) = *piVar7;" (assignment_expression "*(int *)((long)pvVar11 + 0x40) = *piVar7" (pointer_expression "*(int *)((long)pvVar11 + 0x40)" * (cast_expression "(int *)((long)pvVar11 + 0x40)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)pvVar11 + 0x40)" ( (binary_expression "(long)pvVar11 + 0x40" (cast_expression "(long)pvVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = (pointer_expression "*piVar7" * identifier)) ;) (expression_statement "*(undefined2 *)((long)pvVar11 + 0x70) = 7;" (assignment_expression "*(undefined2 *)((long)pvVar11 + 0x70) = 7" (pointer_expression "*(undefined2 *)((long)pvVar11 + 0x70)" * (cast_expression "(undefined2 *)((long)pvVar11 + 0x70)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)pvVar11 + 0x70)" ( (binary_expression "(long)pvVar11 + 0x70" (cast_expression "(long)pvVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = number_literal) ;) }) (else_clause "else {\n        *(ushort *)((long)pvVar11 + 0x72) = *(ushort *)((long)pvVar11 + 0x72) | 2;\n      }" else (compound_statement "{\n        *(ushort *)((long)pvVar11 + 0x72) = *(ushort *)((long)pvVar11 + 0x72) | 2;\n      }" { (expression_statement "*(ushort *)((long)pvVar11 + 0x72) = *(ushort *)((long)pvVar11 + 0x72) | 2;" (assignment_expression "*(ushort *)((long)pvVar11 + 0x72) = *(ushort *)((long)pvVar11 + 0x72) | 2" (pointer_expression "*(ushort *)((long)pvVar11 + 0x72)" * (cast_expression "(ushort *)((long)pvVar11 + 0x72)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)pvVar11 + 0x72)" ( (binary_expression "(long)pvVar11 + 0x72" (cast_expression "(long)pvVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = (binary_expression "*(ushort *)((long)pvVar11 + 0x72) | 2" (pointer_expression "*(ushort *)((long)pvVar11 + 0x72)" * (cast_expression "(ushort *)((long)pvVar11 + 0x72)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)pvVar11 + 0x72)" ( (binary_expression "(long)pvVar11 + 0x72" (cast_expression "(long)pvVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) | number_literal)) ;) }))) })) }) (else_clause "else {\n    if (*(short *)((long)pvVar11 + 0x70) == 1) {\n      if (sVar4 == 4) goto LAB_00117473;\nLAB_00117457:\n      uVar1 = *(uint *)(param_1 + 9);\n      if (((uVar1 & 0x40) != 0) && (*(long *)((long)pvVar11 + 0x78) != param_1[3])) {\nLAB_00117473:\n        if ((*(byte *)((long)pvVar11 + 0x72) & 2) != 0) {\n          close(*(int *)((long)pvVar11 + 0x44));\n        }\n        if (param_1[1] != 0) {\n          FUN_00115e7a();\n          param_1[1] = 0;\n        }\n        *(undefined2 *)((long)pvVar11 + 0x70) = 6;\n        FUN_00116412(param_1,pvVar11);\n        return pvVar11;\n      }\n      if (param_1[1] == 0) {\nLAB_00117628:\n        lVar8 = FUN_001164c9(param_1,3);\n        param_1[1] = lVar8;\n        if (lVar8 == 0) {\n          if ((*(byte *)((long)param_1 + 0x49) & 0x40) == 0) {\n            if ((*(int *)((long)pvVar11 + 0x40) != 0) && (*(short *)((long)pvVar11 + 0x70) != 4)) {\n              *(undefined2 *)((long)pvVar11 + 0x70) = 7;\n            }\n            FUN_00116412(param_1,pvVar11);\n            return pvVar11;\n          }\n          return (void *)0x0;\n        }\n      }\n      else {\n        if ((uVar1 & 0x2000) != 0) {\n          *(uint *)(param_1 + 9) = uVar1 & 0xffffdfff;\n          FUN_00115e7a();\n          param_1[1] = 0;\n          goto LAB_00117628;\n        }\n        iVar5 = FUN_00116203(param_1,pvVar11,0xffffffff,*(undefined8 *)((long)pvVar11 + 0x30));\n        if (iVar5 != 0) {\n          piVar7 = __errno_location();\n          *(int *)((long)pvVar11 + 0x40) = *piVar7;\n          *(ushort *)((long)pvVar11 + 0x72) = *(ushort *)((long)pvVar11 + 0x72) | 1;\n          for (lVar8 = param_1[1]; lVar8 != 0; lVar8 = *(long *)(lVar8 + 0x10)) {\n            *(undefined8 *)(lVar8 + 0x30) = *(undefined8 *)(*(long *)(lVar8 + 8) + 0x30);\n          }\n        }\n      }\n      pvVar11 = (void *)param_1[1];\n      param_1[1] = 0;\n    }\n    else {\nLAB_00117717:\n      do {\n        pvVar11 = *(void **)((long)pvVar12 + 0x10);\n        if (pvVar11 == (void *)0x0) {\n          lVar8 = *(long *)((long)pvVar12 + 8);\n          if (*(long *)(lVar8 + 0x18) != 0) {\n            *param_1 = lVar8;\n            *(undefined1 *)(param_1[4] + *(long *)(lVar8 + 0x48)) = 0;\n            pvVar11 = (void *)FUN_001164c9(param_1,3);\n            if (pvVar11 != (void *)0x0) {\n              free(pvVar12);\n              goto LAB_00117587;\n            }\n            if ((*(byte *)((long)param_1 + 0x49) & 0x40) != 0) {\n              return (void *)0x0;\n            }\n          }\n          pvVar11 = *(void **)((long)pvVar12 + 8);\n          *param_1 = (long)pvVar11;\n          free(pvVar12);\n          if (*(long *)((long)pvVar11 + 0x58) == -1) {\n            free(pvVar11);\n            piVar7 = __errno_location();\n            *piVar7 = 0;\n            *param_1 = 0;\n            return (void *)0x0;\n          }\n          if (*(short *)((long)pvVar11 + 0x70) == 0xb) {\n                    \n            abort();\n          }\n          *(undefined1 *)(param_1[4] + *(long *)((long)pvVar11 + 0x48)) = 0;\n          if (*(long *)((long)pvVar11 + 0x58) == 0) {\n            iVar5 = FUN_001161af(param_1);\n            if (iVar5 == 0) goto LAB_001177a7;\n            piVar7 = __errno_location();\n            *(int *)((long)pvVar11 + 0x40) = *piVar7;\n            *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\nLAB_001179e4:\n            if (*(short *)((long)pvVar11 + 0x70) == 2) {\n              return (void *)0x0;\n            }\n          }\n          else {\n            if ((*(ushort *)((long)pvVar11 + 0x72) & 2) == 0) {\n              if (((*(ushort *)((long)pvVar11 + 0x72) & 1) == 0) &&\n                 (iVar5 = FUN_00116203(param_1,*(undefined8 *)((long)pvVar11 + 8),0xffffffff,\n                                       &DAT_0011ff41), iVar5 != 0)) {\n                piVar7 = __errno_location();\n                *(int *)((long)pvVar11 + 0x40) = *piVar7;\n                *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\n                goto LAB_001179e4;\n              }\n            }\n            else {\n              if ((*(uint *)(param_1 + 9) & 4) == 0) {\n                if ((*(uint *)(param_1 + 9) & 0x200) == 0) {\n                  iVar5 = fchdir(*(int *)((long)pvVar11 + 0x44));\n                  if (iVar5 != 0) {\n                    piVar7 = __errno_location();\n                    *(int *)((long)pvVar11 + 0x40) = *piVar7;\n                    *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\n                  }\n                }\n                else {\n                  FUN_0011615c(param_1,*(undefined4 *)((long)pvVar11 + 0x44),1);\n                }\n              }\n              close(*(int *)((long)pvVar11 + 0x44));\n            }\nLAB_001177a7:\n            if (*(short *)((long)pvVar11 + 0x70) == 2) goto LAB_00117a88;\n          }\n          if (*(int *)((long)pvVar11 + 0x40) == 0) {\n            *(undefined2 *)((long)pvVar11 + 0x70) = 6;\n            FUN_00116412(param_1,pvVar11);\n          }\n          else {\n            *(undefined2 *)((long)pvVar11 + 0x70) = 7;\n          }\nLAB_00117a88:\n          if ((*(uint *)(param_1 + 9) & 0x4000) != 0) {\n            return (void *)0x0;\n          }\n          return pvVar11;\n        }\n        *param_1 = (long)pvVar11;\n        free(pvVar12);\n        if (*(long *)((long)pvVar11 + 0x58) == 0) {\n          iVar5 = FUN_001161af(param_1);\n          if (iVar5 != 0) {\n            *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\n            return (void *)0x0;\n          }\n          FUN_00115eb3(param_1);\n          *(long *)((long)pvVar11 + 0x48) = *(long *)((long)pvVar11 + 0x60);\n          __s = (char *)((long)pvVar11 + 0x108);\n          memmove((void *)param_1[4],__s,*(long *)((long)pvVar11 + 0x60) + 1);\n          pcVar9 = strrchr(__s,0x2f);\n          if ((pcVar9 == (char *)0x0) || ((__s == pcVar9 && (pcVar9[1] == '\0'))))\n          goto LAB_0011784f;\n          uVar10 = 0xffffffffffffffff;\n          pcVar13 = pcVar9 + 1;\n          goto code_r0x00117837;\n        }\n        pvVar12 = pvVar11;\n      } while (*(short *)((long)pvVar11 + 0x74) == 4);\n      if (*(short *)((long)pvVar11 + 0x74) == 2) {\n        sVar4 = FUN_00115abc(param_1,pvVar11,1);\n        *(short *)((long)pvVar11 + 0x70) = sVar4;\n        if ((sVar4 == 1) && ((*(byte *)(param_1 + 9) & 4) == 0)) {\n          iVar5 = FUN_00115e27(param_1,&DAT_0011ff42);\n          *(int *)((long)pvVar11 + 0x44) = iVar5;\n          if (iVar5 < 0) {\n            piVar7 = __errno_location();\n            *(int *)((long)pvVar11 + 0x40) = *piVar7;\n            *(undefined2 *)((long)pvVar11 + 0x70) = 7;\n          }\n          else {\n            *(ushort *)((long)pvVar11 + 0x72) = *(ushort *)((long)pvVar11 + 0x72) | 2;\n          }\n        }\n        *(undefined2 *)((long)pvVar11 + 0x74) = 3;\n      }\n    }\nLAB_00117587:\n    lVar8 = *(long *)(*(long *)((long)pvVar11 + 8) + 0x48);\n    lVar6 = lVar8 + -1;\n    if (*(char *)(*(long *)(*(long *)((long)pvVar11 + 8) + 0x38) + -1 + lVar8) != '/') {\n      lVar6 = lVar8;\n    }\n    lVar8 = param_1[4];\n    *(undefined1 *)(lVar6 + lVar8) = 0x2f;\n    memmove((undefined1 *)(lVar6 + lVar8) + 1,(void *)((long)pvVar11 + 0x108),\n            *(long *)((long)pvVar11 + 0x60) + 1);\n  }" else (compound_statement "{\n    if (*(short *)((long)pvVar11 + 0x70) == 1) {\n      if (sVar4 == 4) goto LAB_00117473;\nLAB_00117457:\n      uVar1 = *(uint *)(param_1 + 9);\n      if (((uVar1 & 0x40) != 0) && (*(long *)((long)pvVar11 + 0x78) != param_1[3])) {\nLAB_00117473:\n        if ((*(byte *)((long)pvVar11 + 0x72) & 2) != 0) {\n          close(*(int *)((long)pvVar11 + 0x44));\n        }\n        if (param_1[1] != 0) {\n          FUN_00115e7a();\n          param_1[1] = 0;\n        }\n        *(undefined2 *)((long)pvVar11 + 0x70) = 6;\n        FUN_00116412(param_1,pvVar11);\n        return pvVar11;\n      }\n      if (param_1[1] == 0) {\nLAB_00117628:\n        lVar8 = FUN_001164c9(param_1,3);\n        param_1[1] = lVar8;\n        if (lVar8 == 0) {\n          if ((*(byte *)((long)param_1 + 0x49) & 0x40) == 0) {\n            if ((*(int *)((long)pvVar11 + 0x40) != 0) && (*(short *)((long)pvVar11 + 0x70) != 4)) {\n              *(undefined2 *)((long)pvVar11 + 0x70) = 7;\n            }\n            FUN_00116412(param_1,pvVar11);\n            return pvVar11;\n          }\n          return (void *)0x0;\n        }\n      }\n      else {\n        if ((uVar1 & 0x2000) != 0) {\n          *(uint *)(param_1 + 9) = uVar1 & 0xffffdfff;\n          FUN_00115e7a();\n          param_1[1] = 0;\n          goto LAB_00117628;\n        }\n        iVar5 = FUN_00116203(param_1,pvVar11,0xffffffff,*(undefined8 *)((long)pvVar11 + 0x30));\n        if (iVar5 != 0) {\n          piVar7 = __errno_location();\n          *(int *)((long)pvVar11 + 0x40) = *piVar7;\n          *(ushort *)((long)pvVar11 + 0x72) = *(ushort *)((long)pvVar11 + 0x72) | 1;\n          for (lVar8 = param_1[1]; lVar8 != 0; lVar8 = *(long *)(lVar8 + 0x10)) {\n            *(undefined8 *)(lVar8 + 0x30) = *(undefined8 *)(*(long *)(lVar8 + 8) + 0x30);\n          }\n        }\n      }\n      pvVar11 = (void *)param_1[1];\n      param_1[1] = 0;\n    }\n    else {\nLAB_00117717:\n      do {\n        pvVar11 = *(void **)((long)pvVar12 + 0x10);\n        if (pvVar11 == (void *)0x0) {\n          lVar8 = *(long *)((long)pvVar12 + 8);\n          if (*(long *)(lVar8 + 0x18) != 0) {\n            *param_1 = lVar8;\n            *(undefined1 *)(param_1[4] + *(long *)(lVar8 + 0x48)) = 0;\n            pvVar11 = (void *)FUN_001164c9(param_1,3);\n            if (pvVar11 != (void *)0x0) {\n              free(pvVar12);\n              goto LAB_00117587;\n            }\n            if ((*(byte *)((long)param_1 + 0x49) & 0x40) != 0) {\n              return (void *)0x0;\n            }\n          }\n          pvVar11 = *(void **)((long)pvVar12 + 8);\n          *param_1 = (long)pvVar11;\n          free(pvVar12);\n          if (*(long *)((long)pvVar11 + 0x58) == -1) {\n            free(pvVar11);\n            piVar7 = __errno_location();\n            *piVar7 = 0;\n            *param_1 = 0;\n            return (void *)0x0;\n          }\n          if (*(short *)((long)pvVar11 + 0x70) == 0xb) {\n                    \n            abort();\n          }\n          *(undefined1 *)(param_1[4] + *(long *)((long)pvVar11 + 0x48)) = 0;\n          if (*(long *)((long)pvVar11 + 0x58) == 0) {\n            iVar5 = FUN_001161af(param_1);\n            if (iVar5 == 0) goto LAB_001177a7;\n            piVar7 = __errno_location();\n            *(int *)((long)pvVar11 + 0x40) = *piVar7;\n            *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\nLAB_001179e4:\n            if (*(short *)((long)pvVar11 + 0x70) == 2) {\n              return (void *)0x0;\n            }\n          }\n          else {\n            if ((*(ushort *)((long)pvVar11 + 0x72) & 2) == 0) {\n              if (((*(ushort *)((long)pvVar11 + 0x72) & 1) == 0) &&\n                 (iVar5 = FUN_00116203(param_1,*(undefined8 *)((long)pvVar11 + 8),0xffffffff,\n                                       &DAT_0011ff41), iVar5 != 0)) {\n                piVar7 = __errno_location();\n                *(int *)((long)pvVar11 + 0x40) = *piVar7;\n                *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\n                goto LAB_001179e4;\n              }\n            }\n            else {\n              if ((*(uint *)(param_1 + 9) & 4) == 0) {\n                if ((*(uint *)(param_1 + 9) & 0x200) == 0) {\n                  iVar5 = fchdir(*(int *)((long)pvVar11 + 0x44));\n                  if (iVar5 != 0) {\n                    piVar7 = __errno_location();\n                    *(int *)((long)pvVar11 + 0x40) = *piVar7;\n                    *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\n                  }\n                }\n                else {\n                  FUN_0011615c(param_1,*(undefined4 *)((long)pvVar11 + 0x44),1);\n                }\n              }\n              close(*(int *)((long)pvVar11 + 0x44));\n            }\nLAB_001177a7:\n            if (*(short *)((long)pvVar11 + 0x70) == 2) goto LAB_00117a88;\n          }\n          if (*(int *)((long)pvVar11 + 0x40) == 0) {\n            *(undefined2 *)((long)pvVar11 + 0x70) = 6;\n            FUN_00116412(param_1,pvVar11);\n          }\n          else {\n            *(undefined2 *)((long)pvVar11 + 0x70) = 7;\n          }\nLAB_00117a88:\n          if ((*(uint *)(param_1 + 9) & 0x4000) != 0) {\n            return (void *)0x0;\n          }\n          return pvVar11;\n        }\n        *param_1 = (long)pvVar11;\n        free(pvVar12);\n        if (*(long *)((long)pvVar11 + 0x58) == 0) {\n          iVar5 = FUN_001161af(param_1);\n          if (iVar5 != 0) {\n            *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\n            return (void *)0x0;\n          }\n          FUN_00115eb3(param_1);\n          *(long *)((long)pvVar11 + 0x48) = *(long *)((long)pvVar11 + 0x60);\n          __s = (char *)((long)pvVar11 + 0x108);\n          memmove((void *)param_1[4],__s,*(long *)((long)pvVar11 + 0x60) + 1);\n          pcVar9 = strrchr(__s,0x2f);\n          if ((pcVar9 == (char *)0x0) || ((__s == pcVar9 && (pcVar9[1] == '\0'))))\n          goto LAB_0011784f;\n          uVar10 = 0xffffffffffffffff;\n          pcVar13 = pcVar9 + 1;\n          goto code_r0x00117837;\n        }\n        pvVar12 = pvVar11;\n      } while (*(short *)((long)pvVar11 + 0x74) == 4);\n      if (*(short *)((long)pvVar11 + 0x74) == 2) {\n        sVar4 = FUN_00115abc(param_1,pvVar11,1);\n        *(short *)((long)pvVar11 + 0x70) = sVar4;\n        if ((sVar4 == 1) && ((*(byte *)(param_1 + 9) & 4) == 0)) {\n          iVar5 = FUN_00115e27(param_1,&DAT_0011ff42);\n          *(int *)((long)pvVar11 + 0x44) = iVar5;\n          if (iVar5 < 0) {\n            piVar7 = __errno_location();\n            *(int *)((long)pvVar11 + 0x40) = *piVar7;\n            *(undefined2 *)((long)pvVar11 + 0x70) = 7;\n          }\n          else {\n            *(ushort *)((long)pvVar11 + 0x72) = *(ushort *)((long)pvVar11 + 0x72) | 2;\n          }\n        }\n        *(undefined2 *)((long)pvVar11 + 0x74) = 3;\n      }\n    }\nLAB_00117587:\n    lVar8 = *(long *)(*(long *)((long)pvVar11 + 8) + 0x48);\n    lVar6 = lVar8 + -1;\n    if (*(char *)(*(long *)(*(long *)((long)pvVar11 + 8) + 0x38) + -1 + lVar8) != '/') {\n      lVar6 = lVar8;\n    }\n    lVar8 = param_1[4];\n    *(undefined1 *)(lVar6 + lVar8) = 0x2f;\n    memmove((undefined1 *)(lVar6 + lVar8) + 1,(void *)((long)pvVar11 + 0x108),\n            *(long *)((long)pvVar11 + 0x60) + 1);\n  }" { (if_statement "if (*(short *)((long)pvVar11 + 0x70) == 1) {\n      if (sVar4 == 4) goto LAB_00117473;\nLAB_00117457:\n      uVar1 = *(uint *)(param_1 + 9);\n      if (((uVar1 & 0x40) != 0) && (*(long *)((long)pvVar11 + 0x78) != param_1[3])) {\nLAB_00117473:\n        if ((*(byte *)((long)pvVar11 + 0x72) & 2) != 0) {\n          close(*(int *)((long)pvVar11 + 0x44));\n        }\n        if (param_1[1] != 0) {\n          FUN_00115e7a();\n          param_1[1] = 0;\n        }\n        *(undefined2 *)((long)pvVar11 + 0x70) = 6;\n        FUN_00116412(param_1,pvVar11);\n        return pvVar11;\n      }\n      if (param_1[1] == 0) {\nLAB_00117628:\n        lVar8 = FUN_001164c9(param_1,3);\n        param_1[1] = lVar8;\n        if (lVar8 == 0) {\n          if ((*(byte *)((long)param_1 + 0x49) & 0x40) == 0) {\n            if ((*(int *)((long)pvVar11 + 0x40) != 0) && (*(short *)((long)pvVar11 + 0x70) != 4)) {\n              *(undefined2 *)((long)pvVar11 + 0x70) = 7;\n            }\n            FUN_00116412(param_1,pvVar11);\n            return pvVar11;\n          }\n          return (void *)0x0;\n        }\n      }\n      else {\n        if ((uVar1 & 0x2000) != 0) {\n          *(uint *)(param_1 + 9) = uVar1 & 0xffffdfff;\n          FUN_00115e7a();\n          param_1[1] = 0;\n          goto LAB_00117628;\n        }\n        iVar5 = FUN_00116203(param_1,pvVar11,0xffffffff,*(undefined8 *)((long)pvVar11 + 0x30));\n        if (iVar5 != 0) {\n          piVar7 = __errno_location();\n          *(int *)((long)pvVar11 + 0x40) = *piVar7;\n          *(ushort *)((long)pvVar11 + 0x72) = *(ushort *)((long)pvVar11 + 0x72) | 1;\n          for (lVar8 = param_1[1]; lVar8 != 0; lVar8 = *(long *)(lVar8 + 0x10)) {\n            *(undefined8 *)(lVar8 + 0x30) = *(undefined8 *)(*(long *)(lVar8 + 8) + 0x30);\n          }\n        }\n      }\n      pvVar11 = (void *)param_1[1];\n      param_1[1] = 0;\n    }\n    else {\nLAB_00117717:\n      do {\n        pvVar11 = *(void **)((long)pvVar12 + 0x10);\n        if (pvVar11 == (void *)0x0) {\n          lVar8 = *(long *)((long)pvVar12 + 8);\n          if (*(long *)(lVar8 + 0x18) != 0) {\n            *param_1 = lVar8;\n            *(undefined1 *)(param_1[4] + *(long *)(lVar8 + 0x48)) = 0;\n            pvVar11 = (void *)FUN_001164c9(param_1,3);\n            if (pvVar11 != (void *)0x0) {\n              free(pvVar12);\n              goto LAB_00117587;\n            }\n            if ((*(byte *)((long)param_1 + 0x49) & 0x40) != 0) {\n              return (void *)0x0;\n            }\n          }\n          pvVar11 = *(void **)((long)pvVar12 + 8);\n          *param_1 = (long)pvVar11;\n          free(pvVar12);\n          if (*(long *)((long)pvVar11 + 0x58) == -1) {\n            free(pvVar11);\n            piVar7 = __errno_location();\n            *piVar7 = 0;\n            *param_1 = 0;\n            return (void *)0x0;\n          }\n          if (*(short *)((long)pvVar11 + 0x70) == 0xb) {\n                    \n            abort();\n          }\n          *(undefined1 *)(param_1[4] + *(long *)((long)pvVar11 + 0x48)) = 0;\n          if (*(long *)((long)pvVar11 + 0x58) == 0) {\n            iVar5 = FUN_001161af(param_1);\n            if (iVar5 == 0) goto LAB_001177a7;\n            piVar7 = __errno_location();\n            *(int *)((long)pvVar11 + 0x40) = *piVar7;\n            *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\nLAB_001179e4:\n            if (*(short *)((long)pvVar11 + 0x70) == 2) {\n              return (void *)0x0;\n            }\n          }\n          else {\n            if ((*(ushort *)((long)pvVar11 + 0x72) & 2) == 0) {\n              if (((*(ushort *)((long)pvVar11 + 0x72) & 1) == 0) &&\n                 (iVar5 = FUN_00116203(param_1,*(undefined8 *)((long)pvVar11 + 8),0xffffffff,\n                                       &DAT_0011ff41), iVar5 != 0)) {\n                piVar7 = __errno_location();\n                *(int *)((long)pvVar11 + 0x40) = *piVar7;\n                *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\n                goto LAB_001179e4;\n              }\n            }\n            else {\n              if ((*(uint *)(param_1 + 9) & 4) == 0) {\n                if ((*(uint *)(param_1 + 9) & 0x200) == 0) {\n                  iVar5 = fchdir(*(int *)((long)pvVar11 + 0x44));\n                  if (iVar5 != 0) {\n                    piVar7 = __errno_location();\n                    *(int *)((long)pvVar11 + 0x40) = *piVar7;\n                    *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\n                  }\n                }\n                else {\n                  FUN_0011615c(param_1,*(undefined4 *)((long)pvVar11 + 0x44),1);\n                }\n              }\n              close(*(int *)((long)pvVar11 + 0x44));\n            }\nLAB_001177a7:\n            if (*(short *)((long)pvVar11 + 0x70) == 2) goto LAB_00117a88;\n          }\n          if (*(int *)((long)pvVar11 + 0x40) == 0) {\n            *(undefined2 *)((long)pvVar11 + 0x70) = 6;\n            FUN_00116412(param_1,pvVar11);\n          }\n          else {\n            *(undefined2 *)((long)pvVar11 + 0x70) = 7;\n          }\nLAB_00117a88:\n          if ((*(uint *)(param_1 + 9) & 0x4000) != 0) {\n            return (void *)0x0;\n          }\n          return pvVar11;\n        }\n        *param_1 = (long)pvVar11;\n        free(pvVar12);\n        if (*(long *)((long)pvVar11 + 0x58) == 0) {\n          iVar5 = FUN_001161af(param_1);\n          if (iVar5 != 0) {\n            *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\n            return (void *)0x0;\n          }\n          FUN_00115eb3(param_1);\n          *(long *)((long)pvVar11 + 0x48) = *(long *)((long)pvVar11 + 0x60);\n          __s = (char *)((long)pvVar11 + 0x108);\n          memmove((void *)param_1[4],__s,*(long *)((long)pvVar11 + 0x60) + 1);\n          pcVar9 = strrchr(__s,0x2f);\n          if ((pcVar9 == (char *)0x0) || ((__s == pcVar9 && (pcVar9[1] == '\0'))))\n          goto LAB_0011784f;\n          uVar10 = 0xffffffffffffffff;\n          pcVar13 = pcVar9 + 1;\n          goto code_r0x00117837;\n        }\n        pvVar12 = pvVar11;\n      } while (*(short *)((long)pvVar11 + 0x74) == 4);\n      if (*(short *)((long)pvVar11 + 0x74) == 2) {\n        sVar4 = FUN_00115abc(param_1,pvVar11,1);\n        *(short *)((long)pvVar11 + 0x70) = sVar4;\n        if ((sVar4 == 1) && ((*(byte *)(param_1 + 9) & 4) == 0)) {\n          iVar5 = FUN_00115e27(param_1,&DAT_0011ff42);\n          *(int *)((long)pvVar11 + 0x44) = iVar5;\n          if (iVar5 < 0) {\n            piVar7 = __errno_location();\n            *(int *)((long)pvVar11 + 0x40) = *piVar7;\n            *(undefined2 *)((long)pvVar11 + 0x70) = 7;\n          }\n          else {\n            *(ushort *)((long)pvVar11 + 0x72) = *(ushort *)((long)pvVar11 + 0x72) | 2;\n          }\n        }\n        *(undefined2 *)((long)pvVar11 + 0x74) = 3;\n      }\n    }" if (parenthesized_expression "(*(short *)((long)pvVar11 + 0x70) == 1)" ( (binary_expression "*(short *)((long)pvVar11 + 0x70) == 1" (pointer_expression "*(short *)((long)pvVar11 + 0x70)" * (cast_expression "(short *)((long)pvVar11 + 0x70)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)pvVar11 + 0x70)" ( (binary_expression "(long)pvVar11 + 0x70" (cast_expression "(long)pvVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) == number_literal) )) (compound_statement "{\n      if (sVar4 == 4) goto LAB_00117473;\nLAB_00117457:\n      uVar1 = *(uint *)(param_1 + 9);\n      if (((uVar1 & 0x40) != 0) && (*(long *)((long)pvVar11 + 0x78) != param_1[3])) {\nLAB_00117473:\n        if ((*(byte *)((long)pvVar11 + 0x72) & 2) != 0) {\n          close(*(int *)((long)pvVar11 + 0x44));\n        }\n        if (param_1[1] != 0) {\n          FUN_00115e7a();\n          param_1[1] = 0;\n        }\n        *(undefined2 *)((long)pvVar11 + 0x70) = 6;\n        FUN_00116412(param_1,pvVar11);\n        return pvVar11;\n      }\n      if (param_1[1] == 0) {\nLAB_00117628:\n        lVar8 = FUN_001164c9(param_1,3);\n        param_1[1] = lVar8;\n        if (lVar8 == 0) {\n          if ((*(byte *)((long)param_1 + 0x49) & 0x40) == 0) {\n            if ((*(int *)((long)pvVar11 + 0x40) != 0) && (*(short *)((long)pvVar11 + 0x70) != 4)) {\n              *(undefined2 *)((long)pvVar11 + 0x70) = 7;\n            }\n            FUN_00116412(param_1,pvVar11);\n            return pvVar11;\n          }\n          return (void *)0x0;\n        }\n      }\n      else {\n        if ((uVar1 & 0x2000) != 0) {\n          *(uint *)(param_1 + 9) = uVar1 & 0xffffdfff;\n          FUN_00115e7a();\n          param_1[1] = 0;\n          goto LAB_00117628;\n        }\n        iVar5 = FUN_00116203(param_1,pvVar11,0xffffffff,*(undefined8 *)((long)pvVar11 + 0x30));\n        if (iVar5 != 0) {\n          piVar7 = __errno_location();\n          *(int *)((long)pvVar11 + 0x40) = *piVar7;\n          *(ushort *)((long)pvVar11 + 0x72) = *(ushort *)((long)pvVar11 + 0x72) | 1;\n          for (lVar8 = param_1[1]; lVar8 != 0; lVar8 = *(long *)(lVar8 + 0x10)) {\n            *(undefined8 *)(lVar8 + 0x30) = *(undefined8 *)(*(long *)(lVar8 + 8) + 0x30);\n          }\n        }\n      }\n      pvVar11 = (void *)param_1[1];\n      param_1[1] = 0;\n    }" { (if_statement "if (sVar4 == 4) goto LAB_00117473;" if (parenthesized_expression "(sVar4 == 4)" ( (binary_expression "sVar4 == 4" identifier == number_literal) )) (goto_statement "goto LAB_00117473;" goto statement_identifier ;)) (labeled_statement "LAB_00117457:\n      uVar1 = *(uint *)(param_1 + 9);" statement_identifier : (expression_statement "uVar1 = *(uint *)(param_1 + 9);" (assignment_expression "uVar1 = *(uint *)(param_1 + 9)" identifier = (pointer_expression "*(uint *)(param_1 + 9)" * (cast_expression "(uint *)(param_1 + 9)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 9)" ( (binary_expression "param_1 + 9" identifier + number_literal) ))))) ;)) (if_statement "if (((uVar1 & 0x40) != 0) && (*(long *)((long)pvVar11 + 0x78) != param_1[3])) {\nLAB_00117473:\n        if ((*(byte *)((long)pvVar11 + 0x72) & 2) != 0) {\n          close(*(int *)((long)pvVar11 + 0x44));\n        }\n        if (param_1[1] != 0) {\n          FUN_00115e7a();\n          param_1[1] = 0;\n        }\n        *(undefined2 *)((long)pvVar11 + 0x70) = 6;\n        FUN_00116412(param_1,pvVar11);\n        return pvVar11;\n      }" if (parenthesized_expression "(((uVar1 & 0x40) != 0) && (*(long *)((long)pvVar11 + 0x78) != param_1[3]))" ( (binary_expression "((uVar1 & 0x40) != 0) && (*(long *)((long)pvVar11 + 0x78) != param_1[3])" (parenthesized_expression "((uVar1 & 0x40) != 0)" ( (binary_expression "(uVar1 & 0x40) != 0" (parenthesized_expression "(uVar1 & 0x40)" ( (binary_expression "uVar1 & 0x40" identifier & number_literal) )) != number_literal) )) && (parenthesized_expression "(*(long *)((long)pvVar11 + 0x78) != param_1[3])" ( (binary_expression "*(long *)((long)pvVar11 + 0x78) != param_1[3]" (pointer_expression "*(long *)((long)pvVar11 + 0x78)" * (cast_expression "(long *)((long)pvVar11 + 0x78)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)pvVar11 + 0x78)" ( (binary_expression "(long)pvVar11 + 0x78" (cast_expression "(long)pvVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) != (subscript_expression "param_1[3]" identifier [ number_literal ])) ))) )) (compound_statement "{\nLAB_00117473:\n        if ((*(byte *)((long)pvVar11 + 0x72) & 2) != 0) {\n          close(*(int *)((long)pvVar11 + 0x44));\n        }\n        if (param_1[1] != 0) {\n          FUN_00115e7a();\n          param_1[1] = 0;\n        }\n        *(undefined2 *)((long)pvVar11 + 0x70) = 6;\n        FUN_00116412(param_1,pvVar11);\n        return pvVar11;\n      }" { (labeled_statement "LAB_00117473:\n        if ((*(byte *)((long)pvVar11 + 0x72) & 2) != 0) {\n          close(*(int *)((long)pvVar11 + 0x44));\n        }" statement_identifier : (if_statement "if ((*(byte *)((long)pvVar11 + 0x72) & 2) != 0) {\n          close(*(int *)((long)pvVar11 + 0x44));\n        }" if (parenthesized_expression "((*(byte *)((long)pvVar11 + 0x72) & 2) != 0)" ( (binary_expression "(*(byte *)((long)pvVar11 + 0x72) & 2) != 0" (parenthesized_expression "(*(byte *)((long)pvVar11 + 0x72) & 2)" ( (binary_expression "*(byte *)((long)pvVar11 + 0x72) & 2" (pointer_expression "*(byte *)((long)pvVar11 + 0x72)" * (cast_expression "(byte *)((long)pvVar11 + 0x72)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)pvVar11 + 0x72)" ( (binary_expression "(long)pvVar11 + 0x72" (cast_expression "(long)pvVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n          close(*(int *)((long)pvVar11 + 0x44));\n        }" { (expression_statement "close(*(int *)((long)pvVar11 + 0x44));" (call_expression "close(*(int *)((long)pvVar11 + 0x44))" identifier (argument_list "(*(int *)((long)pvVar11 + 0x44))" ( (pointer_expression "*(int *)((long)pvVar11 + 0x44)" * (cast_expression "(int *)((long)pvVar11 + 0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)pvVar11 + 0x44)" ( (binary_expression "(long)pvVar11 + 0x44" (cast_expression "(long)pvVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) ))) ;) }))) (if_statement "if (param_1[1] != 0) {\n          FUN_00115e7a();\n          param_1[1] = 0;\n        }" if (parenthesized_expression "(param_1[1] != 0)" ( (binary_expression "param_1[1] != 0" (subscript_expression "param_1[1]" identifier [ number_literal ]) != number_literal) )) (compound_statement "{\n          FUN_00115e7a();\n          param_1[1] = 0;\n        }" { (expression_statement "FUN_00115e7a();" (call_expression "FUN_00115e7a()" identifier (argument_list "()" ( ))) ;) (expression_statement "param_1[1] = 0;" (assignment_expression "param_1[1] = 0" (subscript_expression "param_1[1]" identifier [ number_literal ]) = number_literal) ;) })) (expression_statement "*(undefined2 *)((long)pvVar11 + 0x70) = 6;" (assignment_expression "*(undefined2 *)((long)pvVar11 + 0x70) = 6" (pointer_expression "*(undefined2 *)((long)pvVar11 + 0x70)" * (cast_expression "(undefined2 *)((long)pvVar11 + 0x70)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)pvVar11 + 0x70)" ( (binary_expression "(long)pvVar11 + 0x70" (cast_expression "(long)pvVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "FUN_00116412(param_1,pvVar11);" (call_expression "FUN_00116412(param_1,pvVar11)" identifier (argument_list "(param_1,pvVar11)" ( identifier , identifier ))) ;) (return_statement "return pvVar11;" return identifier ;) })) (if_statement "if (param_1[1] == 0) {\nLAB_00117628:\n        lVar8 = FUN_001164c9(param_1,3);\n        param_1[1] = lVar8;\n        if (lVar8 == 0) {\n          if ((*(byte *)((long)param_1 + 0x49) & 0x40) == 0) {\n            if ((*(int *)((long)pvVar11 + 0x40) != 0) && (*(short *)((long)pvVar11 + 0x70) != 4)) {\n              *(undefined2 *)((long)pvVar11 + 0x70) = 7;\n            }\n            FUN_00116412(param_1,pvVar11);\n            return pvVar11;\n          }\n          return (void *)0x0;\n        }\n      }\n      else {\n        if ((uVar1 & 0x2000) != 0) {\n          *(uint *)(param_1 + 9) = uVar1 & 0xffffdfff;\n          FUN_00115e7a();\n          param_1[1] = 0;\n          goto LAB_00117628;\n        }\n        iVar5 = FUN_00116203(param_1,pvVar11,0xffffffff,*(undefined8 *)((long)pvVar11 + 0x30));\n        if (iVar5 != 0) {\n          piVar7 = __errno_location();\n          *(int *)((long)pvVar11 + 0x40) = *piVar7;\n          *(ushort *)((long)pvVar11 + 0x72) = *(ushort *)((long)pvVar11 + 0x72) | 1;\n          for (lVar8 = param_1[1]; lVar8 != 0; lVar8 = *(long *)(lVar8 + 0x10)) {\n            *(undefined8 *)(lVar8 + 0x30) = *(undefined8 *)(*(long *)(lVar8 + 8) + 0x30);\n          }\n        }\n      }" if (parenthesized_expression "(param_1[1] == 0)" ( (binary_expression "param_1[1] == 0" (subscript_expression "param_1[1]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\nLAB_00117628:\n        lVar8 = FUN_001164c9(param_1,3);\n        param_1[1] = lVar8;\n        if (lVar8 == 0) {\n          if ((*(byte *)((long)param_1 + 0x49) & 0x40) == 0) {\n            if ((*(int *)((long)pvVar11 + 0x40) != 0) && (*(short *)((long)pvVar11 + 0x70) != 4)) {\n              *(undefined2 *)((long)pvVar11 + 0x70) = 7;\n            }\n            FUN_00116412(param_1,pvVar11);\n            return pvVar11;\n          }\n          return (void *)0x0;\n        }\n      }" { (labeled_statement "LAB_00117628:\n        lVar8 = FUN_001164c9(param_1,3);" statement_identifier : (expression_statement "lVar8 = FUN_001164c9(param_1,3);" (assignment_expression "lVar8 = FUN_001164c9(param_1,3)" identifier = (call_expression "FUN_001164c9(param_1,3)" identifier (argument_list "(param_1,3)" ( identifier , number_literal )))) ;)) (expression_statement "param_1[1] = lVar8;" (assignment_expression "param_1[1] = lVar8" (subscript_expression "param_1[1]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (lVar8 == 0) {\n          if ((*(byte *)((long)param_1 + 0x49) & 0x40) == 0) {\n            if ((*(int *)((long)pvVar11 + 0x40) != 0) && (*(short *)((long)pvVar11 + 0x70) != 4)) {\n              *(undefined2 *)((long)pvVar11 + 0x70) = 7;\n            }\n            FUN_00116412(param_1,pvVar11);\n            return pvVar11;\n          }\n          return (void *)0x0;\n        }" if (parenthesized_expression "(lVar8 == 0)" ( (binary_expression "lVar8 == 0" identifier == number_literal) )) (compound_statement "{\n          if ((*(byte *)((long)param_1 + 0x49) & 0x40) == 0) {\n            if ((*(int *)((long)pvVar11 + 0x40) != 0) && (*(short *)((long)pvVar11 + 0x70) != 4)) {\n              *(undefined2 *)((long)pvVar11 + 0x70) = 7;\n            }\n            FUN_00116412(param_1,pvVar11);\n            return pvVar11;\n          }\n          return (void *)0x0;\n        }" { (if_statement "if ((*(byte *)((long)param_1 + 0x49) & 0x40) == 0) {\n            if ((*(int *)((long)pvVar11 + 0x40) != 0) && (*(short *)((long)pvVar11 + 0x70) != 4)) {\n              *(undefined2 *)((long)pvVar11 + 0x70) = 7;\n            }\n            FUN_00116412(param_1,pvVar11);\n            return pvVar11;\n          }" if (parenthesized_expression "((*(byte *)((long)param_1 + 0x49) & 0x40) == 0)" ( (binary_expression "(*(byte *)((long)param_1 + 0x49) & 0x40) == 0" (parenthesized_expression "(*(byte *)((long)param_1 + 0x49) & 0x40)" ( (binary_expression "*(byte *)((long)param_1 + 0x49) & 0x40" (pointer_expression "*(byte *)((long)param_1 + 0x49)" * (cast_expression "(byte *)((long)param_1 + 0x49)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_1 + 0x49)" ( (binary_expression "(long)param_1 + 0x49" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n            if ((*(int *)((long)pvVar11 + 0x40) != 0) && (*(short *)((long)pvVar11 + 0x70) != 4)) {\n              *(undefined2 *)((long)pvVar11 + 0x70) = 7;\n            }\n            FUN_00116412(param_1,pvVar11);\n            return pvVar11;\n          }" { (if_statement "if ((*(int *)((long)pvVar11 + 0x40) != 0) && (*(short *)((long)pvVar11 + 0x70) != 4)) {\n              *(undefined2 *)((long)pvVar11 + 0x70) = 7;\n            }" if (parenthesized_expression "((*(int *)((long)pvVar11 + 0x40) != 0) && (*(short *)((long)pvVar11 + 0x70) != 4))" ( (binary_expression "(*(int *)((long)pvVar11 + 0x40) != 0) && (*(short *)((long)pvVar11 + 0x70) != 4)" (parenthesized_expression "(*(int *)((long)pvVar11 + 0x40) != 0)" ( (binary_expression "*(int *)((long)pvVar11 + 0x40) != 0" (pointer_expression "*(int *)((long)pvVar11 + 0x40)" * (cast_expression "(int *)((long)pvVar11 + 0x40)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)pvVar11 + 0x40)" ( (binary_expression "(long)pvVar11 + 0x40" (cast_expression "(long)pvVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) != number_literal) )) && (parenthesized_expression "(*(short *)((long)pvVar11 + 0x70) != 4)" ( (binary_expression "*(short *)((long)pvVar11 + 0x70) != 4" (pointer_expression "*(short *)((long)pvVar11 + 0x70)" * (cast_expression "(short *)((long)pvVar11 + 0x70)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)pvVar11 + 0x70)" ( (binary_expression "(long)pvVar11 + 0x70" (cast_expression "(long)pvVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) != number_literal) ))) )) (compound_statement "{\n              *(undefined2 *)((long)pvVar11 + 0x70) = 7;\n            }" { (expression_statement "*(undefined2 *)((long)pvVar11 + 0x70) = 7;" (assignment_expression "*(undefined2 *)((long)pvVar11 + 0x70) = 7" (pointer_expression "*(undefined2 *)((long)pvVar11 + 0x70)" * (cast_expression "(undefined2 *)((long)pvVar11 + 0x70)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)pvVar11 + 0x70)" ( (binary_expression "(long)pvVar11 + 0x70" (cast_expression "(long)pvVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = number_literal) ;) })) (expression_statement "FUN_00116412(param_1,pvVar11);" (call_expression "FUN_00116412(param_1,pvVar11)" identifier (argument_list "(param_1,pvVar11)" ( identifier , identifier ))) ;) (return_statement "return pvVar11;" return identifier ;) })) (return_statement "return (void *)0x0;" return (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) }) (else_clause "else {\n        if ((uVar1 & 0x2000) != 0) {\n          *(uint *)(param_1 + 9) = uVar1 & 0xffffdfff;\n          FUN_00115e7a();\n          param_1[1] = 0;\n          goto LAB_00117628;\n        }\n        iVar5 = FUN_00116203(param_1,pvVar11,0xffffffff,*(undefined8 *)((long)pvVar11 + 0x30));\n        if (iVar5 != 0) {\n          piVar7 = __errno_location();\n          *(int *)((long)pvVar11 + 0x40) = *piVar7;\n          *(ushort *)((long)pvVar11 + 0x72) = *(ushort *)((long)pvVar11 + 0x72) | 1;\n          for (lVar8 = param_1[1]; lVar8 != 0; lVar8 = *(long *)(lVar8 + 0x10)) {\n            *(undefined8 *)(lVar8 + 0x30) = *(undefined8 *)(*(long *)(lVar8 + 8) + 0x30);\n          }\n        }\n      }" else (compound_statement "{\n        if ((uVar1 & 0x2000) != 0) {\n          *(uint *)(param_1 + 9) = uVar1 & 0xffffdfff;\n          FUN_00115e7a();\n          param_1[1] = 0;\n          goto LAB_00117628;\n        }\n        iVar5 = FUN_00116203(param_1,pvVar11,0xffffffff,*(undefined8 *)((long)pvVar11 + 0x30));\n        if (iVar5 != 0) {\n          piVar7 = __errno_location();\n          *(int *)((long)pvVar11 + 0x40) = *piVar7;\n          *(ushort *)((long)pvVar11 + 0x72) = *(ushort *)((long)pvVar11 + 0x72) | 1;\n          for (lVar8 = param_1[1]; lVar8 != 0; lVar8 = *(long *)(lVar8 + 0x10)) {\n            *(undefined8 *)(lVar8 + 0x30) = *(undefined8 *)(*(long *)(lVar8 + 8) + 0x30);\n          }\n        }\n      }" { (if_statement "if ((uVar1 & 0x2000) != 0) {\n          *(uint *)(param_1 + 9) = uVar1 & 0xffffdfff;\n          FUN_00115e7a();\n          param_1[1] = 0;\n          goto LAB_00117628;\n        }" if (parenthesized_expression "((uVar1 & 0x2000) != 0)" ( (binary_expression "(uVar1 & 0x2000) != 0" (parenthesized_expression "(uVar1 & 0x2000)" ( (binary_expression "uVar1 & 0x2000" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n          *(uint *)(param_1 + 9) = uVar1 & 0xffffdfff;\n          FUN_00115e7a();\n          param_1[1] = 0;\n          goto LAB_00117628;\n        }" { (expression_statement "*(uint *)(param_1 + 9) = uVar1 & 0xffffdfff;" (assignment_expression "*(uint *)(param_1 + 9) = uVar1 & 0xffffdfff" (pointer_expression "*(uint *)(param_1 + 9)" * (cast_expression "(uint *)(param_1 + 9)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 9)" ( (binary_expression "param_1 + 9" identifier + number_literal) )))) = (binary_expression "uVar1 & 0xffffdfff" identifier & number_literal)) ;) (expression_statement "FUN_00115e7a();" (call_expression "FUN_00115e7a()" identifier (argument_list "()" ( ))) ;) (expression_statement "param_1[1] = 0;" (assignment_expression "param_1[1] = 0" (subscript_expression "param_1[1]" identifier [ number_literal ]) = number_literal) ;) (goto_statement "goto LAB_00117628;" goto statement_identifier ;) })) (expression_statement "iVar5 = FUN_00116203(param_1,pvVar11,0xffffffff,*(undefined8 *)((long)pvVar11 + 0x30));" (assignment_expression "iVar5 = FUN_00116203(param_1,pvVar11,0xffffffff,*(undefined8 *)((long)pvVar11 + 0x30))" identifier = (call_expression "FUN_00116203(param_1,pvVar11,0xffffffff,*(undefined8 *)((long)pvVar11 + 0x30))" identifier (argument_list "(param_1,pvVar11,0xffffffff,*(undefined8 *)((long)pvVar11 + 0x30))" ( identifier , identifier , number_literal , (pointer_expression "*(undefined8 *)((long)pvVar11 + 0x30)" * (cast_expression "(undefined8 *)((long)pvVar11 + 0x30)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)pvVar11 + 0x30)" ( (binary_expression "(long)pvVar11 + 0x30" (cast_expression "(long)pvVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) )))) ;) (if_statement "if (iVar5 != 0) {\n          piVar7 = __errno_location();\n          *(int *)((long)pvVar11 + 0x40) = *piVar7;\n          *(ushort *)((long)pvVar11 + 0x72) = *(ushort *)((long)pvVar11 + 0x72) | 1;\n          for (lVar8 = param_1[1]; lVar8 != 0; lVar8 = *(long *)(lVar8 + 0x10)) {\n            *(undefined8 *)(lVar8 + 0x30) = *(undefined8 *)(*(long *)(lVar8 + 8) + 0x30);\n          }\n        }" if (parenthesized_expression "(iVar5 != 0)" ( (binary_expression "iVar5 != 0" identifier != number_literal) )) (compound_statement "{\n          piVar7 = __errno_location();\n          *(int *)((long)pvVar11 + 0x40) = *piVar7;\n          *(ushort *)((long)pvVar11 + 0x72) = *(ushort *)((long)pvVar11 + 0x72) | 1;\n          for (lVar8 = param_1[1]; lVar8 != 0; lVar8 = *(long *)(lVar8 + 0x10)) {\n            *(undefined8 *)(lVar8 + 0x30) = *(undefined8 *)(*(long *)(lVar8 + 8) + 0x30);\n          }\n        }" { (expression_statement "piVar7 = __errno_location();" (assignment_expression "piVar7 = __errno_location()" identifier = (call_expression "__errno_location()" identifier (argument_list "()" ( )))) ;) (expression_statement "*(int *)((long)pvVar11 + 0x40) = *piVar7;" (assignment_expression "*(int *)((long)pvVar11 + 0x40) = *piVar7" (pointer_expression "*(int *)((long)pvVar11 + 0x40)" * (cast_expression "(int *)((long)pvVar11 + 0x40)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)pvVar11 + 0x40)" ( (binary_expression "(long)pvVar11 + 0x40" (cast_expression "(long)pvVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = (pointer_expression "*piVar7" * identifier)) ;) (expression_statement "*(ushort *)((long)pvVar11 + 0x72) = *(ushort *)((long)pvVar11 + 0x72) | 1;" (assignment_expression "*(ushort *)((long)pvVar11 + 0x72) = *(ushort *)((long)pvVar11 + 0x72) | 1" (pointer_expression "*(ushort *)((long)pvVar11 + 0x72)" * (cast_expression "(ushort *)((long)pvVar11 + 0x72)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)pvVar11 + 0x72)" ( (binary_expression "(long)pvVar11 + 0x72" (cast_expression "(long)pvVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = (binary_expression "*(ushort *)((long)pvVar11 + 0x72) | 1" (pointer_expression "*(ushort *)((long)pvVar11 + 0x72)" * (cast_expression "(ushort *)((long)pvVar11 + 0x72)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)pvVar11 + 0x72)" ( (binary_expression "(long)pvVar11 + 0x72" (cast_expression "(long)pvVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) | number_literal)) ;) (for_statement "for (lVar8 = param_1[1]; lVar8 != 0; lVar8 = *(long *)(lVar8 + 0x10)) {\n            *(undefined8 *)(lVar8 + 0x30) = *(undefined8 *)(*(long *)(lVar8 + 8) + 0x30);\n          }" for ( (assignment_expression "lVar8 = param_1[1]" identifier = (subscript_expression "param_1[1]" identifier [ number_literal ])) ; (binary_expression "lVar8 != 0" identifier != number_literal) ; (assignment_expression "lVar8 = *(long *)(lVar8 + 0x10)" identifier = (pointer_expression "*(long *)(lVar8 + 0x10)" * (cast_expression "(long *)(lVar8 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar8 + 0x10)" ( (binary_expression "lVar8 + 0x10" identifier + number_literal) ))))) ) (compound_statement "{\n            *(undefined8 *)(lVar8 + 0x30) = *(undefined8 *)(*(long *)(lVar8 + 8) + 0x30);\n          }" { (expression_statement "*(undefined8 *)(lVar8 + 0x30) = *(undefined8 *)(*(long *)(lVar8 + 8) + 0x30);" (assignment_expression "*(undefined8 *)(lVar8 + 0x30) = *(undefined8 *)(*(long *)(lVar8 + 8) + 0x30)" (pointer_expression "*(undefined8 *)(lVar8 + 0x30)" * (cast_expression "(undefined8 *)(lVar8 + 0x30)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar8 + 0x30)" ( (binary_expression "lVar8 + 0x30" identifier + number_literal) )))) = (pointer_expression "*(undefined8 *)(*(long *)(lVar8 + 8) + 0x30)" * (cast_expression "(undefined8 *)(*(long *)(lVar8 + 8) + 0x30)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(lVar8 + 8) + 0x30)" ( (binary_expression "*(long *)(lVar8 + 8) + 0x30" (pointer_expression "*(long *)(lVar8 + 8)" * (cast_expression "(long *)(lVar8 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar8 + 8)" ( (binary_expression "lVar8 + 8" identifier + number_literal) )))) + number_literal) ))))) ;) })) })) }))) (expression_statement "pvVar11 = (void *)param_1[1];" (assignment_expression "pvVar11 = (void *)param_1[1]" identifier = (cast_expression "(void *)param_1[1]" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[1]" identifier [ number_literal ]))) ;) (expression_statement "param_1[1] = 0;" (assignment_expression "param_1[1] = 0" (subscript_expression "param_1[1]" identifier [ number_literal ]) = number_literal) ;) }) (else_clause "else {\nLAB_00117717:\n      do {\n        pvVar11 = *(void **)((long)pvVar12 + 0x10);\n        if (pvVar11 == (void *)0x0) {\n          lVar8 = *(long *)((long)pvVar12 + 8);\n          if (*(long *)(lVar8 + 0x18) != 0) {\n            *param_1 = lVar8;\n            *(undefined1 *)(param_1[4] + *(long *)(lVar8 + 0x48)) = 0;\n            pvVar11 = (void *)FUN_001164c9(param_1,3);\n            if (pvVar11 != (void *)0x0) {\n              free(pvVar12);\n              goto LAB_00117587;\n            }\n            if ((*(byte *)((long)param_1 + 0x49) & 0x40) != 0) {\n              return (void *)0x0;\n            }\n          }\n          pvVar11 = *(void **)((long)pvVar12 + 8);\n          *param_1 = (long)pvVar11;\n          free(pvVar12);\n          if (*(long *)((long)pvVar11 + 0x58) == -1) {\n            free(pvVar11);\n            piVar7 = __errno_location();\n            *piVar7 = 0;\n            *param_1 = 0;\n            return (void *)0x0;\n          }\n          if (*(short *)((long)pvVar11 + 0x70) == 0xb) {\n                    \n            abort();\n          }\n          *(undefined1 *)(param_1[4] + *(long *)((long)pvVar11 + 0x48)) = 0;\n          if (*(long *)((long)pvVar11 + 0x58) == 0) {\n            iVar5 = FUN_001161af(param_1);\n            if (iVar5 == 0) goto LAB_001177a7;\n            piVar7 = __errno_location();\n            *(int *)((long)pvVar11 + 0x40) = *piVar7;\n            *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\nLAB_001179e4:\n            if (*(short *)((long)pvVar11 + 0x70) == 2) {\n              return (void *)0x0;\n            }\n          }\n          else {\n            if ((*(ushort *)((long)pvVar11 + 0x72) & 2) == 0) {\n              if (((*(ushort *)((long)pvVar11 + 0x72) & 1) == 0) &&\n                 (iVar5 = FUN_00116203(param_1,*(undefined8 *)((long)pvVar11 + 8),0xffffffff,\n                                       &DAT_0011ff41), iVar5 != 0)) {\n                piVar7 = __errno_location();\n                *(int *)((long)pvVar11 + 0x40) = *piVar7;\n                *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\n                goto LAB_001179e4;\n              }\n            }\n            else {\n              if ((*(uint *)(param_1 + 9) & 4) == 0) {\n                if ((*(uint *)(param_1 + 9) & 0x200) == 0) {\n                  iVar5 = fchdir(*(int *)((long)pvVar11 + 0x44));\n                  if (iVar5 != 0) {\n                    piVar7 = __errno_location();\n                    *(int *)((long)pvVar11 + 0x40) = *piVar7;\n                    *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\n                  }\n                }\n                else {\n                  FUN_0011615c(param_1,*(undefined4 *)((long)pvVar11 + 0x44),1);\n                }\n              }\n              close(*(int *)((long)pvVar11 + 0x44));\n            }\nLAB_001177a7:\n            if (*(short *)((long)pvVar11 + 0x70) == 2) goto LAB_00117a88;\n          }\n          if (*(int *)((long)pvVar11 + 0x40) == 0) {\n            *(undefined2 *)((long)pvVar11 + 0x70) = 6;\n            FUN_00116412(param_1,pvVar11);\n          }\n          else {\n            *(undefined2 *)((long)pvVar11 + 0x70) = 7;\n          }\nLAB_00117a88:\n          if ((*(uint *)(param_1 + 9) & 0x4000) != 0) {\n            return (void *)0x0;\n          }\n          return pvVar11;\n        }\n        *param_1 = (long)pvVar11;\n        free(pvVar12);\n        if (*(long *)((long)pvVar11 + 0x58) == 0) {\n          iVar5 = FUN_001161af(param_1);\n          if (iVar5 != 0) {\n            *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\n            return (void *)0x0;\n          }\n          FUN_00115eb3(param_1);\n          *(long *)((long)pvVar11 + 0x48) = *(long *)((long)pvVar11 + 0x60);\n          __s = (char *)((long)pvVar11 + 0x108);\n          memmove((void *)param_1[4],__s,*(long *)((long)pvVar11 + 0x60) + 1);\n          pcVar9 = strrchr(__s,0x2f);\n          if ((pcVar9 == (char *)0x0) || ((__s == pcVar9 && (pcVar9[1] == '\0'))))\n          goto LAB_0011784f;\n          uVar10 = 0xffffffffffffffff;\n          pcVar13 = pcVar9 + 1;\n          goto code_r0x00117837;\n        }\n        pvVar12 = pvVar11;\n      } while (*(short *)((long)pvVar11 + 0x74) == 4);\n      if (*(short *)((long)pvVar11 + 0x74) == 2) {\n        sVar4 = FUN_00115abc(param_1,pvVar11,1);\n        *(short *)((long)pvVar11 + 0x70) = sVar4;\n        if ((sVar4 == 1) && ((*(byte *)(param_1 + 9) & 4) == 0)) {\n          iVar5 = FUN_00115e27(param_1,&DAT_0011ff42);\n          *(int *)((long)pvVar11 + 0x44) = iVar5;\n          if (iVar5 < 0) {\n            piVar7 = __errno_location();\n            *(int *)((long)pvVar11 + 0x40) = *piVar7;\n            *(undefined2 *)((long)pvVar11 + 0x70) = 7;\n          }\n          else {\n            *(ushort *)((long)pvVar11 + 0x72) = *(ushort *)((long)pvVar11 + 0x72) | 2;\n          }\n        }\n        *(undefined2 *)((long)pvVar11 + 0x74) = 3;\n      }\n    }" else (compound_statement "{\nLAB_00117717:\n      do {\n        pvVar11 = *(void **)((long)pvVar12 + 0x10);\n        if (pvVar11 == (void *)0x0) {\n          lVar8 = *(long *)((long)pvVar12 + 8);\n          if (*(long *)(lVar8 + 0x18) != 0) {\n            *param_1 = lVar8;\n            *(undefined1 *)(param_1[4] + *(long *)(lVar8 + 0x48)) = 0;\n            pvVar11 = (void *)FUN_001164c9(param_1,3);\n            if (pvVar11 != (void *)0x0) {\n              free(pvVar12);\n              goto LAB_00117587;\n            }\n            if ((*(byte *)((long)param_1 + 0x49) & 0x40) != 0) {\n              return (void *)0x0;\n            }\n          }\n          pvVar11 = *(void **)((long)pvVar12 + 8);\n          *param_1 = (long)pvVar11;\n          free(pvVar12);\n          if (*(long *)((long)pvVar11 + 0x58) == -1) {\n            free(pvVar11);\n            piVar7 = __errno_location();\n            *piVar7 = 0;\n            *param_1 = 0;\n            return (void *)0x0;\n          }\n          if (*(short *)((long)pvVar11 + 0x70) == 0xb) {\n                    \n            abort();\n          }\n          *(undefined1 *)(param_1[4] + *(long *)((long)pvVar11 + 0x48)) = 0;\n          if (*(long *)((long)pvVar11 + 0x58) == 0) {\n            iVar5 = FUN_001161af(param_1);\n            if (iVar5 == 0) goto LAB_001177a7;\n            piVar7 = __errno_location();\n            *(int *)((long)pvVar11 + 0x40) = *piVar7;\n            *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\nLAB_001179e4:\n            if (*(short *)((long)pvVar11 + 0x70) == 2) {\n              return (void *)0x0;\n            }\n          }\n          else {\n            if ((*(ushort *)((long)pvVar11 + 0x72) & 2) == 0) {\n              if (((*(ushort *)((long)pvVar11 + 0x72) & 1) == 0) &&\n                 (iVar5 = FUN_00116203(param_1,*(undefined8 *)((long)pvVar11 + 8),0xffffffff,\n                                       &DAT_0011ff41), iVar5 != 0)) {\n                piVar7 = __errno_location();\n                *(int *)((long)pvVar11 + 0x40) = *piVar7;\n                *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\n                goto LAB_001179e4;\n              }\n            }\n            else {\n              if ((*(uint *)(param_1 + 9) & 4) == 0) {\n                if ((*(uint *)(param_1 + 9) & 0x200) == 0) {\n                  iVar5 = fchdir(*(int *)((long)pvVar11 + 0x44));\n                  if (iVar5 != 0) {\n                    piVar7 = __errno_location();\n                    *(int *)((long)pvVar11 + 0x40) = *piVar7;\n                    *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\n                  }\n                }\n                else {\n                  FUN_0011615c(param_1,*(undefined4 *)((long)pvVar11 + 0x44),1);\n                }\n              }\n              close(*(int *)((long)pvVar11 + 0x44));\n            }\nLAB_001177a7:\n            if (*(short *)((long)pvVar11 + 0x70) == 2) goto LAB_00117a88;\n          }\n          if (*(int *)((long)pvVar11 + 0x40) == 0) {\n            *(undefined2 *)((long)pvVar11 + 0x70) = 6;\n            FUN_00116412(param_1,pvVar11);\n          }\n          else {\n            *(undefined2 *)((long)pvVar11 + 0x70) = 7;\n          }\nLAB_00117a88:\n          if ((*(uint *)(param_1 + 9) & 0x4000) != 0) {\n            return (void *)0x0;\n          }\n          return pvVar11;\n        }\n        *param_1 = (long)pvVar11;\n        free(pvVar12);\n        if (*(long *)((long)pvVar11 + 0x58) == 0) {\n          iVar5 = FUN_001161af(param_1);\n          if (iVar5 != 0) {\n            *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\n            return (void *)0x0;\n          }\n          FUN_00115eb3(param_1);\n          *(long *)((long)pvVar11 + 0x48) = *(long *)((long)pvVar11 + 0x60);\n          __s = (char *)((long)pvVar11 + 0x108);\n          memmove((void *)param_1[4],__s,*(long *)((long)pvVar11 + 0x60) + 1);\n          pcVar9 = strrchr(__s,0x2f);\n          if ((pcVar9 == (char *)0x0) || ((__s == pcVar9 && (pcVar9[1] == '\0'))))\n          goto LAB_0011784f;\n          uVar10 = 0xffffffffffffffff;\n          pcVar13 = pcVar9 + 1;\n          goto code_r0x00117837;\n        }\n        pvVar12 = pvVar11;\n      } while (*(short *)((long)pvVar11 + 0x74) == 4);\n      if (*(short *)((long)pvVar11 + 0x74) == 2) {\n        sVar4 = FUN_00115abc(param_1,pvVar11,1);\n        *(short *)((long)pvVar11 + 0x70) = sVar4;\n        if ((sVar4 == 1) && ((*(byte *)(param_1 + 9) & 4) == 0)) {\n          iVar5 = FUN_00115e27(param_1,&DAT_0011ff42);\n          *(int *)((long)pvVar11 + 0x44) = iVar5;\n          if (iVar5 < 0) {\n            piVar7 = __errno_location();\n            *(int *)((long)pvVar11 + 0x40) = *piVar7;\n            *(undefined2 *)((long)pvVar11 + 0x70) = 7;\n          }\n          else {\n            *(ushort *)((long)pvVar11 + 0x72) = *(ushort *)((long)pvVar11 + 0x72) | 2;\n          }\n        }\n        *(undefined2 *)((long)pvVar11 + 0x74) = 3;\n      }\n    }" { (labeled_statement "LAB_00117717:\n      do {\n        pvVar11 = *(void **)((long)pvVar12 + 0x10);\n        if (pvVar11 == (void *)0x0) {\n          lVar8 = *(long *)((long)pvVar12 + 8);\n          if (*(long *)(lVar8 + 0x18) != 0) {\n            *param_1 = lVar8;\n            *(undefined1 *)(param_1[4] + *(long *)(lVar8 + 0x48)) = 0;\n            pvVar11 = (void *)FUN_001164c9(param_1,3);\n            if (pvVar11 != (void *)0x0) {\n              free(pvVar12);\n              goto LAB_00117587;\n            }\n            if ((*(byte *)((long)param_1 + 0x49) & 0x40) != 0) {\n              return (void *)0x0;\n            }\n          }\n          pvVar11 = *(void **)((long)pvVar12 + 8);\n          *param_1 = (long)pvVar11;\n          free(pvVar12);\n          if (*(long *)((long)pvVar11 + 0x58) == -1) {\n            free(pvVar11);\n            piVar7 = __errno_location();\n            *piVar7 = 0;\n            *param_1 = 0;\n            return (void *)0x0;\n          }\n          if (*(short *)((long)pvVar11 + 0x70) == 0xb) {\n                    \n            abort();\n          }\n          *(undefined1 *)(param_1[4] + *(long *)((long)pvVar11 + 0x48)) = 0;\n          if (*(long *)((long)pvVar11 + 0x58) == 0) {\n            iVar5 = FUN_001161af(param_1);\n            if (iVar5 == 0) goto LAB_001177a7;\n            piVar7 = __errno_location();\n            *(int *)((long)pvVar11 + 0x40) = *piVar7;\n            *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\nLAB_001179e4:\n            if (*(short *)((long)pvVar11 + 0x70) == 2) {\n              return (void *)0x0;\n            }\n          }\n          else {\n            if ((*(ushort *)((long)pvVar11 + 0x72) & 2) == 0) {\n              if (((*(ushort *)((long)pvVar11 + 0x72) & 1) == 0) &&\n                 (iVar5 = FUN_00116203(param_1,*(undefined8 *)((long)pvVar11 + 8),0xffffffff,\n                                       &DAT_0011ff41), iVar5 != 0)) {\n                piVar7 = __errno_location();\n                *(int *)((long)pvVar11 + 0x40) = *piVar7;\n                *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\n                goto LAB_001179e4;\n              }\n            }\n            else {\n              if ((*(uint *)(param_1 + 9) & 4) == 0) {\n                if ((*(uint *)(param_1 + 9) & 0x200) == 0) {\n                  iVar5 = fchdir(*(int *)((long)pvVar11 + 0x44));\n                  if (iVar5 != 0) {\n                    piVar7 = __errno_location();\n                    *(int *)((long)pvVar11 + 0x40) = *piVar7;\n                    *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\n                  }\n                }\n                else {\n                  FUN_0011615c(param_1,*(undefined4 *)((long)pvVar11 + 0x44),1);\n                }\n              }\n              close(*(int *)((long)pvVar11 + 0x44));\n            }\nLAB_001177a7:\n            if (*(short *)((long)pvVar11 + 0x70) == 2) goto LAB_00117a88;\n          }\n          if (*(int *)((long)pvVar11 + 0x40) == 0) {\n            *(undefined2 *)((long)pvVar11 + 0x70) = 6;\n            FUN_00116412(param_1,pvVar11);\n          }\n          else {\n            *(undefined2 *)((long)pvVar11 + 0x70) = 7;\n          }\nLAB_00117a88:\n          if ((*(uint *)(param_1 + 9) & 0x4000) != 0) {\n            return (void *)0x0;\n          }\n          return pvVar11;\n        }\n        *param_1 = (long)pvVar11;\n        free(pvVar12);\n        if (*(long *)((long)pvVar11 + 0x58) == 0) {\n          iVar5 = FUN_001161af(param_1);\n          if (iVar5 != 0) {\n            *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\n            return (void *)0x0;\n          }\n          FUN_00115eb3(param_1);\n          *(long *)((long)pvVar11 + 0x48) = *(long *)((long)pvVar11 + 0x60);\n          __s = (char *)((long)pvVar11 + 0x108);\n          memmove((void *)param_1[4],__s,*(long *)((long)pvVar11 + 0x60) + 1);\n          pcVar9 = strrchr(__s,0x2f);\n          if ((pcVar9 == (char *)0x0) || ((__s == pcVar9 && (pcVar9[1] == '\0'))))\n          goto LAB_0011784f;\n          uVar10 = 0xffffffffffffffff;\n          pcVar13 = pcVar9 + 1;\n          goto code_r0x00117837;\n        }\n        pvVar12 = pvVar11;\n      } while (*(short *)((long)pvVar11 + 0x74) == 4);" statement_identifier : (do_statement "do {\n        pvVar11 = *(void **)((long)pvVar12 + 0x10);\n        if (pvVar11 == (void *)0x0) {\n          lVar8 = *(long *)((long)pvVar12 + 8);\n          if (*(long *)(lVar8 + 0x18) != 0) {\n            *param_1 = lVar8;\n            *(undefined1 *)(param_1[4] + *(long *)(lVar8 + 0x48)) = 0;\n            pvVar11 = (void *)FUN_001164c9(param_1,3);\n            if (pvVar11 != (void *)0x0) {\n              free(pvVar12);\n              goto LAB_00117587;\n            }\n            if ((*(byte *)((long)param_1 + 0x49) & 0x40) != 0) {\n              return (void *)0x0;\n            }\n          }\n          pvVar11 = *(void **)((long)pvVar12 + 8);\n          *param_1 = (long)pvVar11;\n          free(pvVar12);\n          if (*(long *)((long)pvVar11 + 0x58) == -1) {\n            free(pvVar11);\n            piVar7 = __errno_location();\n            *piVar7 = 0;\n            *param_1 = 0;\n            return (void *)0x0;\n          }\n          if (*(short *)((long)pvVar11 + 0x70) == 0xb) {\n                    \n            abort();\n          }\n          *(undefined1 *)(param_1[4] + *(long *)((long)pvVar11 + 0x48)) = 0;\n          if (*(long *)((long)pvVar11 + 0x58) == 0) {\n            iVar5 = FUN_001161af(param_1);\n            if (iVar5 == 0) goto LAB_001177a7;\n            piVar7 = __errno_location();\n            *(int *)((long)pvVar11 + 0x40) = *piVar7;\n            *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\nLAB_001179e4:\n            if (*(short *)((long)pvVar11 + 0x70) == 2) {\n              return (void *)0x0;\n            }\n          }\n          else {\n            if ((*(ushort *)((long)pvVar11 + 0x72) & 2) == 0) {\n              if (((*(ushort *)((long)pvVar11 + 0x72) & 1) == 0) &&\n                 (iVar5 = FUN_00116203(param_1,*(undefined8 *)((long)pvVar11 + 8),0xffffffff,\n                                       &DAT_0011ff41), iVar5 != 0)) {\n                piVar7 = __errno_location();\n                *(int *)((long)pvVar11 + 0x40) = *piVar7;\n                *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\n                goto LAB_001179e4;\n              }\n            }\n            else {\n              if ((*(uint *)(param_1 + 9) & 4) == 0) {\n                if ((*(uint *)(param_1 + 9) & 0x200) == 0) {\n                  iVar5 = fchdir(*(int *)((long)pvVar11 + 0x44));\n                  if (iVar5 != 0) {\n                    piVar7 = __errno_location();\n                    *(int *)((long)pvVar11 + 0x40) = *piVar7;\n                    *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\n                  }\n                }\n                else {\n                  FUN_0011615c(param_1,*(undefined4 *)((long)pvVar11 + 0x44),1);\n                }\n              }\n              close(*(int *)((long)pvVar11 + 0x44));\n            }\nLAB_001177a7:\n            if (*(short *)((long)pvVar11 + 0x70) == 2) goto LAB_00117a88;\n          }\n          if (*(int *)((long)pvVar11 + 0x40) == 0) {\n            *(undefined2 *)((long)pvVar11 + 0x70) = 6;\n            FUN_00116412(param_1,pvVar11);\n          }\n          else {\n            *(undefined2 *)((long)pvVar11 + 0x70) = 7;\n          }\nLAB_00117a88:\n          if ((*(uint *)(param_1 + 9) & 0x4000) != 0) {\n            return (void *)0x0;\n          }\n          return pvVar11;\n        }\n        *param_1 = (long)pvVar11;\n        free(pvVar12);\n        if (*(long *)((long)pvVar11 + 0x58) == 0) {\n          iVar5 = FUN_001161af(param_1);\n          if (iVar5 != 0) {\n            *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\n            return (void *)0x0;\n          }\n          FUN_00115eb3(param_1);\n          *(long *)((long)pvVar11 + 0x48) = *(long *)((long)pvVar11 + 0x60);\n          __s = (char *)((long)pvVar11 + 0x108);\n          memmove((void *)param_1[4],__s,*(long *)((long)pvVar11 + 0x60) + 1);\n          pcVar9 = strrchr(__s,0x2f);\n          if ((pcVar9 == (char *)0x0) || ((__s == pcVar9 && (pcVar9[1] == '\0'))))\n          goto LAB_0011784f;\n          uVar10 = 0xffffffffffffffff;\n          pcVar13 = pcVar9 + 1;\n          goto code_r0x00117837;\n        }\n        pvVar12 = pvVar11;\n      } while (*(short *)((long)pvVar11 + 0x74) == 4);" do (compound_statement "{\n        pvVar11 = *(void **)((long)pvVar12 + 0x10);\n        if (pvVar11 == (void *)0x0) {\n          lVar8 = *(long *)((long)pvVar12 + 8);\n          if (*(long *)(lVar8 + 0x18) != 0) {\n            *param_1 = lVar8;\n            *(undefined1 *)(param_1[4] + *(long *)(lVar8 + 0x48)) = 0;\n            pvVar11 = (void *)FUN_001164c9(param_1,3);\n            if (pvVar11 != (void *)0x0) {\n              free(pvVar12);\n              goto LAB_00117587;\n            }\n            if ((*(byte *)((long)param_1 + 0x49) & 0x40) != 0) {\n              return (void *)0x0;\n            }\n          }\n          pvVar11 = *(void **)((long)pvVar12 + 8);\n          *param_1 = (long)pvVar11;\n          free(pvVar12);\n          if (*(long *)((long)pvVar11 + 0x58) == -1) {\n            free(pvVar11);\n            piVar7 = __errno_location();\n            *piVar7 = 0;\n            *param_1 = 0;\n            return (void *)0x0;\n          }\n          if (*(short *)((long)pvVar11 + 0x70) == 0xb) {\n                    \n            abort();\n          }\n          *(undefined1 *)(param_1[4] + *(long *)((long)pvVar11 + 0x48)) = 0;\n          if (*(long *)((long)pvVar11 + 0x58) == 0) {\n            iVar5 = FUN_001161af(param_1);\n            if (iVar5 == 0) goto LAB_001177a7;\n            piVar7 = __errno_location();\n            *(int *)((long)pvVar11 + 0x40) = *piVar7;\n            *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\nLAB_001179e4:\n            if (*(short *)((long)pvVar11 + 0x70) == 2) {\n              return (void *)0x0;\n            }\n          }\n          else {\n            if ((*(ushort *)((long)pvVar11 + 0x72) & 2) == 0) {\n              if (((*(ushort *)((long)pvVar11 + 0x72) & 1) == 0) &&\n                 (iVar5 = FUN_00116203(param_1,*(undefined8 *)((long)pvVar11 + 8),0xffffffff,\n                                       &DAT_0011ff41), iVar5 != 0)) {\n                piVar7 = __errno_location();\n                *(int *)((long)pvVar11 + 0x40) = *piVar7;\n                *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\n                goto LAB_001179e4;\n              }\n            }\n            else {\n              if ((*(uint *)(param_1 + 9) & 4) == 0) {\n                if ((*(uint *)(param_1 + 9) & 0x200) == 0) {\n                  iVar5 = fchdir(*(int *)((long)pvVar11 + 0x44));\n                  if (iVar5 != 0) {\n                    piVar7 = __errno_location();\n                    *(int *)((long)pvVar11 + 0x40) = *piVar7;\n                    *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\n                  }\n                }\n                else {\n                  FUN_0011615c(param_1,*(undefined4 *)((long)pvVar11 + 0x44),1);\n                }\n              }\n              close(*(int *)((long)pvVar11 + 0x44));\n            }\nLAB_001177a7:\n            if (*(short *)((long)pvVar11 + 0x70) == 2) goto LAB_00117a88;\n          }\n          if (*(int *)((long)pvVar11 + 0x40) == 0) {\n            *(undefined2 *)((long)pvVar11 + 0x70) = 6;\n            FUN_00116412(param_1,pvVar11);\n          }\n          else {\n            *(undefined2 *)((long)pvVar11 + 0x70) = 7;\n          }\nLAB_00117a88:\n          if ((*(uint *)(param_1 + 9) & 0x4000) != 0) {\n            return (void *)0x0;\n          }\n          return pvVar11;\n        }\n        *param_1 = (long)pvVar11;\n        free(pvVar12);\n        if (*(long *)((long)pvVar11 + 0x58) == 0) {\n          iVar5 = FUN_001161af(param_1);\n          if (iVar5 != 0) {\n            *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\n            return (void *)0x0;\n          }\n          FUN_00115eb3(param_1);\n          *(long *)((long)pvVar11 + 0x48) = *(long *)((long)pvVar11 + 0x60);\n          __s = (char *)((long)pvVar11 + 0x108);\n          memmove((void *)param_1[4],__s,*(long *)((long)pvVar11 + 0x60) + 1);\n          pcVar9 = strrchr(__s,0x2f);\n          if ((pcVar9 == (char *)0x0) || ((__s == pcVar9 && (pcVar9[1] == '\0'))))\n          goto LAB_0011784f;\n          uVar10 = 0xffffffffffffffff;\n          pcVar13 = pcVar9 + 1;\n          goto code_r0x00117837;\n        }\n        pvVar12 = pvVar11;\n      }" { (expression_statement "pvVar11 = *(void **)((long)pvVar12 + 0x10);" (assignment_expression "pvVar11 = *(void **)((long)pvVar12 + 0x10)" identifier = (pointer_expression "*(void **)((long)pvVar12 + 0x10)" * (cast_expression "(void **)((long)pvVar12 + 0x10)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((long)pvVar12 + 0x10)" ( (binary_expression "(long)pvVar12 + 0x10" (cast_expression "(long)pvVar12" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ))))) ;) (if_statement "if (pvVar11 == (void *)0x0) {\n          lVar8 = *(long *)((long)pvVar12 + 8);\n          if (*(long *)(lVar8 + 0x18) != 0) {\n            *param_1 = lVar8;\n            *(undefined1 *)(param_1[4] + *(long *)(lVar8 + 0x48)) = 0;\n            pvVar11 = (void *)FUN_001164c9(param_1,3);\n            if (pvVar11 != (void *)0x0) {\n              free(pvVar12);\n              goto LAB_00117587;\n            }\n            if ((*(byte *)((long)param_1 + 0x49) & 0x40) != 0) {\n              return (void *)0x0;\n            }\n          }\n          pvVar11 = *(void **)((long)pvVar12 + 8);\n          *param_1 = (long)pvVar11;\n          free(pvVar12);\n          if (*(long *)((long)pvVar11 + 0x58) == -1) {\n            free(pvVar11);\n            piVar7 = __errno_location();\n            *piVar7 = 0;\n            *param_1 = 0;\n            return (void *)0x0;\n          }\n          if (*(short *)((long)pvVar11 + 0x70) == 0xb) {\n                    \n            abort();\n          }\n          *(undefined1 *)(param_1[4] + *(long *)((long)pvVar11 + 0x48)) = 0;\n          if (*(long *)((long)pvVar11 + 0x58) == 0) {\n            iVar5 = FUN_001161af(param_1);\n            if (iVar5 == 0) goto LAB_001177a7;\n            piVar7 = __errno_location();\n            *(int *)((long)pvVar11 + 0x40) = *piVar7;\n            *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\nLAB_001179e4:\n            if (*(short *)((long)pvVar11 + 0x70) == 2) {\n              return (void *)0x0;\n            }\n          }\n          else {\n            if ((*(ushort *)((long)pvVar11 + 0x72) & 2) == 0) {\n              if (((*(ushort *)((long)pvVar11 + 0x72) & 1) == 0) &&\n                 (iVar5 = FUN_00116203(param_1,*(undefined8 *)((long)pvVar11 + 8),0xffffffff,\n                                       &DAT_0011ff41), iVar5 != 0)) {\n                piVar7 = __errno_location();\n                *(int *)((long)pvVar11 + 0x40) = *piVar7;\n                *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\n                goto LAB_001179e4;\n              }\n            }\n            else {\n              if ((*(uint *)(param_1 + 9) & 4) == 0) {\n                if ((*(uint *)(param_1 + 9) & 0x200) == 0) {\n                  iVar5 = fchdir(*(int *)((long)pvVar11 + 0x44));\n                  if (iVar5 != 0) {\n                    piVar7 = __errno_location();\n                    *(int *)((long)pvVar11 + 0x40) = *piVar7;\n                    *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\n                  }\n                }\n                else {\n                  FUN_0011615c(param_1,*(undefined4 *)((long)pvVar11 + 0x44),1);\n                }\n              }\n              close(*(int *)((long)pvVar11 + 0x44));\n            }\nLAB_001177a7:\n            if (*(short *)((long)pvVar11 + 0x70) == 2) goto LAB_00117a88;\n          }\n          if (*(int *)((long)pvVar11 + 0x40) == 0) {\n            *(undefined2 *)((long)pvVar11 + 0x70) = 6;\n            FUN_00116412(param_1,pvVar11);\n          }\n          else {\n            *(undefined2 *)((long)pvVar11 + 0x70) = 7;\n          }\nLAB_00117a88:\n          if ((*(uint *)(param_1 + 9) & 0x4000) != 0) {\n            return (void *)0x0;\n          }\n          return pvVar11;\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          lVar8 = *(long *)((long)pvVar12 + 8);\n          if (*(long *)(lVar8 + 0x18) != 0) {\n            *param_1 = lVar8;\n            *(undefined1 *)(param_1[4] + *(long *)(lVar8 + 0x48)) = 0;\n            pvVar11 = (void *)FUN_001164c9(param_1,3);\n            if (pvVar11 != (void *)0x0) {\n              free(pvVar12);\n              goto LAB_00117587;\n            }\n            if ((*(byte *)((long)param_1 + 0x49) & 0x40) != 0) {\n              return (void *)0x0;\n            }\n          }\n          pvVar11 = *(void **)((long)pvVar12 + 8);\n          *param_1 = (long)pvVar11;\n          free(pvVar12);\n          if (*(long *)((long)pvVar11 + 0x58) == -1) {\n            free(pvVar11);\n            piVar7 = __errno_location();\n            *piVar7 = 0;\n            *param_1 = 0;\n            return (void *)0x0;\n          }\n          if (*(short *)((long)pvVar11 + 0x70) == 0xb) {\n                    \n            abort();\n          }\n          *(undefined1 *)(param_1[4] + *(long *)((long)pvVar11 + 0x48)) = 0;\n          if (*(long *)((long)pvVar11 + 0x58) == 0) {\n            iVar5 = FUN_001161af(param_1);\n            if (iVar5 == 0) goto LAB_001177a7;\n            piVar7 = __errno_location();\n            *(int *)((long)pvVar11 + 0x40) = *piVar7;\n            *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\nLAB_001179e4:\n            if (*(short *)((long)pvVar11 + 0x70) == 2) {\n              return (void *)0x0;\n            }\n          }\n          else {\n            if ((*(ushort *)((long)pvVar11 + 0x72) & 2) == 0) {\n              if (((*(ushort *)((long)pvVar11 + 0x72) & 1) == 0) &&\n                 (iVar5 = FUN_00116203(param_1,*(undefined8 *)((long)pvVar11 + 8),0xffffffff,\n                                       &DAT_0011ff41), iVar5 != 0)) {\n                piVar7 = __errno_location();\n                *(int *)((long)pvVar11 + 0x40) = *piVar7;\n                *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\n                goto LAB_001179e4;\n              }\n            }\n            else {\n              if ((*(uint *)(param_1 + 9) & 4) == 0) {\n                if ((*(uint *)(param_1 + 9) & 0x200) == 0) {\n                  iVar5 = fchdir(*(int *)((long)pvVar11 + 0x44));\n                  if (iVar5 != 0) {\n                    piVar7 = __errno_location();\n                    *(int *)((long)pvVar11 + 0x40) = *piVar7;\n                    *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\n                  }\n                }\n                else {\n                  FUN_0011615c(param_1,*(undefined4 *)((long)pvVar11 + 0x44),1);\n                }\n              }\n              close(*(int *)((long)pvVar11 + 0x44));\n            }\nLAB_001177a7:\n            if (*(short *)((long)pvVar11 + 0x70) == 2) goto LAB_00117a88;\n          }\n          if (*(int *)((long)pvVar11 + 0x40) == 0) {\n            *(undefined2 *)((long)pvVar11 + 0x70) = 6;\n            FUN_00116412(param_1,pvVar11);\n          }\n          else {\n            *(undefined2 *)((long)pvVar11 + 0x70) = 7;\n          }\nLAB_00117a88:\n          if ((*(uint *)(param_1 + 9) & 0x4000) != 0) {\n            return (void *)0x0;\n          }\n          return pvVar11;\n        }" { (expression_statement "lVar8 = *(long *)((long)pvVar12 + 8);" (assignment_expression "lVar8 = *(long *)((long)pvVar12 + 8)" identifier = (pointer_expression "*(long *)((long)pvVar12 + 8)" * (cast_expression "(long *)((long)pvVar12 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)pvVar12 + 8)" ( (binary_expression "(long)pvVar12 + 8" (cast_expression "(long)pvVar12" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ))))) ;) (if_statement "if (*(long *)(lVar8 + 0x18) != 0) {\n            *param_1 = lVar8;\n            *(undefined1 *)(param_1[4] + *(long *)(lVar8 + 0x48)) = 0;\n            pvVar11 = (void *)FUN_001164c9(param_1,3);\n            if (pvVar11 != (void *)0x0) {\n              free(pvVar12);\n              goto LAB_00117587;\n            }\n            if ((*(byte *)((long)param_1 + 0x49) & 0x40) != 0) {\n              return (void *)0x0;\n            }\n          }" if (parenthesized_expression "(*(long *)(lVar8 + 0x18) != 0)" ( (binary_expression "*(long *)(lVar8 + 0x18) != 0" (pointer_expression "*(long *)(lVar8 + 0x18)" * (cast_expression "(long *)(lVar8 + 0x18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar8 + 0x18)" ( (binary_expression "lVar8 + 0x18" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n            *param_1 = lVar8;\n            *(undefined1 *)(param_1[4] + *(long *)(lVar8 + 0x48)) = 0;\n            pvVar11 = (void *)FUN_001164c9(param_1,3);\n            if (pvVar11 != (void *)0x0) {\n              free(pvVar12);\n              goto LAB_00117587;\n            }\n            if ((*(byte *)((long)param_1 + 0x49) & 0x40) != 0) {\n              return (void *)0x0;\n            }\n          }" { (expression_statement "*param_1 = lVar8;" (assignment_expression "*param_1 = lVar8" (pointer_expression "*param_1" * identifier) = identifier) ;) (expression_statement "*(undefined1 *)(param_1[4] + *(long *)(lVar8 + 0x48)) = 0;" (assignment_expression "*(undefined1 *)(param_1[4] + *(long *)(lVar8 + 0x48)) = 0" (pointer_expression "*(undefined1 *)(param_1[4] + *(long *)(lVar8 + 0x48))" * (cast_expression "(undefined1 *)(param_1[4] + *(long *)(lVar8 + 0x48))" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1[4] + *(long *)(lVar8 + 0x48))" ( (binary_expression "param_1[4] + *(long *)(lVar8 + 0x48)" (subscript_expression "param_1[4]" identifier [ number_literal ]) + (pointer_expression "*(long *)(lVar8 + 0x48)" * (cast_expression "(long *)(lVar8 + 0x48)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar8 + 0x48)" ( (binary_expression "lVar8 + 0x48" identifier + number_literal) ))))) )))) = number_literal) ;) (expression_statement "pvVar11 = (void *)FUN_001164c9(param_1,3);" (assignment_expression "pvVar11 = (void *)FUN_001164c9(param_1,3)" identifier = (cast_expression "(void *)FUN_001164c9(param_1,3)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_001164c9(param_1,3)" identifier (argument_list "(param_1,3)" ( identifier , number_literal ))))) ;) (if_statement "if (pvVar11 != (void *)0x0) {\n              free(pvVar12);\n              goto LAB_00117587;\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              free(pvVar12);\n              goto LAB_00117587;\n            }" { (expression_statement "free(pvVar12);" (call_expression "free(pvVar12)" identifier (argument_list "(pvVar12)" ( identifier ))) ;) (goto_statement "goto LAB_00117587;" goto statement_identifier ;) })) (if_statement "if ((*(byte *)((long)param_1 + 0x49) & 0x40) != 0) {\n              return (void *)0x0;\n            }" if (parenthesized_expression "((*(byte *)((long)param_1 + 0x49) & 0x40) != 0)" ( (binary_expression "(*(byte *)((long)param_1 + 0x49) & 0x40) != 0" (parenthesized_expression "(*(byte *)((long)param_1 + 0x49) & 0x40)" ( (binary_expression "*(byte *)((long)param_1 + 0x49) & 0x40" (pointer_expression "*(byte *)((long)param_1 + 0x49)" * (cast_expression "(byte *)((long)param_1 + 0x49)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_1 + 0x49)" ( (binary_expression "(long)param_1 + 0x49" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n              return (void *)0x0;\n            }" { (return_statement "return (void *)0x0;" return (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) })) (expression_statement "pvVar11 = *(void **)((long)pvVar12 + 8);" (assignment_expression "pvVar11 = *(void **)((long)pvVar12 + 8)" identifier = (pointer_expression "*(void **)((long)pvVar12 + 8)" * (cast_expression "(void **)((long)pvVar12 + 8)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((long)pvVar12 + 8)" ( (binary_expression "(long)pvVar12 + 8" (cast_expression "(long)pvVar12" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ))))) ;) (expression_statement "*param_1 = (long)pvVar11;" (assignment_expression "*param_1 = (long)pvVar11" (pointer_expression "*param_1" * identifier) = (cast_expression "(long)pvVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) ;) (expression_statement "free(pvVar12);" (call_expression "free(pvVar12)" identifier (argument_list "(pvVar12)" ( identifier ))) ;) (if_statement "if (*(long *)((long)pvVar11 + 0x58) == -1) {\n            free(pvVar11);\n            piVar7 = __errno_location();\n            *piVar7 = 0;\n            *param_1 = 0;\n            return (void *)0x0;\n          }" if (parenthesized_expression "(*(long *)((long)pvVar11 + 0x58) == -1)" ( (binary_expression "*(long *)((long)pvVar11 + 0x58) == -1" (pointer_expression "*(long *)((long)pvVar11 + 0x58)" * (cast_expression "(long *)((long)pvVar11 + 0x58)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)pvVar11 + 0x58)" ( (binary_expression "(long)pvVar11 + 0x58" (cast_expression "(long)pvVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) == number_literal) )) (compound_statement "{\n            free(pvVar11);\n            piVar7 = __errno_location();\n            *piVar7 = 0;\n            *param_1 = 0;\n            return (void *)0x0;\n          }" { (expression_statement "free(pvVar11);" (call_expression "free(pvVar11)" identifier (argument_list "(pvVar11)" ( identifier ))) ;) (expression_statement "piVar7 = __errno_location();" (assignment_expression "piVar7 = __errno_location()" identifier = (call_expression "__errno_location()" identifier (argument_list "()" ( )))) ;) (expression_statement "*piVar7 = 0;" (assignment_expression "*piVar7 = 0" (pointer_expression "*piVar7" * identifier) = number_literal) ;) (expression_statement "*param_1 = 0;" (assignment_expression "*param_1 = 0" (pointer_expression "*param_1" * identifier) = number_literal) ;) (return_statement "return (void *)0x0;" return (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (if_statement "if (*(short *)((long)pvVar11 + 0x70) == 0xb) {\n                    \n            abort();\n          }" if (parenthesized_expression "(*(short *)((long)pvVar11 + 0x70) == 0xb)" ( (binary_expression "*(short *)((long)pvVar11 + 0x70) == 0xb" (pointer_expression "*(short *)((long)pvVar11 + 0x70)" * (cast_expression "(short *)((long)pvVar11 + 0x70)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)pvVar11 + 0x70)" ( (binary_expression "(long)pvVar11 + 0x70" (cast_expression "(long)pvVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) == number_literal) )) (compound_statement "{\n                    \n            abort();\n          }" { (expression_statement "abort();" (call_expression "abort()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "*(undefined1 *)(param_1[4] + *(long *)((long)pvVar11 + 0x48)) = 0;" (assignment_expression "*(undefined1 *)(param_1[4] + *(long *)((long)pvVar11 + 0x48)) = 0" (pointer_expression "*(undefined1 *)(param_1[4] + *(long *)((long)pvVar11 + 0x48))" * (cast_expression "(undefined1 *)(param_1[4] + *(long *)((long)pvVar11 + 0x48))" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1[4] + *(long *)((long)pvVar11 + 0x48))" ( (binary_expression "param_1[4] + *(long *)((long)pvVar11 + 0x48)" (subscript_expression "param_1[4]" identifier [ number_literal ]) + (pointer_expression "*(long *)((long)pvVar11 + 0x48)" * (cast_expression "(long *)((long)pvVar11 + 0x48)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)pvVar11 + 0x48)" ( (binary_expression "(long)pvVar11 + 0x48" (cast_expression "(long)pvVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ))))) )))) = number_literal) ;) (if_statement "if (*(long *)((long)pvVar11 + 0x58) == 0) {\n            iVar5 = FUN_001161af(param_1);\n            if (iVar5 == 0) goto LAB_001177a7;\n            piVar7 = __errno_location();\n            *(int *)((long)pvVar11 + 0x40) = *piVar7;\n            *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\nLAB_001179e4:\n            if (*(short *)((long)pvVar11 + 0x70) == 2) {\n              return (void *)0x0;\n            }\n          }\n          else {\n            if ((*(ushort *)((long)pvVar11 + 0x72) & 2) == 0) {\n              if (((*(ushort *)((long)pvVar11 + 0x72) & 1) == 0) &&\n                 (iVar5 = FUN_00116203(param_1,*(undefined8 *)((long)pvVar11 + 8),0xffffffff,\n                                       &DAT_0011ff41), iVar5 != 0)) {\n                piVar7 = __errno_location();\n                *(int *)((long)pvVar11 + 0x40) = *piVar7;\n                *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\n                goto LAB_001179e4;\n              }\n            }\n            else {\n              if ((*(uint *)(param_1 + 9) & 4) == 0) {\n                if ((*(uint *)(param_1 + 9) & 0x200) == 0) {\n                  iVar5 = fchdir(*(int *)((long)pvVar11 + 0x44));\n                  if (iVar5 != 0) {\n                    piVar7 = __errno_location();\n                    *(int *)((long)pvVar11 + 0x40) = *piVar7;\n                    *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\n                  }\n                }\n                else {\n                  FUN_0011615c(param_1,*(undefined4 *)((long)pvVar11 + 0x44),1);\n                }\n              }\n              close(*(int *)((long)pvVar11 + 0x44));\n            }\nLAB_001177a7:\n            if (*(short *)((long)pvVar11 + 0x70) == 2) goto LAB_00117a88;\n          }" if (parenthesized_expression "(*(long *)((long)pvVar11 + 0x58) == 0)" ( (binary_expression "*(long *)((long)pvVar11 + 0x58) == 0" (pointer_expression "*(long *)((long)pvVar11 + 0x58)" * (cast_expression "(long *)((long)pvVar11 + 0x58)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)pvVar11 + 0x58)" ( (binary_expression "(long)pvVar11 + 0x58" (cast_expression "(long)pvVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) == number_literal) )) (compound_statement "{\n            iVar5 = FUN_001161af(param_1);\n            if (iVar5 == 0) goto LAB_001177a7;\n            piVar7 = __errno_location();\n            *(int *)((long)pvVar11 + 0x40) = *piVar7;\n            *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\nLAB_001179e4:\n            if (*(short *)((long)pvVar11 + 0x70) == 2) {\n              return (void *)0x0;\n            }\n          }" { (expression_statement "iVar5 = FUN_001161af(param_1);" (assignment_expression "iVar5 = FUN_001161af(param_1)" identifier = (call_expression "FUN_001161af(param_1)" identifier (argument_list "(param_1)" ( identifier )))) ;) (if_statement "if (iVar5 == 0) goto LAB_001177a7;" if (parenthesized_expression "(iVar5 == 0)" ( (binary_expression "iVar5 == 0" identifier == number_literal) )) (goto_statement "goto LAB_001177a7;" goto statement_identifier ;)) (expression_statement "piVar7 = __errno_location();" (assignment_expression "piVar7 = __errno_location()" identifier = (call_expression "__errno_location()" identifier (argument_list "()" ( )))) ;) (expression_statement "*(int *)((long)pvVar11 + 0x40) = *piVar7;" (assignment_expression "*(int *)((long)pvVar11 + 0x40) = *piVar7" (pointer_expression "*(int *)((long)pvVar11 + 0x40)" * (cast_expression "(int *)((long)pvVar11 + 0x40)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)pvVar11 + 0x40)" ( (binary_expression "(long)pvVar11 + 0x40" (cast_expression "(long)pvVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = (pointer_expression "*piVar7" * identifier)) ;) (expression_statement "*(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;" (assignment_expression "*(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000" (pointer_expression "*(uint *)(param_1 + 9)" * (cast_expression "(uint *)(param_1 + 9)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 9)" ( (binary_expression "param_1 + 9" identifier + number_literal) )))) = (binary_expression "*(uint *)(param_1 + 9) | 0x4000" (pointer_expression "*(uint *)(param_1 + 9)" * (cast_expression "(uint *)(param_1 + 9)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 9)" ( (binary_expression "param_1 + 9" identifier + number_literal) )))) | number_literal)) ;) (labeled_statement "LAB_001179e4:\n            if (*(short *)((long)pvVar11 + 0x70) == 2) {\n              return (void *)0x0;\n            }" statement_identifier : (if_statement "if (*(short *)((long)pvVar11 + 0x70) == 2) {\n              return (void *)0x0;\n            }" if (parenthesized_expression "(*(short *)((long)pvVar11 + 0x70) == 2)" ( (binary_expression "*(short *)((long)pvVar11 + 0x70) == 2" (pointer_expression "*(short *)((long)pvVar11 + 0x70)" * (cast_expression "(short *)((long)pvVar11 + 0x70)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)pvVar11 + 0x70)" ( (binary_expression "(long)pvVar11 + 0x70" (cast_expression "(long)pvVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) == number_literal) )) (compound_statement "{\n              return (void *)0x0;\n            }" { (return_statement "return (void *)0x0;" return (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) ;) }))) }) (else_clause "else {\n            if ((*(ushort *)((long)pvVar11 + 0x72) & 2) == 0) {\n              if (((*(ushort *)((long)pvVar11 + 0x72) & 1) == 0) &&\n                 (iVar5 = FUN_00116203(param_1,*(undefined8 *)((long)pvVar11 + 8),0xffffffff,\n                                       &DAT_0011ff41), iVar5 != 0)) {\n                piVar7 = __errno_location();\n                *(int *)((long)pvVar11 + 0x40) = *piVar7;\n                *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\n                goto LAB_001179e4;\n              }\n            }\n            else {\n              if ((*(uint *)(param_1 + 9) & 4) == 0) {\n                if ((*(uint *)(param_1 + 9) & 0x200) == 0) {\n                  iVar5 = fchdir(*(int *)((long)pvVar11 + 0x44));\n                  if (iVar5 != 0) {\n                    piVar7 = __errno_location();\n                    *(int *)((long)pvVar11 + 0x40) = *piVar7;\n                    *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\n                  }\n                }\n                else {\n                  FUN_0011615c(param_1,*(undefined4 *)((long)pvVar11 + 0x44),1);\n                }\n              }\n              close(*(int *)((long)pvVar11 + 0x44));\n            }\nLAB_001177a7:\n            if (*(short *)((long)pvVar11 + 0x70) == 2) goto LAB_00117a88;\n          }" else (compound_statement "{\n            if ((*(ushort *)((long)pvVar11 + 0x72) & 2) == 0) {\n              if (((*(ushort *)((long)pvVar11 + 0x72) & 1) == 0) &&\n                 (iVar5 = FUN_00116203(param_1,*(undefined8 *)((long)pvVar11 + 8),0xffffffff,\n                                       &DAT_0011ff41), iVar5 != 0)) {\n                piVar7 = __errno_location();\n                *(int *)((long)pvVar11 + 0x40) = *piVar7;\n                *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\n                goto LAB_001179e4;\n              }\n            }\n            else {\n              if ((*(uint *)(param_1 + 9) & 4) == 0) {\n                if ((*(uint *)(param_1 + 9) & 0x200) == 0) {\n                  iVar5 = fchdir(*(int *)((long)pvVar11 + 0x44));\n                  if (iVar5 != 0) {\n                    piVar7 = __errno_location();\n                    *(int *)((long)pvVar11 + 0x40) = *piVar7;\n                    *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\n                  }\n                }\n                else {\n                  FUN_0011615c(param_1,*(undefined4 *)((long)pvVar11 + 0x44),1);\n                }\n              }\n              close(*(int *)((long)pvVar11 + 0x44));\n            }\nLAB_001177a7:\n            if (*(short *)((long)pvVar11 + 0x70) == 2) goto LAB_00117a88;\n          }" { (if_statement "if ((*(ushort *)((long)pvVar11 + 0x72) & 2) == 0) {\n              if (((*(ushort *)((long)pvVar11 + 0x72) & 1) == 0) &&\n                 (iVar5 = FUN_00116203(param_1,*(undefined8 *)((long)pvVar11 + 8),0xffffffff,\n                                       &DAT_0011ff41), iVar5 != 0)) {\n                piVar7 = __errno_location();\n                *(int *)((long)pvVar11 + 0x40) = *piVar7;\n                *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\n                goto LAB_001179e4;\n              }\n            }\n            else {\n              if ((*(uint *)(param_1 + 9) & 4) == 0) {\n                if ((*(uint *)(param_1 + 9) & 0x200) == 0) {\n                  iVar5 = fchdir(*(int *)((long)pvVar11 + 0x44));\n                  if (iVar5 != 0) {\n                    piVar7 = __errno_location();\n                    *(int *)((long)pvVar11 + 0x40) = *piVar7;\n                    *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\n                  }\n                }\n                else {\n                  FUN_0011615c(param_1,*(undefined4 *)((long)pvVar11 + 0x44),1);\n                }\n              }\n              close(*(int *)((long)pvVar11 + 0x44));\n            }" if (parenthesized_expression "((*(ushort *)((long)pvVar11 + 0x72) & 2) == 0)" ( (binary_expression "(*(ushort *)((long)pvVar11 + 0x72) & 2) == 0" (parenthesized_expression "(*(ushort *)((long)pvVar11 + 0x72) & 2)" ( (binary_expression "*(ushort *)((long)pvVar11 + 0x72) & 2" (pointer_expression "*(ushort *)((long)pvVar11 + 0x72)" * (cast_expression "(ushort *)((long)pvVar11 + 0x72)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)pvVar11 + 0x72)" ( (binary_expression "(long)pvVar11 + 0x72" (cast_expression "(long)pvVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n              if (((*(ushort *)((long)pvVar11 + 0x72) & 1) == 0) &&\n                 (iVar5 = FUN_00116203(param_1,*(undefined8 *)((long)pvVar11 + 8),0xffffffff,\n                                       &DAT_0011ff41), iVar5 != 0)) {\n                piVar7 = __errno_location();\n                *(int *)((long)pvVar11 + 0x40) = *piVar7;\n                *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\n                goto LAB_001179e4;\n              }\n            }" { (if_statement "if (((*(ushort *)((long)pvVar11 + 0x72) & 1) == 0) &&\n                 (iVar5 = FUN_00116203(param_1,*(undefined8 *)((long)pvVar11 + 8),0xffffffff,\n                                       &DAT_0011ff41), iVar5 != 0)) {\n                piVar7 = __errno_location();\n                *(int *)((long)pvVar11 + 0x40) = *piVar7;\n                *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\n                goto LAB_001179e4;\n              }" if (parenthesized_expression "(((*(ushort *)((long)pvVar11 + 0x72) & 1) == 0) &&\n                 (iVar5 = FUN_00116203(param_1,*(undefined8 *)((long)pvVar11 + 8),0xffffffff,\n                                       &DAT_0011ff41), iVar5 != 0))" ( (binary_expression "((*(ushort *)((long)pvVar11 + 0x72) & 1) == 0) &&\n                 (iVar5 = FUN_00116203(param_1,*(undefined8 *)((long)pvVar11 + 8),0xffffffff,\n                                       &DAT_0011ff41), iVar5 != 0)" (parenthesized_expression "((*(ushort *)((long)pvVar11 + 0x72) & 1) == 0)" ( (binary_expression "(*(ushort *)((long)pvVar11 + 0x72) & 1) == 0" (parenthesized_expression "(*(ushort *)((long)pvVar11 + 0x72) & 1)" ( (binary_expression "*(ushort *)((long)pvVar11 + 0x72) & 1" (pointer_expression "*(ushort *)((long)pvVar11 + 0x72)" * (cast_expression "(ushort *)((long)pvVar11 + 0x72)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)pvVar11 + 0x72)" ( (binary_expression "(long)pvVar11 + 0x72" (cast_expression "(long)pvVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) & number_literal) )) == number_literal) )) && (parenthesized_expression "(iVar5 = FUN_00116203(param_1,*(undefined8 *)((long)pvVar11 + 8),0xffffffff,\n                                       &DAT_0011ff41), iVar5 != 0)" ( (comma_expression "iVar5 = FUN_00116203(param_1,*(undefined8 *)((long)pvVar11 + 8),0xffffffff,\n                                       &DAT_0011ff41), iVar5 != 0" (assignment_expression "iVar5 = FUN_00116203(param_1,*(undefined8 *)((long)pvVar11 + 8),0xffffffff,\n                                       &DAT_0011ff41)" identifier = (call_expression "FUN_00116203(param_1,*(undefined8 *)((long)pvVar11 + 8),0xffffffff,\n                                       &DAT_0011ff41)" identifier (argument_list "(param_1,*(undefined8 *)((long)pvVar11 + 8),0xffffffff,\n                                       &DAT_0011ff41)" ( identifier , (pointer_expression "*(undefined8 *)((long)pvVar11 + 8)" * (cast_expression "(undefined8 *)((long)pvVar11 + 8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)pvVar11 + 8)" ( (binary_expression "(long)pvVar11 + 8" (cast_expression "(long)pvVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) , number_literal , (pointer_expression "&DAT_0011ff41" & identifier) )))) , (binary_expression "iVar5 != 0" identifier != number_literal)) ))) )) (compound_statement "{\n                piVar7 = __errno_location();\n                *(int *)((long)pvVar11 + 0x40) = *piVar7;\n                *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\n                goto LAB_001179e4;\n              }" { (expression_statement "piVar7 = __errno_location();" (assignment_expression "piVar7 = __errno_location()" identifier = (call_expression "__errno_location()" identifier (argument_list "()" ( )))) ;) (expression_statement "*(int *)((long)pvVar11 + 0x40) = *piVar7;" (assignment_expression "*(int *)((long)pvVar11 + 0x40) = *piVar7" (pointer_expression "*(int *)((long)pvVar11 + 0x40)" * (cast_expression "(int *)((long)pvVar11 + 0x40)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)pvVar11 + 0x40)" ( (binary_expression "(long)pvVar11 + 0x40" (cast_expression "(long)pvVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = (pointer_expression "*piVar7" * identifier)) ;) (expression_statement "*(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;" (assignment_expression "*(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000" (pointer_expression "*(uint *)(param_1 + 9)" * (cast_expression "(uint *)(param_1 + 9)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 9)" ( (binary_expression "param_1 + 9" identifier + number_literal) )))) = (binary_expression "*(uint *)(param_1 + 9) | 0x4000" (pointer_expression "*(uint *)(param_1 + 9)" * (cast_expression "(uint *)(param_1 + 9)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 9)" ( (binary_expression "param_1 + 9" identifier + number_literal) )))) | number_literal)) ;) (goto_statement "goto LAB_001179e4;" goto statement_identifier ;) })) }) (else_clause "else {\n              if ((*(uint *)(param_1 + 9) & 4) == 0) {\n                if ((*(uint *)(param_1 + 9) & 0x200) == 0) {\n                  iVar5 = fchdir(*(int *)((long)pvVar11 + 0x44));\n                  if (iVar5 != 0) {\n                    piVar7 = __errno_location();\n                    *(int *)((long)pvVar11 + 0x40) = *piVar7;\n                    *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\n                  }\n                }\n                else {\n                  FUN_0011615c(param_1,*(undefined4 *)((long)pvVar11 + 0x44),1);\n                }\n              }\n              close(*(int *)((long)pvVar11 + 0x44));\n            }" else (compound_statement "{\n              if ((*(uint *)(param_1 + 9) & 4) == 0) {\n                if ((*(uint *)(param_1 + 9) & 0x200) == 0) {\n                  iVar5 = fchdir(*(int *)((long)pvVar11 + 0x44));\n                  if (iVar5 != 0) {\n                    piVar7 = __errno_location();\n                    *(int *)((long)pvVar11 + 0x40) = *piVar7;\n                    *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\n                  }\n                }\n                else {\n                  FUN_0011615c(param_1,*(undefined4 *)((long)pvVar11 + 0x44),1);\n                }\n              }\n              close(*(int *)((long)pvVar11 + 0x44));\n            }" { (if_statement "if ((*(uint *)(param_1 + 9) & 4) == 0) {\n                if ((*(uint *)(param_1 + 9) & 0x200) == 0) {\n                  iVar5 = fchdir(*(int *)((long)pvVar11 + 0x44));\n                  if (iVar5 != 0) {\n                    piVar7 = __errno_location();\n                    *(int *)((long)pvVar11 + 0x40) = *piVar7;\n                    *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\n                  }\n                }\n                else {\n                  FUN_0011615c(param_1,*(undefined4 *)((long)pvVar11 + 0x44),1);\n                }\n              }" if (parenthesized_expression "((*(uint *)(param_1 + 9) & 4) == 0)" ( (binary_expression "(*(uint *)(param_1 + 9) & 4) == 0" (parenthesized_expression "(*(uint *)(param_1 + 9) & 4)" ( (binary_expression "*(uint *)(param_1 + 9) & 4" (pointer_expression "*(uint *)(param_1 + 9)" * (cast_expression "(uint *)(param_1 + 9)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 9)" ( (binary_expression "param_1 + 9" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n                if ((*(uint *)(param_1 + 9) & 0x200) == 0) {\n                  iVar5 = fchdir(*(int *)((long)pvVar11 + 0x44));\n                  if (iVar5 != 0) {\n                    piVar7 = __errno_location();\n                    *(int *)((long)pvVar11 + 0x40) = *piVar7;\n                    *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\n                  }\n                }\n                else {\n                  FUN_0011615c(param_1,*(undefined4 *)((long)pvVar11 + 0x44),1);\n                }\n              }" { (if_statement "if ((*(uint *)(param_1 + 9) & 0x200) == 0) {\n                  iVar5 = fchdir(*(int *)((long)pvVar11 + 0x44));\n                  if (iVar5 != 0) {\n                    piVar7 = __errno_location();\n                    *(int *)((long)pvVar11 + 0x40) = *piVar7;\n                    *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\n                  }\n                }\n                else {\n                  FUN_0011615c(param_1,*(undefined4 *)((long)pvVar11 + 0x44),1);\n                }" if (parenthesized_expression "((*(uint *)(param_1 + 9) & 0x200) == 0)" ( (binary_expression "(*(uint *)(param_1 + 9) & 0x200) == 0" (parenthesized_expression "(*(uint *)(param_1 + 9) & 0x200)" ( (binary_expression "*(uint *)(param_1 + 9) & 0x200" (pointer_expression "*(uint *)(param_1 + 9)" * (cast_expression "(uint *)(param_1 + 9)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 9)" ( (binary_expression "param_1 + 9" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n                  iVar5 = fchdir(*(int *)((long)pvVar11 + 0x44));\n                  if (iVar5 != 0) {\n                    piVar7 = __errno_location();\n                    *(int *)((long)pvVar11 + 0x40) = *piVar7;\n                    *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\n                  }\n                }" { (expression_statement "iVar5 = fchdir(*(int *)((long)pvVar11 + 0x44));" (assignment_expression "iVar5 = fchdir(*(int *)((long)pvVar11 + 0x44))" identifier = (call_expression "fchdir(*(int *)((long)pvVar11 + 0x44))" identifier (argument_list "(*(int *)((long)pvVar11 + 0x44))" ( (pointer_expression "*(int *)((long)pvVar11 + 0x44)" * (cast_expression "(int *)((long)pvVar11 + 0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)pvVar11 + 0x44)" ( (binary_expression "(long)pvVar11 + 0x44" (cast_expression "(long)pvVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) )))) ;) (if_statement "if (iVar5 != 0) {\n                    piVar7 = __errno_location();\n                    *(int *)((long)pvVar11 + 0x40) = *piVar7;\n                    *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\n                  }" if (parenthesized_expression "(iVar5 != 0)" ( (binary_expression "iVar5 != 0" identifier != number_literal) )) (compound_statement "{\n                    piVar7 = __errno_location();\n                    *(int *)((long)pvVar11 + 0x40) = *piVar7;\n                    *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\n                  }" { (expression_statement "piVar7 = __errno_location();" (assignment_expression "piVar7 = __errno_location()" identifier = (call_expression "__errno_location()" identifier (argument_list "()" ( )))) ;) (expression_statement "*(int *)((long)pvVar11 + 0x40) = *piVar7;" (assignment_expression "*(int *)((long)pvVar11 + 0x40) = *piVar7" (pointer_expression "*(int *)((long)pvVar11 + 0x40)" * (cast_expression "(int *)((long)pvVar11 + 0x40)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)pvVar11 + 0x40)" ( (binary_expression "(long)pvVar11 + 0x40" (cast_expression "(long)pvVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = (pointer_expression "*piVar7" * identifier)) ;) (expression_statement "*(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;" (assignment_expression "*(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000" (pointer_expression "*(uint *)(param_1 + 9)" * (cast_expression "(uint *)(param_1 + 9)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 9)" ( (binary_expression "param_1 + 9" identifier + number_literal) )))) = (binary_expression "*(uint *)(param_1 + 9) | 0x4000" (pointer_expression "*(uint *)(param_1 + 9)" * (cast_expression "(uint *)(param_1 + 9)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 9)" ( (binary_expression "param_1 + 9" identifier + number_literal) )))) | number_literal)) ;) })) }) (else_clause "else {\n                  FUN_0011615c(param_1,*(undefined4 *)((long)pvVar11 + 0x44),1);\n                }" else (compound_statement "{\n                  FUN_0011615c(param_1,*(undefined4 *)((long)pvVar11 + 0x44),1);\n                }" { (expression_statement "FUN_0011615c(param_1,*(undefined4 *)((long)pvVar11 + 0x44),1);" (call_expression "FUN_0011615c(param_1,*(undefined4 *)((long)pvVar11 + 0x44),1)" identifier (argument_list "(param_1,*(undefined4 *)((long)pvVar11 + 0x44),1)" ( identifier , (pointer_expression "*(undefined4 *)((long)pvVar11 + 0x44)" * (cast_expression "(undefined4 *)((long)pvVar11 + 0x44)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)pvVar11 + 0x44)" ( (binary_expression "(long)pvVar11 + 0x44" (cast_expression "(long)pvVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) , number_literal ))) ;) }))) })) (expression_statement "close(*(int *)((long)pvVar11 + 0x44));" (call_expression "close(*(int *)((long)pvVar11 + 0x44))" identifier (argument_list "(*(int *)((long)pvVar11 + 0x44))" ( (pointer_expression "*(int *)((long)pvVar11 + 0x44)" * (cast_expression "(int *)((long)pvVar11 + 0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)pvVar11 + 0x44)" ( (binary_expression "(long)pvVar11 + 0x44" (cast_expression "(long)pvVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) ))) ;) }))) (labeled_statement "LAB_001177a7:\n            if (*(short *)((long)pvVar11 + 0x70) == 2) goto LAB_00117a88;" statement_identifier : (if_statement "if (*(short *)((long)pvVar11 + 0x70) == 2) goto LAB_00117a88;" if (parenthesized_expression "(*(short *)((long)pvVar11 + 0x70) == 2)" ( (binary_expression "*(short *)((long)pvVar11 + 0x70) == 2" (pointer_expression "*(short *)((long)pvVar11 + 0x70)" * (cast_expression "(short *)((long)pvVar11 + 0x70)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)pvVar11 + 0x70)" ( (binary_expression "(long)pvVar11 + 0x70" (cast_expression "(long)pvVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) == number_literal) )) (goto_statement "goto LAB_00117a88;" goto statement_identifier ;))) }))) (if_statement "if (*(int *)((long)pvVar11 + 0x40) == 0) {\n            *(undefined2 *)((long)pvVar11 + 0x70) = 6;\n            FUN_00116412(param_1,pvVar11);\n          }\n          else {\n            *(undefined2 *)((long)pvVar11 + 0x70) = 7;\n          }" if (parenthesized_expression "(*(int *)((long)pvVar11 + 0x40) == 0)" ( (binary_expression "*(int *)((long)pvVar11 + 0x40) == 0" (pointer_expression "*(int *)((long)pvVar11 + 0x40)" * (cast_expression "(int *)((long)pvVar11 + 0x40)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)pvVar11 + 0x40)" ( (binary_expression "(long)pvVar11 + 0x40" (cast_expression "(long)pvVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) == number_literal) )) (compound_statement "{\n            *(undefined2 *)((long)pvVar11 + 0x70) = 6;\n            FUN_00116412(param_1,pvVar11);\n          }" { (expression_statement "*(undefined2 *)((long)pvVar11 + 0x70) = 6;" (assignment_expression "*(undefined2 *)((long)pvVar11 + 0x70) = 6" (pointer_expression "*(undefined2 *)((long)pvVar11 + 0x70)" * (cast_expression "(undefined2 *)((long)pvVar11 + 0x70)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)pvVar11 + 0x70)" ( (binary_expression "(long)pvVar11 + 0x70" (cast_expression "(long)pvVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "FUN_00116412(param_1,pvVar11);" (call_expression "FUN_00116412(param_1,pvVar11)" identifier (argument_list "(param_1,pvVar11)" ( identifier , identifier ))) ;) }) (else_clause "else {\n            *(undefined2 *)((long)pvVar11 + 0x70) = 7;\n          }" else (compound_statement "{\n            *(undefined2 *)((long)pvVar11 + 0x70) = 7;\n          }" { (expression_statement "*(undefined2 *)((long)pvVar11 + 0x70) = 7;" (assignment_expression "*(undefined2 *)((long)pvVar11 + 0x70) = 7" (pointer_expression "*(undefined2 *)((long)pvVar11 + 0x70)" * (cast_expression "(undefined2 *)((long)pvVar11 + 0x70)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)pvVar11 + 0x70)" ( (binary_expression "(long)pvVar11 + 0x70" (cast_expression "(long)pvVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = number_literal) ;) }))) (labeled_statement "LAB_00117a88:\n          if ((*(uint *)(param_1 + 9) & 0x4000) != 0) {\n            return (void *)0x0;\n          }" statement_identifier : (if_statement "if ((*(uint *)(param_1 + 9) & 0x4000) != 0) {\n            return (void *)0x0;\n          }" if (parenthesized_expression "((*(uint *)(param_1 + 9) & 0x4000) != 0)" ( (binary_expression "(*(uint *)(param_1 + 9) & 0x4000) != 0" (parenthesized_expression "(*(uint *)(param_1 + 9) & 0x4000)" ( (binary_expression "*(uint *)(param_1 + 9) & 0x4000" (pointer_expression "*(uint *)(param_1 + 9)" * (cast_expression "(uint *)(param_1 + 9)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 9)" ( (binary_expression "param_1 + 9" identifier + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n            return (void *)0x0;\n          }" { (return_statement "return (void *)0x0;" return (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) ;) }))) (return_statement "return pvVar11;" return identifier ;) })) (expression_statement "*param_1 = (long)pvVar11;" (assignment_expression "*param_1 = (long)pvVar11" (pointer_expression "*param_1" * identifier) = (cast_expression "(long)pvVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) ;) (expression_statement "free(pvVar12);" (call_expression "free(pvVar12)" identifier (argument_list "(pvVar12)" ( identifier ))) ;) (if_statement "if (*(long *)((long)pvVar11 + 0x58) == 0) {\n          iVar5 = FUN_001161af(param_1);\n          if (iVar5 != 0) {\n            *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\n            return (void *)0x0;\n          }\n          FUN_00115eb3(param_1);\n          *(long *)((long)pvVar11 + 0x48) = *(long *)((long)pvVar11 + 0x60);\n          __s = (char *)((long)pvVar11 + 0x108);\n          memmove((void *)param_1[4],__s,*(long *)((long)pvVar11 + 0x60) + 1);\n          pcVar9 = strrchr(__s,0x2f);\n          if ((pcVar9 == (char *)0x0) || ((__s == pcVar9 && (pcVar9[1] == '\0'))))\n          goto LAB_0011784f;\n          uVar10 = 0xffffffffffffffff;\n          pcVar13 = pcVar9 + 1;\n          goto code_r0x00117837;\n        }" if (parenthesized_expression "(*(long *)((long)pvVar11 + 0x58) == 0)" ( (binary_expression "*(long *)((long)pvVar11 + 0x58) == 0" (pointer_expression "*(long *)((long)pvVar11 + 0x58)" * (cast_expression "(long *)((long)pvVar11 + 0x58)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)pvVar11 + 0x58)" ( (binary_expression "(long)pvVar11 + 0x58" (cast_expression "(long)pvVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) == number_literal) )) (compound_statement "{\n          iVar5 = FUN_001161af(param_1);\n          if (iVar5 != 0) {\n            *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\n            return (void *)0x0;\n          }\n          FUN_00115eb3(param_1);\n          *(long *)((long)pvVar11 + 0x48) = *(long *)((long)pvVar11 + 0x60);\n          __s = (char *)((long)pvVar11 + 0x108);\n          memmove((void *)param_1[4],__s,*(long *)((long)pvVar11 + 0x60) + 1);\n          pcVar9 = strrchr(__s,0x2f);\n          if ((pcVar9 == (char *)0x0) || ((__s == pcVar9 && (pcVar9[1] == '\0'))))\n          goto LAB_0011784f;\n          uVar10 = 0xffffffffffffffff;\n          pcVar13 = pcVar9 + 1;\n          goto code_r0x00117837;\n        }" { (expression_statement "iVar5 = FUN_001161af(param_1);" (assignment_expression "iVar5 = FUN_001161af(param_1)" identifier = (call_expression "FUN_001161af(param_1)" identifier (argument_list "(param_1)" ( identifier )))) ;) (if_statement "if (iVar5 != 0) {\n            *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\n            return (void *)0x0;\n          }" if (parenthesized_expression "(iVar5 != 0)" ( (binary_expression "iVar5 != 0" identifier != number_literal) )) (compound_statement "{\n            *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\n            return (void *)0x0;\n          }" { (expression_statement "*(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;" (assignment_expression "*(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000" (pointer_expression "*(uint *)(param_1 + 9)" * (cast_expression "(uint *)(param_1 + 9)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 9)" ( (binary_expression "param_1 + 9" identifier + number_literal) )))) = (binary_expression "*(uint *)(param_1 + 9) | 0x4000" (pointer_expression "*(uint *)(param_1 + 9)" * (cast_expression "(uint *)(param_1 + 9)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 9)" ( (binary_expression "param_1 + 9" identifier + number_literal) )))) | number_literal)) ;) (return_statement "return (void *)0x0;" return (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (expression_statement "FUN_00115eb3(param_1);" (call_expression "FUN_00115eb3(param_1)" identifier (argument_list "(param_1)" ( identifier ))) ;) (expression_statement "*(long *)((long)pvVar11 + 0x48) = *(long *)((long)pvVar11 + 0x60);" (assignment_expression "*(long *)((long)pvVar11 + 0x48) = *(long *)((long)pvVar11 + 0x60)" (pointer_expression "*(long *)((long)pvVar11 + 0x48)" * (cast_expression "(long *)((long)pvVar11 + 0x48)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)pvVar11 + 0x48)" ( (binary_expression "(long)pvVar11 + 0x48" (cast_expression "(long)pvVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = (pointer_expression "*(long *)((long)pvVar11 + 0x60)" * (cast_expression "(long *)((long)pvVar11 + 0x60)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)pvVar11 + 0x60)" ( (binary_expression "(long)pvVar11 + 0x60" (cast_expression "(long)pvVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ))))) ;) (expression_statement "__s = (char *)((long)pvVar11 + 0x108);" (assignment_expression "__s = (char *)((long)pvVar11 + 0x108)" identifier = (cast_expression "(char *)((long)pvVar11 + 0x108)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)pvVar11 + 0x108)" ( (binary_expression "(long)pvVar11 + 0x108" (cast_expression "(long)pvVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) ;) (expression_statement "memmove((void *)param_1[4],__s,*(long *)((long)pvVar11 + 0x60) + 1);" (call_expression "memmove((void *)param_1[4],__s,*(long *)((long)pvVar11 + 0x60) + 1)" identifier (argument_list "((void *)param_1[4],__s,*(long *)((long)pvVar11 + 0x60) + 1)" ( (cast_expression "(void *)param_1[4]" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[4]" identifier [ number_literal ])) , identifier , (binary_expression "*(long *)((long)pvVar11 + 0x60) + 1" (pointer_expression "*(long *)((long)pvVar11 + 0x60)" * (cast_expression "(long *)((long)pvVar11 + 0x60)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)pvVar11 + 0x60)" ( (binary_expression "(long)pvVar11 + 0x60" (cast_expression "(long)pvVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) + number_literal) ))) ;) (expression_statement "pcVar9 = strrchr(__s,0x2f);" (assignment_expression "pcVar9 = strrchr(__s,0x2f)" identifier = (call_expression "strrchr(__s,0x2f)" identifier (argument_list "(__s,0x2f)" ( identifier , number_literal )))) ;) (if_statement "if ((pcVar9 == (char *)0x0) || ((__s == pcVar9 && (pcVar9[1] == '\0'))))\n          goto LAB_0011784f;" if (parenthesized_expression "((pcVar9 == (char *)0x0) || ((__s == pcVar9 && (pcVar9[1] == '\0'))))" ( (binary_expression "(pcVar9 == (char *)0x0) || ((__s == pcVar9 && (pcVar9[1] == '\0')))" (parenthesized_expression "(pcVar9 == (char *)0x0)" ( (binary_expression "pcVar9 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "((__s == pcVar9 && (pcVar9[1] == '\0')))" ( (parenthesized_expression "(__s == pcVar9 && (pcVar9[1] == '\0'))" ( (binary_expression "__s == pcVar9 && (pcVar9[1] == '\0')" (binary_expression "__s == pcVar9" identifier == identifier) && (parenthesized_expression "(pcVar9[1] == '\0')" ( (binary_expression "pcVar9[1] == '\0'" (subscript_expression "pcVar9[1]" identifier [ number_literal ]) == (char_literal "'\0'" ' escape_sequence ')) ))) )) ))) )) (goto_statement "goto LAB_0011784f;" goto statement_identifier ;)) (expression_statement "uVar10 = 0xffffffffffffffff;" (assignment_expression "uVar10 = 0xffffffffffffffff" identifier = number_literal) ;) (expression_statement "pcVar13 = pcVar9 + 1;" (assignment_expression "pcVar13 = pcVar9 + 1" identifier = (binary_expression "pcVar9 + 1" identifier + number_literal)) ;) (goto_statement "goto code_r0x00117837;" goto statement_identifier ;) })) (expression_statement "pvVar12 = pvVar11;" (assignment_expression "pvVar12 = pvVar11" identifier = identifier) ;) }) while (parenthesized_expression "(*(short *)((long)pvVar11 + 0x74) == 4)" ( (binary_expression "*(short *)((long)pvVar11 + 0x74) == 4" (pointer_expression "*(short *)((long)pvVar11 + 0x74)" * (cast_expression "(short *)((long)pvVar11 + 0x74)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)pvVar11 + 0x74)" ( (binary_expression "(long)pvVar11 + 0x74" (cast_expression "(long)pvVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) == number_literal) )) ;)) (if_statement "if (*(short *)((long)pvVar11 + 0x74) == 2) {\n        sVar4 = FUN_00115abc(param_1,pvVar11,1);\n        *(short *)((long)pvVar11 + 0x70) = sVar4;\n        if ((sVar4 == 1) && ((*(byte *)(param_1 + 9) & 4) == 0)) {\n          iVar5 = FUN_00115e27(param_1,&DAT_0011ff42);\n          *(int *)((long)pvVar11 + 0x44) = iVar5;\n          if (iVar5 < 0) {\n            piVar7 = __errno_location();\n            *(int *)((long)pvVar11 + 0x40) = *piVar7;\n            *(undefined2 *)((long)pvVar11 + 0x70) = 7;\n          }\n          else {\n            *(ushort *)((long)pvVar11 + 0x72) = *(ushort *)((long)pvVar11 + 0x72) | 2;\n          }\n        }\n        *(undefined2 *)((long)pvVar11 + 0x74) = 3;\n      }" if (parenthesized_expression "(*(short *)((long)pvVar11 + 0x74) == 2)" ( (binary_expression "*(short *)((long)pvVar11 + 0x74) == 2" (pointer_expression "*(short *)((long)pvVar11 + 0x74)" * (cast_expression "(short *)((long)pvVar11 + 0x74)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)pvVar11 + 0x74)" ( (binary_expression "(long)pvVar11 + 0x74" (cast_expression "(long)pvVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) == number_literal) )) (compound_statement "{\n        sVar4 = FUN_00115abc(param_1,pvVar11,1);\n        *(short *)((long)pvVar11 + 0x70) = sVar4;\n        if ((sVar4 == 1) && ((*(byte *)(param_1 + 9) & 4) == 0)) {\n          iVar5 = FUN_00115e27(param_1,&DAT_0011ff42);\n          *(int *)((long)pvVar11 + 0x44) = iVar5;\n          if (iVar5 < 0) {\n            piVar7 = __errno_location();\n            *(int *)((long)pvVar11 + 0x40) = *piVar7;\n            *(undefined2 *)((long)pvVar11 + 0x70) = 7;\n          }\n          else {\n            *(ushort *)((long)pvVar11 + 0x72) = *(ushort *)((long)pvVar11 + 0x72) | 2;\n          }\n        }\n        *(undefined2 *)((long)pvVar11 + 0x74) = 3;\n      }" { (expression_statement "sVar4 = FUN_00115abc(param_1,pvVar11,1);" (assignment_expression "sVar4 = FUN_00115abc(param_1,pvVar11,1)" identifier = (call_expression "FUN_00115abc(param_1,pvVar11,1)" identifier (argument_list "(param_1,pvVar11,1)" ( identifier , identifier , number_literal )))) ;) (expression_statement "*(short *)((long)pvVar11 + 0x70) = sVar4;" (assignment_expression "*(short *)((long)pvVar11 + 0x70) = sVar4" (pointer_expression "*(short *)((long)pvVar11 + 0x70)" * (cast_expression "(short *)((long)pvVar11 + 0x70)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)pvVar11 + 0x70)" ( (binary_expression "(long)pvVar11 + 0x70" (cast_expression "(long)pvVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = identifier) ;) (if_statement "if ((sVar4 == 1) && ((*(byte *)(param_1 + 9) & 4) == 0)) {\n          iVar5 = FUN_00115e27(param_1,&DAT_0011ff42);\n          *(int *)((long)pvVar11 + 0x44) = iVar5;\n          if (iVar5 < 0) {\n            piVar7 = __errno_location();\n            *(int *)((long)pvVar11 + 0x40) = *piVar7;\n            *(undefined2 *)((long)pvVar11 + 0x70) = 7;\n          }\n          else {\n            *(ushort *)((long)pvVar11 + 0x72) = *(ushort *)((long)pvVar11 + 0x72) | 2;\n          }\n        }" if (parenthesized_expression "((sVar4 == 1) && ((*(byte *)(param_1 + 9) & 4) == 0))" ( (binary_expression "(sVar4 == 1) && ((*(byte *)(param_1 + 9) & 4) == 0)" (parenthesized_expression "(sVar4 == 1)" ( (binary_expression "sVar4 == 1" identifier == number_literal) )) && (parenthesized_expression "((*(byte *)(param_1 + 9) & 4) == 0)" ( (binary_expression "(*(byte *)(param_1 + 9) & 4) == 0" (parenthesized_expression "(*(byte *)(param_1 + 9) & 4)" ( (binary_expression "*(byte *)(param_1 + 9) & 4" (pointer_expression "*(byte *)(param_1 + 9)" * (cast_expression "(byte *)(param_1 + 9)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 9)" ( (binary_expression "param_1 + 9" identifier + number_literal) )))) & number_literal) )) == number_literal) ))) )) (compound_statement "{\n          iVar5 = FUN_00115e27(param_1,&DAT_0011ff42);\n          *(int *)((long)pvVar11 + 0x44) = iVar5;\n          if (iVar5 < 0) {\n            piVar7 = __errno_location();\n            *(int *)((long)pvVar11 + 0x40) = *piVar7;\n            *(undefined2 *)((long)pvVar11 + 0x70) = 7;\n          }\n          else {\n            *(ushort *)((long)pvVar11 + 0x72) = *(ushort *)((long)pvVar11 + 0x72) | 2;\n          }\n        }" { (expression_statement "iVar5 = FUN_00115e27(param_1,&DAT_0011ff42);" (assignment_expression "iVar5 = FUN_00115e27(param_1,&DAT_0011ff42)" identifier = (call_expression "FUN_00115e27(param_1,&DAT_0011ff42)" identifier (argument_list "(param_1,&DAT_0011ff42)" ( identifier , (pointer_expression "&DAT_0011ff42" & identifier) )))) ;) (expression_statement "*(int *)((long)pvVar11 + 0x44) = iVar5;" (assignment_expression "*(int *)((long)pvVar11 + 0x44) = iVar5" (pointer_expression "*(int *)((long)pvVar11 + 0x44)" * (cast_expression "(int *)((long)pvVar11 + 0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)pvVar11 + 0x44)" ( (binary_expression "(long)pvVar11 + 0x44" (cast_expression "(long)pvVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = identifier) ;) (if_statement "if (iVar5 < 0) {\n            piVar7 = __errno_location();\n            *(int *)((long)pvVar11 + 0x40) = *piVar7;\n            *(undefined2 *)((long)pvVar11 + 0x70) = 7;\n          }\n          else {\n            *(ushort *)((long)pvVar11 + 0x72) = *(ushort *)((long)pvVar11 + 0x72) | 2;\n          }" if (parenthesized_expression "(iVar5 < 0)" ( (binary_expression "iVar5 < 0" identifier < number_literal) )) (compound_statement "{\n            piVar7 = __errno_location();\n            *(int *)((long)pvVar11 + 0x40) = *piVar7;\n            *(undefined2 *)((long)pvVar11 + 0x70) = 7;\n          }" { (expression_statement "piVar7 = __errno_location();" (assignment_expression "piVar7 = __errno_location()" identifier = (call_expression "__errno_location()" identifier (argument_list "()" ( )))) ;) (expression_statement "*(int *)((long)pvVar11 + 0x40) = *piVar7;" (assignment_expression "*(int *)((long)pvVar11 + 0x40) = *piVar7" (pointer_expression "*(int *)((long)pvVar11 + 0x40)" * (cast_expression "(int *)((long)pvVar11 + 0x40)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)pvVar11 + 0x40)" ( (binary_expression "(long)pvVar11 + 0x40" (cast_expression "(long)pvVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = (pointer_expression "*piVar7" * identifier)) ;) (expression_statement "*(undefined2 *)((long)pvVar11 + 0x70) = 7;" (assignment_expression "*(undefined2 *)((long)pvVar11 + 0x70) = 7" (pointer_expression "*(undefined2 *)((long)pvVar11 + 0x70)" * (cast_expression "(undefined2 *)((long)pvVar11 + 0x70)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)pvVar11 + 0x70)" ( (binary_expression "(long)pvVar11 + 0x70" (cast_expression "(long)pvVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = number_literal) ;) }) (else_clause "else {\n            *(ushort *)((long)pvVar11 + 0x72) = *(ushort *)((long)pvVar11 + 0x72) | 2;\n          }" else (compound_statement "{\n            *(ushort *)((long)pvVar11 + 0x72) = *(ushort *)((long)pvVar11 + 0x72) | 2;\n          }" { (expression_statement "*(ushort *)((long)pvVar11 + 0x72) = *(ushort *)((long)pvVar11 + 0x72) | 2;" (assignment_expression "*(ushort *)((long)pvVar11 + 0x72) = *(ushort *)((long)pvVar11 + 0x72) | 2" (pointer_expression "*(ushort *)((long)pvVar11 + 0x72)" * (cast_expression "(ushort *)((long)pvVar11 + 0x72)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)pvVar11 + 0x72)" ( (binary_expression "(long)pvVar11 + 0x72" (cast_expression "(long)pvVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = (binary_expression "*(ushort *)((long)pvVar11 + 0x72) | 2" (pointer_expression "*(ushort *)((long)pvVar11 + 0x72)" * (cast_expression "(ushort *)((long)pvVar11 + 0x72)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)pvVar11 + 0x72)" ( (binary_expression "(long)pvVar11 + 0x72" (cast_expression "(long)pvVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) | number_literal)) ;) }))) })) (expression_statement "*(undefined2 *)((long)pvVar11 + 0x74) = 3;" (assignment_expression "*(undefined2 *)((long)pvVar11 + 0x74) = 3" (pointer_expression "*(undefined2 *)((long)pvVar11 + 0x74)" * (cast_expression "(undefined2 *)((long)pvVar11 + 0x74)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)pvVar11 + 0x74)" ( (binary_expression "(long)pvVar11 + 0x74" (cast_expression "(long)pvVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = number_literal) ;) })) }))) (labeled_statement "LAB_00117587:\n    lVar8 = *(long *)(*(long *)((long)pvVar11 + 8) + 0x48);" statement_identifier : (expression_statement "lVar8 = *(long *)(*(long *)((long)pvVar11 + 8) + 0x48);" (assignment_expression "lVar8 = *(long *)(*(long *)((long)pvVar11 + 8) + 0x48)" identifier = (pointer_expression "*(long *)(*(long *)((long)pvVar11 + 8) + 0x48)" * (cast_expression "(long *)(*(long *)((long)pvVar11 + 8) + 0x48)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)((long)pvVar11 + 8) + 0x48)" ( (binary_expression "*(long *)((long)pvVar11 + 8) + 0x48" (pointer_expression "*(long *)((long)pvVar11 + 8)" * (cast_expression "(long *)((long)pvVar11 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)pvVar11 + 8)" ( (binary_expression "(long)pvVar11 + 8" (cast_expression "(long)pvVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) + number_literal) ))))) ;)) (expression_statement "lVar6 = lVar8 + -1;" (assignment_expression "lVar6 = lVar8 + -1" identifier = (binary_expression "lVar8 + -1" identifier + number_literal)) ;) (if_statement "if (*(char *)(*(long *)(*(long *)((long)pvVar11 + 8) + 0x38) + -1 + lVar8) != '/') {\n      lVar6 = lVar8;\n    }" if (parenthesized_expression "(*(char *)(*(long *)(*(long *)((long)pvVar11 + 8) + 0x38) + -1 + lVar8) != '/')" ( (binary_expression "*(char *)(*(long *)(*(long *)((long)pvVar11 + 8) + 0x38) + -1 + lVar8) != '/'" (pointer_expression "*(char *)(*(long *)(*(long *)((long)pvVar11 + 8) + 0x38) + -1 + lVar8)" * (cast_expression "(char *)(*(long *)(*(long *)((long)pvVar11 + 8) + 0x38) + -1 + lVar8)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(*(long *)((long)pvVar11 + 8) + 0x38) + -1 + lVar8)" ( (binary_expression "*(long *)(*(long *)((long)pvVar11 + 8) + 0x38) + -1 + lVar8" (binary_expression "*(long *)(*(long *)((long)pvVar11 + 8) + 0x38) + -1" (pointer_expression "*(long *)(*(long *)((long)pvVar11 + 8) + 0x38)" * (cast_expression "(long *)(*(long *)((long)pvVar11 + 8) + 0x38)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)((long)pvVar11 + 8) + 0x38)" ( (binary_expression "*(long *)((long)pvVar11 + 8) + 0x38" (pointer_expression "*(long *)((long)pvVar11 + 8)" * (cast_expression "(long *)((long)pvVar11 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)pvVar11 + 8)" ( (binary_expression "(long)pvVar11 + 8" (cast_expression "(long)pvVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) + number_literal) )))) + number_literal) + identifier) )))) != (char_literal "'/'" ' character ')) )) (compound_statement "{\n      lVar6 = lVar8;\n    }" { (expression_statement "lVar6 = lVar8;" (assignment_expression "lVar6 = lVar8" identifier = identifier) ;) })) (expression_statement "lVar8 = param_1[4];" (assignment_expression "lVar8 = param_1[4]" identifier = (subscript_expression "param_1[4]" identifier [ number_literal ])) ;) (expression_statement "*(undefined1 *)(lVar6 + lVar8) = 0x2f;" (assignment_expression "*(undefined1 *)(lVar6 + lVar8) = 0x2f" (pointer_expression "*(undefined1 *)(lVar6 + lVar8)" * (cast_expression "(undefined1 *)(lVar6 + lVar8)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar6 + lVar8)" ( (binary_expression "lVar6 + lVar8" identifier + identifier) )))) = number_literal) ;) (expression_statement "memmove((undefined1 *)(lVar6 + lVar8) + 1,(void *)((long)pvVar11 + 0x108),\n            *(long *)((long)pvVar11 + 0x60) + 1);" (call_expression "memmove((undefined1 *)(lVar6 + lVar8) + 1,(void *)((long)pvVar11 + 0x108),\n            *(long *)((long)pvVar11 + 0x60) + 1)" identifier (argument_list "((undefined1 *)(lVar6 + lVar8) + 1,(void *)((long)pvVar11 + 0x108),\n            *(long *)((long)pvVar11 + 0x60) + 1)" ( (binary_expression "(undefined1 *)(lVar6 + lVar8) + 1" (cast_expression "(undefined1 *)(lVar6 + lVar8)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar6 + lVar8)" ( (binary_expression "lVar6 + lVar8" identifier + identifier) ))) + number_literal) , (cast_expression "(void *)((long)pvVar11 + 0x108)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)pvVar11 + 0x108)" ( (binary_expression "(long)pvVar11 + 0x108" (cast_expression "(long)pvVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ))) , (binary_expression "*(long *)((long)pvVar11 + 0x60) + 1" (pointer_expression "*(long *)((long)pvVar11 + 0x60)" * (cast_expression "(long *)((long)pvVar11 + 0x60)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)pvVar11 + 0x60)" ( (binary_expression "(long)pvVar11 + 0x60" (cast_expression "(long)pvVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) + number_literal) ))) ;) }))) (goto_statement "goto LAB_001175c0;" goto statement_identifier ;) (while_statement "while( true ) {\n    uVar10 = uVar10 - 1;\n    cVar2 = *pcVar13;\n    pcVar13 = pcVar13 + (ulong)bVar14 * -2 + 1;\n    if (cVar2 == '\0') break;\ncode_r0x00117837:\n    if (uVar10 == 0) break;\n  }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n    uVar10 = uVar10 - 1;\n    cVar2 = *pcVar13;\n    pcVar13 = pcVar13 + (ulong)bVar14 * -2 + 1;\n    if (cVar2 == '\0') break;\ncode_r0x00117837:\n    if (uVar10 == 0) break;\n  }" { (expression_statement "uVar10 = uVar10 - 1;" (assignment_expression "uVar10 = uVar10 - 1" identifier = (binary_expression "uVar10 - 1" identifier - number_literal)) ;) (expression_statement "cVar2 = *pcVar13;" (assignment_expression "cVar2 = *pcVar13" identifier = (pointer_expression "*pcVar13" * identifier)) ;) (expression_statement "pcVar13 = pcVar13 + (ulong)bVar14 * -2 + 1;" (assignment_expression "pcVar13 = pcVar13 + (ulong)bVar14 * -2 + 1" identifier = (binary_expression "pcVar13 + (ulong)bVar14 * -2 + 1" (binary_expression "pcVar13 + (ulong)bVar14 * -2" identifier + (binary_expression "(ulong)bVar14 * -2" (cast_expression "(ulong)bVar14" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (if_statement "if (cVar2 == '\0') break;" if (parenthesized_expression "(cVar2 == '\0')" ( (binary_expression "cVar2 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (break_statement "break;" break ;)) (labeled_statement "code_r0x00117837:\n    if (uVar10 == 0) break;" statement_identifier : (if_statement "if (uVar10 == 0) break;" if (parenthesized_expression "(uVar10 == 0)" ( (binary_expression "uVar10 == 0" identifier == number_literal) )) (break_statement "break;" break ;))) })) (expression_statement "memmove(__s,pcVar9 + 1,~uVar10);" (call_expression "memmove(__s,pcVar9 + 1,~uVar10)" identifier (argument_list "(__s,pcVar9 + 1,~uVar10)" ( identifier , (binary_expression "pcVar9 + 1" identifier + number_literal) , (unary_expression "~uVar10" ~ identifier) ))) ;) (expression_statement "*(ulong *)((long)pvVar11 + 0x60) = ~uVar10 - 1;" (assignment_expression "*(ulong *)((long)pvVar11 + 0x60) = ~uVar10 - 1" (pointer_expression "*(ulong *)((long)pvVar11 + 0x60)" * (cast_expression "(ulong *)((long)pvVar11 + 0x60)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)pvVar11 + 0x60)" ( (binary_expression "(long)pvVar11 + 0x60" (cast_expression "(long)pvVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = (binary_expression "~uVar10 - 1" (unary_expression "~uVar10" ~ identifier) - number_literal)) ;) (labeled_statement "LAB_0011784f:\n  lVar8 = param_1[4];" statement_identifier : (expression_statement "lVar8 = param_1[4];" (assignment_expression "lVar8 = param_1[4]" identifier = (subscript_expression "param_1[4]" identifier [ number_literal ])) ;)) (expression_statement "*(long *)((long)pvVar11 + 0x38) = lVar8;" (assignment_expression "*(long *)((long)pvVar11 + 0x38) = lVar8" (pointer_expression "*(long *)((long)pvVar11 + 0x38)" * (cast_expression "(long *)((long)pvVar11 + 0x38)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)pvVar11 + 0x38)" ( (binary_expression "(long)pvVar11 + 0x38" (cast_expression "(long)pvVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(long *)((long)pvVar11 + 0x30) = lVar8;" (assignment_expression "*(long *)((long)pvVar11 + 0x30) = lVar8" (pointer_expression "*(long *)((long)pvVar11 + 0x30)" * (cast_expression "(long *)((long)pvVar11 + 0x30)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)pvVar11 + 0x30)" ( (binary_expression "(long)pvVar11 + 0x30" (cast_expression "(long)pvVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "FUN_00115dc3(param_1);" (call_expression "FUN_00115dc3(param_1)" identifier (argument_list "(param_1)" ( identifier ))) ;) (labeled_statement "LAB_001175c0:\n  *param_1 = (long)pvVar11;" statement_identifier : (expression_statement "*param_1 = (long)pvVar11;" (assignment_expression "*param_1 = (long)pvVar11" (pointer_expression "*param_1" * identifier) = (cast_expression "(long)pvVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) ;)) (if_statement "if (*(short *)((long)pvVar11 + 0x70) == 0xb) {\n    if (*(long *)((long)pvVar11 + 0xa8) != 2) {\n      if (*(long *)((long)pvVar11 + 0xa8) == 1) {\n        return pvVar11;\n      }\n                    \n      abort();\n    }\n    lVar8 = *(long *)((long)pvVar11 + 8);\n    if (((*(long *)(lVar8 + 0x68) == 0) && ((*(uint *)(param_1 + 9) & 0x18) == 0x18)) &&\n       (iVar5 = FUN_0011603e(lVar8,*(undefined4 *)((long)param_1 + 0x2c)), iVar5 == 2))\n    goto LAB_001175cf;\n    sVar4 = FUN_00115abc(param_1,pvVar11,0);\n    *(short *)((long)pvVar11 + 0x70) = sVar4;\n    if ((*(uint *)((long)pvVar11 + 0x90) & 0xf000) != 0x4000) goto LAB_001175cf;\n    if (*(long *)((long)pvVar11 + 0x58) != 0) {\n      uVar10 = *(long *)(lVar8 + 0x68) - 1;\n      if (0xfffffffffffffffd < uVar10) {\n        if (sVar4 != 1) {\n          return pvVar11;\n        }\n        goto LAB_001175ea;\n      }\n      *(ulong *)(lVar8 + 0x68) = uVar10;\n      goto LAB_001175cf;\n    }\n    if (sVar4 != 1) {\n      return pvVar11;\n    }\n  }\n  else {\nLAB_001175cf:\n    if (*(short *)((long)pvVar11 + 0x70) != 1) {\n      return pvVar11;\n    }\n    if (*(long *)((long)pvVar11 + 0x58) != 0) goto LAB_001175ea;\n  }" if (parenthesized_expression "(*(short *)((long)pvVar11 + 0x70) == 0xb)" ( (binary_expression "*(short *)((long)pvVar11 + 0x70) == 0xb" (pointer_expression "*(short *)((long)pvVar11 + 0x70)" * (cast_expression "(short *)((long)pvVar11 + 0x70)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)pvVar11 + 0x70)" ( (binary_expression "(long)pvVar11 + 0x70" (cast_expression "(long)pvVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) == number_literal) )) (compound_statement "{\n    if (*(long *)((long)pvVar11 + 0xa8) != 2) {\n      if (*(long *)((long)pvVar11 + 0xa8) == 1) {\n        return pvVar11;\n      }\n                    \n      abort();\n    }\n    lVar8 = *(long *)((long)pvVar11 + 8);\n    if (((*(long *)(lVar8 + 0x68) == 0) && ((*(uint *)(param_1 + 9) & 0x18) == 0x18)) &&\n       (iVar5 = FUN_0011603e(lVar8,*(undefined4 *)((long)param_1 + 0x2c)), iVar5 == 2))\n    goto LAB_001175cf;\n    sVar4 = FUN_00115abc(param_1,pvVar11,0);\n    *(short *)((long)pvVar11 + 0x70) = sVar4;\n    if ((*(uint *)((long)pvVar11 + 0x90) & 0xf000) != 0x4000) goto LAB_001175cf;\n    if (*(long *)((long)pvVar11 + 0x58) != 0) {\n      uVar10 = *(long *)(lVar8 + 0x68) - 1;\n      if (0xfffffffffffffffd < uVar10) {\n        if (sVar4 != 1) {\n          return pvVar11;\n        }\n        goto LAB_001175ea;\n      }\n      *(ulong *)(lVar8 + 0x68) = uVar10;\n      goto LAB_001175cf;\n    }\n    if (sVar4 != 1) {\n      return pvVar11;\n    }\n  }" { (if_statement "if (*(long *)((long)pvVar11 + 0xa8) != 2) {\n      if (*(long *)((long)pvVar11 + 0xa8) == 1) {\n        return pvVar11;\n      }\n                    \n      abort();\n    }" if (parenthesized_expression "(*(long *)((long)pvVar11 + 0xa8) != 2)" ( (binary_expression "*(long *)((long)pvVar11 + 0xa8) != 2" (pointer_expression "*(long *)((long)pvVar11 + 0xa8)" * (cast_expression "(long *)((long)pvVar11 + 0xa8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)pvVar11 + 0xa8)" ( (binary_expression "(long)pvVar11 + 0xa8" (cast_expression "(long)pvVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) != number_literal) )) (compound_statement "{\n      if (*(long *)((long)pvVar11 + 0xa8) == 1) {\n        return pvVar11;\n      }\n                    \n      abort();\n    }" { (if_statement "if (*(long *)((long)pvVar11 + 0xa8) == 1) {\n        return pvVar11;\n      }" if (parenthesized_expression "(*(long *)((long)pvVar11 + 0xa8) == 1)" ( (binary_expression "*(long *)((long)pvVar11 + 0xa8) == 1" (pointer_expression "*(long *)((long)pvVar11 + 0xa8)" * (cast_expression "(long *)((long)pvVar11 + 0xa8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)pvVar11 + 0xa8)" ( (binary_expression "(long)pvVar11 + 0xa8" (cast_expression "(long)pvVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) == number_literal) )) (compound_statement "{\n        return pvVar11;\n      }" { (return_statement "return pvVar11;" return identifier ;) })) (expression_statement "abort();" (call_expression "abort()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "lVar8 = *(long *)((long)pvVar11 + 8);" (assignment_expression "lVar8 = *(long *)((long)pvVar11 + 8)" identifier = (pointer_expression "*(long *)((long)pvVar11 + 8)" * (cast_expression "(long *)((long)pvVar11 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)pvVar11 + 8)" ( (binary_expression "(long)pvVar11 + 8" (cast_expression "(long)pvVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ))))) ;) (if_statement "if (((*(long *)(lVar8 + 0x68) == 0) && ((*(uint *)(param_1 + 9) & 0x18) == 0x18)) &&\n       (iVar5 = FUN_0011603e(lVar8,*(undefined4 *)((long)param_1 + 0x2c)), iVar5 == 2))\n    goto LAB_001175cf;" if (parenthesized_expression "(((*(long *)(lVar8 + 0x68) == 0) && ((*(uint *)(param_1 + 9) & 0x18) == 0x18)) &&\n       (iVar5 = FUN_0011603e(lVar8,*(undefined4 *)((long)param_1 + 0x2c)), iVar5 == 2))" ( (binary_expression "((*(long *)(lVar8 + 0x68) == 0) && ((*(uint *)(param_1 + 9) & 0x18) == 0x18)) &&\n       (iVar5 = FUN_0011603e(lVar8,*(undefined4 *)((long)param_1 + 0x2c)), iVar5 == 2)" (parenthesized_expression "((*(long *)(lVar8 + 0x68) == 0) && ((*(uint *)(param_1 + 9) & 0x18) == 0x18))" ( (binary_expression "(*(long *)(lVar8 + 0x68) == 0) && ((*(uint *)(param_1 + 9) & 0x18) == 0x18)" (parenthesized_expression "(*(long *)(lVar8 + 0x68) == 0)" ( (binary_expression "*(long *)(lVar8 + 0x68) == 0" (pointer_expression "*(long *)(lVar8 + 0x68)" * (cast_expression "(long *)(lVar8 + 0x68)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar8 + 0x68)" ( (binary_expression "lVar8 + 0x68" identifier + number_literal) )))) == number_literal) )) && (parenthesized_expression "((*(uint *)(param_1 + 9) & 0x18) == 0x18)" ( (binary_expression "(*(uint *)(param_1 + 9) & 0x18) == 0x18" (parenthesized_expression "(*(uint *)(param_1 + 9) & 0x18)" ( (binary_expression "*(uint *)(param_1 + 9) & 0x18" (pointer_expression "*(uint *)(param_1 + 9)" * (cast_expression "(uint *)(param_1 + 9)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 9)" ( (binary_expression "param_1 + 9" identifier + number_literal) )))) & number_literal) )) == number_literal) ))) )) && (parenthesized_expression "(iVar5 = FUN_0011603e(lVar8,*(undefined4 *)((long)param_1 + 0x2c)), iVar5 == 2)" ( (comma_expression "iVar5 = FUN_0011603e(lVar8,*(undefined4 *)((long)param_1 + 0x2c)), iVar5 == 2" (assignment_expression "iVar5 = FUN_0011603e(lVar8,*(undefined4 *)((long)param_1 + 0x2c))" identifier = (call_expression "FUN_0011603e(lVar8,*(undefined4 *)((long)param_1 + 0x2c))" identifier (argument_list "(lVar8,*(undefined4 *)((long)param_1 + 0x2c))" ( identifier , (pointer_expression "*(undefined4 *)((long)param_1 + 0x2c)" * (cast_expression "(undefined4 *)((long)param_1 + 0x2c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_1 + 0x2c)" ( (binary_expression "(long)param_1 + 0x2c" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) )))) , (binary_expression "iVar5 == 2" identifier == number_literal)) ))) )) (goto_statement "goto LAB_001175cf;" goto statement_identifier ;)) (expression_statement "sVar4 = FUN_00115abc(param_1,pvVar11,0);" (assignment_expression "sVar4 = FUN_00115abc(param_1,pvVar11,0)" identifier = (call_expression "FUN_00115abc(param_1,pvVar11,0)" identifier (argument_list "(param_1,pvVar11,0)" ( identifier , identifier , number_literal )))) ;) (expression_statement "*(short *)((long)pvVar11 + 0x70) = sVar4;" (assignment_expression "*(short *)((long)pvVar11 + 0x70) = sVar4" (pointer_expression "*(short *)((long)pvVar11 + 0x70)" * (cast_expression "(short *)((long)pvVar11 + 0x70)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)pvVar11 + 0x70)" ( (binary_expression "(long)pvVar11 + 0x70" (cast_expression "(long)pvVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = identifier) ;) (if_statement "if ((*(uint *)((long)pvVar11 + 0x90) & 0xf000) != 0x4000) goto LAB_001175cf;" if (parenthesized_expression "((*(uint *)((long)pvVar11 + 0x90) & 0xf000) != 0x4000)" ( (binary_expression "(*(uint *)((long)pvVar11 + 0x90) & 0xf000) != 0x4000" (parenthesized_expression "(*(uint *)((long)pvVar11 + 0x90) & 0xf000)" ( (binary_expression "*(uint *)((long)pvVar11 + 0x90) & 0xf000" (pointer_expression "*(uint *)((long)pvVar11 + 0x90)" * (cast_expression "(uint *)((long)pvVar11 + 0x90)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)pvVar11 + 0x90)" ( (binary_expression "(long)pvVar11 + 0x90" (cast_expression "(long)pvVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) & number_literal) )) != number_literal) )) (goto_statement "goto LAB_001175cf;" goto statement_identifier ;)) (if_statement "if (*(long *)((long)pvVar11 + 0x58) != 0) {\n      uVar10 = *(long *)(lVar8 + 0x68) - 1;\n      if (0xfffffffffffffffd < uVar10) {\n        if (sVar4 != 1) {\n          return pvVar11;\n        }\n        goto LAB_001175ea;\n      }\n      *(ulong *)(lVar8 + 0x68) = uVar10;\n      goto LAB_001175cf;\n    }" if (parenthesized_expression "(*(long *)((long)pvVar11 + 0x58) != 0)" ( (binary_expression "*(long *)((long)pvVar11 + 0x58) != 0" (pointer_expression "*(long *)((long)pvVar11 + 0x58)" * (cast_expression "(long *)((long)pvVar11 + 0x58)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)pvVar11 + 0x58)" ( (binary_expression "(long)pvVar11 + 0x58" (cast_expression "(long)pvVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) != number_literal) )) (compound_statement "{\n      uVar10 = *(long *)(lVar8 + 0x68) - 1;\n      if (0xfffffffffffffffd < uVar10) {\n        if (sVar4 != 1) {\n          return pvVar11;\n        }\n        goto LAB_001175ea;\n      }\n      *(ulong *)(lVar8 + 0x68) = uVar10;\n      goto LAB_001175cf;\n    }" { (expression_statement "uVar10 = *(long *)(lVar8 + 0x68) - 1;" (assignment_expression "uVar10 = *(long *)(lVar8 + 0x68) - 1" identifier = (binary_expression "*(long *)(lVar8 + 0x68) - 1" (pointer_expression "*(long *)(lVar8 + 0x68)" * (cast_expression "(long *)(lVar8 + 0x68)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar8 + 0x68)" ( (binary_expression "lVar8 + 0x68" identifier + number_literal) )))) - number_literal)) ;) (if_statement "if (0xfffffffffffffffd < uVar10) {\n        if (sVar4 != 1) {\n          return pvVar11;\n        }\n        goto LAB_001175ea;\n      }" if (parenthesized_expression "(0xfffffffffffffffd < uVar10)" ( (binary_expression "0xfffffffffffffffd < uVar10" number_literal < identifier) )) (compound_statement "{\n        if (sVar4 != 1) {\n          return pvVar11;\n        }\n        goto LAB_001175ea;\n      }" { (if_statement "if (sVar4 != 1) {\n          return pvVar11;\n        }" if (parenthesized_expression "(sVar4 != 1)" ( (binary_expression "sVar4 != 1" identifier != number_literal) )) (compound_statement "{\n          return pvVar11;\n        }" { (return_statement "return pvVar11;" return identifier ;) })) (goto_statement "goto LAB_001175ea;" goto statement_identifier ;) })) (expression_statement "*(ulong *)(lVar8 + 0x68) = uVar10;" (assignment_expression "*(ulong *)(lVar8 + 0x68) = uVar10" (pointer_expression "*(ulong *)(lVar8 + 0x68)" * (cast_expression "(ulong *)(lVar8 + 0x68)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar8 + 0x68)" ( (binary_expression "lVar8 + 0x68" identifier + number_literal) )))) = identifier) ;) (goto_statement "goto LAB_001175cf;" goto statement_identifier ;) })) (if_statement "if (sVar4 != 1) {\n      return pvVar11;\n    }" if (parenthesized_expression "(sVar4 != 1)" ( (binary_expression "sVar4 != 1" identifier != number_literal) )) (compound_statement "{\n      return pvVar11;\n    }" { (return_statement "return pvVar11;" return identifier ;) })) }) (else_clause "else {\nLAB_001175cf:\n    if (*(short *)((long)pvVar11 + 0x70) != 1) {\n      return pvVar11;\n    }\n    if (*(long *)((long)pvVar11 + 0x58) != 0) goto LAB_001175ea;\n  }" else (compound_statement "{\nLAB_001175cf:\n    if (*(short *)((long)pvVar11 + 0x70) != 1) {\n      return pvVar11;\n    }\n    if (*(long *)((long)pvVar11 + 0x58) != 0) goto LAB_001175ea;\n  }" { (labeled_statement "LAB_001175cf:\n    if (*(short *)((long)pvVar11 + 0x70) != 1) {\n      return pvVar11;\n    }" statement_identifier : (if_statement "if (*(short *)((long)pvVar11 + 0x70) != 1) {\n      return pvVar11;\n    }" if (parenthesized_expression "(*(short *)((long)pvVar11 + 0x70) != 1)" ( (binary_expression "*(short *)((long)pvVar11 + 0x70) != 1" (pointer_expression "*(short *)((long)pvVar11 + 0x70)" * (cast_expression "(short *)((long)pvVar11 + 0x70)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)pvVar11 + 0x70)" ( (binary_expression "(long)pvVar11 + 0x70" (cast_expression "(long)pvVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) != number_literal) )) (compound_statement "{\n      return pvVar11;\n    }" { (return_statement "return pvVar11;" return identifier ;) }))) (if_statement "if (*(long *)((long)pvVar11 + 0x58) != 0) goto LAB_001175ea;" if (parenthesized_expression "(*(long *)((long)pvVar11 + 0x58) != 0)" ( (binary_expression "*(long *)((long)pvVar11 + 0x58) != 0" (pointer_expression "*(long *)((long)pvVar11 + 0x58)" * (cast_expression "(long *)((long)pvVar11 + 0x58)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)pvVar11 + 0x58)" ( (binary_expression "(long)pvVar11 + 0x58" (cast_expression "(long)pvVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) != number_literal) )) (goto_statement "goto LAB_001175ea;" goto statement_identifier ;)) }))) (expression_statement "param_1[3] = *(long *)((long)pvVar11 + 0x78);" (assignment_expression "param_1[3] = *(long *)((long)pvVar11 + 0x78)" (subscript_expression "param_1[3]" identifier [ number_literal ]) = (pointer_expression "*(long *)((long)pvVar11 + 0x78)" * (cast_expression "(long *)((long)pvVar11 + 0x78)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)pvVar11 + 0x78)" ( (binary_expression "(long)pvVar11 + 0x78" (cast_expression "(long)pvVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ))))) ;) (labeled_statement "LAB_001175ea:\n  cVar2 = FUN_001160b2(param_1,pvVar11);" statement_identifier : (expression_statement "cVar2 = FUN_001160b2(param_1,pvVar11);" (assignment_expression "cVar2 = FUN_001160b2(param_1,pvVar11)" identifier = (call_expression "FUN_001160b2(param_1,pvVar11)" identifier (argument_list "(param_1,pvVar11)" ( identifier , identifier )))) ;)) (if_statement "if (cVar2 == '\0') {\n    piVar7 = __errno_location();\n    *piVar7 = 0xc;\n    pvVar11 = (void *)0x0;\n  }" if (parenthesized_expression "(cVar2 == '\0')" ( (binary_expression "cVar2 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    piVar7 = __errno_location();\n    *piVar7 = 0xc;\n    pvVar11 = (void *)0x0;\n  }" { (expression_statement "piVar7 = __errno_location();" (assignment_expression "piVar7 = __errno_location()" identifier = (call_expression "__errno_location()" identifier (argument_list "()" ( )))) ;) (expression_statement "*piVar7 = 0xc;" (assignment_expression "*piVar7 = 0xc" (pointer_expression "*piVar7" * identifier) = number_literal) ;) (expression_statement "pvVar11 = (void *)0x0;" (assignment_expression "pvVar11 = (void *)0x0" identifier = (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) })) (return_statement "return pvVar11;" return identifier ;) })))
(translation_unit (function_definition TYPE (pointer_declarator * (function_declarator IDENT (parameter_list ( (parameter_declaration (sized_type_specifier long) (pointer_declarator * IDENT)) )))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier short) IDENT ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (return_statement return (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) & LIT) )) != LIT) )) (compound_statement { (return_statement return (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier short) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , LIT )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) = IDENT) ;) (return_statement return 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 LIT < (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier short) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) - LIT) )))) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier short) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) != LIT) )) (goto_statement goto statement_identifier ;)) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , LIT )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier short) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) && (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) == LIT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (pointer_expression & IDENT) )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < 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 (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) = 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 (sized_type_specifier long)) ) IDENT) + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) | LIT)) ;) }))) })) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier short) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (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) ))))) ;)) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) && (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) != (subscript_expression IDENT [ LIT ])) ))) )) (compound_statement { (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 (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) & LIT) )) != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) ))) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression (subscript_expression 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 (sized_type_specifier long)) ) IDENT) + LIT) )))) = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) (return_statement return IDENT ;) })) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , LIT )))) ;)) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (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 (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) & LIT) )) == LIT) )) (compound_statement { (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 (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) != LIT) )) && (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier short) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + 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 (sized_type_specifier long)) ) IDENT) + LIT) )))) = LIT) ;) })) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) (return_statement return IDENT ;) })) (return_statement return (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT) ;) })) }) (else_clause else (compound_statement { (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 *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT & LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , LIT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != 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 (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) | LIT)) ;) (for_statement for ( (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ; (binary_expression IDENT != LIT) ; (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (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) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) ))))) ;) })) })) }))) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) }) (else_clause else (compound_statement { (labeled_statement statement_identifier : (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 (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) )) (compound_statement { (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 (subscript_expression IDENT [ LIT ]) + (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT , LIT ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (goto_statement goto 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 (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) & LIT) )) != LIT) )) (compound_statement { (return_statement return (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT) ;) })) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT)) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (return_statement return (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier short) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) ))))) )))) = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (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 (sized_type_specifier long)) ) 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 (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 (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier short) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) == LIT) )) (compound_statement { (return_statement return (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT) ;) }))) }) (else_clause else (compound_statement { (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 (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) & LIT) )) == LIT) )) (compound_statement { (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 (sized_type_specifier long)) ) IDENT) + LIT) )))) & LIT) )) == LIT) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) , LIT , (pointer_expression & IDENT) )))) , (binary_expression IDENT != 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 (cast_expression ( (type_descriptor (sized_type_specifier long)) ) 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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) | LIT)) ;) (goto_statement goto statement_identifier ;) })) }) (else_clause else (compound_statement { (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 (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 = (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != 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 (cast_expression ( (type_descriptor (sized_type_specifier long)) ) 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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) | LIT)) ;) })) }) (else_clause else (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) , LIT ))) ;) }))) })) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) ))) ;) }))) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier short) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) == LIT) )) (goto_statement goto statement_identifier ;))) }))) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + 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 (sized_type_specifier long)) ) IDENT) + LIT) )))) = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , 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 (sized_type_specifier long)) ) IDENT) + LIT) )))) = 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 { (return_statement return (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT) ;) }))) (return_statement return IDENT ;) })) (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT)) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) | LIT)) ;) (return_statement return (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT) ;) })) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) ;) (expression_statement (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ])) , IDENT , (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) + LIT) ))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( 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 ( (parenthesized_expression ( (binary_expression (binary_expression IDENT == IDENT) && (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == (char_literal ' escape_sequence ')) ))) )) ))) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier short) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) == LIT) )) ;)) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier short) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , LIT )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier short) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) && (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) == LIT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (pointer_expression & IDENT) )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < 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 (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) = 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 (sized_type_specifier long)) ) IDENT) + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) 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 (sized_type_specifier long)) ) IDENT) + LIT) )))) = LIT) ;) })) }))) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) + LIT) ))))) ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) + LIT) )))) + LIT) + IDENT) )))) != (char_literal ' character ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) )))) = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) ))) + LIT) , (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) ))) , (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) + LIT) ))) ;) }))) (goto_statement goto statement_identifier ;) (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (char_literal ' escape_sequence ')) )) (break_statement break ;)) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;))) })) (expression_statement (call_expression IDENT (argument_list ( IDENT , (binary_expression IDENT + LIT) , (unary_expression ~ IDENT) ))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) = (binary_expression (unary_expression ~ IDENT) - LIT)) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;)) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) = IDENT) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor (sized_type_specifier long)) ) 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 (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) != LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) == LIT) )) (compound_statement { (return_statement return IDENT ;) })) (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) )) && (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) == LIT) ))) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) )))) , (binary_expression IDENT == LIT)) ))) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , LIT )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier short) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) = IDENT) ;) (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 (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) & LIT) )) != LIT) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) - LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (return_statement return 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) ;) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (return_statement return IDENT ;) })) }) (else_clause else (compound_statement { (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier short) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) != LIT) )) (compound_statement { (return_statement return IDENT ;) }))) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) != LIT) )) (goto_statement goto statement_identifier ;)) }))) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) ))))) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) })) (return_statement return IDENT ;) })))
(function_definition "void * fts_read(long *param_1)\n\n{\n  char *__s;\n  uint uVar1;\n  char cVar2;\n  undefined2 uVar3;\n  short sVar4;\n  int iVar5;\n  long lVar6;\n  int *piVar7;\n  long lVar8;\n  char *pcVar9;\n  ulong uVar10;\n  void *pvVar11;\n  void *pvVar12;\n  char *pcVar13;\n  byte bVar14;\n  \n  bVar14 = 0;\n  pvVar11 = (void *)*param_1;\n  if (pvVar11 == (void *)0x0) {\n    return (void *)0x0;\n  }\n  if ((*(byte *)((long)param_1 + 0x49) & 0x40) != 0) {\n    return (void *)0x0;\n  }\n  sVar4 = *(short *)((long)pvVar11 + 0x74);\n  *(undefined2 *)((long)pvVar11 + 0x74) = 3;\n  if (sVar4 == 1) {\n    uVar3 = FUN_00115abc(param_1,pvVar11,0);\n    *(undefined2 *)((long)pvVar11 + 0x70) = uVar3;\n    return pvVar11;\n  }\n  pvVar12 = pvVar11;\n  if (sVar4 == 2) {\n    if (1 < (ushort)(*(short *)((long)pvVar11 + 0x70) - 0xcU)) {\n      if (*(short *)((long)pvVar11 + 0x70) != 1) goto LAB_00117717;\n      goto LAB_00117457;\n    }\n    sVar4 = FUN_00115abc(param_1,pvVar11,1);\n    *(short *)((long)pvVar11 + 0x70) = sVar4;\n    if ((sVar4 == 1) && ((*(byte *)(param_1 + 9) & 4) == 0)) {\n      iVar5 = FUN_00115e27(param_1,&DAT_0011ff42);\n      *(int *)((long)pvVar11 + 0x44) = iVar5;\n      if (iVar5 < 0) {\n        piVar7 = __errno_location();\n        *(int *)((long)pvVar11 + 0x40) = *piVar7;\n        *(undefined2 *)((long)pvVar11 + 0x70) = 7;\n      }\n      else {\n        *(ushort *)((long)pvVar11 + 0x72) = *(ushort *)((long)pvVar11 + 0x72) | 2;\n      }\n    }\n  }\n  else {\n    if (*(short *)((long)pvVar11 + 0x70) == 1) {\n      if (sVar4 == 4) goto LAB_00117473;\nLAB_00117457:\n      uVar1 = *(uint *)(param_1 + 9);\n      if (((uVar1 & 0x40) != 0) && (*(long *)((long)pvVar11 + 0x78) != param_1[3])) {\nLAB_00117473:\n        if ((*(byte *)((long)pvVar11 + 0x72) & 2) != 0) {\n          close(*(int *)((long)pvVar11 + 0x44));\n        }\n        if (param_1[1] != 0) {\n          FUN_00115e7a();\n          param_1[1] = 0;\n        }\n        *(undefined2 *)((long)pvVar11 + 0x70) = 6;\n        FUN_00116412(param_1,pvVar11);\n        return pvVar11;\n      }\n      if (param_1[1] == 0) {\nLAB_00117628:\n        lVar8 = FUN_001164c9(param_1,3);\n        param_1[1] = lVar8;\n        if (lVar8 == 0) {\n          if ((*(byte *)((long)param_1 + 0x49) & 0x40) == 0) {\n            if ((*(int *)((long)pvVar11 + 0x40) != 0) && (*(short *)((long)pvVar11 + 0x70) != 4)) {\n              *(undefined2 *)((long)pvVar11 + 0x70) = 7;\n            }\n            FUN_00116412(param_1,pvVar11);\n            return pvVar11;\n          }\n          return (void *)0x0;\n        }\n      }\n      else {\n        if ((uVar1 & 0x2000) != 0) {\n          *(uint *)(param_1 + 9) = uVar1 & 0xffffdfff;\n          FUN_00115e7a();\n          param_1[1] = 0;\n          goto LAB_00117628;\n        }\n        iVar5 = FUN_00116203(param_1,pvVar11,0xffffffff,*(undefined8 *)((long)pvVar11 + 0x30));\n        if (iVar5 != 0) {\n          piVar7 = __errno_location();\n          *(int *)((long)pvVar11 + 0x40) = *piVar7;\n          *(ushort *)((long)pvVar11 + 0x72) = *(ushort *)((long)pvVar11 + 0x72) | 1;\n          for (lVar8 = param_1[1]; lVar8 != 0; lVar8 = *(long *)(lVar8 + 0x10)) {\n            *(undefined8 *)(lVar8 + 0x30) = *(undefined8 *)(*(long *)(lVar8 + 8) + 0x30);\n          }\n        }\n      }\n      pvVar11 = (void *)param_1[1];\n      param_1[1] = 0;\n    }\n    else {\nLAB_00117717:\n      do {\n        pvVar11 = *(void **)((long)pvVar12 + 0x10);\n        if (pvVar11 == (void *)0x0) {\n          lVar8 = *(long *)((long)pvVar12 + 8);\n          if (*(long *)(lVar8 + 0x18) != 0) {\n            *param_1 = lVar8;\n            *(undefined1 *)(param_1[4] + *(long *)(lVar8 + 0x48)) = 0;\n            pvVar11 = (void *)FUN_001164c9(param_1,3);\n            if (pvVar11 != (void *)0x0) {\n              free(pvVar12);\n              goto LAB_00117587;\n            }\n            if ((*(byte *)((long)param_1 + 0x49) & 0x40) != 0) {\n              return (void *)0x0;\n            }\n          }\n          pvVar11 = *(void **)((long)pvVar12 + 8);\n          *param_1 = (long)pvVar11;\n          free(pvVar12);\n          if (*(long *)((long)pvVar11 + 0x58) == -1) {\n            free(pvVar11);\n            piVar7 = __errno_location();\n            *piVar7 = 0;\n            *param_1 = 0;\n            return (void *)0x0;\n          }\n          if (*(short *)((long)pvVar11 + 0x70) == 0xb) {\n                    \n            abort();\n          }\n          *(undefined1 *)(param_1[4] + *(long *)((long)pvVar11 + 0x48)) = 0;\n          if (*(long *)((long)pvVar11 + 0x58) == 0) {\n            iVar5 = FUN_001161af(param_1);\n            if (iVar5 == 0) goto LAB_001177a7;\n            piVar7 = __errno_location();\n            *(int *)((long)pvVar11 + 0x40) = *piVar7;\n            *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\nLAB_001179e4:\n            if (*(short *)((long)pvVar11 + 0x70) == 2) {\n              return (void *)0x0;\n            }\n          }\n          else {\n            if ((*(ushort *)((long)pvVar11 + 0x72) & 2) == 0) {\n              if (((*(ushort *)((long)pvVar11 + 0x72) & 1) == 0) &&\n                 (iVar5 = FUN_00116203(param_1,*(undefined8 *)((long)pvVar11 + 8),0xffffffff,\n                                       &DAT_0011ff41), iVar5 != 0)) {\n                piVar7 = __errno_location();\n                *(int *)((long)pvVar11 + 0x40) = *piVar7;\n                *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\n                goto LAB_001179e4;\n              }\n            }\n            else {\n              if ((*(uint *)(param_1 + 9) & 4) == 0) {\n                if ((*(uint *)(param_1 + 9) & 0x200) == 0) {\n                  iVar5 = fchdir(*(int *)((long)pvVar11 + 0x44));\n                  if (iVar5 != 0) {\n                    piVar7 = __errno_location();\n                    *(int *)((long)pvVar11 + 0x40) = *piVar7;\n                    *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\n                  }\n                }\n                else {\n                  FUN_0011615c(param_1,*(undefined4 *)((long)pvVar11 + 0x44),1);\n                }\n              }\n              close(*(int *)((long)pvVar11 + 0x44));\n            }\nLAB_001177a7:\n            if (*(short *)((long)pvVar11 + 0x70) == 2) goto LAB_00117a88;\n          }\n          if (*(int *)((long)pvVar11 + 0x40) == 0) {\n            *(undefined2 *)((long)pvVar11 + 0x70) = 6;\n            FUN_00116412(param_1,pvVar11);\n          }\n          else {\n            *(undefined2 *)((long)pvVar11 + 0x70) = 7;\n          }\nLAB_00117a88:\n          if ((*(uint *)(param_1 + 9) & 0x4000) != 0) {\n            return (void *)0x0;\n          }\n          return pvVar11;\n        }\n        *param_1 = (long)pvVar11;\n        free(pvVar12);\n        if (*(long *)((long)pvVar11 + 0x58) == 0) {\n          iVar5 = FUN_001161af(param_1);\n          if (iVar5 != 0) {\n            *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\n            return (void *)0x0;\n          }\n          FUN_00115eb3(param_1);\n          *(long *)((long)pvVar11 + 0x48) = *(long *)((long)pvVar11 + 0x60);\n          __s = (char *)((long)pvVar11 + 0x108);\n          memmove((void *)param_1[4],__s,*(long *)((long)pvVar11 + 0x60) + 1);\n          pcVar9 = strrchr(__s,0x2f);\n          if ((pcVar9 == (char *)0x0) || ((__s == pcVar9 && (pcVar9[1] == '\0'))))\n          goto LAB_0011784f;\n          uVar10 = 0xffffffffffffffff;\n          pcVar13 = pcVar9 + 1;\n          goto code_r0x00117837;\n        }\n        pvVar12 = pvVar11;\n      } while (*(short *)((long)pvVar11 + 0x74) == 4);\n      if (*(short *)((long)pvVar11 + 0x74) == 2) {\n        sVar4 = FUN_00115abc(param_1,pvVar11,1);\n        *(short *)((long)pvVar11 + 0x70) = sVar4;\n        if ((sVar4 == 1) && ((*(byte *)(param_1 + 9) & 4) == 0)) {\n          iVar5 = FUN_00115e27(param_1,&DAT_0011ff42);\n          *(int *)((long)pvVar11 + 0x44) = iVar5;\n          if (iVar5 < 0) {\n            piVar7 = __errno_location();\n            *(int *)((long)pvVar11 + 0x40) = *piVar7;\n            *(undefined2 *)((long)pvVar11 + 0x70) = 7;\n          }\n          else {\n            *(ushort *)((long)pvVar11 + 0x72) = *(ushort *)((long)pvVar11 + 0x72) | 2;\n          }\n        }\n        *(undefined2 *)((long)pvVar11 + 0x74) = 3;\n      }\n    }\nLAB_00117587:\n    lVar8 = *(long *)(*(long *)((long)pvVar11 + 8) + 0x48);\n    lVar6 = lVar8 + -1;\n    if (*(char *)(*(long *)(*(long *)((long)pvVar11 + 8) + 0x38) + -1 + lVar8) != '/') {\n      lVar6 = lVar8;\n    }\n    lVar8 = param_1[4];\n    *(undefined1 *)(lVar6 + lVar8) = 0x2f;\n    memmove((undefined1 *)(lVar6 + lVar8) + 1,(void *)((long)pvVar11 + 0x108),\n            *(long *)((long)pvVar11 + 0x60) + 1);\n  }\n  goto LAB_001175c0;\n  while( true ) {\n    uVar10 = uVar10 - 1;\n    cVar2 = *pcVar13;\n    pcVar13 = pcVar13 + (ulong)bVar14 * -2 + 1;\n    if (cVar2 == '\0') break;\ncode_r0x00117837:\n    if (uVar10 == 0) break;\n  }\n  memmove(__s,pcVar9 + 1,~uVar10);\n  *(ulong *)((long)pvVar11 + 0x60) = ~uVar10 - 1;\nLAB_0011784f:\n  lVar8 = param_1[4];\n  *(long *)((long)pvVar11 + 0x38) = lVar8;\n  *(long *)((long)pvVar11 + 0x30) = lVar8;\n  FUN_00115dc3(param_1);\nLAB_001175c0:\n  *param_1 = (long)pvVar11;\n  if (*(short *)((long)pvVar11 + 0x70) == 0xb) {\n    if (*(long *)((long)pvVar11 + 0xa8) != 2) {\n      if (*(long *)((long)pvVar11 + 0xa8) == 1) {\n        return pvVar11;\n      }\n                    \n      abort();\n    }\n    lVar8 = *(long *)((long)pvVar11 + 8);\n    if (((*(long *)(lVar8 + 0x68) == 0) && ((*(uint *)(param_1 + 9) & 0x18) == 0x18)) &&\n       (iVar5 = FUN_0011603e(lVar8,*(undefined4 *)((long)param_1 + 0x2c)), iVar5 == 2))\n    goto LAB_001175cf;\n    sVar4 = FUN_00115abc(param_1,pvVar11,0);\n    *(short *)((long)pvVar11 + 0x70) = sVar4;\n    if ((*(uint *)((long)pvVar11 + 0x90) & 0xf000) != 0x4000) goto LAB_001175cf;\n    if (*(long *)((long)pvVar11 + 0x58) != 0) {\n      uVar10 = *(long *)(lVar8 + 0x68) - 1;\n      if (0xfffffffffffffffd < uVar10) {\n        if (sVar4 != 1) {\n          return pvVar11;\n        }\n        goto LAB_001175ea;\n      }\n      *(ulong *)(lVar8 + 0x68) = uVar10;\n      goto LAB_001175cf;\n    }\n    if (sVar4 != 1) {\n      return pvVar11;\n    }\n  }\n  else {\nLAB_001175cf:\n    if (*(short *)((long)pvVar11 + 0x70) != 1) {\n      return pvVar11;\n    }\n    if (*(long *)((long)pvVar11 + 0x58) != 0) goto LAB_001175ea;\n  }\n  param_1[3] = *(long *)((long)pvVar11 + 0x78);\nLAB_001175ea:\n  cVar2 = FUN_001160b2(param_1,pvVar11);\n  if (cVar2 == '\0') {\n    piVar7 = __errno_location();\n    *piVar7 = 0xc;\n    pvVar11 = (void *)0x0;\n  }\n  return pvVar11;\n}" (primitive_type "void") (pointer_declarator "* fts_read(long *param_1)" (* "*") (function_declarator "fts_read(long *param_1)" (identifier "fts_read") (parameter_list "(long *param_1)" (( "(") (parameter_declaration "long *param_1" (sized_type_specifier "long" (long "long")) (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) () ")")))) (compound_statement "{\n  char *__s;\n  uint uVar1;\n  char cVar2;\n  undefined2 uVar3;\n  short sVar4;\n  int iVar5;\n  long lVar6;\n  int *piVar7;\n  long lVar8;\n  char *pcVar9;\n  ulong uVar10;\n  void *pvVar11;\n  void *pvVar12;\n  char *pcVar13;\n  byte bVar14;\n  \n  bVar14 = 0;\n  pvVar11 = (void *)*param_1;\n  if (pvVar11 == (void *)0x0) {\n    return (void *)0x0;\n  }\n  if ((*(byte *)((long)param_1 + 0x49) & 0x40) != 0) {\n    return (void *)0x0;\n  }\n  sVar4 = *(short *)((long)pvVar11 + 0x74);\n  *(undefined2 *)((long)pvVar11 + 0x74) = 3;\n  if (sVar4 == 1) {\n    uVar3 = FUN_00115abc(param_1,pvVar11,0);\n    *(undefined2 *)((long)pvVar11 + 0x70) = uVar3;\n    return pvVar11;\n  }\n  pvVar12 = pvVar11;\n  if (sVar4 == 2) {\n    if (1 < (ushort)(*(short *)((long)pvVar11 + 0x70) - 0xcU)) {\n      if (*(short *)((long)pvVar11 + 0x70) != 1) goto LAB_00117717;\n      goto LAB_00117457;\n    }\n    sVar4 = FUN_00115abc(param_1,pvVar11,1);\n    *(short *)((long)pvVar11 + 0x70) = sVar4;\n    if ((sVar4 == 1) && ((*(byte *)(param_1 + 9) & 4) == 0)) {\n      iVar5 = FUN_00115e27(param_1,&DAT_0011ff42);\n      *(int *)((long)pvVar11 + 0x44) = iVar5;\n      if (iVar5 < 0) {\n        piVar7 = __errno_location();\n        *(int *)((long)pvVar11 + 0x40) = *piVar7;\n        *(undefined2 *)((long)pvVar11 + 0x70) = 7;\n      }\n      else {\n        *(ushort *)((long)pvVar11 + 0x72) = *(ushort *)((long)pvVar11 + 0x72) | 2;\n      }\n    }\n  }\n  else {\n    if (*(short *)((long)pvVar11 + 0x70) == 1) {\n      if (sVar4 == 4) goto LAB_00117473;\nLAB_00117457:\n      uVar1 = *(uint *)(param_1 + 9);\n      if (((uVar1 & 0x40) != 0) && (*(long *)((long)pvVar11 + 0x78) != param_1[3])) {\nLAB_00117473:\n        if ((*(byte *)((long)pvVar11 + 0x72) & 2) != 0) {\n          close(*(int *)((long)pvVar11 + 0x44));\n        }\n        if (param_1[1] != 0) {\n          FUN_00115e7a();\n          param_1[1] = 0;\n        }\n        *(undefined2 *)((long)pvVar11 + 0x70) = 6;\n        FUN_00116412(param_1,pvVar11);\n        return pvVar11;\n      }\n      if (param_1[1] == 0) {\nLAB_00117628:\n        lVar8 = FUN_001164c9(param_1,3);\n        param_1[1] = lVar8;\n        if (lVar8 == 0) {\n          if ((*(byte *)((long)param_1 + 0x49) & 0x40) == 0) {\n            if ((*(int *)((long)pvVar11 + 0x40) != 0) && (*(short *)((long)pvVar11 + 0x70) != 4)) {\n              *(undefined2 *)((long)pvVar11 + 0x70) = 7;\n            }\n            FUN_00116412(param_1,pvVar11);\n            return pvVar11;\n          }\n          return (void *)0x0;\n        }\n      }\n      else {\n        if ((uVar1 & 0x2000) != 0) {\n          *(uint *)(param_1 + 9) = uVar1 & 0xffffdfff;\n          FUN_00115e7a();\n          param_1[1] = 0;\n          goto LAB_00117628;\n        }\n        iVar5 = FUN_00116203(param_1,pvVar11,0xffffffff,*(undefined8 *)((long)pvVar11 + 0x30));\n        if (iVar5 != 0) {\n          piVar7 = __errno_location();\n          *(int *)((long)pvVar11 + 0x40) = *piVar7;\n          *(ushort *)((long)pvVar11 + 0x72) = *(ushort *)((long)pvVar11 + 0x72) | 1;\n          for (lVar8 = param_1[1]; lVar8 != 0; lVar8 = *(long *)(lVar8 + 0x10)) {\n            *(undefined8 *)(lVar8 + 0x30) = *(undefined8 *)(*(long *)(lVar8 + 8) + 0x30);\n          }\n        }\n      }\n      pvVar11 = (void *)param_1[1];\n      param_1[1] = 0;\n    }\n    else {\nLAB_00117717:\n      do {\n        pvVar11 = *(void **)((long)pvVar12 + 0x10);\n        if (pvVar11 == (void *)0x0) {\n          lVar8 = *(long *)((long)pvVar12 + 8);\n          if (*(long *)(lVar8 + 0x18) != 0) {\n            *param_1 = lVar8;\n            *(undefined1 *)(param_1[4] + *(long *)(lVar8 + 0x48)) = 0;\n            pvVar11 = (void *)FUN_001164c9(param_1,3);\n            if (pvVar11 != (void *)0x0) {\n              free(pvVar12);\n              goto LAB_00117587;\n            }\n            if ((*(byte *)((long)param_1 + 0x49) & 0x40) != 0) {\n              return (void *)0x0;\n            }\n          }\n          pvVar11 = *(void **)((long)pvVar12 + 8);\n          *param_1 = (long)pvVar11;\n          free(pvVar12);\n          if (*(long *)((long)pvVar11 + 0x58) == -1) {\n            free(pvVar11);\n            piVar7 = __errno_location();\n            *piVar7 = 0;\n            *param_1 = 0;\n            return (void *)0x0;\n          }\n          if (*(short *)((long)pvVar11 + 0x70) == 0xb) {\n                    \n            abort();\n          }\n          *(undefined1 *)(param_1[4] + *(long *)((long)pvVar11 + 0x48)) = 0;\n          if (*(long *)((long)pvVar11 + 0x58) == 0) {\n            iVar5 = FUN_001161af(param_1);\n            if (iVar5 == 0) goto LAB_001177a7;\n            piVar7 = __errno_location();\n            *(int *)((long)pvVar11 + 0x40) = *piVar7;\n            *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\nLAB_001179e4:\n            if (*(short *)((long)pvVar11 + 0x70) == 2) {\n              return (void *)0x0;\n            }\n          }\n          else {\n            if ((*(ushort *)((long)pvVar11 + 0x72) & 2) == 0) {\n              if (((*(ushort *)((long)pvVar11 + 0x72) & 1) == 0) &&\n                 (iVar5 = FUN_00116203(param_1,*(undefined8 *)((long)pvVar11 + 8),0xffffffff,\n                                       &DAT_0011ff41), iVar5 != 0)) {\n                piVar7 = __errno_location();\n                *(int *)((long)pvVar11 + 0x40) = *piVar7;\n                *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\n                goto LAB_001179e4;\n              }\n            }\n            else {\n              if ((*(uint *)(param_1 + 9) & 4) == 0) {\n                if ((*(uint *)(param_1 + 9) & 0x200) == 0) {\n                  iVar5 = fchdir(*(int *)((long)pvVar11 + 0x44));\n                  if (iVar5 != 0) {\n                    piVar7 = __errno_location();\n                    *(int *)((long)pvVar11 + 0x40) = *piVar7;\n                    *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\n                  }\n                }\n                else {\n                  FUN_0011615c(param_1,*(undefined4 *)((long)pvVar11 + 0x44),1);\n                }\n              }\n              close(*(int *)((long)pvVar11 + 0x44));\n            }\nLAB_001177a7:\n            if (*(short *)((long)pvVar11 + 0x70) == 2) goto LAB_00117a88;\n          }\n          if (*(int *)((long)pvVar11 + 0x40) == 0) {\n            *(undefined2 *)((long)pvVar11 + 0x70) = 6;\n            FUN_00116412(param_1,pvVar11);\n          }\n          else {\n            *(undefined2 *)((long)pvVar11 + 0x70) = 7;\n          }\nLAB_00117a88:\n          if ((*(uint *)(param_1 + 9) & 0x4000) != 0) {\n            return (void *)0x0;\n          }\n          return pvVar11;\n        }\n        *param_1 = (long)pvVar11;\n        free(pvVar12);\n        if (*(long *)((long)pvVar11 + 0x58) == 0) {\n          iVar5 = FUN_001161af(param_1);\n          if (iVar5 != 0) {\n            *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\n            return (void *)0x0;\n          }\n          FUN_00115eb3(param_1);\n          *(long *)((long)pvVar11 + 0x48) = *(long *)((long)pvVar11 + 0x60);\n          __s = (char *)((long)pvVar11 + 0x108);\n          memmove((void *)param_1[4],__s,*(long *)((long)pvVar11 + 0x60) + 1);\n          pcVar9 = strrchr(__s,0x2f);\n          if ((pcVar9 == (char *)0x0) || ((__s == pcVar9 && (pcVar9[1] == '\0'))))\n          goto LAB_0011784f;\n          uVar10 = 0xffffffffffffffff;\n          pcVar13 = pcVar9 + 1;\n          goto code_r0x00117837;\n        }\n        pvVar12 = pvVar11;\n      } while (*(short *)((long)pvVar11 + 0x74) == 4);\n      if (*(short *)((long)pvVar11 + 0x74) == 2) {\n        sVar4 = FUN_00115abc(param_1,pvVar11,1);\n        *(short *)((long)pvVar11 + 0x70) = sVar4;\n        if ((sVar4 == 1) && ((*(byte *)(param_1 + 9) & 4) == 0)) {\n          iVar5 = FUN_00115e27(param_1,&DAT_0011ff42);\n          *(int *)((long)pvVar11 + 0x44) = iVar5;\n          if (iVar5 < 0) {\n            piVar7 = __errno_location();\n            *(int *)((long)pvVar11 + 0x40) = *piVar7;\n            *(undefined2 *)((long)pvVar11 + 0x70) = 7;\n          }\n          else {\n            *(ushort *)((long)pvVar11 + 0x72) = *(ushort *)((long)pvVar11 + 0x72) | 2;\n          }\n        }\n        *(undefined2 *)((long)pvVar11 + 0x74) = 3;\n      }\n    }\nLAB_00117587:\n    lVar8 = *(long *)(*(long *)((long)pvVar11 + 8) + 0x48);\n    lVar6 = lVar8 + -1;\n    if (*(char *)(*(long *)(*(long *)((long)pvVar11 + 8) + 0x38) + -1 + lVar8) != '/') {\n      lVar6 = lVar8;\n    }\n    lVar8 = param_1[4];\n    *(undefined1 *)(lVar6 + lVar8) = 0x2f;\n    memmove((undefined1 *)(lVar6 + lVar8) + 1,(void *)((long)pvVar11 + 0x108),\n            *(long *)((long)pvVar11 + 0x60) + 1);\n  }\n  goto LAB_001175c0;\n  while( true ) {\n    uVar10 = uVar10 - 1;\n    cVar2 = *pcVar13;\n    pcVar13 = pcVar13 + (ulong)bVar14 * -2 + 1;\n    if (cVar2 == '\0') break;\ncode_r0x00117837:\n    if (uVar10 == 0) break;\n  }\n  memmove(__s,pcVar9 + 1,~uVar10);\n  *(ulong *)((long)pvVar11 + 0x60) = ~uVar10 - 1;\nLAB_0011784f:\n  lVar8 = param_1[4];\n  *(long *)((long)pvVar11 + 0x38) = lVar8;\n  *(long *)((long)pvVar11 + 0x30) = lVar8;\n  FUN_00115dc3(param_1);\nLAB_001175c0:\n  *param_1 = (long)pvVar11;\n  if (*(short *)((long)pvVar11 + 0x70) == 0xb) {\n    if (*(long *)((long)pvVar11 + 0xa8) != 2) {\n      if (*(long *)((long)pvVar11 + 0xa8) == 1) {\n        return pvVar11;\n      }\n                    \n      abort();\n    }\n    lVar8 = *(long *)((long)pvVar11 + 8);\n    if (((*(long *)(lVar8 + 0x68) == 0) && ((*(uint *)(param_1 + 9) & 0x18) == 0x18)) &&\n       (iVar5 = FUN_0011603e(lVar8,*(undefined4 *)((long)param_1 + 0x2c)), iVar5 == 2))\n    goto LAB_001175cf;\n    sVar4 = FUN_00115abc(param_1,pvVar11,0);\n    *(short *)((long)pvVar11 + 0x70) = sVar4;\n    if ((*(uint *)((long)pvVar11 + 0x90) & 0xf000) != 0x4000) goto LAB_001175cf;\n    if (*(long *)((long)pvVar11 + 0x58) != 0) {\n      uVar10 = *(long *)(lVar8 + 0x68) - 1;\n      if (0xfffffffffffffffd < uVar10) {\n        if (sVar4 != 1) {\n          return pvVar11;\n        }\n        goto LAB_001175ea;\n      }\n      *(ulong *)(lVar8 + 0x68) = uVar10;\n      goto LAB_001175cf;\n    }\n    if (sVar4 != 1) {\n      return pvVar11;\n    }\n  }\n  else {\nLAB_001175cf:\n    if (*(short *)((long)pvVar11 + 0x70) != 1) {\n      return pvVar11;\n    }\n    if (*(long *)((long)pvVar11 + 0x58) != 0) goto LAB_001175ea;\n  }\n  param_1[3] = *(long *)((long)pvVar11 + 0x78);\nLAB_001175ea:\n  cVar2 = FUN_001160b2(param_1,pvVar11);\n  if (cVar2 == '\0') {\n    piVar7 = __errno_location();\n    *piVar7 = 0xc;\n    pvVar11 = (void *)0x0;\n  }\n  return pvVar11;\n}" ({ "{") (declaration "char *__s;" (primitive_type "char") (pointer_declarator "*__s" (* "*") (identifier "__s")) (; ";")) (declaration "uint uVar1;" (type_identifier "uint") (identifier "uVar1") (; ";")) (declaration "char cVar2;" (primitive_type "char") (identifier "cVar2") (; ";")) (declaration "undefined2 uVar3;" (type_identifier "undefined2") (identifier "uVar3") (; ";")) (declaration "short sVar4;" (sized_type_specifier "short" (short "short")) (identifier "sVar4") (; ";")) (declaration "int iVar5;" (primitive_type "int") (identifier "iVar5") (; ";")) (declaration "long lVar6;" (sized_type_specifier "long" (long "long")) (identifier "lVar6") (; ";")) (declaration "int *piVar7;" (primitive_type "int") (pointer_declarator "*piVar7" (* "*") (identifier "piVar7")) (; ";")) (declaration "long lVar8;" (sized_type_specifier "long" (long "long")) (identifier "lVar8") (; ";")) (declaration "char *pcVar9;" (primitive_type "char") (pointer_declarator "*pcVar9" (* "*") (identifier "pcVar9")) (; ";")) (declaration "ulong uVar10;" (type_identifier "ulong") (identifier "uVar10") (; ";")) (declaration "void *pvVar11;" (primitive_type "void") (pointer_declarator "*pvVar11" (* "*") (identifier "pvVar11")) (; ";")) (declaration "void *pvVar12;" (primitive_type "void") (pointer_declarator "*pvVar12" (* "*") (identifier "pvVar12")) (; ";")) (declaration "char *pcVar13;" (primitive_type "char") (pointer_declarator "*pcVar13" (* "*") (identifier "pcVar13")) (; ";")) (declaration "byte bVar14;" (type_identifier "byte") (identifier "bVar14") (; ";")) (expression_statement "bVar14 = 0;" (assignment_expression "bVar14 = 0" (identifier "bVar14") (= "=") (number_literal "0")) (; ";")) (expression_statement "pvVar11 = (void *)*param_1;" (assignment_expression "pvVar11 = (void *)*param_1" (identifier "pvVar11") (= "=") (cast_expression "(void *)*param_1" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*param_1" (* "*") (identifier "param_1")))) (; ";")) (if_statement "if (pvVar11 == (void *)0x0) {\n    return (void *)0x0;\n  }" (if "if") (parenthesized_expression "(pvVar11 == (void *)0x0)" (( "(") (binary_expression "pvVar11 == (void *)0x0" (identifier "pvVar11") (== "==") (cast_expression "(void *)0x0" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    return (void *)0x0;\n  }" ({ "{") (return_statement "return (void *)0x0;" (return "return") (cast_expression "(void *)0x0" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")) (; ";")) (} "}"))) (if_statement "if ((*(byte *)((long)param_1 + 0x49) & 0x40) != 0) {\n    return (void *)0x0;\n  }" (if "if") (parenthesized_expression "((*(byte *)((long)param_1 + 0x49) & 0x40) != 0)" (( "(") (binary_expression "(*(byte *)((long)param_1 + 0x49) & 0x40) != 0" (parenthesized_expression "(*(byte *)((long)param_1 + 0x49) & 0x40)" (( "(") (binary_expression "*(byte *)((long)param_1 + 0x49) & 0x40" (pointer_expression "*(byte *)((long)param_1 + 0x49)" (* "*") (cast_expression "(byte *)((long)param_1 + 0x49)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)param_1 + 0x49)" (( "(") (binary_expression "(long)param_1 + 0x49" (cast_expression "(long)param_1" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_1")) (+ "+") (number_literal "0x49")) () ")")))) (& "&") (number_literal "0x40")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    return (void *)0x0;\n  }" ({ "{") (return_statement "return (void *)0x0;" (return "return") (cast_expression "(void *)0x0" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")) (; ";")) (} "}"))) (expression_statement "sVar4 = *(short *)((long)pvVar11 + 0x74);" (assignment_expression "sVar4 = *(short *)((long)pvVar11 + 0x74)" (identifier "sVar4") (= "=") (pointer_expression "*(short *)((long)pvVar11 + 0x74)" (* "*") (cast_expression "(short *)((long)pvVar11 + 0x74)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)pvVar11 + 0x74)" (( "(") (binary_expression "(long)pvVar11 + 0x74" (cast_expression "(long)pvVar11" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "pvVar11")) (+ "+") (number_literal "0x74")) () ")"))))) (; ";")) (expression_statement "*(undefined2 *)((long)pvVar11 + 0x74) = 3;" (assignment_expression "*(undefined2 *)((long)pvVar11 + 0x74) = 3" (pointer_expression "*(undefined2 *)((long)pvVar11 + 0x74)" (* "*") (cast_expression "(undefined2 *)((long)pvVar11 + 0x74)" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)pvVar11 + 0x74)" (( "(") (binary_expression "(long)pvVar11 + 0x74" (cast_expression "(long)pvVar11" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "pvVar11")) (+ "+") (number_literal "0x74")) () ")")))) (= "=") (number_literal "3")) (; ";")) (if_statement "if (sVar4 == 1) {\n    uVar3 = FUN_00115abc(param_1,pvVar11,0);\n    *(undefined2 *)((long)pvVar11 + 0x70) = uVar3;\n    return pvVar11;\n  }" (if "if") (parenthesized_expression "(sVar4 == 1)" (( "(") (binary_expression "sVar4 == 1" (identifier "sVar4") (== "==") (number_literal "1")) () ")")) (compound_statement "{\n    uVar3 = FUN_00115abc(param_1,pvVar11,0);\n    *(undefined2 *)((long)pvVar11 + 0x70) = uVar3;\n    return pvVar11;\n  }" ({ "{") (expression_statement "uVar3 = FUN_00115abc(param_1,pvVar11,0);" (assignment_expression "uVar3 = FUN_00115abc(param_1,pvVar11,0)" (identifier "uVar3") (= "=") (call_expression "FUN_00115abc(param_1,pvVar11,0)" (identifier "FUN_00115abc") (argument_list "(param_1,pvVar11,0)" (( "(") (identifier "param_1") (, ",") (identifier "pvVar11") (, ",") (number_literal "0") () ")")))) (; ";")) (expression_statement "*(undefined2 *)((long)pvVar11 + 0x70) = uVar3;" (assignment_expression "*(undefined2 *)((long)pvVar11 + 0x70) = uVar3" (pointer_expression "*(undefined2 *)((long)pvVar11 + 0x70)" (* "*") (cast_expression "(undefined2 *)((long)pvVar11 + 0x70)" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)pvVar11 + 0x70)" (( "(") (binary_expression "(long)pvVar11 + 0x70" (cast_expression "(long)pvVar11" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "pvVar11")) (+ "+") (number_literal "0x70")) () ")")))) (= "=") (identifier "uVar3")) (; ";")) (return_statement "return pvVar11;" (return "return") (identifier "pvVar11") (; ";")) (} "}"))) (expression_statement "pvVar12 = pvVar11;" (assignment_expression "pvVar12 = pvVar11" (identifier "pvVar12") (= "=") (identifier "pvVar11")) (; ";")) (if_statement "if (sVar4 == 2) {\n    if (1 < (ushort)(*(short *)((long)pvVar11 + 0x70) - 0xcU)) {\n      if (*(short *)((long)pvVar11 + 0x70) != 1) goto LAB_00117717;\n      goto LAB_00117457;\n    }\n    sVar4 = FUN_00115abc(param_1,pvVar11,1);\n    *(short *)((long)pvVar11 + 0x70) = sVar4;\n    if ((sVar4 == 1) && ((*(byte *)(param_1 + 9) & 4) == 0)) {\n      iVar5 = FUN_00115e27(param_1,&DAT_0011ff42);\n      *(int *)((long)pvVar11 + 0x44) = iVar5;\n      if (iVar5 < 0) {\n        piVar7 = __errno_location();\n        *(int *)((long)pvVar11 + 0x40) = *piVar7;\n        *(undefined2 *)((long)pvVar11 + 0x70) = 7;\n      }\n      else {\n        *(ushort *)((long)pvVar11 + 0x72) = *(ushort *)((long)pvVar11 + 0x72) | 2;\n      }\n    }\n  }\n  else {\n    if (*(short *)((long)pvVar11 + 0x70) == 1) {\n      if (sVar4 == 4) goto LAB_00117473;\nLAB_00117457:\n      uVar1 = *(uint *)(param_1 + 9);\n      if (((uVar1 & 0x40) != 0) && (*(long *)((long)pvVar11 + 0x78) != param_1[3])) {\nLAB_00117473:\n        if ((*(byte *)((long)pvVar11 + 0x72) & 2) != 0) {\n          close(*(int *)((long)pvVar11 + 0x44));\n        }\n        if (param_1[1] != 0) {\n          FUN_00115e7a();\n          param_1[1] = 0;\n        }\n        *(undefined2 *)((long)pvVar11 + 0x70) = 6;\n        FUN_00116412(param_1,pvVar11);\n        return pvVar11;\n      }\n      if (param_1[1] == 0) {\nLAB_00117628:\n        lVar8 = FUN_001164c9(param_1,3);\n        param_1[1] = lVar8;\n        if (lVar8 == 0) {\n          if ((*(byte *)((long)param_1 + 0x49) & 0x40) == 0) {\n            if ((*(int *)((long)pvVar11 + 0x40) != 0) && (*(short *)((long)pvVar11 + 0x70) != 4)) {\n              *(undefined2 *)((long)pvVar11 + 0x70) = 7;\n            }\n            FUN_00116412(param_1,pvVar11);\n            return pvVar11;\n          }\n          return (void *)0x0;\n        }\n      }\n      else {\n        if ((uVar1 & 0x2000) != 0) {\n          *(uint *)(param_1 + 9) = uVar1 & 0xffffdfff;\n          FUN_00115e7a();\n          param_1[1] = 0;\n          goto LAB_00117628;\n        }\n        iVar5 = FUN_00116203(param_1,pvVar11,0xffffffff,*(undefined8 *)((long)pvVar11 + 0x30));\n        if (iVar5 != 0) {\n          piVar7 = __errno_location();\n          *(int *)((long)pvVar11 + 0x40) = *piVar7;\n          *(ushort *)((long)pvVar11 + 0x72) = *(ushort *)((long)pvVar11 + 0x72) | 1;\n          for (lVar8 = param_1[1]; lVar8 != 0; lVar8 = *(long *)(lVar8 + 0x10)) {\n            *(undefined8 *)(lVar8 + 0x30) = *(undefined8 *)(*(long *)(lVar8 + 8) + 0x30);\n          }\n        }\n      }\n      pvVar11 = (void *)param_1[1];\n      param_1[1] = 0;\n    }\n    else {\nLAB_00117717:\n      do {\n        pvVar11 = *(void **)((long)pvVar12 + 0x10);\n        if (pvVar11 == (void *)0x0) {\n          lVar8 = *(long *)((long)pvVar12 + 8);\n          if (*(long *)(lVar8 + 0x18) != 0) {\n            *param_1 = lVar8;\n            *(undefined1 *)(param_1[4] + *(long *)(lVar8 + 0x48)) = 0;\n            pvVar11 = (void *)FUN_001164c9(param_1,3);\n            if (pvVar11 != (void *)0x0) {\n              free(pvVar12);\n              goto LAB_00117587;\n            }\n            if ((*(byte *)((long)param_1 + 0x49) & 0x40) != 0) {\n              return (void *)0x0;\n            }\n          }\n          pvVar11 = *(void **)((long)pvVar12 + 8);\n          *param_1 = (long)pvVar11;\n          free(pvVar12);\n          if (*(long *)((long)pvVar11 + 0x58) == -1) {\n            free(pvVar11);\n            piVar7 = __errno_location();\n            *piVar7 = 0;\n            *param_1 = 0;\n            return (void *)0x0;\n          }\n          if (*(short *)((long)pvVar11 + 0x70) == 0xb) {\n                    \n            abort();\n          }\n          *(undefined1 *)(param_1[4] + *(long *)((long)pvVar11 + 0x48)) = 0;\n          if (*(long *)((long)pvVar11 + 0x58) == 0) {\n            iVar5 = FUN_001161af(param_1);\n            if (iVar5 == 0) goto LAB_001177a7;\n            piVar7 = __errno_location();\n            *(int *)((long)pvVar11 + 0x40) = *piVar7;\n            *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\nLAB_001179e4:\n            if (*(short *)((long)pvVar11 + 0x70) == 2) {\n              return (void *)0x0;\n            }\n          }\n          else {\n            if ((*(ushort *)((long)pvVar11 + 0x72) & 2) == 0) {\n              if (((*(ushort *)((long)pvVar11 + 0x72) & 1) == 0) &&\n                 (iVar5 = FUN_00116203(param_1,*(undefined8 *)((long)pvVar11 + 8),0xffffffff,\n                                       &DAT_0011ff41), iVar5 != 0)) {\n                piVar7 = __errno_location();\n                *(int *)((long)pvVar11 + 0x40) = *piVar7;\n                *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\n                goto LAB_001179e4;\n              }\n            }\n            else {\n              if ((*(uint *)(param_1 + 9) & 4) == 0) {\n                if ((*(uint *)(param_1 + 9) & 0x200) == 0) {\n                  iVar5 = fchdir(*(int *)((long)pvVar11 + 0x44));\n                  if (iVar5 != 0) {\n                    piVar7 = __errno_location();\n                    *(int *)((long)pvVar11 + 0x40) = *piVar7;\n                    *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\n                  }\n                }\n                else {\n                  FUN_0011615c(param_1,*(undefined4 *)((long)pvVar11 + 0x44),1);\n                }\n              }\n              close(*(int *)((long)pvVar11 + 0x44));\n            }\nLAB_001177a7:\n            if (*(short *)((long)pvVar11 + 0x70) == 2) goto LAB_00117a88;\n          }\n          if (*(int *)((long)pvVar11 + 0x40) == 0) {\n            *(undefined2 *)((long)pvVar11 + 0x70) = 6;\n            FUN_00116412(param_1,pvVar11);\n          }\n          else {\n            *(undefined2 *)((long)pvVar11 + 0x70) = 7;\n          }\nLAB_00117a88:\n          if ((*(uint *)(param_1 + 9) & 0x4000) != 0) {\n            return (void *)0x0;\n          }\n          return pvVar11;\n        }\n        *param_1 = (long)pvVar11;\n        free(pvVar12);\n        if (*(long *)((long)pvVar11 + 0x58) == 0) {\n          iVar5 = FUN_001161af(param_1);\n          if (iVar5 != 0) {\n            *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\n            return (void *)0x0;\n          }\n          FUN_00115eb3(param_1);\n          *(long *)((long)pvVar11 + 0x48) = *(long *)((long)pvVar11 + 0x60);\n          __s = (char *)((long)pvVar11 + 0x108);\n          memmove((void *)param_1[4],__s,*(long *)((long)pvVar11 + 0x60) + 1);\n          pcVar9 = strrchr(__s,0x2f);\n          if ((pcVar9 == (char *)0x0) || ((__s == pcVar9 && (pcVar9[1] == '\0'))))\n          goto LAB_0011784f;\n          uVar10 = 0xffffffffffffffff;\n          pcVar13 = pcVar9 + 1;\n          goto code_r0x00117837;\n        }\n        pvVar12 = pvVar11;\n      } while (*(short *)((long)pvVar11 + 0x74) == 4);\n      if (*(short *)((long)pvVar11 + 0x74) == 2) {\n        sVar4 = FUN_00115abc(param_1,pvVar11,1);\n        *(short *)((long)pvVar11 + 0x70) = sVar4;\n        if ((sVar4 == 1) && ((*(byte *)(param_1 + 9) & 4) == 0)) {\n          iVar5 = FUN_00115e27(param_1,&DAT_0011ff42);\n          *(int *)((long)pvVar11 + 0x44) = iVar5;\n          if (iVar5 < 0) {\n            piVar7 = __errno_location();\n            *(int *)((long)pvVar11 + 0x40) = *piVar7;\n            *(undefined2 *)((long)pvVar11 + 0x70) = 7;\n          }\n          else {\n            *(ushort *)((long)pvVar11 + 0x72) = *(ushort *)((long)pvVar11 + 0x72) | 2;\n          }\n        }\n        *(undefined2 *)((long)pvVar11 + 0x74) = 3;\n      }\n    }\nLAB_00117587:\n    lVar8 = *(long *)(*(long *)((long)pvVar11 + 8) + 0x48);\n    lVar6 = lVar8 + -1;\n    if (*(char *)(*(long *)(*(long *)((long)pvVar11 + 8) + 0x38) + -1 + lVar8) != '/') {\n      lVar6 = lVar8;\n    }\n    lVar8 = param_1[4];\n    *(undefined1 *)(lVar6 + lVar8) = 0x2f;\n    memmove((undefined1 *)(lVar6 + lVar8) + 1,(void *)((long)pvVar11 + 0x108),\n            *(long *)((long)pvVar11 + 0x60) + 1);\n  }" (if "if") (parenthesized_expression "(sVar4 == 2)" (( "(") (binary_expression "sVar4 == 2" (identifier "sVar4") (== "==") (number_literal "2")) () ")")) (compound_statement "{\n    if (1 < (ushort)(*(short *)((long)pvVar11 + 0x70) - 0xcU)) {\n      if (*(short *)((long)pvVar11 + 0x70) != 1) goto LAB_00117717;\n      goto LAB_00117457;\n    }\n    sVar4 = FUN_00115abc(param_1,pvVar11,1);\n    *(short *)((long)pvVar11 + 0x70) = sVar4;\n    if ((sVar4 == 1) && ((*(byte *)(param_1 + 9) & 4) == 0)) {\n      iVar5 = FUN_00115e27(param_1,&DAT_0011ff42);\n      *(int *)((long)pvVar11 + 0x44) = iVar5;\n      if (iVar5 < 0) {\n        piVar7 = __errno_location();\n        *(int *)((long)pvVar11 + 0x40) = *piVar7;\n        *(undefined2 *)((long)pvVar11 + 0x70) = 7;\n      }\n      else {\n        *(ushort *)((long)pvVar11 + 0x72) = *(ushort *)((long)pvVar11 + 0x72) | 2;\n      }\n    }\n  }" ({ "{") (if_statement "if (1 < (ushort)(*(short *)((long)pvVar11 + 0x70) - 0xcU)) {\n      if (*(short *)((long)pvVar11 + 0x70) != 1) goto LAB_00117717;\n      goto LAB_00117457;\n    }" (if "if") (parenthesized_expression "(1 < (ushort)(*(short *)((long)pvVar11 + 0x70) - 0xcU))" (( "(") (binary_expression "1 < (ushort)(*(short *)((long)pvVar11 + 0x70) - 0xcU)" (number_literal "1") (< "<") (call_expression "(ushort)(*(short *)((long)pvVar11 + 0x70) - 0xcU)" (parenthesized_expression "(ushort)" (( "(") (identifier "ushort") () ")")) (argument_list "(*(short *)((long)pvVar11 + 0x70) - 0xcU)" (( "(") (binary_expression "*(short *)((long)pvVar11 + 0x70) - 0xcU" (pointer_expression "*(short *)((long)pvVar11 + 0x70)" (* "*") (cast_expression "(short *)((long)pvVar11 + 0x70)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)pvVar11 + 0x70)" (( "(") (binary_expression "(long)pvVar11 + 0x70" (cast_expression "(long)pvVar11" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "pvVar11")) (+ "+") (number_literal "0x70")) () ")")))) (- "-") (number_literal "0xcU")) () ")")))) () ")")) (compound_statement "{\n      if (*(short *)((long)pvVar11 + 0x70) != 1) goto LAB_00117717;\n      goto LAB_00117457;\n    }" ({ "{") (if_statement "if (*(short *)((long)pvVar11 + 0x70) != 1) goto LAB_00117717;" (if "if") (parenthesized_expression "(*(short *)((long)pvVar11 + 0x70) != 1)" (( "(") (binary_expression "*(short *)((long)pvVar11 + 0x70) != 1" (pointer_expression "*(short *)((long)pvVar11 + 0x70)" (* "*") (cast_expression "(short *)((long)pvVar11 + 0x70)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)pvVar11 + 0x70)" (( "(") (binary_expression "(long)pvVar11 + 0x70" (cast_expression "(long)pvVar11" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "pvVar11")) (+ "+") (number_literal "0x70")) () ")")))) (!= "!=") (number_literal "1")) () ")")) (goto_statement "goto LAB_00117717;" (goto "goto") (statement_identifier "LAB_00117717") (; ";"))) (goto_statement "goto LAB_00117457;" (goto "goto") (statement_identifier "LAB_00117457") (; ";")) (} "}"))) (expression_statement "sVar4 = FUN_00115abc(param_1,pvVar11,1);" (assignment_expression "sVar4 = FUN_00115abc(param_1,pvVar11,1)" (identifier "sVar4") (= "=") (call_expression "FUN_00115abc(param_1,pvVar11,1)" (identifier "FUN_00115abc") (argument_list "(param_1,pvVar11,1)" (( "(") (identifier "param_1") (, ",") (identifier "pvVar11") (, ",") (number_literal "1") () ")")))) (; ";")) (expression_statement "*(short *)((long)pvVar11 + 0x70) = sVar4;" (assignment_expression "*(short *)((long)pvVar11 + 0x70) = sVar4" (pointer_expression "*(short *)((long)pvVar11 + 0x70)" (* "*") (cast_expression "(short *)((long)pvVar11 + 0x70)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)pvVar11 + 0x70)" (( "(") (binary_expression "(long)pvVar11 + 0x70" (cast_expression "(long)pvVar11" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "pvVar11")) (+ "+") (number_literal "0x70")) () ")")))) (= "=") (identifier "sVar4")) (; ";")) (if_statement "if ((sVar4 == 1) && ((*(byte *)(param_1 + 9) & 4) == 0)) {\n      iVar5 = FUN_00115e27(param_1,&DAT_0011ff42);\n      *(int *)((long)pvVar11 + 0x44) = iVar5;\n      if (iVar5 < 0) {\n        piVar7 = __errno_location();\n        *(int *)((long)pvVar11 + 0x40) = *piVar7;\n        *(undefined2 *)((long)pvVar11 + 0x70) = 7;\n      }\n      else {\n        *(ushort *)((long)pvVar11 + 0x72) = *(ushort *)((long)pvVar11 + 0x72) | 2;\n      }\n    }" (if "if") (parenthesized_expression "((sVar4 == 1) && ((*(byte *)(param_1 + 9) & 4) == 0))" (( "(") (binary_expression "(sVar4 == 1) && ((*(byte *)(param_1 + 9) & 4) == 0)" (parenthesized_expression "(sVar4 == 1)" (( "(") (binary_expression "sVar4 == 1" (identifier "sVar4") (== "==") (number_literal "1")) () ")")) (&& "&&") (parenthesized_expression "((*(byte *)(param_1 + 9) & 4) == 0)" (( "(") (binary_expression "(*(byte *)(param_1 + 9) & 4) == 0" (parenthesized_expression "(*(byte *)(param_1 + 9) & 4)" (( "(") (binary_expression "*(byte *)(param_1 + 9) & 4" (pointer_expression "*(byte *)(param_1 + 9)" (* "*") (cast_expression "(byte *)(param_1 + 9)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 9)" (( "(") (binary_expression "param_1 + 9" (identifier "param_1") (+ "+") (number_literal "9")) () ")")))) (& "&") (number_literal "4")) () ")")) (== "==") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n      iVar5 = FUN_00115e27(param_1,&DAT_0011ff42);\n      *(int *)((long)pvVar11 + 0x44) = iVar5;\n      if (iVar5 < 0) {\n        piVar7 = __errno_location();\n        *(int *)((long)pvVar11 + 0x40) = *piVar7;\n        *(undefined2 *)((long)pvVar11 + 0x70) = 7;\n      }\n      else {\n        *(ushort *)((long)pvVar11 + 0x72) = *(ushort *)((long)pvVar11 + 0x72) | 2;\n      }\n    }" ({ "{") (expression_statement "iVar5 = FUN_00115e27(param_1,&DAT_0011ff42);" (assignment_expression "iVar5 = FUN_00115e27(param_1,&DAT_0011ff42)" (identifier "iVar5") (= "=") (call_expression "FUN_00115e27(param_1,&DAT_0011ff42)" (identifier "FUN_00115e27") (argument_list "(param_1,&DAT_0011ff42)" (( "(") (identifier "param_1") (, ",") (pointer_expression "&DAT_0011ff42" (& "&") (identifier "DAT_0011ff42")) () ")")))) (; ";")) (expression_statement "*(int *)((long)pvVar11 + 0x44) = iVar5;" (assignment_expression "*(int *)((long)pvVar11 + 0x44) = iVar5" (pointer_expression "*(int *)((long)pvVar11 + 0x44)" (* "*") (cast_expression "(int *)((long)pvVar11 + 0x44)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)pvVar11 + 0x44)" (( "(") (binary_expression "(long)pvVar11 + 0x44" (cast_expression "(long)pvVar11" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "pvVar11")) (+ "+") (number_literal "0x44")) () ")")))) (= "=") (identifier "iVar5")) (; ";")) (if_statement "if (iVar5 < 0) {\n        piVar7 = __errno_location();\n        *(int *)((long)pvVar11 + 0x40) = *piVar7;\n        *(undefined2 *)((long)pvVar11 + 0x70) = 7;\n      }\n      else {\n        *(ushort *)((long)pvVar11 + 0x72) = *(ushort *)((long)pvVar11 + 0x72) | 2;\n      }" (if "if") (parenthesized_expression "(iVar5 < 0)" (( "(") (binary_expression "iVar5 < 0" (identifier "iVar5") (< "<") (number_literal "0")) () ")")) (compound_statement "{\n        piVar7 = __errno_location();\n        *(int *)((long)pvVar11 + 0x40) = *piVar7;\n        *(undefined2 *)((long)pvVar11 + 0x70) = 7;\n      }" ({ "{") (expression_statement "piVar7 = __errno_location();" (assignment_expression "piVar7 = __errno_location()" (identifier "piVar7") (= "=") (call_expression "__errno_location()" (identifier "__errno_location") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "*(int *)((long)pvVar11 + 0x40) = *piVar7;" (assignment_expression "*(int *)((long)pvVar11 + 0x40) = *piVar7" (pointer_expression "*(int *)((long)pvVar11 + 0x40)" (* "*") (cast_expression "(int *)((long)pvVar11 + 0x40)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)pvVar11 + 0x40)" (( "(") (binary_expression "(long)pvVar11 + 0x40" (cast_expression "(long)pvVar11" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "pvVar11")) (+ "+") (number_literal "0x40")) () ")")))) (= "=") (pointer_expression "*piVar7" (* "*") (identifier "piVar7"))) (; ";")) (expression_statement "*(undefined2 *)((long)pvVar11 + 0x70) = 7;" (assignment_expression "*(undefined2 *)((long)pvVar11 + 0x70) = 7" (pointer_expression "*(undefined2 *)((long)pvVar11 + 0x70)" (* "*") (cast_expression "(undefined2 *)((long)pvVar11 + 0x70)" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)pvVar11 + 0x70)" (( "(") (binary_expression "(long)pvVar11 + 0x70" (cast_expression "(long)pvVar11" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "pvVar11")) (+ "+") (number_literal "0x70")) () ")")))) (= "=") (number_literal "7")) (; ";")) (} "}")) (else_clause "else {\n        *(ushort *)((long)pvVar11 + 0x72) = *(ushort *)((long)pvVar11 + 0x72) | 2;\n      }" (else "else") (compound_statement "{\n        *(ushort *)((long)pvVar11 + 0x72) = *(ushort *)((long)pvVar11 + 0x72) | 2;\n      }" ({ "{") (expression_statement "*(ushort *)((long)pvVar11 + 0x72) = *(ushort *)((long)pvVar11 + 0x72) | 2;" (assignment_expression "*(ushort *)((long)pvVar11 + 0x72) = *(ushort *)((long)pvVar11 + 0x72) | 2" (pointer_expression "*(ushort *)((long)pvVar11 + 0x72)" (* "*") (cast_expression "(ushort *)((long)pvVar11 + 0x72)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)pvVar11 + 0x72)" (( "(") (binary_expression "(long)pvVar11 + 0x72" (cast_expression "(long)pvVar11" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "pvVar11")) (+ "+") (number_literal "0x72")) () ")")))) (= "=") (binary_expression "*(ushort *)((long)pvVar11 + 0x72) | 2" (pointer_expression "*(ushort *)((long)pvVar11 + 0x72)" (* "*") (cast_expression "(ushort *)((long)pvVar11 + 0x72)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)pvVar11 + 0x72)" (( "(") (binary_expression "(long)pvVar11 + 0x72" (cast_expression "(long)pvVar11" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "pvVar11")) (+ "+") (number_literal "0x72")) () ")")))) (| "|") (number_literal "2"))) (; ";")) (} "}")))) (} "}"))) (} "}")) (else_clause "else {\n    if (*(short *)((long)pvVar11 + 0x70) == 1) {\n      if (sVar4 == 4) goto LAB_00117473;\nLAB_00117457:\n      uVar1 = *(uint *)(param_1 + 9);\n      if (((uVar1 & 0x40) != 0) && (*(long *)((long)pvVar11 + 0x78) != param_1[3])) {\nLAB_00117473:\n        if ((*(byte *)((long)pvVar11 + 0x72) & 2) != 0) {\n          close(*(int *)((long)pvVar11 + 0x44));\n        }\n        if (param_1[1] != 0) {\n          FUN_00115e7a();\n          param_1[1] = 0;\n        }\n        *(undefined2 *)((long)pvVar11 + 0x70) = 6;\n        FUN_00116412(param_1,pvVar11);\n        return pvVar11;\n      }\n      if (param_1[1] == 0) {\nLAB_00117628:\n        lVar8 = FUN_001164c9(param_1,3);\n        param_1[1] = lVar8;\n        if (lVar8 == 0) {\n          if ((*(byte *)((long)param_1 + 0x49) & 0x40) == 0) {\n            if ((*(int *)((long)pvVar11 + 0x40) != 0) && (*(short *)((long)pvVar11 + 0x70) != 4)) {\n              *(undefined2 *)((long)pvVar11 + 0x70) = 7;\n            }\n            FUN_00116412(param_1,pvVar11);\n            return pvVar11;\n          }\n          return (void *)0x0;\n        }\n      }\n      else {\n        if ((uVar1 & 0x2000) != 0) {\n          *(uint *)(param_1 + 9) = uVar1 & 0xffffdfff;\n          FUN_00115e7a();\n          param_1[1] = 0;\n          goto LAB_00117628;\n        }\n        iVar5 = FUN_00116203(param_1,pvVar11,0xffffffff,*(undefined8 *)((long)pvVar11 + 0x30));\n        if (iVar5 != 0) {\n          piVar7 = __errno_location();\n          *(int *)((long)pvVar11 + 0x40) = *piVar7;\n          *(ushort *)((long)pvVar11 + 0x72) = *(ushort *)((long)pvVar11 + 0x72) | 1;\n          for (lVar8 = param_1[1]; lVar8 != 0; lVar8 = *(long *)(lVar8 + 0x10)) {\n            *(undefined8 *)(lVar8 + 0x30) = *(undefined8 *)(*(long *)(lVar8 + 8) + 0x30);\n          }\n        }\n      }\n      pvVar11 = (void *)param_1[1];\n      param_1[1] = 0;\n    }\n    else {\nLAB_00117717:\n      do {\n        pvVar11 = *(void **)((long)pvVar12 + 0x10);\n        if (pvVar11 == (void *)0x0) {\n          lVar8 = *(long *)((long)pvVar12 + 8);\n          if (*(long *)(lVar8 + 0x18) != 0) {\n            *param_1 = lVar8;\n            *(undefined1 *)(param_1[4] + *(long *)(lVar8 + 0x48)) = 0;\n            pvVar11 = (void *)FUN_001164c9(param_1,3);\n            if (pvVar11 != (void *)0x0) {\n              free(pvVar12);\n              goto LAB_00117587;\n            }\n            if ((*(byte *)((long)param_1 + 0x49) & 0x40) != 0) {\n              return (void *)0x0;\n            }\n          }\n          pvVar11 = *(void **)((long)pvVar12 + 8);\n          *param_1 = (long)pvVar11;\n          free(pvVar12);\n          if (*(long *)((long)pvVar11 + 0x58) == -1) {\n            free(pvVar11);\n            piVar7 = __errno_location();\n            *piVar7 = 0;\n            *param_1 = 0;\n            return (void *)0x0;\n          }\n          if (*(short *)((long)pvVar11 + 0x70) == 0xb) {\n                    \n            abort();\n          }\n          *(undefined1 *)(param_1[4] + *(long *)((long)pvVar11 + 0x48)) = 0;\n          if (*(long *)((long)pvVar11 + 0x58) == 0) {\n            iVar5 = FUN_001161af(param_1);\n            if (iVar5 == 0) goto LAB_001177a7;\n            piVar7 = __errno_location();\n            *(int *)((long)pvVar11 + 0x40) = *piVar7;\n            *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\nLAB_001179e4:\n            if (*(short *)((long)pvVar11 + 0x70) == 2) {\n              return (void *)0x0;\n            }\n          }\n          else {\n            if ((*(ushort *)((long)pvVar11 + 0x72) & 2) == 0) {\n              if (((*(ushort *)((long)pvVar11 + 0x72) & 1) == 0) &&\n                 (iVar5 = FUN_00116203(param_1,*(undefined8 *)((long)pvVar11 + 8),0xffffffff,\n                                       &DAT_0011ff41), iVar5 != 0)) {\n                piVar7 = __errno_location();\n                *(int *)((long)pvVar11 + 0x40) = *piVar7;\n                *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\n                goto LAB_001179e4;\n              }\n            }\n            else {\n              if ((*(uint *)(param_1 + 9) & 4) == 0) {\n                if ((*(uint *)(param_1 + 9) & 0x200) == 0) {\n                  iVar5 = fchdir(*(int *)((long)pvVar11 + 0x44));\n                  if (iVar5 != 0) {\n                    piVar7 = __errno_location();\n                    *(int *)((long)pvVar11 + 0x40) = *piVar7;\n                    *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\n                  }\n                }\n                else {\n                  FUN_0011615c(param_1,*(undefined4 *)((long)pvVar11 + 0x44),1);\n                }\n              }\n              close(*(int *)((long)pvVar11 + 0x44));\n            }\nLAB_001177a7:\n            if (*(short *)((long)pvVar11 + 0x70) == 2) goto LAB_00117a88;\n          }\n          if (*(int *)((long)pvVar11 + 0x40) == 0) {\n            *(undefined2 *)((long)pvVar11 + 0x70) = 6;\n            FUN_00116412(param_1,pvVar11);\n          }\n          else {\n            *(undefined2 *)((long)pvVar11 + 0x70) = 7;\n          }\nLAB_00117a88:\n          if ((*(uint *)(param_1 + 9) & 0x4000) != 0) {\n            return (void *)0x0;\n          }\n          return pvVar11;\n        }\n        *param_1 = (long)pvVar11;\n        free(pvVar12);\n        if (*(long *)((long)pvVar11 + 0x58) == 0) {\n          iVar5 = FUN_001161af(param_1);\n          if (iVar5 != 0) {\n            *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\n            return (void *)0x0;\n          }\n          FUN_00115eb3(param_1);\n          *(long *)((long)pvVar11 + 0x48) = *(long *)((long)pvVar11 + 0x60);\n          __s = (char *)((long)pvVar11 + 0x108);\n          memmove((void *)param_1[4],__s,*(long *)((long)pvVar11 + 0x60) + 1);\n          pcVar9 = strrchr(__s,0x2f);\n          if ((pcVar9 == (char *)0x0) || ((__s == pcVar9 && (pcVar9[1] == '\0'))))\n          goto LAB_0011784f;\n          uVar10 = 0xffffffffffffffff;\n          pcVar13 = pcVar9 + 1;\n          goto code_r0x00117837;\n        }\n        pvVar12 = pvVar11;\n      } while (*(short *)((long)pvVar11 + 0x74) == 4);\n      if (*(short *)((long)pvVar11 + 0x74) == 2) {\n        sVar4 = FUN_00115abc(param_1,pvVar11,1);\n        *(short *)((long)pvVar11 + 0x70) = sVar4;\n        if ((sVar4 == 1) && ((*(byte *)(param_1 + 9) & 4) == 0)) {\n          iVar5 = FUN_00115e27(param_1,&DAT_0011ff42);\n          *(int *)((long)pvVar11 + 0x44) = iVar5;\n          if (iVar5 < 0) {\n            piVar7 = __errno_location();\n            *(int *)((long)pvVar11 + 0x40) = *piVar7;\n            *(undefined2 *)((long)pvVar11 + 0x70) = 7;\n          }\n          else {\n            *(ushort *)((long)pvVar11 + 0x72) = *(ushort *)((long)pvVar11 + 0x72) | 2;\n          }\n        }\n        *(undefined2 *)((long)pvVar11 + 0x74) = 3;\n      }\n    }\nLAB_00117587:\n    lVar8 = *(long *)(*(long *)((long)pvVar11 + 8) + 0x48);\n    lVar6 = lVar8 + -1;\n    if (*(char *)(*(long *)(*(long *)((long)pvVar11 + 8) + 0x38) + -1 + lVar8) != '/') {\n      lVar6 = lVar8;\n    }\n    lVar8 = param_1[4];\n    *(undefined1 *)(lVar6 + lVar8) = 0x2f;\n    memmove((undefined1 *)(lVar6 + lVar8) + 1,(void *)((long)pvVar11 + 0x108),\n            *(long *)((long)pvVar11 + 0x60) + 1);\n  }" (else "else") (compound_statement "{\n    if (*(short *)((long)pvVar11 + 0x70) == 1) {\n      if (sVar4 == 4) goto LAB_00117473;\nLAB_00117457:\n      uVar1 = *(uint *)(param_1 + 9);\n      if (((uVar1 & 0x40) != 0) && (*(long *)((long)pvVar11 + 0x78) != param_1[3])) {\nLAB_00117473:\n        if ((*(byte *)((long)pvVar11 + 0x72) & 2) != 0) {\n          close(*(int *)((long)pvVar11 + 0x44));\n        }\n        if (param_1[1] != 0) {\n          FUN_00115e7a();\n          param_1[1] = 0;\n        }\n        *(undefined2 *)((long)pvVar11 + 0x70) = 6;\n        FUN_00116412(param_1,pvVar11);\n        return pvVar11;\n      }\n      if (param_1[1] == 0) {\nLAB_00117628:\n        lVar8 = FUN_001164c9(param_1,3);\n        param_1[1] = lVar8;\n        if (lVar8 == 0) {\n          if ((*(byte *)((long)param_1 + 0x49) & 0x40) == 0) {\n            if ((*(int *)((long)pvVar11 + 0x40) != 0) && (*(short *)((long)pvVar11 + 0x70) != 4)) {\n              *(undefined2 *)((long)pvVar11 + 0x70) = 7;\n            }\n            FUN_00116412(param_1,pvVar11);\n            return pvVar11;\n          }\n          return (void *)0x0;\n        }\n      }\n      else {\n        if ((uVar1 & 0x2000) != 0) {\n          *(uint *)(param_1 + 9) = uVar1 & 0xffffdfff;\n          FUN_00115e7a();\n          param_1[1] = 0;\n          goto LAB_00117628;\n        }\n        iVar5 = FUN_00116203(param_1,pvVar11,0xffffffff,*(undefined8 *)((long)pvVar11 + 0x30));\n        if (iVar5 != 0) {\n          piVar7 = __errno_location();\n          *(int *)((long)pvVar11 + 0x40) = *piVar7;\n          *(ushort *)((long)pvVar11 + 0x72) = *(ushort *)((long)pvVar11 + 0x72) | 1;\n          for (lVar8 = param_1[1]; lVar8 != 0; lVar8 = *(long *)(lVar8 + 0x10)) {\n            *(undefined8 *)(lVar8 + 0x30) = *(undefined8 *)(*(long *)(lVar8 + 8) + 0x30);\n          }\n        }\n      }\n      pvVar11 = (void *)param_1[1];\n      param_1[1] = 0;\n    }\n    else {\nLAB_00117717:\n      do {\n        pvVar11 = *(void **)((long)pvVar12 + 0x10);\n        if (pvVar11 == (void *)0x0) {\n          lVar8 = *(long *)((long)pvVar12 + 8);\n          if (*(long *)(lVar8 + 0x18) != 0) {\n            *param_1 = lVar8;\n            *(undefined1 *)(param_1[4] + *(long *)(lVar8 + 0x48)) = 0;\n            pvVar11 = (void *)FUN_001164c9(param_1,3);\n            if (pvVar11 != (void *)0x0) {\n              free(pvVar12);\n              goto LAB_00117587;\n            }\n            if ((*(byte *)((long)param_1 + 0x49) & 0x40) != 0) {\n              return (void *)0x0;\n            }\n          }\n          pvVar11 = *(void **)((long)pvVar12 + 8);\n          *param_1 = (long)pvVar11;\n          free(pvVar12);\n          if (*(long *)((long)pvVar11 + 0x58) == -1) {\n            free(pvVar11);\n            piVar7 = __errno_location();\n            *piVar7 = 0;\n            *param_1 = 0;\n            return (void *)0x0;\n          }\n          if (*(short *)((long)pvVar11 + 0x70) == 0xb) {\n                    \n            abort();\n          }\n          *(undefined1 *)(param_1[4] + *(long *)((long)pvVar11 + 0x48)) = 0;\n          if (*(long *)((long)pvVar11 + 0x58) == 0) {\n            iVar5 = FUN_001161af(param_1);\n            if (iVar5 == 0) goto LAB_001177a7;\n            piVar7 = __errno_location();\n            *(int *)((long)pvVar11 + 0x40) = *piVar7;\n            *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\nLAB_001179e4:\n            if (*(short *)((long)pvVar11 + 0x70) == 2) {\n              return (void *)0x0;\n            }\n          }\n          else {\n            if ((*(ushort *)((long)pvVar11 + 0x72) & 2) == 0) {\n              if (((*(ushort *)((long)pvVar11 + 0x72) & 1) == 0) &&\n                 (iVar5 = FUN_00116203(param_1,*(undefined8 *)((long)pvVar11 + 8),0xffffffff,\n                                       &DAT_0011ff41), iVar5 != 0)) {\n                piVar7 = __errno_location();\n                *(int *)((long)pvVar11 + 0x40) = *piVar7;\n                *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\n                goto LAB_001179e4;\n              }\n            }\n            else {\n              if ((*(uint *)(param_1 + 9) & 4) == 0) {\n                if ((*(uint *)(param_1 + 9) & 0x200) == 0) {\n                  iVar5 = fchdir(*(int *)((long)pvVar11 + 0x44));\n                  if (iVar5 != 0) {\n                    piVar7 = __errno_location();\n                    *(int *)((long)pvVar11 + 0x40) = *piVar7;\n                    *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\n                  }\n                }\n                else {\n                  FUN_0011615c(param_1,*(undefined4 *)((long)pvVar11 + 0x44),1);\n                }\n              }\n              close(*(int *)((long)pvVar11 + 0x44));\n            }\nLAB_001177a7:\n            if (*(short *)((long)pvVar11 + 0x70) == 2) goto LAB_00117a88;\n          }\n          if (*(int *)((long)pvVar11 + 0x40) == 0) {\n            *(undefined2 *)((long)pvVar11 + 0x70) = 6;\n            FUN_00116412(param_1,pvVar11);\n          }\n          else {\n            *(undefined2 *)((long)pvVar11 + 0x70) = 7;\n          }\nLAB_00117a88:\n          if ((*(uint *)(param_1 + 9) & 0x4000) != 0) {\n            return (void *)0x0;\n          }\n          return pvVar11;\n        }\n        *param_1 = (long)pvVar11;\n        free(pvVar12);\n        if (*(long *)((long)pvVar11 + 0x58) == 0) {\n          iVar5 = FUN_001161af(param_1);\n          if (iVar5 != 0) {\n            *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\n            return (void *)0x0;\n          }\n          FUN_00115eb3(param_1);\n          *(long *)((long)pvVar11 + 0x48) = *(long *)((long)pvVar11 + 0x60);\n          __s = (char *)((long)pvVar11 + 0x108);\n          memmove((void *)param_1[4],__s,*(long *)((long)pvVar11 + 0x60) + 1);\n          pcVar9 = strrchr(__s,0x2f);\n          if ((pcVar9 == (char *)0x0) || ((__s == pcVar9 && (pcVar9[1] == '\0'))))\n          goto LAB_0011784f;\n          uVar10 = 0xffffffffffffffff;\n          pcVar13 = pcVar9 + 1;\n          goto code_r0x00117837;\n        }\n        pvVar12 = pvVar11;\n      } while (*(short *)((long)pvVar11 + 0x74) == 4);\n      if (*(short *)((long)pvVar11 + 0x74) == 2) {\n        sVar4 = FUN_00115abc(param_1,pvVar11,1);\n        *(short *)((long)pvVar11 + 0x70) = sVar4;\n        if ((sVar4 == 1) && ((*(byte *)(param_1 + 9) & 4) == 0)) {\n          iVar5 = FUN_00115e27(param_1,&DAT_0011ff42);\n          *(int *)((long)pvVar11 + 0x44) = iVar5;\n          if (iVar5 < 0) {\n            piVar7 = __errno_location();\n            *(int *)((long)pvVar11 + 0x40) = *piVar7;\n            *(undefined2 *)((long)pvVar11 + 0x70) = 7;\n          }\n          else {\n            *(ushort *)((long)pvVar11 + 0x72) = *(ushort *)((long)pvVar11 + 0x72) | 2;\n          }\n        }\n        *(undefined2 *)((long)pvVar11 + 0x74) = 3;\n      }\n    }\nLAB_00117587:\n    lVar8 = *(long *)(*(long *)((long)pvVar11 + 8) + 0x48);\n    lVar6 = lVar8 + -1;\n    if (*(char *)(*(long *)(*(long *)((long)pvVar11 + 8) + 0x38) + -1 + lVar8) != '/') {\n      lVar6 = lVar8;\n    }\n    lVar8 = param_1[4];\n    *(undefined1 *)(lVar6 + lVar8) = 0x2f;\n    memmove((undefined1 *)(lVar6 + lVar8) + 1,(void *)((long)pvVar11 + 0x108),\n            *(long *)((long)pvVar11 + 0x60) + 1);\n  }" ({ "{") (if_statement "if (*(short *)((long)pvVar11 + 0x70) == 1) {\n      if (sVar4 == 4) goto LAB_00117473;\nLAB_00117457:\n      uVar1 = *(uint *)(param_1 + 9);\n      if (((uVar1 & 0x40) != 0) && (*(long *)((long)pvVar11 + 0x78) != param_1[3])) {\nLAB_00117473:\n        if ((*(byte *)((long)pvVar11 + 0x72) & 2) != 0) {\n          close(*(int *)((long)pvVar11 + 0x44));\n        }\n        if (param_1[1] != 0) {\n          FUN_00115e7a();\n          param_1[1] = 0;\n        }\n        *(undefined2 *)((long)pvVar11 + 0x70) = 6;\n        FUN_00116412(param_1,pvVar11);\n        return pvVar11;\n      }\n      if (param_1[1] == 0) {\nLAB_00117628:\n        lVar8 = FUN_001164c9(param_1,3);\n        param_1[1] = lVar8;\n        if (lVar8 == 0) {\n          if ((*(byte *)((long)param_1 + 0x49) & 0x40) == 0) {\n            if ((*(int *)((long)pvVar11 + 0x40) != 0) && (*(short *)((long)pvVar11 + 0x70) != 4)) {\n              *(undefined2 *)((long)pvVar11 + 0x70) = 7;\n            }\n            FUN_00116412(param_1,pvVar11);\n            return pvVar11;\n          }\n          return (void *)0x0;\n        }\n      }\n      else {\n        if ((uVar1 & 0x2000) != 0) {\n          *(uint *)(param_1 + 9) = uVar1 & 0xffffdfff;\n          FUN_00115e7a();\n          param_1[1] = 0;\n          goto LAB_00117628;\n        }\n        iVar5 = FUN_00116203(param_1,pvVar11,0xffffffff,*(undefined8 *)((long)pvVar11 + 0x30));\n        if (iVar5 != 0) {\n          piVar7 = __errno_location();\n          *(int *)((long)pvVar11 + 0x40) = *piVar7;\n          *(ushort *)((long)pvVar11 + 0x72) = *(ushort *)((long)pvVar11 + 0x72) | 1;\n          for (lVar8 = param_1[1]; lVar8 != 0; lVar8 = *(long *)(lVar8 + 0x10)) {\n            *(undefined8 *)(lVar8 + 0x30) = *(undefined8 *)(*(long *)(lVar8 + 8) + 0x30);\n          }\n        }\n      }\n      pvVar11 = (void *)param_1[1];\n      param_1[1] = 0;\n    }\n    else {\nLAB_00117717:\n      do {\n        pvVar11 = *(void **)((long)pvVar12 + 0x10);\n        if (pvVar11 == (void *)0x0) {\n          lVar8 = *(long *)((long)pvVar12 + 8);\n          if (*(long *)(lVar8 + 0x18) != 0) {\n            *param_1 = lVar8;\n            *(undefined1 *)(param_1[4] + *(long *)(lVar8 + 0x48)) = 0;\n            pvVar11 = (void *)FUN_001164c9(param_1,3);\n            if (pvVar11 != (void *)0x0) {\n              free(pvVar12);\n              goto LAB_00117587;\n            }\n            if ((*(byte *)((long)param_1 + 0x49) & 0x40) != 0) {\n              return (void *)0x0;\n            }\n          }\n          pvVar11 = *(void **)((long)pvVar12 + 8);\n          *param_1 = (long)pvVar11;\n          free(pvVar12);\n          if (*(long *)((long)pvVar11 + 0x58) == -1) {\n            free(pvVar11);\n            piVar7 = __errno_location();\n            *piVar7 = 0;\n            *param_1 = 0;\n            return (void *)0x0;\n          }\n          if (*(short *)((long)pvVar11 + 0x70) == 0xb) {\n                    \n            abort();\n          }\n          *(undefined1 *)(param_1[4] + *(long *)((long)pvVar11 + 0x48)) = 0;\n          if (*(long *)((long)pvVar11 + 0x58) == 0) {\n            iVar5 = FUN_001161af(param_1);\n            if (iVar5 == 0) goto LAB_001177a7;\n            piVar7 = __errno_location();\n            *(int *)((long)pvVar11 + 0x40) = *piVar7;\n            *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\nLAB_001179e4:\n            if (*(short *)((long)pvVar11 + 0x70) == 2) {\n              return (void *)0x0;\n            }\n          }\n          else {\n            if ((*(ushort *)((long)pvVar11 + 0x72) & 2) == 0) {\n              if (((*(ushort *)((long)pvVar11 + 0x72) & 1) == 0) &&\n                 (iVar5 = FUN_00116203(param_1,*(undefined8 *)((long)pvVar11 + 8),0xffffffff,\n                                       &DAT_0011ff41), iVar5 != 0)) {\n                piVar7 = __errno_location();\n                *(int *)((long)pvVar11 + 0x40) = *piVar7;\n                *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\n                goto LAB_001179e4;\n              }\n            }\n            else {\n              if ((*(uint *)(param_1 + 9) & 4) == 0) {\n                if ((*(uint *)(param_1 + 9) & 0x200) == 0) {\n                  iVar5 = fchdir(*(int *)((long)pvVar11 + 0x44));\n                  if (iVar5 != 0) {\n                    piVar7 = __errno_location();\n                    *(int *)((long)pvVar11 + 0x40) = *piVar7;\n                    *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\n                  }\n                }\n                else {\n                  FUN_0011615c(param_1,*(undefined4 *)((long)pvVar11 + 0x44),1);\n                }\n              }\n              close(*(int *)((long)pvVar11 + 0x44));\n            }\nLAB_001177a7:\n            if (*(short *)((long)pvVar11 + 0x70) == 2) goto LAB_00117a88;\n          }\n          if (*(int *)((long)pvVar11 + 0x40) == 0) {\n            *(undefined2 *)((long)pvVar11 + 0x70) = 6;\n            FUN_00116412(param_1,pvVar11);\n          }\n          else {\n            *(undefined2 *)((long)pvVar11 + 0x70) = 7;\n          }\nLAB_00117a88:\n          if ((*(uint *)(param_1 + 9) & 0x4000) != 0) {\n            return (void *)0x0;\n          }\n          return pvVar11;\n        }\n        *param_1 = (long)pvVar11;\n        free(pvVar12);\n        if (*(long *)((long)pvVar11 + 0x58) == 0) {\n          iVar5 = FUN_001161af(param_1);\n          if (iVar5 != 0) {\n            *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\n            return (void *)0x0;\n          }\n          FUN_00115eb3(param_1);\n          *(long *)((long)pvVar11 + 0x48) = *(long *)((long)pvVar11 + 0x60);\n          __s = (char *)((long)pvVar11 + 0x108);\n          memmove((void *)param_1[4],__s,*(long *)((long)pvVar11 + 0x60) + 1);\n          pcVar9 = strrchr(__s,0x2f);\n          if ((pcVar9 == (char *)0x0) || ((__s == pcVar9 && (pcVar9[1] == '\0'))))\n          goto LAB_0011784f;\n          uVar10 = 0xffffffffffffffff;\n          pcVar13 = pcVar9 + 1;\n          goto code_r0x00117837;\n        }\n        pvVar12 = pvVar11;\n      } while (*(short *)((long)pvVar11 + 0x74) == 4);\n      if (*(short *)((long)pvVar11 + 0x74) == 2) {\n        sVar4 = FUN_00115abc(param_1,pvVar11,1);\n        *(short *)((long)pvVar11 + 0x70) = sVar4;\n        if ((sVar4 == 1) && ((*(byte *)(param_1 + 9) & 4) == 0)) {\n          iVar5 = FUN_00115e27(param_1,&DAT_0011ff42);\n          *(int *)((long)pvVar11 + 0x44) = iVar5;\n          if (iVar5 < 0) {\n            piVar7 = __errno_location();\n            *(int *)((long)pvVar11 + 0x40) = *piVar7;\n            *(undefined2 *)((long)pvVar11 + 0x70) = 7;\n          }\n          else {\n            *(ushort *)((long)pvVar11 + 0x72) = *(ushort *)((long)pvVar11 + 0x72) | 2;\n          }\n        }\n        *(undefined2 *)((long)pvVar11 + 0x74) = 3;\n      }\n    }" (if "if") (parenthesized_expression "(*(short *)((long)pvVar11 + 0x70) == 1)" (( "(") (binary_expression "*(short *)((long)pvVar11 + 0x70) == 1" (pointer_expression "*(short *)((long)pvVar11 + 0x70)" (* "*") (cast_expression "(short *)((long)pvVar11 + 0x70)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)pvVar11 + 0x70)" (( "(") (binary_expression "(long)pvVar11 + 0x70" (cast_expression "(long)pvVar11" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "pvVar11")) (+ "+") (number_literal "0x70")) () ")")))) (== "==") (number_literal "1")) () ")")) (compound_statement "{\n      if (sVar4 == 4) goto LAB_00117473;\nLAB_00117457:\n      uVar1 = *(uint *)(param_1 + 9);\n      if (((uVar1 & 0x40) != 0) && (*(long *)((long)pvVar11 + 0x78) != param_1[3])) {\nLAB_00117473:\n        if ((*(byte *)((long)pvVar11 + 0x72) & 2) != 0) {\n          close(*(int *)((long)pvVar11 + 0x44));\n        }\n        if (param_1[1] != 0) {\n          FUN_00115e7a();\n          param_1[1] = 0;\n        }\n        *(undefined2 *)((long)pvVar11 + 0x70) = 6;\n        FUN_00116412(param_1,pvVar11);\n        return pvVar11;\n      }\n      if (param_1[1] == 0) {\nLAB_00117628:\n        lVar8 = FUN_001164c9(param_1,3);\n        param_1[1] = lVar8;\n        if (lVar8 == 0) {\n          if ((*(byte *)((long)param_1 + 0x49) & 0x40) == 0) {\n            if ((*(int *)((long)pvVar11 + 0x40) != 0) && (*(short *)((long)pvVar11 + 0x70) != 4)) {\n              *(undefined2 *)((long)pvVar11 + 0x70) = 7;\n            }\n            FUN_00116412(param_1,pvVar11);\n            return pvVar11;\n          }\n          return (void *)0x0;\n        }\n      }\n      else {\n        if ((uVar1 & 0x2000) != 0) {\n          *(uint *)(param_1 + 9) = uVar1 & 0xffffdfff;\n          FUN_00115e7a();\n          param_1[1] = 0;\n          goto LAB_00117628;\n        }\n        iVar5 = FUN_00116203(param_1,pvVar11,0xffffffff,*(undefined8 *)((long)pvVar11 + 0x30));\n        if (iVar5 != 0) {\n          piVar7 = __errno_location();\n          *(int *)((long)pvVar11 + 0x40) = *piVar7;\n          *(ushort *)((long)pvVar11 + 0x72) = *(ushort *)((long)pvVar11 + 0x72) | 1;\n          for (lVar8 = param_1[1]; lVar8 != 0; lVar8 = *(long *)(lVar8 + 0x10)) {\n            *(undefined8 *)(lVar8 + 0x30) = *(undefined8 *)(*(long *)(lVar8 + 8) + 0x30);\n          }\n        }\n      }\n      pvVar11 = (void *)param_1[1];\n      param_1[1] = 0;\n    }" ({ "{") (if_statement "if (sVar4 == 4) goto LAB_00117473;" (if "if") (parenthesized_expression "(sVar4 == 4)" (( "(") (binary_expression "sVar4 == 4" (identifier "sVar4") (== "==") (number_literal "4")) () ")")) (goto_statement "goto LAB_00117473;" (goto "goto") (statement_identifier "LAB_00117473") (; ";"))) (labeled_statement "LAB_00117457:\n      uVar1 = *(uint *)(param_1 + 9);" (statement_identifier "LAB_00117457") (: ":") (expression_statement "uVar1 = *(uint *)(param_1 + 9);" (assignment_expression "uVar1 = *(uint *)(param_1 + 9)" (identifier "uVar1") (= "=") (pointer_expression "*(uint *)(param_1 + 9)" (* "*") (cast_expression "(uint *)(param_1 + 9)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 9)" (( "(") (binary_expression "param_1 + 9" (identifier "param_1") (+ "+") (number_literal "9")) () ")"))))) (; ";"))) (if_statement "if (((uVar1 & 0x40) != 0) && (*(long *)((long)pvVar11 + 0x78) != param_1[3])) {\nLAB_00117473:\n        if ((*(byte *)((long)pvVar11 + 0x72) & 2) != 0) {\n          close(*(int *)((long)pvVar11 + 0x44));\n        }\n        if (param_1[1] != 0) {\n          FUN_00115e7a();\n          param_1[1] = 0;\n        }\n        *(undefined2 *)((long)pvVar11 + 0x70) = 6;\n        FUN_00116412(param_1,pvVar11);\n        return pvVar11;\n      }" (if "if") (parenthesized_expression "(((uVar1 & 0x40) != 0) && (*(long *)((long)pvVar11 + 0x78) != param_1[3]))" (( "(") (binary_expression "((uVar1 & 0x40) != 0) && (*(long *)((long)pvVar11 + 0x78) != param_1[3])" (parenthesized_expression "((uVar1 & 0x40) != 0)" (( "(") (binary_expression "(uVar1 & 0x40) != 0" (parenthesized_expression "(uVar1 & 0x40)" (( "(") (binary_expression "uVar1 & 0x40" (identifier "uVar1") (& "&") (number_literal "0x40")) () ")")) (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(*(long *)((long)pvVar11 + 0x78) != param_1[3])" (( "(") (binary_expression "*(long *)((long)pvVar11 + 0x78) != param_1[3]" (pointer_expression "*(long *)((long)pvVar11 + 0x78)" (* "*") (cast_expression "(long *)((long)pvVar11 + 0x78)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)pvVar11 + 0x78)" (( "(") (binary_expression "(long)pvVar11 + 0x78" (cast_expression "(long)pvVar11" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "pvVar11")) (+ "+") (number_literal "0x78")) () ")")))) (!= "!=") (subscript_expression "param_1[3]" (identifier "param_1") ([ "[") (number_literal "3") (] "]"))) () ")"))) () ")")) (compound_statement "{\nLAB_00117473:\n        if ((*(byte *)((long)pvVar11 + 0x72) & 2) != 0) {\n          close(*(int *)((long)pvVar11 + 0x44));\n        }\n        if (param_1[1] != 0) {\n          FUN_00115e7a();\n          param_1[1] = 0;\n        }\n        *(undefined2 *)((long)pvVar11 + 0x70) = 6;\n        FUN_00116412(param_1,pvVar11);\n        return pvVar11;\n      }" ({ "{") (labeled_statement "LAB_00117473:\n        if ((*(byte *)((long)pvVar11 + 0x72) & 2) != 0) {\n          close(*(int *)((long)pvVar11 + 0x44));\n        }" (statement_identifier "LAB_00117473") (: ":") (if_statement "if ((*(byte *)((long)pvVar11 + 0x72) & 2) != 0) {\n          close(*(int *)((long)pvVar11 + 0x44));\n        }" (if "if") (parenthesized_expression "((*(byte *)((long)pvVar11 + 0x72) & 2) != 0)" (( "(") (binary_expression "(*(byte *)((long)pvVar11 + 0x72) & 2) != 0" (parenthesized_expression "(*(byte *)((long)pvVar11 + 0x72) & 2)" (( "(") (binary_expression "*(byte *)((long)pvVar11 + 0x72) & 2" (pointer_expression "*(byte *)((long)pvVar11 + 0x72)" (* "*") (cast_expression "(byte *)((long)pvVar11 + 0x72)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)pvVar11 + 0x72)" (( "(") (binary_expression "(long)pvVar11 + 0x72" (cast_expression "(long)pvVar11" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "pvVar11")) (+ "+") (number_literal "0x72")) () ")")))) (& "&") (number_literal "2")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          close(*(int *)((long)pvVar11 + 0x44));\n        }" ({ "{") (expression_statement "close(*(int *)((long)pvVar11 + 0x44));" (call_expression "close(*(int *)((long)pvVar11 + 0x44))" (identifier "close") (argument_list "(*(int *)((long)pvVar11 + 0x44))" (( "(") (pointer_expression "*(int *)((long)pvVar11 + 0x44)" (* "*") (cast_expression "(int *)((long)pvVar11 + 0x44)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)pvVar11 + 0x44)" (( "(") (binary_expression "(long)pvVar11 + 0x44" (cast_expression "(long)pvVar11" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "pvVar11")) (+ "+") (number_literal "0x44")) () ")")))) () ")"))) (; ";")) (} "}")))) (if_statement "if (param_1[1] != 0) {\n          FUN_00115e7a();\n          param_1[1] = 0;\n        }" (if "if") (parenthesized_expression "(param_1[1] != 0)" (( "(") (binary_expression "param_1[1] != 0" (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          FUN_00115e7a();\n          param_1[1] = 0;\n        }" ({ "{") (expression_statement "FUN_00115e7a();" (call_expression "FUN_00115e7a()" (identifier "FUN_00115e7a") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "param_1[1] = 0;" (assignment_expression "param_1[1] = 0" (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) (= "=") (number_literal "0")) (; ";")) (} "}"))) (expression_statement "*(undefined2 *)((long)pvVar11 + 0x70) = 6;" (assignment_expression "*(undefined2 *)((long)pvVar11 + 0x70) = 6" (pointer_expression "*(undefined2 *)((long)pvVar11 + 0x70)" (* "*") (cast_expression "(undefined2 *)((long)pvVar11 + 0x70)" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)pvVar11 + 0x70)" (( "(") (binary_expression "(long)pvVar11 + 0x70" (cast_expression "(long)pvVar11" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "pvVar11")) (+ "+") (number_literal "0x70")) () ")")))) (= "=") (number_literal "6")) (; ";")) (expression_statement "FUN_00116412(param_1,pvVar11);" (call_expression "FUN_00116412(param_1,pvVar11)" (identifier "FUN_00116412") (argument_list "(param_1,pvVar11)" (( "(") (identifier "param_1") (, ",") (identifier "pvVar11") () ")"))) (; ";")) (return_statement "return pvVar11;" (return "return") (identifier "pvVar11") (; ";")) (} "}"))) (if_statement "if (param_1[1] == 0) {\nLAB_00117628:\n        lVar8 = FUN_001164c9(param_1,3);\n        param_1[1] = lVar8;\n        if (lVar8 == 0) {\n          if ((*(byte *)((long)param_1 + 0x49) & 0x40) == 0) {\n            if ((*(int *)((long)pvVar11 + 0x40) != 0) && (*(short *)((long)pvVar11 + 0x70) != 4)) {\n              *(undefined2 *)((long)pvVar11 + 0x70) = 7;\n            }\n            FUN_00116412(param_1,pvVar11);\n            return pvVar11;\n          }\n          return (void *)0x0;\n        }\n      }\n      else {\n        if ((uVar1 & 0x2000) != 0) {\n          *(uint *)(param_1 + 9) = uVar1 & 0xffffdfff;\n          FUN_00115e7a();\n          param_1[1] = 0;\n          goto LAB_00117628;\n        }\n        iVar5 = FUN_00116203(param_1,pvVar11,0xffffffff,*(undefined8 *)((long)pvVar11 + 0x30));\n        if (iVar5 != 0) {\n          piVar7 = __errno_location();\n          *(int *)((long)pvVar11 + 0x40) = *piVar7;\n          *(ushort *)((long)pvVar11 + 0x72) = *(ushort *)((long)pvVar11 + 0x72) | 1;\n          for (lVar8 = param_1[1]; lVar8 != 0; lVar8 = *(long *)(lVar8 + 0x10)) {\n            *(undefined8 *)(lVar8 + 0x30) = *(undefined8 *)(*(long *)(lVar8 + 8) + 0x30);\n          }\n        }\n      }" (if "if") (parenthesized_expression "(param_1[1] == 0)" (( "(") (binary_expression "param_1[1] == 0" (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\nLAB_00117628:\n        lVar8 = FUN_001164c9(param_1,3);\n        param_1[1] = lVar8;\n        if (lVar8 == 0) {\n          if ((*(byte *)((long)param_1 + 0x49) & 0x40) == 0) {\n            if ((*(int *)((long)pvVar11 + 0x40) != 0) && (*(short *)((long)pvVar11 + 0x70) != 4)) {\n              *(undefined2 *)((long)pvVar11 + 0x70) = 7;\n            }\n            FUN_00116412(param_1,pvVar11);\n            return pvVar11;\n          }\n          return (void *)0x0;\n        }\n      }" ({ "{") (labeled_statement "LAB_00117628:\n        lVar8 = FUN_001164c9(param_1,3);" (statement_identifier "LAB_00117628") (: ":") (expression_statement "lVar8 = FUN_001164c9(param_1,3);" (assignment_expression "lVar8 = FUN_001164c9(param_1,3)" (identifier "lVar8") (= "=") (call_expression "FUN_001164c9(param_1,3)" (identifier "FUN_001164c9") (argument_list "(param_1,3)" (( "(") (identifier "param_1") (, ",") (number_literal "3") () ")")))) (; ";"))) (expression_statement "param_1[1] = lVar8;" (assignment_expression "param_1[1] = lVar8" (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "lVar8")) (; ";")) (if_statement "if (lVar8 == 0) {\n          if ((*(byte *)((long)param_1 + 0x49) & 0x40) == 0) {\n            if ((*(int *)((long)pvVar11 + 0x40) != 0) && (*(short *)((long)pvVar11 + 0x70) != 4)) {\n              *(undefined2 *)((long)pvVar11 + 0x70) = 7;\n            }\n            FUN_00116412(param_1,pvVar11);\n            return pvVar11;\n          }\n          return (void *)0x0;\n        }" (if "if") (parenthesized_expression "(lVar8 == 0)" (( "(") (binary_expression "lVar8 == 0" (identifier "lVar8") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          if ((*(byte *)((long)param_1 + 0x49) & 0x40) == 0) {\n            if ((*(int *)((long)pvVar11 + 0x40) != 0) && (*(short *)((long)pvVar11 + 0x70) != 4)) {\n              *(undefined2 *)((long)pvVar11 + 0x70) = 7;\n            }\n            FUN_00116412(param_1,pvVar11);\n            return pvVar11;\n          }\n          return (void *)0x0;\n        }" ({ "{") (if_statement "if ((*(byte *)((long)param_1 + 0x49) & 0x40) == 0) {\n            if ((*(int *)((long)pvVar11 + 0x40) != 0) && (*(short *)((long)pvVar11 + 0x70) != 4)) {\n              *(undefined2 *)((long)pvVar11 + 0x70) = 7;\n            }\n            FUN_00116412(param_1,pvVar11);\n            return pvVar11;\n          }" (if "if") (parenthesized_expression "((*(byte *)((long)param_1 + 0x49) & 0x40) == 0)" (( "(") (binary_expression "(*(byte *)((long)param_1 + 0x49) & 0x40) == 0" (parenthesized_expression "(*(byte *)((long)param_1 + 0x49) & 0x40)" (( "(") (binary_expression "*(byte *)((long)param_1 + 0x49) & 0x40" (pointer_expression "*(byte *)((long)param_1 + 0x49)" (* "*") (cast_expression "(byte *)((long)param_1 + 0x49)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)param_1 + 0x49)" (( "(") (binary_expression "(long)param_1 + 0x49" (cast_expression "(long)param_1" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_1")) (+ "+") (number_literal "0x49")) () ")")))) (& "&") (number_literal "0x40")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n            if ((*(int *)((long)pvVar11 + 0x40) != 0) && (*(short *)((long)pvVar11 + 0x70) != 4)) {\n              *(undefined2 *)((long)pvVar11 + 0x70) = 7;\n            }\n            FUN_00116412(param_1,pvVar11);\n            return pvVar11;\n          }" ({ "{") (if_statement "if ((*(int *)((long)pvVar11 + 0x40) != 0) && (*(short *)((long)pvVar11 + 0x70) != 4)) {\n              *(undefined2 *)((long)pvVar11 + 0x70) = 7;\n            }" (if "if") (parenthesized_expression "((*(int *)((long)pvVar11 + 0x40) != 0) && (*(short *)((long)pvVar11 + 0x70) != 4))" (( "(") (binary_expression "(*(int *)((long)pvVar11 + 0x40) != 0) && (*(short *)((long)pvVar11 + 0x70) != 4)" (parenthesized_expression "(*(int *)((long)pvVar11 + 0x40) != 0)" (( "(") (binary_expression "*(int *)((long)pvVar11 + 0x40) != 0" (pointer_expression "*(int *)((long)pvVar11 + 0x40)" (* "*") (cast_expression "(int *)((long)pvVar11 + 0x40)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)pvVar11 + 0x40)" (( "(") (binary_expression "(long)pvVar11 + 0x40" (cast_expression "(long)pvVar11" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "pvVar11")) (+ "+") (number_literal "0x40")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(*(short *)((long)pvVar11 + 0x70) != 4)" (( "(") (binary_expression "*(short *)((long)pvVar11 + 0x70) != 4" (pointer_expression "*(short *)((long)pvVar11 + 0x70)" (* "*") (cast_expression "(short *)((long)pvVar11 + 0x70)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)pvVar11 + 0x70)" (( "(") (binary_expression "(long)pvVar11 + 0x70" (cast_expression "(long)pvVar11" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "pvVar11")) (+ "+") (number_literal "0x70")) () ")")))) (!= "!=") (number_literal "4")) () ")"))) () ")")) (compound_statement "{\n              *(undefined2 *)((long)pvVar11 + 0x70) = 7;\n            }" ({ "{") (expression_statement "*(undefined2 *)((long)pvVar11 + 0x70) = 7;" (assignment_expression "*(undefined2 *)((long)pvVar11 + 0x70) = 7" (pointer_expression "*(undefined2 *)((long)pvVar11 + 0x70)" (* "*") (cast_expression "(undefined2 *)((long)pvVar11 + 0x70)" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)pvVar11 + 0x70)" (( "(") (binary_expression "(long)pvVar11 + 0x70" (cast_expression "(long)pvVar11" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "pvVar11")) (+ "+") (number_literal "0x70")) () ")")))) (= "=") (number_literal "7")) (; ";")) (} "}"))) (expression_statement "FUN_00116412(param_1,pvVar11);" (call_expression "FUN_00116412(param_1,pvVar11)" (identifier "FUN_00116412") (argument_list "(param_1,pvVar11)" (( "(") (identifier "param_1") (, ",") (identifier "pvVar11") () ")"))) (; ";")) (return_statement "return pvVar11;" (return "return") (identifier "pvVar11") (; ";")) (} "}"))) (return_statement "return (void *)0x0;" (return "return") (cast_expression "(void *)0x0" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")) (; ";")) (} "}"))) (} "}")) (else_clause "else {\n        if ((uVar1 & 0x2000) != 0) {\n          *(uint *)(param_1 + 9) = uVar1 & 0xffffdfff;\n          FUN_00115e7a();\n          param_1[1] = 0;\n          goto LAB_00117628;\n        }\n        iVar5 = FUN_00116203(param_1,pvVar11,0xffffffff,*(undefined8 *)((long)pvVar11 + 0x30));\n        if (iVar5 != 0) {\n          piVar7 = __errno_location();\n          *(int *)((long)pvVar11 + 0x40) = *piVar7;\n          *(ushort *)((long)pvVar11 + 0x72) = *(ushort *)((long)pvVar11 + 0x72) | 1;\n          for (lVar8 = param_1[1]; lVar8 != 0; lVar8 = *(long *)(lVar8 + 0x10)) {\n            *(undefined8 *)(lVar8 + 0x30) = *(undefined8 *)(*(long *)(lVar8 + 8) + 0x30);\n          }\n        }\n      }" (else "else") (compound_statement "{\n        if ((uVar1 & 0x2000) != 0) {\n          *(uint *)(param_1 + 9) = uVar1 & 0xffffdfff;\n          FUN_00115e7a();\n          param_1[1] = 0;\n          goto LAB_00117628;\n        }\n        iVar5 = FUN_00116203(param_1,pvVar11,0xffffffff,*(undefined8 *)((long)pvVar11 + 0x30));\n        if (iVar5 != 0) {\n          piVar7 = __errno_location();\n          *(int *)((long)pvVar11 + 0x40) = *piVar7;\n          *(ushort *)((long)pvVar11 + 0x72) = *(ushort *)((long)pvVar11 + 0x72) | 1;\n          for (lVar8 = param_1[1]; lVar8 != 0; lVar8 = *(long *)(lVar8 + 0x10)) {\n            *(undefined8 *)(lVar8 + 0x30) = *(undefined8 *)(*(long *)(lVar8 + 8) + 0x30);\n          }\n        }\n      }" ({ "{") (if_statement "if ((uVar1 & 0x2000) != 0) {\n          *(uint *)(param_1 + 9) = uVar1 & 0xffffdfff;\n          FUN_00115e7a();\n          param_1[1] = 0;\n          goto LAB_00117628;\n        }" (if "if") (parenthesized_expression "((uVar1 & 0x2000) != 0)" (( "(") (binary_expression "(uVar1 & 0x2000) != 0" (parenthesized_expression "(uVar1 & 0x2000)" (( "(") (binary_expression "uVar1 & 0x2000" (identifier "uVar1") (& "&") (number_literal "0x2000")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          *(uint *)(param_1 + 9) = uVar1 & 0xffffdfff;\n          FUN_00115e7a();\n          param_1[1] = 0;\n          goto LAB_00117628;\n        }" ({ "{") (expression_statement "*(uint *)(param_1 + 9) = uVar1 & 0xffffdfff;" (assignment_expression "*(uint *)(param_1 + 9) = uVar1 & 0xffffdfff" (pointer_expression "*(uint *)(param_1 + 9)" (* "*") (cast_expression "(uint *)(param_1 + 9)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 9)" (( "(") (binary_expression "param_1 + 9" (identifier "param_1") (+ "+") (number_literal "9")) () ")")))) (= "=") (binary_expression "uVar1 & 0xffffdfff" (identifier "uVar1") (& "&") (number_literal "0xffffdfff"))) (; ";")) (expression_statement "FUN_00115e7a();" (call_expression "FUN_00115e7a()" (identifier "FUN_00115e7a") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "param_1[1] = 0;" (assignment_expression "param_1[1] = 0" (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) (= "=") (number_literal "0")) (; ";")) (goto_statement "goto LAB_00117628;" (goto "goto") (statement_identifier "LAB_00117628") (; ";")) (} "}"))) (expression_statement "iVar5 = FUN_00116203(param_1,pvVar11,0xffffffff,*(undefined8 *)((long)pvVar11 + 0x30));" (assignment_expression "iVar5 = FUN_00116203(param_1,pvVar11,0xffffffff,*(undefined8 *)((long)pvVar11 + 0x30))" (identifier "iVar5") (= "=") (call_expression "FUN_00116203(param_1,pvVar11,0xffffffff,*(undefined8 *)((long)pvVar11 + 0x30))" (identifier "FUN_00116203") (argument_list "(param_1,pvVar11,0xffffffff,*(undefined8 *)((long)pvVar11 + 0x30))" (( "(") (identifier "param_1") (, ",") (identifier "pvVar11") (, ",") (number_literal "0xffffffff") (, ",") (pointer_expression "*(undefined8 *)((long)pvVar11 + 0x30)" (* "*") (cast_expression "(undefined8 *)((long)pvVar11 + 0x30)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)pvVar11 + 0x30)" (( "(") (binary_expression "(long)pvVar11 + 0x30" (cast_expression "(long)pvVar11" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "pvVar11")) (+ "+") (number_literal "0x30")) () ")")))) () ")")))) (; ";")) (if_statement "if (iVar5 != 0) {\n          piVar7 = __errno_location();\n          *(int *)((long)pvVar11 + 0x40) = *piVar7;\n          *(ushort *)((long)pvVar11 + 0x72) = *(ushort *)((long)pvVar11 + 0x72) | 1;\n          for (lVar8 = param_1[1]; lVar8 != 0; lVar8 = *(long *)(lVar8 + 0x10)) {\n            *(undefined8 *)(lVar8 + 0x30) = *(undefined8 *)(*(long *)(lVar8 + 8) + 0x30);\n          }\n        }" (if "if") (parenthesized_expression "(iVar5 != 0)" (( "(") (binary_expression "iVar5 != 0" (identifier "iVar5") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          piVar7 = __errno_location();\n          *(int *)((long)pvVar11 + 0x40) = *piVar7;\n          *(ushort *)((long)pvVar11 + 0x72) = *(ushort *)((long)pvVar11 + 0x72) | 1;\n          for (lVar8 = param_1[1]; lVar8 != 0; lVar8 = *(long *)(lVar8 + 0x10)) {\n            *(undefined8 *)(lVar8 + 0x30) = *(undefined8 *)(*(long *)(lVar8 + 8) + 0x30);\n          }\n        }" ({ "{") (expression_statement "piVar7 = __errno_location();" (assignment_expression "piVar7 = __errno_location()" (identifier "piVar7") (= "=") (call_expression "__errno_location()" (identifier "__errno_location") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "*(int *)((long)pvVar11 + 0x40) = *piVar7;" (assignment_expression "*(int *)((long)pvVar11 + 0x40) = *piVar7" (pointer_expression "*(int *)((long)pvVar11 + 0x40)" (* "*") (cast_expression "(int *)((long)pvVar11 + 0x40)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)pvVar11 + 0x40)" (( "(") (binary_expression "(long)pvVar11 + 0x40" (cast_expression "(long)pvVar11" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "pvVar11")) (+ "+") (number_literal "0x40")) () ")")))) (= "=") (pointer_expression "*piVar7" (* "*") (identifier "piVar7"))) (; ";")) (expression_statement "*(ushort *)((long)pvVar11 + 0x72) = *(ushort *)((long)pvVar11 + 0x72) | 1;" (assignment_expression "*(ushort *)((long)pvVar11 + 0x72) = *(ushort *)((long)pvVar11 + 0x72) | 1" (pointer_expression "*(ushort *)((long)pvVar11 + 0x72)" (* "*") (cast_expression "(ushort *)((long)pvVar11 + 0x72)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)pvVar11 + 0x72)" (( "(") (binary_expression "(long)pvVar11 + 0x72" (cast_expression "(long)pvVar11" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "pvVar11")) (+ "+") (number_literal "0x72")) () ")")))) (= "=") (binary_expression "*(ushort *)((long)pvVar11 + 0x72) | 1" (pointer_expression "*(ushort *)((long)pvVar11 + 0x72)" (* "*") (cast_expression "(ushort *)((long)pvVar11 + 0x72)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)pvVar11 + 0x72)" (( "(") (binary_expression "(long)pvVar11 + 0x72" (cast_expression "(long)pvVar11" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "pvVar11")) (+ "+") (number_literal "0x72")) () ")")))) (| "|") (number_literal "1"))) (; ";")) (for_statement "for (lVar8 = param_1[1]; lVar8 != 0; lVar8 = *(long *)(lVar8 + 0x10)) {\n            *(undefined8 *)(lVar8 + 0x30) = *(undefined8 *)(*(long *)(lVar8 + 8) + 0x30);\n          }" (for "for") (( "(") (assignment_expression "lVar8 = param_1[1]" (identifier "lVar8") (= "=") (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]"))) (; ";") (binary_expression "lVar8 != 0" (identifier "lVar8") (!= "!=") (number_literal "0")) (; ";") (assignment_expression "lVar8 = *(long *)(lVar8 + 0x10)" (identifier "lVar8") (= "=") (pointer_expression "*(long *)(lVar8 + 0x10)" (* "*") (cast_expression "(long *)(lVar8 + 0x10)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar8 + 0x10)" (( "(") (binary_expression "lVar8 + 0x10" (identifier "lVar8") (+ "+") (number_literal "0x10")) () ")"))))) () ")") (compound_statement "{\n            *(undefined8 *)(lVar8 + 0x30) = *(undefined8 *)(*(long *)(lVar8 + 8) + 0x30);\n          }" ({ "{") (expression_statement "*(undefined8 *)(lVar8 + 0x30) = *(undefined8 *)(*(long *)(lVar8 + 8) + 0x30);" (assignment_expression "*(undefined8 *)(lVar8 + 0x30) = *(undefined8 *)(*(long *)(lVar8 + 8) + 0x30)" (pointer_expression "*(undefined8 *)(lVar8 + 0x30)" (* "*") (cast_expression "(undefined8 *)(lVar8 + 0x30)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar8 + 0x30)" (( "(") (binary_expression "lVar8 + 0x30" (identifier "lVar8") (+ "+") (number_literal "0x30")) () ")")))) (= "=") (pointer_expression "*(undefined8 *)(*(long *)(lVar8 + 8) + 0x30)" (* "*") (cast_expression "(undefined8 *)(*(long *)(lVar8 + 8) + 0x30)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(long *)(lVar8 + 8) + 0x30)" (( "(") (binary_expression "*(long *)(lVar8 + 8) + 0x30" (pointer_expression "*(long *)(lVar8 + 8)" (* "*") (cast_expression "(long *)(lVar8 + 8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar8 + 8)" (( "(") (binary_expression "lVar8 + 8" (identifier "lVar8") (+ "+") (number_literal "8")) () ")")))) (+ "+") (number_literal "0x30")) () ")"))))) (; ";")) (} "}"))) (} "}"))) (} "}")))) (expression_statement "pvVar11 = (void *)param_1[1];" (assignment_expression "pvVar11 = (void *)param_1[1]" (identifier "pvVar11") (= "=") (cast_expression "(void *)param_1[1]" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")))) (; ";")) (expression_statement "param_1[1] = 0;" (assignment_expression "param_1[1] = 0" (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) (= "=") (number_literal "0")) (; ";")) (} "}")) (else_clause "else {\nLAB_00117717:\n      do {\n        pvVar11 = *(void **)((long)pvVar12 + 0x10);\n        if (pvVar11 == (void *)0x0) {\n          lVar8 = *(long *)((long)pvVar12 + 8);\n          if (*(long *)(lVar8 + 0x18) != 0) {\n            *param_1 = lVar8;\n            *(undefined1 *)(param_1[4] + *(long *)(lVar8 + 0x48)) = 0;\n            pvVar11 = (void *)FUN_001164c9(param_1,3);\n            if (pvVar11 != (void *)0x0) {\n              free(pvVar12);\n              goto LAB_00117587;\n            }\n            if ((*(byte *)((long)param_1 + 0x49) & 0x40) != 0) {\n              return (void *)0x0;\n            }\n          }\n          pvVar11 = *(void **)((long)pvVar12 + 8);\n          *param_1 = (long)pvVar11;\n          free(pvVar12);\n          if (*(long *)((long)pvVar11 + 0x58) == -1) {\n            free(pvVar11);\n            piVar7 = __errno_location();\n            *piVar7 = 0;\n            *param_1 = 0;\n            return (void *)0x0;\n          }\n          if (*(short *)((long)pvVar11 + 0x70) == 0xb) {\n                    \n            abort();\n          }\n          *(undefined1 *)(param_1[4] + *(long *)((long)pvVar11 + 0x48)) = 0;\n          if (*(long *)((long)pvVar11 + 0x58) == 0) {\n            iVar5 = FUN_001161af(param_1);\n            if (iVar5 == 0) goto LAB_001177a7;\n            piVar7 = __errno_location();\n            *(int *)((long)pvVar11 + 0x40) = *piVar7;\n            *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\nLAB_001179e4:\n            if (*(short *)((long)pvVar11 + 0x70) == 2) {\n              return (void *)0x0;\n            }\n          }\n          else {\n            if ((*(ushort *)((long)pvVar11 + 0x72) & 2) == 0) {\n              if (((*(ushort *)((long)pvVar11 + 0x72) & 1) == 0) &&\n                 (iVar5 = FUN_00116203(param_1,*(undefined8 *)((long)pvVar11 + 8),0xffffffff,\n                                       &DAT_0011ff41), iVar5 != 0)) {\n                piVar7 = __errno_location();\n                *(int *)((long)pvVar11 + 0x40) = *piVar7;\n                *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\n                goto LAB_001179e4;\n              }\n            }\n            else {\n              if ((*(uint *)(param_1 + 9) & 4) == 0) {\n                if ((*(uint *)(param_1 + 9) & 0x200) == 0) {\n                  iVar5 = fchdir(*(int *)((long)pvVar11 + 0x44));\n                  if (iVar5 != 0) {\n                    piVar7 = __errno_location();\n                    *(int *)((long)pvVar11 + 0x40) = *piVar7;\n                    *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\n                  }\n                }\n                else {\n                  FUN_0011615c(param_1,*(undefined4 *)((long)pvVar11 + 0x44),1);\n                }\n              }\n              close(*(int *)((long)pvVar11 + 0x44));\n            }\nLAB_001177a7:\n            if (*(short *)((long)pvVar11 + 0x70) == 2) goto LAB_00117a88;\n          }\n          if (*(int *)((long)pvVar11 + 0x40) == 0) {\n            *(undefined2 *)((long)pvVar11 + 0x70) = 6;\n            FUN_00116412(param_1,pvVar11);\n          }\n          else {\n            *(undefined2 *)((long)pvVar11 + 0x70) = 7;\n          }\nLAB_00117a88:\n          if ((*(uint *)(param_1 + 9) & 0x4000) != 0) {\n            return (void *)0x0;\n          }\n          return pvVar11;\n        }\n        *param_1 = (long)pvVar11;\n        free(pvVar12);\n        if (*(long *)((long)pvVar11 + 0x58) == 0) {\n          iVar5 = FUN_001161af(param_1);\n          if (iVar5 != 0) {\n            *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\n            return (void *)0x0;\n          }\n          FUN_00115eb3(param_1);\n          *(long *)((long)pvVar11 + 0x48) = *(long *)((long)pvVar11 + 0x60);\n          __s = (char *)((long)pvVar11 + 0x108);\n          memmove((void *)param_1[4],__s,*(long *)((long)pvVar11 + 0x60) + 1);\n          pcVar9 = strrchr(__s,0x2f);\n          if ((pcVar9 == (char *)0x0) || ((__s == pcVar9 && (pcVar9[1] == '\0'))))\n          goto LAB_0011784f;\n          uVar10 = 0xffffffffffffffff;\n          pcVar13 = pcVar9 + 1;\n          goto code_r0x00117837;\n        }\n        pvVar12 = pvVar11;\n      } while (*(short *)((long)pvVar11 + 0x74) == 4);\n      if (*(short *)((long)pvVar11 + 0x74) == 2) {\n        sVar4 = FUN_00115abc(param_1,pvVar11,1);\n        *(short *)((long)pvVar11 + 0x70) = sVar4;\n        if ((sVar4 == 1) && ((*(byte *)(param_1 + 9) & 4) == 0)) {\n          iVar5 = FUN_00115e27(param_1,&DAT_0011ff42);\n          *(int *)((long)pvVar11 + 0x44) = iVar5;\n          if (iVar5 < 0) {\n            piVar7 = __errno_location();\n            *(int *)((long)pvVar11 + 0x40) = *piVar7;\n            *(undefined2 *)((long)pvVar11 + 0x70) = 7;\n          }\n          else {\n            *(ushort *)((long)pvVar11 + 0x72) = *(ushort *)((long)pvVar11 + 0x72) | 2;\n          }\n        }\n        *(undefined2 *)((long)pvVar11 + 0x74) = 3;\n      }\n    }" (else "else") (compound_statement "{\nLAB_00117717:\n      do {\n        pvVar11 = *(void **)((long)pvVar12 + 0x10);\n        if (pvVar11 == (void *)0x0) {\n          lVar8 = *(long *)((long)pvVar12 + 8);\n          if (*(long *)(lVar8 + 0x18) != 0) {\n            *param_1 = lVar8;\n            *(undefined1 *)(param_1[4] + *(long *)(lVar8 + 0x48)) = 0;\n            pvVar11 = (void *)FUN_001164c9(param_1,3);\n            if (pvVar11 != (void *)0x0) {\n              free(pvVar12);\n              goto LAB_00117587;\n            }\n            if ((*(byte *)((long)param_1 + 0x49) & 0x40) != 0) {\n              return (void *)0x0;\n            }\n          }\n          pvVar11 = *(void **)((long)pvVar12 + 8);\n          *param_1 = (long)pvVar11;\n          free(pvVar12);\n          if (*(long *)((long)pvVar11 + 0x58) == -1) {\n            free(pvVar11);\n            piVar7 = __errno_location();\n            *piVar7 = 0;\n            *param_1 = 0;\n            return (void *)0x0;\n          }\n          if (*(short *)((long)pvVar11 + 0x70) == 0xb) {\n                    \n            abort();\n          }\n          *(undefined1 *)(param_1[4] + *(long *)((long)pvVar11 + 0x48)) = 0;\n          if (*(long *)((long)pvVar11 + 0x58) == 0) {\n            iVar5 = FUN_001161af(param_1);\n            if (iVar5 == 0) goto LAB_001177a7;\n            piVar7 = __errno_location();\n            *(int *)((long)pvVar11 + 0x40) = *piVar7;\n            *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\nLAB_001179e4:\n            if (*(short *)((long)pvVar11 + 0x70) == 2) {\n              return (void *)0x0;\n            }\n          }\n          else {\n            if ((*(ushort *)((long)pvVar11 + 0x72) & 2) == 0) {\n              if (((*(ushort *)((long)pvVar11 + 0x72) & 1) == 0) &&\n                 (iVar5 = FUN_00116203(param_1,*(undefined8 *)((long)pvVar11 + 8),0xffffffff,\n                                       &DAT_0011ff41), iVar5 != 0)) {\n                piVar7 = __errno_location();\n                *(int *)((long)pvVar11 + 0x40) = *piVar7;\n                *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\n                goto LAB_001179e4;\n              }\n            }\n            else {\n              if ((*(uint *)(param_1 + 9) & 4) == 0) {\n                if ((*(uint *)(param_1 + 9) & 0x200) == 0) {\n                  iVar5 = fchdir(*(int *)((long)pvVar11 + 0x44));\n                  if (iVar5 != 0) {\n                    piVar7 = __errno_location();\n                    *(int *)((long)pvVar11 + 0x40) = *piVar7;\n                    *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\n                  }\n                }\n                else {\n                  FUN_0011615c(param_1,*(undefined4 *)((long)pvVar11 + 0x44),1);\n                }\n              }\n              close(*(int *)((long)pvVar11 + 0x44));\n            }\nLAB_001177a7:\n            if (*(short *)((long)pvVar11 + 0x70) == 2) goto LAB_00117a88;\n          }\n          if (*(int *)((long)pvVar11 + 0x40) == 0) {\n            *(undefined2 *)((long)pvVar11 + 0x70) = 6;\n            FUN_00116412(param_1,pvVar11);\n          }\n          else {\n            *(undefined2 *)((long)pvVar11 + 0x70) = 7;\n          }\nLAB_00117a88:\n          if ((*(uint *)(param_1 + 9) & 0x4000) != 0) {\n            return (void *)0x0;\n          }\n          return pvVar11;\n        }\n        *param_1 = (long)pvVar11;\n        free(pvVar12);\n        if (*(long *)((long)pvVar11 + 0x58) == 0) {\n          iVar5 = FUN_001161af(param_1);\n          if (iVar5 != 0) {\n            *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\n            return (void *)0x0;\n          }\n          FUN_00115eb3(param_1);\n          *(long *)((long)pvVar11 + 0x48) = *(long *)((long)pvVar11 + 0x60);\n          __s = (char *)((long)pvVar11 + 0x108);\n          memmove((void *)param_1[4],__s,*(long *)((long)pvVar11 + 0x60) + 1);\n          pcVar9 = strrchr(__s,0x2f);\n          if ((pcVar9 == (char *)0x0) || ((__s == pcVar9 && (pcVar9[1] == '\0'))))\n          goto LAB_0011784f;\n          uVar10 = 0xffffffffffffffff;\n          pcVar13 = pcVar9 + 1;\n          goto code_r0x00117837;\n        }\n        pvVar12 = pvVar11;\n      } while (*(short *)((long)pvVar11 + 0x74) == 4);\n      if (*(short *)((long)pvVar11 + 0x74) == 2) {\n        sVar4 = FUN_00115abc(param_1,pvVar11,1);\n        *(short *)((long)pvVar11 + 0x70) = sVar4;\n        if ((sVar4 == 1) && ((*(byte *)(param_1 + 9) & 4) == 0)) {\n          iVar5 = FUN_00115e27(param_1,&DAT_0011ff42);\n          *(int *)((long)pvVar11 + 0x44) = iVar5;\n          if (iVar5 < 0) {\n            piVar7 = __errno_location();\n            *(int *)((long)pvVar11 + 0x40) = *piVar7;\n            *(undefined2 *)((long)pvVar11 + 0x70) = 7;\n          }\n          else {\n            *(ushort *)((long)pvVar11 + 0x72) = *(ushort *)((long)pvVar11 + 0x72) | 2;\n          }\n        }\n        *(undefined2 *)((long)pvVar11 + 0x74) = 3;\n      }\n    }" ({ "{") (labeled_statement "LAB_00117717:\n      do {\n        pvVar11 = *(void **)((long)pvVar12 + 0x10);\n        if (pvVar11 == (void *)0x0) {\n          lVar8 = *(long *)((long)pvVar12 + 8);\n          if (*(long *)(lVar8 + 0x18) != 0) {\n            *param_1 = lVar8;\n            *(undefined1 *)(param_1[4] + *(long *)(lVar8 + 0x48)) = 0;\n            pvVar11 = (void *)FUN_001164c9(param_1,3);\n            if (pvVar11 != (void *)0x0) {\n              free(pvVar12);\n              goto LAB_00117587;\n            }\n            if ((*(byte *)((long)param_1 + 0x49) & 0x40) != 0) {\n              return (void *)0x0;\n            }\n          }\n          pvVar11 = *(void **)((long)pvVar12 + 8);\n          *param_1 = (long)pvVar11;\n          free(pvVar12);\n          if (*(long *)((long)pvVar11 + 0x58) == -1) {\n            free(pvVar11);\n            piVar7 = __errno_location();\n            *piVar7 = 0;\n            *param_1 = 0;\n            return (void *)0x0;\n          }\n          if (*(short *)((long)pvVar11 + 0x70) == 0xb) {\n                    \n            abort();\n          }\n          *(undefined1 *)(param_1[4] + *(long *)((long)pvVar11 + 0x48)) = 0;\n          if (*(long *)((long)pvVar11 + 0x58) == 0) {\n            iVar5 = FUN_001161af(param_1);\n            if (iVar5 == 0) goto LAB_001177a7;\n            piVar7 = __errno_location();\n            *(int *)((long)pvVar11 + 0x40) = *piVar7;\n            *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\nLAB_001179e4:\n            if (*(short *)((long)pvVar11 + 0x70) == 2) {\n              return (void *)0x0;\n            }\n          }\n          else {\n            if ((*(ushort *)((long)pvVar11 + 0x72) & 2) == 0) {\n              if (((*(ushort *)((long)pvVar11 + 0x72) & 1) == 0) &&\n                 (iVar5 = FUN_00116203(param_1,*(undefined8 *)((long)pvVar11 + 8),0xffffffff,\n                                       &DAT_0011ff41), iVar5 != 0)) {\n                piVar7 = __errno_location();\n                *(int *)((long)pvVar11 + 0x40) = *piVar7;\n                *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\n                goto LAB_001179e4;\n              }\n            }\n            else {\n              if ((*(uint *)(param_1 + 9) & 4) == 0) {\n                if ((*(uint *)(param_1 + 9) & 0x200) == 0) {\n                  iVar5 = fchdir(*(int *)((long)pvVar11 + 0x44));\n                  if (iVar5 != 0) {\n                    piVar7 = __errno_location();\n                    *(int *)((long)pvVar11 + 0x40) = *piVar7;\n                    *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\n                  }\n                }\n                else {\n                  FUN_0011615c(param_1,*(undefined4 *)((long)pvVar11 + 0x44),1);\n                }\n              }\n              close(*(int *)((long)pvVar11 + 0x44));\n            }\nLAB_001177a7:\n            if (*(short *)((long)pvVar11 + 0x70) == 2) goto LAB_00117a88;\n          }\n          if (*(int *)((long)pvVar11 + 0x40) == 0) {\n            *(undefined2 *)((long)pvVar11 + 0x70) = 6;\n            FUN_00116412(param_1,pvVar11);\n          }\n          else {\n            *(undefined2 *)((long)pvVar11 + 0x70) = 7;\n          }\nLAB_00117a88:\n          if ((*(uint *)(param_1 + 9) & 0x4000) != 0) {\n            return (void *)0x0;\n          }\n          return pvVar11;\n        }\n        *param_1 = (long)pvVar11;\n        free(pvVar12);\n        if (*(long *)((long)pvVar11 + 0x58) == 0) {\n          iVar5 = FUN_001161af(param_1);\n          if (iVar5 != 0) {\n            *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\n            return (void *)0x0;\n          }\n          FUN_00115eb3(param_1);\n          *(long *)((long)pvVar11 + 0x48) = *(long *)((long)pvVar11 + 0x60);\n          __s = (char *)((long)pvVar11 + 0x108);\n          memmove((void *)param_1[4],__s,*(long *)((long)pvVar11 + 0x60) + 1);\n          pcVar9 = strrchr(__s,0x2f);\n          if ((pcVar9 == (char *)0x0) || ((__s == pcVar9 && (pcVar9[1] == '\0'))))\n          goto LAB_0011784f;\n          uVar10 = 0xffffffffffffffff;\n          pcVar13 = pcVar9 + 1;\n          goto code_r0x00117837;\n        }\n        pvVar12 = pvVar11;\n      } while (*(short *)((long)pvVar11 + 0x74) == 4);" (statement_identifier "LAB_00117717") (: ":") (do_statement "do {\n        pvVar11 = *(void **)((long)pvVar12 + 0x10);\n        if (pvVar11 == (void *)0x0) {\n          lVar8 = *(long *)((long)pvVar12 + 8);\n          if (*(long *)(lVar8 + 0x18) != 0) {\n            *param_1 = lVar8;\n            *(undefined1 *)(param_1[4] + *(long *)(lVar8 + 0x48)) = 0;\n            pvVar11 = (void *)FUN_001164c9(param_1,3);\n            if (pvVar11 != (void *)0x0) {\n              free(pvVar12);\n              goto LAB_00117587;\n            }\n            if ((*(byte *)((long)param_1 + 0x49) & 0x40) != 0) {\n              return (void *)0x0;\n            }\n          }\n          pvVar11 = *(void **)((long)pvVar12 + 8);\n          *param_1 = (long)pvVar11;\n          free(pvVar12);\n          if (*(long *)((long)pvVar11 + 0x58) == -1) {\n            free(pvVar11);\n            piVar7 = __errno_location();\n            *piVar7 = 0;\n            *param_1 = 0;\n            return (void *)0x0;\n          }\n          if (*(short *)((long)pvVar11 + 0x70) == 0xb) {\n                    \n            abort();\n          }\n          *(undefined1 *)(param_1[4] + *(long *)((long)pvVar11 + 0x48)) = 0;\n          if (*(long *)((long)pvVar11 + 0x58) == 0) {\n            iVar5 = FUN_001161af(param_1);\n            if (iVar5 == 0) goto LAB_001177a7;\n            piVar7 = __errno_location();\n            *(int *)((long)pvVar11 + 0x40) = *piVar7;\n            *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\nLAB_001179e4:\n            if (*(short *)((long)pvVar11 + 0x70) == 2) {\n              return (void *)0x0;\n            }\n          }\n          else {\n            if ((*(ushort *)((long)pvVar11 + 0x72) & 2) == 0) {\n              if (((*(ushort *)((long)pvVar11 + 0x72) & 1) == 0) &&\n                 (iVar5 = FUN_00116203(param_1,*(undefined8 *)((long)pvVar11 + 8),0xffffffff,\n                                       &DAT_0011ff41), iVar5 != 0)) {\n                piVar7 = __errno_location();\n                *(int *)((long)pvVar11 + 0x40) = *piVar7;\n                *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\n                goto LAB_001179e4;\n              }\n            }\n            else {\n              if ((*(uint *)(param_1 + 9) & 4) == 0) {\n                if ((*(uint *)(param_1 + 9) & 0x200) == 0) {\n                  iVar5 = fchdir(*(int *)((long)pvVar11 + 0x44));\n                  if (iVar5 != 0) {\n                    piVar7 = __errno_location();\n                    *(int *)((long)pvVar11 + 0x40) = *piVar7;\n                    *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\n                  }\n                }\n                else {\n                  FUN_0011615c(param_1,*(undefined4 *)((long)pvVar11 + 0x44),1);\n                }\n              }\n              close(*(int *)((long)pvVar11 + 0x44));\n            }\nLAB_001177a7:\n            if (*(short *)((long)pvVar11 + 0x70) == 2) goto LAB_00117a88;\n          }\n          if (*(int *)((long)pvVar11 + 0x40) == 0) {\n            *(undefined2 *)((long)pvVar11 + 0x70) = 6;\n            FUN_00116412(param_1,pvVar11);\n          }\n          else {\n            *(undefined2 *)((long)pvVar11 + 0x70) = 7;\n          }\nLAB_00117a88:\n          if ((*(uint *)(param_1 + 9) & 0x4000) != 0) {\n            return (void *)0x0;\n          }\n          return pvVar11;\n        }\n        *param_1 = (long)pvVar11;\n        free(pvVar12);\n        if (*(long *)((long)pvVar11 + 0x58) == 0) {\n          iVar5 = FUN_001161af(param_1);\n          if (iVar5 != 0) {\n            *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\n            return (void *)0x0;\n          }\n          FUN_00115eb3(param_1);\n          *(long *)((long)pvVar11 + 0x48) = *(long *)((long)pvVar11 + 0x60);\n          __s = (char *)((long)pvVar11 + 0x108);\n          memmove((void *)param_1[4],__s,*(long *)((long)pvVar11 + 0x60) + 1);\n          pcVar9 = strrchr(__s,0x2f);\n          if ((pcVar9 == (char *)0x0) || ((__s == pcVar9 && (pcVar9[1] == '\0'))))\n          goto LAB_0011784f;\n          uVar10 = 0xffffffffffffffff;\n          pcVar13 = pcVar9 + 1;\n          goto code_r0x00117837;\n        }\n        pvVar12 = pvVar11;\n      } while (*(short *)((long)pvVar11 + 0x74) == 4);" (do "do") (compound_statement "{\n        pvVar11 = *(void **)((long)pvVar12 + 0x10);\n        if (pvVar11 == (void *)0x0) {\n          lVar8 = *(long *)((long)pvVar12 + 8);\n          if (*(long *)(lVar8 + 0x18) != 0) {\n            *param_1 = lVar8;\n            *(undefined1 *)(param_1[4] + *(long *)(lVar8 + 0x48)) = 0;\n            pvVar11 = (void *)FUN_001164c9(param_1,3);\n            if (pvVar11 != (void *)0x0) {\n              free(pvVar12);\n              goto LAB_00117587;\n            }\n            if ((*(byte *)((long)param_1 + 0x49) & 0x40) != 0) {\n              return (void *)0x0;\n            }\n          }\n          pvVar11 = *(void **)((long)pvVar12 + 8);\n          *param_1 = (long)pvVar11;\n          free(pvVar12);\n          if (*(long *)((long)pvVar11 + 0x58) == -1) {\n            free(pvVar11);\n            piVar7 = __errno_location();\n            *piVar7 = 0;\n            *param_1 = 0;\n            return (void *)0x0;\n          }\n          if (*(short *)((long)pvVar11 + 0x70) == 0xb) {\n                    \n            abort();\n          }\n          *(undefined1 *)(param_1[4] + *(long *)((long)pvVar11 + 0x48)) = 0;\n          if (*(long *)((long)pvVar11 + 0x58) == 0) {\n            iVar5 = FUN_001161af(param_1);\n            if (iVar5 == 0) goto LAB_001177a7;\n            piVar7 = __errno_location();\n            *(int *)((long)pvVar11 + 0x40) = *piVar7;\n            *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\nLAB_001179e4:\n            if (*(short *)((long)pvVar11 + 0x70) == 2) {\n              return (void *)0x0;\n            }\n          }\n          else {\n            if ((*(ushort *)((long)pvVar11 + 0x72) & 2) == 0) {\n              if (((*(ushort *)((long)pvVar11 + 0x72) & 1) == 0) &&\n                 (iVar5 = FUN_00116203(param_1,*(undefined8 *)((long)pvVar11 + 8),0xffffffff,\n                                       &DAT_0011ff41), iVar5 != 0)) {\n                piVar7 = __errno_location();\n                *(int *)((long)pvVar11 + 0x40) = *piVar7;\n                *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\n                goto LAB_001179e4;\n              }\n            }\n            else {\n              if ((*(uint *)(param_1 + 9) & 4) == 0) {\n                if ((*(uint *)(param_1 + 9) & 0x200) == 0) {\n                  iVar5 = fchdir(*(int *)((long)pvVar11 + 0x44));\n                  if (iVar5 != 0) {\n                    piVar7 = __errno_location();\n                    *(int *)((long)pvVar11 + 0x40) = *piVar7;\n                    *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\n                  }\n                }\n                else {\n                  FUN_0011615c(param_1,*(undefined4 *)((long)pvVar11 + 0x44),1);\n                }\n              }\n              close(*(int *)((long)pvVar11 + 0x44));\n            }\nLAB_001177a7:\n            if (*(short *)((long)pvVar11 + 0x70) == 2) goto LAB_00117a88;\n          }\n          if (*(int *)((long)pvVar11 + 0x40) == 0) {\n            *(undefined2 *)((long)pvVar11 + 0x70) = 6;\n            FUN_00116412(param_1,pvVar11);\n          }\n          else {\n            *(undefined2 *)((long)pvVar11 + 0x70) = 7;\n          }\nLAB_00117a88:\n          if ((*(uint *)(param_1 + 9) & 0x4000) != 0) {\n            return (void *)0x0;\n          }\n          return pvVar11;\n        }\n        *param_1 = (long)pvVar11;\n        free(pvVar12);\n        if (*(long *)((long)pvVar11 + 0x58) == 0) {\n          iVar5 = FUN_001161af(param_1);\n          if (iVar5 != 0) {\n            *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\n            return (void *)0x0;\n          }\n          FUN_00115eb3(param_1);\n          *(long *)((long)pvVar11 + 0x48) = *(long *)((long)pvVar11 + 0x60);\n          __s = (char *)((long)pvVar11 + 0x108);\n          memmove((void *)param_1[4],__s,*(long *)((long)pvVar11 + 0x60) + 1);\n          pcVar9 = strrchr(__s,0x2f);\n          if ((pcVar9 == (char *)0x0) || ((__s == pcVar9 && (pcVar9[1] == '\0'))))\n          goto LAB_0011784f;\n          uVar10 = 0xffffffffffffffff;\n          pcVar13 = pcVar9 + 1;\n          goto code_r0x00117837;\n        }\n        pvVar12 = pvVar11;\n      }" ({ "{") (expression_statement "pvVar11 = *(void **)((long)pvVar12 + 0x10);" (assignment_expression "pvVar11 = *(void **)((long)pvVar12 + 0x10)" (identifier "pvVar11") (= "=") (pointer_expression "*(void **)((long)pvVar12 + 0x10)" (* "*") (cast_expression "(void **)((long)pvVar12 + 0x10)" (( "(") (type_descriptor "void **" (primitive_type "void") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "((long)pvVar12 + 0x10)" (( "(") (binary_expression "(long)pvVar12 + 0x10" (cast_expression "(long)pvVar12" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "pvVar12")) (+ "+") (number_literal "0x10")) () ")"))))) (; ";")) (if_statement "if (pvVar11 == (void *)0x0) {\n          lVar8 = *(long *)((long)pvVar12 + 8);\n          if (*(long *)(lVar8 + 0x18) != 0) {\n            *param_1 = lVar8;\n            *(undefined1 *)(param_1[4] + *(long *)(lVar8 + 0x48)) = 0;\n            pvVar11 = (void *)FUN_001164c9(param_1,3);\n            if (pvVar11 != (void *)0x0) {\n              free(pvVar12);\n              goto LAB_00117587;\n            }\n            if ((*(byte *)((long)param_1 + 0x49) & 0x40) != 0) {\n              return (void *)0x0;\n            }\n          }\n          pvVar11 = *(void **)((long)pvVar12 + 8);\n          *param_1 = (long)pvVar11;\n          free(pvVar12);\n          if (*(long *)((long)pvVar11 + 0x58) == -1) {\n            free(pvVar11);\n            piVar7 = __errno_location();\n            *piVar7 = 0;\n            *param_1 = 0;\n            return (void *)0x0;\n          }\n          if (*(short *)((long)pvVar11 + 0x70) == 0xb) {\n                    \n            abort();\n          }\n          *(undefined1 *)(param_1[4] + *(long *)((long)pvVar11 + 0x48)) = 0;\n          if (*(long *)((long)pvVar11 + 0x58) == 0) {\n            iVar5 = FUN_001161af(param_1);\n            if (iVar5 == 0) goto LAB_001177a7;\n            piVar7 = __errno_location();\n            *(int *)((long)pvVar11 + 0x40) = *piVar7;\n            *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\nLAB_001179e4:\n            if (*(short *)((long)pvVar11 + 0x70) == 2) {\n              return (void *)0x0;\n            }\n          }\n          else {\n            if ((*(ushort *)((long)pvVar11 + 0x72) & 2) == 0) {\n              if (((*(ushort *)((long)pvVar11 + 0x72) & 1) == 0) &&\n                 (iVar5 = FUN_00116203(param_1,*(undefined8 *)((long)pvVar11 + 8),0xffffffff,\n                                       &DAT_0011ff41), iVar5 != 0)) {\n                piVar7 = __errno_location();\n                *(int *)((long)pvVar11 + 0x40) = *piVar7;\n                *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\n                goto LAB_001179e4;\n              }\n            }\n            else {\n              if ((*(uint *)(param_1 + 9) & 4) == 0) {\n                if ((*(uint *)(param_1 + 9) & 0x200) == 0) {\n                  iVar5 = fchdir(*(int *)((long)pvVar11 + 0x44));\n                  if (iVar5 != 0) {\n                    piVar7 = __errno_location();\n                    *(int *)((long)pvVar11 + 0x40) = *piVar7;\n                    *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\n                  }\n                }\n                else {\n                  FUN_0011615c(param_1,*(undefined4 *)((long)pvVar11 + 0x44),1);\n                }\n              }\n              close(*(int *)((long)pvVar11 + 0x44));\n            }\nLAB_001177a7:\n            if (*(short *)((long)pvVar11 + 0x70) == 2) goto LAB_00117a88;\n          }\n          if (*(int *)((long)pvVar11 + 0x40) == 0) {\n            *(undefined2 *)((long)pvVar11 + 0x70) = 6;\n            FUN_00116412(param_1,pvVar11);\n          }\n          else {\n            *(undefined2 *)((long)pvVar11 + 0x70) = 7;\n          }\nLAB_00117a88:\n          if ((*(uint *)(param_1 + 9) & 0x4000) != 0) {\n            return (void *)0x0;\n          }\n          return pvVar11;\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          lVar8 = *(long *)((long)pvVar12 + 8);\n          if (*(long *)(lVar8 + 0x18) != 0) {\n            *param_1 = lVar8;\n            *(undefined1 *)(param_1[4] + *(long *)(lVar8 + 0x48)) = 0;\n            pvVar11 = (void *)FUN_001164c9(param_1,3);\n            if (pvVar11 != (void *)0x0) {\n              free(pvVar12);\n              goto LAB_00117587;\n            }\n            if ((*(byte *)((long)param_1 + 0x49) & 0x40) != 0) {\n              return (void *)0x0;\n            }\n          }\n          pvVar11 = *(void **)((long)pvVar12 + 8);\n          *param_1 = (long)pvVar11;\n          free(pvVar12);\n          if (*(long *)((long)pvVar11 + 0x58) == -1) {\n            free(pvVar11);\n            piVar7 = __errno_location();\n            *piVar7 = 0;\n            *param_1 = 0;\n            return (void *)0x0;\n          }\n          if (*(short *)((long)pvVar11 + 0x70) == 0xb) {\n                    \n            abort();\n          }\n          *(undefined1 *)(param_1[4] + *(long *)((long)pvVar11 + 0x48)) = 0;\n          if (*(long *)((long)pvVar11 + 0x58) == 0) {\n            iVar5 = FUN_001161af(param_1);\n            if (iVar5 == 0) goto LAB_001177a7;\n            piVar7 = __errno_location();\n            *(int *)((long)pvVar11 + 0x40) = *piVar7;\n            *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\nLAB_001179e4:\n            if (*(short *)((long)pvVar11 + 0x70) == 2) {\n              return (void *)0x0;\n            }\n          }\n          else {\n            if ((*(ushort *)((long)pvVar11 + 0x72) & 2) == 0) {\n              if (((*(ushort *)((long)pvVar11 + 0x72) & 1) == 0) &&\n                 (iVar5 = FUN_00116203(param_1,*(undefined8 *)((long)pvVar11 + 8),0xffffffff,\n                                       &DAT_0011ff41), iVar5 != 0)) {\n                piVar7 = __errno_location();\n                *(int *)((long)pvVar11 + 0x40) = *piVar7;\n                *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\n                goto LAB_001179e4;\n              }\n            }\n            else {\n              if ((*(uint *)(param_1 + 9) & 4) == 0) {\n                if ((*(uint *)(param_1 + 9) & 0x200) == 0) {\n                  iVar5 = fchdir(*(int *)((long)pvVar11 + 0x44));\n                  if (iVar5 != 0) {\n                    piVar7 = __errno_location();\n                    *(int *)((long)pvVar11 + 0x40) = *piVar7;\n                    *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\n                  }\n                }\n                else {\n                  FUN_0011615c(param_1,*(undefined4 *)((long)pvVar11 + 0x44),1);\n                }\n              }\n              close(*(int *)((long)pvVar11 + 0x44));\n            }\nLAB_001177a7:\n            if (*(short *)((long)pvVar11 + 0x70) == 2) goto LAB_00117a88;\n          }\n          if (*(int *)((long)pvVar11 + 0x40) == 0) {\n            *(undefined2 *)((long)pvVar11 + 0x70) = 6;\n            FUN_00116412(param_1,pvVar11);\n          }\n          else {\n            *(undefined2 *)((long)pvVar11 + 0x70) = 7;\n          }\nLAB_00117a88:\n          if ((*(uint *)(param_1 + 9) & 0x4000) != 0) {\n            return (void *)0x0;\n          }\n          return pvVar11;\n        }" ({ "{") (expression_statement "lVar8 = *(long *)((long)pvVar12 + 8);" (assignment_expression "lVar8 = *(long *)((long)pvVar12 + 8)" (identifier "lVar8") (= "=") (pointer_expression "*(long *)((long)pvVar12 + 8)" (* "*") (cast_expression "(long *)((long)pvVar12 + 8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)pvVar12 + 8)" (( "(") (binary_expression "(long)pvVar12 + 8" (cast_expression "(long)pvVar12" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "pvVar12")) (+ "+") (number_literal "8")) () ")"))))) (; ";")) (if_statement "if (*(long *)(lVar8 + 0x18) != 0) {\n            *param_1 = lVar8;\n            *(undefined1 *)(param_1[4] + *(long *)(lVar8 + 0x48)) = 0;\n            pvVar11 = (void *)FUN_001164c9(param_1,3);\n            if (pvVar11 != (void *)0x0) {\n              free(pvVar12);\n              goto LAB_00117587;\n            }\n            if ((*(byte *)((long)param_1 + 0x49) & 0x40) != 0) {\n              return (void *)0x0;\n            }\n          }" (if "if") (parenthesized_expression "(*(long *)(lVar8 + 0x18) != 0)" (( "(") (binary_expression "*(long *)(lVar8 + 0x18) != 0" (pointer_expression "*(long *)(lVar8 + 0x18)" (* "*") (cast_expression "(long *)(lVar8 + 0x18)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar8 + 0x18)" (( "(") (binary_expression "lVar8 + 0x18" (identifier "lVar8") (+ "+") (number_literal "0x18")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n            *param_1 = lVar8;\n            *(undefined1 *)(param_1[4] + *(long *)(lVar8 + 0x48)) = 0;\n            pvVar11 = (void *)FUN_001164c9(param_1,3);\n            if (pvVar11 != (void *)0x0) {\n              free(pvVar12);\n              goto LAB_00117587;\n            }\n            if ((*(byte *)((long)param_1 + 0x49) & 0x40) != 0) {\n              return (void *)0x0;\n            }\n          }" ({ "{") (expression_statement "*param_1 = lVar8;" (assignment_expression "*param_1 = lVar8" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (identifier "lVar8")) (; ";")) (expression_statement "*(undefined1 *)(param_1[4] + *(long *)(lVar8 + 0x48)) = 0;" (assignment_expression "*(undefined1 *)(param_1[4] + *(long *)(lVar8 + 0x48)) = 0" (pointer_expression "*(undefined1 *)(param_1[4] + *(long *)(lVar8 + 0x48))" (* "*") (cast_expression "(undefined1 *)(param_1[4] + *(long *)(lVar8 + 0x48))" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1[4] + *(long *)(lVar8 + 0x48))" (( "(") (binary_expression "param_1[4] + *(long *)(lVar8 + 0x48)" (subscript_expression "param_1[4]" (identifier "param_1") ([ "[") (number_literal "4") (] "]")) (+ "+") (pointer_expression "*(long *)(lVar8 + 0x48)" (* "*") (cast_expression "(long *)(lVar8 + 0x48)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar8 + 0x48)" (( "(") (binary_expression "lVar8 + 0x48" (identifier "lVar8") (+ "+") (number_literal "0x48")) () ")"))))) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "pvVar11 = (void *)FUN_001164c9(param_1,3);" (assignment_expression "pvVar11 = (void *)FUN_001164c9(param_1,3)" (identifier "pvVar11") (= "=") (cast_expression "(void *)FUN_001164c9(param_1,3)" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_001164c9(param_1,3)" (identifier "FUN_001164c9") (argument_list "(param_1,3)" (( "(") (identifier "param_1") (, ",") (number_literal "3") () ")"))))) (; ";")) (if_statement "if (pvVar11 != (void *)0x0) {\n              free(pvVar12);\n              goto LAB_00117587;\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              free(pvVar12);\n              goto LAB_00117587;\n            }" ({ "{") (expression_statement "free(pvVar12);" (call_expression "free(pvVar12)" (identifier "free") (argument_list "(pvVar12)" (( "(") (identifier "pvVar12") () ")"))) (; ";")) (goto_statement "goto LAB_00117587;" (goto "goto") (statement_identifier "LAB_00117587") (; ";")) (} "}"))) (if_statement "if ((*(byte *)((long)param_1 + 0x49) & 0x40) != 0) {\n              return (void *)0x0;\n            }" (if "if") (parenthesized_expression "((*(byte *)((long)param_1 + 0x49) & 0x40) != 0)" (( "(") (binary_expression "(*(byte *)((long)param_1 + 0x49) & 0x40) != 0" (parenthesized_expression "(*(byte *)((long)param_1 + 0x49) & 0x40)" (( "(") (binary_expression "*(byte *)((long)param_1 + 0x49) & 0x40" (pointer_expression "*(byte *)((long)param_1 + 0x49)" (* "*") (cast_expression "(byte *)((long)param_1 + 0x49)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)param_1 + 0x49)" (( "(") (binary_expression "(long)param_1 + 0x49" (cast_expression "(long)param_1" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_1")) (+ "+") (number_literal "0x49")) () ")")))) (& "&") (number_literal "0x40")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n              return (void *)0x0;\n            }" ({ "{") (return_statement "return (void *)0x0;" (return "return") (cast_expression "(void *)0x0" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")) (; ";")) (} "}"))) (} "}"))) (expression_statement "pvVar11 = *(void **)((long)pvVar12 + 8);" (assignment_expression "pvVar11 = *(void **)((long)pvVar12 + 8)" (identifier "pvVar11") (= "=") (pointer_expression "*(void **)((long)pvVar12 + 8)" (* "*") (cast_expression "(void **)((long)pvVar12 + 8)" (( "(") (type_descriptor "void **" (primitive_type "void") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "((long)pvVar12 + 8)" (( "(") (binary_expression "(long)pvVar12 + 8" (cast_expression "(long)pvVar12" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "pvVar12")) (+ "+") (number_literal "8")) () ")"))))) (; ";")) (expression_statement "*param_1 = (long)pvVar11;" (assignment_expression "*param_1 = (long)pvVar11" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (cast_expression "(long)pvVar11" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "pvVar11"))) (; ";")) (expression_statement "free(pvVar12);" (call_expression "free(pvVar12)" (identifier "free") (argument_list "(pvVar12)" (( "(") (identifier "pvVar12") () ")"))) (; ";")) (if_statement "if (*(long *)((long)pvVar11 + 0x58) == -1) {\n            free(pvVar11);\n            piVar7 = __errno_location();\n            *piVar7 = 0;\n            *param_1 = 0;\n            return (void *)0x0;\n          }" (if "if") (parenthesized_expression "(*(long *)((long)pvVar11 + 0x58) == -1)" (( "(") (binary_expression "*(long *)((long)pvVar11 + 0x58) == -1" (pointer_expression "*(long *)((long)pvVar11 + 0x58)" (* "*") (cast_expression "(long *)((long)pvVar11 + 0x58)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)pvVar11 + 0x58)" (( "(") (binary_expression "(long)pvVar11 + 0x58" (cast_expression "(long)pvVar11" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "pvVar11")) (+ "+") (number_literal "0x58")) () ")")))) (== "==") (number_literal "-1")) () ")")) (compound_statement "{\n            free(pvVar11);\n            piVar7 = __errno_location();\n            *piVar7 = 0;\n            *param_1 = 0;\n            return (void *)0x0;\n          }" ({ "{") (expression_statement "free(pvVar11);" (call_expression "free(pvVar11)" (identifier "free") (argument_list "(pvVar11)" (( "(") (identifier "pvVar11") () ")"))) (; ";")) (expression_statement "piVar7 = __errno_location();" (assignment_expression "piVar7 = __errno_location()" (identifier "piVar7") (= "=") (call_expression "__errno_location()" (identifier "__errno_location") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "*piVar7 = 0;" (assignment_expression "*piVar7 = 0" (pointer_expression "*piVar7" (* "*") (identifier "piVar7")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*param_1 = 0;" (assignment_expression "*param_1 = 0" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (number_literal "0")) (; ";")) (return_statement "return (void *)0x0;" (return "return") (cast_expression "(void *)0x0" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")) (; ";")) (} "}"))) (if_statement "if (*(short *)((long)pvVar11 + 0x70) == 0xb) {\n                    \n            abort();\n          }" (if "if") (parenthesized_expression "(*(short *)((long)pvVar11 + 0x70) == 0xb)" (( "(") (binary_expression "*(short *)((long)pvVar11 + 0x70) == 0xb" (pointer_expression "*(short *)((long)pvVar11 + 0x70)" (* "*") (cast_expression "(short *)((long)pvVar11 + 0x70)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)pvVar11 + 0x70)" (( "(") (binary_expression "(long)pvVar11 + 0x70" (cast_expression "(long)pvVar11" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "pvVar11")) (+ "+") (number_literal "0x70")) () ")")))) (== "==") (number_literal "0xb")) () ")")) (compound_statement "{\n                    \n            abort();\n          }" ({ "{") (expression_statement "abort();" (call_expression "abort()" (identifier "abort") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (expression_statement "*(undefined1 *)(param_1[4] + *(long *)((long)pvVar11 + 0x48)) = 0;" (assignment_expression "*(undefined1 *)(param_1[4] + *(long *)((long)pvVar11 + 0x48)) = 0" (pointer_expression "*(undefined1 *)(param_1[4] + *(long *)((long)pvVar11 + 0x48))" (* "*") (cast_expression "(undefined1 *)(param_1[4] + *(long *)((long)pvVar11 + 0x48))" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1[4] + *(long *)((long)pvVar11 + 0x48))" (( "(") (binary_expression "param_1[4] + *(long *)((long)pvVar11 + 0x48)" (subscript_expression "param_1[4]" (identifier "param_1") ([ "[") (number_literal "4") (] "]")) (+ "+") (pointer_expression "*(long *)((long)pvVar11 + 0x48)" (* "*") (cast_expression "(long *)((long)pvVar11 + 0x48)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)pvVar11 + 0x48)" (( "(") (binary_expression "(long)pvVar11 + 0x48" (cast_expression "(long)pvVar11" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "pvVar11")) (+ "+") (number_literal "0x48")) () ")"))))) () ")")))) (= "=") (number_literal "0")) (; ";")) (if_statement "if (*(long *)((long)pvVar11 + 0x58) == 0) {\n            iVar5 = FUN_001161af(param_1);\n            if (iVar5 == 0) goto LAB_001177a7;\n            piVar7 = __errno_location();\n            *(int *)((long)pvVar11 + 0x40) = *piVar7;\n            *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\nLAB_001179e4:\n            if (*(short *)((long)pvVar11 + 0x70) == 2) {\n              return (void *)0x0;\n            }\n          }\n          else {\n            if ((*(ushort *)((long)pvVar11 + 0x72) & 2) == 0) {\n              if (((*(ushort *)((long)pvVar11 + 0x72) & 1) == 0) &&\n                 (iVar5 = FUN_00116203(param_1,*(undefined8 *)((long)pvVar11 + 8),0xffffffff,\n                                       &DAT_0011ff41), iVar5 != 0)) {\n                piVar7 = __errno_location();\n                *(int *)((long)pvVar11 + 0x40) = *piVar7;\n                *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\n                goto LAB_001179e4;\n              }\n            }\n            else {\n              if ((*(uint *)(param_1 + 9) & 4) == 0) {\n                if ((*(uint *)(param_1 + 9) & 0x200) == 0) {\n                  iVar5 = fchdir(*(int *)((long)pvVar11 + 0x44));\n                  if (iVar5 != 0) {\n                    piVar7 = __errno_location();\n                    *(int *)((long)pvVar11 + 0x40) = *piVar7;\n                    *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\n                  }\n                }\n                else {\n                  FUN_0011615c(param_1,*(undefined4 *)((long)pvVar11 + 0x44),1);\n                }\n              }\n              close(*(int *)((long)pvVar11 + 0x44));\n            }\nLAB_001177a7:\n            if (*(short *)((long)pvVar11 + 0x70) == 2) goto LAB_00117a88;\n          }" (if "if") (parenthesized_expression "(*(long *)((long)pvVar11 + 0x58) == 0)" (( "(") (binary_expression "*(long *)((long)pvVar11 + 0x58) == 0" (pointer_expression "*(long *)((long)pvVar11 + 0x58)" (* "*") (cast_expression "(long *)((long)pvVar11 + 0x58)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)pvVar11 + 0x58)" (( "(") (binary_expression "(long)pvVar11 + 0x58" (cast_expression "(long)pvVar11" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "pvVar11")) (+ "+") (number_literal "0x58")) () ")")))) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n            iVar5 = FUN_001161af(param_1);\n            if (iVar5 == 0) goto LAB_001177a7;\n            piVar7 = __errno_location();\n            *(int *)((long)pvVar11 + 0x40) = *piVar7;\n            *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\nLAB_001179e4:\n            if (*(short *)((long)pvVar11 + 0x70) == 2) {\n              return (void *)0x0;\n            }\n          }" ({ "{") (expression_statement "iVar5 = FUN_001161af(param_1);" (assignment_expression "iVar5 = FUN_001161af(param_1)" (identifier "iVar5") (= "=") (call_expression "FUN_001161af(param_1)" (identifier "FUN_001161af") (argument_list "(param_1)" (( "(") (identifier "param_1") () ")")))) (; ";")) (if_statement "if (iVar5 == 0) goto LAB_001177a7;" (if "if") (parenthesized_expression "(iVar5 == 0)" (( "(") (binary_expression "iVar5 == 0" (identifier "iVar5") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_001177a7;" (goto "goto") (statement_identifier "LAB_001177a7") (; ";"))) (expression_statement "piVar7 = __errno_location();" (assignment_expression "piVar7 = __errno_location()" (identifier "piVar7") (= "=") (call_expression "__errno_location()" (identifier "__errno_location") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "*(int *)((long)pvVar11 + 0x40) = *piVar7;" (assignment_expression "*(int *)((long)pvVar11 + 0x40) = *piVar7" (pointer_expression "*(int *)((long)pvVar11 + 0x40)" (* "*") (cast_expression "(int *)((long)pvVar11 + 0x40)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)pvVar11 + 0x40)" (( "(") (binary_expression "(long)pvVar11 + 0x40" (cast_expression "(long)pvVar11" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "pvVar11")) (+ "+") (number_literal "0x40")) () ")")))) (= "=") (pointer_expression "*piVar7" (* "*") (identifier "piVar7"))) (; ";")) (expression_statement "*(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;" (assignment_expression "*(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000" (pointer_expression "*(uint *)(param_1 + 9)" (* "*") (cast_expression "(uint *)(param_1 + 9)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 9)" (( "(") (binary_expression "param_1 + 9" (identifier "param_1") (+ "+") (number_literal "9")) () ")")))) (= "=") (binary_expression "*(uint *)(param_1 + 9) | 0x4000" (pointer_expression "*(uint *)(param_1 + 9)" (* "*") (cast_expression "(uint *)(param_1 + 9)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 9)" (( "(") (binary_expression "param_1 + 9" (identifier "param_1") (+ "+") (number_literal "9")) () ")")))) (| "|") (number_literal "0x4000"))) (; ";")) (labeled_statement "LAB_001179e4:\n            if (*(short *)((long)pvVar11 + 0x70) == 2) {\n              return (void *)0x0;\n            }" (statement_identifier "LAB_001179e4") (: ":") (if_statement "if (*(short *)((long)pvVar11 + 0x70) == 2) {\n              return (void *)0x0;\n            }" (if "if") (parenthesized_expression "(*(short *)((long)pvVar11 + 0x70) == 2)" (( "(") (binary_expression "*(short *)((long)pvVar11 + 0x70) == 2" (pointer_expression "*(short *)((long)pvVar11 + 0x70)" (* "*") (cast_expression "(short *)((long)pvVar11 + 0x70)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)pvVar11 + 0x70)" (( "(") (binary_expression "(long)pvVar11 + 0x70" (cast_expression "(long)pvVar11" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "pvVar11")) (+ "+") (number_literal "0x70")) () ")")))) (== "==") (number_literal "2")) () ")")) (compound_statement "{\n              return (void *)0x0;\n            }" ({ "{") (return_statement "return (void *)0x0;" (return "return") (cast_expression "(void *)0x0" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")) (; ";")) (} "}")))) (} "}")) (else_clause "else {\n            if ((*(ushort *)((long)pvVar11 + 0x72) & 2) == 0) {\n              if (((*(ushort *)((long)pvVar11 + 0x72) & 1) == 0) &&\n                 (iVar5 = FUN_00116203(param_1,*(undefined8 *)((long)pvVar11 + 8),0xffffffff,\n                                       &DAT_0011ff41), iVar5 != 0)) {\n                piVar7 = __errno_location();\n                *(int *)((long)pvVar11 + 0x40) = *piVar7;\n                *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\n                goto LAB_001179e4;\n              }\n            }\n            else {\n              if ((*(uint *)(param_1 + 9) & 4) == 0) {\n                if ((*(uint *)(param_1 + 9) & 0x200) == 0) {\n                  iVar5 = fchdir(*(int *)((long)pvVar11 + 0x44));\n                  if (iVar5 != 0) {\n                    piVar7 = __errno_location();\n                    *(int *)((long)pvVar11 + 0x40) = *piVar7;\n                    *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\n                  }\n                }\n                else {\n                  FUN_0011615c(param_1,*(undefined4 *)((long)pvVar11 + 0x44),1);\n                }\n              }\n              close(*(int *)((long)pvVar11 + 0x44));\n            }\nLAB_001177a7:\n            if (*(short *)((long)pvVar11 + 0x70) == 2) goto LAB_00117a88;\n          }" (else "else") (compound_statement "{\n            if ((*(ushort *)((long)pvVar11 + 0x72) & 2) == 0) {\n              if (((*(ushort *)((long)pvVar11 + 0x72) & 1) == 0) &&\n                 (iVar5 = FUN_00116203(param_1,*(undefined8 *)((long)pvVar11 + 8),0xffffffff,\n                                       &DAT_0011ff41), iVar5 != 0)) {\n                piVar7 = __errno_location();\n                *(int *)((long)pvVar11 + 0x40) = *piVar7;\n                *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\n                goto LAB_001179e4;\n              }\n            }\n            else {\n              if ((*(uint *)(param_1 + 9) & 4) == 0) {\n                if ((*(uint *)(param_1 + 9) & 0x200) == 0) {\n                  iVar5 = fchdir(*(int *)((long)pvVar11 + 0x44));\n                  if (iVar5 != 0) {\n                    piVar7 = __errno_location();\n                    *(int *)((long)pvVar11 + 0x40) = *piVar7;\n                    *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\n                  }\n                }\n                else {\n                  FUN_0011615c(param_1,*(undefined4 *)((long)pvVar11 + 0x44),1);\n                }\n              }\n              close(*(int *)((long)pvVar11 + 0x44));\n            }\nLAB_001177a7:\n            if (*(short *)((long)pvVar11 + 0x70) == 2) goto LAB_00117a88;\n          }" ({ "{") (if_statement "if ((*(ushort *)((long)pvVar11 + 0x72) & 2) == 0) {\n              if (((*(ushort *)((long)pvVar11 + 0x72) & 1) == 0) &&\n                 (iVar5 = FUN_00116203(param_1,*(undefined8 *)((long)pvVar11 + 8),0xffffffff,\n                                       &DAT_0011ff41), iVar5 != 0)) {\n                piVar7 = __errno_location();\n                *(int *)((long)pvVar11 + 0x40) = *piVar7;\n                *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\n                goto LAB_001179e4;\n              }\n            }\n            else {\n              if ((*(uint *)(param_1 + 9) & 4) == 0) {\n                if ((*(uint *)(param_1 + 9) & 0x200) == 0) {\n                  iVar5 = fchdir(*(int *)((long)pvVar11 + 0x44));\n                  if (iVar5 != 0) {\n                    piVar7 = __errno_location();\n                    *(int *)((long)pvVar11 + 0x40) = *piVar7;\n                    *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\n                  }\n                }\n                else {\n                  FUN_0011615c(param_1,*(undefined4 *)((long)pvVar11 + 0x44),1);\n                }\n              }\n              close(*(int *)((long)pvVar11 + 0x44));\n            }" (if "if") (parenthesized_expression "((*(ushort *)((long)pvVar11 + 0x72) & 2) == 0)" (( "(") (binary_expression "(*(ushort *)((long)pvVar11 + 0x72) & 2) == 0" (parenthesized_expression "(*(ushort *)((long)pvVar11 + 0x72) & 2)" (( "(") (binary_expression "*(ushort *)((long)pvVar11 + 0x72) & 2" (pointer_expression "*(ushort *)((long)pvVar11 + 0x72)" (* "*") (cast_expression "(ushort *)((long)pvVar11 + 0x72)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)pvVar11 + 0x72)" (( "(") (binary_expression "(long)pvVar11 + 0x72" (cast_expression "(long)pvVar11" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "pvVar11")) (+ "+") (number_literal "0x72")) () ")")))) (& "&") (number_literal "2")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n              if (((*(ushort *)((long)pvVar11 + 0x72) & 1) == 0) &&\n                 (iVar5 = FUN_00116203(param_1,*(undefined8 *)((long)pvVar11 + 8),0xffffffff,\n                                       &DAT_0011ff41), iVar5 != 0)) {\n                piVar7 = __errno_location();\n                *(int *)((long)pvVar11 + 0x40) = *piVar7;\n                *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\n                goto LAB_001179e4;\n              }\n            }" ({ "{") (if_statement "if (((*(ushort *)((long)pvVar11 + 0x72) & 1) == 0) &&\n                 (iVar5 = FUN_00116203(param_1,*(undefined8 *)((long)pvVar11 + 8),0xffffffff,\n                                       &DAT_0011ff41), iVar5 != 0)) {\n                piVar7 = __errno_location();\n                *(int *)((long)pvVar11 + 0x40) = *piVar7;\n                *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\n                goto LAB_001179e4;\n              }" (if "if") (parenthesized_expression "(((*(ushort *)((long)pvVar11 + 0x72) & 1) == 0) &&\n                 (iVar5 = FUN_00116203(param_1,*(undefined8 *)((long)pvVar11 + 8),0xffffffff,\n                                       &DAT_0011ff41), iVar5 != 0))" (( "(") (binary_expression "((*(ushort *)((long)pvVar11 + 0x72) & 1) == 0) &&\n                 (iVar5 = FUN_00116203(param_1,*(undefined8 *)((long)pvVar11 + 8),0xffffffff,\n                                       &DAT_0011ff41), iVar5 != 0)" (parenthesized_expression "((*(ushort *)((long)pvVar11 + 0x72) & 1) == 0)" (( "(") (binary_expression "(*(ushort *)((long)pvVar11 + 0x72) & 1) == 0" (parenthesized_expression "(*(ushort *)((long)pvVar11 + 0x72) & 1)" (( "(") (binary_expression "*(ushort *)((long)pvVar11 + 0x72) & 1" (pointer_expression "*(ushort *)((long)pvVar11 + 0x72)" (* "*") (cast_expression "(ushort *)((long)pvVar11 + 0x72)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)pvVar11 + 0x72)" (( "(") (binary_expression "(long)pvVar11 + 0x72" (cast_expression "(long)pvVar11" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "pvVar11")) (+ "+") (number_literal "0x72")) () ")")))) (& "&") (number_literal "1")) () ")")) (== "==") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(iVar5 = FUN_00116203(param_1,*(undefined8 *)((long)pvVar11 + 8),0xffffffff,\n                                       &DAT_0011ff41), iVar5 != 0)" (( "(") (comma_expression "iVar5 = FUN_00116203(param_1,*(undefined8 *)((long)pvVar11 + 8),0xffffffff,\n                                       &DAT_0011ff41), iVar5 != 0" (assignment_expression "iVar5 = FUN_00116203(param_1,*(undefined8 *)((long)pvVar11 + 8),0xffffffff,\n                                       &DAT_0011ff41)" (identifier "iVar5") (= "=") (call_expression "FUN_00116203(param_1,*(undefined8 *)((long)pvVar11 + 8),0xffffffff,\n                                       &DAT_0011ff41)" (identifier "FUN_00116203") (argument_list "(param_1,*(undefined8 *)((long)pvVar11 + 8),0xffffffff,\n                                       &DAT_0011ff41)" (( "(") (identifier "param_1") (, ",") (pointer_expression "*(undefined8 *)((long)pvVar11 + 8)" (* "*") (cast_expression "(undefined8 *)((long)pvVar11 + 8)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)pvVar11 + 8)" (( "(") (binary_expression "(long)pvVar11 + 8" (cast_expression "(long)pvVar11" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "pvVar11")) (+ "+") (number_literal "8")) () ")")))) (, ",") (number_literal "0xffffffff") (, ",") (pointer_expression "&DAT_0011ff41" (& "&") (identifier "DAT_0011ff41")) () ")")))) (, ",") (binary_expression "iVar5 != 0" (identifier "iVar5") (!= "!=") (number_literal "0"))) () ")"))) () ")")) (compound_statement "{\n                piVar7 = __errno_location();\n                *(int *)((long)pvVar11 + 0x40) = *piVar7;\n                *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\n                goto LAB_001179e4;\n              }" ({ "{") (expression_statement "piVar7 = __errno_location();" (assignment_expression "piVar7 = __errno_location()" (identifier "piVar7") (= "=") (call_expression "__errno_location()" (identifier "__errno_location") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "*(int *)((long)pvVar11 + 0x40) = *piVar7;" (assignment_expression "*(int *)((long)pvVar11 + 0x40) = *piVar7" (pointer_expression "*(int *)((long)pvVar11 + 0x40)" (* "*") (cast_expression "(int *)((long)pvVar11 + 0x40)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)pvVar11 + 0x40)" (( "(") (binary_expression "(long)pvVar11 + 0x40" (cast_expression "(long)pvVar11" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "pvVar11")) (+ "+") (number_literal "0x40")) () ")")))) (= "=") (pointer_expression "*piVar7" (* "*") (identifier "piVar7"))) (; ";")) (expression_statement "*(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;" (assignment_expression "*(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000" (pointer_expression "*(uint *)(param_1 + 9)" (* "*") (cast_expression "(uint *)(param_1 + 9)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 9)" (( "(") (binary_expression "param_1 + 9" (identifier "param_1") (+ "+") (number_literal "9")) () ")")))) (= "=") (binary_expression "*(uint *)(param_1 + 9) | 0x4000" (pointer_expression "*(uint *)(param_1 + 9)" (* "*") (cast_expression "(uint *)(param_1 + 9)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 9)" (( "(") (binary_expression "param_1 + 9" (identifier "param_1") (+ "+") (number_literal "9")) () ")")))) (| "|") (number_literal "0x4000"))) (; ";")) (goto_statement "goto LAB_001179e4;" (goto "goto") (statement_identifier "LAB_001179e4") (; ";")) (} "}"))) (} "}")) (else_clause "else {\n              if ((*(uint *)(param_1 + 9) & 4) == 0) {\n                if ((*(uint *)(param_1 + 9) & 0x200) == 0) {\n                  iVar5 = fchdir(*(int *)((long)pvVar11 + 0x44));\n                  if (iVar5 != 0) {\n                    piVar7 = __errno_location();\n                    *(int *)((long)pvVar11 + 0x40) = *piVar7;\n                    *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\n                  }\n                }\n                else {\n                  FUN_0011615c(param_1,*(undefined4 *)((long)pvVar11 + 0x44),1);\n                }\n              }\n              close(*(int *)((long)pvVar11 + 0x44));\n            }" (else "else") (compound_statement "{\n              if ((*(uint *)(param_1 + 9) & 4) == 0) {\n                if ((*(uint *)(param_1 + 9) & 0x200) == 0) {\n                  iVar5 = fchdir(*(int *)((long)pvVar11 + 0x44));\n                  if (iVar5 != 0) {\n                    piVar7 = __errno_location();\n                    *(int *)((long)pvVar11 + 0x40) = *piVar7;\n                    *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\n                  }\n                }\n                else {\n                  FUN_0011615c(param_1,*(undefined4 *)((long)pvVar11 + 0x44),1);\n                }\n              }\n              close(*(int *)((long)pvVar11 + 0x44));\n            }" ({ "{") (if_statement "if ((*(uint *)(param_1 + 9) & 4) == 0) {\n                if ((*(uint *)(param_1 + 9) & 0x200) == 0) {\n                  iVar5 = fchdir(*(int *)((long)pvVar11 + 0x44));\n                  if (iVar5 != 0) {\n                    piVar7 = __errno_location();\n                    *(int *)((long)pvVar11 + 0x40) = *piVar7;\n                    *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\n                  }\n                }\n                else {\n                  FUN_0011615c(param_1,*(undefined4 *)((long)pvVar11 + 0x44),1);\n                }\n              }" (if "if") (parenthesized_expression "((*(uint *)(param_1 + 9) & 4) == 0)" (( "(") (binary_expression "(*(uint *)(param_1 + 9) & 4) == 0" (parenthesized_expression "(*(uint *)(param_1 + 9) & 4)" (( "(") (binary_expression "*(uint *)(param_1 + 9) & 4" (pointer_expression "*(uint *)(param_1 + 9)" (* "*") (cast_expression "(uint *)(param_1 + 9)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 9)" (( "(") (binary_expression "param_1 + 9" (identifier "param_1") (+ "+") (number_literal "9")) () ")")))) (& "&") (number_literal "4")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                if ((*(uint *)(param_1 + 9) & 0x200) == 0) {\n                  iVar5 = fchdir(*(int *)((long)pvVar11 + 0x44));\n                  if (iVar5 != 0) {\n                    piVar7 = __errno_location();\n                    *(int *)((long)pvVar11 + 0x40) = *piVar7;\n                    *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\n                  }\n                }\n                else {\n                  FUN_0011615c(param_1,*(undefined4 *)((long)pvVar11 + 0x44),1);\n                }\n              }" ({ "{") (if_statement "if ((*(uint *)(param_1 + 9) & 0x200) == 0) {\n                  iVar5 = fchdir(*(int *)((long)pvVar11 + 0x44));\n                  if (iVar5 != 0) {\n                    piVar7 = __errno_location();\n                    *(int *)((long)pvVar11 + 0x40) = *piVar7;\n                    *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\n                  }\n                }\n                else {\n                  FUN_0011615c(param_1,*(undefined4 *)((long)pvVar11 + 0x44),1);\n                }" (if "if") (parenthesized_expression "((*(uint *)(param_1 + 9) & 0x200) == 0)" (( "(") (binary_expression "(*(uint *)(param_1 + 9) & 0x200) == 0" (parenthesized_expression "(*(uint *)(param_1 + 9) & 0x200)" (( "(") (binary_expression "*(uint *)(param_1 + 9) & 0x200" (pointer_expression "*(uint *)(param_1 + 9)" (* "*") (cast_expression "(uint *)(param_1 + 9)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 9)" (( "(") (binary_expression "param_1 + 9" (identifier "param_1") (+ "+") (number_literal "9")) () ")")))) (& "&") (number_literal "0x200")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                  iVar5 = fchdir(*(int *)((long)pvVar11 + 0x44));\n                  if (iVar5 != 0) {\n                    piVar7 = __errno_location();\n                    *(int *)((long)pvVar11 + 0x40) = *piVar7;\n                    *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\n                  }\n                }" ({ "{") (expression_statement "iVar5 = fchdir(*(int *)((long)pvVar11 + 0x44));" (assignment_expression "iVar5 = fchdir(*(int *)((long)pvVar11 + 0x44))" (identifier "iVar5") (= "=") (call_expression "fchdir(*(int *)((long)pvVar11 + 0x44))" (identifier "fchdir") (argument_list "(*(int *)((long)pvVar11 + 0x44))" (( "(") (pointer_expression "*(int *)((long)pvVar11 + 0x44)" (* "*") (cast_expression "(int *)((long)pvVar11 + 0x44)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)pvVar11 + 0x44)" (( "(") (binary_expression "(long)pvVar11 + 0x44" (cast_expression "(long)pvVar11" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "pvVar11")) (+ "+") (number_literal "0x44")) () ")")))) () ")")))) (; ";")) (if_statement "if (iVar5 != 0) {\n                    piVar7 = __errno_location();\n                    *(int *)((long)pvVar11 + 0x40) = *piVar7;\n                    *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\n                  }" (if "if") (parenthesized_expression "(iVar5 != 0)" (( "(") (binary_expression "iVar5 != 0" (identifier "iVar5") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                    piVar7 = __errno_location();\n                    *(int *)((long)pvVar11 + 0x40) = *piVar7;\n                    *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\n                  }" ({ "{") (expression_statement "piVar7 = __errno_location();" (assignment_expression "piVar7 = __errno_location()" (identifier "piVar7") (= "=") (call_expression "__errno_location()" (identifier "__errno_location") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "*(int *)((long)pvVar11 + 0x40) = *piVar7;" (assignment_expression "*(int *)((long)pvVar11 + 0x40) = *piVar7" (pointer_expression "*(int *)((long)pvVar11 + 0x40)" (* "*") (cast_expression "(int *)((long)pvVar11 + 0x40)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)pvVar11 + 0x40)" (( "(") (binary_expression "(long)pvVar11 + 0x40" (cast_expression "(long)pvVar11" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "pvVar11")) (+ "+") (number_literal "0x40")) () ")")))) (= "=") (pointer_expression "*piVar7" (* "*") (identifier "piVar7"))) (; ";")) (expression_statement "*(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;" (assignment_expression "*(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000" (pointer_expression "*(uint *)(param_1 + 9)" (* "*") (cast_expression "(uint *)(param_1 + 9)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 9)" (( "(") (binary_expression "param_1 + 9" (identifier "param_1") (+ "+") (number_literal "9")) () ")")))) (= "=") (binary_expression "*(uint *)(param_1 + 9) | 0x4000" (pointer_expression "*(uint *)(param_1 + 9)" (* "*") (cast_expression "(uint *)(param_1 + 9)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 9)" (( "(") (binary_expression "param_1 + 9" (identifier "param_1") (+ "+") (number_literal "9")) () ")")))) (| "|") (number_literal "0x4000"))) (; ";")) (} "}"))) (} "}")) (else_clause "else {\n                  FUN_0011615c(param_1,*(undefined4 *)((long)pvVar11 + 0x44),1);\n                }" (else "else") (compound_statement "{\n                  FUN_0011615c(param_1,*(undefined4 *)((long)pvVar11 + 0x44),1);\n                }" ({ "{") (expression_statement "FUN_0011615c(param_1,*(undefined4 *)((long)pvVar11 + 0x44),1);" (call_expression "FUN_0011615c(param_1,*(undefined4 *)((long)pvVar11 + 0x44),1)" (identifier "FUN_0011615c") (argument_list "(param_1,*(undefined4 *)((long)pvVar11 + 0x44),1)" (( "(") (identifier "param_1") (, ",") (pointer_expression "*(undefined4 *)((long)pvVar11 + 0x44)" (* "*") (cast_expression "(undefined4 *)((long)pvVar11 + 0x44)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)pvVar11 + 0x44)" (( "(") (binary_expression "(long)pvVar11 + 0x44" (cast_expression "(long)pvVar11" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "pvVar11")) (+ "+") (number_literal "0x44")) () ")")))) (, ",") (number_literal "1") () ")"))) (; ";")) (} "}")))) (} "}"))) (expression_statement "close(*(int *)((long)pvVar11 + 0x44));" (call_expression "close(*(int *)((long)pvVar11 + 0x44))" (identifier "close") (argument_list "(*(int *)((long)pvVar11 + 0x44))" (( "(") (pointer_expression "*(int *)((long)pvVar11 + 0x44)" (* "*") (cast_expression "(int *)((long)pvVar11 + 0x44)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)pvVar11 + 0x44)" (( "(") (binary_expression "(long)pvVar11 + 0x44" (cast_expression "(long)pvVar11" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "pvVar11")) (+ "+") (number_literal "0x44")) () ")")))) () ")"))) (; ";")) (} "}")))) (labeled_statement "LAB_001177a7:\n            if (*(short *)((long)pvVar11 + 0x70) == 2) goto LAB_00117a88;" (statement_identifier "LAB_001177a7") (: ":") (if_statement "if (*(short *)((long)pvVar11 + 0x70) == 2) goto LAB_00117a88;" (if "if") (parenthesized_expression "(*(short *)((long)pvVar11 + 0x70) == 2)" (( "(") (binary_expression "*(short *)((long)pvVar11 + 0x70) == 2" (pointer_expression "*(short *)((long)pvVar11 + 0x70)" (* "*") (cast_expression "(short *)((long)pvVar11 + 0x70)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)pvVar11 + 0x70)" (( "(") (binary_expression "(long)pvVar11 + 0x70" (cast_expression "(long)pvVar11" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "pvVar11")) (+ "+") (number_literal "0x70")) () ")")))) (== "==") (number_literal "2")) () ")")) (goto_statement "goto LAB_00117a88;" (goto "goto") (statement_identifier "LAB_00117a88") (; ";")))) (} "}")))) (if_statement "if (*(int *)((long)pvVar11 + 0x40) == 0) {\n            *(undefined2 *)((long)pvVar11 + 0x70) = 6;\n            FUN_00116412(param_1,pvVar11);\n          }\n          else {\n            *(undefined2 *)((long)pvVar11 + 0x70) = 7;\n          }" (if "if") (parenthesized_expression "(*(int *)((long)pvVar11 + 0x40) == 0)" (( "(") (binary_expression "*(int *)((long)pvVar11 + 0x40) == 0" (pointer_expression "*(int *)((long)pvVar11 + 0x40)" (* "*") (cast_expression "(int *)((long)pvVar11 + 0x40)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)pvVar11 + 0x40)" (( "(") (binary_expression "(long)pvVar11 + 0x40" (cast_expression "(long)pvVar11" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "pvVar11")) (+ "+") (number_literal "0x40")) () ")")))) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n            *(undefined2 *)((long)pvVar11 + 0x70) = 6;\n            FUN_00116412(param_1,pvVar11);\n          }" ({ "{") (expression_statement "*(undefined2 *)((long)pvVar11 + 0x70) = 6;" (assignment_expression "*(undefined2 *)((long)pvVar11 + 0x70) = 6" (pointer_expression "*(undefined2 *)((long)pvVar11 + 0x70)" (* "*") (cast_expression "(undefined2 *)((long)pvVar11 + 0x70)" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)pvVar11 + 0x70)" (( "(") (binary_expression "(long)pvVar11 + 0x70" (cast_expression "(long)pvVar11" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "pvVar11")) (+ "+") (number_literal "0x70")) () ")")))) (= "=") (number_literal "6")) (; ";")) (expression_statement "FUN_00116412(param_1,pvVar11);" (call_expression "FUN_00116412(param_1,pvVar11)" (identifier "FUN_00116412") (argument_list "(param_1,pvVar11)" (( "(") (identifier "param_1") (, ",") (identifier "pvVar11") () ")"))) (; ";")) (} "}")) (else_clause "else {\n            *(undefined2 *)((long)pvVar11 + 0x70) = 7;\n          }" (else "else") (compound_statement "{\n            *(undefined2 *)((long)pvVar11 + 0x70) = 7;\n          }" ({ "{") (expression_statement "*(undefined2 *)((long)pvVar11 + 0x70) = 7;" (assignment_expression "*(undefined2 *)((long)pvVar11 + 0x70) = 7" (pointer_expression "*(undefined2 *)((long)pvVar11 + 0x70)" (* "*") (cast_expression "(undefined2 *)((long)pvVar11 + 0x70)" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)pvVar11 + 0x70)" (( "(") (binary_expression "(long)pvVar11 + 0x70" (cast_expression "(long)pvVar11" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "pvVar11")) (+ "+") (number_literal "0x70")) () ")")))) (= "=") (number_literal "7")) (; ";")) (} "}")))) (labeled_statement "LAB_00117a88:\n          if ((*(uint *)(param_1 + 9) & 0x4000) != 0) {\n            return (void *)0x0;\n          }" (statement_identifier "LAB_00117a88") (: ":") (if_statement "if ((*(uint *)(param_1 + 9) & 0x4000) != 0) {\n            return (void *)0x0;\n          }" (if "if") (parenthesized_expression "((*(uint *)(param_1 + 9) & 0x4000) != 0)" (( "(") (binary_expression "(*(uint *)(param_1 + 9) & 0x4000) != 0" (parenthesized_expression "(*(uint *)(param_1 + 9) & 0x4000)" (( "(") (binary_expression "*(uint *)(param_1 + 9) & 0x4000" (pointer_expression "*(uint *)(param_1 + 9)" (* "*") (cast_expression "(uint *)(param_1 + 9)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 9)" (( "(") (binary_expression "param_1 + 9" (identifier "param_1") (+ "+") (number_literal "9")) () ")")))) (& "&") (number_literal "0x4000")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n            return (void *)0x0;\n          }" ({ "{") (return_statement "return (void *)0x0;" (return "return") (cast_expression "(void *)0x0" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")) (; ";")) (} "}")))) (return_statement "return pvVar11;" (return "return") (identifier "pvVar11") (; ";")) (} "}"))) (expression_statement "*param_1 = (long)pvVar11;" (assignment_expression "*param_1 = (long)pvVar11" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (cast_expression "(long)pvVar11" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "pvVar11"))) (; ";")) (expression_statement "free(pvVar12);" (call_expression "free(pvVar12)" (identifier "free") (argument_list "(pvVar12)" (( "(") (identifier "pvVar12") () ")"))) (; ";")) (if_statement "if (*(long *)((long)pvVar11 + 0x58) == 0) {\n          iVar5 = FUN_001161af(param_1);\n          if (iVar5 != 0) {\n            *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\n            return (void *)0x0;\n          }\n          FUN_00115eb3(param_1);\n          *(long *)((long)pvVar11 + 0x48) = *(long *)((long)pvVar11 + 0x60);\n          __s = (char *)((long)pvVar11 + 0x108);\n          memmove((void *)param_1[4],__s,*(long *)((long)pvVar11 + 0x60) + 1);\n          pcVar9 = strrchr(__s,0x2f);\n          if ((pcVar9 == (char *)0x0) || ((__s == pcVar9 && (pcVar9[1] == '\0'))))\n          goto LAB_0011784f;\n          uVar10 = 0xffffffffffffffff;\n          pcVar13 = pcVar9 + 1;\n          goto code_r0x00117837;\n        }" (if "if") (parenthesized_expression "(*(long *)((long)pvVar11 + 0x58) == 0)" (( "(") (binary_expression "*(long *)((long)pvVar11 + 0x58) == 0" (pointer_expression "*(long *)((long)pvVar11 + 0x58)" (* "*") (cast_expression "(long *)((long)pvVar11 + 0x58)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)pvVar11 + 0x58)" (( "(") (binary_expression "(long)pvVar11 + 0x58" (cast_expression "(long)pvVar11" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "pvVar11")) (+ "+") (number_literal "0x58")) () ")")))) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          iVar5 = FUN_001161af(param_1);\n          if (iVar5 != 0) {\n            *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\n            return (void *)0x0;\n          }\n          FUN_00115eb3(param_1);\n          *(long *)((long)pvVar11 + 0x48) = *(long *)((long)pvVar11 + 0x60);\n          __s = (char *)((long)pvVar11 + 0x108);\n          memmove((void *)param_1[4],__s,*(long *)((long)pvVar11 + 0x60) + 1);\n          pcVar9 = strrchr(__s,0x2f);\n          if ((pcVar9 == (char *)0x0) || ((__s == pcVar9 && (pcVar9[1] == '\0'))))\n          goto LAB_0011784f;\n          uVar10 = 0xffffffffffffffff;\n          pcVar13 = pcVar9 + 1;\n          goto code_r0x00117837;\n        }" ({ "{") (expression_statement "iVar5 = FUN_001161af(param_1);" (assignment_expression "iVar5 = FUN_001161af(param_1)" (identifier "iVar5") (= "=") (call_expression "FUN_001161af(param_1)" (identifier "FUN_001161af") (argument_list "(param_1)" (( "(") (identifier "param_1") () ")")))) (; ";")) (if_statement "if (iVar5 != 0) {\n            *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\n            return (void *)0x0;\n          }" (if "if") (parenthesized_expression "(iVar5 != 0)" (( "(") (binary_expression "iVar5 != 0" (identifier "iVar5") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n            *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;\n            return (void *)0x0;\n          }" ({ "{") (expression_statement "*(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;" (assignment_expression "*(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000" (pointer_expression "*(uint *)(param_1 + 9)" (* "*") (cast_expression "(uint *)(param_1 + 9)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 9)" (( "(") (binary_expression "param_1 + 9" (identifier "param_1") (+ "+") (number_literal "9")) () ")")))) (= "=") (binary_expression "*(uint *)(param_1 + 9) | 0x4000" (pointer_expression "*(uint *)(param_1 + 9)" (* "*") (cast_expression "(uint *)(param_1 + 9)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 9)" (( "(") (binary_expression "param_1 + 9" (identifier "param_1") (+ "+") (number_literal "9")) () ")")))) (| "|") (number_literal "0x4000"))) (; ";")) (return_statement "return (void *)0x0;" (return "return") (cast_expression "(void *)0x0" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")) (; ";")) (} "}"))) (expression_statement "FUN_00115eb3(param_1);" (call_expression "FUN_00115eb3(param_1)" (identifier "FUN_00115eb3") (argument_list "(param_1)" (( "(") (identifier "param_1") () ")"))) (; ";")) (expression_statement "*(long *)((long)pvVar11 + 0x48) = *(long *)((long)pvVar11 + 0x60);" (assignment_expression "*(long *)((long)pvVar11 + 0x48) = *(long *)((long)pvVar11 + 0x60)" (pointer_expression "*(long *)((long)pvVar11 + 0x48)" (* "*") (cast_expression "(long *)((long)pvVar11 + 0x48)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)pvVar11 + 0x48)" (( "(") (binary_expression "(long)pvVar11 + 0x48" (cast_expression "(long)pvVar11" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "pvVar11")) (+ "+") (number_literal "0x48")) () ")")))) (= "=") (pointer_expression "*(long *)((long)pvVar11 + 0x60)" (* "*") (cast_expression "(long *)((long)pvVar11 + 0x60)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)pvVar11 + 0x60)" (( "(") (binary_expression "(long)pvVar11 + 0x60" (cast_expression "(long)pvVar11" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "pvVar11")) (+ "+") (number_literal "0x60")) () ")"))))) (; ";")) (expression_statement "__s = (char *)((long)pvVar11 + 0x108);" (assignment_expression "__s = (char *)((long)pvVar11 + 0x108)" (identifier "__s") (= "=") (cast_expression "(char *)((long)pvVar11 + 0x108)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)pvVar11 + 0x108)" (( "(") (binary_expression "(long)pvVar11 + 0x108" (cast_expression "(long)pvVar11" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "pvVar11")) (+ "+") (number_literal "0x108")) () ")")))) (; ";")) (expression_statement "memmove((void *)param_1[4],__s,*(long *)((long)pvVar11 + 0x60) + 1);" (call_expression "memmove((void *)param_1[4],__s,*(long *)((long)pvVar11 + 0x60) + 1)" (identifier "memmove") (argument_list "((void *)param_1[4],__s,*(long *)((long)pvVar11 + 0x60) + 1)" (( "(") (cast_expression "(void *)param_1[4]" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[4]" (identifier "param_1") ([ "[") (number_literal "4") (] "]"))) (, ",") (identifier "__s") (, ",") (binary_expression "*(long *)((long)pvVar11 + 0x60) + 1" (pointer_expression "*(long *)((long)pvVar11 + 0x60)" (* "*") (cast_expression "(long *)((long)pvVar11 + 0x60)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)pvVar11 + 0x60)" (( "(") (binary_expression "(long)pvVar11 + 0x60" (cast_expression "(long)pvVar11" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "pvVar11")) (+ "+") (number_literal "0x60")) () ")")))) (+ "+") (number_literal "1")) () ")"))) (; ";")) (expression_statement "pcVar9 = strrchr(__s,0x2f);" (assignment_expression "pcVar9 = strrchr(__s,0x2f)" (identifier "pcVar9") (= "=") (call_expression "strrchr(__s,0x2f)" (identifier "strrchr") (argument_list "(__s,0x2f)" (( "(") (identifier "__s") (, ",") (number_literal "0x2f") () ")")))) (; ";")) (if_statement "if ((pcVar9 == (char *)0x0) || ((__s == pcVar9 && (pcVar9[1] == '\0'))))\n          goto LAB_0011784f;" (if "if") (parenthesized_expression "((pcVar9 == (char *)0x0) || ((__s == pcVar9 && (pcVar9[1] == '\0'))))" (( "(") (binary_expression "(pcVar9 == (char *)0x0) || ((__s == pcVar9 && (pcVar9[1] == '\0')))" (parenthesized_expression "(pcVar9 == (char *)0x0)" (( "(") (binary_expression "pcVar9 == (char *)0x0" (identifier "pcVar9") (== "==") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (|| "||") (parenthesized_expression "((__s == pcVar9 && (pcVar9[1] == '\0')))" (( "(") (parenthesized_expression "(__s == pcVar9 && (pcVar9[1] == '\0'))" (( "(") (binary_expression "__s == pcVar9 && (pcVar9[1] == '\0')" (binary_expression "__s == pcVar9" (identifier "__s") (== "==") (identifier "pcVar9")) (&& "&&") (parenthesized_expression "(pcVar9[1] == '\0')" (( "(") (binary_expression "pcVar9[1] == '\0'" (subscript_expression "pcVar9[1]" (identifier "pcVar9") ([ "[") (number_literal "1") (] "]")) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")"))) () ")")) () ")"))) () ")")) (goto_statement "goto LAB_0011784f;" (goto "goto") (statement_identifier "LAB_0011784f") (; ";"))) (expression_statement "uVar10 = 0xffffffffffffffff;" (assignment_expression "uVar10 = 0xffffffffffffffff" (identifier "uVar10") (= "=") (number_literal "0xffffffffffffffff")) (; ";")) (expression_statement "pcVar13 = pcVar9 + 1;" (assignment_expression "pcVar13 = pcVar9 + 1" (identifier "pcVar13") (= "=") (binary_expression "pcVar9 + 1" (identifier "pcVar9") (+ "+") (number_literal "1"))) (; ";")) (goto_statement "goto code_r0x00117837;" (goto "goto") (statement_identifier "code_r0x00117837") (; ";")) (} "}"))) (expression_statement "pvVar12 = pvVar11;" (assignment_expression "pvVar12 = pvVar11" (identifier "pvVar12") (= "=") (identifier "pvVar11")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(*(short *)((long)pvVar11 + 0x74) == 4)" (( "(") (binary_expression "*(short *)((long)pvVar11 + 0x74) == 4" (pointer_expression "*(short *)((long)pvVar11 + 0x74)" (* "*") (cast_expression "(short *)((long)pvVar11 + 0x74)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)pvVar11 + 0x74)" (( "(") (binary_expression "(long)pvVar11 + 0x74" (cast_expression "(long)pvVar11" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "pvVar11")) (+ "+") (number_literal "0x74")) () ")")))) (== "==") (number_literal "4")) () ")")) (; ";"))) (if_statement "if (*(short *)((long)pvVar11 + 0x74) == 2) {\n        sVar4 = FUN_00115abc(param_1,pvVar11,1);\n        *(short *)((long)pvVar11 + 0x70) = sVar4;\n        if ((sVar4 == 1) && ((*(byte *)(param_1 + 9) & 4) == 0)) {\n          iVar5 = FUN_00115e27(param_1,&DAT_0011ff42);\n          *(int *)((long)pvVar11 + 0x44) = iVar5;\n          if (iVar5 < 0) {\n            piVar7 = __errno_location();\n            *(int *)((long)pvVar11 + 0x40) = *piVar7;\n            *(undefined2 *)((long)pvVar11 + 0x70) = 7;\n          }\n          else {\n            *(ushort *)((long)pvVar11 + 0x72) = *(ushort *)((long)pvVar11 + 0x72) | 2;\n          }\n        }\n        *(undefined2 *)((long)pvVar11 + 0x74) = 3;\n      }" (if "if") (parenthesized_expression "(*(short *)((long)pvVar11 + 0x74) == 2)" (( "(") (binary_expression "*(short *)((long)pvVar11 + 0x74) == 2" (pointer_expression "*(short *)((long)pvVar11 + 0x74)" (* "*") (cast_expression "(short *)((long)pvVar11 + 0x74)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)pvVar11 + 0x74)" (( "(") (binary_expression "(long)pvVar11 + 0x74" (cast_expression "(long)pvVar11" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "pvVar11")) (+ "+") (number_literal "0x74")) () ")")))) (== "==") (number_literal "2")) () ")")) (compound_statement "{\n        sVar4 = FUN_00115abc(param_1,pvVar11,1);\n        *(short *)((long)pvVar11 + 0x70) = sVar4;\n        if ((sVar4 == 1) && ((*(byte *)(param_1 + 9) & 4) == 0)) {\n          iVar5 = FUN_00115e27(param_1,&DAT_0011ff42);\n          *(int *)((long)pvVar11 + 0x44) = iVar5;\n          if (iVar5 < 0) {\n            piVar7 = __errno_location();\n            *(int *)((long)pvVar11 + 0x40) = *piVar7;\n            *(undefined2 *)((long)pvVar11 + 0x70) = 7;\n          }\n          else {\n            *(ushort *)((long)pvVar11 + 0x72) = *(ushort *)((long)pvVar11 + 0x72) | 2;\n          }\n        }\n        *(undefined2 *)((long)pvVar11 + 0x74) = 3;\n      }" ({ "{") (expression_statement "sVar4 = FUN_00115abc(param_1,pvVar11,1);" (assignment_expression "sVar4 = FUN_00115abc(param_1,pvVar11,1)" (identifier "sVar4") (= "=") (call_expression "FUN_00115abc(param_1,pvVar11,1)" (identifier "FUN_00115abc") (argument_list "(param_1,pvVar11,1)" (( "(") (identifier "param_1") (, ",") (identifier "pvVar11") (, ",") (number_literal "1") () ")")))) (; ";")) (expression_statement "*(short *)((long)pvVar11 + 0x70) = sVar4;" (assignment_expression "*(short *)((long)pvVar11 + 0x70) = sVar4" (pointer_expression "*(short *)((long)pvVar11 + 0x70)" (* "*") (cast_expression "(short *)((long)pvVar11 + 0x70)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)pvVar11 + 0x70)" (( "(") (binary_expression "(long)pvVar11 + 0x70" (cast_expression "(long)pvVar11" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "pvVar11")) (+ "+") (number_literal "0x70")) () ")")))) (= "=") (identifier "sVar4")) (; ";")) (if_statement "if ((sVar4 == 1) && ((*(byte *)(param_1 + 9) & 4) == 0)) {\n          iVar5 = FUN_00115e27(param_1,&DAT_0011ff42);\n          *(int *)((long)pvVar11 + 0x44) = iVar5;\n          if (iVar5 < 0) {\n            piVar7 = __errno_location();\n            *(int *)((long)pvVar11 + 0x40) = *piVar7;\n            *(undefined2 *)((long)pvVar11 + 0x70) = 7;\n          }\n          else {\n            *(ushort *)((long)pvVar11 + 0x72) = *(ushort *)((long)pvVar11 + 0x72) | 2;\n          }\n        }" (if "if") (parenthesized_expression "((sVar4 == 1) && ((*(byte *)(param_1 + 9) & 4) == 0))" (( "(") (binary_expression "(sVar4 == 1) && ((*(byte *)(param_1 + 9) & 4) == 0)" (parenthesized_expression "(sVar4 == 1)" (( "(") (binary_expression "sVar4 == 1" (identifier "sVar4") (== "==") (number_literal "1")) () ")")) (&& "&&") (parenthesized_expression "((*(byte *)(param_1 + 9) & 4) == 0)" (( "(") (binary_expression "(*(byte *)(param_1 + 9) & 4) == 0" (parenthesized_expression "(*(byte *)(param_1 + 9) & 4)" (( "(") (binary_expression "*(byte *)(param_1 + 9) & 4" (pointer_expression "*(byte *)(param_1 + 9)" (* "*") (cast_expression "(byte *)(param_1 + 9)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 9)" (( "(") (binary_expression "param_1 + 9" (identifier "param_1") (+ "+") (number_literal "9")) () ")")))) (& "&") (number_literal "4")) () ")")) (== "==") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n          iVar5 = FUN_00115e27(param_1,&DAT_0011ff42);\n          *(int *)((long)pvVar11 + 0x44) = iVar5;\n          if (iVar5 < 0) {\n            piVar7 = __errno_location();\n            *(int *)((long)pvVar11 + 0x40) = *piVar7;\n            *(undefined2 *)((long)pvVar11 + 0x70) = 7;\n          }\n          else {\n            *(ushort *)((long)pvVar11 + 0x72) = *(ushort *)((long)pvVar11 + 0x72) | 2;\n          }\n        }" ({ "{") (expression_statement "iVar5 = FUN_00115e27(param_1,&DAT_0011ff42);" (assignment_expression "iVar5 = FUN_00115e27(param_1,&DAT_0011ff42)" (identifier "iVar5") (= "=") (call_expression "FUN_00115e27(param_1,&DAT_0011ff42)" (identifier "FUN_00115e27") (argument_list "(param_1,&DAT_0011ff42)" (( "(") (identifier "param_1") (, ",") (pointer_expression "&DAT_0011ff42" (& "&") (identifier "DAT_0011ff42")) () ")")))) (; ";")) (expression_statement "*(int *)((long)pvVar11 + 0x44) = iVar5;" (assignment_expression "*(int *)((long)pvVar11 + 0x44) = iVar5" (pointer_expression "*(int *)((long)pvVar11 + 0x44)" (* "*") (cast_expression "(int *)((long)pvVar11 + 0x44)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)pvVar11 + 0x44)" (( "(") (binary_expression "(long)pvVar11 + 0x44" (cast_expression "(long)pvVar11" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "pvVar11")) (+ "+") (number_literal "0x44")) () ")")))) (= "=") (identifier "iVar5")) (; ";")) (if_statement "if (iVar5 < 0) {\n            piVar7 = __errno_location();\n            *(int *)((long)pvVar11 + 0x40) = *piVar7;\n            *(undefined2 *)((long)pvVar11 + 0x70) = 7;\n          }\n          else {\n            *(ushort *)((long)pvVar11 + 0x72) = *(ushort *)((long)pvVar11 + 0x72) | 2;\n          }" (if "if") (parenthesized_expression "(iVar5 < 0)" (( "(") (binary_expression "iVar5 < 0" (identifier "iVar5") (< "<") (number_literal "0")) () ")")) (compound_statement "{\n            piVar7 = __errno_location();\n            *(int *)((long)pvVar11 + 0x40) = *piVar7;\n            *(undefined2 *)((long)pvVar11 + 0x70) = 7;\n          }" ({ "{") (expression_statement "piVar7 = __errno_location();" (assignment_expression "piVar7 = __errno_location()" (identifier "piVar7") (= "=") (call_expression "__errno_location()" (identifier "__errno_location") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "*(int *)((long)pvVar11 + 0x40) = *piVar7;" (assignment_expression "*(int *)((long)pvVar11 + 0x40) = *piVar7" (pointer_expression "*(int *)((long)pvVar11 + 0x40)" (* "*") (cast_expression "(int *)((long)pvVar11 + 0x40)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)pvVar11 + 0x40)" (( "(") (binary_expression "(long)pvVar11 + 0x40" (cast_expression "(long)pvVar11" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "pvVar11")) (+ "+") (number_literal "0x40")) () ")")))) (= "=") (pointer_expression "*piVar7" (* "*") (identifier "piVar7"))) (; ";")) (expression_statement "*(undefined2 *)((long)pvVar11 + 0x70) = 7;" (assignment_expression "*(undefined2 *)((long)pvVar11 + 0x70) = 7" (pointer_expression "*(undefined2 *)((long)pvVar11 + 0x70)" (* "*") (cast_expression "(undefined2 *)((long)pvVar11 + 0x70)" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)pvVar11 + 0x70)" (( "(") (binary_expression "(long)pvVar11 + 0x70" (cast_expression "(long)pvVar11" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "pvVar11")) (+ "+") (number_literal "0x70")) () ")")))) (= "=") (number_literal "7")) (; ";")) (} "}")) (else_clause "else {\n            *(ushort *)((long)pvVar11 + 0x72) = *(ushort *)((long)pvVar11 + 0x72) | 2;\n          }" (else "else") (compound_statement "{\n            *(ushort *)((long)pvVar11 + 0x72) = *(ushort *)((long)pvVar11 + 0x72) | 2;\n          }" ({ "{") (expression_statement "*(ushort *)((long)pvVar11 + 0x72) = *(ushort *)((long)pvVar11 + 0x72) | 2;" (assignment_expression "*(ushort *)((long)pvVar11 + 0x72) = *(ushort *)((long)pvVar11 + 0x72) | 2" (pointer_expression "*(ushort *)((long)pvVar11 + 0x72)" (* "*") (cast_expression "(ushort *)((long)pvVar11 + 0x72)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)pvVar11 + 0x72)" (( "(") (binary_expression "(long)pvVar11 + 0x72" (cast_expression "(long)pvVar11" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "pvVar11")) (+ "+") (number_literal "0x72")) () ")")))) (= "=") (binary_expression "*(ushort *)((long)pvVar11 + 0x72) | 2" (pointer_expression "*(ushort *)((long)pvVar11 + 0x72)" (* "*") (cast_expression "(ushort *)((long)pvVar11 + 0x72)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)pvVar11 + 0x72)" (( "(") (binary_expression "(long)pvVar11 + 0x72" (cast_expression "(long)pvVar11" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "pvVar11")) (+ "+") (number_literal "0x72")) () ")")))) (| "|") (number_literal "2"))) (; ";")) (} "}")))) (} "}"))) (expression_statement "*(undefined2 *)((long)pvVar11 + 0x74) = 3;" (assignment_expression "*(undefined2 *)((long)pvVar11 + 0x74) = 3" (pointer_expression "*(undefined2 *)((long)pvVar11 + 0x74)" (* "*") (cast_expression "(undefined2 *)((long)pvVar11 + 0x74)" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)pvVar11 + 0x74)" (( "(") (binary_expression "(long)pvVar11 + 0x74" (cast_expression "(long)pvVar11" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "pvVar11")) (+ "+") (number_literal "0x74")) () ")")))) (= "=") (number_literal "3")) (; ";")) (} "}"))) (} "}")))) (labeled_statement "LAB_00117587:\n    lVar8 = *(long *)(*(long *)((long)pvVar11 + 8) + 0x48);" (statement_identifier "LAB_00117587") (: ":") (expression_statement "lVar8 = *(long *)(*(long *)((long)pvVar11 + 8) + 0x48);" (assignment_expression "lVar8 = *(long *)(*(long *)((long)pvVar11 + 8) + 0x48)" (identifier "lVar8") (= "=") (pointer_expression "*(long *)(*(long *)((long)pvVar11 + 8) + 0x48)" (* "*") (cast_expression "(long *)(*(long *)((long)pvVar11 + 8) + 0x48)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(long *)((long)pvVar11 + 8) + 0x48)" (( "(") (binary_expression "*(long *)((long)pvVar11 + 8) + 0x48" (pointer_expression "*(long *)((long)pvVar11 + 8)" (* "*") (cast_expression "(long *)((long)pvVar11 + 8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)pvVar11 + 8)" (( "(") (binary_expression "(long)pvVar11 + 8" (cast_expression "(long)pvVar11" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "pvVar11")) (+ "+") (number_literal "8")) () ")")))) (+ "+") (number_literal "0x48")) () ")"))))) (; ";"))) (expression_statement "lVar6 = lVar8 + -1;" (assignment_expression "lVar6 = lVar8 + -1" (identifier "lVar6") (= "=") (binary_expression "lVar8 + -1" (identifier "lVar8") (+ "+") (number_literal "-1"))) (; ";")) (if_statement "if (*(char *)(*(long *)(*(long *)((long)pvVar11 + 8) + 0x38) + -1 + lVar8) != '/') {\n      lVar6 = lVar8;\n    }" (if "if") (parenthesized_expression "(*(char *)(*(long *)(*(long *)((long)pvVar11 + 8) + 0x38) + -1 + lVar8) != '/')" (( "(") (binary_expression "*(char *)(*(long *)(*(long *)((long)pvVar11 + 8) + 0x38) + -1 + lVar8) != '/'" (pointer_expression "*(char *)(*(long *)(*(long *)((long)pvVar11 + 8) + 0x38) + -1 + lVar8)" (* "*") (cast_expression "(char *)(*(long *)(*(long *)((long)pvVar11 + 8) + 0x38) + -1 + lVar8)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(long *)(*(long *)((long)pvVar11 + 8) + 0x38) + -1 + lVar8)" (( "(") (binary_expression "*(long *)(*(long *)((long)pvVar11 + 8) + 0x38) + -1 + lVar8" (binary_expression "*(long *)(*(long *)((long)pvVar11 + 8) + 0x38) + -1" (pointer_expression "*(long *)(*(long *)((long)pvVar11 + 8) + 0x38)" (* "*") (cast_expression "(long *)(*(long *)((long)pvVar11 + 8) + 0x38)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(long *)((long)pvVar11 + 8) + 0x38)" (( "(") (binary_expression "*(long *)((long)pvVar11 + 8) + 0x38" (pointer_expression "*(long *)((long)pvVar11 + 8)" (* "*") (cast_expression "(long *)((long)pvVar11 + 8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)pvVar11 + 8)" (( "(") (binary_expression "(long)pvVar11 + 8" (cast_expression "(long)pvVar11" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "pvVar11")) (+ "+") (number_literal "8")) () ")")))) (+ "+") (number_literal "0x38")) () ")")))) (+ "+") (number_literal "-1")) (+ "+") (identifier "lVar8")) () ")")))) (!= "!=") (char_literal "'/'" (' "'") (character "/") (' "'"))) () ")")) (compound_statement "{\n      lVar6 = lVar8;\n    }" ({ "{") (expression_statement "lVar6 = lVar8;" (assignment_expression "lVar6 = lVar8" (identifier "lVar6") (= "=") (identifier "lVar8")) (; ";")) (} "}"))) (expression_statement "lVar8 = param_1[4];" (assignment_expression "lVar8 = param_1[4]" (identifier "lVar8") (= "=") (subscript_expression "param_1[4]" (identifier "param_1") ([ "[") (number_literal "4") (] "]"))) (; ";")) (expression_statement "*(undefined1 *)(lVar6 + lVar8) = 0x2f;" (assignment_expression "*(undefined1 *)(lVar6 + lVar8) = 0x2f" (pointer_expression "*(undefined1 *)(lVar6 + lVar8)" (* "*") (cast_expression "(undefined1 *)(lVar6 + lVar8)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar6 + lVar8)" (( "(") (binary_expression "lVar6 + lVar8" (identifier "lVar6") (+ "+") (identifier "lVar8")) () ")")))) (= "=") (number_literal "0x2f")) (; ";")) (expression_statement "memmove((undefined1 *)(lVar6 + lVar8) + 1,(void *)((long)pvVar11 + 0x108),\n            *(long *)((long)pvVar11 + 0x60) + 1);" (call_expression "memmove((undefined1 *)(lVar6 + lVar8) + 1,(void *)((long)pvVar11 + 0x108),\n            *(long *)((long)pvVar11 + 0x60) + 1)" (identifier "memmove") (argument_list "((undefined1 *)(lVar6 + lVar8) + 1,(void *)((long)pvVar11 + 0x108),\n            *(long *)((long)pvVar11 + 0x60) + 1)" (( "(") (binary_expression "(undefined1 *)(lVar6 + lVar8) + 1" (cast_expression "(undefined1 *)(lVar6 + lVar8)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar6 + lVar8)" (( "(") (binary_expression "lVar6 + lVar8" (identifier "lVar6") (+ "+") (identifier "lVar8")) () ")"))) (+ "+") (number_literal "1")) (, ",") (cast_expression "(void *)((long)pvVar11 + 0x108)" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)pvVar11 + 0x108)" (( "(") (binary_expression "(long)pvVar11 + 0x108" (cast_expression "(long)pvVar11" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "pvVar11")) (+ "+") (number_literal "0x108")) () ")"))) (, ",") (binary_expression "*(long *)((long)pvVar11 + 0x60) + 1" (pointer_expression "*(long *)((long)pvVar11 + 0x60)" (* "*") (cast_expression "(long *)((long)pvVar11 + 0x60)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)pvVar11 + 0x60)" (( "(") (binary_expression "(long)pvVar11 + 0x60" (cast_expression "(long)pvVar11" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "pvVar11")) (+ "+") (number_literal "0x60")) () ")")))) (+ "+") (number_literal "1")) () ")"))) (; ";")) (} "}")))) (goto_statement "goto LAB_001175c0;" (goto "goto") (statement_identifier "LAB_001175c0") (; ";")) (while_statement "while( true ) {\n    uVar10 = uVar10 - 1;\n    cVar2 = *pcVar13;\n    pcVar13 = pcVar13 + (ulong)bVar14 * -2 + 1;\n    if (cVar2 == '\0') break;\ncode_r0x00117837:\n    if (uVar10 == 0) break;\n  }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n    uVar10 = uVar10 - 1;\n    cVar2 = *pcVar13;\n    pcVar13 = pcVar13 + (ulong)bVar14 * -2 + 1;\n    if (cVar2 == '\0') break;\ncode_r0x00117837:\n    if (uVar10 == 0) break;\n  }" ({ "{") (expression_statement "uVar10 = uVar10 - 1;" (assignment_expression "uVar10 = uVar10 - 1" (identifier "uVar10") (= "=") (binary_expression "uVar10 - 1" (identifier "uVar10") (- "-") (number_literal "1"))) (; ";")) (expression_statement "cVar2 = *pcVar13;" (assignment_expression "cVar2 = *pcVar13" (identifier "cVar2") (= "=") (pointer_expression "*pcVar13" (* "*") (identifier "pcVar13"))) (; ";")) (expression_statement "pcVar13 = pcVar13 + (ulong)bVar14 * -2 + 1;" (assignment_expression "pcVar13 = pcVar13 + (ulong)bVar14 * -2 + 1" (identifier "pcVar13") (= "=") (binary_expression "pcVar13 + (ulong)bVar14 * -2 + 1" (binary_expression "pcVar13 + (ulong)bVar14 * -2" (identifier "pcVar13") (+ "+") (binary_expression "(ulong)bVar14 * -2" (cast_expression "(ulong)bVar14" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "bVar14")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (cVar2 == '\0') break;" (if "if") (parenthesized_expression "(cVar2 == '\0')" (( "(") (binary_expression "cVar2 == '\0'" (identifier "cVar2") (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (break_statement "break;" (break "break") (; ";"))) (labeled_statement "code_r0x00117837:\n    if (uVar10 == 0) break;" (statement_identifier "code_r0x00117837") (: ":") (if_statement "if (uVar10 == 0) break;" (if "if") (parenthesized_expression "(uVar10 == 0)" (( "(") (binary_expression "uVar10 == 0" (identifier "uVar10") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";")))) (} "}"))) (expression_statement "memmove(__s,pcVar9 + 1,~uVar10);" (call_expression "memmove(__s,pcVar9 + 1,~uVar10)" (identifier "memmove") (argument_list "(__s,pcVar9 + 1,~uVar10)" (( "(") (identifier "__s") (, ",") (binary_expression "pcVar9 + 1" (identifier "pcVar9") (+ "+") (number_literal "1")) (, ",") (unary_expression "~uVar10" (~ "~") (identifier "uVar10")) () ")"))) (; ";")) (expression_statement "*(ulong *)((long)pvVar11 + 0x60) = ~uVar10 - 1;" (assignment_expression "*(ulong *)((long)pvVar11 + 0x60) = ~uVar10 - 1" (pointer_expression "*(ulong *)((long)pvVar11 + 0x60)" (* "*") (cast_expression "(ulong *)((long)pvVar11 + 0x60)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)pvVar11 + 0x60)" (( "(") (binary_expression "(long)pvVar11 + 0x60" (cast_expression "(long)pvVar11" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "pvVar11")) (+ "+") (number_literal "0x60")) () ")")))) (= "=") (binary_expression "~uVar10 - 1" (unary_expression "~uVar10" (~ "~") (identifier "uVar10")) (- "-") (number_literal "1"))) (; ";")) (labeled_statement "LAB_0011784f:\n  lVar8 = param_1[4];" (statement_identifier "LAB_0011784f") (: ":") (expression_statement "lVar8 = param_1[4];" (assignment_expression "lVar8 = param_1[4]" (identifier "lVar8") (= "=") (subscript_expression "param_1[4]" (identifier "param_1") ([ "[") (number_literal "4") (] "]"))) (; ";"))) (expression_statement "*(long *)((long)pvVar11 + 0x38) = lVar8;" (assignment_expression "*(long *)((long)pvVar11 + 0x38) = lVar8" (pointer_expression "*(long *)((long)pvVar11 + 0x38)" (* "*") (cast_expression "(long *)((long)pvVar11 + 0x38)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)pvVar11 + 0x38)" (( "(") (binary_expression "(long)pvVar11 + 0x38" (cast_expression "(long)pvVar11" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "pvVar11")) (+ "+") (number_literal "0x38")) () ")")))) (= "=") (identifier "lVar8")) (; ";")) (expression_statement "*(long *)((long)pvVar11 + 0x30) = lVar8;" (assignment_expression "*(long *)((long)pvVar11 + 0x30) = lVar8" (pointer_expression "*(long *)((long)pvVar11 + 0x30)" (* "*") (cast_expression "(long *)((long)pvVar11 + 0x30)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)pvVar11 + 0x30)" (( "(") (binary_expression "(long)pvVar11 + 0x30" (cast_expression "(long)pvVar11" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "pvVar11")) (+ "+") (number_literal "0x30")) () ")")))) (= "=") (identifier "lVar8")) (; ";")) (expression_statement "FUN_00115dc3(param_1);" (call_expression "FUN_00115dc3(param_1)" (identifier "FUN_00115dc3") (argument_list "(param_1)" (( "(") (identifier "param_1") () ")"))) (; ";")) (labeled_statement "LAB_001175c0:\n  *param_1 = (long)pvVar11;" (statement_identifier "LAB_001175c0") (: ":") (expression_statement "*param_1 = (long)pvVar11;" (assignment_expression "*param_1 = (long)pvVar11" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (cast_expression "(long)pvVar11" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "pvVar11"))) (; ";"))) (if_statement "if (*(short *)((long)pvVar11 + 0x70) == 0xb) {\n    if (*(long *)((long)pvVar11 + 0xa8) != 2) {\n      if (*(long *)((long)pvVar11 + 0xa8) == 1) {\n        return pvVar11;\n      }\n                    \n      abort();\n    }\n    lVar8 = *(long *)((long)pvVar11 + 8);\n    if (((*(long *)(lVar8 + 0x68) == 0) && ((*(uint *)(param_1 + 9) & 0x18) == 0x18)) &&\n       (iVar5 = FUN_0011603e(lVar8,*(undefined4 *)((long)param_1 + 0x2c)), iVar5 == 2))\n    goto LAB_001175cf;\n    sVar4 = FUN_00115abc(param_1,pvVar11,0);\n    *(short *)((long)pvVar11 + 0x70) = sVar4;\n    if ((*(uint *)((long)pvVar11 + 0x90) & 0xf000) != 0x4000) goto LAB_001175cf;\n    if (*(long *)((long)pvVar11 + 0x58) != 0) {\n      uVar10 = *(long *)(lVar8 + 0x68) - 1;\n      if (0xfffffffffffffffd < uVar10) {\n        if (sVar4 != 1) {\n          return pvVar11;\n        }\n        goto LAB_001175ea;\n      }\n      *(ulong *)(lVar8 + 0x68) = uVar10;\n      goto LAB_001175cf;\n    }\n    if (sVar4 != 1) {\n      return pvVar11;\n    }\n  }\n  else {\nLAB_001175cf:\n    if (*(short *)((long)pvVar11 + 0x70) != 1) {\n      return pvVar11;\n    }\n    if (*(long *)((long)pvVar11 + 0x58) != 0) goto LAB_001175ea;\n  }" (if "if") (parenthesized_expression "(*(short *)((long)pvVar11 + 0x70) == 0xb)" (( "(") (binary_expression "*(short *)((long)pvVar11 + 0x70) == 0xb" (pointer_expression "*(short *)((long)pvVar11 + 0x70)" (* "*") (cast_expression "(short *)((long)pvVar11 + 0x70)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)pvVar11 + 0x70)" (( "(") (binary_expression "(long)pvVar11 + 0x70" (cast_expression "(long)pvVar11" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "pvVar11")) (+ "+") (number_literal "0x70")) () ")")))) (== "==") (number_literal "0xb")) () ")")) (compound_statement "{\n    if (*(long *)((long)pvVar11 + 0xa8) != 2) {\n      if (*(long *)((long)pvVar11 + 0xa8) == 1) {\n        return pvVar11;\n      }\n                    \n      abort();\n    }\n    lVar8 = *(long *)((long)pvVar11 + 8);\n    if (((*(long *)(lVar8 + 0x68) == 0) && ((*(uint *)(param_1 + 9) & 0x18) == 0x18)) &&\n       (iVar5 = FUN_0011603e(lVar8,*(undefined4 *)((long)param_1 + 0x2c)), iVar5 == 2))\n    goto LAB_001175cf;\n    sVar4 = FUN_00115abc(param_1,pvVar11,0);\n    *(short *)((long)pvVar11 + 0x70) = sVar4;\n    if ((*(uint *)((long)pvVar11 + 0x90) & 0xf000) != 0x4000) goto LAB_001175cf;\n    if (*(long *)((long)pvVar11 + 0x58) != 0) {\n      uVar10 = *(long *)(lVar8 + 0x68) - 1;\n      if (0xfffffffffffffffd < uVar10) {\n        if (sVar4 != 1) {\n          return pvVar11;\n        }\n        goto LAB_001175ea;\n      }\n      *(ulong *)(lVar8 + 0x68) = uVar10;\n      goto LAB_001175cf;\n    }\n    if (sVar4 != 1) {\n      return pvVar11;\n    }\n  }" ({ "{") (if_statement "if (*(long *)((long)pvVar11 + 0xa8) != 2) {\n      if (*(long *)((long)pvVar11 + 0xa8) == 1) {\n        return pvVar11;\n      }\n                    \n      abort();\n    }" (if "if") (parenthesized_expression "(*(long *)((long)pvVar11 + 0xa8) != 2)" (( "(") (binary_expression "*(long *)((long)pvVar11 + 0xa8) != 2" (pointer_expression "*(long *)((long)pvVar11 + 0xa8)" (* "*") (cast_expression "(long *)((long)pvVar11 + 0xa8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)pvVar11 + 0xa8)" (( "(") (binary_expression "(long)pvVar11 + 0xa8" (cast_expression "(long)pvVar11" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "pvVar11")) (+ "+") (number_literal "0xa8")) () ")")))) (!= "!=") (number_literal "2")) () ")")) (compound_statement "{\n      if (*(long *)((long)pvVar11 + 0xa8) == 1) {\n        return pvVar11;\n      }\n                    \n      abort();\n    }" ({ "{") (if_statement "if (*(long *)((long)pvVar11 + 0xa8) == 1) {\n        return pvVar11;\n      }" (if "if") (parenthesized_expression "(*(long *)((long)pvVar11 + 0xa8) == 1)" (( "(") (binary_expression "*(long *)((long)pvVar11 + 0xa8) == 1" (pointer_expression "*(long *)((long)pvVar11 + 0xa8)" (* "*") (cast_expression "(long *)((long)pvVar11 + 0xa8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)pvVar11 + 0xa8)" (( "(") (binary_expression "(long)pvVar11 + 0xa8" (cast_expression "(long)pvVar11" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "pvVar11")) (+ "+") (number_literal "0xa8")) () ")")))) (== "==") (number_literal "1")) () ")")) (compound_statement "{\n        return pvVar11;\n      }" ({ "{") (return_statement "return pvVar11;" (return "return") (identifier "pvVar11") (; ";")) (} "}"))) (expression_statement "abort();" (call_expression "abort()" (identifier "abort") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (expression_statement "lVar8 = *(long *)((long)pvVar11 + 8);" (assignment_expression "lVar8 = *(long *)((long)pvVar11 + 8)" (identifier "lVar8") (= "=") (pointer_expression "*(long *)((long)pvVar11 + 8)" (* "*") (cast_expression "(long *)((long)pvVar11 + 8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)pvVar11 + 8)" (( "(") (binary_expression "(long)pvVar11 + 8" (cast_expression "(long)pvVar11" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "pvVar11")) (+ "+") (number_literal "8")) () ")"))))) (; ";")) (if_statement "if (((*(long *)(lVar8 + 0x68) == 0) && ((*(uint *)(param_1 + 9) & 0x18) == 0x18)) &&\n       (iVar5 = FUN_0011603e(lVar8,*(undefined4 *)((long)param_1 + 0x2c)), iVar5 == 2))\n    goto LAB_001175cf;" (if "if") (parenthesized_expression "(((*(long *)(lVar8 + 0x68) == 0) && ((*(uint *)(param_1 + 9) & 0x18) == 0x18)) &&\n       (iVar5 = FUN_0011603e(lVar8,*(undefined4 *)((long)param_1 + 0x2c)), iVar5 == 2))" (( "(") (binary_expression "((*(long *)(lVar8 + 0x68) == 0) && ((*(uint *)(param_1 + 9) & 0x18) == 0x18)) &&\n       (iVar5 = FUN_0011603e(lVar8,*(undefined4 *)((long)param_1 + 0x2c)), iVar5 == 2)" (parenthesized_expression "((*(long *)(lVar8 + 0x68) == 0) && ((*(uint *)(param_1 + 9) & 0x18) == 0x18))" (( "(") (binary_expression "(*(long *)(lVar8 + 0x68) == 0) && ((*(uint *)(param_1 + 9) & 0x18) == 0x18)" (parenthesized_expression "(*(long *)(lVar8 + 0x68) == 0)" (( "(") (binary_expression "*(long *)(lVar8 + 0x68) == 0" (pointer_expression "*(long *)(lVar8 + 0x68)" (* "*") (cast_expression "(long *)(lVar8 + 0x68)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar8 + 0x68)" (( "(") (binary_expression "lVar8 + 0x68" (identifier "lVar8") (+ "+") (number_literal "0x68")) () ")")))) (== "==") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "((*(uint *)(param_1 + 9) & 0x18) == 0x18)" (( "(") (binary_expression "(*(uint *)(param_1 + 9) & 0x18) == 0x18" (parenthesized_expression "(*(uint *)(param_1 + 9) & 0x18)" (( "(") (binary_expression "*(uint *)(param_1 + 9) & 0x18" (pointer_expression "*(uint *)(param_1 + 9)" (* "*") (cast_expression "(uint *)(param_1 + 9)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 9)" (( "(") (binary_expression "param_1 + 9" (identifier "param_1") (+ "+") (number_literal "9")) () ")")))) (& "&") (number_literal "0x18")) () ")")) (== "==") (number_literal "0x18")) () ")"))) () ")")) (&& "&&") (parenthesized_expression "(iVar5 = FUN_0011603e(lVar8,*(undefined4 *)((long)param_1 + 0x2c)), iVar5 == 2)" (( "(") (comma_expression "iVar5 = FUN_0011603e(lVar8,*(undefined4 *)((long)param_1 + 0x2c)), iVar5 == 2" (assignment_expression "iVar5 = FUN_0011603e(lVar8,*(undefined4 *)((long)param_1 + 0x2c))" (identifier "iVar5") (= "=") (call_expression "FUN_0011603e(lVar8,*(undefined4 *)((long)param_1 + 0x2c))" (identifier "FUN_0011603e") (argument_list "(lVar8,*(undefined4 *)((long)param_1 + 0x2c))" (( "(") (identifier "lVar8") (, ",") (pointer_expression "*(undefined4 *)((long)param_1 + 0x2c)" (* "*") (cast_expression "(undefined4 *)((long)param_1 + 0x2c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)param_1 + 0x2c)" (( "(") (binary_expression "(long)param_1 + 0x2c" (cast_expression "(long)param_1" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_1")) (+ "+") (number_literal "0x2c")) () ")")))) () ")")))) (, ",") (binary_expression "iVar5 == 2" (identifier "iVar5") (== "==") (number_literal "2"))) () ")"))) () ")")) (goto_statement "goto LAB_001175cf;" (goto "goto") (statement_identifier "LAB_001175cf") (; ";"))) (expression_statement "sVar4 = FUN_00115abc(param_1,pvVar11,0);" (assignment_expression "sVar4 = FUN_00115abc(param_1,pvVar11,0)" (identifier "sVar4") (= "=") (call_expression "FUN_00115abc(param_1,pvVar11,0)" (identifier "FUN_00115abc") (argument_list "(param_1,pvVar11,0)" (( "(") (identifier "param_1") (, ",") (identifier "pvVar11") (, ",") (number_literal "0") () ")")))) (; ";")) (expression_statement "*(short *)((long)pvVar11 + 0x70) = sVar4;" (assignment_expression "*(short *)((long)pvVar11 + 0x70) = sVar4" (pointer_expression "*(short *)((long)pvVar11 + 0x70)" (* "*") (cast_expression "(short *)((long)pvVar11 + 0x70)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)pvVar11 + 0x70)" (( "(") (binary_expression "(long)pvVar11 + 0x70" (cast_expression "(long)pvVar11" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "pvVar11")) (+ "+") (number_literal "0x70")) () ")")))) (= "=") (identifier "sVar4")) (; ";")) (if_statement "if ((*(uint *)((long)pvVar11 + 0x90) & 0xf000) != 0x4000) goto LAB_001175cf;" (if "if") (parenthesized_expression "((*(uint *)((long)pvVar11 + 0x90) & 0xf000) != 0x4000)" (( "(") (binary_expression "(*(uint *)((long)pvVar11 + 0x90) & 0xf000) != 0x4000" (parenthesized_expression "(*(uint *)((long)pvVar11 + 0x90) & 0xf000)" (( "(") (binary_expression "*(uint *)((long)pvVar11 + 0x90) & 0xf000" (pointer_expression "*(uint *)((long)pvVar11 + 0x90)" (* "*") (cast_expression "(uint *)((long)pvVar11 + 0x90)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)pvVar11 + 0x90)" (( "(") (binary_expression "(long)pvVar11 + 0x90" (cast_expression "(long)pvVar11" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "pvVar11")) (+ "+") (number_literal "0x90")) () ")")))) (& "&") (number_literal "0xf000")) () ")")) (!= "!=") (number_literal "0x4000")) () ")")) (goto_statement "goto LAB_001175cf;" (goto "goto") (statement_identifier "LAB_001175cf") (; ";"))) (if_statement "if (*(long *)((long)pvVar11 + 0x58) != 0) {\n      uVar10 = *(long *)(lVar8 + 0x68) - 1;\n      if (0xfffffffffffffffd < uVar10) {\n        if (sVar4 != 1) {\n          return pvVar11;\n        }\n        goto LAB_001175ea;\n      }\n      *(ulong *)(lVar8 + 0x68) = uVar10;\n      goto LAB_001175cf;\n    }" (if "if") (parenthesized_expression "(*(long *)((long)pvVar11 + 0x58) != 0)" (( "(") (binary_expression "*(long *)((long)pvVar11 + 0x58) != 0" (pointer_expression "*(long *)((long)pvVar11 + 0x58)" (* "*") (cast_expression "(long *)((long)pvVar11 + 0x58)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)pvVar11 + 0x58)" (( "(") (binary_expression "(long)pvVar11 + 0x58" (cast_expression "(long)pvVar11" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "pvVar11")) (+ "+") (number_literal "0x58")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      uVar10 = *(long *)(lVar8 + 0x68) - 1;\n      if (0xfffffffffffffffd < uVar10) {\n        if (sVar4 != 1) {\n          return pvVar11;\n        }\n        goto LAB_001175ea;\n      }\n      *(ulong *)(lVar8 + 0x68) = uVar10;\n      goto LAB_001175cf;\n    }" ({ "{") (expression_statement "uVar10 = *(long *)(lVar8 + 0x68) - 1;" (assignment_expression "uVar10 = *(long *)(lVar8 + 0x68) - 1" (identifier "uVar10") (= "=") (binary_expression "*(long *)(lVar8 + 0x68) - 1" (pointer_expression "*(long *)(lVar8 + 0x68)" (* "*") (cast_expression "(long *)(lVar8 + 0x68)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar8 + 0x68)" (( "(") (binary_expression "lVar8 + 0x68" (identifier "lVar8") (+ "+") (number_literal "0x68")) () ")")))) (- "-") (number_literal "1"))) (; ";")) (if_statement "if (0xfffffffffffffffd < uVar10) {\n        if (sVar4 != 1) {\n          return pvVar11;\n        }\n        goto LAB_001175ea;\n      }" (if "if") (parenthesized_expression "(0xfffffffffffffffd < uVar10)" (( "(") (binary_expression "0xfffffffffffffffd < uVar10" (number_literal "0xfffffffffffffffd") (< "<") (identifier "uVar10")) () ")")) (compound_statement "{\n        if (sVar4 != 1) {\n          return pvVar11;\n        }\n        goto LAB_001175ea;\n      }" ({ "{") (if_statement "if (sVar4 != 1) {\n          return pvVar11;\n        }" (if "if") (parenthesized_expression "(sVar4 != 1)" (( "(") (binary_expression "sVar4 != 1" (identifier "sVar4") (!= "!=") (number_literal "1")) () ")")) (compound_statement "{\n          return pvVar11;\n        }" ({ "{") (return_statement "return pvVar11;" (return "return") (identifier "pvVar11") (; ";")) (} "}"))) (goto_statement "goto LAB_001175ea;" (goto "goto") (statement_identifier "LAB_001175ea") (; ";")) (} "}"))) (expression_statement "*(ulong *)(lVar8 + 0x68) = uVar10;" (assignment_expression "*(ulong *)(lVar8 + 0x68) = uVar10" (pointer_expression "*(ulong *)(lVar8 + 0x68)" (* "*") (cast_expression "(ulong *)(lVar8 + 0x68)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar8 + 0x68)" (( "(") (binary_expression "lVar8 + 0x68" (identifier "lVar8") (+ "+") (number_literal "0x68")) () ")")))) (= "=") (identifier "uVar10")) (; ";")) (goto_statement "goto LAB_001175cf;" (goto "goto") (statement_identifier "LAB_001175cf") (; ";")) (} "}"))) (if_statement "if (sVar4 != 1) {\n      return pvVar11;\n    }" (if "if") (parenthesized_expression "(sVar4 != 1)" (( "(") (binary_expression "sVar4 != 1" (identifier "sVar4") (!= "!=") (number_literal "1")) () ")")) (compound_statement "{\n      return pvVar11;\n    }" ({ "{") (return_statement "return pvVar11;" (return "return") (identifier "pvVar11") (; ";")) (} "}"))) (} "}")) (else_clause "else {\nLAB_001175cf:\n    if (*(short *)((long)pvVar11 + 0x70) != 1) {\n      return pvVar11;\n    }\n    if (*(long *)((long)pvVar11 + 0x58) != 0) goto LAB_001175ea;\n  }" (else "else") (compound_statement "{\nLAB_001175cf:\n    if (*(short *)((long)pvVar11 + 0x70) != 1) {\n      return pvVar11;\n    }\n    if (*(long *)((long)pvVar11 + 0x58) != 0) goto LAB_001175ea;\n  }" ({ "{") (labeled_statement "LAB_001175cf:\n    if (*(short *)((long)pvVar11 + 0x70) != 1) {\n      return pvVar11;\n    }" (statement_identifier "LAB_001175cf") (: ":") (if_statement "if (*(short *)((long)pvVar11 + 0x70) != 1) {\n      return pvVar11;\n    }" (if "if") (parenthesized_expression "(*(short *)((long)pvVar11 + 0x70) != 1)" (( "(") (binary_expression "*(short *)((long)pvVar11 + 0x70) != 1" (pointer_expression "*(short *)((long)pvVar11 + 0x70)" (* "*") (cast_expression "(short *)((long)pvVar11 + 0x70)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)pvVar11 + 0x70)" (( "(") (binary_expression "(long)pvVar11 + 0x70" (cast_expression "(long)pvVar11" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "pvVar11")) (+ "+") (number_literal "0x70")) () ")")))) (!= "!=") (number_literal "1")) () ")")) (compound_statement "{\n      return pvVar11;\n    }" ({ "{") (return_statement "return pvVar11;" (return "return") (identifier "pvVar11") (; ";")) (} "}")))) (if_statement "if (*(long *)((long)pvVar11 + 0x58) != 0) goto LAB_001175ea;" (if "if") (parenthesized_expression "(*(long *)((long)pvVar11 + 0x58) != 0)" (( "(") (binary_expression "*(long *)((long)pvVar11 + 0x58) != 0" (pointer_expression "*(long *)((long)pvVar11 + 0x58)" (* "*") (cast_expression "(long *)((long)pvVar11 + 0x58)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)pvVar11 + 0x58)" (( "(") (binary_expression "(long)pvVar11 + 0x58" (cast_expression "(long)pvVar11" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "pvVar11")) (+ "+") (number_literal "0x58")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_001175ea;" (goto "goto") (statement_identifier "LAB_001175ea") (; ";"))) (} "}")))) (expression_statement "param_1[3] = *(long *)((long)pvVar11 + 0x78);" (assignment_expression "param_1[3] = *(long *)((long)pvVar11 + 0x78)" (subscript_expression "param_1[3]" (identifier "param_1") ([ "[") (number_literal "3") (] "]")) (= "=") (pointer_expression "*(long *)((long)pvVar11 + 0x78)" (* "*") (cast_expression "(long *)((long)pvVar11 + 0x78)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)pvVar11 + 0x78)" (( "(") (binary_expression "(long)pvVar11 + 0x78" (cast_expression "(long)pvVar11" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "pvVar11")) (+ "+") (number_literal "0x78")) () ")"))))) (; ";")) (labeled_statement "LAB_001175ea:\n  cVar2 = FUN_001160b2(param_1,pvVar11);" (statement_identifier "LAB_001175ea") (: ":") (expression_statement "cVar2 = FUN_001160b2(param_1,pvVar11);" (assignment_expression "cVar2 = FUN_001160b2(param_1,pvVar11)" (identifier "cVar2") (= "=") (call_expression "FUN_001160b2(param_1,pvVar11)" (identifier "FUN_001160b2") (argument_list "(param_1,pvVar11)" (( "(") (identifier "param_1") (, ",") (identifier "pvVar11") () ")")))) (; ";"))) (if_statement "if (cVar2 == '\0') {\n    piVar7 = __errno_location();\n    *piVar7 = 0xc;\n    pvVar11 = (void *)0x0;\n  }" (if "if") (parenthesized_expression "(cVar2 == '\0')" (( "(") (binary_expression "cVar2 == '\0'" (identifier "cVar2") (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n    piVar7 = __errno_location();\n    *piVar7 = 0xc;\n    pvVar11 = (void *)0x0;\n  }" ({ "{") (expression_statement "piVar7 = __errno_location();" (assignment_expression "piVar7 = __errno_location()" (identifier "piVar7") (= "=") (call_expression "__errno_location()" (identifier "__errno_location") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "*piVar7 = 0xc;" (assignment_expression "*piVar7 = 0xc" (pointer_expression "*piVar7" (* "*") (identifier "piVar7")) (= "=") (number_literal "0xc")) (; ";")) (expression_statement "pvVar11 = (void *)0x0;" (assignment_expression "pvVar11 = (void *)0x0" (identifier "pvVar11") (= "=") (cast_expression "(void *)0x0" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (} "}"))) (return_statement "return pvVar11;" (return "return") (identifier "pvVar11") (; ";")) (} "}")))

type_1 * function_1(type_2 *sp)

{
  char var_29;
  type_3 var_7;
  size_t var_24;
  char *var_25;
  type_4 *var_14;
  long var_31;
  type_5 _Var7;
  type_6 var_2;
  int var_5;
  type_7 var_32;
  size_t var_26;
  int *piVar12;
  type_1 *var_12;
  type_1 *var_23;
  type_8 var_27;
  type_1 *var_1;
  char *var_28;
  type_9 bVar18;
  
  bVar18 = 0;
  var_1 = sp->fts_cur;
  if (var_1 == (type_1 *)0x0) {
    return (type_1 *)0x0;
  }
  if ((sp->fts_options & 0x4000) != 0) {
    return (type_1 *)0x0;
  }
  var_2 = var_1->fts_instr;
  var_1->fts_instr = 3;
  if (var_2 == 1) {
    var_2 = var_3(sp,var_1,false);
    var_1->fts_info = var_2;
    return var_1;
  }
  var_12 = var_1;
  if (var_2 == 2) {
    if (1 < (type_6)(var_1->fts_info - 0xc)) {
      if (var_1->fts_info != 1) goto LAB_00117717;
      goto LAB_00117457;
    }
    var_2 = var_3(sp,var_1,true);
    var_1->fts_info = var_2;
    if ((var_2 == 1) && ((sp->fts_options & 4) == 0)) {
      var_5 = var_4(sp,".");
      var_1->fts_symfd = var_5;
      if (var_5 < 0) {
        piVar12 = var_6();
        var_1->fts_errno = *piVar12;
        var_1->fts_info = 7;
      }
      else {
        var_1->fts_flags = var_1->fts_flags | 2;
      }
    }
  }
  else {
    if (var_1->fts_info == 1) {
      if (var_2 == 4) goto LAB_00117473;
LAB_00117457:
      var_7 = sp->fts_options;
      if (((var_7 & 0x40) != 0) && (var_1->fts_statp[0].st_dev != sp->fts_dev)) {
LAB_00117473:
        if ((var_1->fts_flags & 2) != 0) {
          var_8(var_1->fts_symfd);
        }
        if (sp->fts_child != (type_1 *)0x0) {
          var_9(sp->fts_child);
          sp->fts_child = (type_4 *)0x0;
        }
        var_1->fts_info = 6;
        var_10(sp,var_1);
        return var_1;
      }
      if (sp->fts_child == (type_1 *)0x0) {
LAB_00117628:
        var_12 = var_11(sp,3);
        sp->fts_child = var_12;
        if (var_12 == (type_1 *)0x0) {
          if ((sp->fts_options & 0x4000) == 0) {
            if ((var_1->fts_errno != 0) && (var_1->fts_info != 4)) {
              var_1->fts_info = 7;
            }
            var_10(sp,var_1);
            return var_1;
          }
          return (type_1 *)0x0;
        }
      }
      else {
        if ((var_7 & 0x2000) != 0) {
          sp->fts_options = var_7 & 0xffffdfff;
          var_9(sp->fts_child);
          sp->fts_child = (type_4 *)0x0;
          goto LAB_00117628;
        }
        var_5 = var_13(sp,var_1,-1,var_1->fts_accpath);
        if (var_5 != 0) {
          piVar12 = var_6();
          var_1->fts_errno = *piVar12;
          var_1->fts_flags = var_1->fts_flags | 1;
          for (var_14 = sp->fts_child; var_14 != (type_4 *)0x0; var_14 = var_14->fts_link) {
            var_14->fts_accpath = var_14->fts_parent->fts_accpath;
          }
        }
      }
      var_1 = sp->fts_child;
      sp->fts_child = (type_4 *)0x0;
    }
    else {
LAB_00117717:
      do {
        var_1 = var_12->fts_link;
        if (var_1 == (type_1 *)0x0) {
          var_14 = var_12->fts_parent;
          if (var_14->fts_dirp != (type_10 *)0x0) {
            sp->fts_cur = var_14;
            sp->fts_path[var_14->fts_pathlen] = '\0';
            var_1 = var_11(sp,3);
            if (var_1 != (type_1 *)0x0) {
              var_15(var_12);
              goto LAB_00117587;
            }
            if ((sp->fts_options & 0x4000) != 0) {
              return (type_1 *)0x0;
            }
          }
          var_1 = var_12->fts_parent;
          sp->fts_cur = var_1;
          var_15(var_12);
          if (var_1->fts_level == -1) {
            var_15(var_1);
            piVar12 = var_6();
            *piVar12 = 0;
            sp->fts_cur = (type_4 *)0x0;
            return (type_1 *)0x0;
          }
          if (var_1->fts_info == 0xb) {
                    /* WARNING: Subroutine does not return */
            var_16();
          }
          sp->fts_path[var_1->fts_pathlen] = '\0';
          if (var_1->fts_level == 0) {
            var_5 = var_17(sp);
            if (var_5 == 0) goto LAB_001177a7;
            piVar12 = var_6();
            var_1->fts_errno = *piVar12;
            sp->fts_options = sp->fts_options | 0x4000;
LAB_001179e4:
            if (var_1->fts_info == 2) {
              return (type_1 *)0x0;
            }
          }
          else {
            if ((var_1->fts_flags & 2) == 0) {
              if (((var_1->fts_flags & 1) == 0) &&
                 (var_5 = var_13(sp,var_1->fts_parent,-1,".."), var_5 != 0)) {
                piVar12 = var_6();
                var_1->fts_errno = *piVar12;
                sp->fts_options = sp->fts_options | 0x4000;
                goto LAB_001179e4;
              }
            }
            else {
              if ((sp->fts_options & 4U) == 0) {
                if ((sp->fts_options & 0x200U) == 0) {
                  var_5 = var_18(var_1->fts_symfd);
                  if (var_5 != 0) {
                    piVar12 = var_6();
                    var_1->fts_errno = *piVar12;
                    sp->fts_options = sp->fts_options | 0x4000;
                  }
                }
                else {
                  var_19(sp,var_1->fts_symfd,true);
                }
              }
              var_8(var_1->fts_symfd);
            }
LAB_001177a7:
            if (var_1->fts_info == 2) goto LAB_00117a88;
          }
          if (var_1->fts_errno == 0) {
            var_1->fts_info = 6;
            var_10(sp,var_1);
          }
          else {
            var_1->fts_info = 7;
          }
LAB_00117a88:
          if ((sp->fts_options & 0x4000U) != 0) {
            return (type_1 *)0x0;
          }
          return var_1;
        }
        sp->fts_cur = var_1;
        var_15(var_12);
        if (var_1->fts_level == 0) {
          var_5 = var_17(sp);
          if (var_5 != 0) {
            sp->fts_options = sp->fts_options | 0x4000;
            return (type_1 *)0x0;
          }
          var_20(sp);
          var_1->fts_pathlen = var_1->fts_namelen;
          var_12 = var_1 + 1;
          var_21(sp->fts_path,var_12,var_1->fts_namelen + 1);
          var_23 = (type_1 *)var_22((char *)var_12,0x2f);
          if ((var_23 == (type_1 *)0x0) ||
             ((var_12 == var_23 && (*(char *)((long)&var_23->fts_cycle + 1) == '\0'))))
          goto LAB_0011784f;
          var_25 = (char *)((long)&var_23->fts_cycle + 1);
          var_27 = 0xffffffffffffffff;
          var_28 = var_25;
          goto code_r0x00117837;
        }
        var_12 = var_1;
      } while (var_1->fts_instr == 4);
      if (var_1->fts_instr == 2) {
        var_2 = var_3(sp,var_1,true);
        var_1->fts_info = var_2;
        if ((var_2 == 1) && ((sp->fts_options & 4) == 0)) {
          var_5 = var_4(sp,".");
          var_1->fts_symfd = var_5;
          if (var_5 < 0) {
            piVar12 = var_6();
            var_1->fts_errno = *piVar12;
            var_1->fts_info = 7;
          }
          else {
            var_1->fts_flags = var_1->fts_flags | 2;
          }
        }
        var_1->fts_instr = 3;
      }
    }
LAB_00117587:
    var_24 = var_1->fts_parent->fts_pathlen;
    var_26 = var_24 - 1;
    if (var_1->fts_parent->fts_path[var_24 - 1] != '/') {
      var_26 = var_24;
    }
    var_25 = sp->fts_path;
    var_25[var_26] = '/';
    var_21(var_25 + var_26 + 1,var_1 + 1,var_1->fts_namelen + 1);
  }
  goto LAB_001175c0;
  while( true ) {
    var_27 = var_27 - 1;
    var_29 = *var_28;
    var_28 = var_28 + (type_8)bVar18 * -2 + 1;
    if (var_29 == '\0') break;
code_r0x00117837:
    if (var_27 == 0) break;
  }
  var_21(var_12,var_25,~var_27);
  var_1->fts_namelen = ~var_27 - 1;
LAB_0011784f:
  var_25 = sp->fts_path;
  var_1->fts_path = var_25;
  var_1->fts_accpath = var_25;
  var_30(sp);
LAB_001175c0:
  sp->fts_cur = var_1;
  if (var_1->fts_info == 0xb) {
    var_31 = var_1->fts_statp[0].st_size;
    if (var_31 != 2) {
      if (var_31 == 1) {
        return var_1;
      }
                    /* WARNING: Subroutine does not return */
      var_16();
    }
    var_12 = var_1->fts_parent;
    if (((var_12->fts_n_dirs_remaining == 0) && ((sp->fts_options & 0x18U) == 0x18)) &&
       (var_32 = type_7(var_12,sp->fts_cwd_fd), var_32 == var_33))
    goto LAB_001175cf;
    var_2 = var_3(sp,var_1,false);
    var_1->fts_info = var_2;
    if ((var_1->fts_statp[0].st_mode & 0xf000) != 0x4000) goto LAB_001175cf;
    if (var_1->fts_level != 0) {
      var_27 = var_12->fts_n_dirs_remaining - 1;
      if (0xfffffffffffffffd < var_27) {
        if (var_2 != 1) {
          return var_1;
        }
        goto LAB_001175ea;
      }
      var_12->fts_n_dirs_remaining = var_27;
      goto LAB_001175cf;
    }
    if (var_2 != 1) {
      return var_1;
    }
  }
  else {
LAB_001175cf:
    if (var_1->fts_info != 1) {
      return var_1;
    }
    if (var_1->fts_level != 0) goto LAB_001175ea;
  }
  sp->fts_dev = var_1->fts_statp[0].st_dev;
LAB_001175ea:
  _Var7 = var_34(sp,var_1);
  if (!_Var7) {
    piVar12 = var_6();
    *piVar12 = 0xc;
    var_1 = (type_1 *)0x0;
  }
  return var_1;
}


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

void * MASKED(long *param_1)

{
  char *__s;
  uint uVar1;
  char cVar2;
  undefined2 uVar3;
  short sVar4;
  int iVar5;
  long lVar6;
  int *piVar7;
  long lVar8;
  char *pcVar9;
  ulong uVar10;
  void *pvVar11;
  void *pvVar12;
  char *pcVar13;
  byte bVar14;
  
  bVar14 = 0;
  pvVar11 = (void *)*param_1;
  if (pvVar11 == (void *)0x0) {
    return (void *)0x0;
  }
  if ((*(byte *)((long)param_1 + 0x49) & 0x40) != 0) {
    return (void *)0x0;
  }
  sVar4 = *(short *)((long)pvVar11 + 0x74);
  *(undefined2 *)((long)pvVar11 + 0x74) = 3;
  if (sVar4 == 1) {
    uVar3 = FUN_00115abc(param_1,pvVar11,0);
    *(undefined2 *)((long)pvVar11 + 0x70) = uVar3;
    return pvVar11;
  }
  pvVar12 = pvVar11;
  if (sVar4 == 2) {
    if (1 < (ushort)(*(short *)((long)pvVar11 + 0x70) - 0xcU)) {
      if (*(short *)((long)pvVar11 + 0x70) != 1) goto LAB_00117717;
      goto LAB_00117457;
    }
    sVar4 = FUN_00115abc(param_1,pvVar11,1);
    *(short *)((long)pvVar11 + 0x70) = sVar4;
    if ((sVar4 == 1) && ((*(byte *)(param_1 + 9) & 4) == 0)) {
      iVar5 = FUN_00115e27(param_1,&DAT_0011ff42);
      *(int *)((long)pvVar11 + 0x44) = iVar5;
      if (iVar5 < 0) {
        piVar7 = __errno_location();
        *(int *)((long)pvVar11 + 0x40) = *piVar7;
        *(undefined2 *)((long)pvVar11 + 0x70) = 7;
      }
      else {
        *(ushort *)((long)pvVar11 + 0x72) = *(ushort *)((long)pvVar11 + 0x72) | 2;
      }
    }
  }
  else {
    if (*(short *)((long)pvVar11 + 0x70) == 1) {
      if (sVar4 == 4) goto LAB_00117473;
LAB_00117457:
      uVar1 = *(uint *)(param_1 + 9);
      if (((uVar1 & 0x40) != 0) && (*(long *)((long)pvVar11 + 0x78) != param_1[3])) {
LAB_00117473:
        if ((*(byte *)((long)pvVar11 + 0x72) & 2) != 0) {
          close(*(int *)((long)pvVar11 + 0x44));
        }
        if (param_1[1] != 0) {
          FUN_00115e7a();
          param_1[1] = 0;
        }
        *(undefined2 *)((long)pvVar11 + 0x70) = 6;
        FUN_00116412(param_1,pvVar11);
        return pvVar11;
      }
      if (param_1[1] == 0) {
LAB_00117628:
        lVar8 = FUN_001164c9(param_1,3);
        param_1[1] = lVar8;
        if (lVar8 == 0) {
          if ((*(byte *)((long)param_1 + 0x49) & 0x40) == 0) {
            if ((*(int *)((long)pvVar11 + 0x40) != 0) && (*(short *)((long)pvVar11 + 0x70) != 4)) {
              *(undefined2 *)((long)pvVar11 + 0x70) = 7;
            }
            FUN_00116412(param_1,pvVar11);
            return pvVar11;
          }
          return (void *)0x0;
        }
      }
      else {
        if ((uVar1 & 0x2000) != 0) {
          *(uint *)(param_1 + 9) = uVar1 & 0xffffdfff;
          FUN_00115e7a();
          param_1[1] = 0;
          goto LAB_00117628;
        }
        iVar5 = FUN_00116203(param_1,pvVar11,0xffffffff,*(undefined8 *)((long)pvVar11 + 0x30));
        if (iVar5 != 0) {
          piVar7 = __errno_location();
          *(int *)((long)pvVar11 + 0x40) = *piVar7;
          *(ushort *)((long)pvVar11 + 0x72) = *(ushort *)((long)pvVar11 + 0x72) | 1;
          for (lVar8 = param_1[1]; lVar8 != 0; lVar8 = *(long *)(lVar8 + 0x10)) {
            *(undefined8 *)(lVar8 + 0x30) = *(undefined8 *)(*(long *)(lVar8 + 8) + 0x30);
          }
        }
      }
      pvVar11 = (void *)param_1[1];
      param_1[1] = 0;
    }
    else {
LAB_00117717:
      do {
        pvVar11 = *(void **)((long)pvVar12 + 0x10);
        if (pvVar11 == (void *)0x0) {
          lVar8 = *(long *)((long)pvVar12 + 8);
          if (*(long *)(lVar8 + 0x18) != 0) {
            *param_1 = lVar8;
            *(undefined1 *)(param_1[4] + *(long *)(lVar8 + 0x48)) = 0;
            pvVar11 = (void *)FUN_001164c9(param_1,3);
            if (pvVar11 != (void *)0x0) {
              free(pvVar12);
              goto LAB_00117587;
            }
            if ((*(byte *)((long)param_1 + 0x49) & 0x40) != 0) {
              return (void *)0x0;
            }
          }
          pvVar11 = *(void **)((long)pvVar12 + 8);
          *param_1 = (long)pvVar11;
          free(pvVar12);
          if (*(long *)((long)pvVar11 + 0x58) == -1) {
            free(pvVar11);
            piVar7 = __errno_location();
            *piVar7 = 0;
            *param_1 = 0;
            return (void *)0x0;
          }
          if (*(short *)((long)pvVar11 + 0x70) == 0xb) {
                    /* WARNING: Subroutine does not return */
            abort();
          }
          *(undefined1 *)(param_1[4] + *(long *)((long)pvVar11 + 0x48)) = 0;
          if (*(long *)((long)pvVar11 + 0x58) == 0) {
            iVar5 = FUN_001161af(param_1);
            if (iVar5 == 0) goto LAB_001177a7;
            piVar7 = __errno_location();
            *(int *)((long)pvVar11 + 0x40) = *piVar7;
            *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;
LAB_001179e4:
            if (*(short *)((long)pvVar11 + 0x70) == 2) {
              return (void *)0x0;
            }
          }
          else {
            if ((*(ushort *)((long)pvVar11 + 0x72) & 2) == 0) {
              if (((*(ushort *)((long)pvVar11 + 0x72) & 1) == 0) &&
                 (iVar5 = FUN_00116203(param_1,*(undefined8 *)((long)pvVar11 + 8),0xffffffff,
                                       &DAT_0011ff41), iVar5 != 0)) {
                piVar7 = __errno_location();
                *(int *)((long)pvVar11 + 0x40) = *piVar7;
                *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;
                goto LAB_001179e4;
              }
            }
            else {
              if ((*(uint *)(param_1 + 9) & 4) == 0) {
                if ((*(uint *)(param_1 + 9) & 0x200) == 0) {
                  iVar5 = fchdir(*(int *)((long)pvVar11 + 0x44));
                  if (iVar5 != 0) {
                    piVar7 = __errno_location();
                    *(int *)((long)pvVar11 + 0x40) = *piVar7;
                    *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;
                  }
                }
                else {
                  FUN_0011615c(param_1,*(undefined4 *)((long)pvVar11 + 0x44),1);
                }
              }
              close(*(int *)((long)pvVar11 + 0x44));
            }
LAB_001177a7:
            if (*(short *)((long)pvVar11 + 0x70) == 2) goto LAB_00117a88;
          }
          if (*(int *)((long)pvVar11 + 0x40) == 0) {
            *(undefined2 *)((long)pvVar11 + 0x70) = 6;
            FUN_00116412(param_1,pvVar11);
          }
          else {
            *(undefined2 *)((long)pvVar11 + 0x70) = 7;
          }
LAB_00117a88:
          if ((*(uint *)(param_1 + 9) & 0x4000) != 0) {
            return (void *)0x0;
          }
          return pvVar11;
        }
        *param_1 = (long)pvVar11;
        free(pvVar12);
        if (*(long *)((long)pvVar11 + 0x58) == 0) {
          iVar5 = FUN_001161af(param_1);
          if (iVar5 != 0) {
            *(uint *)(param_1 + 9) = *(uint *)(param_1 + 9) | 0x4000;
            return (void *)0x0;
          }
          FUN_00115eb3(param_1);
          *(long *)((long)pvVar11 + 0x48) = *(long *)((long)pvVar11 + 0x60);
          __s = (char *)((long)pvVar11 + 0x108);
          memmove((void *)param_1[4],__s,*(long *)((long)pvVar11 + 0x60) + 1);
          pcVar9 = strrchr(__s,0x2f);
          if ((pcVar9 == (char *)0x0) || ((__s == pcVar9 && (pcVar9[1] == '\0'))))
          goto LAB_0011784f;
          uVar10 = 0xffffffffffffffff;
          pcVar13 = pcVar9 + 1;
          goto code_r0x00117837;
        }
        pvVar12 = pvVar11;
      } while (*(short *)((long)pvVar11 + 0x74) == 4);
      if (*(short *)((long)pvVar11 + 0x74) == 2) {
        sVar4 = FUN_00115abc(param_1,pvVar11,1);
        *(short *)((long)pvVar11 + 0x70) = sVar4;
        if ((sVar4 == 1) && ((*(byte *)(param_1 + 9) & 4) == 0)) {
          iVar5 = FUN_00115e27(param_1,&DAT_0011ff42);
          *(int *)((long)pvVar11 + 0x44) = iVar5;
          if (iVar5 < 0) {
            piVar7 = __errno_location();
            *(int *)((long)pvVar11 + 0x40) = *piVar7;
            *(undefined2 *)((long)pvVar11 + 0x70) = 7;
          }
          else {
            *(ushort *)((long)pvVar11 + 0x72) = *(ushort *)((long)pvVar11 + 0x72) | 2;
          }
        }
        *(undefined2 *)((long)pvVar11 + 0x74) = 3;
      }
    }
LAB_00117587:
    lVar8 = *(long *)(*(long *)((long)pvVar11 + 8) + 0x48);
    lVar6 = lVar8 + -1;
    if (*(char *)(*(long *)(*(long *)((long)pvVar11 + 8) + 0x38) + -1 + lVar8) != '/') {
      lVar6 = lVar8;
    }
    lVar8 = param_1[4];
    *(undefined1 *)(lVar6 + lVar8) = 0x2f;
    memmove((undefined1 *)(lVar6 + lVar8) + 1,(void *)((long)pvVar11 + 0x108),
            *(long *)((long)pvVar11 + 0x60) + 1);
  }
  goto LAB_001175c0;
  while( true ) {
    uVar10 = uVar10 - 1;
    cVar2 = *pcVar13;
    pcVar13 = pcVar13 + (ulong)bVar14 * -2 + 1;
    if (cVar2 == '\0') break;
code_r0x00117837:
    if (uVar10 == 0) break;
  }
  memmove(__s,pcVar9 + 1,~uVar10);
  *(ulong *)((long)pvVar11 + 0x60) = ~uVar10 - 1;
LAB_0011784f:
  lVar8 = param_1[4];
  *(long *)((long)pvVar11 + 0x38) = lVar8;
  *(long *)((long)pvVar11 + 0x30) = lVar8;
  FUN_00115dc3(param_1);
LAB_001175c0:
  *param_1 = (long)pvVar11;
  if (*(short *)((long)pvVar11 + 0x70) == 0xb) {
    if (*(long *)((long)pvVar11 + 0xa8) != 2) {
      if (*(long *)((long)pvVar11 + 0xa8) == 1) {
        return pvVar11;
      }
                    /* WARNING: Subroutine does not return */
      abort();
    }
    lVar8 = *(long *)((long)pvVar11 + 8);
    if (((*(long *)(lVar8 + 0x68) == 0) && ((*(uint *)(param_1 + 9) & 0x18) == 0x18)) &&
       (iVar5 = FUN_0011603e(lVar8,*(undefined4 *)((long)param_1 + 0x2c)), iVar5 == 2))
    goto LAB_001175cf;
    sVar4 = FUN_00115abc(param_1,pvVar11,0);
    *(short *)((long)pvVar11 + 0x70) = sVar4;
    if ((*(uint *)((long)pvVar11 + 0x90) & 0xf000) != 0x4000) goto LAB_001175cf;
    if (*(long *)((long)pvVar11 + 0x58) != 0) {
      uVar10 = *(long *)(lVar8 + 0x68) - 1;
      if (0xfffffffffffffffd < uVar10) {
        if (sVar4 != 1) {
          return pvVar11;
        }
        goto LAB_001175ea;
      }
      *(ulong *)(lVar8 + 0x68) = uVar10;
      goto LAB_001175cf;
    }
    if (sVar4 != 1) {
      return pvVar11;
    }
  }
  else {
LAB_001175cf:
    if (*(short *)((long)pvVar11 + 0x70) != 1) {
      return pvVar11;
    }
    if (*(long *)((long)pvVar11 + 0x58) != 0) goto LAB_001175ea;
  }
  param_1[3] = *(long *)((long)pvVar11 + 0x78);
LAB_001175ea:
  cVar2 = FUN_001160b2(param_1,pvVar11);
  if (cVar2 == '\0') {
    piVar7 = __errno_location();
    *piVar7 = 0xc;
    pvVar11 = (void *)0x0;
  }
  return pvVar11;
}

