
void leave_dir(FTS *fts,FTSENT *ent)

{
  stat *psVar1;
  bool bVar2;
  bool bVar3;
  bool bVar4;
  undefined3 extraout_var;
  undefined3 extraout_var_00;
  int iVar5;
  _ftsent *p_Var6;
  DIR *pDVar7;
  leaf_optimization lVar8;
  int iVar9;
  int iVar10;
  int iVar11;
  _Bool _Var21;
  int *piVar12;
  undefined4 *puVar13;
  uint uVar14;
  FTSENT *pFVar15;
  undefined4 uVar16;
  _func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *p_Var17;
  ushort uVar20;
  int iVar18;
  FTSENT *pFVar19;
  hash_table *phVar22;
  DIR *pDVar23;
  size_t sVar24;
  char *pcVar25;
  FTSENT *p;
  uint uVar26;
  uint uVar27;
  code *pcVar28;
  undefined *puVar29;
  uint uVar30;
  FTSENT *pFStack_a4;
  FTSENT *pFStack_a0;
  uint uStack_94;
  char *pcStack_90;
  int iStack_8c;
  int iStack_7c;
  Active_dir obj;
  
  iVar5 = *(int *)PTR___stack_chk_guard_000333f4;
  if ((fts->fts_options & 0x102U) == 0) {
    p_Var6 = ent->fts_parent;
    if ((p_Var6 != (_ftsent *)0x0) && (-1 < p_Var6->fts_level)) {
      phVar22 = (fts->fts_cycle).ht;
      pcVar28 = (code *)PTR_abort_000332e8;
      if (phVar22->n_entries == 0 && phVar22->tuning == (Hash_tuning *)0x0) goto LAB_0001c120;
      if ((phVar22->bucket == *(hash_entry **)&ent->fts_statp[0].st_ino) &&
         (phVar22->bucket_limit == *(hash_entry **)((int)&ent->fts_statp[0].st_ino + 4))) {
        psVar1 = ent->fts_statp;
        ent = (FTSENT *)phVar22->n_buckets;
        if ((ent == (FTSENT *)0x0) &&
           (ent = (FTSENT *)phVar22->n_buckets_used, ent == (FTSENT *)psVar1->st_dev)) {
          phVar22->n_buckets_used = p_Var6->fts_statp[0].st_dev;
          phVar22->n_buckets = 0;
          phVar22 = (fts->fts_cycle).ht;
          ent = *(FTSENT **)((int)&p_Var6->fts_statp[0].st_ino + 4);
          fts = *(FTS **)&p_Var6->fts_statp[0].st_ino;
          phVar22->bucket_limit = (hash_entry *)ent;
          phVar22->bucket = (hash_entry *)fts;
        }
      }
    }
LAB_0001c0f8:
    if (iVar5 == *(int *)PTR___stack_chk_guard_000333f4) {
      return;
    }
  }
  else {
    obj.dev._4_4_ = ent->fts_statp[0].st_dev;
    obj.dev._0_4_ = 0;
    obj.ino._4_4_ = (undefined4)ent->fts_statp[0].st_ino;
    obj.ino._0_4_ = *(undefined4 *)&ent->fts_statp[0].st_ino;
    ent = (FTSENT *)&obj;
    fts = (FTS *)hash_delete((fts->fts_cycle).ht,ent);
    if (fts != (FTS *)0x0) {
      (*(code *)PTR_free_000333fc)();
      goto LAB_0001c0f8;
    }
    pcVar28 = (code *)PTR_abort_000332e8;
    (*(code *)PTR_abort_000332e8)();
LAB_0001c120:
    (*pcVar28)();
  }
  puVar29 = PTR___stack_chk_fail_000333dc;
  (*(code *)PTR___stack_chk_fail_000333dc)();
  p = fts->fts_cur;
  pDVar23 = p->fts_dirp;
  if (pDVar23 != (DIR *)0x0) {
    iStack_7c = (**(code **)(puVar29 + 0x172d0))();
    if (iStack_7c < 0) {
      (**(code **)(puVar29 + 0x17194))(p->fts_dirp);
      p->fts_dirp = (DIR *)0x0;
      if (ent != (FTSENT *)0x3) {
        return;
      }
      p->fts_info = 4;
      piVar12 = (int *)(**(code **)(puVar29 + 0x17220))();
      p->fts_errno = *piVar12;
      return;
    }
    if (fts->fts_compar == (_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *)0x0) {
      uStack_94 = 100000;
      bVar2 = true;
    }
    else {
      uStack_94 = 0xffffffff;
      bVar2 = true;
    }
    goto LAB_0001c1b8;
  }
  uVar26 = fts->fts_options;
  if ((uVar26 & 0x204) == 0x200) {
    iVar5 = fts->fts_cwd_fd;
  }
  else {
    iVar5 = -100;
  }
  uVar27 = uVar26 & 0x10;
  if (((uVar27 != 0) && (uVar27 = 0x20000, (uVar26 & 1) != 0)) &&
     (uVar27 = p->fts_level, uVar27 != 0)) {
    uVar27 = 0x20000;
  }
  iStack_7c = openat_safer(iVar5,p->fts_accpath,(uVar26 & 0x800) << 7 | uVar27 | 0x90880);
  if (iStack_7c < 0) {
LAB_0001c3e8:
    p->fts_dirp = (DIR *)0x0;
    if (ent == (FTSENT *)0x3) {
      p->fts_info = 4;
      piVar12 = (int *)(**(code **)(puVar29 + 0x17220))();
      p->fts_errno = *piVar12;
    }
    return;
  }
  pDVar7 = (DIR *)(**(code **)(puVar29 + 0x171f0))(iStack_7c);
  if (pDVar7 == (DIR *)0x0) {
    puVar13 = (undefined4 *)(**(code **)(puVar29 + 0x17220))();
    uVar16 = *puVar13;
    (**(code **)(puVar29 + 0x17198))(iStack_7c);
    *puVar13 = uVar16;
    goto LAB_0001c3e8;
  }
  p->fts_dirp = pDVar7;
  if (p->fts_info == 0xb) {
    uVar20 = fts_stat(fts,p,false);
    p->fts_info = uVar20;
  }
  else if ((fts->fts_options & 0x100U) != 0) {
    leave_dir(fts,p);
    fts_stat(fts,p,false);
    _Var21 = enter_dir(fts,p);
    if (CONCAT31(extraout_var,_Var21) == 0) {
      puVar13 = (undefined4 *)(**(code **)(puVar29 + 0x17220))();
      *puVar13 = 0xc;
      return;
    }
  }
  if (fts->fts_compar == (_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *)0x0) {
    uStack_94 = 100000;
  }
  else {
    uStack_94 = 0xffffffff;
  }
  if (ent == (FTSENT *)0x2) {
    bVar2 = false;
  }
  else {
    if ((((fts->fts_options & 0x38U) == 0x18) && (p->fts_statp[0].st_nlink == 2)) &&
       (lVar8 = leaf_optimization(p,iStack_7c), lVar8 != NO_LEAF_OPTIMIZATION)) {
      bVar2 = false;
      if (ent != (FTSENT *)0x3) {
        bVar2 = false;
        goto LAB_0001c1b8;
      }
      uVar26 = fts->fts_options;
    }
    else {
      bVar2 = true;
      uVar26 = fts->fts_options;
    }
    if ((uVar26 & 0x200) != 0) {
      iStack_7c = rpl_fcntl(iStack_7c,0x406,3);
    }
    if ((iStack_7c < 0) || (iVar5 = fts_safe_changedir(fts,p,iStack_7c,(char *)0x0), iVar5 != 0)) {
      if ((bVar2) && (ent == (FTSENT *)0x3)) {
        piVar12 = (int *)(**(code **)(puVar29 + 0x17220))();
        p->fts_errno = *piVar12;
      }
      p->fts_flags = p->fts_flags | 1;
      (**(code **)(puVar29 + 0x17194))(p->fts_dirp);
      p->fts_dirp = (DIR *)0x0;
      if (((fts->fts_options & 0x200U) != 0) && (-1 < iStack_7c)) {
        (**(code **)(puVar29 + 0x17198))(iStack_7c);
        p->fts_dirp = (DIR *)0x0;
      }
      bVar2 = false;
    }
    else {
      bVar2 = true;
    }
  }
LAB_0001c1b8:
  sVar24 = p->fts_pathlen - 1;
  if (p->fts_path[sVar24] != '/') {
    sVar24 = p->fts_pathlen;
  }
  if ((fts->fts_options & 4U) == 0) {
    pcStack_90 = (char *)0x0;
  }
  else {
    pcStack_90 = fts->fts_path + sVar24 + 1;
    fts->fts_path[sVar24] = '/';
  }
  uVar27 = sVar24 + 1;
  uVar30 = fts->fts_pathlen - uVar27;
  iVar5 = p->fts_level;
  bVar4 = false;
  iStack_8c = 0;
  pFStack_a4 = (FTSENT *)0x0;
  uVar26 = 0;
  pFStack_a0 = (FTSENT *)0x0;
  iVar9 = *(int *)(puVar29 + 0x16fd4);
  iVar10 = *(int *)(puVar29 + 0x16fd4);
  iVar11 = *(int *)(puVar29 + 0x16fd4);
LAB_0001c96c:
  do {
    do {
      if (p->fts_dirp == (DIR *)0x0) goto LAB_0001c66c;
      piVar12 = (int *)(**(code **)(puVar29 + 0x17220))();
      *piVar12 = 0;
      puVar13 = (undefined4 *)(**(code **)(puVar29 + 0x171d8))(p->fts_dirp);
      if (puVar13 == (undefined4 *)0x0) {
        if (*piVar12 != 0) {
          p->fts_errno = *piVar12;
          uVar20 = 7;
          if ((pDVar23 == (DIR *)0x0) && (uVar26 == 0)) {
            uVar20 = 4;
          }
          p->fts_info = uVar20;
        }
        if (p->fts_dirp != (DIR *)0x0) {
          (**(code **)(puVar29 + 0x17194))();
          p->fts_dirp = (DIR *)0x0;
        }
        goto LAB_0001c66c;
      }
    } while ((((fts->fts_options & 0x20U) == 0) && (*(char *)((int)puVar13 + 0x13) == '.')) &&
            ((*(char *)(puVar13 + 5) == '\0' || ((puVar13[5] & 0xffff0000) == 0x2e000000))));
    uVar14 = (**(code **)(puVar29 + 0x17240))((int)puVar13 + 0x13);
    pFVar15 = (FTSENT *)(*(code *)(iVar9 + -0x4b14))(fts,(int)puVar13 + 0x13,uVar14);
    if (pFVar15 == (FTSENT *)0x0) {
LAB_0001c794:
      iVar5 = *piVar12;
      (**(code **)(puVar29 + 0x172c8))(pFVar15);
      fts_lfree(pFStack_a0);
      (**(code **)(puVar29 + 0x17194))(p->fts_dirp);
      p->fts_dirp = (DIR *)0x0;
      p->fts_info = 7;
      fts->fts_options = fts->fts_options | 0x4000;
      *piVar12 = iVar5;
      return;
    }
    if (uVar30 <= uVar14) {
      pcVar25 = fts->fts_path;
      _Var21 = fts_palloc(fts,sVar24 + 2 + uVar14);
      iVar18 = CONCAT31(extraout_var_00,_Var21);
      if (iVar18 == 0) goto LAB_0001c794;
      if ((fts->fts_path != pcVar25) && (iStack_8c = iVar18, (fts->fts_options & 4U) != 0)) {
        pcStack_90 = fts->fts_path + uVar27;
      }
      uVar30 = fts->fts_pathlen - uVar27;
    }
    if (uVar27 + uVar14 < uVar27) {
      (**(code **)(puVar29 + 0x172c8))(pFVar15);
      fts_lfree(pFStack_a0);
      (**(code **)(puVar29 + 0x17194))(p->fts_dirp);
      p->fts_dirp = (DIR *)0x0;
      p->fts_info = 7;
      fts->fts_options = fts->fts_options | 0x4000;
      *piVar12 = 0x4e;
      return;
    }
    pFVar15->fts_level = iVar5 + 1;
    pFVar15->fts_parent = fts->fts_cur;
    pFVar15->fts_pathlen = uVar27 + uVar14;
    uVar16 = *puVar13;
    *(undefined4 *)((int)&pFVar15->fts_statp[0].st_ino + 4) = puVar13[1];
    *(undefined4 *)&pFVar15->fts_statp[0].st_ino = uVar16;
    if ((fts->fts_options & 4U) == 0) {
      pFVar15->fts_accpath = (char *)(pFVar15 + 1);
      p_Var17 = fts->fts_compar;
    }
    else {
      pFVar15->fts_accpath = pFVar15->fts_path;
      (**(code **)(puVar29 + 0x172cc))(pcStack_90,pFVar15 + 1,pFVar15->fts_namelen + 1);
      p_Var17 = fts->fts_compar;
    }
    if ((p_Var17 == (_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *)0x0) ||
       ((fts->fts_options & 0x400U) != 0)) {
      if (((fts->fts_options & 0x18U) == 0x18) && ((*(byte *)((int)puVar13 + 0x12) & 0xfb) != 0)) {
        pFVar15->fts_info = 0xb;
        bVar3 = true;
        if (*(byte *)((int)puVar13 + 0x12) < 0xd) {
                    /* WARNING: Could not recover jumptable at 0x0001c904. Too many branches */
                    /* WARNING: Treating indirect jump as call */
          (*(code *)(puVar29 +
                    *(int *)(iVar11 + 0x2d30 + (uint)*(byte *)((int)puVar13 + 0x12) * 4) + 0x1ef9c))
                    ();
          return;
        }
      }
      else {
        pFVar15->fts_info = 0xb;
        bVar3 = false;
        if (*(byte *)((int)puVar13 + 0x12) < 0xd) {
                    /* WARNING: Could not recover jumptable at 0x0001cab8. Too many branches */
                    /* WARNING: Treating indirect jump as call */
          (*(code *)(puVar29 +
                    *(int *)(*(int *)(puVar29 + 0x16fd4) + 0x2d64 +
                            (uint)*(byte *)((int)puVar13 + 0x12) * 4) + 0x1ef9c))();
          return;
        }
      }
      pFVar15->fts_statp[0].st_mode = 0;
      if (bVar3) {
        uVar16 = 1;
      }
      else {
        uVar16 = 2;
      }
      *(undefined4 *)((int)&pFVar15->fts_statp[0].st_size + 4) = uVar16;
      *(undefined4 *)&pFVar15->fts_statp[0].st_size = 0;
    }
    else {
      uVar20 = fts_stat(fts,pFVar15,false);
      pFVar15->fts_info = uVar20;
    }
    pFVar15->fts_link = (_ftsent *)0x0;
    pFVar19 = pFVar15;
    if (pFStack_a0 != (FTSENT *)0x0) {
      pFStack_a4->fts_link = pFVar15;
      pFVar19 = pFStack_a0;
    }
    pFStack_a0 = pFVar19;
    pFStack_a4 = pFVar15;
    if (uVar26 == 10000) {
      if (fts->fts_compar != (_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *)0x0) {
LAB_0001cb74:
        uVar26 = 0x2711;
        goto LAB_0001c96c;
      }
      iVar18 = (*(code *)(iVar10 + -0x47a8))(p,iStack_7c);
      if (iVar18 == 0x6969) {
        bVar4 = false;
      }
      else if (iVar18 == 0x1021994) {
        bVar4 = false;
      }
      else {
        if (iVar18 != -0xacb2be) {
          bVar4 = true;
          goto LAB_0001cb74;
        }
        bVar4 = false;
      }
    }
    uVar26 = uVar26 + 1;
  } while (uVar26 < uStack_94);
LAB_0001c66c:
  if (iStack_8c != 0) {
    pcVar25 = fts->fts_path;
    for (p_Var6 = fts->fts_child; pFVar15 = pFStack_a0, p_Var6 != (_ftsent *)0x0;
        p_Var6 = p_Var6->fts_link) {
      if ((_ftsent *)p_Var6->fts_accpath != p_Var6 + 1) {
        p_Var6->fts_accpath = pcVar25 + ((int)p_Var6->fts_accpath - (int)p_Var6->fts_path);
      }
      p_Var6->fts_path = pcVar25;
    }
    while (pFVar19 = pFVar15, -1 < pFVar19->fts_level) {
      if ((FTSENT *)pFVar19->fts_accpath != pFVar19 + 1) {
        pFVar19->fts_accpath = pcVar25 + ((int)pFVar19->fts_accpath - (int)pFVar19->fts_path);
      }
      pFVar19->fts_path = pcVar25;
      pFVar15 = pFVar19->fts_link;
      if (pFVar19->fts_link == (_ftsent *)0x0) {
        pFVar15 = pFVar19->fts_parent;
      }
    }
  }
  if ((fts->fts_options & 4U) != 0) {
    if ((fts->fts_pathlen == uVar27) || (uVar26 == 0)) {
      pcStack_90 = pcStack_90 + -1;
    }
    *pcStack_90 = '\0';
  }
  if ((pDVar23 == (DIR *)0x0) && (bVar2)) {
    if ((ent != (FTSENT *)0x1) && (uVar26 != 0)) goto LAB_0001c6c0;
    if (p->fts_level == 0) {
      iVar5 = restore_initial_cwd(fts);
    }
    else {
      iVar5 = fts_safe_changedir(fts,p->fts_parent,-1,(char *)(*(int *)(puVar29 + 0x16fd4) + 0x2d20)
                                );
    }
    if (iVar5 != 0) {
      p->fts_info = 7;
      fts->fts_options = fts->fts_options | 0x4000;
      fts_lfree(pFStack_a0);
      return;
    }
  }
  if (uVar26 == 0) {
    if (((ent == (FTSENT *)0x3) && (p->fts_info != 4)) && (p->fts_info != 7)) {
      p->fts_info = 6;
    }
    fts_lfree(pFStack_a0);
    return;
  }
LAB_0001c6c0:
  if (bVar4) {
    fts->fts_compar =
         (_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *)(*(int *)(puVar29 + 0x16fd4) + -0x4fa0);
    fts_sort(fts,pFStack_a0,uVar26);
    fts->fts_compar = (_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *)0x0;
    return;
  }
  if (fts->fts_compar == (_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *)0x0) {
    return;
  }
  if (uVar26 < 2) {
    return;
  }
  fts_sort(fts,pFStack_a0,uVar26);
  return;
}



int FUN_0001bfec(int *param_1,undefined4 *param_2)

{
  int *piVar1;
  bool bVar2;
  bool bVar3;
  bool bVar4;
  int iVar5;
  int iVar6;
  int iVar7;
  int iVar8;
  int iVar9;
  undefined4 *puVar10;
  uint uVar11;
  int iVar12;
  undefined4 uVar13;
  int iVar14;
  undefined2 uVar15;
  int *piVar16;
  int iVar17;
  int iVar18;
  uint uVar19;
  uint uVar20;
  code *pcVar21;
  undefined *puVar22;
  uint uVar23;
  int iVar24;
  int iStack_a4;
  int iStack_a0;
  uint uStack_94;
  undefined1 *puStack_90;
  int iStack_8c;
  int iStack_7c;
  undefined4 local_28;
  undefined4 local_24;
  undefined4 local_20;
  undefined4 local_1c;
  int local_c;
  
  local_c = *(int *)PTR___stack_chk_guard_000333f4;
  if ((param_1[0xc] & 0x102U) == 0) {
    iVar5 = param_2[1];
    if ((iVar5 != 0) && (-1 < *(int *)(iVar5 + 0x30))) {
      piVar16 = (int *)param_1[0xe];
      pcVar21 = (code *)PTR_abort_000332e8;
      if (piVar16[4] == 0 && piVar16[5] == 0) goto LAB_0001c120;
      if ((*piVar16 == param_2[0x16]) && (piVar16[1] == param_2[0x17])) {
        piVar1 = param_2 + 0x12;
        param_2 = (undefined4 *)piVar16[2];
        if ((param_2 == (undefined4 *)0x0) &&
           (param_2 = (undefined4 *)piVar16[3], param_2 == (undefined4 *)*piVar1)) {
          piVar16[3] = *(int *)(iVar5 + 0x48);
          piVar16[2] = 0;
          piVar16 = (int *)param_1[0xe];
          param_2 = *(undefined4 **)(iVar5 + 0x5c);
          param_1 = *(int **)(iVar5 + 0x58);
          piVar16[1] = (int)param_2;
          *piVar16 = (int)param_1;
        }
      }
    }
LAB_0001c0f8:
    if (local_c == *(int *)PTR___stack_chk_guard_000333f4) {
      return *(int *)PTR___stack_chk_guard_000333f4;
    }
  }
  else {
    local_24 = param_2[0x12];
    local_28 = 0;
    local_1c = param_2[0x17];
    local_20 = param_2[0x16];
    param_2 = &local_28;
    param_1 = (int *)hash_delete(param_1[0xe]);
    if (param_1 != (int *)0x0) {
      (*(code *)PTR_free_000333fc)();
      goto LAB_0001c0f8;
    }
    pcVar21 = (code *)PTR_abort_000332e8;
    (*(code *)PTR_abort_000332e8)();
LAB_0001c120:
    (*pcVar21)();
  }
  puVar22 = PTR___stack_chk_fail_000333dc;
  (*(code *)PTR___stack_chk_fail_000333dc)();
  iVar18 = *param_1;
  iVar5 = *(int *)(iVar18 + 0xc);
  if (iVar5 != 0) {
    iStack_7c = (**(code **)(puVar22 + 0x172d0))();
    if (iStack_7c < 0) {
      (**(code **)(puVar22 + 0x17194))(*(undefined4 *)(iVar18 + 0xc));
      *(undefined4 *)(iVar18 + 0xc) = 0;
      if (param_2 != (undefined4 *)0x3) {
        return 0;
      }
      *(undefined2 *)(iVar18 + 0x3c) = 4;
      puVar10 = (undefined4 *)(**(code **)(puVar22 + 0x17220))();
      *(undefined4 *)(iVar18 + 0x20) = *puVar10;
      return 0;
    }
    if (param_1[0xb] == 0) {
      uStack_94 = 100000;
      bVar2 = true;
    }
    else {
      uStack_94 = 0xffffffff;
      bVar2 = true;
    }
    goto LAB_0001c1b8;
  }
  uVar19 = param_1[0xc];
  if ((uVar19 & 0x204) == 0x200) {
    iVar17 = param_1[8];
  }
  else {
    iVar17 = -100;
  }
  uVar20 = uVar19 & 0x10;
  if (((uVar20 != 0) && (uVar20 = 0x20000, (uVar19 & 1) != 0)) &&
     (uVar20 = *(uint *)(iVar18 + 0x30), uVar20 != 0)) {
    uVar20 = 0x20000;
  }
  iStack_7c = openat_safer(iVar17,*(undefined4 *)(iVar18 + 0x18),
                           (uVar19 & 0x800) << 7 | uVar20 | 0x90880);
  if (iStack_7c < 0) {
LAB_0001c3e8:
    *(undefined4 *)(iVar18 + 0xc) = 0;
    if (param_2 == (undefined4 *)0x3) {
      *(undefined2 *)(iVar18 + 0x3c) = 4;
      puVar10 = (undefined4 *)(**(code **)(puVar22 + 0x17220))();
      *(undefined4 *)(iVar18 + 0x20) = *puVar10;
    }
    return 0;
  }
  iVar17 = (**(code **)(puVar22 + 0x171f0))(iStack_7c);
  if (iVar17 == 0) {
    puVar10 = (undefined4 *)(**(code **)(puVar22 + 0x17220))();
    uVar13 = *puVar10;
    (**(code **)(puVar22 + 0x17198))(iStack_7c);
    *puVar10 = uVar13;
    goto LAB_0001c3e8;
  }
  *(int *)(iVar18 + 0xc) = iVar17;
  if (*(short *)(iVar18 + 0x3c) == 0xb) {
    uVar15 = FUN_0001b18c(param_1,iVar18,0);
    *(undefined2 *)(iVar18 + 0x3c) = uVar15;
  }
  else if ((param_1[0xc] & 0x100U) != 0) {
    FUN_0001bfec(param_1,iVar18);
    FUN_0001b18c(param_1,iVar18,0);
    iVar17 = FUN_0001bad0(param_1,iVar18);
    if (iVar17 == 0) {
      puVar10 = (undefined4 *)(**(code **)(puVar22 + 0x17220))();
      *puVar10 = 0xc;
      return 0;
    }
  }
  if (param_1[0xb] == 0) {
    uStack_94 = 100000;
  }
  else {
    uStack_94 = 0xffffffff;
  }
  if (param_2 == (undefined4 *)0x2) {
    bVar2 = false;
  }
  else {
    if ((((param_1[0xc] & 0x38U) == 0x18) && (*(int *)(iVar18 + 100) == 2)) &&
       (iVar17 = FUN_0001ba08(iVar18,iStack_7c), iVar17 != 0)) {
      bVar2 = false;
      if (param_2 != (undefined4 *)0x3) {
        bVar2 = false;
        goto LAB_0001c1b8;
      }
      uVar19 = param_1[0xc];
    }
    else {
      bVar2 = true;
      uVar19 = param_1[0xc];
    }
    if ((uVar19 & 0x200) != 0) {
      iStack_7c = rpl_fcntl(iStack_7c,0x406,3);
    }
    if ((iStack_7c < 0) || (iVar17 = FUN_0001bd68(param_1,iVar18,iStack_7c,0), iVar17 != 0)) {
      if ((bVar2) && (param_2 == (undefined4 *)0x3)) {
        puVar10 = (undefined4 *)(**(code **)(puVar22 + 0x17220))();
        *(undefined4 *)(iVar18 + 0x20) = *puVar10;
      }
      *(ushort *)(iVar18 + 0x3e) = *(ushort *)(iVar18 + 0x3e) | 1;
      (**(code **)(puVar22 + 0x17194))(*(undefined4 *)(iVar18 + 0xc));
      *(undefined4 *)(iVar18 + 0xc) = 0;
      if (((param_1[0xc] & 0x200U) != 0) && (-1 < iStack_7c)) {
        (**(code **)(puVar22 + 0x17198))(iStack_7c);
        *(undefined4 *)(iVar18 + 0xc) = 0;
      }
      bVar2 = false;
    }
    else {
      bVar2 = true;
    }
  }
LAB_0001c1b8:
  iVar17 = *(int *)(iVar18 + 0x28) + -1;
  if (*(char *)(*(int *)(iVar18 + 0x1c) + iVar17) != '/') {
    iVar17 = *(int *)(iVar18 + 0x28);
  }
  if ((param_1[0xc] & 4U) == 0) {
    puStack_90 = (undefined1 *)0x0;
  }
  else {
    puStack_90 = (undefined1 *)(param_1[6] + iVar17) + 1;
    *(undefined1 *)(param_1[6] + iVar17) = 0x2f;
  }
  uVar20 = iVar17 + 1;
  uVar23 = param_1[9] - uVar20;
  iVar6 = *(int *)(iVar18 + 0x30);
  bVar4 = false;
  iStack_8c = 0;
  iStack_a4 = 0;
  uVar19 = 0;
  iStack_a0 = 0;
  iVar7 = *(int *)(puVar22 + 0x16fd4);
  iVar8 = *(int *)(puVar22 + 0x16fd4);
  iVar9 = *(int *)(puVar22 + 0x16fd4);
LAB_0001c96c:
  do {
    do {
      if (*(int *)(iVar18 + 0xc) == 0) goto LAB_0001c66c;
      piVar16 = (int *)(**(code **)(puVar22 + 0x17220))();
      *piVar16 = 0;
      puVar10 = (undefined4 *)(**(code **)(puVar22 + 0x171d8))(*(undefined4 *)(iVar18 + 0xc));
      if (puVar10 == (undefined4 *)0x0) {
        if (*piVar16 != 0) {
          *(int *)(iVar18 + 0x20) = *piVar16;
          uVar15 = 7;
          if ((iVar5 == 0) && (uVar19 == 0)) {
            uVar15 = 4;
          }
          *(undefined2 *)(iVar18 + 0x3c) = uVar15;
        }
        if (*(int *)(iVar18 + 0xc) != 0) {
          (**(code **)(puVar22 + 0x17194))();
          *(undefined4 *)(iVar18 + 0xc) = 0;
        }
        goto LAB_0001c66c;
      }
    } while ((((param_1[0xc] & 0x20U) == 0) && (*(char *)((int)puVar10 + 0x13) == '.')) &&
            ((*(char *)(puVar10 + 5) == '\0' || ((puVar10[5] & 0xffff0000) == 0x2e000000))));
    uVar11 = (**(code **)(puVar22 + 0x17240))((int)puVar10 + 0x13);
    iVar12 = (*(code *)(iVar7 + -0x4b14))(param_1,(int)puVar10 + 0x13,uVar11);
    if (iVar12 == 0) {
LAB_0001c794:
      iVar5 = *piVar16;
      (**(code **)(puVar22 + 0x172c8))(iVar12);
      FUN_0001b6fc(iStack_a0);
      (**(code **)(puVar22 + 0x17194))(*(undefined4 *)(iVar18 + 0xc));
      *(undefined4 *)(iVar18 + 0xc) = 0;
      *(undefined2 *)(iVar18 + 0x3c) = 7;
      param_1[0xc] = param_1[0xc] | 0x4000;
      *piVar16 = iVar5;
      return 0;
    }
    if (uVar23 <= uVar11) {
      iVar24 = param_1[6];
      iVar14 = FUN_0001b0cc(param_1,iVar17 + 2 + uVar11);
      if (iVar14 == 0) goto LAB_0001c794;
      if ((param_1[6] != iVar24) && (iStack_8c = iVar14, (param_1[0xc] & 4U) != 0)) {
        puStack_90 = (undefined1 *)(param_1[6] + uVar20);
      }
      uVar23 = param_1[9] - uVar20;
    }
    if (uVar20 + uVar11 < uVar20) {
      (**(code **)(puVar22 + 0x172c8))(iVar12);
      FUN_0001b6fc(iStack_a0);
      (**(code **)(puVar22 + 0x17194))(*(undefined4 *)(iVar18 + 0xc));
      *(undefined4 *)(iVar18 + 0xc) = 0;
      *(undefined2 *)(iVar18 + 0x3c) = 7;
      param_1[0xc] = param_1[0xc] | 0x4000;
      *piVar16 = 0x4e;
      return 0;
    }
    *(int *)(iVar12 + 0x30) = iVar6 + 1;
    *(int *)(iVar12 + 4) = *param_1;
    *(uint *)(iVar12 + 0x28) = uVar20 + uVar11;
    uVar13 = *puVar10;
    *(undefined4 *)(iVar12 + 0x5c) = puVar10[1];
    *(undefined4 *)(iVar12 + 0x58) = uVar13;
    if ((param_1[0xc] & 4U) == 0) {
      *(int *)(iVar12 + 0x18) = iVar12 + 0xe8;
      iVar14 = param_1[0xb];
    }
    else {
      *(undefined4 *)(iVar12 + 0x18) = *(undefined4 *)(iVar12 + 0x1c);
      (**(code **)(puVar22 + 0x172cc))(puStack_90,iVar12 + 0xe8,*(int *)(iVar12 + 0x34) + 1);
      iVar14 = param_1[0xb];
    }
    if ((iVar14 == 0) || ((param_1[0xc] & 0x400U) != 0)) {
      if (((param_1[0xc] & 0x18U) == 0x18) && ((*(byte *)((int)puVar10 + 0x12) & 0xfb) != 0)) {
        *(undefined2 *)(iVar12 + 0x3c) = 0xb;
        bVar3 = true;
        if (*(byte *)((int)puVar10 + 0x12) < 0xd) {
                    /* WARNING: Could not recover jumptable at 0x0001c904. Too many branches */
                    /* WARNING: Treating indirect jump as call */
          iVar5 = (*(code *)(puVar22 +
                            *(int *)(iVar9 + 0x2d30 + (uint)*(byte *)((int)puVar10 + 0x12) * 4) +
                            0x1ef9c))();
          return iVar5;
        }
      }
      else {
        *(undefined2 *)(iVar12 + 0x3c) = 0xb;
        bVar3 = false;
        if (*(byte *)((int)puVar10 + 0x12) < 0xd) {
                    /* WARNING: Could not recover jumptable at 0x0001cab8. Too many branches */
                    /* WARNING: Treating indirect jump as call */
          iVar5 = (*(code *)(puVar22 +
                            *(int *)(*(int *)(puVar22 + 0x16fd4) + 0x2d64 +
                                    (uint)*(byte *)((int)puVar10 + 0x12) * 4) + 0x1ef9c))();
          return iVar5;
        }
      }
      *(undefined4 *)(iVar12 + 0x60) = 0;
      if (bVar3) {
        uVar13 = 1;
      }
      else {
        uVar13 = 2;
      }
      *(undefined4 *)(iVar12 + 0x84) = uVar13;
      *(undefined4 *)(iVar12 + 0x80) = 0;
    }
    else {
      uVar15 = FUN_0001b18c(param_1,iVar12,0);
      *(undefined2 *)(iVar12 + 0x3c) = uVar15;
    }
    *(undefined4 *)(iVar12 + 8) = 0;
    iVar14 = iVar12;
    if (iStack_a0 != 0) {
      *(int *)(iStack_a4 + 8) = iVar12;
      iVar14 = iStack_a0;
    }
    iStack_a0 = iVar14;
    iStack_a4 = iVar12;
    if (uVar19 == 10000) {
      if (param_1[0xb] != 0) {
LAB_0001cb74:
        uVar19 = 0x2711;
        goto LAB_0001c96c;
      }
      iVar12 = (*(code *)(iVar8 + -0x47a8))(iVar18,iStack_7c);
      if (iVar12 == 0x6969) {
        bVar4 = false;
      }
      else if (iVar12 == 0x1021994) {
        bVar4 = false;
      }
      else {
        if (iVar12 != -0xacb2be) {
          bVar4 = true;
          goto LAB_0001cb74;
        }
        bVar4 = false;
      }
    }
    uVar19 = uVar19 + 1;
  } while (uVar19 < uStack_94);
LAB_0001c66c:
  if (iStack_8c != 0) {
    iVar6 = param_1[6];
    for (iVar17 = param_1[1]; iVar7 = iStack_a0, iVar17 != 0; iVar17 = *(int *)(iVar17 + 8)) {
      if (*(int *)(iVar17 + 0x18) != iVar17 + 0xe8) {
        *(int *)(iVar17 + 0x18) = iVar6 + (*(int *)(iVar17 + 0x18) - *(int *)(iVar17 + 0x1c));
      }
      *(int *)(iVar17 + 0x1c) = iVar6;
    }
    while (iVar17 = iVar7, -1 < *(int *)(iVar17 + 0x30)) {
      if (*(int *)(iVar17 + 0x18) != iVar17 + 0xe8) {
        *(int *)(iVar17 + 0x18) = iVar6 + (*(int *)(iVar17 + 0x18) - *(int *)(iVar17 + 0x1c));
      }
      *(int *)(iVar17 + 0x1c) = iVar6;
      iVar7 = *(int *)(iVar17 + 8);
      if (*(int *)(iVar17 + 8) == 0) {
        iVar7 = *(int *)(iVar17 + 4);
      }
    }
  }
  if ((param_1[0xc] & 4U) != 0) {
    if ((param_1[9] == uVar20) || (uVar19 == 0)) {
      puStack_90 = puStack_90 + -1;
    }
    *puStack_90 = 0;
  }
  if ((iVar5 == 0) && (bVar2)) {
    if ((param_2 != (undefined4 *)0x1) && (uVar19 != 0)) goto LAB_0001c6c0;
    if (*(int *)(iVar18 + 0x30) == 0) {
      iVar5 = FUN_0001bcbc(param_1);
    }
    else {
      iVar5 = FUN_0001bd68(param_1,*(undefined4 *)(iVar18 + 4),0xffffffff,
                           *(int *)(puVar22 + 0x16fd4) + 0x2d20);
    }
    if (iVar5 != 0) {
      *(undefined2 *)(iVar18 + 0x3c) = 7;
      param_1[0xc] = param_1[0xc] | 0x4000;
      FUN_0001b6fc(iStack_a0);
      return 0;
    }
  }
  if (uVar19 == 0) {
    if (((param_2 == (undefined4 *)0x3) && (*(short *)(iVar18 + 0x3c) != 4)) &&
       (*(short *)(iVar18 + 0x3c) != 7)) {
      *(undefined2 *)(iVar18 + 0x3c) = 6;
    }
    FUN_0001b6fc(iStack_a0);
    return 0;
  }
LAB_0001c6c0:
  if (bVar4) {
    param_1[0xb] = *(int *)(puVar22 + 0x16fd4) + -0x4fa0;
    iVar5 = FUN_0001b3ac(param_1,iStack_a0,uVar19);
    param_1[0xb] = 0;
    return iVar5;
  }
  if (param_1[0xb] == 0) {
    return iStack_a0;
  }
  if (uVar19 < 2) {
    return iStack_a0;
  }
  iVar5 = FUN_0001b3ac(param_1,iStack_a0,uVar19);
  return iVar5;
}


lui gp,0x2
addiu gp,gp,-0xf1c
addu gp,gp,t9
addiu sp,sp,-0x40
sw ra,0x3c(sp)
sw gp,0x10(sp)
lw v0,-0x7cdc(gp)
lw v0,0x0(v0)
sw v0,0x34(sp)
lw v0,0x30(a0)
andi v0,v0,0x102
bne v0,zero,0x0001c0b0
_lw t9,-0x7e6c(gp)
lw v0,0x4(a1)
beq v0,zero,0x0001c0f8
_nop
lw v1,0x30(v0)
bltz v1,0x0001c0f8
_nop
lw v1,0x38(a0)
lw a2,0x10(v1)
lw a3,0x14(v1)
or a2,a2,a3
beq a2,zero,0x0001c120
_lw t9,-0x7de8(gp)
lw a3,0x0(v1)
lw a2,0x58(a1)
bne a3,a2,0x0001c0f8
_nop
lw a3,0x4(v1)
lw a2,0x5c(a1)
bne a3,a2,0x0001c0f8
_nop
lw a2,0x48(a1)
lw a1,0x8(v1)
bne a1,zero,0x0001c0f8
_nop
lw a1,0xc(v1)
bne a1,a2,0x0001c0f8
_nop
lw a1,0x48(v0)
sw a1,0xc(v1)
sw zero,0x8(v1)
lw v1,0x38(a0)
lw a1,0x5c(v0)
lw a0,0x58(v0)
sw a1,0x4(v1)
b 0x0001c0f8
_sw a0,0x0(v1)
lw v0,0x48(a1)
sw v0,0x1c(sp)
sw zero,0x18(sp)
lw v1,0x5c(a1)
lw v0,0x58(a1)
sw v1,0x24(sp)
sw v0,0x20(sp)
addiu a1,sp,0x18
lw a0,0x38(a0)
bal 0x0001660c
_nop
lw gp,0x10(sp)
beq v0,zero,0x0001c114
_or a0,v0,zero
lw t9,-0x7cd4(gp)
jalr t9
_nop
lw gp,0x10(sp)
lw v1,0x34(sp)
lw v0,-0x7cdc(gp)
lw v0,0x0(v0)
bne v1,v0,0x0001c128
_lw ra,0x3c(sp)
jr ra
_addiu sp,sp,0x40
lw t9,-0x7de8(gp)
jalr t9
_nop
jalr t9
_nop
lw t9,-0x7cf4(gp)
jalr t9
_nop
(translation_unit "int FUN_0001bfec(int *param_1,undefined4 *param_2)\n\n{\n  int *piVar1;\n  bool bVar2;\n  bool bVar3;\n  bool bVar4;\n  int iVar5;\n  int iVar6;\n  int iVar7;\n  int iVar8;\n  int iVar9;\n  undefined4 *puVar10;\n  uint uVar11;\n  int iVar12;\n  undefined4 uVar13;\n  int iVar14;\n  undefined2 uVar15;\n  int *piVar16;\n  int iVar17;\n  int iVar18;\n  uint uVar19;\n  uint uVar20;\n  code *pcVar21;\n  undefined *puVar22;\n  uint uVar23;\n  int iVar24;\n  int iStack_a4;\n  int iStack_a0;\n  uint uStack_94;\n  undefined1 *puStack_90;\n  int iStack_8c;\n  int iStack_7c;\n  undefined4 local_28;\n  undefined4 local_24;\n  undefined4 local_20;\n  undefined4 local_1c;\n  int local_c;\n  \n  local_c = *(int *)PTR___stack_chk_guard_000333f4;\n  if ((param_1[0xc] & 0x102U) == 0) {\n    iVar5 = param_2[1];\n    if ((iVar5 != 0) && (-1 < *(int *)(iVar5 + 0x30))) {\n      piVar16 = (int *)param_1[0xe];\n      pcVar21 = (code *)PTR_abort_000332e8;\n      if (piVar16[4] == 0 && piVar16[5] == 0) goto LAB_0001c120;\n      if ((*piVar16 == param_2[0x16]) && (piVar16[1] == param_2[0x17])) {\n        piVar1 = param_2 + 0x12;\n        param_2 = (undefined4 *)piVar16[2];\n        if ((param_2 == (undefined4 *)0x0) &&\n           (param_2 = (undefined4 *)piVar16[3], param_2 == (undefined4 *)*piVar1)) {\n          piVar16[3] = *(int *)(iVar5 + 0x48);\n          piVar16[2] = 0;\n          piVar16 = (int *)param_1[0xe];\n          param_2 = *(undefined4 **)(iVar5 + 0x5c);\n          param_1 = *(int **)(iVar5 + 0x58);\n          piVar16[1] = (int)param_2;\n          *piVar16 = (int)param_1;\n        }\n      }\n    }\nLAB_0001c0f8:\n    if (local_c == *(int *)PTR___stack_chk_guard_000333f4) {\n      return *(int *)PTR___stack_chk_guard_000333f4;\n    }\n  }\n  else {\n    local_24 = param_2[0x12];\n    local_28 = 0;\n    local_1c = param_2[0x17];\n    local_20 = param_2[0x16];\n    param_2 = &local_28;\n    param_1 = (int *)hash_delete(param_1[0xe]);\n    if (param_1 != (int *)0x0) {\n      (*(code *)PTR_free_000333fc)();\n      goto LAB_0001c0f8;\n    }\n    pcVar21 = (code *)PTR_abort_000332e8;\n    (*(code *)PTR_abort_000332e8)();\nLAB_0001c120:\n    (*pcVar21)();\n  }\n  puVar22 = PTR___stack_chk_fail_000333dc;\n  (*(code *)PTR___stack_chk_fail_000333dc)();\n  iVar18 = *param_1;\n  iVar5 = *(int *)(iVar18 + 0xc);\n  if (iVar5 != 0) {\n    iStack_7c = (**(code **)(puVar22 + 0x172d0))();\n    if (iStack_7c < 0) {\n      (**(code **)(puVar22 + 0x17194))(*(undefined4 *)(iVar18 + 0xc));\n      *(undefined4 *)(iVar18 + 0xc) = 0;\n      if (param_2 != (undefined4 *)0x3) {\n        return 0;\n      }\n      *(undefined2 *)(iVar18 + 0x3c) = 4;\n      puVar10 = (undefined4 *)(**(code **)(puVar22 + 0x17220))();\n      *(undefined4 *)(iVar18 + 0x20) = *puVar10;\n      return 0;\n    }\n    if (param_1[0xb] == 0) {\n      uStack_94 = 100000;\n      bVar2 = true;\n    }\n    else {\n      uStack_94 = 0xffffffff;\n      bVar2 = true;\n    }\n    goto LAB_0001c1b8;\n  }\n  uVar19 = param_1[0xc];\n  if ((uVar19 & 0x204) == 0x200) {\n    iVar17 = param_1[8];\n  }\n  else {\n    iVar17 = -100;\n  }\n  uVar20 = uVar19 & 0x10;\n  if (((uVar20 != 0) && (uVar20 = 0x20000, (uVar19 & 1) != 0)) &&\n     (uVar20 = *(uint *)(iVar18 + 0x30), uVar20 != 0)) {\n    uVar20 = 0x20000;\n  }\n  iStack_7c = openat_safer(iVar17,*(undefined4 *)(iVar18 + 0x18),\n                           (uVar19 & 0x800) << 7 | uVar20 | 0x90880);\n  if (iStack_7c < 0) {\nLAB_0001c3e8:\n    *(undefined4 *)(iVar18 + 0xc) = 0;\n    if (param_2 == (undefined4 *)0x3) {\n      *(undefined2 *)(iVar18 + 0x3c) = 4;\n      puVar10 = (undefined4 *)(**(code **)(puVar22 + 0x17220))();\n      *(undefined4 *)(iVar18 + 0x20) = *puVar10;\n    }\n    return 0;\n  }\n  iVar17 = (**(code **)(puVar22 + 0x171f0))(iStack_7c);\n  if (iVar17 == 0) {\n    puVar10 = (undefined4 *)(**(code **)(puVar22 + 0x17220))();\n    uVar13 = *puVar10;\n    (**(code **)(puVar22 + 0x17198))(iStack_7c);\n    *puVar10 = uVar13;\n    goto LAB_0001c3e8;\n  }\n  *(int *)(iVar18 + 0xc) = iVar17;\n  if (*(short *)(iVar18 + 0x3c) == 0xb) {\n    uVar15 = FUN_0001b18c(param_1,iVar18,0);\n    *(undefined2 *)(iVar18 + 0x3c) = uVar15;\n  }\n  else if ((param_1[0xc] & 0x100U) != 0) {\n    FUN_0001bfec(param_1,iVar18);\n    FUN_0001b18c(param_1,iVar18,0);\n    iVar17 = FUN_0001bad0(param_1,iVar18);\n    if (iVar17 == 0) {\n      puVar10 = (undefined4 *)(**(code **)(puVar22 + 0x17220))();\n      *puVar10 = 0xc;\n      return 0;\n    }\n  }\n  if (param_1[0xb] == 0) {\n    uStack_94 = 100000;\n  }\n  else {\n    uStack_94 = 0xffffffff;\n  }\n  if (param_2 == (undefined4 *)0x2) {\n    bVar2 = false;\n  }\n  else {\n    if ((((param_1[0xc] & 0x38U) == 0x18) && (*(int *)(iVar18 + 100) == 2)) &&\n       (iVar17 = FUN_0001ba08(iVar18,iStack_7c), iVar17 != 0)) {\n      bVar2 = false;\n      if (param_2 != (undefined4 *)0x3) {\n        bVar2 = false;\n        goto LAB_0001c1b8;\n      }\n      uVar19 = param_1[0xc];\n    }\n    else {\n      bVar2 = true;\n      uVar19 = param_1[0xc];\n    }\n    if ((uVar19 & 0x200) != 0) {\n      iStack_7c = rpl_fcntl(iStack_7c,0x406,3);\n    }\n    if ((iStack_7c < 0) || (iVar17 = FUN_0001bd68(param_1,iVar18,iStack_7c,0), iVar17 != 0)) {\n      if ((bVar2) && (param_2 == (undefined4 *)0x3)) {\n        puVar10 = (undefined4 *)(**(code **)(puVar22 + 0x17220))();\n        *(undefined4 *)(iVar18 + 0x20) = *puVar10;\n      }\n      *(ushort *)(iVar18 + 0x3e) = *(ushort *)(iVar18 + 0x3e) | 1;\n      (**(code **)(puVar22 + 0x17194))(*(undefined4 *)(iVar18 + 0xc));\n      *(undefined4 *)(iVar18 + 0xc) = 0;\n      if (((param_1[0xc] & 0x200U) != 0) && (-1 < iStack_7c)) {\n        (**(code **)(puVar22 + 0x17198))(iStack_7c);\n        *(undefined4 *)(iVar18 + 0xc) = 0;\n      }\n      bVar2 = false;\n    }\n    else {\n      bVar2 = true;\n    }\n  }\nLAB_0001c1b8:\n  iVar17 = *(int *)(iVar18 + 0x28) + -1;\n  if (*(char *)(*(int *)(iVar18 + 0x1c) + iVar17) != '/') {\n    iVar17 = *(int *)(iVar18 + 0x28);\n  }\n  if ((param_1[0xc] & 4U) == 0) {\n    puStack_90 = (undefined1 *)0x0;\n  }\n  else {\n    puStack_90 = (undefined1 *)(param_1[6] + iVar17) + 1;\n    *(undefined1 *)(param_1[6] + iVar17) = 0x2f;\n  }\n  uVar20 = iVar17 + 1;\n  uVar23 = param_1[9] - uVar20;\n  iVar6 = *(int *)(iVar18 + 0x30);\n  bVar4 = false;\n  iStack_8c = 0;\n  iStack_a4 = 0;\n  uVar19 = 0;\n  iStack_a0 = 0;\n  iVar7 = *(int *)(puVar22 + 0x16fd4);\n  iVar8 = *(int *)(puVar22 + 0x16fd4);\n  iVar9 = *(int *)(puVar22 + 0x16fd4);\nLAB_0001c96c:\n  do {\n    do {\n      if (*(int *)(iVar18 + 0xc) == 0) goto LAB_0001c66c;\n      piVar16 = (int *)(**(code **)(puVar22 + 0x17220))();\n      *piVar16 = 0;\n      puVar10 = (undefined4 *)(**(code **)(puVar22 + 0x171d8))(*(undefined4 *)(iVar18 + 0xc));\n      if (puVar10 == (undefined4 *)0x0) {\n        if (*piVar16 != 0) {\n          *(int *)(iVar18 + 0x20) = *piVar16;\n          uVar15 = 7;\n          if ((iVar5 == 0) && (uVar19 == 0)) {\n            uVar15 = 4;\n          }\n          *(undefined2 *)(iVar18 + 0x3c) = uVar15;\n        }\n        if (*(int *)(iVar18 + 0xc) != 0) {\n          (**(code **)(puVar22 + 0x17194))();\n          *(undefined4 *)(iVar18 + 0xc) = 0;\n        }\n        goto LAB_0001c66c;\n      }\n    } while ((((param_1[0xc] & 0x20U) == 0) && (*(char *)((int)puVar10 + 0x13) == '.')) &&\n            ((*(char *)(puVar10 + 5) == '\0' || ((puVar10[5] & 0xffff0000) == 0x2e000000))));\n    uVar11 = (**(code **)(puVar22 + 0x17240))((int)puVar10 + 0x13);\n    iVar12 = (*(code *)(iVar7 + -0x4b14))(param_1,(int)puVar10 + 0x13,uVar11);\n    if (iVar12 == 0) {\nLAB_0001c794:\n      iVar5 = *piVar16;\n      (**(code **)(puVar22 + 0x172c8))(iVar12);\n      FUN_0001b6fc(iStack_a0);\n      (**(code **)(puVar22 + 0x17194))(*(undefined4 *)(iVar18 + 0xc));\n      *(undefined4 *)(iVar18 + 0xc) = 0;\n      *(undefined2 *)(iVar18 + 0x3c) = 7;\n      param_1[0xc] = param_1[0xc] | 0x4000;\n      *piVar16 = iVar5;\n      return 0;\n    }\n    if (uVar23 <= uVar11) {\n      iVar24 = param_1[6];\n      iVar14 = FUN_0001b0cc(param_1,iVar17 + 2 + uVar11);\n      if (iVar14 == 0) goto LAB_0001c794;\n      if ((param_1[6] != iVar24) && (iStack_8c = iVar14, (param_1[0xc] & 4U) != 0)) {\n        puStack_90 = (undefined1 *)(param_1[6] + uVar20);\n      }\n      uVar23 = param_1[9] - uVar20;\n    }\n    if (uVar20 + uVar11 < uVar20) {\n      (**(code **)(puVar22 + 0x172c8))(iVar12);\n      FUN_0001b6fc(iStack_a0);\n      (**(code **)(puVar22 + 0x17194))(*(undefined4 *)(iVar18 + 0xc));\n      *(undefined4 *)(iVar18 + 0xc) = 0;\n      *(undefined2 *)(iVar18 + 0x3c) = 7;\n      param_1[0xc] = param_1[0xc] | 0x4000;\n      *piVar16 = 0x4e;\n      return 0;\n    }\n    *(int *)(iVar12 + 0x30) = iVar6 + 1;\n    *(int *)(iVar12 + 4) = *param_1;\n    *(uint *)(iVar12 + 0x28) = uVar20 + uVar11;\n    uVar13 = *puVar10;\n    *(undefined4 *)(iVar12 + 0x5c) = puVar10[1];\n    *(undefined4 *)(iVar12 + 0x58) = uVar13;\n    if ((param_1[0xc] & 4U) == 0) {\n      *(int *)(iVar12 + 0x18) = iVar12 + 0xe8;\n      iVar14 = param_1[0xb];\n    }\n    else {\n      *(undefined4 *)(iVar12 + 0x18) = *(undefined4 *)(iVar12 + 0x1c);\n      (**(code **)(puVar22 + 0x172cc))(puStack_90,iVar12 + 0xe8,*(int *)(iVar12 + 0x34) + 1);\n      iVar14 = param_1[0xb];\n    }\n    if ((iVar14 == 0) || ((param_1[0xc] & 0x400U) != 0)) {\n      if (((param_1[0xc] & 0x18U) == 0x18) && ((*(byte *)((int)puVar10 + 0x12) & 0xfb) != 0)) {\n        *(undefined2 *)(iVar12 + 0x3c) = 0xb;\n        bVar3 = true;\n        if (*(byte *)((int)puVar10 + 0x12) < 0xd) {\n                    /* WARNING: Could not recover jumptable at 0x0001c904. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n          iVar5 = (*(code *)(puVar22 +\n                            *(int *)(iVar9 + 0x2d30 + (uint)*(byte *)((int)puVar10 + 0x12) * 4) +\n                            0x1ef9c))();\n          return iVar5;\n        }\n      }\n      else {\n        *(undefined2 *)(iVar12 + 0x3c) = 0xb;\n        bVar3 = false;\n        if (*(byte *)((int)puVar10 + 0x12) < 0xd) {\n                    /* WARNING: Could not recover jumptable at 0x0001cab8. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n          iVar5 = (*(code *)(puVar22 +\n                            *(int *)(*(int *)(puVar22 + 0x16fd4) + 0x2d64 +\n                                    (uint)*(byte *)((int)puVar10 + 0x12) * 4) + 0x1ef9c))();\n          return iVar5;\n        }\n      }\n      *(undefined4 *)(iVar12 + 0x60) = 0;\n      if (bVar3) {\n        uVar13 = 1;\n      }\n      else {\n        uVar13 = 2;\n      }\n      *(undefined4 *)(iVar12 + 0x84) = uVar13;\n      *(undefined4 *)(iVar12 + 0x80) = 0;\n    }\n    else {\n      uVar15 = FUN_0001b18c(param_1,iVar12,0);\n      *(undefined2 *)(iVar12 + 0x3c) = uVar15;\n    }\n    *(undefined4 *)(iVar12 + 8) = 0;\n    iVar14 = iVar12;\n    if (iStack_a0 != 0) {\n      *(int *)(iStack_a4 + 8) = iVar12;\n      iVar14 = iStack_a0;\n    }\n    iStack_a0 = iVar14;\n    iStack_a4 = iVar12;\n    if (uVar19 == 10000) {\n      if (param_1[0xb] != 0) {\nLAB_0001cb74:\n        uVar19 = 0x2711;\n        goto LAB_0001c96c;\n      }\n      iVar12 = (*(code *)(iVar8 + -0x47a8))(iVar18,iStack_7c);\n      if (iVar12 == 0x6969) {\n        bVar4 = false;\n      }\n      else if (iVar12 == 0x1021994) {\n        bVar4 = false;\n      }\n      else {\n        if (iVar12 != -0xacb2be) {\n          bVar4 = true;\n          goto LAB_0001cb74;\n        }\n        bVar4 = false;\n      }\n    }\n    uVar19 = uVar19 + 1;\n  } while (uVar19 < uStack_94);\nLAB_0001c66c:\n  if (iStack_8c != 0) {\n    iVar6 = param_1[6];\n    for (iVar17 = param_1[1]; iVar7 = iStack_a0, iVar17 != 0; iVar17 = *(int *)(iVar17 + 8)) {\n      if (*(int *)(iVar17 + 0x18) != iVar17 + 0xe8) {\n        *(int *)(iVar17 + 0x18) = iVar6 + (*(int *)(iVar17 + 0x18) - *(int *)(iVar17 + 0x1c));\n      }\n      *(int *)(iVar17 + 0x1c) = iVar6;\n    }\n    while (iVar17 = iVar7, -1 < *(int *)(iVar17 + 0x30)) {\n      if (*(int *)(iVar17 + 0x18) != iVar17 + 0xe8) {\n        *(int *)(iVar17 + 0x18) = iVar6 + (*(int *)(iVar17 + 0x18) - *(int *)(iVar17 + 0x1c));\n      }\n      *(int *)(iVar17 + 0x1c) = iVar6;\n      iVar7 = *(int *)(iVar17 + 8);\n      if (*(int *)(iVar17 + 8) == 0) {\n        iVar7 = *(int *)(iVar17 + 4);\n      }\n    }\n  }\n  if ((param_1[0xc] & 4U) != 0) {\n    if ((param_1[9] == uVar20) || (uVar19 == 0)) {\n      puStack_90 = puStack_90 + -1;\n    }\n    *puStack_90 = 0;\n  }\n  if ((iVar5 == 0) && (bVar2)) {\n    if ((param_2 != (undefined4 *)0x1) && (uVar19 != 0)) goto LAB_0001c6c0;\n    if (*(int *)(iVar18 + 0x30) == 0) {\n      iVar5 = FUN_0001bcbc(param_1);\n    }\n    else {\n      iVar5 = FUN_0001bd68(param_1,*(undefined4 *)(iVar18 + 4),0xffffffff,\n                           *(int *)(puVar22 + 0x16fd4) + 0x2d20);\n    }\n    if (iVar5 != 0) {\n      *(undefined2 *)(iVar18 + 0x3c) = 7;\n      param_1[0xc] = param_1[0xc] | 0x4000;\n      FUN_0001b6fc(iStack_a0);\n      return 0;\n    }\n  }\n  if (uVar19 == 0) {\n    if (((param_2 == (undefined4 *)0x3) && (*(short *)(iVar18 + 0x3c) != 4)) &&\n       (*(short *)(iVar18 + 0x3c) != 7)) {\n      *(undefined2 *)(iVar18 + 0x3c) = 6;\n    }\n    FUN_0001b6fc(iStack_a0);\n    return 0;\n  }\nLAB_0001c6c0:\n  if (bVar4) {\n    param_1[0xb] = *(int *)(puVar22 + 0x16fd4) + -0x4fa0;\n    iVar5 = FUN_0001b3ac(param_1,iStack_a0,uVar19);\n    param_1[0xb] = 0;\n    return iVar5;\n  }\n  if (param_1[0xb] == 0) {\n    return iStack_a0;\n  }\n  if (uVar19 < 2) {\n    return iStack_a0;\n  }\n  iVar5 = FUN_0001b3ac(param_1,iStack_a0,uVar19);\n  return iVar5;\n}\n\n" (function_definition "int FUN_0001bfec(int *param_1,undefined4 *param_2)\n\n{\n  int *piVar1;\n  bool bVar2;\n  bool bVar3;\n  bool bVar4;\n  int iVar5;\n  int iVar6;\n  int iVar7;\n  int iVar8;\n  int iVar9;\n  undefined4 *puVar10;\n  uint uVar11;\n  int iVar12;\n  undefined4 uVar13;\n  int iVar14;\n  undefined2 uVar15;\n  int *piVar16;\n  int iVar17;\n  int iVar18;\n  uint uVar19;\n  uint uVar20;\n  code *pcVar21;\n  undefined *puVar22;\n  uint uVar23;\n  int iVar24;\n  int iStack_a4;\n  int iStack_a0;\n  uint uStack_94;\n  undefined1 *puStack_90;\n  int iStack_8c;\n  int iStack_7c;\n  undefined4 local_28;\n  undefined4 local_24;\n  undefined4 local_20;\n  undefined4 local_1c;\n  int local_c;\n  \n  local_c = *(int *)PTR___stack_chk_guard_000333f4;\n  if ((param_1[0xc] & 0x102U) == 0) {\n    iVar5 = param_2[1];\n    if ((iVar5 != 0) && (-1 < *(int *)(iVar5 + 0x30))) {\n      piVar16 = (int *)param_1[0xe];\n      pcVar21 = (code *)PTR_abort_000332e8;\n      if (piVar16[4] == 0 && piVar16[5] == 0) goto LAB_0001c120;\n      if ((*piVar16 == param_2[0x16]) && (piVar16[1] == param_2[0x17])) {\n        piVar1 = param_2 + 0x12;\n        param_2 = (undefined4 *)piVar16[2];\n        if ((param_2 == (undefined4 *)0x0) &&\n           (param_2 = (undefined4 *)piVar16[3], param_2 == (undefined4 *)*piVar1)) {\n          piVar16[3] = *(int *)(iVar5 + 0x48);\n          piVar16[2] = 0;\n          piVar16 = (int *)param_1[0xe];\n          param_2 = *(undefined4 **)(iVar5 + 0x5c);\n          param_1 = *(int **)(iVar5 + 0x58);\n          piVar16[1] = (int)param_2;\n          *piVar16 = (int)param_1;\n        }\n      }\n    }\nLAB_0001c0f8:\n    if (local_c == *(int *)PTR___stack_chk_guard_000333f4) {\n      return *(int *)PTR___stack_chk_guard_000333f4;\n    }\n  }\n  else {\n    local_24 = param_2[0x12];\n    local_28 = 0;\n    local_1c = param_2[0x17];\n    local_20 = param_2[0x16];\n    param_2 = &local_28;\n    param_1 = (int *)hash_delete(param_1[0xe]);\n    if (param_1 != (int *)0x0) {\n      (*(code *)PTR_free_000333fc)();\n      goto LAB_0001c0f8;\n    }\n    pcVar21 = (code *)PTR_abort_000332e8;\n    (*(code *)PTR_abort_000332e8)();\nLAB_0001c120:\n    (*pcVar21)();\n  }\n  puVar22 = PTR___stack_chk_fail_000333dc;\n  (*(code *)PTR___stack_chk_fail_000333dc)();\n  iVar18 = *param_1;\n  iVar5 = *(int *)(iVar18 + 0xc);\n  if (iVar5 != 0) {\n    iStack_7c = (**(code **)(puVar22 + 0x172d0))();\n    if (iStack_7c < 0) {\n      (**(code **)(puVar22 + 0x17194))(*(undefined4 *)(iVar18 + 0xc));\n      *(undefined4 *)(iVar18 + 0xc) = 0;\n      if (param_2 != (undefined4 *)0x3) {\n        return 0;\n      }\n      *(undefined2 *)(iVar18 + 0x3c) = 4;\n      puVar10 = (undefined4 *)(**(code **)(puVar22 + 0x17220))();\n      *(undefined4 *)(iVar18 + 0x20) = *puVar10;\n      return 0;\n    }\n    if (param_1[0xb] == 0) {\n      uStack_94 = 100000;\n      bVar2 = true;\n    }\n    else {\n      uStack_94 = 0xffffffff;\n      bVar2 = true;\n    }\n    goto LAB_0001c1b8;\n  }\n  uVar19 = param_1[0xc];\n  if ((uVar19 & 0x204) == 0x200) {\n    iVar17 = param_1[8];\n  }\n  else {\n    iVar17 = -100;\n  }\n  uVar20 = uVar19 & 0x10;\n  if (((uVar20 != 0) && (uVar20 = 0x20000, (uVar19 & 1) != 0)) &&\n     (uVar20 = *(uint *)(iVar18 + 0x30), uVar20 != 0)) {\n    uVar20 = 0x20000;\n  }\n  iStack_7c = openat_safer(iVar17,*(undefined4 *)(iVar18 + 0x18),\n                           (uVar19 & 0x800) << 7 | uVar20 | 0x90880);\n  if (iStack_7c < 0) {\nLAB_0001c3e8:\n    *(undefined4 *)(iVar18 + 0xc) = 0;\n    if (param_2 == (undefined4 *)0x3) {\n      *(undefined2 *)(iVar18 + 0x3c) = 4;\n      puVar10 = (undefined4 *)(**(code **)(puVar22 + 0x17220))();\n      *(undefined4 *)(iVar18 + 0x20) = *puVar10;\n    }\n    return 0;\n  }\n  iVar17 = (**(code **)(puVar22 + 0x171f0))(iStack_7c);\n  if (iVar17 == 0) {\n    puVar10 = (undefined4 *)(**(code **)(puVar22 + 0x17220))();\n    uVar13 = *puVar10;\n    (**(code **)(puVar22 + 0x17198))(iStack_7c);\n    *puVar10 = uVar13;\n    goto LAB_0001c3e8;\n  }\n  *(int *)(iVar18 + 0xc) = iVar17;\n  if (*(short *)(iVar18 + 0x3c) == 0xb) {\n    uVar15 = FUN_0001b18c(param_1,iVar18,0);\n    *(undefined2 *)(iVar18 + 0x3c) = uVar15;\n  }\n  else if ((param_1[0xc] & 0x100U) != 0) {\n    FUN_0001bfec(param_1,iVar18);\n    FUN_0001b18c(param_1,iVar18,0);\n    iVar17 = FUN_0001bad0(param_1,iVar18);\n    if (iVar17 == 0) {\n      puVar10 = (undefined4 *)(**(code **)(puVar22 + 0x17220))();\n      *puVar10 = 0xc;\n      return 0;\n    }\n  }\n  if (param_1[0xb] == 0) {\n    uStack_94 = 100000;\n  }\n  else {\n    uStack_94 = 0xffffffff;\n  }\n  if (param_2 == (undefined4 *)0x2) {\n    bVar2 = false;\n  }\n  else {\n    if ((((param_1[0xc] & 0x38U) == 0x18) && (*(int *)(iVar18 + 100) == 2)) &&\n       (iVar17 = FUN_0001ba08(iVar18,iStack_7c), iVar17 != 0)) {\n      bVar2 = false;\n      if (param_2 != (undefined4 *)0x3) {\n        bVar2 = false;\n        goto LAB_0001c1b8;\n      }\n      uVar19 = param_1[0xc];\n    }\n    else {\n      bVar2 = true;\n      uVar19 = param_1[0xc];\n    }\n    if ((uVar19 & 0x200) != 0) {\n      iStack_7c = rpl_fcntl(iStack_7c,0x406,3);\n    }\n    if ((iStack_7c < 0) || (iVar17 = FUN_0001bd68(param_1,iVar18,iStack_7c,0), iVar17 != 0)) {\n      if ((bVar2) && (param_2 == (undefined4 *)0x3)) {\n        puVar10 = (undefined4 *)(**(code **)(puVar22 + 0x17220))();\n        *(undefined4 *)(iVar18 + 0x20) = *puVar10;\n      }\n      *(ushort *)(iVar18 + 0x3e) = *(ushort *)(iVar18 + 0x3e) | 1;\n      (**(code **)(puVar22 + 0x17194))(*(undefined4 *)(iVar18 + 0xc));\n      *(undefined4 *)(iVar18 + 0xc) = 0;\n      if (((param_1[0xc] & 0x200U) != 0) && (-1 < iStack_7c)) {\n        (**(code **)(puVar22 + 0x17198))(iStack_7c);\n        *(undefined4 *)(iVar18 + 0xc) = 0;\n      }\n      bVar2 = false;\n    }\n    else {\n      bVar2 = true;\n    }\n  }\nLAB_0001c1b8:\n  iVar17 = *(int *)(iVar18 + 0x28) + -1;\n  if (*(char *)(*(int *)(iVar18 + 0x1c) + iVar17) != '/') {\n    iVar17 = *(int *)(iVar18 + 0x28);\n  }\n  if ((param_1[0xc] & 4U) == 0) {\n    puStack_90 = (undefined1 *)0x0;\n  }\n  else {\n    puStack_90 = (undefined1 *)(param_1[6] + iVar17) + 1;\n    *(undefined1 *)(param_1[6] + iVar17) = 0x2f;\n  }\n  uVar20 = iVar17 + 1;\n  uVar23 = param_1[9] - uVar20;\n  iVar6 = *(int *)(iVar18 + 0x30);\n  bVar4 = false;\n  iStack_8c = 0;\n  iStack_a4 = 0;\n  uVar19 = 0;\n  iStack_a0 = 0;\n  iVar7 = *(int *)(puVar22 + 0x16fd4);\n  iVar8 = *(int *)(puVar22 + 0x16fd4);\n  iVar9 = *(int *)(puVar22 + 0x16fd4);\nLAB_0001c96c:\n  do {\n    do {\n      if (*(int *)(iVar18 + 0xc) == 0) goto LAB_0001c66c;\n      piVar16 = (int *)(**(code **)(puVar22 + 0x17220))();\n      *piVar16 = 0;\n      puVar10 = (undefined4 *)(**(code **)(puVar22 + 0x171d8))(*(undefined4 *)(iVar18 + 0xc));\n      if (puVar10 == (undefined4 *)0x0) {\n        if (*piVar16 != 0) {\n          *(int *)(iVar18 + 0x20) = *piVar16;\n          uVar15 = 7;\n          if ((iVar5 == 0) && (uVar19 == 0)) {\n            uVar15 = 4;\n          }\n          *(undefined2 *)(iVar18 + 0x3c) = uVar15;\n        }\n        if (*(int *)(iVar18 + 0xc) != 0) {\n          (**(code **)(puVar22 + 0x17194))();\n          *(undefined4 *)(iVar18 + 0xc) = 0;\n        }\n        goto LAB_0001c66c;\n      }\n    } while ((((param_1[0xc] & 0x20U) == 0) && (*(char *)((int)puVar10 + 0x13) == '.')) &&\n            ((*(char *)(puVar10 + 5) == '\0' || ((puVar10[5] & 0xffff0000) == 0x2e000000))));\n    uVar11 = (**(code **)(puVar22 + 0x17240))((int)puVar10 + 0x13);\n    iVar12 = (*(code *)(iVar7 + -0x4b14))(param_1,(int)puVar10 + 0x13,uVar11);\n    if (iVar12 == 0) {\nLAB_0001c794:\n      iVar5 = *piVar16;\n      (**(code **)(puVar22 + 0x172c8))(iVar12);\n      FUN_0001b6fc(iStack_a0);\n      (**(code **)(puVar22 + 0x17194))(*(undefined4 *)(iVar18 + 0xc));\n      *(undefined4 *)(iVar18 + 0xc) = 0;\n      *(undefined2 *)(iVar18 + 0x3c) = 7;\n      param_1[0xc] = param_1[0xc] | 0x4000;\n      *piVar16 = iVar5;\n      return 0;\n    }\n    if (uVar23 <= uVar11) {\n      iVar24 = param_1[6];\n      iVar14 = FUN_0001b0cc(param_1,iVar17 + 2 + uVar11);\n      if (iVar14 == 0) goto LAB_0001c794;\n      if ((param_1[6] != iVar24) && (iStack_8c = iVar14, (param_1[0xc] & 4U) != 0)) {\n        puStack_90 = (undefined1 *)(param_1[6] + uVar20);\n      }\n      uVar23 = param_1[9] - uVar20;\n    }\n    if (uVar20 + uVar11 < uVar20) {\n      (**(code **)(puVar22 + 0x172c8))(iVar12);\n      FUN_0001b6fc(iStack_a0);\n      (**(code **)(puVar22 + 0x17194))(*(undefined4 *)(iVar18 + 0xc));\n      *(undefined4 *)(iVar18 + 0xc) = 0;\n      *(undefined2 *)(iVar18 + 0x3c) = 7;\n      param_1[0xc] = param_1[0xc] | 0x4000;\n      *piVar16 = 0x4e;\n      return 0;\n    }\n    *(int *)(iVar12 + 0x30) = iVar6 + 1;\n    *(int *)(iVar12 + 4) = *param_1;\n    *(uint *)(iVar12 + 0x28) = uVar20 + uVar11;\n    uVar13 = *puVar10;\n    *(undefined4 *)(iVar12 + 0x5c) = puVar10[1];\n    *(undefined4 *)(iVar12 + 0x58) = uVar13;\n    if ((param_1[0xc] & 4U) == 0) {\n      *(int *)(iVar12 + 0x18) = iVar12 + 0xe8;\n      iVar14 = param_1[0xb];\n    }\n    else {\n      *(undefined4 *)(iVar12 + 0x18) = *(undefined4 *)(iVar12 + 0x1c);\n      (**(code **)(puVar22 + 0x172cc))(puStack_90,iVar12 + 0xe8,*(int *)(iVar12 + 0x34) + 1);\n      iVar14 = param_1[0xb];\n    }\n    if ((iVar14 == 0) || ((param_1[0xc] & 0x400U) != 0)) {\n      if (((param_1[0xc] & 0x18U) == 0x18) && ((*(byte *)((int)puVar10 + 0x12) & 0xfb) != 0)) {\n        *(undefined2 *)(iVar12 + 0x3c) = 0xb;\n        bVar3 = true;\n        if (*(byte *)((int)puVar10 + 0x12) < 0xd) {\n                    /* WARNING: Could not recover jumptable at 0x0001c904. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n          iVar5 = (*(code *)(puVar22 +\n                            *(int *)(iVar9 + 0x2d30 + (uint)*(byte *)((int)puVar10 + 0x12) * 4) +\n                            0x1ef9c))();\n          return iVar5;\n        }\n      }\n      else {\n        *(undefined2 *)(iVar12 + 0x3c) = 0xb;\n        bVar3 = false;\n        if (*(byte *)((int)puVar10 + 0x12) < 0xd) {\n                    /* WARNING: Could not recover jumptable at 0x0001cab8. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n          iVar5 = (*(code *)(puVar22 +\n                            *(int *)(*(int *)(puVar22 + 0x16fd4) + 0x2d64 +\n                                    (uint)*(byte *)((int)puVar10 + 0x12) * 4) + 0x1ef9c))();\n          return iVar5;\n        }\n      }\n      *(undefined4 *)(iVar12 + 0x60) = 0;\n      if (bVar3) {\n        uVar13 = 1;\n      }\n      else {\n        uVar13 = 2;\n      }\n      *(undefined4 *)(iVar12 + 0x84) = uVar13;\n      *(undefined4 *)(iVar12 + 0x80) = 0;\n    }\n    else {\n      uVar15 = FUN_0001b18c(param_1,iVar12,0);\n      *(undefined2 *)(iVar12 + 0x3c) = uVar15;\n    }\n    *(undefined4 *)(iVar12 + 8) = 0;\n    iVar14 = iVar12;\n    if (iStack_a0 != 0) {\n      *(int *)(iStack_a4 + 8) = iVar12;\n      iVar14 = iStack_a0;\n    }\n    iStack_a0 = iVar14;\n    iStack_a4 = iVar12;\n    if (uVar19 == 10000) {\n      if (param_1[0xb] != 0) {\nLAB_0001cb74:\n        uVar19 = 0x2711;\n        goto LAB_0001c96c;\n      }\n      iVar12 = (*(code *)(iVar8 + -0x47a8))(iVar18,iStack_7c);\n      if (iVar12 == 0x6969) {\n        bVar4 = false;\n      }\n      else if (iVar12 == 0x1021994) {\n        bVar4 = false;\n      }\n      else {\n        if (iVar12 != -0xacb2be) {\n          bVar4 = true;\n          goto LAB_0001cb74;\n        }\n        bVar4 = false;\n      }\n    }\n    uVar19 = uVar19 + 1;\n  } while (uVar19 < uStack_94);\nLAB_0001c66c:\n  if (iStack_8c != 0) {\n    iVar6 = param_1[6];\n    for (iVar17 = param_1[1]; iVar7 = iStack_a0, iVar17 != 0; iVar17 = *(int *)(iVar17 + 8)) {\n      if (*(int *)(iVar17 + 0x18) != iVar17 + 0xe8) {\n        *(int *)(iVar17 + 0x18) = iVar6 + (*(int *)(iVar17 + 0x18) - *(int *)(iVar17 + 0x1c));\n      }\n      *(int *)(iVar17 + 0x1c) = iVar6;\n    }\n    while (iVar17 = iVar7, -1 < *(int *)(iVar17 + 0x30)) {\n      if (*(int *)(iVar17 + 0x18) != iVar17 + 0xe8) {\n        *(int *)(iVar17 + 0x18) = iVar6 + (*(int *)(iVar17 + 0x18) - *(int *)(iVar17 + 0x1c));\n      }\n      *(int *)(iVar17 + 0x1c) = iVar6;\n      iVar7 = *(int *)(iVar17 + 8);\n      if (*(int *)(iVar17 + 8) == 0) {\n        iVar7 = *(int *)(iVar17 + 4);\n      }\n    }\n  }\n  if ((param_1[0xc] & 4U) != 0) {\n    if ((param_1[9] == uVar20) || (uVar19 == 0)) {\n      puStack_90 = puStack_90 + -1;\n    }\n    *puStack_90 = 0;\n  }\n  if ((iVar5 == 0) && (bVar2)) {\n    if ((param_2 != (undefined4 *)0x1) && (uVar19 != 0)) goto LAB_0001c6c0;\n    if (*(int *)(iVar18 + 0x30) == 0) {\n      iVar5 = FUN_0001bcbc(param_1);\n    }\n    else {\n      iVar5 = FUN_0001bd68(param_1,*(undefined4 *)(iVar18 + 4),0xffffffff,\n                           *(int *)(puVar22 + 0x16fd4) + 0x2d20);\n    }\n    if (iVar5 != 0) {\n      *(undefined2 *)(iVar18 + 0x3c) = 7;\n      param_1[0xc] = param_1[0xc] | 0x4000;\n      FUN_0001b6fc(iStack_a0);\n      return 0;\n    }\n  }\n  if (uVar19 == 0) {\n    if (((param_2 == (undefined4 *)0x3) && (*(short *)(iVar18 + 0x3c) != 4)) &&\n       (*(short *)(iVar18 + 0x3c) != 7)) {\n      *(undefined2 *)(iVar18 + 0x3c) = 6;\n    }\n    FUN_0001b6fc(iStack_a0);\n    return 0;\n  }\nLAB_0001c6c0:\n  if (bVar4) {\n    param_1[0xb] = *(int *)(puVar22 + 0x16fd4) + -0x4fa0;\n    iVar5 = FUN_0001b3ac(param_1,iStack_a0,uVar19);\n    param_1[0xb] = 0;\n    return iVar5;\n  }\n  if (param_1[0xb] == 0) {\n    return iStack_a0;\n  }\n  if (uVar19 < 2) {\n    return iStack_a0;\n  }\n  iVar5 = FUN_0001b3ac(param_1,iStack_a0,uVar19);\n  return iVar5;\n}" primitive_type (function_declarator "FUN_0001bfec(int *param_1,undefined4 *param_2)" identifier (parameter_list "(int *param_1,undefined4 *param_2)" ( (parameter_declaration "int *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "undefined4 *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) ))) (compound_statement "{\n  int *piVar1;\n  bool bVar2;\n  bool bVar3;\n  bool bVar4;\n  int iVar5;\n  int iVar6;\n  int iVar7;\n  int iVar8;\n  int iVar9;\n  undefined4 *puVar10;\n  uint uVar11;\n  int iVar12;\n  undefined4 uVar13;\n  int iVar14;\n  undefined2 uVar15;\n  int *piVar16;\n  int iVar17;\n  int iVar18;\n  uint uVar19;\n  uint uVar20;\n  code *pcVar21;\n  undefined *puVar22;\n  uint uVar23;\n  int iVar24;\n  int iStack_a4;\n  int iStack_a0;\n  uint uStack_94;\n  undefined1 *puStack_90;\n  int iStack_8c;\n  int iStack_7c;\n  undefined4 local_28;\n  undefined4 local_24;\n  undefined4 local_20;\n  undefined4 local_1c;\n  int local_c;\n  \n  local_c = *(int *)PTR___stack_chk_guard_000333f4;\n  if ((param_1[0xc] & 0x102U) == 0) {\n    iVar5 = param_2[1];\n    if ((iVar5 != 0) && (-1 < *(int *)(iVar5 + 0x30))) {\n      piVar16 = (int *)param_1[0xe];\n      pcVar21 = (code *)PTR_abort_000332e8;\n      if (piVar16[4] == 0 && piVar16[5] == 0) goto LAB_0001c120;\n      if ((*piVar16 == param_2[0x16]) && (piVar16[1] == param_2[0x17])) {\n        piVar1 = param_2 + 0x12;\n        param_2 = (undefined4 *)piVar16[2];\n        if ((param_2 == (undefined4 *)0x0) &&\n           (param_2 = (undefined4 *)piVar16[3], param_2 == (undefined4 *)*piVar1)) {\n          piVar16[3] = *(int *)(iVar5 + 0x48);\n          piVar16[2] = 0;\n          piVar16 = (int *)param_1[0xe];\n          param_2 = *(undefined4 **)(iVar5 + 0x5c);\n          param_1 = *(int **)(iVar5 + 0x58);\n          piVar16[1] = (int)param_2;\n          *piVar16 = (int)param_1;\n        }\n      }\n    }\nLAB_0001c0f8:\n    if (local_c == *(int *)PTR___stack_chk_guard_000333f4) {\n      return *(int *)PTR___stack_chk_guard_000333f4;\n    }\n  }\n  else {\n    local_24 = param_2[0x12];\n    local_28 = 0;\n    local_1c = param_2[0x17];\n    local_20 = param_2[0x16];\n    param_2 = &local_28;\n    param_1 = (int *)hash_delete(param_1[0xe]);\n    if (param_1 != (int *)0x0) {\n      (*(code *)PTR_free_000333fc)();\n      goto LAB_0001c0f8;\n    }\n    pcVar21 = (code *)PTR_abort_000332e8;\n    (*(code *)PTR_abort_000332e8)();\nLAB_0001c120:\n    (*pcVar21)();\n  }\n  puVar22 = PTR___stack_chk_fail_000333dc;\n  (*(code *)PTR___stack_chk_fail_000333dc)();\n  iVar18 = *param_1;\n  iVar5 = *(int *)(iVar18 + 0xc);\n  if (iVar5 != 0) {\n    iStack_7c = (**(code **)(puVar22 + 0x172d0))();\n    if (iStack_7c < 0) {\n      (**(code **)(puVar22 + 0x17194))(*(undefined4 *)(iVar18 + 0xc));\n      *(undefined4 *)(iVar18 + 0xc) = 0;\n      if (param_2 != (undefined4 *)0x3) {\n        return 0;\n      }\n      *(undefined2 *)(iVar18 + 0x3c) = 4;\n      puVar10 = (undefined4 *)(**(code **)(puVar22 + 0x17220))();\n      *(undefined4 *)(iVar18 + 0x20) = *puVar10;\n      return 0;\n    }\n    if (param_1[0xb] == 0) {\n      uStack_94 = 100000;\n      bVar2 = true;\n    }\n    else {\n      uStack_94 = 0xffffffff;\n      bVar2 = true;\n    }\n    goto LAB_0001c1b8;\n  }\n  uVar19 = param_1[0xc];\n  if ((uVar19 & 0x204) == 0x200) {\n    iVar17 = param_1[8];\n  }\n  else {\n    iVar17 = -100;\n  }\n  uVar20 = uVar19 & 0x10;\n  if (((uVar20 != 0) && (uVar20 = 0x20000, (uVar19 & 1) != 0)) &&\n     (uVar20 = *(uint *)(iVar18 + 0x30), uVar20 != 0)) {\n    uVar20 = 0x20000;\n  }\n  iStack_7c = openat_safer(iVar17,*(undefined4 *)(iVar18 + 0x18),\n                           (uVar19 & 0x800) << 7 | uVar20 | 0x90880);\n  if (iStack_7c < 0) {\nLAB_0001c3e8:\n    *(undefined4 *)(iVar18 + 0xc) = 0;\n    if (param_2 == (undefined4 *)0x3) {\n      *(undefined2 *)(iVar18 + 0x3c) = 4;\n      puVar10 = (undefined4 *)(**(code **)(puVar22 + 0x17220))();\n      *(undefined4 *)(iVar18 + 0x20) = *puVar10;\n    }\n    return 0;\n  }\n  iVar17 = (**(code **)(puVar22 + 0x171f0))(iStack_7c);\n  if (iVar17 == 0) {\n    puVar10 = (undefined4 *)(**(code **)(puVar22 + 0x17220))();\n    uVar13 = *puVar10;\n    (**(code **)(puVar22 + 0x17198))(iStack_7c);\n    *puVar10 = uVar13;\n    goto LAB_0001c3e8;\n  }\n  *(int *)(iVar18 + 0xc) = iVar17;\n  if (*(short *)(iVar18 + 0x3c) == 0xb) {\n    uVar15 = FUN_0001b18c(param_1,iVar18,0);\n    *(undefined2 *)(iVar18 + 0x3c) = uVar15;\n  }\n  else if ((param_1[0xc] & 0x100U) != 0) {\n    FUN_0001bfec(param_1,iVar18);\n    FUN_0001b18c(param_1,iVar18,0);\n    iVar17 = FUN_0001bad0(param_1,iVar18);\n    if (iVar17 == 0) {\n      puVar10 = (undefined4 *)(**(code **)(puVar22 + 0x17220))();\n      *puVar10 = 0xc;\n      return 0;\n    }\n  }\n  if (param_1[0xb] == 0) {\n    uStack_94 = 100000;\n  }\n  else {\n    uStack_94 = 0xffffffff;\n  }\n  if (param_2 == (undefined4 *)0x2) {\n    bVar2 = false;\n  }\n  else {\n    if ((((param_1[0xc] & 0x38U) == 0x18) && (*(int *)(iVar18 + 100) == 2)) &&\n       (iVar17 = FUN_0001ba08(iVar18,iStack_7c), iVar17 != 0)) {\n      bVar2 = false;\n      if (param_2 != (undefined4 *)0x3) {\n        bVar2 = false;\n        goto LAB_0001c1b8;\n      }\n      uVar19 = param_1[0xc];\n    }\n    else {\n      bVar2 = true;\n      uVar19 = param_1[0xc];\n    }\n    if ((uVar19 & 0x200) != 0) {\n      iStack_7c = rpl_fcntl(iStack_7c,0x406,3);\n    }\n    if ((iStack_7c < 0) || (iVar17 = FUN_0001bd68(param_1,iVar18,iStack_7c,0), iVar17 != 0)) {\n      if ((bVar2) && (param_2 == (undefined4 *)0x3)) {\n        puVar10 = (undefined4 *)(**(code **)(puVar22 + 0x17220))();\n        *(undefined4 *)(iVar18 + 0x20) = *puVar10;\n      }\n      *(ushort *)(iVar18 + 0x3e) = *(ushort *)(iVar18 + 0x3e) | 1;\n      (**(code **)(puVar22 + 0x17194))(*(undefined4 *)(iVar18 + 0xc));\n      *(undefined4 *)(iVar18 + 0xc) = 0;\n      if (((param_1[0xc] & 0x200U) != 0) && (-1 < iStack_7c)) {\n        (**(code **)(puVar22 + 0x17198))(iStack_7c);\n        *(undefined4 *)(iVar18 + 0xc) = 0;\n      }\n      bVar2 = false;\n    }\n    else {\n      bVar2 = true;\n    }\n  }\nLAB_0001c1b8:\n  iVar17 = *(int *)(iVar18 + 0x28) + -1;\n  if (*(char *)(*(int *)(iVar18 + 0x1c) + iVar17) != '/') {\n    iVar17 = *(int *)(iVar18 + 0x28);\n  }\n  if ((param_1[0xc] & 4U) == 0) {\n    puStack_90 = (undefined1 *)0x0;\n  }\n  else {\n    puStack_90 = (undefined1 *)(param_1[6] + iVar17) + 1;\n    *(undefined1 *)(param_1[6] + iVar17) = 0x2f;\n  }\n  uVar20 = iVar17 + 1;\n  uVar23 = param_1[9] - uVar20;\n  iVar6 = *(int *)(iVar18 + 0x30);\n  bVar4 = false;\n  iStack_8c = 0;\n  iStack_a4 = 0;\n  uVar19 = 0;\n  iStack_a0 = 0;\n  iVar7 = *(int *)(puVar22 + 0x16fd4);\n  iVar8 = *(int *)(puVar22 + 0x16fd4);\n  iVar9 = *(int *)(puVar22 + 0x16fd4);\nLAB_0001c96c:\n  do {\n    do {\n      if (*(int *)(iVar18 + 0xc) == 0) goto LAB_0001c66c;\n      piVar16 = (int *)(**(code **)(puVar22 + 0x17220))();\n      *piVar16 = 0;\n      puVar10 = (undefined4 *)(**(code **)(puVar22 + 0x171d8))(*(undefined4 *)(iVar18 + 0xc));\n      if (puVar10 == (undefined4 *)0x0) {\n        if (*piVar16 != 0) {\n          *(int *)(iVar18 + 0x20) = *piVar16;\n          uVar15 = 7;\n          if ((iVar5 == 0) && (uVar19 == 0)) {\n            uVar15 = 4;\n          }\n          *(undefined2 *)(iVar18 + 0x3c) = uVar15;\n        }\n        if (*(int *)(iVar18 + 0xc) != 0) {\n          (**(code **)(puVar22 + 0x17194))();\n          *(undefined4 *)(iVar18 + 0xc) = 0;\n        }\n        goto LAB_0001c66c;\n      }\n    } while ((((param_1[0xc] & 0x20U) == 0) && (*(char *)((int)puVar10 + 0x13) == '.')) &&\n            ((*(char *)(puVar10 + 5) == '\0' || ((puVar10[5] & 0xffff0000) == 0x2e000000))));\n    uVar11 = (**(code **)(puVar22 + 0x17240))((int)puVar10 + 0x13);\n    iVar12 = (*(code *)(iVar7 + -0x4b14))(param_1,(int)puVar10 + 0x13,uVar11);\n    if (iVar12 == 0) {\nLAB_0001c794:\n      iVar5 = *piVar16;\n      (**(code **)(puVar22 + 0x172c8))(iVar12);\n      FUN_0001b6fc(iStack_a0);\n      (**(code **)(puVar22 + 0x17194))(*(undefined4 *)(iVar18 + 0xc));\n      *(undefined4 *)(iVar18 + 0xc) = 0;\n      *(undefined2 *)(iVar18 + 0x3c) = 7;\n      param_1[0xc] = param_1[0xc] | 0x4000;\n      *piVar16 = iVar5;\n      return 0;\n    }\n    if (uVar23 <= uVar11) {\n      iVar24 = param_1[6];\n      iVar14 = FUN_0001b0cc(param_1,iVar17 + 2 + uVar11);\n      if (iVar14 == 0) goto LAB_0001c794;\n      if ((param_1[6] != iVar24) && (iStack_8c = iVar14, (param_1[0xc] & 4U) != 0)) {\n        puStack_90 = (undefined1 *)(param_1[6] + uVar20);\n      }\n      uVar23 = param_1[9] - uVar20;\n    }\n    if (uVar20 + uVar11 < uVar20) {\n      (**(code **)(puVar22 + 0x172c8))(iVar12);\n      FUN_0001b6fc(iStack_a0);\n      (**(code **)(puVar22 + 0x17194))(*(undefined4 *)(iVar18 + 0xc));\n      *(undefined4 *)(iVar18 + 0xc) = 0;\n      *(undefined2 *)(iVar18 + 0x3c) = 7;\n      param_1[0xc] = param_1[0xc] | 0x4000;\n      *piVar16 = 0x4e;\n      return 0;\n    }\n    *(int *)(iVar12 + 0x30) = iVar6 + 1;\n    *(int *)(iVar12 + 4) = *param_1;\n    *(uint *)(iVar12 + 0x28) = uVar20 + uVar11;\n    uVar13 = *puVar10;\n    *(undefined4 *)(iVar12 + 0x5c) = puVar10[1];\n    *(undefined4 *)(iVar12 + 0x58) = uVar13;\n    if ((param_1[0xc] & 4U) == 0) {\n      *(int *)(iVar12 + 0x18) = iVar12 + 0xe8;\n      iVar14 = param_1[0xb];\n    }\n    else {\n      *(undefined4 *)(iVar12 + 0x18) = *(undefined4 *)(iVar12 + 0x1c);\n      (**(code **)(puVar22 + 0x172cc))(puStack_90,iVar12 + 0xe8,*(int *)(iVar12 + 0x34) + 1);\n      iVar14 = param_1[0xb];\n    }\n    if ((iVar14 == 0) || ((param_1[0xc] & 0x400U) != 0)) {\n      if (((param_1[0xc] & 0x18U) == 0x18) && ((*(byte *)((int)puVar10 + 0x12) & 0xfb) != 0)) {\n        *(undefined2 *)(iVar12 + 0x3c) = 0xb;\n        bVar3 = true;\n        if (*(byte *)((int)puVar10 + 0x12) < 0xd) {\n                    /* WARNING: Could not recover jumptable at 0x0001c904. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n          iVar5 = (*(code *)(puVar22 +\n                            *(int *)(iVar9 + 0x2d30 + (uint)*(byte *)((int)puVar10 + 0x12) * 4) +\n                            0x1ef9c))();\n          return iVar5;\n        }\n      }\n      else {\n        *(undefined2 *)(iVar12 + 0x3c) = 0xb;\n        bVar3 = false;\n        if (*(byte *)((int)puVar10 + 0x12) < 0xd) {\n                    /* WARNING: Could not recover jumptable at 0x0001cab8. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n          iVar5 = (*(code *)(puVar22 +\n                            *(int *)(*(int *)(puVar22 + 0x16fd4) + 0x2d64 +\n                                    (uint)*(byte *)((int)puVar10 + 0x12) * 4) + 0x1ef9c))();\n          return iVar5;\n        }\n      }\n      *(undefined4 *)(iVar12 + 0x60) = 0;\n      if (bVar3) {\n        uVar13 = 1;\n      }\n      else {\n        uVar13 = 2;\n      }\n      *(undefined4 *)(iVar12 + 0x84) = uVar13;\n      *(undefined4 *)(iVar12 + 0x80) = 0;\n    }\n    else {\n      uVar15 = FUN_0001b18c(param_1,iVar12,0);\n      *(undefined2 *)(iVar12 + 0x3c) = uVar15;\n    }\n    *(undefined4 *)(iVar12 + 8) = 0;\n    iVar14 = iVar12;\n    if (iStack_a0 != 0) {\n      *(int *)(iStack_a4 + 8) = iVar12;\n      iVar14 = iStack_a0;\n    }\n    iStack_a0 = iVar14;\n    iStack_a4 = iVar12;\n    if (uVar19 == 10000) {\n      if (param_1[0xb] != 0) {\nLAB_0001cb74:\n        uVar19 = 0x2711;\n        goto LAB_0001c96c;\n      }\n      iVar12 = (*(code *)(iVar8 + -0x47a8))(iVar18,iStack_7c);\n      if (iVar12 == 0x6969) {\n        bVar4 = false;\n      }\n      else if (iVar12 == 0x1021994) {\n        bVar4 = false;\n      }\n      else {\n        if (iVar12 != -0xacb2be) {\n          bVar4 = true;\n          goto LAB_0001cb74;\n        }\n        bVar4 = false;\n      }\n    }\n    uVar19 = uVar19 + 1;\n  } while (uVar19 < uStack_94);\nLAB_0001c66c:\n  if (iStack_8c != 0) {\n    iVar6 = param_1[6];\n    for (iVar17 = param_1[1]; iVar7 = iStack_a0, iVar17 != 0; iVar17 = *(int *)(iVar17 + 8)) {\n      if (*(int *)(iVar17 + 0x18) != iVar17 + 0xe8) {\n        *(int *)(iVar17 + 0x18) = iVar6 + (*(int *)(iVar17 + 0x18) - *(int *)(iVar17 + 0x1c));\n      }\n      *(int *)(iVar17 + 0x1c) = iVar6;\n    }\n    while (iVar17 = iVar7, -1 < *(int *)(iVar17 + 0x30)) {\n      if (*(int *)(iVar17 + 0x18) != iVar17 + 0xe8) {\n        *(int *)(iVar17 + 0x18) = iVar6 + (*(int *)(iVar17 + 0x18) - *(int *)(iVar17 + 0x1c));\n      }\n      *(int *)(iVar17 + 0x1c) = iVar6;\n      iVar7 = *(int *)(iVar17 + 8);\n      if (*(int *)(iVar17 + 8) == 0) {\n        iVar7 = *(int *)(iVar17 + 4);\n      }\n    }\n  }\n  if ((param_1[0xc] & 4U) != 0) {\n    if ((param_1[9] == uVar20) || (uVar19 == 0)) {\n      puStack_90 = puStack_90 + -1;\n    }\n    *puStack_90 = 0;\n  }\n  if ((iVar5 == 0) && (bVar2)) {\n    if ((param_2 != (undefined4 *)0x1) && (uVar19 != 0)) goto LAB_0001c6c0;\n    if (*(int *)(iVar18 + 0x30) == 0) {\n      iVar5 = FUN_0001bcbc(param_1);\n    }\n    else {\n      iVar5 = FUN_0001bd68(param_1,*(undefined4 *)(iVar18 + 4),0xffffffff,\n                           *(int *)(puVar22 + 0x16fd4) + 0x2d20);\n    }\n    if (iVar5 != 0) {\n      *(undefined2 *)(iVar18 + 0x3c) = 7;\n      param_1[0xc] = param_1[0xc] | 0x4000;\n      FUN_0001b6fc(iStack_a0);\n      return 0;\n    }\n  }\n  if (uVar19 == 0) {\n    if (((param_2 == (undefined4 *)0x3) && (*(short *)(iVar18 + 0x3c) != 4)) &&\n       (*(short *)(iVar18 + 0x3c) != 7)) {\n      *(undefined2 *)(iVar18 + 0x3c) = 6;\n    }\n    FUN_0001b6fc(iStack_a0);\n    return 0;\n  }\nLAB_0001c6c0:\n  if (bVar4) {\n    param_1[0xb] = *(int *)(puVar22 + 0x16fd4) + -0x4fa0;\n    iVar5 = FUN_0001b3ac(param_1,iStack_a0,uVar19);\n    param_1[0xb] = 0;\n    return iVar5;\n  }\n  if (param_1[0xb] == 0) {\n    return iStack_a0;\n  }\n  if (uVar19 < 2) {\n    return iStack_a0;\n  }\n  iVar5 = FUN_0001b3ac(param_1,iStack_a0,uVar19);\n  return iVar5;\n}" { (declaration "int *piVar1;" primitive_type (pointer_declarator "*piVar1" * identifier) ;) (declaration "bool bVar2;" primitive_type identifier ;) (declaration "bool bVar3;" primitive_type identifier ;) (declaration "bool bVar4;" primitive_type identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "int iVar8;" primitive_type identifier ;) (declaration "int iVar9;" primitive_type identifier ;) (declaration "undefined4 *puVar10;" type_identifier (pointer_declarator "*puVar10" * identifier) ;) (declaration "uint uVar11;" type_identifier identifier ;) (declaration "int iVar12;" primitive_type identifier ;) (declaration "undefined4 uVar13;" type_identifier identifier ;) (declaration "int iVar14;" primitive_type identifier ;) (declaration "undefined2 uVar15;" type_identifier identifier ;) (declaration "int *piVar16;" primitive_type (pointer_declarator "*piVar16" * identifier) ;) (declaration "int iVar17;" primitive_type identifier ;) (declaration "int iVar18;" primitive_type identifier ;) (declaration "uint uVar19;" type_identifier identifier ;) (declaration "uint uVar20;" type_identifier identifier ;) (declaration "code *pcVar21;" type_identifier (pointer_declarator "*pcVar21" * identifier) ;) (declaration "undefined *puVar22;" type_identifier (pointer_declarator "*puVar22" * identifier) ;) (declaration "uint uVar23;" type_identifier identifier ;) (declaration "int iVar24;" primitive_type identifier ;) (declaration "int iStack_a4;" primitive_type identifier ;) (declaration "int iStack_a0;" primitive_type identifier ;) (declaration "uint uStack_94;" type_identifier identifier ;) (declaration "undefined1 *puStack_90;" type_identifier (pointer_declarator "*puStack_90" * identifier) ;) (declaration "int iStack_8c;" primitive_type identifier ;) (declaration "int iStack_7c;" primitive_type identifier ;) (declaration "undefined4 local_28;" type_identifier identifier ;) (declaration "undefined4 local_24;" type_identifier identifier ;) (declaration "undefined4 local_20;" type_identifier identifier ;) (declaration "undefined4 local_1c;" type_identifier identifier ;) (declaration "int local_c;" primitive_type identifier ;) (expression_statement "local_c = *(int *)PTR___stack_chk_guard_000333f4;" (assignment_expression "local_c = *(int *)PTR___stack_chk_guard_000333f4" identifier = (pointer_expression "*(int *)PTR___stack_chk_guard_000333f4" * (cast_expression "(int *)PTR___stack_chk_guard_000333f4" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (if_statement "if ((param_1[0xc] & 0x102U) == 0) {\n    iVar5 = param_2[1];\n    if ((iVar5 != 0) && (-1 < *(int *)(iVar5 + 0x30))) {\n      piVar16 = (int *)param_1[0xe];\n      pcVar21 = (code *)PTR_abort_000332e8;\n      if (piVar16[4] == 0 && piVar16[5] == 0) goto LAB_0001c120;\n      if ((*piVar16 == param_2[0x16]) && (piVar16[1] == param_2[0x17])) {\n        piVar1 = param_2 + 0x12;\n        param_2 = (undefined4 *)piVar16[2];\n        if ((param_2 == (undefined4 *)0x0) &&\n           (param_2 = (undefined4 *)piVar16[3], param_2 == (undefined4 *)*piVar1)) {\n          piVar16[3] = *(int *)(iVar5 + 0x48);\n          piVar16[2] = 0;\n          piVar16 = (int *)param_1[0xe];\n          param_2 = *(undefined4 **)(iVar5 + 0x5c);\n          param_1 = *(int **)(iVar5 + 0x58);\n          piVar16[1] = (int)param_2;\n          *piVar16 = (int)param_1;\n        }\n      }\n    }\nLAB_0001c0f8:\n    if (local_c == *(int *)PTR___stack_chk_guard_000333f4) {\n      return *(int *)PTR___stack_chk_guard_000333f4;\n    }\n  }\n  else {\n    local_24 = param_2[0x12];\n    local_28 = 0;\n    local_1c = param_2[0x17];\n    local_20 = param_2[0x16];\n    param_2 = &local_28;\n    param_1 = (int *)hash_delete(param_1[0xe]);\n    if (param_1 != (int *)0x0) {\n      (*(code *)PTR_free_000333fc)();\n      goto LAB_0001c0f8;\n    }\n    pcVar21 = (code *)PTR_abort_000332e8;\n    (*(code *)PTR_abort_000332e8)();\nLAB_0001c120:\n    (*pcVar21)();\n  }" if (parenthesized_expression "((param_1[0xc] & 0x102U) == 0)" ( (binary_expression "(param_1[0xc] & 0x102U) == 0" (parenthesized_expression "(param_1[0xc] & 0x102U)" ( (binary_expression "param_1[0xc] & 0x102U" (subscript_expression "param_1[0xc]" identifier [ number_literal ]) & number_literal) )) == number_literal) )) (compound_statement "{\n    iVar5 = param_2[1];\n    if ((iVar5 != 0) && (-1 < *(int *)(iVar5 + 0x30))) {\n      piVar16 = (int *)param_1[0xe];\n      pcVar21 = (code *)PTR_abort_000332e8;\n      if (piVar16[4] == 0 && piVar16[5] == 0) goto LAB_0001c120;\n      if ((*piVar16 == param_2[0x16]) && (piVar16[1] == param_2[0x17])) {\n        piVar1 = param_2 + 0x12;\n        param_2 = (undefined4 *)piVar16[2];\n        if ((param_2 == (undefined4 *)0x0) &&\n           (param_2 = (undefined4 *)piVar16[3], param_2 == (undefined4 *)*piVar1)) {\n          piVar16[3] = *(int *)(iVar5 + 0x48);\n          piVar16[2] = 0;\n          piVar16 = (int *)param_1[0xe];\n          param_2 = *(undefined4 **)(iVar5 + 0x5c);\n          param_1 = *(int **)(iVar5 + 0x58);\n          piVar16[1] = (int)param_2;\n          *piVar16 = (int)param_1;\n        }\n      }\n    }\nLAB_0001c0f8:\n    if (local_c == *(int *)PTR___stack_chk_guard_000333f4) {\n      return *(int *)PTR___stack_chk_guard_000333f4;\n    }\n  }" { (expression_statement "iVar5 = param_2[1];" (assignment_expression "iVar5 = param_2[1]" identifier = (subscript_expression "param_2[1]" identifier [ number_literal ])) ;) (if_statement "if ((iVar5 != 0) && (-1 < *(int *)(iVar5 + 0x30))) {\n      piVar16 = (int *)param_1[0xe];\n      pcVar21 = (code *)PTR_abort_000332e8;\n      if (piVar16[4] == 0 && piVar16[5] == 0) goto LAB_0001c120;\n      if ((*piVar16 == param_2[0x16]) && (piVar16[1] == param_2[0x17])) {\n        piVar1 = param_2 + 0x12;\n        param_2 = (undefined4 *)piVar16[2];\n        if ((param_2 == (undefined4 *)0x0) &&\n           (param_2 = (undefined4 *)piVar16[3], param_2 == (undefined4 *)*piVar1)) {\n          piVar16[3] = *(int *)(iVar5 + 0x48);\n          piVar16[2] = 0;\n          piVar16 = (int *)param_1[0xe];\n          param_2 = *(undefined4 **)(iVar5 + 0x5c);\n          param_1 = *(int **)(iVar5 + 0x58);\n          piVar16[1] = (int)param_2;\n          *piVar16 = (int)param_1;\n        }\n      }\n    }" if (parenthesized_expression "((iVar5 != 0) && (-1 < *(int *)(iVar5 + 0x30)))" ( (binary_expression "(iVar5 != 0) && (-1 < *(int *)(iVar5 + 0x30))" (parenthesized_expression "(iVar5 != 0)" ( (binary_expression "iVar5 != 0" identifier != number_literal) )) && (parenthesized_expression "(-1 < *(int *)(iVar5 + 0x30))" ( (binary_expression "-1 < *(int *)(iVar5 + 0x30)" number_literal < (pointer_expression "*(int *)(iVar5 + 0x30)" * (cast_expression "(int *)(iVar5 + 0x30)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x30)" ( (binary_expression "iVar5 + 0x30" identifier + number_literal) ))))) ))) )) (compound_statement "{\n      piVar16 = (int *)param_1[0xe];\n      pcVar21 = (code *)PTR_abort_000332e8;\n      if (piVar16[4] == 0 && piVar16[5] == 0) goto LAB_0001c120;\n      if ((*piVar16 == param_2[0x16]) && (piVar16[1] == param_2[0x17])) {\n        piVar1 = param_2 + 0x12;\n        param_2 = (undefined4 *)piVar16[2];\n        if ((param_2 == (undefined4 *)0x0) &&\n           (param_2 = (undefined4 *)piVar16[3], param_2 == (undefined4 *)*piVar1)) {\n          piVar16[3] = *(int *)(iVar5 + 0x48);\n          piVar16[2] = 0;\n          piVar16 = (int *)param_1[0xe];\n          param_2 = *(undefined4 **)(iVar5 + 0x5c);\n          param_1 = *(int **)(iVar5 + 0x58);\n          piVar16[1] = (int)param_2;\n          *piVar16 = (int)param_1;\n        }\n      }\n    }" { (expression_statement "piVar16 = (int *)param_1[0xe];" (assignment_expression "piVar16 = (int *)param_1[0xe]" identifier = (cast_expression "(int *)param_1[0xe]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[0xe]" identifier [ number_literal ]))) ;) (expression_statement "pcVar21 = (code *)PTR_abort_000332e8;" (assignment_expression "pcVar21 = (code *)PTR_abort_000332e8" identifier = (cast_expression "(code *)PTR_abort_000332e8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (if_statement "if (piVar16[4] == 0 && piVar16[5] == 0) goto LAB_0001c120;" if (parenthesized_expression "(piVar16[4] == 0 && piVar16[5] == 0)" ( (binary_expression "piVar16[4] == 0 && piVar16[5] == 0" (binary_expression "piVar16[4] == 0" (subscript_expression "piVar16[4]" identifier [ number_literal ]) == number_literal) && (binary_expression "piVar16[5] == 0" (subscript_expression "piVar16[5]" identifier [ number_literal ]) == number_literal)) )) (goto_statement "goto LAB_0001c120;" goto statement_identifier ;)) (if_statement "if ((*piVar16 == param_2[0x16]) && (piVar16[1] == param_2[0x17])) {\n        piVar1 = param_2 + 0x12;\n        param_2 = (undefined4 *)piVar16[2];\n        if ((param_2 == (undefined4 *)0x0) &&\n           (param_2 = (undefined4 *)piVar16[3], param_2 == (undefined4 *)*piVar1)) {\n          piVar16[3] = *(int *)(iVar5 + 0x48);\n          piVar16[2] = 0;\n          piVar16 = (int *)param_1[0xe];\n          param_2 = *(undefined4 **)(iVar5 + 0x5c);\n          param_1 = *(int **)(iVar5 + 0x58);\n          piVar16[1] = (int)param_2;\n          *piVar16 = (int)param_1;\n        }\n      }" if (parenthesized_expression "((*piVar16 == param_2[0x16]) && (piVar16[1] == param_2[0x17]))" ( (binary_expression "(*piVar16 == param_2[0x16]) && (piVar16[1] == param_2[0x17])" (parenthesized_expression "(*piVar16 == param_2[0x16])" ( (binary_expression "*piVar16 == param_2[0x16]" (pointer_expression "*piVar16" * identifier) == (subscript_expression "param_2[0x16]" identifier [ number_literal ])) )) && (parenthesized_expression "(piVar16[1] == param_2[0x17])" ( (binary_expression "piVar16[1] == param_2[0x17]" (subscript_expression "piVar16[1]" identifier [ number_literal ]) == (subscript_expression "param_2[0x17]" identifier [ number_literal ])) ))) )) (compound_statement "{\n        piVar1 = param_2 + 0x12;\n        param_2 = (undefined4 *)piVar16[2];\n        if ((param_2 == (undefined4 *)0x0) &&\n           (param_2 = (undefined4 *)piVar16[3], param_2 == (undefined4 *)*piVar1)) {\n          piVar16[3] = *(int *)(iVar5 + 0x48);\n          piVar16[2] = 0;\n          piVar16 = (int *)param_1[0xe];\n          param_2 = *(undefined4 **)(iVar5 + 0x5c);\n          param_1 = *(int **)(iVar5 + 0x58);\n          piVar16[1] = (int)param_2;\n          *piVar16 = (int)param_1;\n        }\n      }" { (expression_statement "piVar1 = param_2 + 0x12;" (assignment_expression "piVar1 = param_2 + 0x12" identifier = (binary_expression "param_2 + 0x12" identifier + number_literal)) ;) (expression_statement "param_2 = (undefined4 *)piVar16[2];" (assignment_expression "param_2 = (undefined4 *)piVar16[2]" identifier = (cast_expression "(undefined4 *)piVar16[2]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar16[2]" identifier [ number_literal ]))) ;) (if_statement "if ((param_2 == (undefined4 *)0x0) &&\n           (param_2 = (undefined4 *)piVar16[3], param_2 == (undefined4 *)*piVar1)) {\n          piVar16[3] = *(int *)(iVar5 + 0x48);\n          piVar16[2] = 0;\n          piVar16 = (int *)param_1[0xe];\n          param_2 = *(undefined4 **)(iVar5 + 0x5c);\n          param_1 = *(int **)(iVar5 + 0x58);\n          piVar16[1] = (int)param_2;\n          *piVar16 = (int)param_1;\n        }" if (parenthesized_expression "((param_2 == (undefined4 *)0x0) &&\n           (param_2 = (undefined4 *)piVar16[3], param_2 == (undefined4 *)*piVar1))" ( (binary_expression "(param_2 == (undefined4 *)0x0) &&\n           (param_2 = (undefined4 *)piVar16[3], param_2 == (undefined4 *)*piVar1)" (parenthesized_expression "(param_2 == (undefined4 *)0x0)" ( (binary_expression "param_2 == (undefined4 *)0x0" identifier == (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(param_2 = (undefined4 *)piVar16[3], param_2 == (undefined4 *)*piVar1)" ( (comma_expression "param_2 = (undefined4 *)piVar16[3], param_2 == (undefined4 *)*piVar1" (assignment_expression "param_2 = (undefined4 *)piVar16[3]" identifier = (cast_expression "(undefined4 *)piVar16[3]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar16[3]" identifier [ number_literal ]))) , (binary_expression "param_2 == (undefined4 *)*piVar1" identifier == (cast_expression "(undefined4 *)*piVar1" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar1" * identifier)))) ))) )) (compound_statement "{\n          piVar16[3] = *(int *)(iVar5 + 0x48);\n          piVar16[2] = 0;\n          piVar16 = (int *)param_1[0xe];\n          param_2 = *(undefined4 **)(iVar5 + 0x5c);\n          param_1 = *(int **)(iVar5 + 0x58);\n          piVar16[1] = (int)param_2;\n          *piVar16 = (int)param_1;\n        }" { (expression_statement "piVar16[3] = *(int *)(iVar5 + 0x48);" (assignment_expression "piVar16[3] = *(int *)(iVar5 + 0x48)" (subscript_expression "piVar16[3]" identifier [ number_literal ]) = (pointer_expression "*(int *)(iVar5 + 0x48)" * (cast_expression "(int *)(iVar5 + 0x48)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x48)" ( (binary_expression "iVar5 + 0x48" identifier + number_literal) ))))) ;) (expression_statement "piVar16[2] = 0;" (assignment_expression "piVar16[2] = 0" (subscript_expression "piVar16[2]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "piVar16 = (int *)param_1[0xe];" (assignment_expression "piVar16 = (int *)param_1[0xe]" identifier = (cast_expression "(int *)param_1[0xe]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[0xe]" identifier [ number_literal ]))) ;) (expression_statement "param_2 = *(undefined4 **)(iVar5 + 0x5c);" (assignment_expression "param_2 = *(undefined4 **)(iVar5 + 0x5c)" identifier = (pointer_expression "*(undefined4 **)(iVar5 + 0x5c)" * (cast_expression "(undefined4 **)(iVar5 + 0x5c)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar5 + 0x5c)" ( (binary_expression "iVar5 + 0x5c" identifier + number_literal) ))))) ;) (expression_statement "param_1 = *(int **)(iVar5 + 0x58);" (assignment_expression "param_1 = *(int **)(iVar5 + 0x58)" identifier = (pointer_expression "*(int **)(iVar5 + 0x58)" * (cast_expression "(int **)(iVar5 + 0x58)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar5 + 0x58)" ( (binary_expression "iVar5 + 0x58" identifier + number_literal) ))))) ;) (expression_statement "piVar16[1] = (int)param_2;" (assignment_expression "piVar16[1] = (int)param_2" (subscript_expression "piVar16[1]" identifier [ number_literal ]) = (cast_expression "(int)param_2" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "*piVar16 = (int)param_1;" (assignment_expression "*piVar16 = (int)param_1" (pointer_expression "*piVar16" * identifier) = (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier)) ;) })) })) })) (labeled_statement "LAB_0001c0f8:\n    if (local_c == *(int *)PTR___stack_chk_guard_000333f4) {\n      return *(int *)PTR___stack_chk_guard_000333f4;\n    }" statement_identifier : (if_statement "if (local_c == *(int *)PTR___stack_chk_guard_000333f4) {\n      return *(int *)PTR___stack_chk_guard_000333f4;\n    }" if (parenthesized_expression "(local_c == *(int *)PTR___stack_chk_guard_000333f4)" ( (binary_expression "local_c == *(int *)PTR___stack_chk_guard_000333f4" identifier == (pointer_expression "*(int *)PTR___stack_chk_guard_000333f4" * (cast_expression "(int *)PTR___stack_chk_guard_000333f4" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) )) (compound_statement "{\n      return *(int *)PTR___stack_chk_guard_000333f4;\n    }" { (return_statement "return *(int *)PTR___stack_chk_guard_000333f4;" return (pointer_expression "*(int *)PTR___stack_chk_guard_000333f4" * (cast_expression "(int *)PTR___stack_chk_guard_000333f4" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) ;) }))) }) (else_clause "else {\n    local_24 = param_2[0x12];\n    local_28 = 0;\n    local_1c = param_2[0x17];\n    local_20 = param_2[0x16];\n    param_2 = &local_28;\n    param_1 = (int *)hash_delete(param_1[0xe]);\n    if (param_1 != (int *)0x0) {\n      (*(code *)PTR_free_000333fc)();\n      goto LAB_0001c0f8;\n    }\n    pcVar21 = (code *)PTR_abort_000332e8;\n    (*(code *)PTR_abort_000332e8)();\nLAB_0001c120:\n    (*pcVar21)();\n  }" else (compound_statement "{\n    local_24 = param_2[0x12];\n    local_28 = 0;\n    local_1c = param_2[0x17];\n    local_20 = param_2[0x16];\n    param_2 = &local_28;\n    param_1 = (int *)hash_delete(param_1[0xe]);\n    if (param_1 != (int *)0x0) {\n      (*(code *)PTR_free_000333fc)();\n      goto LAB_0001c0f8;\n    }\n    pcVar21 = (code *)PTR_abort_000332e8;\n    (*(code *)PTR_abort_000332e8)();\nLAB_0001c120:\n    (*pcVar21)();\n  }" { (expression_statement "local_24 = param_2[0x12];" (assignment_expression "local_24 = param_2[0x12]" identifier = (subscript_expression "param_2[0x12]" identifier [ number_literal ])) ;) (expression_statement "local_28 = 0;" (assignment_expression "local_28 = 0" identifier = number_literal) ;) (expression_statement "local_1c = param_2[0x17];" (assignment_expression "local_1c = param_2[0x17]" identifier = (subscript_expression "param_2[0x17]" identifier [ number_literal ])) ;) (expression_statement "local_20 = param_2[0x16];" (assignment_expression "local_20 = param_2[0x16]" identifier = (subscript_expression "param_2[0x16]" identifier [ number_literal ])) ;) (expression_statement "param_2 = &local_28;" (assignment_expression "param_2 = &local_28" identifier = (pointer_expression "&local_28" & identifier)) ;) (expression_statement "param_1 = (int *)hash_delete(param_1[0xe]);" (assignment_expression "param_1 = (int *)hash_delete(param_1[0xe])" identifier = (cast_expression "(int *)hash_delete(param_1[0xe])" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "hash_delete(param_1[0xe])" identifier (argument_list "(param_1[0xe])" ( (subscript_expression "param_1[0xe]" identifier [ number_literal ]) ))))) ;) (if_statement "if (param_1 != (int *)0x0) {\n      (*(code *)PTR_free_000333fc)();\n      goto LAB_0001c0f8;\n    }" if (parenthesized_expression "(param_1 != (int *)0x0)" ( (binary_expression "param_1 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      (*(code *)PTR_free_000333fc)();\n      goto LAB_0001c0f8;\n    }" { (expression_statement "(*(code *)PTR_free_000333fc)();" (call_expression "(*(code *)PTR_free_000333fc)()" (parenthesized_expression "(*(code *)PTR_free_000333fc)" ( (pointer_expression "*(code *)PTR_free_000333fc" * (cast_expression "(code *)PTR_free_000333fc" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (goto_statement "goto LAB_0001c0f8;" goto statement_identifier ;) })) (expression_statement "pcVar21 = (code *)PTR_abort_000332e8;" (assignment_expression "pcVar21 = (code *)PTR_abort_000332e8" identifier = (cast_expression "(code *)PTR_abort_000332e8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "(*(code *)PTR_abort_000332e8)();" (call_expression "(*(code *)PTR_abort_000332e8)()" (parenthesized_expression "(*(code *)PTR_abort_000332e8)" ( (pointer_expression "*(code *)PTR_abort_000332e8" * (cast_expression "(code *)PTR_abort_000332e8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (labeled_statement "LAB_0001c120:\n    (*pcVar21)();" statement_identifier : (expression_statement "(*pcVar21)();" (call_expression "(*pcVar21)()" (parenthesized_expression "(*pcVar21)" ( (pointer_expression "*pcVar21" * identifier) )) (argument_list "()" ( ))) ;)) }))) (expression_statement "puVar22 = PTR___stack_chk_fail_000333dc;" (assignment_expression "puVar22 = PTR___stack_chk_fail_000333dc" identifier = identifier) ;) (expression_statement "(*(code *)PTR___stack_chk_fail_000333dc)();" (call_expression "(*(code *)PTR___stack_chk_fail_000333dc)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_000333dc)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_000333dc" * (cast_expression "(code *)PTR___stack_chk_fail_000333dc" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "iVar18 = *param_1;" (assignment_expression "iVar18 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "iVar5 = *(int *)(iVar18 + 0xc);" (assignment_expression "iVar5 = *(int *)(iVar18 + 0xc)" identifier = (pointer_expression "*(int *)(iVar18 + 0xc)" * (cast_expression "(int *)(iVar18 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar18 + 0xc)" ( (binary_expression "iVar18 + 0xc" identifier + number_literal) ))))) ;) (if_statement "if (iVar5 != 0) {\n    iStack_7c = (**(code **)(puVar22 + 0x172d0))();\n    if (iStack_7c < 0) {\n      (**(code **)(puVar22 + 0x17194))(*(undefined4 *)(iVar18 + 0xc));\n      *(undefined4 *)(iVar18 + 0xc) = 0;\n      if (param_2 != (undefined4 *)0x3) {\n        return 0;\n      }\n      *(undefined2 *)(iVar18 + 0x3c) = 4;\n      puVar10 = (undefined4 *)(**(code **)(puVar22 + 0x17220))();\n      *(undefined4 *)(iVar18 + 0x20) = *puVar10;\n      return 0;\n    }\n    if (param_1[0xb] == 0) {\n      uStack_94 = 100000;\n      bVar2 = true;\n    }\n    else {\n      uStack_94 = 0xffffffff;\n      bVar2 = true;\n    }\n    goto LAB_0001c1b8;\n  }" if (parenthesized_expression "(iVar5 != 0)" ( (binary_expression "iVar5 != 0" identifier != number_literal) )) (compound_statement "{\n    iStack_7c = (**(code **)(puVar22 + 0x172d0))();\n    if (iStack_7c < 0) {\n      (**(code **)(puVar22 + 0x17194))(*(undefined4 *)(iVar18 + 0xc));\n      *(undefined4 *)(iVar18 + 0xc) = 0;\n      if (param_2 != (undefined4 *)0x3) {\n        return 0;\n      }\n      *(undefined2 *)(iVar18 + 0x3c) = 4;\n      puVar10 = (undefined4 *)(**(code **)(puVar22 + 0x17220))();\n      *(undefined4 *)(iVar18 + 0x20) = *puVar10;\n      return 0;\n    }\n    if (param_1[0xb] == 0) {\n      uStack_94 = 100000;\n      bVar2 = true;\n    }\n    else {\n      uStack_94 = 0xffffffff;\n      bVar2 = true;\n    }\n    goto LAB_0001c1b8;\n  }" { (expression_statement "iStack_7c = (**(code **)(puVar22 + 0x172d0))();" (assignment_expression "iStack_7c = (**(code **)(puVar22 + 0x172d0))()" identifier = (call_expression "(**(code **)(puVar22 + 0x172d0))()" (parenthesized_expression "(**(code **)(puVar22 + 0x172d0))" ( (pointer_expression "**(code **)(puVar22 + 0x172d0)" * (pointer_expression "*(code **)(puVar22 + 0x172d0)" * (cast_expression "(code **)(puVar22 + 0x172d0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar22 + 0x172d0)" ( (binary_expression "puVar22 + 0x172d0" identifier + number_literal) ))))) )) (argument_list "()" ( )))) ;) (if_statement "if (iStack_7c < 0) {\n      (**(code **)(puVar22 + 0x17194))(*(undefined4 *)(iVar18 + 0xc));\n      *(undefined4 *)(iVar18 + 0xc) = 0;\n      if (param_2 != (undefined4 *)0x3) {\n        return 0;\n      }\n      *(undefined2 *)(iVar18 + 0x3c) = 4;\n      puVar10 = (undefined4 *)(**(code **)(puVar22 + 0x17220))();\n      *(undefined4 *)(iVar18 + 0x20) = *puVar10;\n      return 0;\n    }" if (parenthesized_expression "(iStack_7c < 0)" ( (binary_expression "iStack_7c < 0" identifier < number_literal) )) (compound_statement "{\n      (**(code **)(puVar22 + 0x17194))(*(undefined4 *)(iVar18 + 0xc));\n      *(undefined4 *)(iVar18 + 0xc) = 0;\n      if (param_2 != (undefined4 *)0x3) {\n        return 0;\n      }\n      *(undefined2 *)(iVar18 + 0x3c) = 4;\n      puVar10 = (undefined4 *)(**(code **)(puVar22 + 0x17220))();\n      *(undefined4 *)(iVar18 + 0x20) = *puVar10;\n      return 0;\n    }" { (expression_statement "(**(code **)(puVar22 + 0x17194))(*(undefined4 *)(iVar18 + 0xc));" (call_expression "(**(code **)(puVar22 + 0x17194))(*(undefined4 *)(iVar18 + 0xc))" (parenthesized_expression "(**(code **)(puVar22 + 0x17194))" ( (pointer_expression "**(code **)(puVar22 + 0x17194)" * (pointer_expression "*(code **)(puVar22 + 0x17194)" * (cast_expression "(code **)(puVar22 + 0x17194)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar22 + 0x17194)" ( (binary_expression "puVar22 + 0x17194" identifier + number_literal) ))))) )) (argument_list "(*(undefined4 *)(iVar18 + 0xc))" ( (pointer_expression "*(undefined4 *)(iVar18 + 0xc)" * (cast_expression "(undefined4 *)(iVar18 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar18 + 0xc)" ( (binary_expression "iVar18 + 0xc" identifier + number_literal) )))) ))) ;) (expression_statement "*(undefined4 *)(iVar18 + 0xc) = 0;" (assignment_expression "*(undefined4 *)(iVar18 + 0xc) = 0" (pointer_expression "*(undefined4 *)(iVar18 + 0xc)" * (cast_expression "(undefined4 *)(iVar18 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar18 + 0xc)" ( (binary_expression "iVar18 + 0xc" identifier + number_literal) )))) = number_literal) ;) (if_statement "if (param_2 != (undefined4 *)0x3) {\n        return 0;\n      }" if (parenthesized_expression "(param_2 != (undefined4 *)0x3)" ( (binary_expression "param_2 != (undefined4 *)0x3" identifier != (cast_expression "(undefined4 *)0x3" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        return 0;\n      }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "*(undefined2 *)(iVar18 + 0x3c) = 4;" (assignment_expression "*(undefined2 *)(iVar18 + 0x3c) = 4" (pointer_expression "*(undefined2 *)(iVar18 + 0x3c)" * (cast_expression "(undefined2 *)(iVar18 + 0x3c)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar18 + 0x3c)" ( (binary_expression "iVar18 + 0x3c" identifier + number_literal) )))) = number_literal) ;) (expression_statement "puVar10 = (undefined4 *)(**(code **)(puVar22 + 0x17220))();" (assignment_expression "puVar10 = (undefined4 *)(**(code **)(puVar22 + 0x17220))()" identifier = (cast_expression "(undefined4 *)(**(code **)(puVar22 + 0x17220))()" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(puVar22 + 0x17220))()" (parenthesized_expression "(**(code **)(puVar22 + 0x17220))" ( (pointer_expression "**(code **)(puVar22 + 0x17220)" * (pointer_expression "*(code **)(puVar22 + 0x17220)" * (cast_expression "(code **)(puVar22 + 0x17220)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar22 + 0x17220)" ( (binary_expression "puVar22 + 0x17220" identifier + number_literal) ))))) )) (argument_list "()" ( ))))) ;) (expression_statement "*(undefined4 *)(iVar18 + 0x20) = *puVar10;" (assignment_expression "*(undefined4 *)(iVar18 + 0x20) = *puVar10" (pointer_expression "*(undefined4 *)(iVar18 + 0x20)" * (cast_expression "(undefined4 *)(iVar18 + 0x20)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar18 + 0x20)" ( (binary_expression "iVar18 + 0x20" identifier + number_literal) )))) = (pointer_expression "*puVar10" * identifier)) ;) (return_statement "return 0;" return number_literal ;) })) (if_statement "if (param_1[0xb] == 0) {\n      uStack_94 = 100000;\n      bVar2 = true;\n    }\n    else {\n      uStack_94 = 0xffffffff;\n      bVar2 = true;\n    }" if (parenthesized_expression "(param_1[0xb] == 0)" ( (binary_expression "param_1[0xb] == 0" (subscript_expression "param_1[0xb]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n      uStack_94 = 100000;\n      bVar2 = true;\n    }" { (expression_statement "uStack_94 = 100000;" (assignment_expression "uStack_94 = 100000" identifier = number_literal) ;) (expression_statement "bVar2 = true;" (assignment_expression "bVar2 = true" identifier = true) ;) }) (else_clause "else {\n      uStack_94 = 0xffffffff;\n      bVar2 = true;\n    }" else (compound_statement "{\n      uStack_94 = 0xffffffff;\n      bVar2 = true;\n    }" { (expression_statement "uStack_94 = 0xffffffff;" (assignment_expression "uStack_94 = 0xffffffff" identifier = number_literal) ;) (expression_statement "bVar2 = true;" (assignment_expression "bVar2 = true" identifier = true) ;) }))) (goto_statement "goto LAB_0001c1b8;" goto statement_identifier ;) })) (expression_statement "uVar19 = param_1[0xc];" (assignment_expression "uVar19 = param_1[0xc]" identifier = (subscript_expression "param_1[0xc]" identifier [ number_literal ])) ;) (if_statement "if ((uVar19 & 0x204) == 0x200) {\n    iVar17 = param_1[8];\n  }\n  else {\n    iVar17 = -100;\n  }" if (parenthesized_expression "((uVar19 & 0x204) == 0x200)" ( (binary_expression "(uVar19 & 0x204) == 0x200" (parenthesized_expression "(uVar19 & 0x204)" ( (binary_expression "uVar19 & 0x204" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n    iVar17 = param_1[8];\n  }" { (expression_statement "iVar17 = param_1[8];" (assignment_expression "iVar17 = param_1[8]" identifier = (subscript_expression "param_1[8]" identifier [ number_literal ])) ;) }) (else_clause "else {\n    iVar17 = -100;\n  }" else (compound_statement "{\n    iVar17 = -100;\n  }" { (expression_statement "iVar17 = -100;" (assignment_expression "iVar17 = -100" identifier = number_literal) ;) }))) (expression_statement "uVar20 = uVar19 & 0x10;" (assignment_expression "uVar20 = uVar19 & 0x10" identifier = (binary_expression "uVar19 & 0x10" identifier & number_literal)) ;) (if_statement "if (((uVar20 != 0) && (uVar20 = 0x20000, (uVar19 & 1) != 0)) &&\n     (uVar20 = *(uint *)(iVar18 + 0x30), uVar20 != 0)) {\n    uVar20 = 0x20000;\n  }" if (parenthesized_expression "(((uVar20 != 0) && (uVar20 = 0x20000, (uVar19 & 1) != 0)) &&\n     (uVar20 = *(uint *)(iVar18 + 0x30), uVar20 != 0))" ( (binary_expression "((uVar20 != 0) && (uVar20 = 0x20000, (uVar19 & 1) != 0)) &&\n     (uVar20 = *(uint *)(iVar18 + 0x30), uVar20 != 0)" (parenthesized_expression "((uVar20 != 0) && (uVar20 = 0x20000, (uVar19 & 1) != 0))" ( (binary_expression "(uVar20 != 0) && (uVar20 = 0x20000, (uVar19 & 1) != 0)" (parenthesized_expression "(uVar20 != 0)" ( (binary_expression "uVar20 != 0" identifier != number_literal) )) && (parenthesized_expression "(uVar20 = 0x20000, (uVar19 & 1) != 0)" ( (comma_expression "uVar20 = 0x20000, (uVar19 & 1) != 0" (assignment_expression "uVar20 = 0x20000" identifier = number_literal) , (binary_expression "(uVar19 & 1) != 0" (parenthesized_expression "(uVar19 & 1)" ( (binary_expression "uVar19 & 1" identifier & number_literal) )) != number_literal)) ))) )) && (parenthesized_expression "(uVar20 = *(uint *)(iVar18 + 0x30), uVar20 != 0)" ( (comma_expression "uVar20 = *(uint *)(iVar18 + 0x30), uVar20 != 0" (assignment_expression "uVar20 = *(uint *)(iVar18 + 0x30)" identifier = (pointer_expression "*(uint *)(iVar18 + 0x30)" * (cast_expression "(uint *)(iVar18 + 0x30)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar18 + 0x30)" ( (binary_expression "iVar18 + 0x30" identifier + number_literal) ))))) , (binary_expression "uVar20 != 0" identifier != number_literal)) ))) )) (compound_statement "{\n    uVar20 = 0x20000;\n  }" { (expression_statement "uVar20 = 0x20000;" (assignment_expression "uVar20 = 0x20000" identifier = number_literal) ;) })) (expression_statement "iStack_7c = openat_safer(iVar17,*(undefined4 *)(iVar18 + 0x18),\n                           (uVar19 & 0x800) << 7 | uVar20 | 0x90880);" (assignment_expression "iStack_7c = openat_safer(iVar17,*(undefined4 *)(iVar18 + 0x18),\n                           (uVar19 & 0x800) << 7 | uVar20 | 0x90880)" identifier = (call_expression "openat_safer(iVar17,*(undefined4 *)(iVar18 + 0x18),\n                           (uVar19 & 0x800) << 7 | uVar20 | 0x90880)" identifier (argument_list "(iVar17,*(undefined4 *)(iVar18 + 0x18),\n                           (uVar19 & 0x800) << 7 | uVar20 | 0x90880)" ( identifier , (pointer_expression "*(undefined4 *)(iVar18 + 0x18)" * (cast_expression "(undefined4 *)(iVar18 + 0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar18 + 0x18)" ( (binary_expression "iVar18 + 0x18" identifier + number_literal) )))) , (binary_expression "(uVar19 & 0x800) << 7 | uVar20 | 0x90880" (binary_expression "(uVar19 & 0x800) << 7 | uVar20" (binary_expression "(uVar19 & 0x800) << 7" (parenthesized_expression "(uVar19 & 0x800)" ( (binary_expression "uVar19 & 0x800" identifier & number_literal) )) << number_literal) | identifier) | number_literal) )))) ;) (if_statement "if (iStack_7c < 0) {\nLAB_0001c3e8:\n    *(undefined4 *)(iVar18 + 0xc) = 0;\n    if (param_2 == (undefined4 *)0x3) {\n      *(undefined2 *)(iVar18 + 0x3c) = 4;\n      puVar10 = (undefined4 *)(**(code **)(puVar22 + 0x17220))();\n      *(undefined4 *)(iVar18 + 0x20) = *puVar10;\n    }\n    return 0;\n  }" if (parenthesized_expression "(iStack_7c < 0)" ( (binary_expression "iStack_7c < 0" identifier < number_literal) )) (compound_statement "{\nLAB_0001c3e8:\n    *(undefined4 *)(iVar18 + 0xc) = 0;\n    if (param_2 == (undefined4 *)0x3) {\n      *(undefined2 *)(iVar18 + 0x3c) = 4;\n      puVar10 = (undefined4 *)(**(code **)(puVar22 + 0x17220))();\n      *(undefined4 *)(iVar18 + 0x20) = *puVar10;\n    }\n    return 0;\n  }" { (labeled_statement "LAB_0001c3e8:\n    *(undefined4 *)(iVar18 + 0xc) = 0;" statement_identifier : (expression_statement "*(undefined4 *)(iVar18 + 0xc) = 0;" (assignment_expression "*(undefined4 *)(iVar18 + 0xc) = 0" (pointer_expression "*(undefined4 *)(iVar18 + 0xc)" * (cast_expression "(undefined4 *)(iVar18 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar18 + 0xc)" ( (binary_expression "iVar18 + 0xc" identifier + number_literal) )))) = number_literal) ;)) (if_statement "if (param_2 == (undefined4 *)0x3) {\n      *(undefined2 *)(iVar18 + 0x3c) = 4;\n      puVar10 = (undefined4 *)(**(code **)(puVar22 + 0x17220))();\n      *(undefined4 *)(iVar18 + 0x20) = *puVar10;\n    }" if (parenthesized_expression "(param_2 == (undefined4 *)0x3)" ( (binary_expression "param_2 == (undefined4 *)0x3" identifier == (cast_expression "(undefined4 *)0x3" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      *(undefined2 *)(iVar18 + 0x3c) = 4;\n      puVar10 = (undefined4 *)(**(code **)(puVar22 + 0x17220))();\n      *(undefined4 *)(iVar18 + 0x20) = *puVar10;\n    }" { (expression_statement "*(undefined2 *)(iVar18 + 0x3c) = 4;" (assignment_expression "*(undefined2 *)(iVar18 + 0x3c) = 4" (pointer_expression "*(undefined2 *)(iVar18 + 0x3c)" * (cast_expression "(undefined2 *)(iVar18 + 0x3c)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar18 + 0x3c)" ( (binary_expression "iVar18 + 0x3c" identifier + number_literal) )))) = number_literal) ;) (expression_statement "puVar10 = (undefined4 *)(**(code **)(puVar22 + 0x17220))();" (assignment_expression "puVar10 = (undefined4 *)(**(code **)(puVar22 + 0x17220))()" identifier = (cast_expression "(undefined4 *)(**(code **)(puVar22 + 0x17220))()" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(puVar22 + 0x17220))()" (parenthesized_expression "(**(code **)(puVar22 + 0x17220))" ( (pointer_expression "**(code **)(puVar22 + 0x17220)" * (pointer_expression "*(code **)(puVar22 + 0x17220)" * (cast_expression "(code **)(puVar22 + 0x17220)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar22 + 0x17220)" ( (binary_expression "puVar22 + 0x17220" identifier + number_literal) ))))) )) (argument_list "()" ( ))))) ;) (expression_statement "*(undefined4 *)(iVar18 + 0x20) = *puVar10;" (assignment_expression "*(undefined4 *)(iVar18 + 0x20) = *puVar10" (pointer_expression "*(undefined4 *)(iVar18 + 0x20)" * (cast_expression "(undefined4 *)(iVar18 + 0x20)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar18 + 0x20)" ( (binary_expression "iVar18 + 0x20" identifier + number_literal) )))) = (pointer_expression "*puVar10" * identifier)) ;) })) (return_statement "return 0;" return number_literal ;) })) (expression_statement "iVar17 = (**(code **)(puVar22 + 0x171f0))(iStack_7c);" (assignment_expression "iVar17 = (**(code **)(puVar22 + 0x171f0))(iStack_7c)" identifier = (call_expression "(**(code **)(puVar22 + 0x171f0))(iStack_7c)" (parenthesized_expression "(**(code **)(puVar22 + 0x171f0))" ( (pointer_expression "**(code **)(puVar22 + 0x171f0)" * (pointer_expression "*(code **)(puVar22 + 0x171f0)" * (cast_expression "(code **)(puVar22 + 0x171f0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar22 + 0x171f0)" ( (binary_expression "puVar22 + 0x171f0" identifier + number_literal) ))))) )) (argument_list "(iStack_7c)" ( identifier )))) ;) (if_statement "if (iVar17 == 0) {\n    puVar10 = (undefined4 *)(**(code **)(puVar22 + 0x17220))();\n    uVar13 = *puVar10;\n    (**(code **)(puVar22 + 0x17198))(iStack_7c);\n    *puVar10 = uVar13;\n    goto LAB_0001c3e8;\n  }" if (parenthesized_expression "(iVar17 == 0)" ( (binary_expression "iVar17 == 0" identifier == number_literal) )) (compound_statement "{\n    puVar10 = (undefined4 *)(**(code **)(puVar22 + 0x17220))();\n    uVar13 = *puVar10;\n    (**(code **)(puVar22 + 0x17198))(iStack_7c);\n    *puVar10 = uVar13;\n    goto LAB_0001c3e8;\n  }" { (expression_statement "puVar10 = (undefined4 *)(**(code **)(puVar22 + 0x17220))();" (assignment_expression "puVar10 = (undefined4 *)(**(code **)(puVar22 + 0x17220))()" identifier = (cast_expression "(undefined4 *)(**(code **)(puVar22 + 0x17220))()" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(puVar22 + 0x17220))()" (parenthesized_expression "(**(code **)(puVar22 + 0x17220))" ( (pointer_expression "**(code **)(puVar22 + 0x17220)" * (pointer_expression "*(code **)(puVar22 + 0x17220)" * (cast_expression "(code **)(puVar22 + 0x17220)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar22 + 0x17220)" ( (binary_expression "puVar22 + 0x17220" identifier + number_literal) ))))) )) (argument_list "()" ( ))))) ;) (expression_statement "uVar13 = *puVar10;" (assignment_expression "uVar13 = *puVar10" identifier = (pointer_expression "*puVar10" * identifier)) ;) (expression_statement "(**(code **)(puVar22 + 0x17198))(iStack_7c);" (call_expression "(**(code **)(puVar22 + 0x17198))(iStack_7c)" (parenthesized_expression "(**(code **)(puVar22 + 0x17198))" ( (pointer_expression "**(code **)(puVar22 + 0x17198)" * (pointer_expression "*(code **)(puVar22 + 0x17198)" * (cast_expression "(code **)(puVar22 + 0x17198)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar22 + 0x17198)" ( (binary_expression "puVar22 + 0x17198" identifier + number_literal) ))))) )) (argument_list "(iStack_7c)" ( identifier ))) ;) (expression_statement "*puVar10 = uVar13;" (assignment_expression "*puVar10 = uVar13" (pointer_expression "*puVar10" * identifier) = identifier) ;) (goto_statement "goto LAB_0001c3e8;" goto statement_identifier ;) })) (expression_statement "*(int *)(iVar18 + 0xc) = iVar17;" (assignment_expression "*(int *)(iVar18 + 0xc) = iVar17" (pointer_expression "*(int *)(iVar18 + 0xc)" * (cast_expression "(int *)(iVar18 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar18 + 0xc)" ( (binary_expression "iVar18 + 0xc" identifier + number_literal) )))) = identifier) ;) (if_statement "if (*(short *)(iVar18 + 0x3c) == 0xb) {\n    uVar15 = FUN_0001b18c(param_1,iVar18,0);\n    *(undefined2 *)(iVar18 + 0x3c) = uVar15;\n  }\n  else if ((param_1[0xc] & 0x100U) != 0) {\n    FUN_0001bfec(param_1,iVar18);\n    FUN_0001b18c(param_1,iVar18,0);\n    iVar17 = FUN_0001bad0(param_1,iVar18);\n    if (iVar17 == 0) {\n      puVar10 = (undefined4 *)(**(code **)(puVar22 + 0x17220))();\n      *puVar10 = 0xc;\n      return 0;\n    }\n  }" if (parenthesized_expression "(*(short *)(iVar18 + 0x3c) == 0xb)" ( (binary_expression "*(short *)(iVar18 + 0x3c) == 0xb" (pointer_expression "*(short *)(iVar18 + 0x3c)" * (cast_expression "(short *)(iVar18 + 0x3c)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar18 + 0x3c)" ( (binary_expression "iVar18 + 0x3c" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n    uVar15 = FUN_0001b18c(param_1,iVar18,0);\n    *(undefined2 *)(iVar18 + 0x3c) = uVar15;\n  }" { (expression_statement "uVar15 = FUN_0001b18c(param_1,iVar18,0);" (assignment_expression "uVar15 = FUN_0001b18c(param_1,iVar18,0)" identifier = (call_expression "FUN_0001b18c(param_1,iVar18,0)" identifier (argument_list "(param_1,iVar18,0)" ( identifier , identifier , number_literal )))) ;) (expression_statement "*(undefined2 *)(iVar18 + 0x3c) = uVar15;" (assignment_expression "*(undefined2 *)(iVar18 + 0x3c) = uVar15" (pointer_expression "*(undefined2 *)(iVar18 + 0x3c)" * (cast_expression "(undefined2 *)(iVar18 + 0x3c)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar18 + 0x3c)" ( (binary_expression "iVar18 + 0x3c" identifier + number_literal) )))) = identifier) ;) }) (else_clause "else if ((param_1[0xc] & 0x100U) != 0) {\n    FUN_0001bfec(param_1,iVar18);\n    FUN_0001b18c(param_1,iVar18,0);\n    iVar17 = FUN_0001bad0(param_1,iVar18);\n    if (iVar17 == 0) {\n      puVar10 = (undefined4 *)(**(code **)(puVar22 + 0x17220))();\n      *puVar10 = 0xc;\n      return 0;\n    }\n  }" else (if_statement "if ((param_1[0xc] & 0x100U) != 0) {\n    FUN_0001bfec(param_1,iVar18);\n    FUN_0001b18c(param_1,iVar18,0);\n    iVar17 = FUN_0001bad0(param_1,iVar18);\n    if (iVar17 == 0) {\n      puVar10 = (undefined4 *)(**(code **)(puVar22 + 0x17220))();\n      *puVar10 = 0xc;\n      return 0;\n    }\n  }" if (parenthesized_expression "((param_1[0xc] & 0x100U) != 0)" ( (binary_expression "(param_1[0xc] & 0x100U) != 0" (parenthesized_expression "(param_1[0xc] & 0x100U)" ( (binary_expression "param_1[0xc] & 0x100U" (subscript_expression "param_1[0xc]" identifier [ number_literal ]) & number_literal) )) != number_literal) )) (compound_statement "{\n    FUN_0001bfec(param_1,iVar18);\n    FUN_0001b18c(param_1,iVar18,0);\n    iVar17 = FUN_0001bad0(param_1,iVar18);\n    if (iVar17 == 0) {\n      puVar10 = (undefined4 *)(**(code **)(puVar22 + 0x17220))();\n      *puVar10 = 0xc;\n      return 0;\n    }\n  }" { (expression_statement "FUN_0001bfec(param_1,iVar18);" (call_expression "FUN_0001bfec(param_1,iVar18)" identifier (argument_list "(param_1,iVar18)" ( identifier , identifier ))) ;) (expression_statement "FUN_0001b18c(param_1,iVar18,0);" (call_expression "FUN_0001b18c(param_1,iVar18,0)" identifier (argument_list "(param_1,iVar18,0)" ( identifier , identifier , number_literal ))) ;) (expression_statement "iVar17 = FUN_0001bad0(param_1,iVar18);" (assignment_expression "iVar17 = FUN_0001bad0(param_1,iVar18)" identifier = (call_expression "FUN_0001bad0(param_1,iVar18)" identifier (argument_list "(param_1,iVar18)" ( identifier , identifier )))) ;) (if_statement "if (iVar17 == 0) {\n      puVar10 = (undefined4 *)(**(code **)(puVar22 + 0x17220))();\n      *puVar10 = 0xc;\n      return 0;\n    }" if (parenthesized_expression "(iVar17 == 0)" ( (binary_expression "iVar17 == 0" identifier == number_literal) )) (compound_statement "{\n      puVar10 = (undefined4 *)(**(code **)(puVar22 + 0x17220))();\n      *puVar10 = 0xc;\n      return 0;\n    }" { (expression_statement "puVar10 = (undefined4 *)(**(code **)(puVar22 + 0x17220))();" (assignment_expression "puVar10 = (undefined4 *)(**(code **)(puVar22 + 0x17220))()" identifier = (cast_expression "(undefined4 *)(**(code **)(puVar22 + 0x17220))()" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(puVar22 + 0x17220))()" (parenthesized_expression "(**(code **)(puVar22 + 0x17220))" ( (pointer_expression "**(code **)(puVar22 + 0x17220)" * (pointer_expression "*(code **)(puVar22 + 0x17220)" * (cast_expression "(code **)(puVar22 + 0x17220)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar22 + 0x17220)" ( (binary_expression "puVar22 + 0x17220" identifier + number_literal) ))))) )) (argument_list "()" ( ))))) ;) (expression_statement "*puVar10 = 0xc;" (assignment_expression "*puVar10 = 0xc" (pointer_expression "*puVar10" * identifier) = number_literal) ;) (return_statement "return 0;" return number_literal ;) })) })))) (if_statement "if (param_1[0xb] == 0) {\n    uStack_94 = 100000;\n  }\n  else {\n    uStack_94 = 0xffffffff;\n  }" if (parenthesized_expression "(param_1[0xb] == 0)" ( (binary_expression "param_1[0xb] == 0" (subscript_expression "param_1[0xb]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n    uStack_94 = 100000;\n  }" { (expression_statement "uStack_94 = 100000;" (assignment_expression "uStack_94 = 100000" identifier = number_literal) ;) }) (else_clause "else {\n    uStack_94 = 0xffffffff;\n  }" else (compound_statement "{\n    uStack_94 = 0xffffffff;\n  }" { (expression_statement "uStack_94 = 0xffffffff;" (assignment_expression "uStack_94 = 0xffffffff" identifier = number_literal) ;) }))) (if_statement "if (param_2 == (undefined4 *)0x2) {\n    bVar2 = false;\n  }\n  else {\n    if ((((param_1[0xc] & 0x38U) == 0x18) && (*(int *)(iVar18 + 100) == 2)) &&\n       (iVar17 = FUN_0001ba08(iVar18,iStack_7c), iVar17 != 0)) {\n      bVar2 = false;\n      if (param_2 != (undefined4 *)0x3) {\n        bVar2 = false;\n        goto LAB_0001c1b8;\n      }\n      uVar19 = param_1[0xc];\n    }\n    else {\n      bVar2 = true;\n      uVar19 = param_1[0xc];\n    }\n    if ((uVar19 & 0x200) != 0) {\n      iStack_7c = rpl_fcntl(iStack_7c,0x406,3);\n    }\n    if ((iStack_7c < 0) || (iVar17 = FUN_0001bd68(param_1,iVar18,iStack_7c,0), iVar17 != 0)) {\n      if ((bVar2) && (param_2 == (undefined4 *)0x3)) {\n        puVar10 = (undefined4 *)(**(code **)(puVar22 + 0x17220))();\n        *(undefined4 *)(iVar18 + 0x20) = *puVar10;\n      }\n      *(ushort *)(iVar18 + 0x3e) = *(ushort *)(iVar18 + 0x3e) | 1;\n      (**(code **)(puVar22 + 0x17194))(*(undefined4 *)(iVar18 + 0xc));\n      *(undefined4 *)(iVar18 + 0xc) = 0;\n      if (((param_1[0xc] & 0x200U) != 0) && (-1 < iStack_7c)) {\n        (**(code **)(puVar22 + 0x17198))(iStack_7c);\n        *(undefined4 *)(iVar18 + 0xc) = 0;\n      }\n      bVar2 = false;\n    }\n    else {\n      bVar2 = true;\n    }\n  }" if (parenthesized_expression "(param_2 == (undefined4 *)0x2)" ( (binary_expression "param_2 == (undefined4 *)0x2" identifier == (cast_expression "(undefined4 *)0x2" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    bVar2 = false;\n  }" { (expression_statement "bVar2 = false;" (assignment_expression "bVar2 = false" identifier = false) ;) }) (else_clause "else {\n    if ((((param_1[0xc] & 0x38U) == 0x18) && (*(int *)(iVar18 + 100) == 2)) &&\n       (iVar17 = FUN_0001ba08(iVar18,iStack_7c), iVar17 != 0)) {\n      bVar2 = false;\n      if (param_2 != (undefined4 *)0x3) {\n        bVar2 = false;\n        goto LAB_0001c1b8;\n      }\n      uVar19 = param_1[0xc];\n    }\n    else {\n      bVar2 = true;\n      uVar19 = param_1[0xc];\n    }\n    if ((uVar19 & 0x200) != 0) {\n      iStack_7c = rpl_fcntl(iStack_7c,0x406,3);\n    }\n    if ((iStack_7c < 0) || (iVar17 = FUN_0001bd68(param_1,iVar18,iStack_7c,0), iVar17 != 0)) {\n      if ((bVar2) && (param_2 == (undefined4 *)0x3)) {\n        puVar10 = (undefined4 *)(**(code **)(puVar22 + 0x17220))();\n        *(undefined4 *)(iVar18 + 0x20) = *puVar10;\n      }\n      *(ushort *)(iVar18 + 0x3e) = *(ushort *)(iVar18 + 0x3e) | 1;\n      (**(code **)(puVar22 + 0x17194))(*(undefined4 *)(iVar18 + 0xc));\n      *(undefined4 *)(iVar18 + 0xc) = 0;\n      if (((param_1[0xc] & 0x200U) != 0) && (-1 < iStack_7c)) {\n        (**(code **)(puVar22 + 0x17198))(iStack_7c);\n        *(undefined4 *)(iVar18 + 0xc) = 0;\n      }\n      bVar2 = false;\n    }\n    else {\n      bVar2 = true;\n    }\n  }" else (compound_statement "{\n    if ((((param_1[0xc] & 0x38U) == 0x18) && (*(int *)(iVar18 + 100) == 2)) &&\n       (iVar17 = FUN_0001ba08(iVar18,iStack_7c), iVar17 != 0)) {\n      bVar2 = false;\n      if (param_2 != (undefined4 *)0x3) {\n        bVar2 = false;\n        goto LAB_0001c1b8;\n      }\n      uVar19 = param_1[0xc];\n    }\n    else {\n      bVar2 = true;\n      uVar19 = param_1[0xc];\n    }\n    if ((uVar19 & 0x200) != 0) {\n      iStack_7c = rpl_fcntl(iStack_7c,0x406,3);\n    }\n    if ((iStack_7c < 0) || (iVar17 = FUN_0001bd68(param_1,iVar18,iStack_7c,0), iVar17 != 0)) {\n      if ((bVar2) && (param_2 == (undefined4 *)0x3)) {\n        puVar10 = (undefined4 *)(**(code **)(puVar22 + 0x17220))();\n        *(undefined4 *)(iVar18 + 0x20) = *puVar10;\n      }\n      *(ushort *)(iVar18 + 0x3e) = *(ushort *)(iVar18 + 0x3e) | 1;\n      (**(code **)(puVar22 + 0x17194))(*(undefined4 *)(iVar18 + 0xc));\n      *(undefined4 *)(iVar18 + 0xc) = 0;\n      if (((param_1[0xc] & 0x200U) != 0) && (-1 < iStack_7c)) {\n        (**(code **)(puVar22 + 0x17198))(iStack_7c);\n        *(undefined4 *)(iVar18 + 0xc) = 0;\n      }\n      bVar2 = false;\n    }\n    else {\n      bVar2 = true;\n    }\n  }" { (if_statement "if ((((param_1[0xc] & 0x38U) == 0x18) && (*(int *)(iVar18 + 100) == 2)) &&\n       (iVar17 = FUN_0001ba08(iVar18,iStack_7c), iVar17 != 0)) {\n      bVar2 = false;\n      if (param_2 != (undefined4 *)0x3) {\n        bVar2 = false;\n        goto LAB_0001c1b8;\n      }\n      uVar19 = param_1[0xc];\n    }\n    else {\n      bVar2 = true;\n      uVar19 = param_1[0xc];\n    }" if (parenthesized_expression "((((param_1[0xc] & 0x38U) == 0x18) && (*(int *)(iVar18 + 100) == 2)) &&\n       (iVar17 = FUN_0001ba08(iVar18,iStack_7c), iVar17 != 0))" ( (binary_expression "(((param_1[0xc] & 0x38U) == 0x18) && (*(int *)(iVar18 + 100) == 2)) &&\n       (iVar17 = FUN_0001ba08(iVar18,iStack_7c), iVar17 != 0)" (parenthesized_expression "(((param_1[0xc] & 0x38U) == 0x18) && (*(int *)(iVar18 + 100) == 2))" ( (binary_expression "((param_1[0xc] & 0x38U) == 0x18) && (*(int *)(iVar18 + 100) == 2)" (parenthesized_expression "((param_1[0xc] & 0x38U) == 0x18)" ( (binary_expression "(param_1[0xc] & 0x38U) == 0x18" (parenthesized_expression "(param_1[0xc] & 0x38U)" ( (binary_expression "param_1[0xc] & 0x38U" (subscript_expression "param_1[0xc]" identifier [ number_literal ]) & number_literal) )) == number_literal) )) && (parenthesized_expression "(*(int *)(iVar18 + 100) == 2)" ( (binary_expression "*(int *)(iVar18 + 100) == 2" (pointer_expression "*(int *)(iVar18 + 100)" * (cast_expression "(int *)(iVar18 + 100)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar18 + 100)" ( (binary_expression "iVar18 + 100" identifier + number_literal) )))) == number_literal) ))) )) && (parenthesized_expression "(iVar17 = FUN_0001ba08(iVar18,iStack_7c), iVar17 != 0)" ( (comma_expression "iVar17 = FUN_0001ba08(iVar18,iStack_7c), iVar17 != 0" (assignment_expression "iVar17 = FUN_0001ba08(iVar18,iStack_7c)" identifier = (call_expression "FUN_0001ba08(iVar18,iStack_7c)" identifier (argument_list "(iVar18,iStack_7c)" ( identifier , identifier )))) , (binary_expression "iVar17 != 0" identifier != number_literal)) ))) )) (compound_statement "{\n      bVar2 = false;\n      if (param_2 != (undefined4 *)0x3) {\n        bVar2 = false;\n        goto LAB_0001c1b8;\n      }\n      uVar19 = param_1[0xc];\n    }" { (expression_statement "bVar2 = false;" (assignment_expression "bVar2 = false" identifier = false) ;) (if_statement "if (param_2 != (undefined4 *)0x3) {\n        bVar2 = false;\n        goto LAB_0001c1b8;\n      }" if (parenthesized_expression "(param_2 != (undefined4 *)0x3)" ( (binary_expression "param_2 != (undefined4 *)0x3" identifier != (cast_expression "(undefined4 *)0x3" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        bVar2 = false;\n        goto LAB_0001c1b8;\n      }" { (expression_statement "bVar2 = false;" (assignment_expression "bVar2 = false" identifier = false) ;) (goto_statement "goto LAB_0001c1b8;" goto statement_identifier ;) })) (expression_statement "uVar19 = param_1[0xc];" (assignment_expression "uVar19 = param_1[0xc]" identifier = (subscript_expression "param_1[0xc]" identifier [ number_literal ])) ;) }) (else_clause "else {\n      bVar2 = true;\n      uVar19 = param_1[0xc];\n    }" else (compound_statement "{\n      bVar2 = true;\n      uVar19 = param_1[0xc];\n    }" { (expression_statement "bVar2 = true;" (assignment_expression "bVar2 = true" identifier = true) ;) (expression_statement "uVar19 = param_1[0xc];" (assignment_expression "uVar19 = param_1[0xc]" identifier = (subscript_expression "param_1[0xc]" identifier [ number_literal ])) ;) }))) (if_statement "if ((uVar19 & 0x200) != 0) {\n      iStack_7c = rpl_fcntl(iStack_7c,0x406,3);\n    }" if (parenthesized_expression "((uVar19 & 0x200) != 0)" ( (binary_expression "(uVar19 & 0x200) != 0" (parenthesized_expression "(uVar19 & 0x200)" ( (binary_expression "uVar19 & 0x200" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n      iStack_7c = rpl_fcntl(iStack_7c,0x406,3);\n    }" { (expression_statement "iStack_7c = rpl_fcntl(iStack_7c,0x406,3);" (assignment_expression "iStack_7c = rpl_fcntl(iStack_7c,0x406,3)" identifier = (call_expression "rpl_fcntl(iStack_7c,0x406,3)" identifier (argument_list "(iStack_7c,0x406,3)" ( identifier , number_literal , number_literal )))) ;) })) (if_statement "if ((iStack_7c < 0) || (iVar17 = FUN_0001bd68(param_1,iVar18,iStack_7c,0), iVar17 != 0)) {\n      if ((bVar2) && (param_2 == (undefined4 *)0x3)) {\n        puVar10 = (undefined4 *)(**(code **)(puVar22 + 0x17220))();\n        *(undefined4 *)(iVar18 + 0x20) = *puVar10;\n      }\n      *(ushort *)(iVar18 + 0x3e) = *(ushort *)(iVar18 + 0x3e) | 1;\n      (**(code **)(puVar22 + 0x17194))(*(undefined4 *)(iVar18 + 0xc));\n      *(undefined4 *)(iVar18 + 0xc) = 0;\n      if (((param_1[0xc] & 0x200U) != 0) && (-1 < iStack_7c)) {\n        (**(code **)(puVar22 + 0x17198))(iStack_7c);\n        *(undefined4 *)(iVar18 + 0xc) = 0;\n      }\n      bVar2 = false;\n    }\n    else {\n      bVar2 = true;\n    }" if (parenthesized_expression "((iStack_7c < 0) || (iVar17 = FUN_0001bd68(param_1,iVar18,iStack_7c,0), iVar17 != 0))" ( (binary_expression "(iStack_7c < 0) || (iVar17 = FUN_0001bd68(param_1,iVar18,iStack_7c,0), iVar17 != 0)" (parenthesized_expression "(iStack_7c < 0)" ( (binary_expression "iStack_7c < 0" identifier < number_literal) )) || (parenthesized_expression "(iVar17 = FUN_0001bd68(param_1,iVar18,iStack_7c,0), iVar17 != 0)" ( (comma_expression "iVar17 = FUN_0001bd68(param_1,iVar18,iStack_7c,0), iVar17 != 0" (assignment_expression "iVar17 = FUN_0001bd68(param_1,iVar18,iStack_7c,0)" identifier = (call_expression "FUN_0001bd68(param_1,iVar18,iStack_7c,0)" identifier (argument_list "(param_1,iVar18,iStack_7c,0)" ( identifier , identifier , identifier , number_literal )))) , (binary_expression "iVar17 != 0" identifier != number_literal)) ))) )) (compound_statement "{\n      if ((bVar2) && (param_2 == (undefined4 *)0x3)) {\n        puVar10 = (undefined4 *)(**(code **)(puVar22 + 0x17220))();\n        *(undefined4 *)(iVar18 + 0x20) = *puVar10;\n      }\n      *(ushort *)(iVar18 + 0x3e) = *(ushort *)(iVar18 + 0x3e) | 1;\n      (**(code **)(puVar22 + 0x17194))(*(undefined4 *)(iVar18 + 0xc));\n      *(undefined4 *)(iVar18 + 0xc) = 0;\n      if (((param_1[0xc] & 0x200U) != 0) && (-1 < iStack_7c)) {\n        (**(code **)(puVar22 + 0x17198))(iStack_7c);\n        *(undefined4 *)(iVar18 + 0xc) = 0;\n      }\n      bVar2 = false;\n    }" { (if_statement "if ((bVar2) && (param_2 == (undefined4 *)0x3)) {\n        puVar10 = (undefined4 *)(**(code **)(puVar22 + 0x17220))();\n        *(undefined4 *)(iVar18 + 0x20) = *puVar10;\n      }" if (parenthesized_expression "((bVar2) && (param_2 == (undefined4 *)0x3))" ( (binary_expression "(bVar2) && (param_2 == (undefined4 *)0x3)" (parenthesized_expression "(bVar2)" ( identifier )) && (parenthesized_expression "(param_2 == (undefined4 *)0x3)" ( (binary_expression "param_2 == (undefined4 *)0x3" identifier == (cast_expression "(undefined4 *)0x3" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) (compound_statement "{\n        puVar10 = (undefined4 *)(**(code **)(puVar22 + 0x17220))();\n        *(undefined4 *)(iVar18 + 0x20) = *puVar10;\n      }" { (expression_statement "puVar10 = (undefined4 *)(**(code **)(puVar22 + 0x17220))();" (assignment_expression "puVar10 = (undefined4 *)(**(code **)(puVar22 + 0x17220))()" identifier = (cast_expression "(undefined4 *)(**(code **)(puVar22 + 0x17220))()" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(puVar22 + 0x17220))()" (parenthesized_expression "(**(code **)(puVar22 + 0x17220))" ( (pointer_expression "**(code **)(puVar22 + 0x17220)" * (pointer_expression "*(code **)(puVar22 + 0x17220)" * (cast_expression "(code **)(puVar22 + 0x17220)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar22 + 0x17220)" ( (binary_expression "puVar22 + 0x17220" identifier + number_literal) ))))) )) (argument_list "()" ( ))))) ;) (expression_statement "*(undefined4 *)(iVar18 + 0x20) = *puVar10;" (assignment_expression "*(undefined4 *)(iVar18 + 0x20) = *puVar10" (pointer_expression "*(undefined4 *)(iVar18 + 0x20)" * (cast_expression "(undefined4 *)(iVar18 + 0x20)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar18 + 0x20)" ( (binary_expression "iVar18 + 0x20" identifier + number_literal) )))) = (pointer_expression "*puVar10" * identifier)) ;) })) (expression_statement "*(ushort *)(iVar18 + 0x3e) = *(ushort *)(iVar18 + 0x3e) | 1;" (assignment_expression "*(ushort *)(iVar18 + 0x3e) = *(ushort *)(iVar18 + 0x3e) | 1" (pointer_expression "*(ushort *)(iVar18 + 0x3e)" * (cast_expression "(ushort *)(iVar18 + 0x3e)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar18 + 0x3e)" ( (binary_expression "iVar18 + 0x3e" identifier + number_literal) )))) = (binary_expression "*(ushort *)(iVar18 + 0x3e) | 1" (pointer_expression "*(ushort *)(iVar18 + 0x3e)" * (cast_expression "(ushort *)(iVar18 + 0x3e)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar18 + 0x3e)" ( (binary_expression "iVar18 + 0x3e" identifier + number_literal) )))) | number_literal)) ;) (expression_statement "(**(code **)(puVar22 + 0x17194))(*(undefined4 *)(iVar18 + 0xc));" (call_expression "(**(code **)(puVar22 + 0x17194))(*(undefined4 *)(iVar18 + 0xc))" (parenthesized_expression "(**(code **)(puVar22 + 0x17194))" ( (pointer_expression "**(code **)(puVar22 + 0x17194)" * (pointer_expression "*(code **)(puVar22 + 0x17194)" * (cast_expression "(code **)(puVar22 + 0x17194)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar22 + 0x17194)" ( (binary_expression "puVar22 + 0x17194" identifier + number_literal) ))))) )) (argument_list "(*(undefined4 *)(iVar18 + 0xc))" ( (pointer_expression "*(undefined4 *)(iVar18 + 0xc)" * (cast_expression "(undefined4 *)(iVar18 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar18 + 0xc)" ( (binary_expression "iVar18 + 0xc" identifier + number_literal) )))) ))) ;) (expression_statement "*(undefined4 *)(iVar18 + 0xc) = 0;" (assignment_expression "*(undefined4 *)(iVar18 + 0xc) = 0" (pointer_expression "*(undefined4 *)(iVar18 + 0xc)" * (cast_expression "(undefined4 *)(iVar18 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar18 + 0xc)" ( (binary_expression "iVar18 + 0xc" identifier + number_literal) )))) = number_literal) ;) (if_statement "if (((param_1[0xc] & 0x200U) != 0) && (-1 < iStack_7c)) {\n        (**(code **)(puVar22 + 0x17198))(iStack_7c);\n        *(undefined4 *)(iVar18 + 0xc) = 0;\n      }" if (parenthesized_expression "(((param_1[0xc] & 0x200U) != 0) && (-1 < iStack_7c))" ( (binary_expression "((param_1[0xc] & 0x200U) != 0) && (-1 < iStack_7c)" (parenthesized_expression "((param_1[0xc] & 0x200U) != 0)" ( (binary_expression "(param_1[0xc] & 0x200U) != 0" (parenthesized_expression "(param_1[0xc] & 0x200U)" ( (binary_expression "param_1[0xc] & 0x200U" (subscript_expression "param_1[0xc]" identifier [ number_literal ]) & number_literal) )) != number_literal) )) && (parenthesized_expression "(-1 < iStack_7c)" ( (binary_expression "-1 < iStack_7c" number_literal < identifier) ))) )) (compound_statement "{\n        (**(code **)(puVar22 + 0x17198))(iStack_7c);\n        *(undefined4 *)(iVar18 + 0xc) = 0;\n      }" { (expression_statement "(**(code **)(puVar22 + 0x17198))(iStack_7c);" (call_expression "(**(code **)(puVar22 + 0x17198))(iStack_7c)" (parenthesized_expression "(**(code **)(puVar22 + 0x17198))" ( (pointer_expression "**(code **)(puVar22 + 0x17198)" * (pointer_expression "*(code **)(puVar22 + 0x17198)" * (cast_expression "(code **)(puVar22 + 0x17198)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar22 + 0x17198)" ( (binary_expression "puVar22 + 0x17198" identifier + number_literal) ))))) )) (argument_list "(iStack_7c)" ( identifier ))) ;) (expression_statement "*(undefined4 *)(iVar18 + 0xc) = 0;" (assignment_expression "*(undefined4 *)(iVar18 + 0xc) = 0" (pointer_expression "*(undefined4 *)(iVar18 + 0xc)" * (cast_expression "(undefined4 *)(iVar18 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar18 + 0xc)" ( (binary_expression "iVar18 + 0xc" identifier + number_literal) )))) = number_literal) ;) })) (expression_statement "bVar2 = false;" (assignment_expression "bVar2 = false" identifier = false) ;) }) (else_clause "else {\n      bVar2 = true;\n    }" else (compound_statement "{\n      bVar2 = true;\n    }" { (expression_statement "bVar2 = true;" (assignment_expression "bVar2 = true" identifier = true) ;) }))) }))) (labeled_statement "LAB_0001c1b8:\n  iVar17 = *(int *)(iVar18 + 0x28) + -1;" statement_identifier : (expression_statement "iVar17 = *(int *)(iVar18 + 0x28) + -1;" (assignment_expression "iVar17 = *(int *)(iVar18 + 0x28) + -1" identifier = (binary_expression "*(int *)(iVar18 + 0x28) + -1" (pointer_expression "*(int *)(iVar18 + 0x28)" * (cast_expression "(int *)(iVar18 + 0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar18 + 0x28)" ( (binary_expression "iVar18 + 0x28" identifier + number_literal) )))) + number_literal)) ;)) (if_statement "if (*(char *)(*(int *)(iVar18 + 0x1c) + iVar17) != '/') {\n    iVar17 = *(int *)(iVar18 + 0x28);\n  }" if (parenthesized_expression "(*(char *)(*(int *)(iVar18 + 0x1c) + iVar17) != '/')" ( (binary_expression "*(char *)(*(int *)(iVar18 + 0x1c) + iVar17) != '/'" (pointer_expression "*(char *)(*(int *)(iVar18 + 0x1c) + iVar17)" * (cast_expression "(char *)(*(int *)(iVar18 + 0x1c) + iVar17)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar18 + 0x1c) + iVar17)" ( (binary_expression "*(int *)(iVar18 + 0x1c) + iVar17" (pointer_expression "*(int *)(iVar18 + 0x1c)" * (cast_expression "(int *)(iVar18 + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar18 + 0x1c)" ( (binary_expression "iVar18 + 0x1c" identifier + number_literal) )))) + identifier) )))) != (char_literal "'/'" ' character ')) )) (compound_statement "{\n    iVar17 = *(int *)(iVar18 + 0x28);\n  }" { (expression_statement "iVar17 = *(int *)(iVar18 + 0x28);" (assignment_expression "iVar17 = *(int *)(iVar18 + 0x28)" identifier = (pointer_expression "*(int *)(iVar18 + 0x28)" * (cast_expression "(int *)(iVar18 + 0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar18 + 0x28)" ( (binary_expression "iVar18 + 0x28" identifier + number_literal) ))))) ;) })) (if_statement "if ((param_1[0xc] & 4U) == 0) {\n    puStack_90 = (undefined1 *)0x0;\n  }\n  else {\n    puStack_90 = (undefined1 *)(param_1[6] + iVar17) + 1;\n    *(undefined1 *)(param_1[6] + iVar17) = 0x2f;\n  }" if (parenthesized_expression "((param_1[0xc] & 4U) == 0)" ( (binary_expression "(param_1[0xc] & 4U) == 0" (parenthesized_expression "(param_1[0xc] & 4U)" ( (binary_expression "param_1[0xc] & 4U" (subscript_expression "param_1[0xc]" identifier [ number_literal ]) & number_literal) )) == number_literal) )) (compound_statement "{\n    puStack_90 = (undefined1 *)0x0;\n  }" { (expression_statement "puStack_90 = (undefined1 *)0x0;" (assignment_expression "puStack_90 = (undefined1 *)0x0" identifier = (cast_expression "(undefined1 *)0x0" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }) (else_clause "else {\n    puStack_90 = (undefined1 *)(param_1[6] + iVar17) + 1;\n    *(undefined1 *)(param_1[6] + iVar17) = 0x2f;\n  }" else (compound_statement "{\n    puStack_90 = (undefined1 *)(param_1[6] + iVar17) + 1;\n    *(undefined1 *)(param_1[6] + iVar17) = 0x2f;\n  }" { (expression_statement "puStack_90 = (undefined1 *)(param_1[6] + iVar17) + 1;" (assignment_expression "puStack_90 = (undefined1 *)(param_1[6] + iVar17) + 1" identifier = (binary_expression "(undefined1 *)(param_1[6] + iVar17) + 1" (cast_expression "(undefined1 *)(param_1[6] + iVar17)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1[6] + iVar17)" ( (binary_expression "param_1[6] + iVar17" (subscript_expression "param_1[6]" identifier [ number_literal ]) + identifier) ))) + number_literal)) ;) (expression_statement "*(undefined1 *)(param_1[6] + iVar17) = 0x2f;" (assignment_expression "*(undefined1 *)(param_1[6] + iVar17) = 0x2f" (pointer_expression "*(undefined1 *)(param_1[6] + iVar17)" * (cast_expression "(undefined1 *)(param_1[6] + iVar17)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1[6] + iVar17)" ( (binary_expression "param_1[6] + iVar17" (subscript_expression "param_1[6]" identifier [ number_literal ]) + identifier) )))) = number_literal) ;) }))) (expression_statement "uVar20 = iVar17 + 1;" (assignment_expression "uVar20 = iVar17 + 1" identifier = (binary_expression "iVar17 + 1" identifier + number_literal)) ;) (expression_statement "uVar23 = param_1[9] - uVar20;" (assignment_expression "uVar23 = param_1[9] - uVar20" identifier = (binary_expression "param_1[9] - uVar20" (subscript_expression "param_1[9]" identifier [ number_literal ]) - identifier)) ;) (expression_statement "iVar6 = *(int *)(iVar18 + 0x30);" (assignment_expression "iVar6 = *(int *)(iVar18 + 0x30)" identifier = (pointer_expression "*(int *)(iVar18 + 0x30)" * (cast_expression "(int *)(iVar18 + 0x30)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar18 + 0x30)" ( (binary_expression "iVar18 + 0x30" identifier + number_literal) ))))) ;) (expression_statement "bVar4 = false;" (assignment_expression "bVar4 = false" identifier = false) ;) (expression_statement "iStack_8c = 0;" (assignment_expression "iStack_8c = 0" identifier = number_literal) ;) (expression_statement "iStack_a4 = 0;" (assignment_expression "iStack_a4 = 0" identifier = number_literal) ;) (expression_statement "uVar19 = 0;" (assignment_expression "uVar19 = 0" identifier = number_literal) ;) (expression_statement "iStack_a0 = 0;" (assignment_expression "iStack_a0 = 0" identifier = number_literal) ;) (expression_statement "iVar7 = *(int *)(puVar22 + 0x16fd4);" (assignment_expression "iVar7 = *(int *)(puVar22 + 0x16fd4)" identifier = (pointer_expression "*(int *)(puVar22 + 0x16fd4)" * (cast_expression "(int *)(puVar22 + 0x16fd4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar22 + 0x16fd4)" ( (binary_expression "puVar22 + 0x16fd4" identifier + number_literal) ))))) ;) (expression_statement "iVar8 = *(int *)(puVar22 + 0x16fd4);" (assignment_expression "iVar8 = *(int *)(puVar22 + 0x16fd4)" identifier = (pointer_expression "*(int *)(puVar22 + 0x16fd4)" * (cast_expression "(int *)(puVar22 + 0x16fd4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar22 + 0x16fd4)" ( (binary_expression "puVar22 + 0x16fd4" identifier + number_literal) ))))) ;) (expression_statement "iVar9 = *(int *)(puVar22 + 0x16fd4);" (assignment_expression "iVar9 = *(int *)(puVar22 + 0x16fd4)" identifier = (pointer_expression "*(int *)(puVar22 + 0x16fd4)" * (cast_expression "(int *)(puVar22 + 0x16fd4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar22 + 0x16fd4)" ( (binary_expression "puVar22 + 0x16fd4" identifier + number_literal) ))))) ;) (labeled_statement "LAB_0001c96c:\n  do {\n    do {\n      if (*(int *)(iVar18 + 0xc) == 0) goto LAB_0001c66c;\n      piVar16 = (int *)(**(code **)(puVar22 + 0x17220))();\n      *piVar16 = 0;\n      puVar10 = (undefined4 *)(**(code **)(puVar22 + 0x171d8))(*(undefined4 *)(iVar18 + 0xc));\n      if (puVar10 == (undefined4 *)0x0) {\n        if (*piVar16 != 0) {\n          *(int *)(iVar18 + 0x20) = *piVar16;\n          uVar15 = 7;\n          if ((iVar5 == 0) && (uVar19 == 0)) {\n            uVar15 = 4;\n          }\n          *(undefined2 *)(iVar18 + 0x3c) = uVar15;\n        }\n        if (*(int *)(iVar18 + 0xc) != 0) {\n          (**(code **)(puVar22 + 0x17194))();\n          *(undefined4 *)(iVar18 + 0xc) = 0;\n        }\n        goto LAB_0001c66c;\n      }\n    } while ((((param_1[0xc] & 0x20U) == 0) && (*(char *)((int)puVar10 + 0x13) == '.')) &&\n            ((*(char *)(puVar10 + 5) == '\0' || ((puVar10[5] & 0xffff0000) == 0x2e000000))));\n    uVar11 = (**(code **)(puVar22 + 0x17240))((int)puVar10 + 0x13);\n    iVar12 = (*(code *)(iVar7 + -0x4b14))(param_1,(int)puVar10 + 0x13,uVar11);\n    if (iVar12 == 0) {\nLAB_0001c794:\n      iVar5 = *piVar16;\n      (**(code **)(puVar22 + 0x172c8))(iVar12);\n      FUN_0001b6fc(iStack_a0);\n      (**(code **)(puVar22 + 0x17194))(*(undefined4 *)(iVar18 + 0xc));\n      *(undefined4 *)(iVar18 + 0xc) = 0;\n      *(undefined2 *)(iVar18 + 0x3c) = 7;\n      param_1[0xc] = param_1[0xc] | 0x4000;\n      *piVar16 = iVar5;\n      return 0;\n    }\n    if (uVar23 <= uVar11) {\n      iVar24 = param_1[6];\n      iVar14 = FUN_0001b0cc(param_1,iVar17 + 2 + uVar11);\n      if (iVar14 == 0) goto LAB_0001c794;\n      if ((param_1[6] != iVar24) && (iStack_8c = iVar14, (param_1[0xc] & 4U) != 0)) {\n        puStack_90 = (undefined1 *)(param_1[6] + uVar20);\n      }\n      uVar23 = param_1[9] - uVar20;\n    }\n    if (uVar20 + uVar11 < uVar20) {\n      (**(code **)(puVar22 + 0x172c8))(iVar12);\n      FUN_0001b6fc(iStack_a0);\n      (**(code **)(puVar22 + 0x17194))(*(undefined4 *)(iVar18 + 0xc));\n      *(undefined4 *)(iVar18 + 0xc) = 0;\n      *(undefined2 *)(iVar18 + 0x3c) = 7;\n      param_1[0xc] = param_1[0xc] | 0x4000;\n      *piVar16 = 0x4e;\n      return 0;\n    }\n    *(int *)(iVar12 + 0x30) = iVar6 + 1;\n    *(int *)(iVar12 + 4) = *param_1;\n    *(uint *)(iVar12 + 0x28) = uVar20 + uVar11;\n    uVar13 = *puVar10;\n    *(undefined4 *)(iVar12 + 0x5c) = puVar10[1];\n    *(undefined4 *)(iVar12 + 0x58) = uVar13;\n    if ((param_1[0xc] & 4U) == 0) {\n      *(int *)(iVar12 + 0x18) = iVar12 + 0xe8;\n      iVar14 = param_1[0xb];\n    }\n    else {\n      *(undefined4 *)(iVar12 + 0x18) = *(undefined4 *)(iVar12 + 0x1c);\n      (**(code **)(puVar22 + 0x172cc))(puStack_90,iVar12 + 0xe8,*(int *)(iVar12 + 0x34) + 1);\n      iVar14 = param_1[0xb];\n    }\n    if ((iVar14 == 0) || ((param_1[0xc] & 0x400U) != 0)) {\n      if (((param_1[0xc] & 0x18U) == 0x18) && ((*(byte *)((int)puVar10 + 0x12) & 0xfb) != 0)) {\n        *(undefined2 *)(iVar12 + 0x3c) = 0xb;\n        bVar3 = true;\n        if (*(byte *)((int)puVar10 + 0x12) < 0xd) {\n                    /* WARNING: Could not recover jumptable at 0x0001c904. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n          iVar5 = (*(code *)(puVar22 +\n                            *(int *)(iVar9 + 0x2d30 + (uint)*(byte *)((int)puVar10 + 0x12) * 4) +\n                            0x1ef9c))();\n          return iVar5;\n        }\n      }\n      else {\n        *(undefined2 *)(iVar12 + 0x3c) = 0xb;\n        bVar3 = false;\n        if (*(byte *)((int)puVar10 + 0x12) < 0xd) {\n                    /* WARNING: Could not recover jumptable at 0x0001cab8. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n          iVar5 = (*(code *)(puVar22 +\n                            *(int *)(*(int *)(puVar22 + 0x16fd4) + 0x2d64 +\n                                    (uint)*(byte *)((int)puVar10 + 0x12) * 4) + 0x1ef9c))();\n          return iVar5;\n        }\n      }\n      *(undefined4 *)(iVar12 + 0x60) = 0;\n      if (bVar3) {\n        uVar13 = 1;\n      }\n      else {\n        uVar13 = 2;\n      }\n      *(undefined4 *)(iVar12 + 0x84) = uVar13;\n      *(undefined4 *)(iVar12 + 0x80) = 0;\n    }\n    else {\n      uVar15 = FUN_0001b18c(param_1,iVar12,0);\n      *(undefined2 *)(iVar12 + 0x3c) = uVar15;\n    }\n    *(undefined4 *)(iVar12 + 8) = 0;\n    iVar14 = iVar12;\n    if (iStack_a0 != 0) {\n      *(int *)(iStack_a4 + 8) = iVar12;\n      iVar14 = iStack_a0;\n    }\n    iStack_a0 = iVar14;\n    iStack_a4 = iVar12;\n    if (uVar19 == 10000) {\n      if (param_1[0xb] != 0) {\nLAB_0001cb74:\n        uVar19 = 0x2711;\n        goto LAB_0001c96c;\n      }\n      iVar12 = (*(code *)(iVar8 + -0x47a8))(iVar18,iStack_7c);\n      if (iVar12 == 0x6969) {\n        bVar4 = false;\n      }\n      else if (iVar12 == 0x1021994) {\n        bVar4 = false;\n      }\n      else {\n        if (iVar12 != -0xacb2be) {\n          bVar4 = true;\n          goto LAB_0001cb74;\n        }\n        bVar4 = false;\n      }\n    }\n    uVar19 = uVar19 + 1;\n  } while (uVar19 < uStack_94);" statement_identifier : (do_statement "do {\n    do {\n      if (*(int *)(iVar18 + 0xc) == 0) goto LAB_0001c66c;\n      piVar16 = (int *)(**(code **)(puVar22 + 0x17220))();\n      *piVar16 = 0;\n      puVar10 = (undefined4 *)(**(code **)(puVar22 + 0x171d8))(*(undefined4 *)(iVar18 + 0xc));\n      if (puVar10 == (undefined4 *)0x0) {\n        if (*piVar16 != 0) {\n          *(int *)(iVar18 + 0x20) = *piVar16;\n          uVar15 = 7;\n          if ((iVar5 == 0) && (uVar19 == 0)) {\n            uVar15 = 4;\n          }\n          *(undefined2 *)(iVar18 + 0x3c) = uVar15;\n        }\n        if (*(int *)(iVar18 + 0xc) != 0) {\n          (**(code **)(puVar22 + 0x17194))();\n          *(undefined4 *)(iVar18 + 0xc) = 0;\n        }\n        goto LAB_0001c66c;\n      }\n    } while ((((param_1[0xc] & 0x20U) == 0) && (*(char *)((int)puVar10 + 0x13) == '.')) &&\n            ((*(char *)(puVar10 + 5) == '\0' || ((puVar10[5] & 0xffff0000) == 0x2e000000))));\n    uVar11 = (**(code **)(puVar22 + 0x17240))((int)puVar10 + 0x13);\n    iVar12 = (*(code *)(iVar7 + -0x4b14))(param_1,(int)puVar10 + 0x13,uVar11);\n    if (iVar12 == 0) {\nLAB_0001c794:\n      iVar5 = *piVar16;\n      (**(code **)(puVar22 + 0x172c8))(iVar12);\n      FUN_0001b6fc(iStack_a0);\n      (**(code **)(puVar22 + 0x17194))(*(undefined4 *)(iVar18 + 0xc));\n      *(undefined4 *)(iVar18 + 0xc) = 0;\n      *(undefined2 *)(iVar18 + 0x3c) = 7;\n      param_1[0xc] = param_1[0xc] | 0x4000;\n      *piVar16 = iVar5;\n      return 0;\n    }\n    if (uVar23 <= uVar11) {\n      iVar24 = param_1[6];\n      iVar14 = FUN_0001b0cc(param_1,iVar17 + 2 + uVar11);\n      if (iVar14 == 0) goto LAB_0001c794;\n      if ((param_1[6] != iVar24) && (iStack_8c = iVar14, (param_1[0xc] & 4U) != 0)) {\n        puStack_90 = (undefined1 *)(param_1[6] + uVar20);\n      }\n      uVar23 = param_1[9] - uVar20;\n    }\n    if (uVar20 + uVar11 < uVar20) {\n      (**(code **)(puVar22 + 0x172c8))(iVar12);\n      FUN_0001b6fc(iStack_a0);\n      (**(code **)(puVar22 + 0x17194))(*(undefined4 *)(iVar18 + 0xc));\n      *(undefined4 *)(iVar18 + 0xc) = 0;\n      *(undefined2 *)(iVar18 + 0x3c) = 7;\n      param_1[0xc] = param_1[0xc] | 0x4000;\n      *piVar16 = 0x4e;\n      return 0;\n    }\n    *(int *)(iVar12 + 0x30) = iVar6 + 1;\n    *(int *)(iVar12 + 4) = *param_1;\n    *(uint *)(iVar12 + 0x28) = uVar20 + uVar11;\n    uVar13 = *puVar10;\n    *(undefined4 *)(iVar12 + 0x5c) = puVar10[1];\n    *(undefined4 *)(iVar12 + 0x58) = uVar13;\n    if ((param_1[0xc] & 4U) == 0) {\n      *(int *)(iVar12 + 0x18) = iVar12 + 0xe8;\n      iVar14 = param_1[0xb];\n    }\n    else {\n      *(undefined4 *)(iVar12 + 0x18) = *(undefined4 *)(iVar12 + 0x1c);\n      (**(code **)(puVar22 + 0x172cc))(puStack_90,iVar12 + 0xe8,*(int *)(iVar12 + 0x34) + 1);\n      iVar14 = param_1[0xb];\n    }\n    if ((iVar14 == 0) || ((param_1[0xc] & 0x400U) != 0)) {\n      if (((param_1[0xc] & 0x18U) == 0x18) && ((*(byte *)((int)puVar10 + 0x12) & 0xfb) != 0)) {\n        *(undefined2 *)(iVar12 + 0x3c) = 0xb;\n        bVar3 = true;\n        if (*(byte *)((int)puVar10 + 0x12) < 0xd) {\n                    /* WARNING: Could not recover jumptable at 0x0001c904. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n          iVar5 = (*(code *)(puVar22 +\n                            *(int *)(iVar9 + 0x2d30 + (uint)*(byte *)((int)puVar10 + 0x12) * 4) +\n                            0x1ef9c))();\n          return iVar5;\n        }\n      }\n      else {\n        *(undefined2 *)(iVar12 + 0x3c) = 0xb;\n        bVar3 = false;\n        if (*(byte *)((int)puVar10 + 0x12) < 0xd) {\n                    /* WARNING: Could not recover jumptable at 0x0001cab8. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n          iVar5 = (*(code *)(puVar22 +\n                            *(int *)(*(int *)(puVar22 + 0x16fd4) + 0x2d64 +\n                                    (uint)*(byte *)((int)puVar10 + 0x12) * 4) + 0x1ef9c))();\n          return iVar5;\n        }\n      }\n      *(undefined4 *)(iVar12 + 0x60) = 0;\n      if (bVar3) {\n        uVar13 = 1;\n      }\n      else {\n        uVar13 = 2;\n      }\n      *(undefined4 *)(iVar12 + 0x84) = uVar13;\n      *(undefined4 *)(iVar12 + 0x80) = 0;\n    }\n    else {\n      uVar15 = FUN_0001b18c(param_1,iVar12,0);\n      *(undefined2 *)(iVar12 + 0x3c) = uVar15;\n    }\n    *(undefined4 *)(iVar12 + 8) = 0;\n    iVar14 = iVar12;\n    if (iStack_a0 != 0) {\n      *(int *)(iStack_a4 + 8) = iVar12;\n      iVar14 = iStack_a0;\n    }\n    iStack_a0 = iVar14;\n    iStack_a4 = iVar12;\n    if (uVar19 == 10000) {\n      if (param_1[0xb] != 0) {\nLAB_0001cb74:\n        uVar19 = 0x2711;\n        goto LAB_0001c96c;\n      }\n      iVar12 = (*(code *)(iVar8 + -0x47a8))(iVar18,iStack_7c);\n      if (iVar12 == 0x6969) {\n        bVar4 = false;\n      }\n      else if (iVar12 == 0x1021994) {\n        bVar4 = false;\n      }\n      else {\n        if (iVar12 != -0xacb2be) {\n          bVar4 = true;\n          goto LAB_0001cb74;\n        }\n        bVar4 = false;\n      }\n    }\n    uVar19 = uVar19 + 1;\n  } while (uVar19 < uStack_94);" do (compound_statement "{\n    do {\n      if (*(int *)(iVar18 + 0xc) == 0) goto LAB_0001c66c;\n      piVar16 = (int *)(**(code **)(puVar22 + 0x17220))();\n      *piVar16 = 0;\n      puVar10 = (undefined4 *)(**(code **)(puVar22 + 0x171d8))(*(undefined4 *)(iVar18 + 0xc));\n      if (puVar10 == (undefined4 *)0x0) {\n        if (*piVar16 != 0) {\n          *(int *)(iVar18 + 0x20) = *piVar16;\n          uVar15 = 7;\n          if ((iVar5 == 0) && (uVar19 == 0)) {\n            uVar15 = 4;\n          }\n          *(undefined2 *)(iVar18 + 0x3c) = uVar15;\n        }\n        if (*(int *)(iVar18 + 0xc) != 0) {\n          (**(code **)(puVar22 + 0x17194))();\n          *(undefined4 *)(iVar18 + 0xc) = 0;\n        }\n        goto LAB_0001c66c;\n      }\n    } while ((((param_1[0xc] & 0x20U) == 0) && (*(char *)((int)puVar10 + 0x13) == '.')) &&\n            ((*(char *)(puVar10 + 5) == '\0' || ((puVar10[5] & 0xffff0000) == 0x2e000000))));\n    uVar11 = (**(code **)(puVar22 + 0x17240))((int)puVar10 + 0x13);\n    iVar12 = (*(code *)(iVar7 + -0x4b14))(param_1,(int)puVar10 + 0x13,uVar11);\n    if (iVar12 == 0) {\nLAB_0001c794:\n      iVar5 = *piVar16;\n      (**(code **)(puVar22 + 0x172c8))(iVar12);\n      FUN_0001b6fc(iStack_a0);\n      (**(code **)(puVar22 + 0x17194))(*(undefined4 *)(iVar18 + 0xc));\n      *(undefined4 *)(iVar18 + 0xc) = 0;\n      *(undefined2 *)(iVar18 + 0x3c) = 7;\n      param_1[0xc] = param_1[0xc] | 0x4000;\n      *piVar16 = iVar5;\n      return 0;\n    }\n    if (uVar23 <= uVar11) {\n      iVar24 = param_1[6];\n      iVar14 = FUN_0001b0cc(param_1,iVar17 + 2 + uVar11);\n      if (iVar14 == 0) goto LAB_0001c794;\n      if ((param_1[6] != iVar24) && (iStack_8c = iVar14, (param_1[0xc] & 4U) != 0)) {\n        puStack_90 = (undefined1 *)(param_1[6] + uVar20);\n      }\n      uVar23 = param_1[9] - uVar20;\n    }\n    if (uVar20 + uVar11 < uVar20) {\n      (**(code **)(puVar22 + 0x172c8))(iVar12);\n      FUN_0001b6fc(iStack_a0);\n      (**(code **)(puVar22 + 0x17194))(*(undefined4 *)(iVar18 + 0xc));\n      *(undefined4 *)(iVar18 + 0xc) = 0;\n      *(undefined2 *)(iVar18 + 0x3c) = 7;\n      param_1[0xc] = param_1[0xc] | 0x4000;\n      *piVar16 = 0x4e;\n      return 0;\n    }\n    *(int *)(iVar12 + 0x30) = iVar6 + 1;\n    *(int *)(iVar12 + 4) = *param_1;\n    *(uint *)(iVar12 + 0x28) = uVar20 + uVar11;\n    uVar13 = *puVar10;\n    *(undefined4 *)(iVar12 + 0x5c) = puVar10[1];\n    *(undefined4 *)(iVar12 + 0x58) = uVar13;\n    if ((param_1[0xc] & 4U) == 0) {\n      *(int *)(iVar12 + 0x18) = iVar12 + 0xe8;\n      iVar14 = param_1[0xb];\n    }\n    else {\n      *(undefined4 *)(iVar12 + 0x18) = *(undefined4 *)(iVar12 + 0x1c);\n      (**(code **)(puVar22 + 0x172cc))(puStack_90,iVar12 + 0xe8,*(int *)(iVar12 + 0x34) + 1);\n      iVar14 = param_1[0xb];\n    }\n    if ((iVar14 == 0) || ((param_1[0xc] & 0x400U) != 0)) {\n      if (((param_1[0xc] & 0x18U) == 0x18) && ((*(byte *)((int)puVar10 + 0x12) & 0xfb) != 0)) {\n        *(undefined2 *)(iVar12 + 0x3c) = 0xb;\n        bVar3 = true;\n        if (*(byte *)((int)puVar10 + 0x12) < 0xd) {\n                    /* WARNING: Could not recover jumptable at 0x0001c904. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n          iVar5 = (*(code *)(puVar22 +\n                            *(int *)(iVar9 + 0x2d30 + (uint)*(byte *)((int)puVar10 + 0x12) * 4) +\n                            0x1ef9c))();\n          return iVar5;\n        }\n      }\n      else {\n        *(undefined2 *)(iVar12 + 0x3c) = 0xb;\n        bVar3 = false;\n        if (*(byte *)((int)puVar10 + 0x12) < 0xd) {\n                    /* WARNING: Could not recover jumptable at 0x0001cab8. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n          iVar5 = (*(code *)(puVar22 +\n                            *(int *)(*(int *)(puVar22 + 0x16fd4) + 0x2d64 +\n                                    (uint)*(byte *)((int)puVar10 + 0x12) * 4) + 0x1ef9c))();\n          return iVar5;\n        }\n      }\n      *(undefined4 *)(iVar12 + 0x60) = 0;\n      if (bVar3) {\n        uVar13 = 1;\n      }\n      else {\n        uVar13 = 2;\n      }\n      *(undefined4 *)(iVar12 + 0x84) = uVar13;\n      *(undefined4 *)(iVar12 + 0x80) = 0;\n    }\n    else {\n      uVar15 = FUN_0001b18c(param_1,iVar12,0);\n      *(undefined2 *)(iVar12 + 0x3c) = uVar15;\n    }\n    *(undefined4 *)(iVar12 + 8) = 0;\n    iVar14 = iVar12;\n    if (iStack_a0 != 0) {\n      *(int *)(iStack_a4 + 8) = iVar12;\n      iVar14 = iStack_a0;\n    }\n    iStack_a0 = iVar14;\n    iStack_a4 = iVar12;\n    if (uVar19 == 10000) {\n      if (param_1[0xb] != 0) {\nLAB_0001cb74:\n        uVar19 = 0x2711;\n        goto LAB_0001c96c;\n      }\n      iVar12 = (*(code *)(iVar8 + -0x47a8))(iVar18,iStack_7c);\n      if (iVar12 == 0x6969) {\n        bVar4 = false;\n      }\n      else if (iVar12 == 0x1021994) {\n        bVar4 = false;\n      }\n      else {\n        if (iVar12 != -0xacb2be) {\n          bVar4 = true;\n          goto LAB_0001cb74;\n        }\n        bVar4 = false;\n      }\n    }\n    uVar19 = uVar19 + 1;\n  }" { (do_statement "do {\n      if (*(int *)(iVar18 + 0xc) == 0) goto LAB_0001c66c;\n      piVar16 = (int *)(**(code **)(puVar22 + 0x17220))();\n      *piVar16 = 0;\n      puVar10 = (undefined4 *)(**(code **)(puVar22 + 0x171d8))(*(undefined4 *)(iVar18 + 0xc));\n      if (puVar10 == (undefined4 *)0x0) {\n        if (*piVar16 != 0) {\n          *(int *)(iVar18 + 0x20) = *piVar16;\n          uVar15 = 7;\n          if ((iVar5 == 0) && (uVar19 == 0)) {\n            uVar15 = 4;\n          }\n          *(undefined2 *)(iVar18 + 0x3c) = uVar15;\n        }\n        if (*(int *)(iVar18 + 0xc) != 0) {\n          (**(code **)(puVar22 + 0x17194))();\n          *(undefined4 *)(iVar18 + 0xc) = 0;\n        }\n        goto LAB_0001c66c;\n      }\n    } while ((((param_1[0xc] & 0x20U) == 0) && (*(char *)((int)puVar10 + 0x13) == '.')) &&\n            ((*(char *)(puVar10 + 5) == '\0' || ((puVar10[5] & 0xffff0000) == 0x2e000000))));" do (compound_statement "{\n      if (*(int *)(iVar18 + 0xc) == 0) goto LAB_0001c66c;\n      piVar16 = (int *)(**(code **)(puVar22 + 0x17220))();\n      *piVar16 = 0;\n      puVar10 = (undefined4 *)(**(code **)(puVar22 + 0x171d8))(*(undefined4 *)(iVar18 + 0xc));\n      if (puVar10 == (undefined4 *)0x0) {\n        if (*piVar16 != 0) {\n          *(int *)(iVar18 + 0x20) = *piVar16;\n          uVar15 = 7;\n          if ((iVar5 == 0) && (uVar19 == 0)) {\n            uVar15 = 4;\n          }\n          *(undefined2 *)(iVar18 + 0x3c) = uVar15;\n        }\n        if (*(int *)(iVar18 + 0xc) != 0) {\n          (**(code **)(puVar22 + 0x17194))();\n          *(undefined4 *)(iVar18 + 0xc) = 0;\n        }\n        goto LAB_0001c66c;\n      }\n    }" { (if_statement "if (*(int *)(iVar18 + 0xc) == 0) goto LAB_0001c66c;" if (parenthesized_expression "(*(int *)(iVar18 + 0xc) == 0)" ( (binary_expression "*(int *)(iVar18 + 0xc) == 0" (pointer_expression "*(int *)(iVar18 + 0xc)" * (cast_expression "(int *)(iVar18 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar18 + 0xc)" ( (binary_expression "iVar18 + 0xc" identifier + number_literal) )))) == number_literal) )) (goto_statement "goto LAB_0001c66c;" goto statement_identifier ;)) (expression_statement "piVar16 = (int *)(**(code **)(puVar22 + 0x17220))();" (assignment_expression "piVar16 = (int *)(**(code **)(puVar22 + 0x17220))()" identifier = (cast_expression "(int *)(**(code **)(puVar22 + 0x17220))()" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(puVar22 + 0x17220))()" (parenthesized_expression "(**(code **)(puVar22 + 0x17220))" ( (pointer_expression "**(code **)(puVar22 + 0x17220)" * (pointer_expression "*(code **)(puVar22 + 0x17220)" * (cast_expression "(code **)(puVar22 + 0x17220)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar22 + 0x17220)" ( (binary_expression "puVar22 + 0x17220" identifier + number_literal) ))))) )) (argument_list "()" ( ))))) ;) (expression_statement "*piVar16 = 0;" (assignment_expression "*piVar16 = 0" (pointer_expression "*piVar16" * identifier) = number_literal) ;) (expression_statement "puVar10 = (undefined4 *)(**(code **)(puVar22 + 0x171d8))(*(undefined4 *)(iVar18 + 0xc));" (assignment_expression "puVar10 = (undefined4 *)(**(code **)(puVar22 + 0x171d8))(*(undefined4 *)(iVar18 + 0xc))" identifier = (cast_expression "(undefined4 *)(**(code **)(puVar22 + 0x171d8))(*(undefined4 *)(iVar18 + 0xc))" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(puVar22 + 0x171d8))(*(undefined4 *)(iVar18 + 0xc))" (parenthesized_expression "(**(code **)(puVar22 + 0x171d8))" ( (pointer_expression "**(code **)(puVar22 + 0x171d8)" * (pointer_expression "*(code **)(puVar22 + 0x171d8)" * (cast_expression "(code **)(puVar22 + 0x171d8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar22 + 0x171d8)" ( (binary_expression "puVar22 + 0x171d8" identifier + number_literal) ))))) )) (argument_list "(*(undefined4 *)(iVar18 + 0xc))" ( (pointer_expression "*(undefined4 *)(iVar18 + 0xc)" * (cast_expression "(undefined4 *)(iVar18 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar18 + 0xc)" ( (binary_expression "iVar18 + 0xc" identifier + number_literal) )))) ))))) ;) (if_statement "if (puVar10 == (undefined4 *)0x0) {\n        if (*piVar16 != 0) {\n          *(int *)(iVar18 + 0x20) = *piVar16;\n          uVar15 = 7;\n          if ((iVar5 == 0) && (uVar19 == 0)) {\n            uVar15 = 4;\n          }\n          *(undefined2 *)(iVar18 + 0x3c) = uVar15;\n        }\n        if (*(int *)(iVar18 + 0xc) != 0) {\n          (**(code **)(puVar22 + 0x17194))();\n          *(undefined4 *)(iVar18 + 0xc) = 0;\n        }\n        goto LAB_0001c66c;\n      }" if (parenthesized_expression "(puVar10 == (undefined4 *)0x0)" ( (binary_expression "puVar10 == (undefined4 *)0x0" identifier == (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        if (*piVar16 != 0) {\n          *(int *)(iVar18 + 0x20) = *piVar16;\n          uVar15 = 7;\n          if ((iVar5 == 0) && (uVar19 == 0)) {\n            uVar15 = 4;\n          }\n          *(undefined2 *)(iVar18 + 0x3c) = uVar15;\n        }\n        if (*(int *)(iVar18 + 0xc) != 0) {\n          (**(code **)(puVar22 + 0x17194))();\n          *(undefined4 *)(iVar18 + 0xc) = 0;\n        }\n        goto LAB_0001c66c;\n      }" { (if_statement "if (*piVar16 != 0) {\n          *(int *)(iVar18 + 0x20) = *piVar16;\n          uVar15 = 7;\n          if ((iVar5 == 0) && (uVar19 == 0)) {\n            uVar15 = 4;\n          }\n          *(undefined2 *)(iVar18 + 0x3c) = uVar15;\n        }" if (parenthesized_expression "(*piVar16 != 0)" ( (binary_expression "*piVar16 != 0" (pointer_expression "*piVar16" * identifier) != number_literal) )) (compound_statement "{\n          *(int *)(iVar18 + 0x20) = *piVar16;\n          uVar15 = 7;\n          if ((iVar5 == 0) && (uVar19 == 0)) {\n            uVar15 = 4;\n          }\n          *(undefined2 *)(iVar18 + 0x3c) = uVar15;\n        }" { (expression_statement "*(int *)(iVar18 + 0x20) = *piVar16;" (assignment_expression "*(int *)(iVar18 + 0x20) = *piVar16" (pointer_expression "*(int *)(iVar18 + 0x20)" * (cast_expression "(int *)(iVar18 + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar18 + 0x20)" ( (binary_expression "iVar18 + 0x20" identifier + number_literal) )))) = (pointer_expression "*piVar16" * identifier)) ;) (expression_statement "uVar15 = 7;" (assignment_expression "uVar15 = 7" identifier = number_literal) ;) (if_statement "if ((iVar5 == 0) && (uVar19 == 0)) {\n            uVar15 = 4;\n          }" if (parenthesized_expression "((iVar5 == 0) && (uVar19 == 0))" ( (binary_expression "(iVar5 == 0) && (uVar19 == 0)" (parenthesized_expression "(iVar5 == 0)" ( (binary_expression "iVar5 == 0" identifier == number_literal) )) && (parenthesized_expression "(uVar19 == 0)" ( (binary_expression "uVar19 == 0" identifier == number_literal) ))) )) (compound_statement "{\n            uVar15 = 4;\n          }" { (expression_statement "uVar15 = 4;" (assignment_expression "uVar15 = 4" identifier = number_literal) ;) })) (expression_statement "*(undefined2 *)(iVar18 + 0x3c) = uVar15;" (assignment_expression "*(undefined2 *)(iVar18 + 0x3c) = uVar15" (pointer_expression "*(undefined2 *)(iVar18 + 0x3c)" * (cast_expression "(undefined2 *)(iVar18 + 0x3c)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar18 + 0x3c)" ( (binary_expression "iVar18 + 0x3c" identifier + number_literal) )))) = identifier) ;) })) (if_statement "if (*(int *)(iVar18 + 0xc) != 0) {\n          (**(code **)(puVar22 + 0x17194))();\n          *(undefined4 *)(iVar18 + 0xc) = 0;\n        }" if (parenthesized_expression "(*(int *)(iVar18 + 0xc) != 0)" ( (binary_expression "*(int *)(iVar18 + 0xc) != 0" (pointer_expression "*(int *)(iVar18 + 0xc)" * (cast_expression "(int *)(iVar18 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar18 + 0xc)" ( (binary_expression "iVar18 + 0xc" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n          (**(code **)(puVar22 + 0x17194))();\n          *(undefined4 *)(iVar18 + 0xc) = 0;\n        }" { (expression_statement "(**(code **)(puVar22 + 0x17194))();" (call_expression "(**(code **)(puVar22 + 0x17194))()" (parenthesized_expression "(**(code **)(puVar22 + 0x17194))" ( (pointer_expression "**(code **)(puVar22 + 0x17194)" * (pointer_expression "*(code **)(puVar22 + 0x17194)" * (cast_expression "(code **)(puVar22 + 0x17194)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar22 + 0x17194)" ( (binary_expression "puVar22 + 0x17194" identifier + number_literal) ))))) )) (argument_list "()" ( ))) ;) (expression_statement "*(undefined4 *)(iVar18 + 0xc) = 0;" (assignment_expression "*(undefined4 *)(iVar18 + 0xc) = 0" (pointer_expression "*(undefined4 *)(iVar18 + 0xc)" * (cast_expression "(undefined4 *)(iVar18 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar18 + 0xc)" ( (binary_expression "iVar18 + 0xc" identifier + number_literal) )))) = number_literal) ;) })) (goto_statement "goto LAB_0001c66c;" goto statement_identifier ;) })) }) while (parenthesized_expression "((((param_1[0xc] & 0x20U) == 0) && (*(char *)((int)puVar10 + 0x13) == '.')) &&\n            ((*(char *)(puVar10 + 5) == '\0' || ((puVar10[5] & 0xffff0000) == 0x2e000000))))" ( (binary_expression "(((param_1[0xc] & 0x20U) == 0) && (*(char *)((int)puVar10 + 0x13) == '.')) &&\n            ((*(char *)(puVar10 + 5) == '\0' || ((puVar10[5] & 0xffff0000) == 0x2e000000)))" (parenthesized_expression "(((param_1[0xc] & 0x20U) == 0) && (*(char *)((int)puVar10 + 0x13) == '.'))" ( (binary_expression "((param_1[0xc] & 0x20U) == 0) && (*(char *)((int)puVar10 + 0x13) == '.')" (parenthesized_expression "((param_1[0xc] & 0x20U) == 0)" ( (binary_expression "(param_1[0xc] & 0x20U) == 0" (parenthesized_expression "(param_1[0xc] & 0x20U)" ( (binary_expression "param_1[0xc] & 0x20U" (subscript_expression "param_1[0xc]" identifier [ number_literal ]) & number_literal) )) == number_literal) )) && (parenthesized_expression "(*(char *)((int)puVar10 + 0x13) == '.')" ( (binary_expression "*(char *)((int)puVar10 + 0x13) == '.'" (pointer_expression "*(char *)((int)puVar10 + 0x13)" * (cast_expression "(char *)((int)puVar10 + 0x13)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar10 + 0x13)" ( (binary_expression "(int)puVar10 + 0x13" (cast_expression "(int)puVar10" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) == (char_literal "'.'" ' character ')) ))) )) && (parenthesized_expression "((*(char *)(puVar10 + 5) == '\0' || ((puVar10[5] & 0xffff0000) == 0x2e000000)))" ( (parenthesized_expression "(*(char *)(puVar10 + 5) == '\0' || ((puVar10[5] & 0xffff0000) == 0x2e000000))" ( (binary_expression "*(char *)(puVar10 + 5) == '\0' || ((puVar10[5] & 0xffff0000) == 0x2e000000)" (binary_expression "*(char *)(puVar10 + 5) == '\0'" (pointer_expression "*(char *)(puVar10 + 5)" * (cast_expression "(char *)(puVar10 + 5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + 5)" ( (binary_expression "puVar10 + 5" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) || (parenthesized_expression "((puVar10[5] & 0xffff0000) == 0x2e000000)" ( (binary_expression "(puVar10[5] & 0xffff0000) == 0x2e000000" (parenthesized_expression "(puVar10[5] & 0xffff0000)" ( (binary_expression "puVar10[5] & 0xffff0000" (subscript_expression "puVar10[5]" identifier [ number_literal ]) & number_literal) )) == number_literal) ))) )) ))) )) ;) (expression_statement "uVar11 = (**(code **)(puVar22 + 0x17240))((int)puVar10 + 0x13);" (assignment_expression "uVar11 = (**(code **)(puVar22 + 0x17240))((int)puVar10 + 0x13)" identifier = (call_expression "(**(code **)(puVar22 + 0x17240))((int)puVar10 + 0x13)" (parenthesized_expression "(**(code **)(puVar22 + 0x17240))" ( (pointer_expression "**(code **)(puVar22 + 0x17240)" * (pointer_expression "*(code **)(puVar22 + 0x17240)" * (cast_expression "(code **)(puVar22 + 0x17240)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar22 + 0x17240)" ( (binary_expression "puVar22 + 0x17240" identifier + number_literal) ))))) )) (argument_list "((int)puVar10 + 0x13)" ( (binary_expression "(int)puVar10 + 0x13" (cast_expression "(int)puVar10" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "iVar12 = (*(code *)(iVar7 + -0x4b14))(param_1,(int)puVar10 + 0x13,uVar11);" (assignment_expression "iVar12 = (*(code *)(iVar7 + -0x4b14))(param_1,(int)puVar10 + 0x13,uVar11)" identifier = (call_expression "(*(code *)(iVar7 + -0x4b14))(param_1,(int)puVar10 + 0x13,uVar11)" (parenthesized_expression "(*(code *)(iVar7 + -0x4b14))" ( (pointer_expression "*(code *)(iVar7 + -0x4b14)" * (cast_expression "(code *)(iVar7 + -0x4b14)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + -0x4b14)" ( (binary_expression "iVar7 + -0x4b14" identifier + number_literal) )))) )) (argument_list "(param_1,(int)puVar10 + 0x13,uVar11)" ( identifier , (binary_expression "(int)puVar10 + 0x13" (cast_expression "(int)puVar10" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) , identifier )))) ;) (if_statement "if (iVar12 == 0) {\nLAB_0001c794:\n      iVar5 = *piVar16;\n      (**(code **)(puVar22 + 0x172c8))(iVar12);\n      FUN_0001b6fc(iStack_a0);\n      (**(code **)(puVar22 + 0x17194))(*(undefined4 *)(iVar18 + 0xc));\n      *(undefined4 *)(iVar18 + 0xc) = 0;\n      *(undefined2 *)(iVar18 + 0x3c) = 7;\n      param_1[0xc] = param_1[0xc] | 0x4000;\n      *piVar16 = iVar5;\n      return 0;\n    }" if (parenthesized_expression "(iVar12 == 0)" ( (binary_expression "iVar12 == 0" identifier == number_literal) )) (compound_statement "{\nLAB_0001c794:\n      iVar5 = *piVar16;\n      (**(code **)(puVar22 + 0x172c8))(iVar12);\n      FUN_0001b6fc(iStack_a0);\n      (**(code **)(puVar22 + 0x17194))(*(undefined4 *)(iVar18 + 0xc));\n      *(undefined4 *)(iVar18 + 0xc) = 0;\n      *(undefined2 *)(iVar18 + 0x3c) = 7;\n      param_1[0xc] = param_1[0xc] | 0x4000;\n      *piVar16 = iVar5;\n      return 0;\n    }" { (labeled_statement "LAB_0001c794:\n      iVar5 = *piVar16;" statement_identifier : (expression_statement "iVar5 = *piVar16;" (assignment_expression "iVar5 = *piVar16" identifier = (pointer_expression "*piVar16" * identifier)) ;)) (expression_statement "(**(code **)(puVar22 + 0x172c8))(iVar12);" (call_expression "(**(code **)(puVar22 + 0x172c8))(iVar12)" (parenthesized_expression "(**(code **)(puVar22 + 0x172c8))" ( (pointer_expression "**(code **)(puVar22 + 0x172c8)" * (pointer_expression "*(code **)(puVar22 + 0x172c8)" * (cast_expression "(code **)(puVar22 + 0x172c8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar22 + 0x172c8)" ( (binary_expression "puVar22 + 0x172c8" identifier + number_literal) ))))) )) (argument_list "(iVar12)" ( identifier ))) ;) (expression_statement "FUN_0001b6fc(iStack_a0);" (call_expression "FUN_0001b6fc(iStack_a0)" identifier (argument_list "(iStack_a0)" ( identifier ))) ;) (expression_statement "(**(code **)(puVar22 + 0x17194))(*(undefined4 *)(iVar18 + 0xc));" (call_expression "(**(code **)(puVar22 + 0x17194))(*(undefined4 *)(iVar18 + 0xc))" (parenthesized_expression "(**(code **)(puVar22 + 0x17194))" ( (pointer_expression "**(code **)(puVar22 + 0x17194)" * (pointer_expression "*(code **)(puVar22 + 0x17194)" * (cast_expression "(code **)(puVar22 + 0x17194)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar22 + 0x17194)" ( (binary_expression "puVar22 + 0x17194" identifier + number_literal) ))))) )) (argument_list "(*(undefined4 *)(iVar18 + 0xc))" ( (pointer_expression "*(undefined4 *)(iVar18 + 0xc)" * (cast_expression "(undefined4 *)(iVar18 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar18 + 0xc)" ( (binary_expression "iVar18 + 0xc" identifier + number_literal) )))) ))) ;) (expression_statement "*(undefined4 *)(iVar18 + 0xc) = 0;" (assignment_expression "*(undefined4 *)(iVar18 + 0xc) = 0" (pointer_expression "*(undefined4 *)(iVar18 + 0xc)" * (cast_expression "(undefined4 *)(iVar18 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar18 + 0xc)" ( (binary_expression "iVar18 + 0xc" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined2 *)(iVar18 + 0x3c) = 7;" (assignment_expression "*(undefined2 *)(iVar18 + 0x3c) = 7" (pointer_expression "*(undefined2 *)(iVar18 + 0x3c)" * (cast_expression "(undefined2 *)(iVar18 + 0x3c)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar18 + 0x3c)" ( (binary_expression "iVar18 + 0x3c" identifier + number_literal) )))) = number_literal) ;) (expression_statement "param_1[0xc] = param_1[0xc] | 0x4000;" (assignment_expression "param_1[0xc] = param_1[0xc] | 0x4000" (subscript_expression "param_1[0xc]" identifier [ number_literal ]) = (binary_expression "param_1[0xc] | 0x4000" (subscript_expression "param_1[0xc]" identifier [ number_literal ]) | number_literal)) ;) (expression_statement "*piVar16 = iVar5;" (assignment_expression "*piVar16 = iVar5" (pointer_expression "*piVar16" * identifier) = identifier) ;) (return_statement "return 0;" return number_literal ;) })) (if_statement "if (uVar23 <= uVar11) {\n      iVar24 = param_1[6];\n      iVar14 = FUN_0001b0cc(param_1,iVar17 + 2 + uVar11);\n      if (iVar14 == 0) goto LAB_0001c794;\n      if ((param_1[6] != iVar24) && (iStack_8c = iVar14, (param_1[0xc] & 4U) != 0)) {\n        puStack_90 = (undefined1 *)(param_1[6] + uVar20);\n      }\n      uVar23 = param_1[9] - uVar20;\n    }" if (parenthesized_expression "(uVar23 <= uVar11)" ( (binary_expression "uVar23 <= uVar11" identifier <= identifier) )) (compound_statement "{\n      iVar24 = param_1[6];\n      iVar14 = FUN_0001b0cc(param_1,iVar17 + 2 + uVar11);\n      if (iVar14 == 0) goto LAB_0001c794;\n      if ((param_1[6] != iVar24) && (iStack_8c = iVar14, (param_1[0xc] & 4U) != 0)) {\n        puStack_90 = (undefined1 *)(param_1[6] + uVar20);\n      }\n      uVar23 = param_1[9] - uVar20;\n    }" { (expression_statement "iVar24 = param_1[6];" (assignment_expression "iVar24 = param_1[6]" identifier = (subscript_expression "param_1[6]" identifier [ number_literal ])) ;) (expression_statement "iVar14 = FUN_0001b0cc(param_1,iVar17 + 2 + uVar11);" (assignment_expression "iVar14 = FUN_0001b0cc(param_1,iVar17 + 2 + uVar11)" identifier = (call_expression "FUN_0001b0cc(param_1,iVar17 + 2 + uVar11)" identifier (argument_list "(param_1,iVar17 + 2 + uVar11)" ( identifier , (binary_expression "iVar17 + 2 + uVar11" (binary_expression "iVar17 + 2" identifier + number_literal) + identifier) )))) ;) (if_statement "if (iVar14 == 0) goto LAB_0001c794;" if (parenthesized_expression "(iVar14 == 0)" ( (binary_expression "iVar14 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0001c794;" goto statement_identifier ;)) (if_statement "if ((param_1[6] != iVar24) && (iStack_8c = iVar14, (param_1[0xc] & 4U) != 0)) {\n        puStack_90 = (undefined1 *)(param_1[6] + uVar20);\n      }" if (parenthesized_expression "((param_1[6] != iVar24) && (iStack_8c = iVar14, (param_1[0xc] & 4U) != 0))" ( (binary_expression "(param_1[6] != iVar24) && (iStack_8c = iVar14, (param_1[0xc] & 4U) != 0)" (parenthesized_expression "(param_1[6] != iVar24)" ( (binary_expression "param_1[6] != iVar24" (subscript_expression "param_1[6]" identifier [ number_literal ]) != identifier) )) && (parenthesized_expression "(iStack_8c = iVar14, (param_1[0xc] & 4U) != 0)" ( (comma_expression "iStack_8c = iVar14, (param_1[0xc] & 4U) != 0" (assignment_expression "iStack_8c = iVar14" identifier = identifier) , (binary_expression "(param_1[0xc] & 4U) != 0" (parenthesized_expression "(param_1[0xc] & 4U)" ( (binary_expression "param_1[0xc] & 4U" (subscript_expression "param_1[0xc]" identifier [ number_literal ]) & number_literal) )) != number_literal)) ))) )) (compound_statement "{\n        puStack_90 = (undefined1 *)(param_1[6] + uVar20);\n      }" { (expression_statement "puStack_90 = (undefined1 *)(param_1[6] + uVar20);" (assignment_expression "puStack_90 = (undefined1 *)(param_1[6] + uVar20)" identifier = (cast_expression "(undefined1 *)(param_1[6] + uVar20)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1[6] + uVar20)" ( (binary_expression "param_1[6] + uVar20" (subscript_expression "param_1[6]" identifier [ number_literal ]) + identifier) )))) ;) })) (expression_statement "uVar23 = param_1[9] - uVar20;" (assignment_expression "uVar23 = param_1[9] - uVar20" identifier = (binary_expression "param_1[9] - uVar20" (subscript_expression "param_1[9]" identifier [ number_literal ]) - identifier)) ;) })) (if_statement "if (uVar20 + uVar11 < uVar20) {\n      (**(code **)(puVar22 + 0x172c8))(iVar12);\n      FUN_0001b6fc(iStack_a0);\n      (**(code **)(puVar22 + 0x17194))(*(undefined4 *)(iVar18 + 0xc));\n      *(undefined4 *)(iVar18 + 0xc) = 0;\n      *(undefined2 *)(iVar18 + 0x3c) = 7;\n      param_1[0xc] = param_1[0xc] | 0x4000;\n      *piVar16 = 0x4e;\n      return 0;\n    }" if (parenthesized_expression "(uVar20 + uVar11 < uVar20)" ( (binary_expression "uVar20 + uVar11 < uVar20" (binary_expression "uVar20 + uVar11" identifier + identifier) < identifier) )) (compound_statement "{\n      (**(code **)(puVar22 + 0x172c8))(iVar12);\n      FUN_0001b6fc(iStack_a0);\n      (**(code **)(puVar22 + 0x17194))(*(undefined4 *)(iVar18 + 0xc));\n      *(undefined4 *)(iVar18 + 0xc) = 0;\n      *(undefined2 *)(iVar18 + 0x3c) = 7;\n      param_1[0xc] = param_1[0xc] | 0x4000;\n      *piVar16 = 0x4e;\n      return 0;\n    }" { (expression_statement "(**(code **)(puVar22 + 0x172c8))(iVar12);" (call_expression "(**(code **)(puVar22 + 0x172c8))(iVar12)" (parenthesized_expression "(**(code **)(puVar22 + 0x172c8))" ( (pointer_expression "**(code **)(puVar22 + 0x172c8)" * (pointer_expression "*(code **)(puVar22 + 0x172c8)" * (cast_expression "(code **)(puVar22 + 0x172c8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar22 + 0x172c8)" ( (binary_expression "puVar22 + 0x172c8" identifier + number_literal) ))))) )) (argument_list "(iVar12)" ( identifier ))) ;) (expression_statement "FUN_0001b6fc(iStack_a0);" (call_expression "FUN_0001b6fc(iStack_a0)" identifier (argument_list "(iStack_a0)" ( identifier ))) ;) (expression_statement "(**(code **)(puVar22 + 0x17194))(*(undefined4 *)(iVar18 + 0xc));" (call_expression "(**(code **)(puVar22 + 0x17194))(*(undefined4 *)(iVar18 + 0xc))" (parenthesized_expression "(**(code **)(puVar22 + 0x17194))" ( (pointer_expression "**(code **)(puVar22 + 0x17194)" * (pointer_expression "*(code **)(puVar22 + 0x17194)" * (cast_expression "(code **)(puVar22 + 0x17194)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar22 + 0x17194)" ( (binary_expression "puVar22 + 0x17194" identifier + number_literal) ))))) )) (argument_list "(*(undefined4 *)(iVar18 + 0xc))" ( (pointer_expression "*(undefined4 *)(iVar18 + 0xc)" * (cast_expression "(undefined4 *)(iVar18 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar18 + 0xc)" ( (binary_expression "iVar18 + 0xc" identifier + number_literal) )))) ))) ;) (expression_statement "*(undefined4 *)(iVar18 + 0xc) = 0;" (assignment_expression "*(undefined4 *)(iVar18 + 0xc) = 0" (pointer_expression "*(undefined4 *)(iVar18 + 0xc)" * (cast_expression "(undefined4 *)(iVar18 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar18 + 0xc)" ( (binary_expression "iVar18 + 0xc" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined2 *)(iVar18 + 0x3c) = 7;" (assignment_expression "*(undefined2 *)(iVar18 + 0x3c) = 7" (pointer_expression "*(undefined2 *)(iVar18 + 0x3c)" * (cast_expression "(undefined2 *)(iVar18 + 0x3c)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar18 + 0x3c)" ( (binary_expression "iVar18 + 0x3c" identifier + number_literal) )))) = number_literal) ;) (expression_statement "param_1[0xc] = param_1[0xc] | 0x4000;" (assignment_expression "param_1[0xc] = param_1[0xc] | 0x4000" (subscript_expression "param_1[0xc]" identifier [ number_literal ]) = (binary_expression "param_1[0xc] | 0x4000" (subscript_expression "param_1[0xc]" identifier [ number_literal ]) | number_literal)) ;) (expression_statement "*piVar16 = 0x4e;" (assignment_expression "*piVar16 = 0x4e" (pointer_expression "*piVar16" * identifier) = number_literal) ;) (return_statement "return 0;" return number_literal ;) })) (expression_statement "*(int *)(iVar12 + 0x30) = iVar6 + 1;" (assignment_expression "*(int *)(iVar12 + 0x30) = iVar6 + 1" (pointer_expression "*(int *)(iVar12 + 0x30)" * (cast_expression "(int *)(iVar12 + 0x30)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar12 + 0x30)" ( (binary_expression "iVar12 + 0x30" identifier + number_literal) )))) = (binary_expression "iVar6 + 1" identifier + number_literal)) ;) (expression_statement "*(int *)(iVar12 + 4) = *param_1;" (assignment_expression "*(int *)(iVar12 + 4) = *param_1" (pointer_expression "*(int *)(iVar12 + 4)" * (cast_expression "(int *)(iVar12 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar12 + 4)" ( (binary_expression "iVar12 + 4" identifier + number_literal) )))) = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "*(uint *)(iVar12 + 0x28) = uVar20 + uVar11;" (assignment_expression "*(uint *)(iVar12 + 0x28) = uVar20 + uVar11" (pointer_expression "*(uint *)(iVar12 + 0x28)" * (cast_expression "(uint *)(iVar12 + 0x28)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar12 + 0x28)" ( (binary_expression "iVar12 + 0x28" identifier + number_literal) )))) = (binary_expression "uVar20 + uVar11" identifier + identifier)) ;) (expression_statement "uVar13 = *puVar10;" (assignment_expression "uVar13 = *puVar10" identifier = (pointer_expression "*puVar10" * identifier)) ;) (expression_statement "*(undefined4 *)(iVar12 + 0x5c) = puVar10[1];" (assignment_expression "*(undefined4 *)(iVar12 + 0x5c) = puVar10[1]" (pointer_expression "*(undefined4 *)(iVar12 + 0x5c)" * (cast_expression "(undefined4 *)(iVar12 + 0x5c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar12 + 0x5c)" ( (binary_expression "iVar12 + 0x5c" identifier + number_literal) )))) = (subscript_expression "puVar10[1]" identifier [ number_literal ])) ;) (expression_statement "*(undefined4 *)(iVar12 + 0x58) = uVar13;" (assignment_expression "*(undefined4 *)(iVar12 + 0x58) = uVar13" (pointer_expression "*(undefined4 *)(iVar12 + 0x58)" * (cast_expression "(undefined4 *)(iVar12 + 0x58)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar12 + 0x58)" ( (binary_expression "iVar12 + 0x58" identifier + number_literal) )))) = identifier) ;) (if_statement "if ((param_1[0xc] & 4U) == 0) {\n      *(int *)(iVar12 + 0x18) = iVar12 + 0xe8;\n      iVar14 = param_1[0xb];\n    }\n    else {\n      *(undefined4 *)(iVar12 + 0x18) = *(undefined4 *)(iVar12 + 0x1c);\n      (**(code **)(puVar22 + 0x172cc))(puStack_90,iVar12 + 0xe8,*(int *)(iVar12 + 0x34) + 1);\n      iVar14 = param_1[0xb];\n    }" if (parenthesized_expression "((param_1[0xc] & 4U) == 0)" ( (binary_expression "(param_1[0xc] & 4U) == 0" (parenthesized_expression "(param_1[0xc] & 4U)" ( (binary_expression "param_1[0xc] & 4U" (subscript_expression "param_1[0xc]" identifier [ number_literal ]) & number_literal) )) == number_literal) )) (compound_statement "{\n      *(int *)(iVar12 + 0x18) = iVar12 + 0xe8;\n      iVar14 = param_1[0xb];\n    }" { (expression_statement "*(int *)(iVar12 + 0x18) = iVar12 + 0xe8;" (assignment_expression "*(int *)(iVar12 + 0x18) = iVar12 + 0xe8" (pointer_expression "*(int *)(iVar12 + 0x18)" * (cast_expression "(int *)(iVar12 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar12 + 0x18)" ( (binary_expression "iVar12 + 0x18" identifier + number_literal) )))) = (binary_expression "iVar12 + 0xe8" identifier + number_literal)) ;) (expression_statement "iVar14 = param_1[0xb];" (assignment_expression "iVar14 = param_1[0xb]" identifier = (subscript_expression "param_1[0xb]" identifier [ number_literal ])) ;) }) (else_clause "else {\n      *(undefined4 *)(iVar12 + 0x18) = *(undefined4 *)(iVar12 + 0x1c);\n      (**(code **)(puVar22 + 0x172cc))(puStack_90,iVar12 + 0xe8,*(int *)(iVar12 + 0x34) + 1);\n      iVar14 = param_1[0xb];\n    }" else (compound_statement "{\n      *(undefined4 *)(iVar12 + 0x18) = *(undefined4 *)(iVar12 + 0x1c);\n      (**(code **)(puVar22 + 0x172cc))(puStack_90,iVar12 + 0xe8,*(int *)(iVar12 + 0x34) + 1);\n      iVar14 = param_1[0xb];\n    }" { (expression_statement "*(undefined4 *)(iVar12 + 0x18) = *(undefined4 *)(iVar12 + 0x1c);" (assignment_expression "*(undefined4 *)(iVar12 + 0x18) = *(undefined4 *)(iVar12 + 0x1c)" (pointer_expression "*(undefined4 *)(iVar12 + 0x18)" * (cast_expression "(undefined4 *)(iVar12 + 0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar12 + 0x18)" ( (binary_expression "iVar12 + 0x18" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(iVar12 + 0x1c)" * (cast_expression "(undefined4 *)(iVar12 + 0x1c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar12 + 0x1c)" ( (binary_expression "iVar12 + 0x1c" identifier + number_literal) ))))) ;) (expression_statement "(**(code **)(puVar22 + 0x172cc))(puStack_90,iVar12 + 0xe8,*(int *)(iVar12 + 0x34) + 1);" (call_expression "(**(code **)(puVar22 + 0x172cc))(puStack_90,iVar12 + 0xe8,*(int *)(iVar12 + 0x34) + 1)" (parenthesized_expression "(**(code **)(puVar22 + 0x172cc))" ( (pointer_expression "**(code **)(puVar22 + 0x172cc)" * (pointer_expression "*(code **)(puVar22 + 0x172cc)" * (cast_expression "(code **)(puVar22 + 0x172cc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar22 + 0x172cc)" ( (binary_expression "puVar22 + 0x172cc" identifier + number_literal) ))))) )) (argument_list "(puStack_90,iVar12 + 0xe8,*(int *)(iVar12 + 0x34) + 1)" ( identifier , (binary_expression "iVar12 + 0xe8" identifier + number_literal) , (binary_expression "*(int *)(iVar12 + 0x34) + 1" (pointer_expression "*(int *)(iVar12 + 0x34)" * (cast_expression "(int *)(iVar12 + 0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar12 + 0x34)" ( (binary_expression "iVar12 + 0x34" identifier + number_literal) )))) + number_literal) ))) ;) (expression_statement "iVar14 = param_1[0xb];" (assignment_expression "iVar14 = param_1[0xb]" identifier = (subscript_expression "param_1[0xb]" identifier [ number_literal ])) ;) }))) (if_statement "if ((iVar14 == 0) || ((param_1[0xc] & 0x400U) != 0)) {\n      if (((param_1[0xc] & 0x18U) == 0x18) && ((*(byte *)((int)puVar10 + 0x12) & 0xfb) != 0)) {\n        *(undefined2 *)(iVar12 + 0x3c) = 0xb;\n        bVar3 = true;\n        if (*(byte *)((int)puVar10 + 0x12) < 0xd) {\n                    /* WARNING: Could not recover jumptable at 0x0001c904. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n          iVar5 = (*(code *)(puVar22 +\n                            *(int *)(iVar9 + 0x2d30 + (uint)*(byte *)((int)puVar10 + 0x12) * 4) +\n                            0x1ef9c))();\n          return iVar5;\n        }\n      }\n      else {\n        *(undefined2 *)(iVar12 + 0x3c) = 0xb;\n        bVar3 = false;\n        if (*(byte *)((int)puVar10 + 0x12) < 0xd) {\n                    /* WARNING: Could not recover jumptable at 0x0001cab8. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n          iVar5 = (*(code *)(puVar22 +\n                            *(int *)(*(int *)(puVar22 + 0x16fd4) + 0x2d64 +\n                                    (uint)*(byte *)((int)puVar10 + 0x12) * 4) + 0x1ef9c))();\n          return iVar5;\n        }\n      }\n      *(undefined4 *)(iVar12 + 0x60) = 0;\n      if (bVar3) {\n        uVar13 = 1;\n      }\n      else {\n        uVar13 = 2;\n      }\n      *(undefined4 *)(iVar12 + 0x84) = uVar13;\n      *(undefined4 *)(iVar12 + 0x80) = 0;\n    }\n    else {\n      uVar15 = FUN_0001b18c(param_1,iVar12,0);\n      *(undefined2 *)(iVar12 + 0x3c) = uVar15;\n    }" if (parenthesized_expression "((iVar14 == 0) || ((param_1[0xc] & 0x400U) != 0))" ( (binary_expression "(iVar14 == 0) || ((param_1[0xc] & 0x400U) != 0)" (parenthesized_expression "(iVar14 == 0)" ( (binary_expression "iVar14 == 0" identifier == number_literal) )) || (parenthesized_expression "((param_1[0xc] & 0x400U) != 0)" ( (binary_expression "(param_1[0xc] & 0x400U) != 0" (parenthesized_expression "(param_1[0xc] & 0x400U)" ( (binary_expression "param_1[0xc] & 0x400U" (subscript_expression "param_1[0xc]" identifier [ number_literal ]) & number_literal) )) != number_literal) ))) )) (compound_statement "{\n      if (((param_1[0xc] & 0x18U) == 0x18) && ((*(byte *)((int)puVar10 + 0x12) & 0xfb) != 0)) {\n        *(undefined2 *)(iVar12 + 0x3c) = 0xb;\n        bVar3 = true;\n        if (*(byte *)((int)puVar10 + 0x12) < 0xd) {\n                    /* WARNING: Could not recover jumptable at 0x0001c904. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n          iVar5 = (*(code *)(puVar22 +\n                            *(int *)(iVar9 + 0x2d30 + (uint)*(byte *)((int)puVar10 + 0x12) * 4) +\n                            0x1ef9c))();\n          return iVar5;\n        }\n      }\n      else {\n        *(undefined2 *)(iVar12 + 0x3c) = 0xb;\n        bVar3 = false;\n        if (*(byte *)((int)puVar10 + 0x12) < 0xd) {\n                    /* WARNING: Could not recover jumptable at 0x0001cab8. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n          iVar5 = (*(code *)(puVar22 +\n                            *(int *)(*(int *)(puVar22 + 0x16fd4) + 0x2d64 +\n                                    (uint)*(byte *)((int)puVar10 + 0x12) * 4) + 0x1ef9c))();\n          return iVar5;\n        }\n      }\n      *(undefined4 *)(iVar12 + 0x60) = 0;\n      if (bVar3) {\n        uVar13 = 1;\n      }\n      else {\n        uVar13 = 2;\n      }\n      *(undefined4 *)(iVar12 + 0x84) = uVar13;\n      *(undefined4 *)(iVar12 + 0x80) = 0;\n    }" { (if_statement "if (((param_1[0xc] & 0x18U) == 0x18) && ((*(byte *)((int)puVar10 + 0x12) & 0xfb) != 0)) {\n        *(undefined2 *)(iVar12 + 0x3c) = 0xb;\n        bVar3 = true;\n        if (*(byte *)((int)puVar10 + 0x12) < 0xd) {\n                    /* WARNING: Could not recover jumptable at 0x0001c904. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n          iVar5 = (*(code *)(puVar22 +\n                            *(int *)(iVar9 + 0x2d30 + (uint)*(byte *)((int)puVar10 + 0x12) * 4) +\n                            0x1ef9c))();\n          return iVar5;\n        }\n      }\n      else {\n        *(undefined2 *)(iVar12 + 0x3c) = 0xb;\n        bVar3 = false;\n        if (*(byte *)((int)puVar10 + 0x12) < 0xd) {\n                    /* WARNING: Could not recover jumptable at 0x0001cab8. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n          iVar5 = (*(code *)(puVar22 +\n                            *(int *)(*(int *)(puVar22 + 0x16fd4) + 0x2d64 +\n                                    (uint)*(byte *)((int)puVar10 + 0x12) * 4) + 0x1ef9c))();\n          return iVar5;\n        }\n      }" if (parenthesized_expression "(((param_1[0xc] & 0x18U) == 0x18) && ((*(byte *)((int)puVar10 + 0x12) & 0xfb) != 0))" ( (binary_expression "((param_1[0xc] & 0x18U) == 0x18) && ((*(byte *)((int)puVar10 + 0x12) & 0xfb) != 0)" (parenthesized_expression "((param_1[0xc] & 0x18U) == 0x18)" ( (binary_expression "(param_1[0xc] & 0x18U) == 0x18" (parenthesized_expression "(param_1[0xc] & 0x18U)" ( (binary_expression "param_1[0xc] & 0x18U" (subscript_expression "param_1[0xc]" identifier [ number_literal ]) & number_literal) )) == number_literal) )) && (parenthesized_expression "((*(byte *)((int)puVar10 + 0x12) & 0xfb) != 0)" ( (binary_expression "(*(byte *)((int)puVar10 + 0x12) & 0xfb) != 0" (parenthesized_expression "(*(byte *)((int)puVar10 + 0x12) & 0xfb)" ( (binary_expression "*(byte *)((int)puVar10 + 0x12) & 0xfb" (pointer_expression "*(byte *)((int)puVar10 + 0x12)" * (cast_expression "(byte *)((int)puVar10 + 0x12)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar10 + 0x12)" ( (binary_expression "(int)puVar10 + 0x12" (cast_expression "(int)puVar10" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) & number_literal) )) != number_literal) ))) )) (compound_statement "{\n        *(undefined2 *)(iVar12 + 0x3c) = 0xb;\n        bVar3 = true;\n        if (*(byte *)((int)puVar10 + 0x12) < 0xd) {\n                    /* WARNING: Could not recover jumptable at 0x0001c904. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n          iVar5 = (*(code *)(puVar22 +\n                            *(int *)(iVar9 + 0x2d30 + (uint)*(byte *)((int)puVar10 + 0x12) * 4) +\n                            0x1ef9c))();\n          return iVar5;\n        }\n      }" { (expression_statement "*(undefined2 *)(iVar12 + 0x3c) = 0xb;" (assignment_expression "*(undefined2 *)(iVar12 + 0x3c) = 0xb" (pointer_expression "*(undefined2 *)(iVar12 + 0x3c)" * (cast_expression "(undefined2 *)(iVar12 + 0x3c)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar12 + 0x3c)" ( (binary_expression "iVar12 + 0x3c" identifier + number_literal) )))) = number_literal) ;) (expression_statement "bVar3 = true;" (assignment_expression "bVar3 = true" identifier = true) ;) (if_statement "if (*(byte *)((int)puVar10 + 0x12) < 0xd) {\n                    /* WARNING: Could not recover jumptable at 0x0001c904. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n          iVar5 = (*(code *)(puVar22 +\n                            *(int *)(iVar9 + 0x2d30 + (uint)*(byte *)((int)puVar10 + 0x12) * 4) +\n                            0x1ef9c))();\n          return iVar5;\n        }" if (parenthesized_expression "(*(byte *)((int)puVar10 + 0x12) < 0xd)" ( (binary_expression "*(byte *)((int)puVar10 + 0x12) < 0xd" (pointer_expression "*(byte *)((int)puVar10 + 0x12)" * (cast_expression "(byte *)((int)puVar10 + 0x12)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar10 + 0x12)" ( (binary_expression "(int)puVar10 + 0x12" (cast_expression "(int)puVar10" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) < number_literal) )) (compound_statement "{\n                    /* WARNING: Could not recover jumptable at 0x0001c904. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n          iVar5 = (*(code *)(puVar22 +\n                            *(int *)(iVar9 + 0x2d30 + (uint)*(byte *)((int)puVar10 + 0x12) * 4) +\n                            0x1ef9c))();\n          return iVar5;\n        }" { comment comment (expression_statement "iVar5 = (*(code *)(puVar22 +\n                            *(int *)(iVar9 + 0x2d30 + (uint)*(byte *)((int)puVar10 + 0x12) * 4) +\n                            0x1ef9c))();" (assignment_expression "iVar5 = (*(code *)(puVar22 +\n                            *(int *)(iVar9 + 0x2d30 + (uint)*(byte *)((int)puVar10 + 0x12) * 4) +\n                            0x1ef9c))()" identifier = (call_expression "(*(code *)(puVar22 +\n                            *(int *)(iVar9 + 0x2d30 + (uint)*(byte *)((int)puVar10 + 0x12) * 4) +\n                            0x1ef9c))()" (parenthesized_expression "(*(code *)(puVar22 +\n                            *(int *)(iVar9 + 0x2d30 + (uint)*(byte *)((int)puVar10 + 0x12) * 4) +\n                            0x1ef9c))" ( (pointer_expression "*(code *)(puVar22 +\n                            *(int *)(iVar9 + 0x2d30 + (uint)*(byte *)((int)puVar10 + 0x12) * 4) +\n                            0x1ef9c)" * (cast_expression "(code *)(puVar22 +\n                            *(int *)(iVar9 + 0x2d30 + (uint)*(byte *)((int)puVar10 + 0x12) * 4) +\n                            0x1ef9c)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar22 +\n                            *(int *)(iVar9 + 0x2d30 + (uint)*(byte *)((int)puVar10 + 0x12) * 4) +\n                            0x1ef9c)" ( (binary_expression "puVar22 +\n                            *(int *)(iVar9 + 0x2d30 + (uint)*(byte *)((int)puVar10 + 0x12) * 4) +\n                            0x1ef9c" (binary_expression "puVar22 +\n                            *(int *)(iVar9 + 0x2d30 + (uint)*(byte *)((int)puVar10 + 0x12) * 4)" identifier + (pointer_expression "*(int *)(iVar9 + 0x2d30 + (uint)*(byte *)((int)puVar10 + 0x12) * 4)" * (cast_expression "(int *)(iVar9 + 0x2d30 + (uint)*(byte *)((int)puVar10 + 0x12) * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 0x2d30 + (uint)*(byte *)((int)puVar10 + 0x12) * 4)" ( (binary_expression "iVar9 + 0x2d30 + (uint)*(byte *)((int)puVar10 + 0x12) * 4" (binary_expression "iVar9 + 0x2d30" identifier + number_literal) + (binary_expression "(uint)*(byte *)((int)puVar10 + 0x12) * 4" (binary_expression "(uint)*(byte *)((int)puVar10 + 0x12)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)((int)puVar10 + 0x12)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar10 + 0x12)" ( (binary_expression "(int)puVar10 + 0x12" (cast_expression "(int)puVar10" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) * number_literal)) ))))) + number_literal) )))) )) (argument_list "()" ( )))) ;) (return_statement "return iVar5;" return identifier ;) })) }) (else_clause "else {\n        *(undefined2 *)(iVar12 + 0x3c) = 0xb;\n        bVar3 = false;\n        if (*(byte *)((int)puVar10 + 0x12) < 0xd) {\n                    /* WARNING: Could not recover jumptable at 0x0001cab8. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n          iVar5 = (*(code *)(puVar22 +\n                            *(int *)(*(int *)(puVar22 + 0x16fd4) + 0x2d64 +\n                                    (uint)*(byte *)((int)puVar10 + 0x12) * 4) + 0x1ef9c))();\n          return iVar5;\n        }\n      }" else (compound_statement "{\n        *(undefined2 *)(iVar12 + 0x3c) = 0xb;\n        bVar3 = false;\n        if (*(byte *)((int)puVar10 + 0x12) < 0xd) {\n                    /* WARNING: Could not recover jumptable at 0x0001cab8. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n          iVar5 = (*(code *)(puVar22 +\n                            *(int *)(*(int *)(puVar22 + 0x16fd4) + 0x2d64 +\n                                    (uint)*(byte *)((int)puVar10 + 0x12) * 4) + 0x1ef9c))();\n          return iVar5;\n        }\n      }" { (expression_statement "*(undefined2 *)(iVar12 + 0x3c) = 0xb;" (assignment_expression "*(undefined2 *)(iVar12 + 0x3c) = 0xb" (pointer_expression "*(undefined2 *)(iVar12 + 0x3c)" * (cast_expression "(undefined2 *)(iVar12 + 0x3c)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar12 + 0x3c)" ( (binary_expression "iVar12 + 0x3c" identifier + number_literal) )))) = number_literal) ;) (expression_statement "bVar3 = false;" (assignment_expression "bVar3 = false" identifier = false) ;) (if_statement "if (*(byte *)((int)puVar10 + 0x12) < 0xd) {\n                    /* WARNING: Could not recover jumptable at 0x0001cab8. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n          iVar5 = (*(code *)(puVar22 +\n                            *(int *)(*(int *)(puVar22 + 0x16fd4) + 0x2d64 +\n                                    (uint)*(byte *)((int)puVar10 + 0x12) * 4) + 0x1ef9c))();\n          return iVar5;\n        }" if (parenthesized_expression "(*(byte *)((int)puVar10 + 0x12) < 0xd)" ( (binary_expression "*(byte *)((int)puVar10 + 0x12) < 0xd" (pointer_expression "*(byte *)((int)puVar10 + 0x12)" * (cast_expression "(byte *)((int)puVar10 + 0x12)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar10 + 0x12)" ( (binary_expression "(int)puVar10 + 0x12" (cast_expression "(int)puVar10" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) < number_literal) )) (compound_statement "{\n                    /* WARNING: Could not recover jumptable at 0x0001cab8. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n          iVar5 = (*(code *)(puVar22 +\n                            *(int *)(*(int *)(puVar22 + 0x16fd4) + 0x2d64 +\n                                    (uint)*(byte *)((int)puVar10 + 0x12) * 4) + 0x1ef9c))();\n          return iVar5;\n        }" { comment comment (expression_statement "iVar5 = (*(code *)(puVar22 +\n                            *(int *)(*(int *)(puVar22 + 0x16fd4) + 0x2d64 +\n                                    (uint)*(byte *)((int)puVar10 + 0x12) * 4) + 0x1ef9c))();" (assignment_expression "iVar5 = (*(code *)(puVar22 +\n                            *(int *)(*(int *)(puVar22 + 0x16fd4) + 0x2d64 +\n                                    (uint)*(byte *)((int)puVar10 + 0x12) * 4) + 0x1ef9c))()" identifier = (call_expression "(*(code *)(puVar22 +\n                            *(int *)(*(int *)(puVar22 + 0x16fd4) + 0x2d64 +\n                                    (uint)*(byte *)((int)puVar10 + 0x12) * 4) + 0x1ef9c))()" (parenthesized_expression "(*(code *)(puVar22 +\n                            *(int *)(*(int *)(puVar22 + 0x16fd4) + 0x2d64 +\n                                    (uint)*(byte *)((int)puVar10 + 0x12) * 4) + 0x1ef9c))" ( (pointer_expression "*(code *)(puVar22 +\n                            *(int *)(*(int *)(puVar22 + 0x16fd4) + 0x2d64 +\n                                    (uint)*(byte *)((int)puVar10 + 0x12) * 4) + 0x1ef9c)" * (cast_expression "(code *)(puVar22 +\n                            *(int *)(*(int *)(puVar22 + 0x16fd4) + 0x2d64 +\n                                    (uint)*(byte *)((int)puVar10 + 0x12) * 4) + 0x1ef9c)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar22 +\n                            *(int *)(*(int *)(puVar22 + 0x16fd4) + 0x2d64 +\n                                    (uint)*(byte *)((int)puVar10 + 0x12) * 4) + 0x1ef9c)" ( (binary_expression "puVar22 +\n                            *(int *)(*(int *)(puVar22 + 0x16fd4) + 0x2d64 +\n                                    (uint)*(byte *)((int)puVar10 + 0x12) * 4) + 0x1ef9c" (binary_expression "puVar22 +\n                            *(int *)(*(int *)(puVar22 + 0x16fd4) + 0x2d64 +\n                                    (uint)*(byte *)((int)puVar10 + 0x12) * 4)" identifier + (pointer_expression "*(int *)(*(int *)(puVar22 + 0x16fd4) + 0x2d64 +\n                                    (uint)*(byte *)((int)puVar10 + 0x12) * 4)" * (cast_expression "(int *)(*(int *)(puVar22 + 0x16fd4) + 0x2d64 +\n                                    (uint)*(byte *)((int)puVar10 + 0x12) * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar22 + 0x16fd4) + 0x2d64 +\n                                    (uint)*(byte *)((int)puVar10 + 0x12) * 4)" ( (binary_expression "*(int *)(puVar22 + 0x16fd4) + 0x2d64 +\n                                    (uint)*(byte *)((int)puVar10 + 0x12) * 4" (binary_expression "*(int *)(puVar22 + 0x16fd4) + 0x2d64" (pointer_expression "*(int *)(puVar22 + 0x16fd4)" * (cast_expression "(int *)(puVar22 + 0x16fd4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar22 + 0x16fd4)" ( (binary_expression "puVar22 + 0x16fd4" identifier + number_literal) )))) + number_literal) + (binary_expression "(uint)*(byte *)((int)puVar10 + 0x12) * 4" (binary_expression "(uint)*(byte *)((int)puVar10 + 0x12)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)((int)puVar10 + 0x12)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar10 + 0x12)" ( (binary_expression "(int)puVar10 + 0x12" (cast_expression "(int)puVar10" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) * number_literal)) ))))) + number_literal) )))) )) (argument_list "()" ( )))) ;) (return_statement "return iVar5;" return identifier ;) })) }))) (expression_statement "*(undefined4 *)(iVar12 + 0x60) = 0;" (assignment_expression "*(undefined4 *)(iVar12 + 0x60) = 0" (pointer_expression "*(undefined4 *)(iVar12 + 0x60)" * (cast_expression "(undefined4 *)(iVar12 + 0x60)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar12 + 0x60)" ( (binary_expression "iVar12 + 0x60" identifier + number_literal) )))) = number_literal) ;) (if_statement "if (bVar3) {\n        uVar13 = 1;\n      }\n      else {\n        uVar13 = 2;\n      }" if (parenthesized_expression "(bVar3)" ( identifier )) (compound_statement "{\n        uVar13 = 1;\n      }" { (expression_statement "uVar13 = 1;" (assignment_expression "uVar13 = 1" identifier = number_literal) ;) }) (else_clause "else {\n        uVar13 = 2;\n      }" else (compound_statement "{\n        uVar13 = 2;\n      }" { (expression_statement "uVar13 = 2;" (assignment_expression "uVar13 = 2" identifier = number_literal) ;) }))) (expression_statement "*(undefined4 *)(iVar12 + 0x84) = uVar13;" (assignment_expression "*(undefined4 *)(iVar12 + 0x84) = uVar13" (pointer_expression "*(undefined4 *)(iVar12 + 0x84)" * (cast_expression "(undefined4 *)(iVar12 + 0x84)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar12 + 0x84)" ( (binary_expression "iVar12 + 0x84" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(iVar12 + 0x80) = 0;" (assignment_expression "*(undefined4 *)(iVar12 + 0x80) = 0" (pointer_expression "*(undefined4 *)(iVar12 + 0x80)" * (cast_expression "(undefined4 *)(iVar12 + 0x80)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar12 + 0x80)" ( (binary_expression "iVar12 + 0x80" identifier + number_literal) )))) = number_literal) ;) }) (else_clause "else {\n      uVar15 = FUN_0001b18c(param_1,iVar12,0);\n      *(undefined2 *)(iVar12 + 0x3c) = uVar15;\n    }" else (compound_statement "{\n      uVar15 = FUN_0001b18c(param_1,iVar12,0);\n      *(undefined2 *)(iVar12 + 0x3c) = uVar15;\n    }" { (expression_statement "uVar15 = FUN_0001b18c(param_1,iVar12,0);" (assignment_expression "uVar15 = FUN_0001b18c(param_1,iVar12,0)" identifier = (call_expression "FUN_0001b18c(param_1,iVar12,0)" identifier (argument_list "(param_1,iVar12,0)" ( identifier , identifier , number_literal )))) ;) (expression_statement "*(undefined2 *)(iVar12 + 0x3c) = uVar15;" (assignment_expression "*(undefined2 *)(iVar12 + 0x3c) = uVar15" (pointer_expression "*(undefined2 *)(iVar12 + 0x3c)" * (cast_expression "(undefined2 *)(iVar12 + 0x3c)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar12 + 0x3c)" ( (binary_expression "iVar12 + 0x3c" identifier + number_literal) )))) = identifier) ;) }))) (expression_statement "*(undefined4 *)(iVar12 + 8) = 0;" (assignment_expression "*(undefined4 *)(iVar12 + 8) = 0" (pointer_expression "*(undefined4 *)(iVar12 + 8)" * (cast_expression "(undefined4 *)(iVar12 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar12 + 8)" ( (binary_expression "iVar12 + 8" identifier + number_literal) )))) = number_literal) ;) (expression_statement "iVar14 = iVar12;" (assignment_expression "iVar14 = iVar12" identifier = identifier) ;) (if_statement "if (iStack_a0 != 0) {\n      *(int *)(iStack_a4 + 8) = iVar12;\n      iVar14 = iStack_a0;\n    }" if (parenthesized_expression "(iStack_a0 != 0)" ( (binary_expression "iStack_a0 != 0" identifier != number_literal) )) (compound_statement "{\n      *(int *)(iStack_a4 + 8) = iVar12;\n      iVar14 = iStack_a0;\n    }" { (expression_statement "*(int *)(iStack_a4 + 8) = iVar12;" (assignment_expression "*(int *)(iStack_a4 + 8) = iVar12" (pointer_expression "*(int *)(iStack_a4 + 8)" * (cast_expression "(int *)(iStack_a4 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iStack_a4 + 8)" ( (binary_expression "iStack_a4 + 8" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar14 = iStack_a0;" (assignment_expression "iVar14 = iStack_a0" identifier = identifier) ;) })) (expression_statement "iStack_a0 = iVar14;" (assignment_expression "iStack_a0 = iVar14" identifier = identifier) ;) (expression_statement "iStack_a4 = iVar12;" (assignment_expression "iStack_a4 = iVar12" identifier = identifier) ;) (if_statement "if (uVar19 == 10000) {\n      if (param_1[0xb] != 0) {\nLAB_0001cb74:\n        uVar19 = 0x2711;\n        goto LAB_0001c96c;\n      }\n      iVar12 = (*(code *)(iVar8 + -0x47a8))(iVar18,iStack_7c);\n      if (iVar12 == 0x6969) {\n        bVar4 = false;\n      }\n      else if (iVar12 == 0x1021994) {\n        bVar4 = false;\n      }\n      else {\n        if (iVar12 != -0xacb2be) {\n          bVar4 = true;\n          goto LAB_0001cb74;\n        }\n        bVar4 = false;\n      }\n    }" if (parenthesized_expression "(uVar19 == 10000)" ( (binary_expression "uVar19 == 10000" identifier == number_literal) )) (compound_statement "{\n      if (param_1[0xb] != 0) {\nLAB_0001cb74:\n        uVar19 = 0x2711;\n        goto LAB_0001c96c;\n      }\n      iVar12 = (*(code *)(iVar8 + -0x47a8))(iVar18,iStack_7c);\n      if (iVar12 == 0x6969) {\n        bVar4 = false;\n      }\n      else if (iVar12 == 0x1021994) {\n        bVar4 = false;\n      }\n      else {\n        if (iVar12 != -0xacb2be) {\n          bVar4 = true;\n          goto LAB_0001cb74;\n        }\n        bVar4 = false;\n      }\n    }" { (if_statement "if (param_1[0xb] != 0) {\nLAB_0001cb74:\n        uVar19 = 0x2711;\n        goto LAB_0001c96c;\n      }" if (parenthesized_expression "(param_1[0xb] != 0)" ( (binary_expression "param_1[0xb] != 0" (subscript_expression "param_1[0xb]" identifier [ number_literal ]) != number_literal) )) (compound_statement "{\nLAB_0001cb74:\n        uVar19 = 0x2711;\n        goto LAB_0001c96c;\n      }" { (labeled_statement "LAB_0001cb74:\n        uVar19 = 0x2711;" statement_identifier : (expression_statement "uVar19 = 0x2711;" (assignment_expression "uVar19 = 0x2711" identifier = number_literal) ;)) (goto_statement "goto LAB_0001c96c;" goto statement_identifier ;) })) (expression_statement "iVar12 = (*(code *)(iVar8 + -0x47a8))(iVar18,iStack_7c);" (assignment_expression "iVar12 = (*(code *)(iVar8 + -0x47a8))(iVar18,iStack_7c)" identifier = (call_expression "(*(code *)(iVar8 + -0x47a8))(iVar18,iStack_7c)" (parenthesized_expression "(*(code *)(iVar8 + -0x47a8))" ( (pointer_expression "*(code *)(iVar8 + -0x47a8)" * (cast_expression "(code *)(iVar8 + -0x47a8)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + -0x47a8)" ( (binary_expression "iVar8 + -0x47a8" identifier + number_literal) )))) )) (argument_list "(iVar18,iStack_7c)" ( identifier , identifier )))) ;) (if_statement "if (iVar12 == 0x6969) {\n        bVar4 = false;\n      }\n      else if (iVar12 == 0x1021994) {\n        bVar4 = false;\n      }\n      else {\n        if (iVar12 != -0xacb2be) {\n          bVar4 = true;\n          goto LAB_0001cb74;\n        }\n        bVar4 = false;\n      }" if (parenthesized_expression "(iVar12 == 0x6969)" ( (binary_expression "iVar12 == 0x6969" identifier == number_literal) )) (compound_statement "{\n        bVar4 = false;\n      }" { (expression_statement "bVar4 = false;" (assignment_expression "bVar4 = false" identifier = false) ;) }) (else_clause "else if (iVar12 == 0x1021994) {\n        bVar4 = false;\n      }\n      else {\n        if (iVar12 != -0xacb2be) {\n          bVar4 = true;\n          goto LAB_0001cb74;\n        }\n        bVar4 = false;\n      }" else (if_statement "if (iVar12 == 0x1021994) {\n        bVar4 = false;\n      }\n      else {\n        if (iVar12 != -0xacb2be) {\n          bVar4 = true;\n          goto LAB_0001cb74;\n        }\n        bVar4 = false;\n      }" if (parenthesized_expression "(iVar12 == 0x1021994)" ( (binary_expression "iVar12 == 0x1021994" identifier == number_literal) )) (compound_statement "{\n        bVar4 = false;\n      }" { (expression_statement "bVar4 = false;" (assignment_expression "bVar4 = false" identifier = false) ;) }) (else_clause "else {\n        if (iVar12 != -0xacb2be) {\n          bVar4 = true;\n          goto LAB_0001cb74;\n        }\n        bVar4 = false;\n      }" else (compound_statement "{\n        if (iVar12 != -0xacb2be) {\n          bVar4 = true;\n          goto LAB_0001cb74;\n        }\n        bVar4 = false;\n      }" { (if_statement "if (iVar12 != -0xacb2be) {\n          bVar4 = true;\n          goto LAB_0001cb74;\n        }" if (parenthesized_expression "(iVar12 != -0xacb2be)" ( (binary_expression "iVar12 != -0xacb2be" identifier != number_literal) )) (compound_statement "{\n          bVar4 = true;\n          goto LAB_0001cb74;\n        }" { (expression_statement "bVar4 = true;" (assignment_expression "bVar4 = true" identifier = true) ;) (goto_statement "goto LAB_0001cb74;" goto statement_identifier ;) })) (expression_statement "bVar4 = false;" (assignment_expression "bVar4 = false" identifier = false) ;) }))))) })) (expression_statement "uVar19 = uVar19 + 1;" (assignment_expression "uVar19 = uVar19 + 1" identifier = (binary_expression "uVar19 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar19 < uStack_94)" ( (binary_expression "uVar19 < uStack_94" identifier < identifier) )) ;)) (labeled_statement "LAB_0001c66c:\n  if (iStack_8c != 0) {\n    iVar6 = param_1[6];\n    for (iVar17 = param_1[1]; iVar7 = iStack_a0, iVar17 != 0; iVar17 = *(int *)(iVar17 + 8)) {\n      if (*(int *)(iVar17 + 0x18) != iVar17 + 0xe8) {\n        *(int *)(iVar17 + 0x18) = iVar6 + (*(int *)(iVar17 + 0x18) - *(int *)(iVar17 + 0x1c));\n      }\n      *(int *)(iVar17 + 0x1c) = iVar6;\n    }\n    while (iVar17 = iVar7, -1 < *(int *)(iVar17 + 0x30)) {\n      if (*(int *)(iVar17 + 0x18) != iVar17 + 0xe8) {\n        *(int *)(iVar17 + 0x18) = iVar6 + (*(int *)(iVar17 + 0x18) - *(int *)(iVar17 + 0x1c));\n      }\n      *(int *)(iVar17 + 0x1c) = iVar6;\n      iVar7 = *(int *)(iVar17 + 8);\n      if (*(int *)(iVar17 + 8) == 0) {\n        iVar7 = *(int *)(iVar17 + 4);\n      }\n    }\n  }" statement_identifier : (if_statement "if (iStack_8c != 0) {\n    iVar6 = param_1[6];\n    for (iVar17 = param_1[1]; iVar7 = iStack_a0, iVar17 != 0; iVar17 = *(int *)(iVar17 + 8)) {\n      if (*(int *)(iVar17 + 0x18) != iVar17 + 0xe8) {\n        *(int *)(iVar17 + 0x18) = iVar6 + (*(int *)(iVar17 + 0x18) - *(int *)(iVar17 + 0x1c));\n      }\n      *(int *)(iVar17 + 0x1c) = iVar6;\n    }\n    while (iVar17 = iVar7, -1 < *(int *)(iVar17 + 0x30)) {\n      if (*(int *)(iVar17 + 0x18) != iVar17 + 0xe8) {\n        *(int *)(iVar17 + 0x18) = iVar6 + (*(int *)(iVar17 + 0x18) - *(int *)(iVar17 + 0x1c));\n      }\n      *(int *)(iVar17 + 0x1c) = iVar6;\n      iVar7 = *(int *)(iVar17 + 8);\n      if (*(int *)(iVar17 + 8) == 0) {\n        iVar7 = *(int *)(iVar17 + 4);\n      }\n    }\n  }" if (parenthesized_expression "(iStack_8c != 0)" ( (binary_expression "iStack_8c != 0" identifier != number_literal) )) (compound_statement "{\n    iVar6 = param_1[6];\n    for (iVar17 = param_1[1]; iVar7 = iStack_a0, iVar17 != 0; iVar17 = *(int *)(iVar17 + 8)) {\n      if (*(int *)(iVar17 + 0x18) != iVar17 + 0xe8) {\n        *(int *)(iVar17 + 0x18) = iVar6 + (*(int *)(iVar17 + 0x18) - *(int *)(iVar17 + 0x1c));\n      }\n      *(int *)(iVar17 + 0x1c) = iVar6;\n    }\n    while (iVar17 = iVar7, -1 < *(int *)(iVar17 + 0x30)) {\n      if (*(int *)(iVar17 + 0x18) != iVar17 + 0xe8) {\n        *(int *)(iVar17 + 0x18) = iVar6 + (*(int *)(iVar17 + 0x18) - *(int *)(iVar17 + 0x1c));\n      }\n      *(int *)(iVar17 + 0x1c) = iVar6;\n      iVar7 = *(int *)(iVar17 + 8);\n      if (*(int *)(iVar17 + 8) == 0) {\n        iVar7 = *(int *)(iVar17 + 4);\n      }\n    }\n  }" { (expression_statement "iVar6 = param_1[6];" (assignment_expression "iVar6 = param_1[6]" identifier = (subscript_expression "param_1[6]" identifier [ number_literal ])) ;) (for_statement "for (iVar17 = param_1[1]; iVar7 = iStack_a0, iVar17 != 0; iVar17 = *(int *)(iVar17 + 8)) {\n      if (*(int *)(iVar17 + 0x18) != iVar17 + 0xe8) {\n        *(int *)(iVar17 + 0x18) = iVar6 + (*(int *)(iVar17 + 0x18) - *(int *)(iVar17 + 0x1c));\n      }\n      *(int *)(iVar17 + 0x1c) = iVar6;\n    }" for ( (assignment_expression "iVar17 = param_1[1]" identifier = (subscript_expression "param_1[1]" identifier [ number_literal ])) ; (comma_expression "iVar7 = iStack_a0, iVar17 != 0" (assignment_expression "iVar7 = iStack_a0" identifier = identifier) , (binary_expression "iVar17 != 0" identifier != number_literal)) ; (assignment_expression "iVar17 = *(int *)(iVar17 + 8)" identifier = (pointer_expression "*(int *)(iVar17 + 8)" * (cast_expression "(int *)(iVar17 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar17 + 8)" ( (binary_expression "iVar17 + 8" identifier + number_literal) ))))) ) (compound_statement "{\n      if (*(int *)(iVar17 + 0x18) != iVar17 + 0xe8) {\n        *(int *)(iVar17 + 0x18) = iVar6 + (*(int *)(iVar17 + 0x18) - *(int *)(iVar17 + 0x1c));\n      }\n      *(int *)(iVar17 + 0x1c) = iVar6;\n    }" { (if_statement "if (*(int *)(iVar17 + 0x18) != iVar17 + 0xe8) {\n        *(int *)(iVar17 + 0x18) = iVar6 + (*(int *)(iVar17 + 0x18) - *(int *)(iVar17 + 0x1c));\n      }" if (parenthesized_expression "(*(int *)(iVar17 + 0x18) != iVar17 + 0xe8)" ( (binary_expression "*(int *)(iVar17 + 0x18) != iVar17 + 0xe8" (pointer_expression "*(int *)(iVar17 + 0x18)" * (cast_expression "(int *)(iVar17 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar17 + 0x18)" ( (binary_expression "iVar17 + 0x18" identifier + number_literal) )))) != (binary_expression "iVar17 + 0xe8" identifier + number_literal)) )) (compound_statement "{\n        *(int *)(iVar17 + 0x18) = iVar6 + (*(int *)(iVar17 + 0x18) - *(int *)(iVar17 + 0x1c));\n      }" { (expression_statement "*(int *)(iVar17 + 0x18) = iVar6 + (*(int *)(iVar17 + 0x18) - *(int *)(iVar17 + 0x1c));" (assignment_expression "*(int *)(iVar17 + 0x18) = iVar6 + (*(int *)(iVar17 + 0x18) - *(int *)(iVar17 + 0x1c))" (pointer_expression "*(int *)(iVar17 + 0x18)" * (cast_expression "(int *)(iVar17 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar17 + 0x18)" ( (binary_expression "iVar17 + 0x18" identifier + number_literal) )))) = (binary_expression "iVar6 + (*(int *)(iVar17 + 0x18) - *(int *)(iVar17 + 0x1c))" identifier + (parenthesized_expression "(*(int *)(iVar17 + 0x18) - *(int *)(iVar17 + 0x1c))" ( (binary_expression "*(int *)(iVar17 + 0x18) - *(int *)(iVar17 + 0x1c)" (pointer_expression "*(int *)(iVar17 + 0x18)" * (cast_expression "(int *)(iVar17 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar17 + 0x18)" ( (binary_expression "iVar17 + 0x18" identifier + number_literal) )))) - (pointer_expression "*(int *)(iVar17 + 0x1c)" * (cast_expression "(int *)(iVar17 + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar17 + 0x1c)" ( (binary_expression "iVar17 + 0x1c" identifier + number_literal) ))))) )))) ;) })) (expression_statement "*(int *)(iVar17 + 0x1c) = iVar6;" (assignment_expression "*(int *)(iVar17 + 0x1c) = iVar6" (pointer_expression "*(int *)(iVar17 + 0x1c)" * (cast_expression "(int *)(iVar17 + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar17 + 0x1c)" ( (binary_expression "iVar17 + 0x1c" identifier + number_literal) )))) = identifier) ;) })) (while_statement "while (iVar17 = iVar7, -1 < *(int *)(iVar17 + 0x30)) {\n      if (*(int *)(iVar17 + 0x18) != iVar17 + 0xe8) {\n        *(int *)(iVar17 + 0x18) = iVar6 + (*(int *)(iVar17 + 0x18) - *(int *)(iVar17 + 0x1c));\n      }\n      *(int *)(iVar17 + 0x1c) = iVar6;\n      iVar7 = *(int *)(iVar17 + 8);\n      if (*(int *)(iVar17 + 8) == 0) {\n        iVar7 = *(int *)(iVar17 + 4);\n      }\n    }" while (parenthesized_expression "(iVar17 = iVar7, -1 < *(int *)(iVar17 + 0x30))" ( (comma_expression "iVar17 = iVar7, -1 < *(int *)(iVar17 + 0x30)" (assignment_expression "iVar17 = iVar7" identifier = identifier) , (binary_expression "-1 < *(int *)(iVar17 + 0x30)" number_literal < (pointer_expression "*(int *)(iVar17 + 0x30)" * (cast_expression "(int *)(iVar17 + 0x30)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar17 + 0x30)" ( (binary_expression "iVar17 + 0x30" identifier + number_literal) )))))) )) (compound_statement "{\n      if (*(int *)(iVar17 + 0x18) != iVar17 + 0xe8) {\n        *(int *)(iVar17 + 0x18) = iVar6 + (*(int *)(iVar17 + 0x18) - *(int *)(iVar17 + 0x1c));\n      }\n      *(int *)(iVar17 + 0x1c) = iVar6;\n      iVar7 = *(int *)(iVar17 + 8);\n      if (*(int *)(iVar17 + 8) == 0) {\n        iVar7 = *(int *)(iVar17 + 4);\n      }\n    }" { (if_statement "if (*(int *)(iVar17 + 0x18) != iVar17 + 0xe8) {\n        *(int *)(iVar17 + 0x18) = iVar6 + (*(int *)(iVar17 + 0x18) - *(int *)(iVar17 + 0x1c));\n      }" if (parenthesized_expression "(*(int *)(iVar17 + 0x18) != iVar17 + 0xe8)" ( (binary_expression "*(int *)(iVar17 + 0x18) != iVar17 + 0xe8" (pointer_expression "*(int *)(iVar17 + 0x18)" * (cast_expression "(int *)(iVar17 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar17 + 0x18)" ( (binary_expression "iVar17 + 0x18" identifier + number_literal) )))) != (binary_expression "iVar17 + 0xe8" identifier + number_literal)) )) (compound_statement "{\n        *(int *)(iVar17 + 0x18) = iVar6 + (*(int *)(iVar17 + 0x18) - *(int *)(iVar17 + 0x1c));\n      }" { (expression_statement "*(int *)(iVar17 + 0x18) = iVar6 + (*(int *)(iVar17 + 0x18) - *(int *)(iVar17 + 0x1c));" (assignment_expression "*(int *)(iVar17 + 0x18) = iVar6 + (*(int *)(iVar17 + 0x18) - *(int *)(iVar17 + 0x1c))" (pointer_expression "*(int *)(iVar17 + 0x18)" * (cast_expression "(int *)(iVar17 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar17 + 0x18)" ( (binary_expression "iVar17 + 0x18" identifier + number_literal) )))) = (binary_expression "iVar6 + (*(int *)(iVar17 + 0x18) - *(int *)(iVar17 + 0x1c))" identifier + (parenthesized_expression "(*(int *)(iVar17 + 0x18) - *(int *)(iVar17 + 0x1c))" ( (binary_expression "*(int *)(iVar17 + 0x18) - *(int *)(iVar17 + 0x1c)" (pointer_expression "*(int *)(iVar17 + 0x18)" * (cast_expression "(int *)(iVar17 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar17 + 0x18)" ( (binary_expression "iVar17 + 0x18" identifier + number_literal) )))) - (pointer_expression "*(int *)(iVar17 + 0x1c)" * (cast_expression "(int *)(iVar17 + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar17 + 0x1c)" ( (binary_expression "iVar17 + 0x1c" identifier + number_literal) ))))) )))) ;) })) (expression_statement "*(int *)(iVar17 + 0x1c) = iVar6;" (assignment_expression "*(int *)(iVar17 + 0x1c) = iVar6" (pointer_expression "*(int *)(iVar17 + 0x1c)" * (cast_expression "(int *)(iVar17 + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar17 + 0x1c)" ( (binary_expression "iVar17 + 0x1c" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar7 = *(int *)(iVar17 + 8);" (assignment_expression "iVar7 = *(int *)(iVar17 + 8)" identifier = (pointer_expression "*(int *)(iVar17 + 8)" * (cast_expression "(int *)(iVar17 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar17 + 8)" ( (binary_expression "iVar17 + 8" identifier + number_literal) ))))) ;) (if_statement "if (*(int *)(iVar17 + 8) == 0) {\n        iVar7 = *(int *)(iVar17 + 4);\n      }" if (parenthesized_expression "(*(int *)(iVar17 + 8) == 0)" ( (binary_expression "*(int *)(iVar17 + 8) == 0" (pointer_expression "*(int *)(iVar17 + 8)" * (cast_expression "(int *)(iVar17 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar17 + 8)" ( (binary_expression "iVar17 + 8" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n        iVar7 = *(int *)(iVar17 + 4);\n      }" { (expression_statement "iVar7 = *(int *)(iVar17 + 4);" (assignment_expression "iVar7 = *(int *)(iVar17 + 4)" identifier = (pointer_expression "*(int *)(iVar17 + 4)" * (cast_expression "(int *)(iVar17 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar17 + 4)" ( (binary_expression "iVar17 + 4" identifier + number_literal) ))))) ;) })) })) }))) (if_statement "if ((param_1[0xc] & 4U) != 0) {\n    if ((param_1[9] == uVar20) || (uVar19 == 0)) {\n      puStack_90 = puStack_90 + -1;\n    }\n    *puStack_90 = 0;\n  }" if (parenthesized_expression "((param_1[0xc] & 4U) != 0)" ( (binary_expression "(param_1[0xc] & 4U) != 0" (parenthesized_expression "(param_1[0xc] & 4U)" ( (binary_expression "param_1[0xc] & 4U" (subscript_expression "param_1[0xc]" identifier [ number_literal ]) & number_literal) )) != number_literal) )) (compound_statement "{\n    if ((param_1[9] == uVar20) || (uVar19 == 0)) {\n      puStack_90 = puStack_90 + -1;\n    }\n    *puStack_90 = 0;\n  }" { (if_statement "if ((param_1[9] == uVar20) || (uVar19 == 0)) {\n      puStack_90 = puStack_90 + -1;\n    }" if (parenthesized_expression "((param_1[9] == uVar20) || (uVar19 == 0))" ( (binary_expression "(param_1[9] == uVar20) || (uVar19 == 0)" (parenthesized_expression "(param_1[9] == uVar20)" ( (binary_expression "param_1[9] == uVar20" (subscript_expression "param_1[9]" identifier [ number_literal ]) == identifier) )) || (parenthesized_expression "(uVar19 == 0)" ( (binary_expression "uVar19 == 0" identifier == number_literal) ))) )) (compound_statement "{\n      puStack_90 = puStack_90 + -1;\n    }" { (expression_statement "puStack_90 = puStack_90 + -1;" (assignment_expression "puStack_90 = puStack_90 + -1" identifier = (binary_expression "puStack_90 + -1" identifier + number_literal)) ;) })) (expression_statement "*puStack_90 = 0;" (assignment_expression "*puStack_90 = 0" (pointer_expression "*puStack_90" * identifier) = number_literal) ;) })) (if_statement "if ((iVar5 == 0) && (bVar2)) {\n    if ((param_2 != (undefined4 *)0x1) && (uVar19 != 0)) goto LAB_0001c6c0;\n    if (*(int *)(iVar18 + 0x30) == 0) {\n      iVar5 = FUN_0001bcbc(param_1);\n    }\n    else {\n      iVar5 = FUN_0001bd68(param_1,*(undefined4 *)(iVar18 + 4),0xffffffff,\n                           *(int *)(puVar22 + 0x16fd4) + 0x2d20);\n    }\n    if (iVar5 != 0) {\n      *(undefined2 *)(iVar18 + 0x3c) = 7;\n      param_1[0xc] = param_1[0xc] | 0x4000;\n      FUN_0001b6fc(iStack_a0);\n      return 0;\n    }\n  }" if (parenthesized_expression "((iVar5 == 0) && (bVar2))" ( (binary_expression "(iVar5 == 0) && (bVar2)" (parenthesized_expression "(iVar5 == 0)" ( (binary_expression "iVar5 == 0" identifier == number_literal) )) && (parenthesized_expression "(bVar2)" ( identifier ))) )) (compound_statement "{\n    if ((param_2 != (undefined4 *)0x1) && (uVar19 != 0)) goto LAB_0001c6c0;\n    if (*(int *)(iVar18 + 0x30) == 0) {\n      iVar5 = FUN_0001bcbc(param_1);\n    }\n    else {\n      iVar5 = FUN_0001bd68(param_1,*(undefined4 *)(iVar18 + 4),0xffffffff,\n                           *(int *)(puVar22 + 0x16fd4) + 0x2d20);\n    }\n    if (iVar5 != 0) {\n      *(undefined2 *)(iVar18 + 0x3c) = 7;\n      param_1[0xc] = param_1[0xc] | 0x4000;\n      FUN_0001b6fc(iStack_a0);\n      return 0;\n    }\n  }" { (if_statement "if ((param_2 != (undefined4 *)0x1) && (uVar19 != 0)) goto LAB_0001c6c0;" if (parenthesized_expression "((param_2 != (undefined4 *)0x1) && (uVar19 != 0))" ( (binary_expression "(param_2 != (undefined4 *)0x1) && (uVar19 != 0)" (parenthesized_expression "(param_2 != (undefined4 *)0x1)" ( (binary_expression "param_2 != (undefined4 *)0x1" identifier != (cast_expression "(undefined4 *)0x1" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(uVar19 != 0)" ( (binary_expression "uVar19 != 0" identifier != number_literal) ))) )) (goto_statement "goto LAB_0001c6c0;" goto statement_identifier ;)) (if_statement "if (*(int *)(iVar18 + 0x30) == 0) {\n      iVar5 = FUN_0001bcbc(param_1);\n    }\n    else {\n      iVar5 = FUN_0001bd68(param_1,*(undefined4 *)(iVar18 + 4),0xffffffff,\n                           *(int *)(puVar22 + 0x16fd4) + 0x2d20);\n    }" if (parenthesized_expression "(*(int *)(iVar18 + 0x30) == 0)" ( (binary_expression "*(int *)(iVar18 + 0x30) == 0" (pointer_expression "*(int *)(iVar18 + 0x30)" * (cast_expression "(int *)(iVar18 + 0x30)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar18 + 0x30)" ( (binary_expression "iVar18 + 0x30" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n      iVar5 = FUN_0001bcbc(param_1);\n    }" { (expression_statement "iVar5 = FUN_0001bcbc(param_1);" (assignment_expression "iVar5 = FUN_0001bcbc(param_1)" identifier = (call_expression "FUN_0001bcbc(param_1)" identifier (argument_list "(param_1)" ( identifier )))) ;) }) (else_clause "else {\n      iVar5 = FUN_0001bd68(param_1,*(undefined4 *)(iVar18 + 4),0xffffffff,\n                           *(int *)(puVar22 + 0x16fd4) + 0x2d20);\n    }" else (compound_statement "{\n      iVar5 = FUN_0001bd68(param_1,*(undefined4 *)(iVar18 + 4),0xffffffff,\n                           *(int *)(puVar22 + 0x16fd4) + 0x2d20);\n    }" { (expression_statement "iVar5 = FUN_0001bd68(param_1,*(undefined4 *)(iVar18 + 4),0xffffffff,\n                           *(int *)(puVar22 + 0x16fd4) + 0x2d20);" (assignment_expression "iVar5 = FUN_0001bd68(param_1,*(undefined4 *)(iVar18 + 4),0xffffffff,\n                           *(int *)(puVar22 + 0x16fd4) + 0x2d20)" identifier = (call_expression "FUN_0001bd68(param_1,*(undefined4 *)(iVar18 + 4),0xffffffff,\n                           *(int *)(puVar22 + 0x16fd4) + 0x2d20)" identifier (argument_list "(param_1,*(undefined4 *)(iVar18 + 4),0xffffffff,\n                           *(int *)(puVar22 + 0x16fd4) + 0x2d20)" ( identifier , (pointer_expression "*(undefined4 *)(iVar18 + 4)" * (cast_expression "(undefined4 *)(iVar18 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar18 + 4)" ( (binary_expression "iVar18 + 4" identifier + number_literal) )))) , number_literal , (binary_expression "*(int *)(puVar22 + 0x16fd4) + 0x2d20" (pointer_expression "*(int *)(puVar22 + 0x16fd4)" * (cast_expression "(int *)(puVar22 + 0x16fd4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar22 + 0x16fd4)" ( (binary_expression "puVar22 + 0x16fd4" identifier + number_literal) )))) + number_literal) )))) ;) }))) (if_statement "if (iVar5 != 0) {\n      *(undefined2 *)(iVar18 + 0x3c) = 7;\n      param_1[0xc] = param_1[0xc] | 0x4000;\n      FUN_0001b6fc(iStack_a0);\n      return 0;\n    }" if (parenthesized_expression "(iVar5 != 0)" ( (binary_expression "iVar5 != 0" identifier != number_literal) )) (compound_statement "{\n      *(undefined2 *)(iVar18 + 0x3c) = 7;\n      param_1[0xc] = param_1[0xc] | 0x4000;\n      FUN_0001b6fc(iStack_a0);\n      return 0;\n    }" { (expression_statement "*(undefined2 *)(iVar18 + 0x3c) = 7;" (assignment_expression "*(undefined2 *)(iVar18 + 0x3c) = 7" (pointer_expression "*(undefined2 *)(iVar18 + 0x3c)" * (cast_expression "(undefined2 *)(iVar18 + 0x3c)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar18 + 0x3c)" ( (binary_expression "iVar18 + 0x3c" identifier + number_literal) )))) = number_literal) ;) (expression_statement "param_1[0xc] = param_1[0xc] | 0x4000;" (assignment_expression "param_1[0xc] = param_1[0xc] | 0x4000" (subscript_expression "param_1[0xc]" identifier [ number_literal ]) = (binary_expression "param_1[0xc] | 0x4000" (subscript_expression "param_1[0xc]" identifier [ number_literal ]) | number_literal)) ;) (expression_statement "FUN_0001b6fc(iStack_a0);" (call_expression "FUN_0001b6fc(iStack_a0)" identifier (argument_list "(iStack_a0)" ( identifier ))) ;) (return_statement "return 0;" return number_literal ;) })) })) (if_statement "if (uVar19 == 0) {\n    if (((param_2 == (undefined4 *)0x3) && (*(short *)(iVar18 + 0x3c) != 4)) &&\n       (*(short *)(iVar18 + 0x3c) != 7)) {\n      *(undefined2 *)(iVar18 + 0x3c) = 6;\n    }\n    FUN_0001b6fc(iStack_a0);\n    return 0;\n  }" if (parenthesized_expression "(uVar19 == 0)" ( (binary_expression "uVar19 == 0" identifier == number_literal) )) (compound_statement "{\n    if (((param_2 == (undefined4 *)0x3) && (*(short *)(iVar18 + 0x3c) != 4)) &&\n       (*(short *)(iVar18 + 0x3c) != 7)) {\n      *(undefined2 *)(iVar18 + 0x3c) = 6;\n    }\n    FUN_0001b6fc(iStack_a0);\n    return 0;\n  }" { (if_statement "if (((param_2 == (undefined4 *)0x3) && (*(short *)(iVar18 + 0x3c) != 4)) &&\n       (*(short *)(iVar18 + 0x3c) != 7)) {\n      *(undefined2 *)(iVar18 + 0x3c) = 6;\n    }" if (parenthesized_expression "(((param_2 == (undefined4 *)0x3) && (*(short *)(iVar18 + 0x3c) != 4)) &&\n       (*(short *)(iVar18 + 0x3c) != 7))" ( (binary_expression "((param_2 == (undefined4 *)0x3) && (*(short *)(iVar18 + 0x3c) != 4)) &&\n       (*(short *)(iVar18 + 0x3c) != 7)" (parenthesized_expression "((param_2 == (undefined4 *)0x3) && (*(short *)(iVar18 + 0x3c) != 4))" ( (binary_expression "(param_2 == (undefined4 *)0x3) && (*(short *)(iVar18 + 0x3c) != 4)" (parenthesized_expression "(param_2 == (undefined4 *)0x3)" ( (binary_expression "param_2 == (undefined4 *)0x3" identifier == (cast_expression "(undefined4 *)0x3" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(*(short *)(iVar18 + 0x3c) != 4)" ( (binary_expression "*(short *)(iVar18 + 0x3c) != 4" (pointer_expression "*(short *)(iVar18 + 0x3c)" * (cast_expression "(short *)(iVar18 + 0x3c)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar18 + 0x3c)" ( (binary_expression "iVar18 + 0x3c" identifier + number_literal) )))) != number_literal) ))) )) && (parenthesized_expression "(*(short *)(iVar18 + 0x3c) != 7)" ( (binary_expression "*(short *)(iVar18 + 0x3c) != 7" (pointer_expression "*(short *)(iVar18 + 0x3c)" * (cast_expression "(short *)(iVar18 + 0x3c)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar18 + 0x3c)" ( (binary_expression "iVar18 + 0x3c" identifier + number_literal) )))) != number_literal) ))) )) (compound_statement "{\n      *(undefined2 *)(iVar18 + 0x3c) = 6;\n    }" { (expression_statement "*(undefined2 *)(iVar18 + 0x3c) = 6;" (assignment_expression "*(undefined2 *)(iVar18 + 0x3c) = 6" (pointer_expression "*(undefined2 *)(iVar18 + 0x3c)" * (cast_expression "(undefined2 *)(iVar18 + 0x3c)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar18 + 0x3c)" ( (binary_expression "iVar18 + 0x3c" identifier + number_literal) )))) = number_literal) ;) })) (expression_statement "FUN_0001b6fc(iStack_a0);" (call_expression "FUN_0001b6fc(iStack_a0)" identifier (argument_list "(iStack_a0)" ( identifier ))) ;) (return_statement "return 0;" return number_literal ;) })) (labeled_statement "LAB_0001c6c0:\n  if (bVar4) {\n    param_1[0xb] = *(int *)(puVar22 + 0x16fd4) + -0x4fa0;\n    iVar5 = FUN_0001b3ac(param_1,iStack_a0,uVar19);\n    param_1[0xb] = 0;\n    return iVar5;\n  }" statement_identifier : (if_statement "if (bVar4) {\n    param_1[0xb] = *(int *)(puVar22 + 0x16fd4) + -0x4fa0;\n    iVar5 = FUN_0001b3ac(param_1,iStack_a0,uVar19);\n    param_1[0xb] = 0;\n    return iVar5;\n  }" if (parenthesized_expression "(bVar4)" ( identifier )) (compound_statement "{\n    param_1[0xb] = *(int *)(puVar22 + 0x16fd4) + -0x4fa0;\n    iVar5 = FUN_0001b3ac(param_1,iStack_a0,uVar19);\n    param_1[0xb] = 0;\n    return iVar5;\n  }" { (expression_statement "param_1[0xb] = *(int *)(puVar22 + 0x16fd4) + -0x4fa0;" (assignment_expression "param_1[0xb] = *(int *)(puVar22 + 0x16fd4) + -0x4fa0" (subscript_expression "param_1[0xb]" identifier [ number_literal ]) = (binary_expression "*(int *)(puVar22 + 0x16fd4) + -0x4fa0" (pointer_expression "*(int *)(puVar22 + 0x16fd4)" * (cast_expression "(int *)(puVar22 + 0x16fd4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar22 + 0x16fd4)" ( (binary_expression "puVar22 + 0x16fd4" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "iVar5 = FUN_0001b3ac(param_1,iStack_a0,uVar19);" (assignment_expression "iVar5 = FUN_0001b3ac(param_1,iStack_a0,uVar19)" identifier = (call_expression "FUN_0001b3ac(param_1,iStack_a0,uVar19)" identifier (argument_list "(param_1,iStack_a0,uVar19)" ( identifier , identifier , identifier )))) ;) (expression_statement "param_1[0xb] = 0;" (assignment_expression "param_1[0xb] = 0" (subscript_expression "param_1[0xb]" identifier [ number_literal ]) = number_literal) ;) (return_statement "return iVar5;" return identifier ;) }))) (if_statement "if (param_1[0xb] == 0) {\n    return iStack_a0;\n  }" if (parenthesized_expression "(param_1[0xb] == 0)" ( (binary_expression "param_1[0xb] == 0" (subscript_expression "param_1[0xb]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n    return iStack_a0;\n  }" { (return_statement "return iStack_a0;" return identifier ;) })) (if_statement "if (uVar19 < 2) {\n    return iStack_a0;\n  }" if (parenthesized_expression "(uVar19 < 2)" ( (binary_expression "uVar19 < 2" identifier < number_literal) )) (compound_statement "{\n    return iStack_a0;\n  }" { (return_statement "return iStack_a0;" return identifier ;) })) (expression_statement "iVar5 = FUN_0001b3ac(param_1,iStack_a0,uVar19);" (assignment_expression "iVar5 = FUN_0001b3ac(param_1,iStack_a0,uVar19)" identifier = (call_expression "FUN_0001b3ac(param_1,iStack_a0,uVar19)" identifier (argument_list "(param_1,iStack_a0,uVar19)" ( identifier , identifier , identifier )))) ;) (return_statement "return iVar5;" return identifier ;) })))
(translation_unit "void leave_dir(FTS *fts,FTSENT *ent)\n\n{\n  stat *psVar1;\n  bool bVar2;\n  bool bVar3;\n  bool bVar4;\n  undefined3 extraout_var;\n  undefined3 extraout_var_00;\n  int iVar5;\n  _ftsent *p_Var6;\n  DIR *pDVar7;\n  leaf_optimization lVar8;\n  int iVar9;\n  int iVar10;\n  int iVar11;\n  _Bool _Var21;\n  int *piVar12;\n  undefined4 *puVar13;\n  uint uVar14;\n  FTSENT *pFVar15;\n  undefined4 uVar16;\n  _func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *p_Var17;\n  ushort uVar20;\n  int iVar18;\n  FTSENT *pFVar19;\n  hash_table *phVar22;\n  DIR *pDVar23;\n  size_t sVar24;\n  char *pcVar25;\n  FTSENT *p;\n  uint uVar26;\n  uint uVar27;\n  code *pcVar28;\n  undefined *puVar29;\n  uint uVar30;\n  FTSENT *pFStack_a4;\n  FTSENT *pFStack_a0;\n  uint uStack_94;\n  char *pcStack_90;\n  int iStack_8c;\n  int iStack_7c;\n  Active_dir obj;\n  \n  iVar5 = *(int *)PTR___stack_chk_guard_000333f4;\n  if ((fts->fts_options & 0x102U) == 0) {\n    p_Var6 = ent->fts_parent;\n    if ((p_Var6 != (_ftsent *)0x0) && (-1 < p_Var6->fts_level)) {\n      phVar22 = (fts->fts_cycle).ht;\n      pcVar28 = (code *)PTR_abort_000332e8;\n      if (phVar22->n_entries == 0 && phVar22->tuning == (Hash_tuning *)0x0) goto LAB_0001c120;\n      if ((phVar22->bucket == *(hash_entry **)&ent->fts_statp[0].st_ino) &&\n         (phVar22->bucket_limit == *(hash_entry **)((int)&ent->fts_statp[0].st_ino + 4))) {\n        psVar1 = ent->fts_statp;\n        ent = (FTSENT *)phVar22->n_buckets;\n        if ((ent == (FTSENT *)0x0) &&\n           (ent = (FTSENT *)phVar22->n_buckets_used, ent == (FTSENT *)psVar1->st_dev)) {\n          phVar22->n_buckets_used = p_Var6->fts_statp[0].st_dev;\n          phVar22->n_buckets = 0;\n          phVar22 = (fts->fts_cycle).ht;\n          ent = *(FTSENT **)((int)&p_Var6->fts_statp[0].st_ino + 4);\n          fts = *(FTS **)&p_Var6->fts_statp[0].st_ino;\n          phVar22->bucket_limit = (hash_entry *)ent;\n          phVar22->bucket = (hash_entry *)fts;\n        }\n      }\n    }\nLAB_0001c0f8:\n    if (iVar5 == *(int *)PTR___stack_chk_guard_000333f4) {\n      return;\n    }\n  }\n  else {\n    obj.dev._4_4_ = ent->fts_statp[0].st_dev;\n    obj.dev._0_4_ = 0;\n    obj.ino._4_4_ = (undefined4)ent->fts_statp[0].st_ino;\n    obj.ino._0_4_ = *(undefined4 *)&ent->fts_statp[0].st_ino;\n    ent = (FTSENT *)&obj;\n    fts = (FTS *)hash_delete((fts->fts_cycle).ht,ent);\n    if (fts != (FTS *)0x0) {\n      (*(code *)PTR_free_000333fc)();\n      goto LAB_0001c0f8;\n    }\n    pcVar28 = (code *)PTR_abort_000332e8;\n    (*(code *)PTR_abort_000332e8)();\nLAB_0001c120:\n    (*pcVar28)();\n  }\n  puVar29 = PTR___stack_chk_fail_000333dc;\n  (*(code *)PTR___stack_chk_fail_000333dc)();\n  p = fts->fts_cur;\n  pDVar23 = p->fts_dirp;\n  if (pDVar23 != (DIR *)0x0) {\n    iStack_7c = (**(code **)(puVar29 + 0x172d0))();\n    if (iStack_7c < 0) {\n      (**(code **)(puVar29 + 0x17194))(p->fts_dirp);\n      p->fts_dirp = (DIR *)0x0;\n      if (ent != (FTSENT *)0x3) {\n        return;\n      }\n      p->fts_info = 4;\n      piVar12 = (int *)(**(code **)(puVar29 + 0x17220))();\n      p->fts_errno = *piVar12;\n      return;\n    }\n    if (fts->fts_compar == (_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *)0x0) {\n      uStack_94 = 100000;\n      bVar2 = true;\n    }\n    else {\n      uStack_94 = 0xffffffff;\n      bVar2 = true;\n    }\n    goto LAB_0001c1b8;\n  }\n  uVar26 = fts->fts_options;\n  if ((uVar26 & 0x204) == 0x200) {\n    iVar5 = fts->fts_cwd_fd;\n  }\n  else {\n    iVar5 = -100;\n  }\n  uVar27 = uVar26 & 0x10;\n  if (((uVar27 != 0) && (uVar27 = 0x20000, (uVar26 & 1) != 0)) &&\n     (uVar27 = p->fts_level, uVar27 != 0)) {\n    uVar27 = 0x20000;\n  }\n  iStack_7c = openat_safer(iVar5,p->fts_accpath,(uVar26 & 0x800) << 7 | uVar27 | 0x90880);\n  if (iStack_7c < 0) {\nLAB_0001c3e8:\n    p->fts_dirp = (DIR *)0x0;\n    if (ent == (FTSENT *)0x3) {\n      p->fts_info = 4;\n      piVar12 = (int *)(**(code **)(puVar29 + 0x17220))();\n      p->fts_errno = *piVar12;\n    }\n    return;\n  }\n  pDVar7 = (DIR *)(**(code **)(puVar29 + 0x171f0))(iStack_7c);\n  if (pDVar7 == (DIR *)0x0) {\n    puVar13 = (undefined4 *)(**(code **)(puVar29 + 0x17220))();\n    uVar16 = *puVar13;\n    (**(code **)(puVar29 + 0x17198))(iStack_7c);\n    *puVar13 = uVar16;\n    goto LAB_0001c3e8;\n  }\n  p->fts_dirp = pDVar7;\n  if (p->fts_info == 0xb) {\n    uVar20 = fts_stat(fts,p,false);\n    p->fts_info = uVar20;\n  }\n  else if ((fts->fts_options & 0x100U) != 0) {\n    leave_dir(fts,p);\n    fts_stat(fts,p,false);\n    _Var21 = enter_dir(fts,p);\n    if (CONCAT31(extraout_var,_Var21) == 0) {\n      puVar13 = (undefined4 *)(**(code **)(puVar29 + 0x17220))();\n      *puVar13 = 0xc;\n      return;\n    }\n  }\n  if (fts->fts_compar == (_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *)0x0) {\n    uStack_94 = 100000;\n  }\n  else {\n    uStack_94 = 0xffffffff;\n  }\n  if (ent == (FTSENT *)0x2) {\n    bVar2 = false;\n  }\n  else {\n    if ((((fts->fts_options & 0x38U) == 0x18) && (p->fts_statp[0].st_nlink == 2)) &&\n       (lVar8 = leaf_optimization(p,iStack_7c), lVar8 != NO_LEAF_OPTIMIZATION)) {\n      bVar2 = false;\n      if (ent != (FTSENT *)0x3) {\n        bVar2 = false;\n        goto LAB_0001c1b8;\n      }\n      uVar26 = fts->fts_options;\n    }\n    else {\n      bVar2 = true;\n      uVar26 = fts->fts_options;\n    }\n    if ((uVar26 & 0x200) != 0) {\n      iStack_7c = rpl_fcntl(iStack_7c,0x406,3);\n    }\n    if ((iStack_7c < 0) || (iVar5 = fts_safe_changedir(fts,p,iStack_7c,(char *)0x0), iVar5 != 0)) {\n      if ((bVar2) && (ent == (FTSENT *)0x3)) {\n        piVar12 = (int *)(**(code **)(puVar29 + 0x17220))();\n        p->fts_errno = *piVar12;\n      }\n      p->fts_flags = p->fts_flags | 1;\n      (**(code **)(puVar29 + 0x17194))(p->fts_dirp);\n      p->fts_dirp = (DIR *)0x0;\n      if (((fts->fts_options & 0x200U) != 0) && (-1 < iStack_7c)) {\n        (**(code **)(puVar29 + 0x17198))(iStack_7c);\n        p->fts_dirp = (DIR *)0x0;\n      }\n      bVar2 = false;\n    }\n    else {\n      bVar2 = true;\n    }\n  }\nLAB_0001c1b8:\n  sVar24 = p->fts_pathlen - 1;\n  if (p->fts_path[sVar24] != '/') {\n    sVar24 = p->fts_pathlen;\n  }\n  if ((fts->fts_options & 4U) == 0) {\n    pcStack_90 = (char *)0x0;\n  }\n  else {\n    pcStack_90 = fts->fts_path + sVar24 + 1;\n    fts->fts_path[sVar24] = '/';\n  }\n  uVar27 = sVar24 + 1;\n  uVar30 = fts->fts_pathlen - uVar27;\n  iVar5 = p->fts_level;\n  bVar4 = false;\n  iStack_8c = 0;\n  pFStack_a4 = (FTSENT *)0x0;\n  uVar26 = 0;\n  pFStack_a0 = (FTSENT *)0x0;\n  iVar9 = *(int *)(puVar29 + 0x16fd4);\n  iVar10 = *(int *)(puVar29 + 0x16fd4);\n  iVar11 = *(int *)(puVar29 + 0x16fd4);\nLAB_0001c96c:\n  do {\n    do {\n      if (p->fts_dirp == (DIR *)0x0) goto LAB_0001c66c;\n      piVar12 = (int *)(**(code **)(puVar29 + 0x17220))();\n      *piVar12 = 0;\n      puVar13 = (undefined4 *)(**(code **)(puVar29 + 0x171d8))(p->fts_dirp);\n      if (puVar13 == (undefined4 *)0x0) {\n        if (*piVar12 != 0) {\n          p->fts_errno = *piVar12;\n          uVar20 = 7;\n          if ((pDVar23 == (DIR *)0x0) && (uVar26 == 0)) {\n            uVar20 = 4;\n          }\n          p->fts_info = uVar20;\n        }\n        if (p->fts_dirp != (DIR *)0x0) {\n          (**(code **)(puVar29 + 0x17194))();\n          p->fts_dirp = (DIR *)0x0;\n        }\n        goto LAB_0001c66c;\n      }\n    } while ((((fts->fts_options & 0x20U) == 0) && (*(char *)((int)puVar13 + 0x13) == '.')) &&\n            ((*(char *)(puVar13 + 5) == '\0' || ((puVar13[5] & 0xffff0000) == 0x2e000000))));\n    uVar14 = (**(code **)(puVar29 + 0x17240))((int)puVar13 + 0x13);\n    pFVar15 = (FTSENT *)(*(code *)(iVar9 + -0x4b14))(fts,(int)puVar13 + 0x13,uVar14);\n    if (pFVar15 == (FTSENT *)0x0) {\nLAB_0001c794:\n      iVar5 = *piVar12;\n      (**(code **)(puVar29 + 0x172c8))(pFVar15);\n      fts_lfree(pFStack_a0);\n      (**(code **)(puVar29 + 0x17194))(p->fts_dirp);\n      p->fts_dirp = (DIR *)0x0;\n      p->fts_info = 7;\n      fts->fts_options = fts->fts_options | 0x4000;\n      *piVar12 = iVar5;\n      return;\n    }\n    if (uVar30 <= uVar14) {\n      pcVar25 = fts->fts_path;\n      _Var21 = fts_palloc(fts,sVar24 + 2 + uVar14);\n      iVar18 = CONCAT31(extraout_var_00,_Var21);\n      if (iVar18 == 0) goto LAB_0001c794;\n      if ((fts->fts_path != pcVar25) && (iStack_8c = iVar18, (fts->fts_options & 4U) != 0)) {\n        pcStack_90 = fts->fts_path + uVar27;\n      }\n      uVar30 = fts->fts_pathlen - uVar27;\n    }\n    if (uVar27 + uVar14 < uVar27) {\n      (**(code **)(puVar29 + 0x172c8))(pFVar15);\n      fts_lfree(pFStack_a0);\n      (**(code **)(puVar29 + 0x17194))(p->fts_dirp);\n      p->fts_dirp = (DIR *)0x0;\n      p->fts_info = 7;\n      fts->fts_options = fts->fts_options | 0x4000;\n      *piVar12 = 0x4e;\n      return;\n    }\n    pFVar15->fts_level = iVar5 + 1;\n    pFVar15->fts_parent = fts->fts_cur;\n    pFVar15->fts_pathlen = uVar27 + uVar14;\n    uVar16 = *puVar13;\n    *(undefined4 *)((int)&pFVar15->fts_statp[0].st_ino + 4) = puVar13[1];\n    *(undefined4 *)&pFVar15->fts_statp[0].st_ino = uVar16;\n    if ((fts->fts_options & 4U) == 0) {\n      pFVar15->fts_accpath = (char *)(pFVar15 + 1);\n      p_Var17 = fts->fts_compar;\n    }\n    else {\n      pFVar15->fts_accpath = pFVar15->fts_path;\n      (**(code **)(puVar29 + 0x172cc))(pcStack_90,pFVar15 + 1,pFVar15->fts_namelen + 1);\n      p_Var17 = fts->fts_compar;\n    }\n    if ((p_Var17 == (_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *)0x0) ||\n       ((fts->fts_options & 0x400U) != 0)) {\n      if (((fts->fts_options & 0x18U) == 0x18) && ((*(byte *)((int)puVar13 + 0x12) & 0xfb) != 0)) {\n        pFVar15->fts_info = 0xb;\n        bVar3 = true;\n        if (*(byte *)((int)puVar13 + 0x12) < 0xd) {\n                    /* WARNING: Could not recover jumptable at 0x0001c904. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n          (*(code *)(puVar29 +\n                    *(int *)(iVar11 + 0x2d30 + (uint)*(byte *)((int)puVar13 + 0x12) * 4) + 0x1ef9c))\n                    ();\n          return;\n        }\n      }\n      else {\n        pFVar15->fts_info = 0xb;\n        bVar3 = false;\n        if (*(byte *)((int)puVar13 + 0x12) < 0xd) {\n                    /* WARNING: Could not recover jumptable at 0x0001cab8. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n          (*(code *)(puVar29 +\n                    *(int *)(*(int *)(puVar29 + 0x16fd4) + 0x2d64 +\n                            (uint)*(byte *)((int)puVar13 + 0x12) * 4) + 0x1ef9c))();\n          return;\n        }\n      }\n      pFVar15->fts_statp[0].st_mode = 0;\n      if (bVar3) {\n        uVar16 = 1;\n      }\n      else {\n        uVar16 = 2;\n      }\n      *(undefined4 *)((int)&pFVar15->fts_statp[0].st_size + 4) = uVar16;\n      *(undefined4 *)&pFVar15->fts_statp[0].st_size = 0;\n    }\n    else {\n      uVar20 = fts_stat(fts,pFVar15,false);\n      pFVar15->fts_info = uVar20;\n    }\n    pFVar15->fts_link = (_ftsent *)0x0;\n    pFVar19 = pFVar15;\n    if (pFStack_a0 != (FTSENT *)0x0) {\n      pFStack_a4->fts_link = pFVar15;\n      pFVar19 = pFStack_a0;\n    }\n    pFStack_a0 = pFVar19;\n    pFStack_a4 = pFVar15;\n    if (uVar26 == 10000) {\n      if (fts->fts_compar != (_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *)0x0) {\nLAB_0001cb74:\n        uVar26 = 0x2711;\n        goto LAB_0001c96c;\n      }\n      iVar18 = (*(code *)(iVar10 + -0x47a8))(p,iStack_7c);\n      if (iVar18 == 0x6969) {\n        bVar4 = false;\n      }\n      else if (iVar18 == 0x1021994) {\n        bVar4 = false;\n      }\n      else {\n        if (iVar18 != -0xacb2be) {\n          bVar4 = true;\n          goto LAB_0001cb74;\n        }\n        bVar4 = false;\n      }\n    }\n    uVar26 = uVar26 + 1;\n  } while (uVar26 < uStack_94);\nLAB_0001c66c:\n  if (iStack_8c != 0) {\n    pcVar25 = fts->fts_path;\n    for (p_Var6 = fts->fts_child; pFVar15 = pFStack_a0, p_Var6 != (_ftsent *)0x0;\n        p_Var6 = p_Var6->fts_link) {\n      if ((_ftsent *)p_Var6->fts_accpath != p_Var6 + 1) {\n        p_Var6->fts_accpath = pcVar25 + ((int)p_Var6->fts_accpath - (int)p_Var6->fts_path);\n      }\n      p_Var6->fts_path = pcVar25;\n    }\n    while (pFVar19 = pFVar15, -1 < pFVar19->fts_level) {\n      if ((FTSENT *)pFVar19->fts_accpath != pFVar19 + 1) {\n        pFVar19->fts_accpath = pcVar25 + ((int)pFVar19->fts_accpath - (int)pFVar19->fts_path);\n      }\n      pFVar19->fts_path = pcVar25;\n      pFVar15 = pFVar19->fts_link;\n      if (pFVar19->fts_link == (_ftsent *)0x0) {\n        pFVar15 = pFVar19->fts_parent;\n      }\n    }\n  }\n  if ((fts->fts_options & 4U) != 0) {\n    if ((fts->fts_pathlen == uVar27) || (uVar26 == 0)) {\n      pcStack_90 = pcStack_90 + -1;\n    }\n    *pcStack_90 = '\0';\n  }\n  if ((pDVar23 == (DIR *)0x0) && (bVar2)) {\n    if ((ent != (FTSENT *)0x1) && (uVar26 != 0)) goto LAB_0001c6c0;\n    if (p->fts_level == 0) {\n      iVar5 = restore_initial_cwd(fts);\n    }\n    else {\n      iVar5 = fts_safe_changedir(fts,p->fts_parent,-1,(char *)(*(int *)(puVar29 + 0x16fd4) + 0x2d20)\n                                );\n    }\n    if (iVar5 != 0) {\n      p->fts_info = 7;\n      fts->fts_options = fts->fts_options | 0x4000;\n      fts_lfree(pFStack_a0);\n      return;\n    }\n  }\n  if (uVar26 == 0) {\n    if (((ent == (FTSENT *)0x3) && (p->fts_info != 4)) && (p->fts_info != 7)) {\n      p->fts_info = 6;\n    }\n    fts_lfree(pFStack_a0);\n    return;\n  }\nLAB_0001c6c0:\n  if (bVar4) {\n    fts->fts_compar =\n         (_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *)(*(int *)(puVar29 + 0x16fd4) + -0x4fa0);\n    fts_sort(fts,pFStack_a0,uVar26);\n    fts->fts_compar = (_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *)0x0;\n    return;\n  }\n  if (fts->fts_compar == (_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *)0x0) {\n    return;\n  }\n  if (uVar26 < 2) {\n    return;\n  }\n  fts_sort(fts,pFStack_a0,uVar26);\n  return;\n}\n\n" (function_definition "void leave_dir(FTS *fts,FTSENT *ent)\n\n{\n  stat *psVar1;\n  bool bVar2;\n  bool bVar3;\n  bool bVar4;\n  undefined3 extraout_var;\n  undefined3 extraout_var_00;\n  int iVar5;\n  _ftsent *p_Var6;\n  DIR *pDVar7;\n  leaf_optimization lVar8;\n  int iVar9;\n  int iVar10;\n  int iVar11;\n  _Bool _Var21;\n  int *piVar12;\n  undefined4 *puVar13;\n  uint uVar14;\n  FTSENT *pFVar15;\n  undefined4 uVar16;\n  _func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *p_Var17;\n  ushort uVar20;\n  int iVar18;\n  FTSENT *pFVar19;\n  hash_table *phVar22;\n  DIR *pDVar23;\n  size_t sVar24;\n  char *pcVar25;\n  FTSENT *p;\n  uint uVar26;\n  uint uVar27;\n  code *pcVar28;\n  undefined *puVar29;\n  uint uVar30;\n  FTSENT *pFStack_a4;\n  FTSENT *pFStack_a0;\n  uint uStack_94;\n  char *pcStack_90;\n  int iStack_8c;\n  int iStack_7c;\n  Active_dir obj;\n  \n  iVar5 = *(int *)PTR___stack_chk_guard_000333f4;\n  if ((fts->fts_options & 0x102U) == 0) {\n    p_Var6 = ent->fts_parent;\n    if ((p_Var6 != (_ftsent *)0x0) && (-1 < p_Var6->fts_level)) {\n      phVar22 = (fts->fts_cycle).ht;\n      pcVar28 = (code *)PTR_abort_000332e8;\n      if (phVar22->n_entries == 0 && phVar22->tuning == (Hash_tuning *)0x0) goto LAB_0001c120;\n      if ((phVar22->bucket == *(hash_entry **)&ent->fts_statp[0].st_ino) &&\n         (phVar22->bucket_limit == *(hash_entry **)((int)&ent->fts_statp[0].st_ino + 4))) {\n        psVar1 = ent->fts_statp;\n        ent = (FTSENT *)phVar22->n_buckets;\n        if ((ent == (FTSENT *)0x0) &&\n           (ent = (FTSENT *)phVar22->n_buckets_used, ent == (FTSENT *)psVar1->st_dev)) {\n          phVar22->n_buckets_used = p_Var6->fts_statp[0].st_dev;\n          phVar22->n_buckets = 0;\n          phVar22 = (fts->fts_cycle).ht;\n          ent = *(FTSENT **)((int)&p_Var6->fts_statp[0].st_ino + 4);\n          fts = *(FTS **)&p_Var6->fts_statp[0].st_ino;\n          phVar22->bucket_limit = (hash_entry *)ent;\n          phVar22->bucket = (hash_entry *)fts;\n        }\n      }\n    }\nLAB_0001c0f8:\n    if (iVar5 == *(int *)PTR___stack_chk_guard_000333f4) {\n      return;\n    }\n  }\n  else {\n    obj.dev._4_4_ = ent->fts_statp[0].st_dev;\n    obj.dev._0_4_ = 0;\n    obj.ino._4_4_ = (undefined4)ent->fts_statp[0].st_ino;\n    obj.ino._0_4_ = *(undefined4 *)&ent->fts_statp[0].st_ino;\n    ent = (FTSENT *)&obj;\n    fts = (FTS *)hash_delete((fts->fts_cycle).ht,ent);\n    if (fts != (FTS *)0x0) {\n      (*(code *)PTR_free_000333fc)();\n      goto LAB_0001c0f8;\n    }\n    pcVar28 = (code *)PTR_abort_000332e8;\n    (*(code *)PTR_abort_000332e8)();\nLAB_0001c120:\n    (*pcVar28)();\n  }\n  puVar29 = PTR___stack_chk_fail_000333dc;\n  (*(code *)PTR___stack_chk_fail_000333dc)();\n  p = fts->fts_cur;\n  pDVar23 = p->fts_dirp;\n  if (pDVar23 != (DIR *)0x0) {\n    iStack_7c = (**(code **)(puVar29 + 0x172d0))();\n    if (iStack_7c < 0) {\n      (**(code **)(puVar29 + 0x17194))(p->fts_dirp);\n      p->fts_dirp = (DIR *)0x0;\n      if (ent != (FTSENT *)0x3) {\n        return;\n      }\n      p->fts_info = 4;\n      piVar12 = (int *)(**(code **)(puVar29 + 0x17220))();\n      p->fts_errno = *piVar12;\n      return;\n    }\n    if (fts->fts_compar == (_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *)0x0) {\n      uStack_94 = 100000;\n      bVar2 = true;\n    }\n    else {\n      uStack_94 = 0xffffffff;\n      bVar2 = true;\n    }\n    goto LAB_0001c1b8;\n  }\n  uVar26 = fts->fts_options;\n  if ((uVar26 & 0x204) == 0x200) {\n    iVar5 = fts->fts_cwd_fd;\n  }\n  else {\n    iVar5 = -100;\n  }\n  uVar27 = uVar26 & 0x10;\n  if (((uVar27 != 0) && (uVar27 = 0x20000, (uVar26 & 1) != 0)) &&\n     (uVar27 = p->fts_level, uVar27 != 0)) {\n    uVar27 = 0x20000;\n  }\n  iStack_7c = openat_safer(iVar5,p->fts_accpath,(uVar26 & 0x800) << 7 | uVar27 | 0x90880);\n  if (iStack_7c < 0) {\nLAB_0001c3e8:\n    p->fts_dirp = (DIR *)0x0;\n    if (ent == (FTSENT *)0x3) {\n      p->fts_info = 4;\n      piVar12 = (int *)(**(code **)(puVar29 + 0x17220))();\n      p->fts_errno = *piVar12;\n    }\n    return;\n  }\n  pDVar7 = (DIR *)(**(code **)(puVar29 + 0x171f0))(iStack_7c);\n  if (pDVar7 == (DIR *)0x0) {\n    puVar13 = (undefined4 *)(**(code **)(puVar29 + 0x17220))();\n    uVar16 = *puVar13;\n    (**(code **)(puVar29 + 0x17198))(iStack_7c);\n    *puVar13 = uVar16;\n    goto LAB_0001c3e8;\n  }\n  p->fts_dirp = pDVar7;\n  if (p->fts_info == 0xb) {\n    uVar20 = fts_stat(fts,p,false);\n    p->fts_info = uVar20;\n  }\n  else if ((fts->fts_options & 0x100U) != 0) {\n    leave_dir(fts,p);\n    fts_stat(fts,p,false);\n    _Var21 = enter_dir(fts,p);\n    if (CONCAT31(extraout_var,_Var21) == 0) {\n      puVar13 = (undefined4 *)(**(code **)(puVar29 + 0x17220))();\n      *puVar13 = 0xc;\n      return;\n    }\n  }\n  if (fts->fts_compar == (_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *)0x0) {\n    uStack_94 = 100000;\n  }\n  else {\n    uStack_94 = 0xffffffff;\n  }\n  if (ent == (FTSENT *)0x2) {\n    bVar2 = false;\n  }\n  else {\n    if ((((fts->fts_options & 0x38U) == 0x18) && (p->fts_statp[0].st_nlink == 2)) &&\n       (lVar8 = leaf_optimization(p,iStack_7c), lVar8 != NO_LEAF_OPTIMIZATION)) {\n      bVar2 = false;\n      if (ent != (FTSENT *)0x3) {\n        bVar2 = false;\n        goto LAB_0001c1b8;\n      }\n      uVar26 = fts->fts_options;\n    }\n    else {\n      bVar2 = true;\n      uVar26 = fts->fts_options;\n    }\n    if ((uVar26 & 0x200) != 0) {\n      iStack_7c = rpl_fcntl(iStack_7c,0x406,3);\n    }\n    if ((iStack_7c < 0) || (iVar5 = fts_safe_changedir(fts,p,iStack_7c,(char *)0x0), iVar5 != 0)) {\n      if ((bVar2) && (ent == (FTSENT *)0x3)) {\n        piVar12 = (int *)(**(code **)(puVar29 + 0x17220))();\n        p->fts_errno = *piVar12;\n      }\n      p->fts_flags = p->fts_flags | 1;\n      (**(code **)(puVar29 + 0x17194))(p->fts_dirp);\n      p->fts_dirp = (DIR *)0x0;\n      if (((fts->fts_options & 0x200U) != 0) && (-1 < iStack_7c)) {\n        (**(code **)(puVar29 + 0x17198))(iStack_7c);\n        p->fts_dirp = (DIR *)0x0;\n      }\n      bVar2 = false;\n    }\n    else {\n      bVar2 = true;\n    }\n  }\nLAB_0001c1b8:\n  sVar24 = p->fts_pathlen - 1;\n  if (p->fts_path[sVar24] != '/') {\n    sVar24 = p->fts_pathlen;\n  }\n  if ((fts->fts_options & 4U) == 0) {\n    pcStack_90 = (char *)0x0;\n  }\n  else {\n    pcStack_90 = fts->fts_path + sVar24 + 1;\n    fts->fts_path[sVar24] = '/';\n  }\n  uVar27 = sVar24 + 1;\n  uVar30 = fts->fts_pathlen - uVar27;\n  iVar5 = p->fts_level;\n  bVar4 = false;\n  iStack_8c = 0;\n  pFStack_a4 = (FTSENT *)0x0;\n  uVar26 = 0;\n  pFStack_a0 = (FTSENT *)0x0;\n  iVar9 = *(int *)(puVar29 + 0x16fd4);\n  iVar10 = *(int *)(puVar29 + 0x16fd4);\n  iVar11 = *(int *)(puVar29 + 0x16fd4);\nLAB_0001c96c:\n  do {\n    do {\n      if (p->fts_dirp == (DIR *)0x0) goto LAB_0001c66c;\n      piVar12 = (int *)(**(code **)(puVar29 + 0x17220))();\n      *piVar12 = 0;\n      puVar13 = (undefined4 *)(**(code **)(puVar29 + 0x171d8))(p->fts_dirp);\n      if (puVar13 == (undefined4 *)0x0) {\n        if (*piVar12 != 0) {\n          p->fts_errno = *piVar12;\n          uVar20 = 7;\n          if ((pDVar23 == (DIR *)0x0) && (uVar26 == 0)) {\n            uVar20 = 4;\n          }\n          p->fts_info = uVar20;\n        }\n        if (p->fts_dirp != (DIR *)0x0) {\n          (**(code **)(puVar29 + 0x17194))();\n          p->fts_dirp = (DIR *)0x0;\n        }\n        goto LAB_0001c66c;\n      }\n    } while ((((fts->fts_options & 0x20U) == 0) && (*(char *)((int)puVar13 + 0x13) == '.')) &&\n            ((*(char *)(puVar13 + 5) == '\0' || ((puVar13[5] & 0xffff0000) == 0x2e000000))));\n    uVar14 = (**(code **)(puVar29 + 0x17240))((int)puVar13 + 0x13);\n    pFVar15 = (FTSENT *)(*(code *)(iVar9 + -0x4b14))(fts,(int)puVar13 + 0x13,uVar14);\n    if (pFVar15 == (FTSENT *)0x0) {\nLAB_0001c794:\n      iVar5 = *piVar12;\n      (**(code **)(puVar29 + 0x172c8))(pFVar15);\n      fts_lfree(pFStack_a0);\n      (**(code **)(puVar29 + 0x17194))(p->fts_dirp);\n      p->fts_dirp = (DIR *)0x0;\n      p->fts_info = 7;\n      fts->fts_options = fts->fts_options | 0x4000;\n      *piVar12 = iVar5;\n      return;\n    }\n    if (uVar30 <= uVar14) {\n      pcVar25 = fts->fts_path;\n      _Var21 = fts_palloc(fts,sVar24 + 2 + uVar14);\n      iVar18 = CONCAT31(extraout_var_00,_Var21);\n      if (iVar18 == 0) goto LAB_0001c794;\n      if ((fts->fts_path != pcVar25) && (iStack_8c = iVar18, (fts->fts_options & 4U) != 0)) {\n        pcStack_90 = fts->fts_path + uVar27;\n      }\n      uVar30 = fts->fts_pathlen - uVar27;\n    }\n    if (uVar27 + uVar14 < uVar27) {\n      (**(code **)(puVar29 + 0x172c8))(pFVar15);\n      fts_lfree(pFStack_a0);\n      (**(code **)(puVar29 + 0x17194))(p->fts_dirp);\n      p->fts_dirp = (DIR *)0x0;\n      p->fts_info = 7;\n      fts->fts_options = fts->fts_options | 0x4000;\n      *piVar12 = 0x4e;\n      return;\n    }\n    pFVar15->fts_level = iVar5 + 1;\n    pFVar15->fts_parent = fts->fts_cur;\n    pFVar15->fts_pathlen = uVar27 + uVar14;\n    uVar16 = *puVar13;\n    *(undefined4 *)((int)&pFVar15->fts_statp[0].st_ino + 4) = puVar13[1];\n    *(undefined4 *)&pFVar15->fts_statp[0].st_ino = uVar16;\n    if ((fts->fts_options & 4U) == 0) {\n      pFVar15->fts_accpath = (char *)(pFVar15 + 1);\n      p_Var17 = fts->fts_compar;\n    }\n    else {\n      pFVar15->fts_accpath = pFVar15->fts_path;\n      (**(code **)(puVar29 + 0x172cc))(pcStack_90,pFVar15 + 1,pFVar15->fts_namelen + 1);\n      p_Var17 = fts->fts_compar;\n    }\n    if ((p_Var17 == (_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *)0x0) ||\n       ((fts->fts_options & 0x400U) != 0)) {\n      if (((fts->fts_options & 0x18U) == 0x18) && ((*(byte *)((int)puVar13 + 0x12) & 0xfb) != 0)) {\n        pFVar15->fts_info = 0xb;\n        bVar3 = true;\n        if (*(byte *)((int)puVar13 + 0x12) < 0xd) {\n                    /* WARNING: Could not recover jumptable at 0x0001c904. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n          (*(code *)(puVar29 +\n                    *(int *)(iVar11 + 0x2d30 + (uint)*(byte *)((int)puVar13 + 0x12) * 4) + 0x1ef9c))\n                    ();\n          return;\n        }\n      }\n      else {\n        pFVar15->fts_info = 0xb;\n        bVar3 = false;\n        if (*(byte *)((int)puVar13 + 0x12) < 0xd) {\n                    /* WARNING: Could not recover jumptable at 0x0001cab8. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n          (*(code *)(puVar29 +\n                    *(int *)(*(int *)(puVar29 + 0x16fd4) + 0x2d64 +\n                            (uint)*(byte *)((int)puVar13 + 0x12) * 4) + 0x1ef9c))();\n          return;\n        }\n      }\n      pFVar15->fts_statp[0].st_mode = 0;\n      if (bVar3) {\n        uVar16 = 1;\n      }\n      else {\n        uVar16 = 2;\n      }\n      *(undefined4 *)((int)&pFVar15->fts_statp[0].st_size + 4) = uVar16;\n      *(undefined4 *)&pFVar15->fts_statp[0].st_size = 0;\n    }\n    else {\n      uVar20 = fts_stat(fts,pFVar15,false);\n      pFVar15->fts_info = uVar20;\n    }\n    pFVar15->fts_link = (_ftsent *)0x0;\n    pFVar19 = pFVar15;\n    if (pFStack_a0 != (FTSENT *)0x0) {\n      pFStack_a4->fts_link = pFVar15;\n      pFVar19 = pFStack_a0;\n    }\n    pFStack_a0 = pFVar19;\n    pFStack_a4 = pFVar15;\n    if (uVar26 == 10000) {\n      if (fts->fts_compar != (_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *)0x0) {\nLAB_0001cb74:\n        uVar26 = 0x2711;\n        goto LAB_0001c96c;\n      }\n      iVar18 = (*(code *)(iVar10 + -0x47a8))(p,iStack_7c);\n      if (iVar18 == 0x6969) {\n        bVar4 = false;\n      }\n      else if (iVar18 == 0x1021994) {\n        bVar4 = false;\n      }\n      else {\n        if (iVar18 != -0xacb2be) {\n          bVar4 = true;\n          goto LAB_0001cb74;\n        }\n        bVar4 = false;\n      }\n    }\n    uVar26 = uVar26 + 1;\n  } while (uVar26 < uStack_94);\nLAB_0001c66c:\n  if (iStack_8c != 0) {\n    pcVar25 = fts->fts_path;\n    for (p_Var6 = fts->fts_child; pFVar15 = pFStack_a0, p_Var6 != (_ftsent *)0x0;\n        p_Var6 = p_Var6->fts_link) {\n      if ((_ftsent *)p_Var6->fts_accpath != p_Var6 + 1) {\n        p_Var6->fts_accpath = pcVar25 + ((int)p_Var6->fts_accpath - (int)p_Var6->fts_path);\n      }\n      p_Var6->fts_path = pcVar25;\n    }\n    while (pFVar19 = pFVar15, -1 < pFVar19->fts_level) {\n      if ((FTSENT *)pFVar19->fts_accpath != pFVar19 + 1) {\n        pFVar19->fts_accpath = pcVar25 + ((int)pFVar19->fts_accpath - (int)pFVar19->fts_path);\n      }\n      pFVar19->fts_path = pcVar25;\n      pFVar15 = pFVar19->fts_link;\n      if (pFVar19->fts_link == (_ftsent *)0x0) {\n        pFVar15 = pFVar19->fts_parent;\n      }\n    }\n  }\n  if ((fts->fts_options & 4U) != 0) {\n    if ((fts->fts_pathlen == uVar27) || (uVar26 == 0)) {\n      pcStack_90 = pcStack_90 + -1;\n    }\n    *pcStack_90 = '\0';\n  }\n  if ((pDVar23 == (DIR *)0x0) && (bVar2)) {\n    if ((ent != (FTSENT *)0x1) && (uVar26 != 0)) goto LAB_0001c6c0;\n    if (p->fts_level == 0) {\n      iVar5 = restore_initial_cwd(fts);\n    }\n    else {\n      iVar5 = fts_safe_changedir(fts,p->fts_parent,-1,(char *)(*(int *)(puVar29 + 0x16fd4) + 0x2d20)\n                                );\n    }\n    if (iVar5 != 0) {\n      p->fts_info = 7;\n      fts->fts_options = fts->fts_options | 0x4000;\n      fts_lfree(pFStack_a0);\n      return;\n    }\n  }\n  if (uVar26 == 0) {\n    if (((ent == (FTSENT *)0x3) && (p->fts_info != 4)) && (p->fts_info != 7)) {\n      p->fts_info = 6;\n    }\n    fts_lfree(pFStack_a0);\n    return;\n  }\nLAB_0001c6c0:\n  if (bVar4) {\n    fts->fts_compar =\n         (_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *)(*(int *)(puVar29 + 0x16fd4) + -0x4fa0);\n    fts_sort(fts,pFStack_a0,uVar26);\n    fts->fts_compar = (_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *)0x0;\n    return;\n  }\n  if (fts->fts_compar == (_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *)0x0) {\n    return;\n  }\n  if (uVar26 < 2) {\n    return;\n  }\n  fts_sort(fts,pFStack_a0,uVar26);\n  return;\n}" primitive_type (function_declarator "leave_dir(FTS *fts,FTSENT *ent)" identifier (parameter_list "(FTS *fts,FTSENT *ent)" ( (parameter_declaration "FTS *fts" type_identifier (pointer_declarator "*fts" * identifier)) , (parameter_declaration "FTSENT *ent" type_identifier (pointer_declarator "*ent" * identifier)) ))) (compound_statement "{\n  stat *psVar1;\n  bool bVar2;\n  bool bVar3;\n  bool bVar4;\n  undefined3 extraout_var;\n  undefined3 extraout_var_00;\n  int iVar5;\n  _ftsent *p_Var6;\n  DIR *pDVar7;\n  leaf_optimization lVar8;\n  int iVar9;\n  int iVar10;\n  int iVar11;\n  _Bool _Var21;\n  int *piVar12;\n  undefined4 *puVar13;\n  uint uVar14;\n  FTSENT *pFVar15;\n  undefined4 uVar16;\n  _func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *p_Var17;\n  ushort uVar20;\n  int iVar18;\n  FTSENT *pFVar19;\n  hash_table *phVar22;\n  DIR *pDVar23;\n  size_t sVar24;\n  char *pcVar25;\n  FTSENT *p;\n  uint uVar26;\n  uint uVar27;\n  code *pcVar28;\n  undefined *puVar29;\n  uint uVar30;\n  FTSENT *pFStack_a4;\n  FTSENT *pFStack_a0;\n  uint uStack_94;\n  char *pcStack_90;\n  int iStack_8c;\n  int iStack_7c;\n  Active_dir obj;\n  \n  iVar5 = *(int *)PTR___stack_chk_guard_000333f4;\n  if ((fts->fts_options & 0x102U) == 0) {\n    p_Var6 = ent->fts_parent;\n    if ((p_Var6 != (_ftsent *)0x0) && (-1 < p_Var6->fts_level)) {\n      phVar22 = (fts->fts_cycle).ht;\n      pcVar28 = (code *)PTR_abort_000332e8;\n      if (phVar22->n_entries == 0 && phVar22->tuning == (Hash_tuning *)0x0) goto LAB_0001c120;\n      if ((phVar22->bucket == *(hash_entry **)&ent->fts_statp[0].st_ino) &&\n         (phVar22->bucket_limit == *(hash_entry **)((int)&ent->fts_statp[0].st_ino + 4))) {\n        psVar1 = ent->fts_statp;\n        ent = (FTSENT *)phVar22->n_buckets;\n        if ((ent == (FTSENT *)0x0) &&\n           (ent = (FTSENT *)phVar22->n_buckets_used, ent == (FTSENT *)psVar1->st_dev)) {\n          phVar22->n_buckets_used = p_Var6->fts_statp[0].st_dev;\n          phVar22->n_buckets = 0;\n          phVar22 = (fts->fts_cycle).ht;\n          ent = *(FTSENT **)((int)&p_Var6->fts_statp[0].st_ino + 4);\n          fts = *(FTS **)&p_Var6->fts_statp[0].st_ino;\n          phVar22->bucket_limit = (hash_entry *)ent;\n          phVar22->bucket = (hash_entry *)fts;\n        }\n      }\n    }\nLAB_0001c0f8:\n    if (iVar5 == *(int *)PTR___stack_chk_guard_000333f4) {\n      return;\n    }\n  }\n  else {\n    obj.dev._4_4_ = ent->fts_statp[0].st_dev;\n    obj.dev._0_4_ = 0;\n    obj.ino._4_4_ = (undefined4)ent->fts_statp[0].st_ino;\n    obj.ino._0_4_ = *(undefined4 *)&ent->fts_statp[0].st_ino;\n    ent = (FTSENT *)&obj;\n    fts = (FTS *)hash_delete((fts->fts_cycle).ht,ent);\n    if (fts != (FTS *)0x0) {\n      (*(code *)PTR_free_000333fc)();\n      goto LAB_0001c0f8;\n    }\n    pcVar28 = (code *)PTR_abort_000332e8;\n    (*(code *)PTR_abort_000332e8)();\nLAB_0001c120:\n    (*pcVar28)();\n  }\n  puVar29 = PTR___stack_chk_fail_000333dc;\n  (*(code *)PTR___stack_chk_fail_000333dc)();\n  p = fts->fts_cur;\n  pDVar23 = p->fts_dirp;\n  if (pDVar23 != (DIR *)0x0) {\n    iStack_7c = (**(code **)(puVar29 + 0x172d0))();\n    if (iStack_7c < 0) {\n      (**(code **)(puVar29 + 0x17194))(p->fts_dirp);\n      p->fts_dirp = (DIR *)0x0;\n      if (ent != (FTSENT *)0x3) {\n        return;\n      }\n      p->fts_info = 4;\n      piVar12 = (int *)(**(code **)(puVar29 + 0x17220))();\n      p->fts_errno = *piVar12;\n      return;\n    }\n    if (fts->fts_compar == (_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *)0x0) {\n      uStack_94 = 100000;\n      bVar2 = true;\n    }\n    else {\n      uStack_94 = 0xffffffff;\n      bVar2 = true;\n    }\n    goto LAB_0001c1b8;\n  }\n  uVar26 = fts->fts_options;\n  if ((uVar26 & 0x204) == 0x200) {\n    iVar5 = fts->fts_cwd_fd;\n  }\n  else {\n    iVar5 = -100;\n  }\n  uVar27 = uVar26 & 0x10;\n  if (((uVar27 != 0) && (uVar27 = 0x20000, (uVar26 & 1) != 0)) &&\n     (uVar27 = p->fts_level, uVar27 != 0)) {\n    uVar27 = 0x20000;\n  }\n  iStack_7c = openat_safer(iVar5,p->fts_accpath,(uVar26 & 0x800) << 7 | uVar27 | 0x90880);\n  if (iStack_7c < 0) {\nLAB_0001c3e8:\n    p->fts_dirp = (DIR *)0x0;\n    if (ent == (FTSENT *)0x3) {\n      p->fts_info = 4;\n      piVar12 = (int *)(**(code **)(puVar29 + 0x17220))();\n      p->fts_errno = *piVar12;\n    }\n    return;\n  }\n  pDVar7 = (DIR *)(**(code **)(puVar29 + 0x171f0))(iStack_7c);\n  if (pDVar7 == (DIR *)0x0) {\n    puVar13 = (undefined4 *)(**(code **)(puVar29 + 0x17220))();\n    uVar16 = *puVar13;\n    (**(code **)(puVar29 + 0x17198))(iStack_7c);\n    *puVar13 = uVar16;\n    goto LAB_0001c3e8;\n  }\n  p->fts_dirp = pDVar7;\n  if (p->fts_info == 0xb) {\n    uVar20 = fts_stat(fts,p,false);\n    p->fts_info = uVar20;\n  }\n  else if ((fts->fts_options & 0x100U) != 0) {\n    leave_dir(fts,p);\n    fts_stat(fts,p,false);\n    _Var21 = enter_dir(fts,p);\n    if (CONCAT31(extraout_var,_Var21) == 0) {\n      puVar13 = (undefined4 *)(**(code **)(puVar29 + 0x17220))();\n      *puVar13 = 0xc;\n      return;\n    }\n  }\n  if (fts->fts_compar == (_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *)0x0) {\n    uStack_94 = 100000;\n  }\n  else {\n    uStack_94 = 0xffffffff;\n  }\n  if (ent == (FTSENT *)0x2) {\n    bVar2 = false;\n  }\n  else {\n    if ((((fts->fts_options & 0x38U) == 0x18) && (p->fts_statp[0].st_nlink == 2)) &&\n       (lVar8 = leaf_optimization(p,iStack_7c), lVar8 != NO_LEAF_OPTIMIZATION)) {\n      bVar2 = false;\n      if (ent != (FTSENT *)0x3) {\n        bVar2 = false;\n        goto LAB_0001c1b8;\n      }\n      uVar26 = fts->fts_options;\n    }\n    else {\n      bVar2 = true;\n      uVar26 = fts->fts_options;\n    }\n    if ((uVar26 & 0x200) != 0) {\n      iStack_7c = rpl_fcntl(iStack_7c,0x406,3);\n    }\n    if ((iStack_7c < 0) || (iVar5 = fts_safe_changedir(fts,p,iStack_7c,(char *)0x0), iVar5 != 0)) {\n      if ((bVar2) && (ent == (FTSENT *)0x3)) {\n        piVar12 = (int *)(**(code **)(puVar29 + 0x17220))();\n        p->fts_errno = *piVar12;\n      }\n      p->fts_flags = p->fts_flags | 1;\n      (**(code **)(puVar29 + 0x17194))(p->fts_dirp);\n      p->fts_dirp = (DIR *)0x0;\n      if (((fts->fts_options & 0x200U) != 0) && (-1 < iStack_7c)) {\n        (**(code **)(puVar29 + 0x17198))(iStack_7c);\n        p->fts_dirp = (DIR *)0x0;\n      }\n      bVar2 = false;\n    }\n    else {\n      bVar2 = true;\n    }\n  }\nLAB_0001c1b8:\n  sVar24 = p->fts_pathlen - 1;\n  if (p->fts_path[sVar24] != '/') {\n    sVar24 = p->fts_pathlen;\n  }\n  if ((fts->fts_options & 4U) == 0) {\n    pcStack_90 = (char *)0x0;\n  }\n  else {\n    pcStack_90 = fts->fts_path + sVar24 + 1;\n    fts->fts_path[sVar24] = '/';\n  }\n  uVar27 = sVar24 + 1;\n  uVar30 = fts->fts_pathlen - uVar27;\n  iVar5 = p->fts_level;\n  bVar4 = false;\n  iStack_8c = 0;\n  pFStack_a4 = (FTSENT *)0x0;\n  uVar26 = 0;\n  pFStack_a0 = (FTSENT *)0x0;\n  iVar9 = *(int *)(puVar29 + 0x16fd4);\n  iVar10 = *(int *)(puVar29 + 0x16fd4);\n  iVar11 = *(int *)(puVar29 + 0x16fd4);\nLAB_0001c96c:\n  do {\n    do {\n      if (p->fts_dirp == (DIR *)0x0) goto LAB_0001c66c;\n      piVar12 = (int *)(**(code **)(puVar29 + 0x17220))();\n      *piVar12 = 0;\n      puVar13 = (undefined4 *)(**(code **)(puVar29 + 0x171d8))(p->fts_dirp);\n      if (puVar13 == (undefined4 *)0x0) {\n        if (*piVar12 != 0) {\n          p->fts_errno = *piVar12;\n          uVar20 = 7;\n          if ((pDVar23 == (DIR *)0x0) && (uVar26 == 0)) {\n            uVar20 = 4;\n          }\n          p->fts_info = uVar20;\n        }\n        if (p->fts_dirp != (DIR *)0x0) {\n          (**(code **)(puVar29 + 0x17194))();\n          p->fts_dirp = (DIR *)0x0;\n        }\n        goto LAB_0001c66c;\n      }\n    } while ((((fts->fts_options & 0x20U) == 0) && (*(char *)((int)puVar13 + 0x13) == '.')) &&\n            ((*(char *)(puVar13 + 5) == '\0' || ((puVar13[5] & 0xffff0000) == 0x2e000000))));\n    uVar14 = (**(code **)(puVar29 + 0x17240))((int)puVar13 + 0x13);\n    pFVar15 = (FTSENT *)(*(code *)(iVar9 + -0x4b14))(fts,(int)puVar13 + 0x13,uVar14);\n    if (pFVar15 == (FTSENT *)0x0) {\nLAB_0001c794:\n      iVar5 = *piVar12;\n      (**(code **)(puVar29 + 0x172c8))(pFVar15);\n      fts_lfree(pFStack_a0);\n      (**(code **)(puVar29 + 0x17194))(p->fts_dirp);\n      p->fts_dirp = (DIR *)0x0;\n      p->fts_info = 7;\n      fts->fts_options = fts->fts_options | 0x4000;\n      *piVar12 = iVar5;\n      return;\n    }\n    if (uVar30 <= uVar14) {\n      pcVar25 = fts->fts_path;\n      _Var21 = fts_palloc(fts,sVar24 + 2 + uVar14);\n      iVar18 = CONCAT31(extraout_var_00,_Var21);\n      if (iVar18 == 0) goto LAB_0001c794;\n      if ((fts->fts_path != pcVar25) && (iStack_8c = iVar18, (fts->fts_options & 4U) != 0)) {\n        pcStack_90 = fts->fts_path + uVar27;\n      }\n      uVar30 = fts->fts_pathlen - uVar27;\n    }\n    if (uVar27 + uVar14 < uVar27) {\n      (**(code **)(puVar29 + 0x172c8))(pFVar15);\n      fts_lfree(pFStack_a0);\n      (**(code **)(puVar29 + 0x17194))(p->fts_dirp);\n      p->fts_dirp = (DIR *)0x0;\n      p->fts_info = 7;\n      fts->fts_options = fts->fts_options | 0x4000;\n      *piVar12 = 0x4e;\n      return;\n    }\n    pFVar15->fts_level = iVar5 + 1;\n    pFVar15->fts_parent = fts->fts_cur;\n    pFVar15->fts_pathlen = uVar27 + uVar14;\n    uVar16 = *puVar13;\n    *(undefined4 *)((int)&pFVar15->fts_statp[0].st_ino + 4) = puVar13[1];\n    *(undefined4 *)&pFVar15->fts_statp[0].st_ino = uVar16;\n    if ((fts->fts_options & 4U) == 0) {\n      pFVar15->fts_accpath = (char *)(pFVar15 + 1);\n      p_Var17 = fts->fts_compar;\n    }\n    else {\n      pFVar15->fts_accpath = pFVar15->fts_path;\n      (**(code **)(puVar29 + 0x172cc))(pcStack_90,pFVar15 + 1,pFVar15->fts_namelen + 1);\n      p_Var17 = fts->fts_compar;\n    }\n    if ((p_Var17 == (_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *)0x0) ||\n       ((fts->fts_options & 0x400U) != 0)) {\n      if (((fts->fts_options & 0x18U) == 0x18) && ((*(byte *)((int)puVar13 + 0x12) & 0xfb) != 0)) {\n        pFVar15->fts_info = 0xb;\n        bVar3 = true;\n        if (*(byte *)((int)puVar13 + 0x12) < 0xd) {\n                    /* WARNING: Could not recover jumptable at 0x0001c904. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n          (*(code *)(puVar29 +\n                    *(int *)(iVar11 + 0x2d30 + (uint)*(byte *)((int)puVar13 + 0x12) * 4) + 0x1ef9c))\n                    ();\n          return;\n        }\n      }\n      else {\n        pFVar15->fts_info = 0xb;\n        bVar3 = false;\n        if (*(byte *)((int)puVar13 + 0x12) < 0xd) {\n                    /* WARNING: Could not recover jumptable at 0x0001cab8. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n          (*(code *)(puVar29 +\n                    *(int *)(*(int *)(puVar29 + 0x16fd4) + 0x2d64 +\n                            (uint)*(byte *)((int)puVar13 + 0x12) * 4) + 0x1ef9c))();\n          return;\n        }\n      }\n      pFVar15->fts_statp[0].st_mode = 0;\n      if (bVar3) {\n        uVar16 = 1;\n      }\n      else {\n        uVar16 = 2;\n      }\n      *(undefined4 *)((int)&pFVar15->fts_statp[0].st_size + 4) = uVar16;\n      *(undefined4 *)&pFVar15->fts_statp[0].st_size = 0;\n    }\n    else {\n      uVar20 = fts_stat(fts,pFVar15,false);\n      pFVar15->fts_info = uVar20;\n    }\n    pFVar15->fts_link = (_ftsent *)0x0;\n    pFVar19 = pFVar15;\n    if (pFStack_a0 != (FTSENT *)0x0) {\n      pFStack_a4->fts_link = pFVar15;\n      pFVar19 = pFStack_a0;\n    }\n    pFStack_a0 = pFVar19;\n    pFStack_a4 = pFVar15;\n    if (uVar26 == 10000) {\n      if (fts->fts_compar != (_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *)0x0) {\nLAB_0001cb74:\n        uVar26 = 0x2711;\n        goto LAB_0001c96c;\n      }\n      iVar18 = (*(code *)(iVar10 + -0x47a8))(p,iStack_7c);\n      if (iVar18 == 0x6969) {\n        bVar4 = false;\n      }\n      else if (iVar18 == 0x1021994) {\n        bVar4 = false;\n      }\n      else {\n        if (iVar18 != -0xacb2be) {\n          bVar4 = true;\n          goto LAB_0001cb74;\n        }\n        bVar4 = false;\n      }\n    }\n    uVar26 = uVar26 + 1;\n  } while (uVar26 < uStack_94);\nLAB_0001c66c:\n  if (iStack_8c != 0) {\n    pcVar25 = fts->fts_path;\n    for (p_Var6 = fts->fts_child; pFVar15 = pFStack_a0, p_Var6 != (_ftsent *)0x0;\n        p_Var6 = p_Var6->fts_link) {\n      if ((_ftsent *)p_Var6->fts_accpath != p_Var6 + 1) {\n        p_Var6->fts_accpath = pcVar25 + ((int)p_Var6->fts_accpath - (int)p_Var6->fts_path);\n      }\n      p_Var6->fts_path = pcVar25;\n    }\n    while (pFVar19 = pFVar15, -1 < pFVar19->fts_level) {\n      if ((FTSENT *)pFVar19->fts_accpath != pFVar19 + 1) {\n        pFVar19->fts_accpath = pcVar25 + ((int)pFVar19->fts_accpath - (int)pFVar19->fts_path);\n      }\n      pFVar19->fts_path = pcVar25;\n      pFVar15 = pFVar19->fts_link;\n      if (pFVar19->fts_link == (_ftsent *)0x0) {\n        pFVar15 = pFVar19->fts_parent;\n      }\n    }\n  }\n  if ((fts->fts_options & 4U) != 0) {\n    if ((fts->fts_pathlen == uVar27) || (uVar26 == 0)) {\n      pcStack_90 = pcStack_90 + -1;\n    }\n    *pcStack_90 = '\0';\n  }\n  if ((pDVar23 == (DIR *)0x0) && (bVar2)) {\n    if ((ent != (FTSENT *)0x1) && (uVar26 != 0)) goto LAB_0001c6c0;\n    if (p->fts_level == 0) {\n      iVar5 = restore_initial_cwd(fts);\n    }\n    else {\n      iVar5 = fts_safe_changedir(fts,p->fts_parent,-1,(char *)(*(int *)(puVar29 + 0x16fd4) + 0x2d20)\n                                );\n    }\n    if (iVar5 != 0) {\n      p->fts_info = 7;\n      fts->fts_options = fts->fts_options | 0x4000;\n      fts_lfree(pFStack_a0);\n      return;\n    }\n  }\n  if (uVar26 == 0) {\n    if (((ent == (FTSENT *)0x3) && (p->fts_info != 4)) && (p->fts_info != 7)) {\n      p->fts_info = 6;\n    }\n    fts_lfree(pFStack_a0);\n    return;\n  }\nLAB_0001c6c0:\n  if (bVar4) {\n    fts->fts_compar =\n         (_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *)(*(int *)(puVar29 + 0x16fd4) + -0x4fa0);\n    fts_sort(fts,pFStack_a0,uVar26);\n    fts->fts_compar = (_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *)0x0;\n    return;\n  }\n  if (fts->fts_compar == (_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *)0x0) {\n    return;\n  }\n  if (uVar26 < 2) {\n    return;\n  }\n  fts_sort(fts,pFStack_a0,uVar26);\n  return;\n}" { (declaration "stat *psVar1;" type_identifier (pointer_declarator "*psVar1" * identifier) ;) (declaration "bool bVar2;" primitive_type identifier ;) (declaration "bool bVar3;" primitive_type identifier ;) (declaration "bool bVar4;" primitive_type identifier ;) (declaration "undefined3 extraout_var;" type_identifier identifier ;) (declaration "undefined3 extraout_var_00;" type_identifier identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "_ftsent *p_Var6;" type_identifier (pointer_declarator "*p_Var6" * identifier) ;) (declaration "DIR *pDVar7;" type_identifier (pointer_declarator "*pDVar7" * identifier) ;) (declaration "leaf_optimization lVar8;" type_identifier identifier ;) (declaration "int iVar9;" primitive_type identifier ;) (declaration "int iVar10;" primitive_type identifier ;) (declaration "int iVar11;" primitive_type identifier ;) (declaration "_Bool _Var21;" type_identifier identifier ;) (declaration "int *piVar12;" primitive_type (pointer_declarator "*piVar12" * identifier) ;) (declaration "undefined4 *puVar13;" type_identifier (pointer_declarator "*puVar13" * identifier) ;) (declaration "uint uVar14;" type_identifier identifier ;) (declaration "FTSENT *pFVar15;" type_identifier (pointer_declarator "*pFVar15" * identifier) ;) (declaration "undefined4 uVar16;" type_identifier identifier ;) (declaration "_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *p_Var17;" type_identifier (pointer_declarator "*p_Var17" * identifier) ;) (declaration "ushort uVar20;" type_identifier identifier ;) (declaration "int iVar18;" primitive_type identifier ;) (declaration "FTSENT *pFVar19;" type_identifier (pointer_declarator "*pFVar19" * identifier) ;) (declaration "hash_table *phVar22;" type_identifier (pointer_declarator "*phVar22" * identifier) ;) (declaration "DIR *pDVar23;" type_identifier (pointer_declarator "*pDVar23" * identifier) ;) (declaration "size_t sVar24;" primitive_type identifier ;) (declaration "char *pcVar25;" primitive_type (pointer_declarator "*pcVar25" * identifier) ;) (declaration "FTSENT *p;" type_identifier (pointer_declarator "*p" * identifier) ;) (declaration "uint uVar26;" type_identifier identifier ;) (declaration "uint uVar27;" type_identifier identifier ;) (declaration "code *pcVar28;" type_identifier (pointer_declarator "*pcVar28" * identifier) ;) (declaration "undefined *puVar29;" type_identifier (pointer_declarator "*puVar29" * identifier) ;) (declaration "uint uVar30;" type_identifier identifier ;) (declaration "FTSENT *pFStack_a4;" type_identifier (pointer_declarator "*pFStack_a4" * identifier) ;) (declaration "FTSENT *pFStack_a0;" type_identifier (pointer_declarator "*pFStack_a0" * identifier) ;) (declaration "uint uStack_94;" type_identifier identifier ;) (declaration "char *pcStack_90;" primitive_type (pointer_declarator "*pcStack_90" * identifier) ;) (declaration "int iStack_8c;" primitive_type identifier ;) (declaration "int iStack_7c;" primitive_type identifier ;) (declaration "Active_dir obj;" type_identifier identifier ;) (expression_statement "iVar5 = *(int *)PTR___stack_chk_guard_000333f4;" (assignment_expression "iVar5 = *(int *)PTR___stack_chk_guard_000333f4" identifier = (pointer_expression "*(int *)PTR___stack_chk_guard_000333f4" * (cast_expression "(int *)PTR___stack_chk_guard_000333f4" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (if_statement "if ((fts->fts_options & 0x102U) == 0) {\n    p_Var6 = ent->fts_parent;\n    if ((p_Var6 != (_ftsent *)0x0) && (-1 < p_Var6->fts_level)) {\n      phVar22 = (fts->fts_cycle).ht;\n      pcVar28 = (code *)PTR_abort_000332e8;\n      if (phVar22->n_entries == 0 && phVar22->tuning == (Hash_tuning *)0x0) goto LAB_0001c120;\n      if ((phVar22->bucket == *(hash_entry **)&ent->fts_statp[0].st_ino) &&\n         (phVar22->bucket_limit == *(hash_entry **)((int)&ent->fts_statp[0].st_ino + 4))) {\n        psVar1 = ent->fts_statp;\n        ent = (FTSENT *)phVar22->n_buckets;\n        if ((ent == (FTSENT *)0x0) &&\n           (ent = (FTSENT *)phVar22->n_buckets_used, ent == (FTSENT *)psVar1->st_dev)) {\n          phVar22->n_buckets_used = p_Var6->fts_statp[0].st_dev;\n          phVar22->n_buckets = 0;\n          phVar22 = (fts->fts_cycle).ht;\n          ent = *(FTSENT **)((int)&p_Var6->fts_statp[0].st_ino + 4);\n          fts = *(FTS **)&p_Var6->fts_statp[0].st_ino;\n          phVar22->bucket_limit = (hash_entry *)ent;\n          phVar22->bucket = (hash_entry *)fts;\n        }\n      }\n    }\nLAB_0001c0f8:\n    if (iVar5 == *(int *)PTR___stack_chk_guard_000333f4) {\n      return;\n    }\n  }\n  else {\n    obj.dev._4_4_ = ent->fts_statp[0].st_dev;\n    obj.dev._0_4_ = 0;\n    obj.ino._4_4_ = (undefined4)ent->fts_statp[0].st_ino;\n    obj.ino._0_4_ = *(undefined4 *)&ent->fts_statp[0].st_ino;\n    ent = (FTSENT *)&obj;\n    fts = (FTS *)hash_delete((fts->fts_cycle).ht,ent);\n    if (fts != (FTS *)0x0) {\n      (*(code *)PTR_free_000333fc)();\n      goto LAB_0001c0f8;\n    }\n    pcVar28 = (code *)PTR_abort_000332e8;\n    (*(code *)PTR_abort_000332e8)();\nLAB_0001c120:\n    (*pcVar28)();\n  }" if (parenthesized_expression "((fts->fts_options & 0x102U) == 0)" ( (binary_expression "(fts->fts_options & 0x102U) == 0" (parenthesized_expression "(fts->fts_options & 0x102U)" ( (binary_expression "fts->fts_options & 0x102U" (field_expression "fts->fts_options" identifier -> field_identifier) & number_literal) )) == number_literal) )) (compound_statement "{\n    p_Var6 = ent->fts_parent;\n    if ((p_Var6 != (_ftsent *)0x0) && (-1 < p_Var6->fts_level)) {\n      phVar22 = (fts->fts_cycle).ht;\n      pcVar28 = (code *)PTR_abort_000332e8;\n      if (phVar22->n_entries == 0 && phVar22->tuning == (Hash_tuning *)0x0) goto LAB_0001c120;\n      if ((phVar22->bucket == *(hash_entry **)&ent->fts_statp[0].st_ino) &&\n         (phVar22->bucket_limit == *(hash_entry **)((int)&ent->fts_statp[0].st_ino + 4))) {\n        psVar1 = ent->fts_statp;\n        ent = (FTSENT *)phVar22->n_buckets;\n        if ((ent == (FTSENT *)0x0) &&\n           (ent = (FTSENT *)phVar22->n_buckets_used, ent == (FTSENT *)psVar1->st_dev)) {\n          phVar22->n_buckets_used = p_Var6->fts_statp[0].st_dev;\n          phVar22->n_buckets = 0;\n          phVar22 = (fts->fts_cycle).ht;\n          ent = *(FTSENT **)((int)&p_Var6->fts_statp[0].st_ino + 4);\n          fts = *(FTS **)&p_Var6->fts_statp[0].st_ino;\n          phVar22->bucket_limit = (hash_entry *)ent;\n          phVar22->bucket = (hash_entry *)fts;\n        }\n      }\n    }\nLAB_0001c0f8:\n    if (iVar5 == *(int *)PTR___stack_chk_guard_000333f4) {\n      return;\n    }\n  }" { (expression_statement "p_Var6 = ent->fts_parent;" (assignment_expression "p_Var6 = ent->fts_parent" identifier = (field_expression "ent->fts_parent" identifier -> field_identifier)) ;) (if_statement "if ((p_Var6 != (_ftsent *)0x0) && (-1 < p_Var6->fts_level)) {\n      phVar22 = (fts->fts_cycle).ht;\n      pcVar28 = (code *)PTR_abort_000332e8;\n      if (phVar22->n_entries == 0 && phVar22->tuning == (Hash_tuning *)0x0) goto LAB_0001c120;\n      if ((phVar22->bucket == *(hash_entry **)&ent->fts_statp[0].st_ino) &&\n         (phVar22->bucket_limit == *(hash_entry **)((int)&ent->fts_statp[0].st_ino + 4))) {\n        psVar1 = ent->fts_statp;\n        ent = (FTSENT *)phVar22->n_buckets;\n        if ((ent == (FTSENT *)0x0) &&\n           (ent = (FTSENT *)phVar22->n_buckets_used, ent == (FTSENT *)psVar1->st_dev)) {\n          phVar22->n_buckets_used = p_Var6->fts_statp[0].st_dev;\n          phVar22->n_buckets = 0;\n          phVar22 = (fts->fts_cycle).ht;\n          ent = *(FTSENT **)((int)&p_Var6->fts_statp[0].st_ino + 4);\n          fts = *(FTS **)&p_Var6->fts_statp[0].st_ino;\n          phVar22->bucket_limit = (hash_entry *)ent;\n          phVar22->bucket = (hash_entry *)fts;\n        }\n      }\n    }" if (parenthesized_expression "((p_Var6 != (_ftsent *)0x0) && (-1 < p_Var6->fts_level))" ( (binary_expression "(p_Var6 != (_ftsent *)0x0) && (-1 < p_Var6->fts_level)" (parenthesized_expression "(p_Var6 != (_ftsent *)0x0)" ( (binary_expression "p_Var6 != (_ftsent *)0x0" identifier != (cast_expression "(_ftsent *)0x0" ( (type_descriptor "_ftsent *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(-1 < p_Var6->fts_level)" ( (binary_expression "-1 < p_Var6->fts_level" number_literal < (field_expression "p_Var6->fts_level" identifier -> field_identifier)) ))) )) (compound_statement "{\n      phVar22 = (fts->fts_cycle).ht;\n      pcVar28 = (code *)PTR_abort_000332e8;\n      if (phVar22->n_entries == 0 && phVar22->tuning == (Hash_tuning *)0x0) goto LAB_0001c120;\n      if ((phVar22->bucket == *(hash_entry **)&ent->fts_statp[0].st_ino) &&\n         (phVar22->bucket_limit == *(hash_entry **)((int)&ent->fts_statp[0].st_ino + 4))) {\n        psVar1 = ent->fts_statp;\n        ent = (FTSENT *)phVar22->n_buckets;\n        if ((ent == (FTSENT *)0x0) &&\n           (ent = (FTSENT *)phVar22->n_buckets_used, ent == (FTSENT *)psVar1->st_dev)) {\n          phVar22->n_buckets_used = p_Var6->fts_statp[0].st_dev;\n          phVar22->n_buckets = 0;\n          phVar22 = (fts->fts_cycle).ht;\n          ent = *(FTSENT **)((int)&p_Var6->fts_statp[0].st_ino + 4);\n          fts = *(FTS **)&p_Var6->fts_statp[0].st_ino;\n          phVar22->bucket_limit = (hash_entry *)ent;\n          phVar22->bucket = (hash_entry *)fts;\n        }\n      }\n    }" { (expression_statement "phVar22 = (fts->fts_cycle).ht;" (assignment_expression "phVar22 = (fts->fts_cycle).ht" identifier = (field_expression "(fts->fts_cycle).ht" (parenthesized_expression "(fts->fts_cycle)" ( (field_expression "fts->fts_cycle" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "pcVar28 = (code *)PTR_abort_000332e8;" (assignment_expression "pcVar28 = (code *)PTR_abort_000332e8" identifier = (cast_expression "(code *)PTR_abort_000332e8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (if_statement "if (phVar22->n_entries == 0 && phVar22->tuning == (Hash_tuning *)0x0) goto LAB_0001c120;" if (parenthesized_expression "(phVar22->n_entries == 0 && phVar22->tuning == (Hash_tuning *)0x0)" ( (binary_expression "phVar22->n_entries == 0 && phVar22->tuning == (Hash_tuning *)0x0" (binary_expression "phVar22->n_entries == 0" (field_expression "phVar22->n_entries" identifier -> field_identifier) == number_literal) && (binary_expression "phVar22->tuning == (Hash_tuning *)0x0" (field_expression "phVar22->tuning" identifier -> field_identifier) == (cast_expression "(Hash_tuning *)0x0" ( (type_descriptor "Hash_tuning *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) )) (goto_statement "goto LAB_0001c120;" goto statement_identifier ;)) (if_statement "if ((phVar22->bucket == *(hash_entry **)&ent->fts_statp[0].st_ino) &&\n         (phVar22->bucket_limit == *(hash_entry **)((int)&ent->fts_statp[0].st_ino + 4))) {\n        psVar1 = ent->fts_statp;\n        ent = (FTSENT *)phVar22->n_buckets;\n        if ((ent == (FTSENT *)0x0) &&\n           (ent = (FTSENT *)phVar22->n_buckets_used, ent == (FTSENT *)psVar1->st_dev)) {\n          phVar22->n_buckets_used = p_Var6->fts_statp[0].st_dev;\n          phVar22->n_buckets = 0;\n          phVar22 = (fts->fts_cycle).ht;\n          ent = *(FTSENT **)((int)&p_Var6->fts_statp[0].st_ino + 4);\n          fts = *(FTS **)&p_Var6->fts_statp[0].st_ino;\n          phVar22->bucket_limit = (hash_entry *)ent;\n          phVar22->bucket = (hash_entry *)fts;\n        }\n      }" if (parenthesized_expression "((phVar22->bucket == *(hash_entry **)&ent->fts_statp[0].st_ino) &&\n         (phVar22->bucket_limit == *(hash_entry **)((int)&ent->fts_statp[0].st_ino + 4)))" ( (binary_expression "(phVar22->bucket == *(hash_entry **)&ent->fts_statp[0].st_ino) &&\n         (phVar22->bucket_limit == *(hash_entry **)((int)&ent->fts_statp[0].st_ino + 4))" (parenthesized_expression "(phVar22->bucket == *(hash_entry **)&ent->fts_statp[0].st_ino)" ( (binary_expression "phVar22->bucket == *(hash_entry **)&ent->fts_statp[0].st_ino" (field_expression "phVar22->bucket" identifier -> field_identifier) == (pointer_expression "*(hash_entry **)&ent->fts_statp[0].st_ino" * (cast_expression "(hash_entry **)&ent->fts_statp[0].st_ino" ( (type_descriptor "hash_entry **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (pointer_expression "&ent->fts_statp[0].st_ino" & (field_expression "ent->fts_statp[0].st_ino" (subscript_expression "ent->fts_statp[0]" (field_expression "ent->fts_statp" identifier -> field_identifier) [ number_literal ]) . field_identifier))))) )) && (parenthesized_expression "(phVar22->bucket_limit == *(hash_entry **)((int)&ent->fts_statp[0].st_ino + 4))" ( (binary_expression "phVar22->bucket_limit == *(hash_entry **)((int)&ent->fts_statp[0].st_ino + 4)" (field_expression "phVar22->bucket_limit" identifier -> field_identifier) == (pointer_expression "*(hash_entry **)((int)&ent->fts_statp[0].st_ino + 4)" * (cast_expression "(hash_entry **)((int)&ent->fts_statp[0].st_ino + 4)" ( (type_descriptor "hash_entry **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)&ent->fts_statp[0].st_ino + 4)" ( (binary_expression "(int)&ent->fts_statp[0].st_ino + 4" (cast_expression "(int)&ent->fts_statp[0].st_ino" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&ent->fts_statp[0].st_ino" & (field_expression "ent->fts_statp[0].st_ino" (subscript_expression "ent->fts_statp[0]" (field_expression "ent->fts_statp" identifier -> field_identifier) [ number_literal ]) . field_identifier))) + number_literal) ))))) ))) )) (compound_statement "{\n        psVar1 = ent->fts_statp;\n        ent = (FTSENT *)phVar22->n_buckets;\n        if ((ent == (FTSENT *)0x0) &&\n           (ent = (FTSENT *)phVar22->n_buckets_used, ent == (FTSENT *)psVar1->st_dev)) {\n          phVar22->n_buckets_used = p_Var6->fts_statp[0].st_dev;\n          phVar22->n_buckets = 0;\n          phVar22 = (fts->fts_cycle).ht;\n          ent = *(FTSENT **)((int)&p_Var6->fts_statp[0].st_ino + 4);\n          fts = *(FTS **)&p_Var6->fts_statp[0].st_ino;\n          phVar22->bucket_limit = (hash_entry *)ent;\n          phVar22->bucket = (hash_entry *)fts;\n        }\n      }" { (expression_statement "psVar1 = ent->fts_statp;" (assignment_expression "psVar1 = ent->fts_statp" identifier = (field_expression "ent->fts_statp" identifier -> field_identifier)) ;) (expression_statement "ent = (FTSENT *)phVar22->n_buckets;" (assignment_expression "ent = (FTSENT *)phVar22->n_buckets" identifier = (cast_expression "(FTSENT *)phVar22->n_buckets" ( (type_descriptor "FTSENT *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "phVar22->n_buckets" identifier -> field_identifier))) ;) (if_statement "if ((ent == (FTSENT *)0x0) &&\n           (ent = (FTSENT *)phVar22->n_buckets_used, ent == (FTSENT *)psVar1->st_dev)) {\n          phVar22->n_buckets_used = p_Var6->fts_statp[0].st_dev;\n          phVar22->n_buckets = 0;\n          phVar22 = (fts->fts_cycle).ht;\n          ent = *(FTSENT **)((int)&p_Var6->fts_statp[0].st_ino + 4);\n          fts = *(FTS **)&p_Var6->fts_statp[0].st_ino;\n          phVar22->bucket_limit = (hash_entry *)ent;\n          phVar22->bucket = (hash_entry *)fts;\n        }" if (parenthesized_expression "((ent == (FTSENT *)0x0) &&\n           (ent = (FTSENT *)phVar22->n_buckets_used, ent == (FTSENT *)psVar1->st_dev))" ( (binary_expression "(ent == (FTSENT *)0x0) &&\n           (ent = (FTSENT *)phVar22->n_buckets_used, ent == (FTSENT *)psVar1->st_dev)" (parenthesized_expression "(ent == (FTSENT *)0x0)" ( (binary_expression "ent == (FTSENT *)0x0" identifier == (cast_expression "(FTSENT *)0x0" ( (type_descriptor "FTSENT *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(ent = (FTSENT *)phVar22->n_buckets_used, ent == (FTSENT *)psVar1->st_dev)" ( (comma_expression "ent = (FTSENT *)phVar22->n_buckets_used, ent == (FTSENT *)psVar1->st_dev" (assignment_expression "ent = (FTSENT *)phVar22->n_buckets_used" identifier = (cast_expression "(FTSENT *)phVar22->n_buckets_used" ( (type_descriptor "FTSENT *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "phVar22->n_buckets_used" identifier -> field_identifier))) , (binary_expression "ent == (FTSENT *)psVar1->st_dev" identifier == (cast_expression "(FTSENT *)psVar1->st_dev" ( (type_descriptor "FTSENT *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "psVar1->st_dev" identifier -> field_identifier)))) ))) )) (compound_statement "{\n          phVar22->n_buckets_used = p_Var6->fts_statp[0].st_dev;\n          phVar22->n_buckets = 0;\n          phVar22 = (fts->fts_cycle).ht;\n          ent = *(FTSENT **)((int)&p_Var6->fts_statp[0].st_ino + 4);\n          fts = *(FTS **)&p_Var6->fts_statp[0].st_ino;\n          phVar22->bucket_limit = (hash_entry *)ent;\n          phVar22->bucket = (hash_entry *)fts;\n        }" { (expression_statement "phVar22->n_buckets_used = p_Var6->fts_statp[0].st_dev;" (assignment_expression "phVar22->n_buckets_used = p_Var6->fts_statp[0].st_dev" (field_expression "phVar22->n_buckets_used" identifier -> field_identifier) = (field_expression "p_Var6->fts_statp[0].st_dev" (subscript_expression "p_Var6->fts_statp[0]" (field_expression "p_Var6->fts_statp" identifier -> field_identifier) [ number_literal ]) . field_identifier)) ;) (expression_statement "phVar22->n_buckets = 0;" (assignment_expression "phVar22->n_buckets = 0" (field_expression "phVar22->n_buckets" identifier -> field_identifier) = number_literal) ;) (expression_statement "phVar22 = (fts->fts_cycle).ht;" (assignment_expression "phVar22 = (fts->fts_cycle).ht" identifier = (field_expression "(fts->fts_cycle).ht" (parenthesized_expression "(fts->fts_cycle)" ( (field_expression "fts->fts_cycle" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "ent = *(FTSENT **)((int)&p_Var6->fts_statp[0].st_ino + 4);" (assignment_expression "ent = *(FTSENT **)((int)&p_Var6->fts_statp[0].st_ino + 4)" identifier = (pointer_expression "*(FTSENT **)((int)&p_Var6->fts_statp[0].st_ino + 4)" * (cast_expression "(FTSENT **)((int)&p_Var6->fts_statp[0].st_ino + 4)" ( (type_descriptor "FTSENT **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)&p_Var6->fts_statp[0].st_ino + 4)" ( (binary_expression "(int)&p_Var6->fts_statp[0].st_ino + 4" (cast_expression "(int)&p_Var6->fts_statp[0].st_ino" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&p_Var6->fts_statp[0].st_ino" & (field_expression "p_Var6->fts_statp[0].st_ino" (subscript_expression "p_Var6->fts_statp[0]" (field_expression "p_Var6->fts_statp" identifier -> field_identifier) [ number_literal ]) . field_identifier))) + number_literal) ))))) ;) (expression_statement "fts = *(FTS **)&p_Var6->fts_statp[0].st_ino;" (assignment_expression "fts = *(FTS **)&p_Var6->fts_statp[0].st_ino" identifier = (pointer_expression "*(FTS **)&p_Var6->fts_statp[0].st_ino" * (cast_expression "(FTS **)&p_Var6->fts_statp[0].st_ino" ( (type_descriptor "FTS **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (pointer_expression "&p_Var6->fts_statp[0].st_ino" & (field_expression "p_Var6->fts_statp[0].st_ino" (subscript_expression "p_Var6->fts_statp[0]" (field_expression "p_Var6->fts_statp" identifier -> field_identifier) [ number_literal ]) . field_identifier))))) ;) (expression_statement "phVar22->bucket_limit = (hash_entry *)ent;" (assignment_expression "phVar22->bucket_limit = (hash_entry *)ent" (field_expression "phVar22->bucket_limit" identifier -> field_identifier) = (cast_expression "(hash_entry *)ent" ( (type_descriptor "hash_entry *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "phVar22->bucket = (hash_entry *)fts;" (assignment_expression "phVar22->bucket = (hash_entry *)fts" (field_expression "phVar22->bucket" identifier -> field_identifier) = (cast_expression "(hash_entry *)fts" ( (type_descriptor "hash_entry *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) })) })) })) (labeled_statement "LAB_0001c0f8:\n    if (iVar5 == *(int *)PTR___stack_chk_guard_000333f4) {\n      return;\n    }" statement_identifier : (if_statement "if (iVar5 == *(int *)PTR___stack_chk_guard_000333f4) {\n      return;\n    }" if (parenthesized_expression "(iVar5 == *(int *)PTR___stack_chk_guard_000333f4)" ( (binary_expression "iVar5 == *(int *)PTR___stack_chk_guard_000333f4" identifier == (pointer_expression "*(int *)PTR___stack_chk_guard_000333f4" * (cast_expression "(int *)PTR___stack_chk_guard_000333f4" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) )) (compound_statement "{\n      return;\n    }" { (return_statement "return;" return ;) }))) }) (else_clause "else {\n    obj.dev._4_4_ = ent->fts_statp[0].st_dev;\n    obj.dev._0_4_ = 0;\n    obj.ino._4_4_ = (undefined4)ent->fts_statp[0].st_ino;\n    obj.ino._0_4_ = *(undefined4 *)&ent->fts_statp[0].st_ino;\n    ent = (FTSENT *)&obj;\n    fts = (FTS *)hash_delete((fts->fts_cycle).ht,ent);\n    if (fts != (FTS *)0x0) {\n      (*(code *)PTR_free_000333fc)();\n      goto LAB_0001c0f8;\n    }\n    pcVar28 = (code *)PTR_abort_000332e8;\n    (*(code *)PTR_abort_000332e8)();\nLAB_0001c120:\n    (*pcVar28)();\n  }" else (compound_statement "{\n    obj.dev._4_4_ = ent->fts_statp[0].st_dev;\n    obj.dev._0_4_ = 0;\n    obj.ino._4_4_ = (undefined4)ent->fts_statp[0].st_ino;\n    obj.ino._0_4_ = *(undefined4 *)&ent->fts_statp[0].st_ino;\n    ent = (FTSENT *)&obj;\n    fts = (FTS *)hash_delete((fts->fts_cycle).ht,ent);\n    if (fts != (FTS *)0x0) {\n      (*(code *)PTR_free_000333fc)();\n      goto LAB_0001c0f8;\n    }\n    pcVar28 = (code *)PTR_abort_000332e8;\n    (*(code *)PTR_abort_000332e8)();\nLAB_0001c120:\n    (*pcVar28)();\n  }" { (expression_statement "obj.dev._4_4_ = ent->fts_statp[0].st_dev;" (assignment_expression "obj.dev._4_4_ = ent->fts_statp[0].st_dev" (field_expression "obj.dev._4_4_" (field_expression "obj.dev" identifier . field_identifier) . field_identifier) = (field_expression "ent->fts_statp[0].st_dev" (subscript_expression "ent->fts_statp[0]" (field_expression "ent->fts_statp" identifier -> field_identifier) [ number_literal ]) . field_identifier)) ;) (expression_statement "obj.dev._0_4_ = 0;" (assignment_expression "obj.dev._0_4_ = 0" (field_expression "obj.dev._0_4_" (field_expression "obj.dev" identifier . field_identifier) . field_identifier) = number_literal) ;) (expression_statement "obj.ino._4_4_ = (undefined4)ent->fts_statp[0].st_ino;" (assignment_expression "obj.ino._4_4_ = (undefined4)ent->fts_statp[0].st_ino" (field_expression "obj.ino._4_4_" (field_expression "obj.ino" identifier . field_identifier) . field_identifier) = (cast_expression "(undefined4)ent->fts_statp[0].st_ino" ( (type_descriptor "undefined4" type_identifier) ) (field_expression "ent->fts_statp[0].st_ino" (subscript_expression "ent->fts_statp[0]" (field_expression "ent->fts_statp" identifier -> field_identifier) [ number_literal ]) . field_identifier))) ;) (expression_statement "obj.ino._0_4_ = *(undefined4 *)&ent->fts_statp[0].st_ino;" (assignment_expression "obj.ino._0_4_ = *(undefined4 *)&ent->fts_statp[0].st_ino" (field_expression "obj.ino._0_4_" (field_expression "obj.ino" identifier . field_identifier) . field_identifier) = (pointer_expression "*(undefined4 *)&ent->fts_statp[0].st_ino" * (cast_expression "(undefined4 *)&ent->fts_statp[0].st_ino" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&ent->fts_statp[0].st_ino" & (field_expression "ent->fts_statp[0].st_ino" (subscript_expression "ent->fts_statp[0]" (field_expression "ent->fts_statp" identifier -> field_identifier) [ number_literal ]) . field_identifier))))) ;) (expression_statement "ent = (FTSENT *)&obj;" (assignment_expression "ent = (FTSENT *)&obj" identifier = (cast_expression "(FTSENT *)&obj" ( (type_descriptor "FTSENT *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&obj" & identifier))) ;) (expression_statement "fts = (FTS *)hash_delete((fts->fts_cycle).ht,ent);" (assignment_expression "fts = (FTS *)hash_delete((fts->fts_cycle).ht,ent)" identifier = (cast_expression "(FTS *)hash_delete((fts->fts_cycle).ht,ent)" ( (type_descriptor "FTS *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "hash_delete((fts->fts_cycle).ht,ent)" identifier (argument_list "((fts->fts_cycle).ht,ent)" ( (field_expression "(fts->fts_cycle).ht" (parenthesized_expression "(fts->fts_cycle)" ( (field_expression "fts->fts_cycle" identifier -> field_identifier) )) . field_identifier) , identifier ))))) ;) (if_statement "if (fts != (FTS *)0x0) {\n      (*(code *)PTR_free_000333fc)();\n      goto LAB_0001c0f8;\n    }" if (parenthesized_expression "(fts != (FTS *)0x0)" ( (binary_expression "fts != (FTS *)0x0" identifier != (cast_expression "(FTS *)0x0" ( (type_descriptor "FTS *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      (*(code *)PTR_free_000333fc)();\n      goto LAB_0001c0f8;\n    }" { (expression_statement "(*(code *)PTR_free_000333fc)();" (call_expression "(*(code *)PTR_free_000333fc)()" (parenthesized_expression "(*(code *)PTR_free_000333fc)" ( (pointer_expression "*(code *)PTR_free_000333fc" * (cast_expression "(code *)PTR_free_000333fc" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (goto_statement "goto LAB_0001c0f8;" goto statement_identifier ;) })) (expression_statement "pcVar28 = (code *)PTR_abort_000332e8;" (assignment_expression "pcVar28 = (code *)PTR_abort_000332e8" identifier = (cast_expression "(code *)PTR_abort_000332e8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "(*(code *)PTR_abort_000332e8)();" (call_expression "(*(code *)PTR_abort_000332e8)()" (parenthesized_expression "(*(code *)PTR_abort_000332e8)" ( (pointer_expression "*(code *)PTR_abort_000332e8" * (cast_expression "(code *)PTR_abort_000332e8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (labeled_statement "LAB_0001c120:\n    (*pcVar28)();" statement_identifier : (expression_statement "(*pcVar28)();" (call_expression "(*pcVar28)()" (parenthesized_expression "(*pcVar28)" ( (pointer_expression "*pcVar28" * identifier) )) (argument_list "()" ( ))) ;)) }))) (expression_statement "puVar29 = PTR___stack_chk_fail_000333dc;" (assignment_expression "puVar29 = PTR___stack_chk_fail_000333dc" identifier = identifier) ;) (expression_statement "(*(code *)PTR___stack_chk_fail_000333dc)();" (call_expression "(*(code *)PTR___stack_chk_fail_000333dc)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_000333dc)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_000333dc" * (cast_expression "(code *)PTR___stack_chk_fail_000333dc" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "p = fts->fts_cur;" (assignment_expression "p = fts->fts_cur" identifier = (field_expression "fts->fts_cur" identifier -> field_identifier)) ;) (expression_statement "pDVar23 = p->fts_dirp;" (assignment_expression "pDVar23 = p->fts_dirp" identifier = (field_expression "p->fts_dirp" identifier -> field_identifier)) ;) (if_statement "if (pDVar23 != (DIR *)0x0) {\n    iStack_7c = (**(code **)(puVar29 + 0x172d0))();\n    if (iStack_7c < 0) {\n      (**(code **)(puVar29 + 0x17194))(p->fts_dirp);\n      p->fts_dirp = (DIR *)0x0;\n      if (ent != (FTSENT *)0x3) {\n        return;\n      }\n      p->fts_info = 4;\n      piVar12 = (int *)(**(code **)(puVar29 + 0x17220))();\n      p->fts_errno = *piVar12;\n      return;\n    }\n    if (fts->fts_compar == (_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *)0x0) {\n      uStack_94 = 100000;\n      bVar2 = true;\n    }\n    else {\n      uStack_94 = 0xffffffff;\n      bVar2 = true;\n    }\n    goto LAB_0001c1b8;\n  }" if (parenthesized_expression "(pDVar23 != (DIR *)0x0)" ( (binary_expression "pDVar23 != (DIR *)0x0" identifier != (cast_expression "(DIR *)0x0" ( (type_descriptor "DIR *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    iStack_7c = (**(code **)(puVar29 + 0x172d0))();\n    if (iStack_7c < 0) {\n      (**(code **)(puVar29 + 0x17194))(p->fts_dirp);\n      p->fts_dirp = (DIR *)0x0;\n      if (ent != (FTSENT *)0x3) {\n        return;\n      }\n      p->fts_info = 4;\n      piVar12 = (int *)(**(code **)(puVar29 + 0x17220))();\n      p->fts_errno = *piVar12;\n      return;\n    }\n    if (fts->fts_compar == (_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *)0x0) {\n      uStack_94 = 100000;\n      bVar2 = true;\n    }\n    else {\n      uStack_94 = 0xffffffff;\n      bVar2 = true;\n    }\n    goto LAB_0001c1b8;\n  }" { (expression_statement "iStack_7c = (**(code **)(puVar29 + 0x172d0))();" (assignment_expression "iStack_7c = (**(code **)(puVar29 + 0x172d0))()" identifier = (call_expression "(**(code **)(puVar29 + 0x172d0))()" (parenthesized_expression "(**(code **)(puVar29 + 0x172d0))" ( (pointer_expression "**(code **)(puVar29 + 0x172d0)" * (pointer_expression "*(code **)(puVar29 + 0x172d0)" * (cast_expression "(code **)(puVar29 + 0x172d0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar29 + 0x172d0)" ( (binary_expression "puVar29 + 0x172d0" identifier + number_literal) ))))) )) (argument_list "()" ( )))) ;) (if_statement "if (iStack_7c < 0) {\n      (**(code **)(puVar29 + 0x17194))(p->fts_dirp);\n      p->fts_dirp = (DIR *)0x0;\n      if (ent != (FTSENT *)0x3) {\n        return;\n      }\n      p->fts_info = 4;\n      piVar12 = (int *)(**(code **)(puVar29 + 0x17220))();\n      p->fts_errno = *piVar12;\n      return;\n    }" if (parenthesized_expression "(iStack_7c < 0)" ( (binary_expression "iStack_7c < 0" identifier < number_literal) )) (compound_statement "{\n      (**(code **)(puVar29 + 0x17194))(p->fts_dirp);\n      p->fts_dirp = (DIR *)0x0;\n      if (ent != (FTSENT *)0x3) {\n        return;\n      }\n      p->fts_info = 4;\n      piVar12 = (int *)(**(code **)(puVar29 + 0x17220))();\n      p->fts_errno = *piVar12;\n      return;\n    }" { (expression_statement "(**(code **)(puVar29 + 0x17194))(p->fts_dirp);" (call_expression "(**(code **)(puVar29 + 0x17194))(p->fts_dirp)" (parenthesized_expression "(**(code **)(puVar29 + 0x17194))" ( (pointer_expression "**(code **)(puVar29 + 0x17194)" * (pointer_expression "*(code **)(puVar29 + 0x17194)" * (cast_expression "(code **)(puVar29 + 0x17194)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar29 + 0x17194)" ( (binary_expression "puVar29 + 0x17194" identifier + number_literal) ))))) )) (argument_list "(p->fts_dirp)" ( (field_expression "p->fts_dirp" identifier -> field_identifier) ))) ;) (expression_statement "p->fts_dirp = (DIR *)0x0;" (assignment_expression "p->fts_dirp = (DIR *)0x0" (field_expression "p->fts_dirp" identifier -> field_identifier) = (cast_expression "(DIR *)0x0" ( (type_descriptor "DIR *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if (ent != (FTSENT *)0x3) {\n        return;\n      }" if (parenthesized_expression "(ent != (FTSENT *)0x3)" ( (binary_expression "ent != (FTSENT *)0x3" identifier != (cast_expression "(FTSENT *)0x3" ( (type_descriptor "FTSENT *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        return;\n      }" { (return_statement "return;" return ;) })) (expression_statement "p->fts_info = 4;" (assignment_expression "p->fts_info = 4" (field_expression "p->fts_info" identifier -> field_identifier) = number_literal) ;) (expression_statement "piVar12 = (int *)(**(code **)(puVar29 + 0x17220))();" (assignment_expression "piVar12 = (int *)(**(code **)(puVar29 + 0x17220))()" identifier = (cast_expression "(int *)(**(code **)(puVar29 + 0x17220))()" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(puVar29 + 0x17220))()" (parenthesized_expression "(**(code **)(puVar29 + 0x17220))" ( (pointer_expression "**(code **)(puVar29 + 0x17220)" * (pointer_expression "*(code **)(puVar29 + 0x17220)" * (cast_expression "(code **)(puVar29 + 0x17220)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar29 + 0x17220)" ( (binary_expression "puVar29 + 0x17220" identifier + number_literal) ))))) )) (argument_list "()" ( ))))) ;) (expression_statement "p->fts_errno = *piVar12;" (assignment_expression "p->fts_errno = *piVar12" (field_expression "p->fts_errno" identifier -> field_identifier) = (pointer_expression "*piVar12" * identifier)) ;) (return_statement "return;" return ;) })) (if_statement "if (fts->fts_compar == (_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *)0x0) {\n      uStack_94 = 100000;\n      bVar2 = true;\n    }\n    else {\n      uStack_94 = 0xffffffff;\n      bVar2 = true;\n    }" if (parenthesized_expression "(fts->fts_compar == (_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *)0x0)" ( (binary_expression "fts->fts_compar == (_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *)0x0" (field_expression "fts->fts_compar" identifier -> field_identifier) == (cast_expression "(_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *)0x0" ( (type_descriptor "_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      uStack_94 = 100000;\n      bVar2 = true;\n    }" { (expression_statement "uStack_94 = 100000;" (assignment_expression "uStack_94 = 100000" identifier = number_literal) ;) (expression_statement "bVar2 = true;" (assignment_expression "bVar2 = true" identifier = true) ;) }) (else_clause "else {\n      uStack_94 = 0xffffffff;\n      bVar2 = true;\n    }" else (compound_statement "{\n      uStack_94 = 0xffffffff;\n      bVar2 = true;\n    }" { (expression_statement "uStack_94 = 0xffffffff;" (assignment_expression "uStack_94 = 0xffffffff" identifier = number_literal) ;) (expression_statement "bVar2 = true;" (assignment_expression "bVar2 = true" identifier = true) ;) }))) (goto_statement "goto LAB_0001c1b8;" goto statement_identifier ;) })) (expression_statement "uVar26 = fts->fts_options;" (assignment_expression "uVar26 = fts->fts_options" identifier = (field_expression "fts->fts_options" identifier -> field_identifier)) ;) (if_statement "if ((uVar26 & 0x204) == 0x200) {\n    iVar5 = fts->fts_cwd_fd;\n  }\n  else {\n    iVar5 = -100;\n  }" if (parenthesized_expression "((uVar26 & 0x204) == 0x200)" ( (binary_expression "(uVar26 & 0x204) == 0x200" (parenthesized_expression "(uVar26 & 0x204)" ( (binary_expression "uVar26 & 0x204" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n    iVar5 = fts->fts_cwd_fd;\n  }" { (expression_statement "iVar5 = fts->fts_cwd_fd;" (assignment_expression "iVar5 = fts->fts_cwd_fd" identifier = (field_expression "fts->fts_cwd_fd" identifier -> field_identifier)) ;) }) (else_clause "else {\n    iVar5 = -100;\n  }" else (compound_statement "{\n    iVar5 = -100;\n  }" { (expression_statement "iVar5 = -100;" (assignment_expression "iVar5 = -100" identifier = number_literal) ;) }))) (expression_statement "uVar27 = uVar26 & 0x10;" (assignment_expression "uVar27 = uVar26 & 0x10" identifier = (binary_expression "uVar26 & 0x10" identifier & number_literal)) ;) (if_statement "if (((uVar27 != 0) && (uVar27 = 0x20000, (uVar26 & 1) != 0)) &&\n     (uVar27 = p->fts_level, uVar27 != 0)) {\n    uVar27 = 0x20000;\n  }" if (parenthesized_expression "(((uVar27 != 0) && (uVar27 = 0x20000, (uVar26 & 1) != 0)) &&\n     (uVar27 = p->fts_level, uVar27 != 0))" ( (binary_expression "((uVar27 != 0) && (uVar27 = 0x20000, (uVar26 & 1) != 0)) &&\n     (uVar27 = p->fts_level, uVar27 != 0)" (parenthesized_expression "((uVar27 != 0) && (uVar27 = 0x20000, (uVar26 & 1) != 0))" ( (binary_expression "(uVar27 != 0) && (uVar27 = 0x20000, (uVar26 & 1) != 0)" (parenthesized_expression "(uVar27 != 0)" ( (binary_expression "uVar27 != 0" identifier != number_literal) )) && (parenthesized_expression "(uVar27 = 0x20000, (uVar26 & 1) != 0)" ( (comma_expression "uVar27 = 0x20000, (uVar26 & 1) != 0" (assignment_expression "uVar27 = 0x20000" identifier = number_literal) , (binary_expression "(uVar26 & 1) != 0" (parenthesized_expression "(uVar26 & 1)" ( (binary_expression "uVar26 & 1" identifier & number_literal) )) != number_literal)) ))) )) && (parenthesized_expression "(uVar27 = p->fts_level, uVar27 != 0)" ( (comma_expression "uVar27 = p->fts_level, uVar27 != 0" (assignment_expression "uVar27 = p->fts_level" identifier = (field_expression "p->fts_level" identifier -> field_identifier)) , (binary_expression "uVar27 != 0" identifier != number_literal)) ))) )) (compound_statement "{\n    uVar27 = 0x20000;\n  }" { (expression_statement "uVar27 = 0x20000;" (assignment_expression "uVar27 = 0x20000" identifier = number_literal) ;) })) (expression_statement "iStack_7c = openat_safer(iVar5,p->fts_accpath,(uVar26 & 0x800) << 7 | uVar27 | 0x90880);" (assignment_expression "iStack_7c = openat_safer(iVar5,p->fts_accpath,(uVar26 & 0x800) << 7 | uVar27 | 0x90880)" identifier = (call_expression "openat_safer(iVar5,p->fts_accpath,(uVar26 & 0x800) << 7 | uVar27 | 0x90880)" identifier (argument_list "(iVar5,p->fts_accpath,(uVar26 & 0x800) << 7 | uVar27 | 0x90880)" ( identifier , (field_expression "p->fts_accpath" identifier -> field_identifier) , (binary_expression "(uVar26 & 0x800) << 7 | uVar27 | 0x90880" (binary_expression "(uVar26 & 0x800) << 7 | uVar27" (binary_expression "(uVar26 & 0x800) << 7" (parenthesized_expression "(uVar26 & 0x800)" ( (binary_expression "uVar26 & 0x800" identifier & number_literal) )) << number_literal) | identifier) | number_literal) )))) ;) (if_statement "if (iStack_7c < 0) {\nLAB_0001c3e8:\n    p->fts_dirp = (DIR *)0x0;\n    if (ent == (FTSENT *)0x3) {\n      p->fts_info = 4;\n      piVar12 = (int *)(**(code **)(puVar29 + 0x17220))();\n      p->fts_errno = *piVar12;\n    }\n    return;\n  }" if (parenthesized_expression "(iStack_7c < 0)" ( (binary_expression "iStack_7c < 0" identifier < number_literal) )) (compound_statement "{\nLAB_0001c3e8:\n    p->fts_dirp = (DIR *)0x0;\n    if (ent == (FTSENT *)0x3) {\n      p->fts_info = 4;\n      piVar12 = (int *)(**(code **)(puVar29 + 0x17220))();\n      p->fts_errno = *piVar12;\n    }\n    return;\n  }" { (labeled_statement "LAB_0001c3e8:\n    p->fts_dirp = (DIR *)0x0;" statement_identifier : (expression_statement "p->fts_dirp = (DIR *)0x0;" (assignment_expression "p->fts_dirp = (DIR *)0x0" (field_expression "p->fts_dirp" identifier -> field_identifier) = (cast_expression "(DIR *)0x0" ( (type_descriptor "DIR *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;)) (if_statement "if (ent == (FTSENT *)0x3) {\n      p->fts_info = 4;\n      piVar12 = (int *)(**(code **)(puVar29 + 0x17220))();\n      p->fts_errno = *piVar12;\n    }" if (parenthesized_expression "(ent == (FTSENT *)0x3)" ( (binary_expression "ent == (FTSENT *)0x3" identifier == (cast_expression "(FTSENT *)0x3" ( (type_descriptor "FTSENT *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      p->fts_info = 4;\n      piVar12 = (int *)(**(code **)(puVar29 + 0x17220))();\n      p->fts_errno = *piVar12;\n    }" { (expression_statement "p->fts_info = 4;" (assignment_expression "p->fts_info = 4" (field_expression "p->fts_info" identifier -> field_identifier) = number_literal) ;) (expression_statement "piVar12 = (int *)(**(code **)(puVar29 + 0x17220))();" (assignment_expression "piVar12 = (int *)(**(code **)(puVar29 + 0x17220))()" identifier = (cast_expression "(int *)(**(code **)(puVar29 + 0x17220))()" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(puVar29 + 0x17220))()" (parenthesized_expression "(**(code **)(puVar29 + 0x17220))" ( (pointer_expression "**(code **)(puVar29 + 0x17220)" * (pointer_expression "*(code **)(puVar29 + 0x17220)" * (cast_expression "(code **)(puVar29 + 0x17220)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar29 + 0x17220)" ( (binary_expression "puVar29 + 0x17220" identifier + number_literal) ))))) )) (argument_list "()" ( ))))) ;) (expression_statement "p->fts_errno = *piVar12;" (assignment_expression "p->fts_errno = *piVar12" (field_expression "p->fts_errno" identifier -> field_identifier) = (pointer_expression "*piVar12" * identifier)) ;) })) (return_statement "return;" return ;) })) (expression_statement "pDVar7 = (DIR *)(**(code **)(puVar29 + 0x171f0))(iStack_7c);" (assignment_expression "pDVar7 = (DIR *)(**(code **)(puVar29 + 0x171f0))(iStack_7c)" identifier = (cast_expression "(DIR *)(**(code **)(puVar29 + 0x171f0))(iStack_7c)" ( (type_descriptor "DIR *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(puVar29 + 0x171f0))(iStack_7c)" (parenthesized_expression "(**(code **)(puVar29 + 0x171f0))" ( (pointer_expression "**(code **)(puVar29 + 0x171f0)" * (pointer_expression "*(code **)(puVar29 + 0x171f0)" * (cast_expression "(code **)(puVar29 + 0x171f0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar29 + 0x171f0)" ( (binary_expression "puVar29 + 0x171f0" identifier + number_literal) ))))) )) (argument_list "(iStack_7c)" ( identifier ))))) ;) (if_statement "if (pDVar7 == (DIR *)0x0) {\n    puVar13 = (undefined4 *)(**(code **)(puVar29 + 0x17220))();\n    uVar16 = *puVar13;\n    (**(code **)(puVar29 + 0x17198))(iStack_7c);\n    *puVar13 = uVar16;\n    goto LAB_0001c3e8;\n  }" if (parenthesized_expression "(pDVar7 == (DIR *)0x0)" ( (binary_expression "pDVar7 == (DIR *)0x0" identifier == (cast_expression "(DIR *)0x0" ( (type_descriptor "DIR *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    puVar13 = (undefined4 *)(**(code **)(puVar29 + 0x17220))();\n    uVar16 = *puVar13;\n    (**(code **)(puVar29 + 0x17198))(iStack_7c);\n    *puVar13 = uVar16;\n    goto LAB_0001c3e8;\n  }" { (expression_statement "puVar13 = (undefined4 *)(**(code **)(puVar29 + 0x17220))();" (assignment_expression "puVar13 = (undefined4 *)(**(code **)(puVar29 + 0x17220))()" identifier = (cast_expression "(undefined4 *)(**(code **)(puVar29 + 0x17220))()" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(puVar29 + 0x17220))()" (parenthesized_expression "(**(code **)(puVar29 + 0x17220))" ( (pointer_expression "**(code **)(puVar29 + 0x17220)" * (pointer_expression "*(code **)(puVar29 + 0x17220)" * (cast_expression "(code **)(puVar29 + 0x17220)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar29 + 0x17220)" ( (binary_expression "puVar29 + 0x17220" identifier + number_literal) ))))) )) (argument_list "()" ( ))))) ;) (expression_statement "uVar16 = *puVar13;" (assignment_expression "uVar16 = *puVar13" identifier = (pointer_expression "*puVar13" * identifier)) ;) (expression_statement "(**(code **)(puVar29 + 0x17198))(iStack_7c);" (call_expression "(**(code **)(puVar29 + 0x17198))(iStack_7c)" (parenthesized_expression "(**(code **)(puVar29 + 0x17198))" ( (pointer_expression "**(code **)(puVar29 + 0x17198)" * (pointer_expression "*(code **)(puVar29 + 0x17198)" * (cast_expression "(code **)(puVar29 + 0x17198)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar29 + 0x17198)" ( (binary_expression "puVar29 + 0x17198" identifier + number_literal) ))))) )) (argument_list "(iStack_7c)" ( identifier ))) ;) (expression_statement "*puVar13 = uVar16;" (assignment_expression "*puVar13 = uVar16" (pointer_expression "*puVar13" * identifier) = identifier) ;) (goto_statement "goto LAB_0001c3e8;" goto statement_identifier ;) })) (expression_statement "p->fts_dirp = pDVar7;" (assignment_expression "p->fts_dirp = pDVar7" (field_expression "p->fts_dirp" identifier -> field_identifier) = identifier) ;) (if_statement "if (p->fts_info == 0xb) {\n    uVar20 = fts_stat(fts,p,false);\n    p->fts_info = uVar20;\n  }\n  else if ((fts->fts_options & 0x100U) != 0) {\n    leave_dir(fts,p);\n    fts_stat(fts,p,false);\n    _Var21 = enter_dir(fts,p);\n    if (CONCAT31(extraout_var,_Var21) == 0) {\n      puVar13 = (undefined4 *)(**(code **)(puVar29 + 0x17220))();\n      *puVar13 = 0xc;\n      return;\n    }\n  }" if (parenthesized_expression "(p->fts_info == 0xb)" ( (binary_expression "p->fts_info == 0xb" (field_expression "p->fts_info" identifier -> field_identifier) == number_literal) )) (compound_statement "{\n    uVar20 = fts_stat(fts,p,false);\n    p->fts_info = uVar20;\n  }" { (expression_statement "uVar20 = fts_stat(fts,p,false);" (assignment_expression "uVar20 = fts_stat(fts,p,false)" identifier = (call_expression "fts_stat(fts,p,false)" identifier (argument_list "(fts,p,false)" ( identifier , identifier , false )))) ;) (expression_statement "p->fts_info = uVar20;" (assignment_expression "p->fts_info = uVar20" (field_expression "p->fts_info" identifier -> field_identifier) = identifier) ;) }) (else_clause "else if ((fts->fts_options & 0x100U) != 0) {\n    leave_dir(fts,p);\n    fts_stat(fts,p,false);\n    _Var21 = enter_dir(fts,p);\n    if (CONCAT31(extraout_var,_Var21) == 0) {\n      puVar13 = (undefined4 *)(**(code **)(puVar29 + 0x17220))();\n      *puVar13 = 0xc;\n      return;\n    }\n  }" else (if_statement "if ((fts->fts_options & 0x100U) != 0) {\n    leave_dir(fts,p);\n    fts_stat(fts,p,false);\n    _Var21 = enter_dir(fts,p);\n    if (CONCAT31(extraout_var,_Var21) == 0) {\n      puVar13 = (undefined4 *)(**(code **)(puVar29 + 0x17220))();\n      *puVar13 = 0xc;\n      return;\n    }\n  }" if (parenthesized_expression "((fts->fts_options & 0x100U) != 0)" ( (binary_expression "(fts->fts_options & 0x100U) != 0" (parenthesized_expression "(fts->fts_options & 0x100U)" ( (binary_expression "fts->fts_options & 0x100U" (field_expression "fts->fts_options" identifier -> field_identifier) & number_literal) )) != number_literal) )) (compound_statement "{\n    leave_dir(fts,p);\n    fts_stat(fts,p,false);\n    _Var21 = enter_dir(fts,p);\n    if (CONCAT31(extraout_var,_Var21) == 0) {\n      puVar13 = (undefined4 *)(**(code **)(puVar29 + 0x17220))();\n      *puVar13 = 0xc;\n      return;\n    }\n  }" { (expression_statement "leave_dir(fts,p);" (call_expression "leave_dir(fts,p)" identifier (argument_list "(fts,p)" ( identifier , identifier ))) ;) (expression_statement "fts_stat(fts,p,false);" (call_expression "fts_stat(fts,p,false)" identifier (argument_list "(fts,p,false)" ( identifier , identifier , false ))) ;) (expression_statement "_Var21 = enter_dir(fts,p);" (assignment_expression "_Var21 = enter_dir(fts,p)" identifier = (call_expression "enter_dir(fts,p)" identifier (argument_list "(fts,p)" ( identifier , identifier )))) ;) (if_statement "if (CONCAT31(extraout_var,_Var21) == 0) {\n      puVar13 = (undefined4 *)(**(code **)(puVar29 + 0x17220))();\n      *puVar13 = 0xc;\n      return;\n    }" if (parenthesized_expression "(CONCAT31(extraout_var,_Var21) == 0)" ( (binary_expression "CONCAT31(extraout_var,_Var21) == 0" (call_expression "CONCAT31(extraout_var,_Var21)" identifier (argument_list "(extraout_var,_Var21)" ( identifier , identifier ))) == number_literal) )) (compound_statement "{\n      puVar13 = (undefined4 *)(**(code **)(puVar29 + 0x17220))();\n      *puVar13 = 0xc;\n      return;\n    }" { (expression_statement "puVar13 = (undefined4 *)(**(code **)(puVar29 + 0x17220))();" (assignment_expression "puVar13 = (undefined4 *)(**(code **)(puVar29 + 0x17220))()" identifier = (cast_expression "(undefined4 *)(**(code **)(puVar29 + 0x17220))()" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(puVar29 + 0x17220))()" (parenthesized_expression "(**(code **)(puVar29 + 0x17220))" ( (pointer_expression "**(code **)(puVar29 + 0x17220)" * (pointer_expression "*(code **)(puVar29 + 0x17220)" * (cast_expression "(code **)(puVar29 + 0x17220)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar29 + 0x17220)" ( (binary_expression "puVar29 + 0x17220" identifier + number_literal) ))))) )) (argument_list "()" ( ))))) ;) (expression_statement "*puVar13 = 0xc;" (assignment_expression "*puVar13 = 0xc" (pointer_expression "*puVar13" * identifier) = number_literal) ;) (return_statement "return;" return ;) })) })))) (if_statement "if (fts->fts_compar == (_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *)0x0) {\n    uStack_94 = 100000;\n  }\n  else {\n    uStack_94 = 0xffffffff;\n  }" if (parenthesized_expression "(fts->fts_compar == (_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *)0x0)" ( (binary_expression "fts->fts_compar == (_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *)0x0" (field_expression "fts->fts_compar" identifier -> field_identifier) == (cast_expression "(_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *)0x0" ( (type_descriptor "_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    uStack_94 = 100000;\n  }" { (expression_statement "uStack_94 = 100000;" (assignment_expression "uStack_94 = 100000" identifier = number_literal) ;) }) (else_clause "else {\n    uStack_94 = 0xffffffff;\n  }" else (compound_statement "{\n    uStack_94 = 0xffffffff;\n  }" { (expression_statement "uStack_94 = 0xffffffff;" (assignment_expression "uStack_94 = 0xffffffff" identifier = number_literal) ;) }))) (if_statement "if (ent == (FTSENT *)0x2) {\n    bVar2 = false;\n  }\n  else {\n    if ((((fts->fts_options & 0x38U) == 0x18) && (p->fts_statp[0].st_nlink == 2)) &&\n       (lVar8 = leaf_optimization(p,iStack_7c), lVar8 != NO_LEAF_OPTIMIZATION)) {\n      bVar2 = false;\n      if (ent != (FTSENT *)0x3) {\n        bVar2 = false;\n        goto LAB_0001c1b8;\n      }\n      uVar26 = fts->fts_options;\n    }\n    else {\n      bVar2 = true;\n      uVar26 = fts->fts_options;\n    }\n    if ((uVar26 & 0x200) != 0) {\n      iStack_7c = rpl_fcntl(iStack_7c,0x406,3);\n    }\n    if ((iStack_7c < 0) || (iVar5 = fts_safe_changedir(fts,p,iStack_7c,(char *)0x0), iVar5 != 0)) {\n      if ((bVar2) && (ent == (FTSENT *)0x3)) {\n        piVar12 = (int *)(**(code **)(puVar29 + 0x17220))();\n        p->fts_errno = *piVar12;\n      }\n      p->fts_flags = p->fts_flags | 1;\n      (**(code **)(puVar29 + 0x17194))(p->fts_dirp);\n      p->fts_dirp = (DIR *)0x0;\n      if (((fts->fts_options & 0x200U) != 0) && (-1 < iStack_7c)) {\n        (**(code **)(puVar29 + 0x17198))(iStack_7c);\n        p->fts_dirp = (DIR *)0x0;\n      }\n      bVar2 = false;\n    }\n    else {\n      bVar2 = true;\n    }\n  }" if (parenthesized_expression "(ent == (FTSENT *)0x2)" ( (binary_expression "ent == (FTSENT *)0x2" identifier == (cast_expression "(FTSENT *)0x2" ( (type_descriptor "FTSENT *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    bVar2 = false;\n  }" { (expression_statement "bVar2 = false;" (assignment_expression "bVar2 = false" identifier = false) ;) }) (else_clause "else {\n    if ((((fts->fts_options & 0x38U) == 0x18) && (p->fts_statp[0].st_nlink == 2)) &&\n       (lVar8 = leaf_optimization(p,iStack_7c), lVar8 != NO_LEAF_OPTIMIZATION)) {\n      bVar2 = false;\n      if (ent != (FTSENT *)0x3) {\n        bVar2 = false;\n        goto LAB_0001c1b8;\n      }\n      uVar26 = fts->fts_options;\n    }\n    else {\n      bVar2 = true;\n      uVar26 = fts->fts_options;\n    }\n    if ((uVar26 & 0x200) != 0) {\n      iStack_7c = rpl_fcntl(iStack_7c,0x406,3);\n    }\n    if ((iStack_7c < 0) || (iVar5 = fts_safe_changedir(fts,p,iStack_7c,(char *)0x0), iVar5 != 0)) {\n      if ((bVar2) && (ent == (FTSENT *)0x3)) {\n        piVar12 = (int *)(**(code **)(puVar29 + 0x17220))();\n        p->fts_errno = *piVar12;\n      }\n      p->fts_flags = p->fts_flags | 1;\n      (**(code **)(puVar29 + 0x17194))(p->fts_dirp);\n      p->fts_dirp = (DIR *)0x0;\n      if (((fts->fts_options & 0x200U) != 0) && (-1 < iStack_7c)) {\n        (**(code **)(puVar29 + 0x17198))(iStack_7c);\n        p->fts_dirp = (DIR *)0x0;\n      }\n      bVar2 = false;\n    }\n    else {\n      bVar2 = true;\n    }\n  }" else (compound_statement "{\n    if ((((fts->fts_options & 0x38U) == 0x18) && (p->fts_statp[0].st_nlink == 2)) &&\n       (lVar8 = leaf_optimization(p,iStack_7c), lVar8 != NO_LEAF_OPTIMIZATION)) {\n      bVar2 = false;\n      if (ent != (FTSENT *)0x3) {\n        bVar2 = false;\n        goto LAB_0001c1b8;\n      }\n      uVar26 = fts->fts_options;\n    }\n    else {\n      bVar2 = true;\n      uVar26 = fts->fts_options;\n    }\n    if ((uVar26 & 0x200) != 0) {\n      iStack_7c = rpl_fcntl(iStack_7c,0x406,3);\n    }\n    if ((iStack_7c < 0) || (iVar5 = fts_safe_changedir(fts,p,iStack_7c,(char *)0x0), iVar5 != 0)) {\n      if ((bVar2) && (ent == (FTSENT *)0x3)) {\n        piVar12 = (int *)(**(code **)(puVar29 + 0x17220))();\n        p->fts_errno = *piVar12;\n      }\n      p->fts_flags = p->fts_flags | 1;\n      (**(code **)(puVar29 + 0x17194))(p->fts_dirp);\n      p->fts_dirp = (DIR *)0x0;\n      if (((fts->fts_options & 0x200U) != 0) && (-1 < iStack_7c)) {\n        (**(code **)(puVar29 + 0x17198))(iStack_7c);\n        p->fts_dirp = (DIR *)0x0;\n      }\n      bVar2 = false;\n    }\n    else {\n      bVar2 = true;\n    }\n  }" { (if_statement "if ((((fts->fts_options & 0x38U) == 0x18) && (p->fts_statp[0].st_nlink == 2)) &&\n       (lVar8 = leaf_optimization(p,iStack_7c), lVar8 != NO_LEAF_OPTIMIZATION)) {\n      bVar2 = false;\n      if (ent != (FTSENT *)0x3) {\n        bVar2 = false;\n        goto LAB_0001c1b8;\n      }\n      uVar26 = fts->fts_options;\n    }\n    else {\n      bVar2 = true;\n      uVar26 = fts->fts_options;\n    }" if (parenthesized_expression "((((fts->fts_options & 0x38U) == 0x18) && (p->fts_statp[0].st_nlink == 2)) &&\n       (lVar8 = leaf_optimization(p,iStack_7c), lVar8 != NO_LEAF_OPTIMIZATION))" ( (binary_expression "(((fts->fts_options & 0x38U) == 0x18) && (p->fts_statp[0].st_nlink == 2)) &&\n       (lVar8 = leaf_optimization(p,iStack_7c), lVar8 != NO_LEAF_OPTIMIZATION)" (parenthesized_expression "(((fts->fts_options & 0x38U) == 0x18) && (p->fts_statp[0].st_nlink == 2))" ( (binary_expression "((fts->fts_options & 0x38U) == 0x18) && (p->fts_statp[0].st_nlink == 2)" (parenthesized_expression "((fts->fts_options & 0x38U) == 0x18)" ( (binary_expression "(fts->fts_options & 0x38U) == 0x18" (parenthesized_expression "(fts->fts_options & 0x38U)" ( (binary_expression "fts->fts_options & 0x38U" (field_expression "fts->fts_options" identifier -> field_identifier) & number_literal) )) == number_literal) )) && (parenthesized_expression "(p->fts_statp[0].st_nlink == 2)" ( (binary_expression "p->fts_statp[0].st_nlink == 2" (field_expression "p->fts_statp[0].st_nlink" (subscript_expression "p->fts_statp[0]" (field_expression "p->fts_statp" identifier -> field_identifier) [ number_literal ]) . field_identifier) == number_literal) ))) )) && (parenthesized_expression "(lVar8 = leaf_optimization(p,iStack_7c), lVar8 != NO_LEAF_OPTIMIZATION)" ( (comma_expression "lVar8 = leaf_optimization(p,iStack_7c), lVar8 != NO_LEAF_OPTIMIZATION" (assignment_expression "lVar8 = leaf_optimization(p,iStack_7c)" identifier = (call_expression "leaf_optimization(p,iStack_7c)" identifier (argument_list "(p,iStack_7c)" ( identifier , identifier )))) , (binary_expression "lVar8 != NO_LEAF_OPTIMIZATION" identifier != identifier)) ))) )) (compound_statement "{\n      bVar2 = false;\n      if (ent != (FTSENT *)0x3) {\n        bVar2 = false;\n        goto LAB_0001c1b8;\n      }\n      uVar26 = fts->fts_options;\n    }" { (expression_statement "bVar2 = false;" (assignment_expression "bVar2 = false" identifier = false) ;) (if_statement "if (ent != (FTSENT *)0x3) {\n        bVar2 = false;\n        goto LAB_0001c1b8;\n      }" if (parenthesized_expression "(ent != (FTSENT *)0x3)" ( (binary_expression "ent != (FTSENT *)0x3" identifier != (cast_expression "(FTSENT *)0x3" ( (type_descriptor "FTSENT *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        bVar2 = false;\n        goto LAB_0001c1b8;\n      }" { (expression_statement "bVar2 = false;" (assignment_expression "bVar2 = false" identifier = false) ;) (goto_statement "goto LAB_0001c1b8;" goto statement_identifier ;) })) (expression_statement "uVar26 = fts->fts_options;" (assignment_expression "uVar26 = fts->fts_options" identifier = (field_expression "fts->fts_options" identifier -> field_identifier)) ;) }) (else_clause "else {\n      bVar2 = true;\n      uVar26 = fts->fts_options;\n    }" else (compound_statement "{\n      bVar2 = true;\n      uVar26 = fts->fts_options;\n    }" { (expression_statement "bVar2 = true;" (assignment_expression "bVar2 = true" identifier = true) ;) (expression_statement "uVar26 = fts->fts_options;" (assignment_expression "uVar26 = fts->fts_options" identifier = (field_expression "fts->fts_options" identifier -> field_identifier)) ;) }))) (if_statement "if ((uVar26 & 0x200) != 0) {\n      iStack_7c = rpl_fcntl(iStack_7c,0x406,3);\n    }" if (parenthesized_expression "((uVar26 & 0x200) != 0)" ( (binary_expression "(uVar26 & 0x200) != 0" (parenthesized_expression "(uVar26 & 0x200)" ( (binary_expression "uVar26 & 0x200" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n      iStack_7c = rpl_fcntl(iStack_7c,0x406,3);\n    }" { (expression_statement "iStack_7c = rpl_fcntl(iStack_7c,0x406,3);" (assignment_expression "iStack_7c = rpl_fcntl(iStack_7c,0x406,3)" identifier = (call_expression "rpl_fcntl(iStack_7c,0x406,3)" identifier (argument_list "(iStack_7c,0x406,3)" ( identifier , number_literal , number_literal )))) ;) })) (if_statement "if ((iStack_7c < 0) || (iVar5 = fts_safe_changedir(fts,p,iStack_7c,(char *)0x0), iVar5 != 0)) {\n      if ((bVar2) && (ent == (FTSENT *)0x3)) {\n        piVar12 = (int *)(**(code **)(puVar29 + 0x17220))();\n        p->fts_errno = *piVar12;\n      }\n      p->fts_flags = p->fts_flags | 1;\n      (**(code **)(puVar29 + 0x17194))(p->fts_dirp);\n      p->fts_dirp = (DIR *)0x0;\n      if (((fts->fts_options & 0x200U) != 0) && (-1 < iStack_7c)) {\n        (**(code **)(puVar29 + 0x17198))(iStack_7c);\n        p->fts_dirp = (DIR *)0x0;\n      }\n      bVar2 = false;\n    }\n    else {\n      bVar2 = true;\n    }" if (parenthesized_expression "((iStack_7c < 0) || (iVar5 = fts_safe_changedir(fts,p,iStack_7c,(char *)0x0), iVar5 != 0))" ( (binary_expression "(iStack_7c < 0) || (iVar5 = fts_safe_changedir(fts,p,iStack_7c,(char *)0x0), iVar5 != 0)" (parenthesized_expression "(iStack_7c < 0)" ( (binary_expression "iStack_7c < 0" identifier < number_literal) )) || (parenthesized_expression "(iVar5 = fts_safe_changedir(fts,p,iStack_7c,(char *)0x0), iVar5 != 0)" ( (comma_expression "iVar5 = fts_safe_changedir(fts,p,iStack_7c,(char *)0x0), iVar5 != 0" (assignment_expression "iVar5 = fts_safe_changedir(fts,p,iStack_7c,(char *)0x0)" identifier = (call_expression "fts_safe_changedir(fts,p,iStack_7c,(char *)0x0)" identifier (argument_list "(fts,p,iStack_7c,(char *)0x0)" ( identifier , identifier , identifier , (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) )))) , (binary_expression "iVar5 != 0" identifier != number_literal)) ))) )) (compound_statement "{\n      if ((bVar2) && (ent == (FTSENT *)0x3)) {\n        piVar12 = (int *)(**(code **)(puVar29 + 0x17220))();\n        p->fts_errno = *piVar12;\n      }\n      p->fts_flags = p->fts_flags | 1;\n      (**(code **)(puVar29 + 0x17194))(p->fts_dirp);\n      p->fts_dirp = (DIR *)0x0;\n      if (((fts->fts_options & 0x200U) != 0) && (-1 < iStack_7c)) {\n        (**(code **)(puVar29 + 0x17198))(iStack_7c);\n        p->fts_dirp = (DIR *)0x0;\n      }\n      bVar2 = false;\n    }" { (if_statement "if ((bVar2) && (ent == (FTSENT *)0x3)) {\n        piVar12 = (int *)(**(code **)(puVar29 + 0x17220))();\n        p->fts_errno = *piVar12;\n      }" if (parenthesized_expression "((bVar2) && (ent == (FTSENT *)0x3))" ( (binary_expression "(bVar2) && (ent == (FTSENT *)0x3)" (parenthesized_expression "(bVar2)" ( identifier )) && (parenthesized_expression "(ent == (FTSENT *)0x3)" ( (binary_expression "ent == (FTSENT *)0x3" identifier == (cast_expression "(FTSENT *)0x3" ( (type_descriptor "FTSENT *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) (compound_statement "{\n        piVar12 = (int *)(**(code **)(puVar29 + 0x17220))();\n        p->fts_errno = *piVar12;\n      }" { (expression_statement "piVar12 = (int *)(**(code **)(puVar29 + 0x17220))();" (assignment_expression "piVar12 = (int *)(**(code **)(puVar29 + 0x17220))()" identifier = (cast_expression "(int *)(**(code **)(puVar29 + 0x17220))()" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(puVar29 + 0x17220))()" (parenthesized_expression "(**(code **)(puVar29 + 0x17220))" ( (pointer_expression "**(code **)(puVar29 + 0x17220)" * (pointer_expression "*(code **)(puVar29 + 0x17220)" * (cast_expression "(code **)(puVar29 + 0x17220)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar29 + 0x17220)" ( (binary_expression "puVar29 + 0x17220" identifier + number_literal) ))))) )) (argument_list "()" ( ))))) ;) (expression_statement "p->fts_errno = *piVar12;" (assignment_expression "p->fts_errno = *piVar12" (field_expression "p->fts_errno" identifier -> field_identifier) = (pointer_expression "*piVar12" * identifier)) ;) })) (expression_statement "p->fts_flags = p->fts_flags | 1;" (assignment_expression "p->fts_flags = p->fts_flags | 1" (field_expression "p->fts_flags" identifier -> field_identifier) = (binary_expression "p->fts_flags | 1" (field_expression "p->fts_flags" identifier -> field_identifier) | number_literal)) ;) (expression_statement "(**(code **)(puVar29 + 0x17194))(p->fts_dirp);" (call_expression "(**(code **)(puVar29 + 0x17194))(p->fts_dirp)" (parenthesized_expression "(**(code **)(puVar29 + 0x17194))" ( (pointer_expression "**(code **)(puVar29 + 0x17194)" * (pointer_expression "*(code **)(puVar29 + 0x17194)" * (cast_expression "(code **)(puVar29 + 0x17194)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar29 + 0x17194)" ( (binary_expression "puVar29 + 0x17194" identifier + number_literal) ))))) )) (argument_list "(p->fts_dirp)" ( (field_expression "p->fts_dirp" identifier -> field_identifier) ))) ;) (expression_statement "p->fts_dirp = (DIR *)0x0;" (assignment_expression "p->fts_dirp = (DIR *)0x0" (field_expression "p->fts_dirp" identifier -> field_identifier) = (cast_expression "(DIR *)0x0" ( (type_descriptor "DIR *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if (((fts->fts_options & 0x200U) != 0) && (-1 < iStack_7c)) {\n        (**(code **)(puVar29 + 0x17198))(iStack_7c);\n        p->fts_dirp = (DIR *)0x0;\n      }" if (parenthesized_expression "(((fts->fts_options & 0x200U) != 0) && (-1 < iStack_7c))" ( (binary_expression "((fts->fts_options & 0x200U) != 0) && (-1 < iStack_7c)" (parenthesized_expression "((fts->fts_options & 0x200U) != 0)" ( (binary_expression "(fts->fts_options & 0x200U) != 0" (parenthesized_expression "(fts->fts_options & 0x200U)" ( (binary_expression "fts->fts_options & 0x200U" (field_expression "fts->fts_options" identifier -> field_identifier) & number_literal) )) != number_literal) )) && (parenthesized_expression "(-1 < iStack_7c)" ( (binary_expression "-1 < iStack_7c" number_literal < identifier) ))) )) (compound_statement "{\n        (**(code **)(puVar29 + 0x17198))(iStack_7c);\n        p->fts_dirp = (DIR *)0x0;\n      }" { (expression_statement "(**(code **)(puVar29 + 0x17198))(iStack_7c);" (call_expression "(**(code **)(puVar29 + 0x17198))(iStack_7c)" (parenthesized_expression "(**(code **)(puVar29 + 0x17198))" ( (pointer_expression "**(code **)(puVar29 + 0x17198)" * (pointer_expression "*(code **)(puVar29 + 0x17198)" * (cast_expression "(code **)(puVar29 + 0x17198)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar29 + 0x17198)" ( (binary_expression "puVar29 + 0x17198" identifier + number_literal) ))))) )) (argument_list "(iStack_7c)" ( identifier ))) ;) (expression_statement "p->fts_dirp = (DIR *)0x0;" (assignment_expression "p->fts_dirp = (DIR *)0x0" (field_expression "p->fts_dirp" identifier -> field_identifier) = (cast_expression "(DIR *)0x0" ( (type_descriptor "DIR *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) })) (expression_statement "bVar2 = false;" (assignment_expression "bVar2 = false" identifier = false) ;) }) (else_clause "else {\n      bVar2 = true;\n    }" else (compound_statement "{\n      bVar2 = true;\n    }" { (expression_statement "bVar2 = true;" (assignment_expression "bVar2 = true" identifier = true) ;) }))) }))) (labeled_statement "LAB_0001c1b8:\n  sVar24 = p->fts_pathlen - 1;" statement_identifier : (expression_statement "sVar24 = p->fts_pathlen - 1;" (assignment_expression "sVar24 = p->fts_pathlen - 1" identifier = (binary_expression "p->fts_pathlen - 1" (field_expression "p->fts_pathlen" identifier -> field_identifier) - number_literal)) ;)) (if_statement "if (p->fts_path[sVar24] != '/') {\n    sVar24 = p->fts_pathlen;\n  }" if (parenthesized_expression "(p->fts_path[sVar24] != '/')" ( (binary_expression "p->fts_path[sVar24] != '/'" (subscript_expression "p->fts_path[sVar24]" (field_expression "p->fts_path" identifier -> field_identifier) [ identifier ]) != (char_literal "'/'" ' character ')) )) (compound_statement "{\n    sVar24 = p->fts_pathlen;\n  }" { (expression_statement "sVar24 = p->fts_pathlen;" (assignment_expression "sVar24 = p->fts_pathlen" identifier = (field_expression "p->fts_pathlen" identifier -> field_identifier)) ;) })) (if_statement "if ((fts->fts_options & 4U) == 0) {\n    pcStack_90 = (char *)0x0;\n  }\n  else {\n    pcStack_90 = fts->fts_path + sVar24 + 1;\n    fts->fts_path[sVar24] = '/';\n  }" if (parenthesized_expression "((fts->fts_options & 4U) == 0)" ( (binary_expression "(fts->fts_options & 4U) == 0" (parenthesized_expression "(fts->fts_options & 4U)" ( (binary_expression "fts->fts_options & 4U" (field_expression "fts->fts_options" identifier -> field_identifier) & number_literal) )) == number_literal) )) (compound_statement "{\n    pcStack_90 = (char *)0x0;\n  }" { (expression_statement "pcStack_90 = (char *)0x0;" (assignment_expression "pcStack_90 = (char *)0x0" identifier = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }) (else_clause "else {\n    pcStack_90 = fts->fts_path + sVar24 + 1;\n    fts->fts_path[sVar24] = '/';\n  }" else (compound_statement "{\n    pcStack_90 = fts->fts_path + sVar24 + 1;\n    fts->fts_path[sVar24] = '/';\n  }" { (expression_statement "pcStack_90 = fts->fts_path + sVar24 + 1;" (assignment_expression "pcStack_90 = fts->fts_path + sVar24 + 1" identifier = (binary_expression "fts->fts_path + sVar24 + 1" (binary_expression "fts->fts_path + sVar24" (field_expression "fts->fts_path" identifier -> field_identifier) + identifier) + number_literal)) ;) (expression_statement "fts->fts_path[sVar24] = '/';" (assignment_expression "fts->fts_path[sVar24] = '/'" (subscript_expression "fts->fts_path[sVar24]" (field_expression "fts->fts_path" identifier -> field_identifier) [ identifier ]) = (char_literal "'/'" ' character ')) ;) }))) (expression_statement "uVar27 = sVar24 + 1;" (assignment_expression "uVar27 = sVar24 + 1" identifier = (binary_expression "sVar24 + 1" identifier + number_literal)) ;) (expression_statement "uVar30 = fts->fts_pathlen - uVar27;" (assignment_expression "uVar30 = fts->fts_pathlen - uVar27" identifier = (binary_expression "fts->fts_pathlen - uVar27" (field_expression "fts->fts_pathlen" identifier -> field_identifier) - identifier)) ;) (expression_statement "iVar5 = p->fts_level;" (assignment_expression "iVar5 = p->fts_level" identifier = (field_expression "p->fts_level" identifier -> field_identifier)) ;) (expression_statement "bVar4 = false;" (assignment_expression "bVar4 = false" identifier = false) ;) (expression_statement "iStack_8c = 0;" (assignment_expression "iStack_8c = 0" identifier = number_literal) ;) (expression_statement "pFStack_a4 = (FTSENT *)0x0;" (assignment_expression "pFStack_a4 = (FTSENT *)0x0" identifier = (cast_expression "(FTSENT *)0x0" ( (type_descriptor "FTSENT *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "uVar26 = 0;" (assignment_expression "uVar26 = 0" identifier = number_literal) ;) (expression_statement "pFStack_a0 = (FTSENT *)0x0;" (assignment_expression "pFStack_a0 = (FTSENT *)0x0" identifier = (cast_expression "(FTSENT *)0x0" ( (type_descriptor "FTSENT *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "iVar9 = *(int *)(puVar29 + 0x16fd4);" (assignment_expression "iVar9 = *(int *)(puVar29 + 0x16fd4)" identifier = (pointer_expression "*(int *)(puVar29 + 0x16fd4)" * (cast_expression "(int *)(puVar29 + 0x16fd4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar29 + 0x16fd4)" ( (binary_expression "puVar29 + 0x16fd4" identifier + number_literal) ))))) ;) (expression_statement "iVar10 = *(int *)(puVar29 + 0x16fd4);" (assignment_expression "iVar10 = *(int *)(puVar29 + 0x16fd4)" identifier = (pointer_expression "*(int *)(puVar29 + 0x16fd4)" * (cast_expression "(int *)(puVar29 + 0x16fd4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar29 + 0x16fd4)" ( (binary_expression "puVar29 + 0x16fd4" identifier + number_literal) ))))) ;) (expression_statement "iVar11 = *(int *)(puVar29 + 0x16fd4);" (assignment_expression "iVar11 = *(int *)(puVar29 + 0x16fd4)" identifier = (pointer_expression "*(int *)(puVar29 + 0x16fd4)" * (cast_expression "(int *)(puVar29 + 0x16fd4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar29 + 0x16fd4)" ( (binary_expression "puVar29 + 0x16fd4" identifier + number_literal) ))))) ;) (labeled_statement "LAB_0001c96c:\n  do {\n    do {\n      if (p->fts_dirp == (DIR *)0x0) goto LAB_0001c66c;\n      piVar12 = (int *)(**(code **)(puVar29 + 0x17220))();\n      *piVar12 = 0;\n      puVar13 = (undefined4 *)(**(code **)(puVar29 + 0x171d8))(p->fts_dirp);\n      if (puVar13 == (undefined4 *)0x0) {\n        if (*piVar12 != 0) {\n          p->fts_errno = *piVar12;\n          uVar20 = 7;\n          if ((pDVar23 == (DIR *)0x0) && (uVar26 == 0)) {\n            uVar20 = 4;\n          }\n          p->fts_info = uVar20;\n        }\n        if (p->fts_dirp != (DIR *)0x0) {\n          (**(code **)(puVar29 + 0x17194))();\n          p->fts_dirp = (DIR *)0x0;\n        }\n        goto LAB_0001c66c;\n      }\n    } while ((((fts->fts_options & 0x20U) == 0) && (*(char *)((int)puVar13 + 0x13) == '.')) &&\n            ((*(char *)(puVar13 + 5) == '\0' || ((puVar13[5] & 0xffff0000) == 0x2e000000))));\n    uVar14 = (**(code **)(puVar29 + 0x17240))((int)puVar13 + 0x13);\n    pFVar15 = (FTSENT *)(*(code *)(iVar9 + -0x4b14))(fts,(int)puVar13 + 0x13,uVar14);\n    if (pFVar15 == (FTSENT *)0x0) {\nLAB_0001c794:\n      iVar5 = *piVar12;\n      (**(code **)(puVar29 + 0x172c8))(pFVar15);\n      fts_lfree(pFStack_a0);\n      (**(code **)(puVar29 + 0x17194))(p->fts_dirp);\n      p->fts_dirp = (DIR *)0x0;\n      p->fts_info = 7;\n      fts->fts_options = fts->fts_options | 0x4000;\n      *piVar12 = iVar5;\n      return;\n    }\n    if (uVar30 <= uVar14) {\n      pcVar25 = fts->fts_path;\n      _Var21 = fts_palloc(fts,sVar24 + 2 + uVar14);\n      iVar18 = CONCAT31(extraout_var_00,_Var21);\n      if (iVar18 == 0) goto LAB_0001c794;\n      if ((fts->fts_path != pcVar25) && (iStack_8c = iVar18, (fts->fts_options & 4U) != 0)) {\n        pcStack_90 = fts->fts_path + uVar27;\n      }\n      uVar30 = fts->fts_pathlen - uVar27;\n    }\n    if (uVar27 + uVar14 < uVar27) {\n      (**(code **)(puVar29 + 0x172c8))(pFVar15);\n      fts_lfree(pFStack_a0);\n      (**(code **)(puVar29 + 0x17194))(p->fts_dirp);\n      p->fts_dirp = (DIR *)0x0;\n      p->fts_info = 7;\n      fts->fts_options = fts->fts_options | 0x4000;\n      *piVar12 = 0x4e;\n      return;\n    }\n    pFVar15->fts_level = iVar5 + 1;\n    pFVar15->fts_parent = fts->fts_cur;\n    pFVar15->fts_pathlen = uVar27 + uVar14;\n    uVar16 = *puVar13;\n    *(undefined4 *)((int)&pFVar15->fts_statp[0].st_ino + 4) = puVar13[1];\n    *(undefined4 *)&pFVar15->fts_statp[0].st_ino = uVar16;\n    if ((fts->fts_options & 4U) == 0) {\n      pFVar15->fts_accpath = (char *)(pFVar15 + 1);\n      p_Var17 = fts->fts_compar;\n    }\n    else {\n      pFVar15->fts_accpath = pFVar15->fts_path;\n      (**(code **)(puVar29 + 0x172cc))(pcStack_90,pFVar15 + 1,pFVar15->fts_namelen + 1);\n      p_Var17 = fts->fts_compar;\n    }\n    if ((p_Var17 == (_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *)0x0) ||\n       ((fts->fts_options & 0x400U) != 0)) {\n      if (((fts->fts_options & 0x18U) == 0x18) && ((*(byte *)((int)puVar13 + 0x12) & 0xfb) != 0)) {\n        pFVar15->fts_info = 0xb;\n        bVar3 = true;\n        if (*(byte *)((int)puVar13 + 0x12) < 0xd) {\n                    /* WARNING: Could not recover jumptable at 0x0001c904. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n          (*(code *)(puVar29 +\n                    *(int *)(iVar11 + 0x2d30 + (uint)*(byte *)((int)puVar13 + 0x12) * 4) + 0x1ef9c))\n                    ();\n          return;\n        }\n      }\n      else {\n        pFVar15->fts_info = 0xb;\n        bVar3 = false;\n        if (*(byte *)((int)puVar13 + 0x12) < 0xd) {\n                    /* WARNING: Could not recover jumptable at 0x0001cab8. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n          (*(code *)(puVar29 +\n                    *(int *)(*(int *)(puVar29 + 0x16fd4) + 0x2d64 +\n                            (uint)*(byte *)((int)puVar13 + 0x12) * 4) + 0x1ef9c))();\n          return;\n        }\n      }\n      pFVar15->fts_statp[0].st_mode = 0;\n      if (bVar3) {\n        uVar16 = 1;\n      }\n      else {\n        uVar16 = 2;\n      }\n      *(undefined4 *)((int)&pFVar15->fts_statp[0].st_size + 4) = uVar16;\n      *(undefined4 *)&pFVar15->fts_statp[0].st_size = 0;\n    }\n    else {\n      uVar20 = fts_stat(fts,pFVar15,false);\n      pFVar15->fts_info = uVar20;\n    }\n    pFVar15->fts_link = (_ftsent *)0x0;\n    pFVar19 = pFVar15;\n    if (pFStack_a0 != (FTSENT *)0x0) {\n      pFStack_a4->fts_link = pFVar15;\n      pFVar19 = pFStack_a0;\n    }\n    pFStack_a0 = pFVar19;\n    pFStack_a4 = pFVar15;\n    if (uVar26 == 10000) {\n      if (fts->fts_compar != (_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *)0x0) {\nLAB_0001cb74:\n        uVar26 = 0x2711;\n        goto LAB_0001c96c;\n      }\n      iVar18 = (*(code *)(iVar10 + -0x47a8))(p,iStack_7c);\n      if (iVar18 == 0x6969) {\n        bVar4 = false;\n      }\n      else if (iVar18 == 0x1021994) {\n        bVar4 = false;\n      }\n      else {\n        if (iVar18 != -0xacb2be) {\n          bVar4 = true;\n          goto LAB_0001cb74;\n        }\n        bVar4 = false;\n      }\n    }\n    uVar26 = uVar26 + 1;\n  } while (uVar26 < uStack_94);" statement_identifier : (do_statement "do {\n    do {\n      if (p->fts_dirp == (DIR *)0x0) goto LAB_0001c66c;\n      piVar12 = (int *)(**(code **)(puVar29 + 0x17220))();\n      *piVar12 = 0;\n      puVar13 = (undefined4 *)(**(code **)(puVar29 + 0x171d8))(p->fts_dirp);\n      if (puVar13 == (undefined4 *)0x0) {\n        if (*piVar12 != 0) {\n          p->fts_errno = *piVar12;\n          uVar20 = 7;\n          if ((pDVar23 == (DIR *)0x0) && (uVar26 == 0)) {\n            uVar20 = 4;\n          }\n          p->fts_info = uVar20;\n        }\n        if (p->fts_dirp != (DIR *)0x0) {\n          (**(code **)(puVar29 + 0x17194))();\n          p->fts_dirp = (DIR *)0x0;\n        }\n        goto LAB_0001c66c;\n      }\n    } while ((((fts->fts_options & 0x20U) == 0) && (*(char *)((int)puVar13 + 0x13) == '.')) &&\n            ((*(char *)(puVar13 + 5) == '\0' || ((puVar13[5] & 0xffff0000) == 0x2e000000))));\n    uVar14 = (**(code **)(puVar29 + 0x17240))((int)puVar13 + 0x13);\n    pFVar15 = (FTSENT *)(*(code *)(iVar9 + -0x4b14))(fts,(int)puVar13 + 0x13,uVar14);\n    if (pFVar15 == (FTSENT *)0x0) {\nLAB_0001c794:\n      iVar5 = *piVar12;\n      (**(code **)(puVar29 + 0x172c8))(pFVar15);\n      fts_lfree(pFStack_a0);\n      (**(code **)(puVar29 + 0x17194))(p->fts_dirp);\n      p->fts_dirp = (DIR *)0x0;\n      p->fts_info = 7;\n      fts->fts_options = fts->fts_options | 0x4000;\n      *piVar12 = iVar5;\n      return;\n    }\n    if (uVar30 <= uVar14) {\n      pcVar25 = fts->fts_path;\n      _Var21 = fts_palloc(fts,sVar24 + 2 + uVar14);\n      iVar18 = CONCAT31(extraout_var_00,_Var21);\n      if (iVar18 == 0) goto LAB_0001c794;\n      if ((fts->fts_path != pcVar25) && (iStack_8c = iVar18, (fts->fts_options & 4U) != 0)) {\n        pcStack_90 = fts->fts_path + uVar27;\n      }\n      uVar30 = fts->fts_pathlen - uVar27;\n    }\n    if (uVar27 + uVar14 < uVar27) {\n      (**(code **)(puVar29 + 0x172c8))(pFVar15);\n      fts_lfree(pFStack_a0);\n      (**(code **)(puVar29 + 0x17194))(p->fts_dirp);\n      p->fts_dirp = (DIR *)0x0;\n      p->fts_info = 7;\n      fts->fts_options = fts->fts_options | 0x4000;\n      *piVar12 = 0x4e;\n      return;\n    }\n    pFVar15->fts_level = iVar5 + 1;\n    pFVar15->fts_parent = fts->fts_cur;\n    pFVar15->fts_pathlen = uVar27 + uVar14;\n    uVar16 = *puVar13;\n    *(undefined4 *)((int)&pFVar15->fts_statp[0].st_ino + 4) = puVar13[1];\n    *(undefined4 *)&pFVar15->fts_statp[0].st_ino = uVar16;\n    if ((fts->fts_options & 4U) == 0) {\n      pFVar15->fts_accpath = (char *)(pFVar15 + 1);\n      p_Var17 = fts->fts_compar;\n    }\n    else {\n      pFVar15->fts_accpath = pFVar15->fts_path;\n      (**(code **)(puVar29 + 0x172cc))(pcStack_90,pFVar15 + 1,pFVar15->fts_namelen + 1);\n      p_Var17 = fts->fts_compar;\n    }\n    if ((p_Var17 == (_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *)0x0) ||\n       ((fts->fts_options & 0x400U) != 0)) {\n      if (((fts->fts_options & 0x18U) == 0x18) && ((*(byte *)((int)puVar13 + 0x12) & 0xfb) != 0)) {\n        pFVar15->fts_info = 0xb;\n        bVar3 = true;\n        if (*(byte *)((int)puVar13 + 0x12) < 0xd) {\n                    /* WARNING: Could not recover jumptable at 0x0001c904. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n          (*(code *)(puVar29 +\n                    *(int *)(iVar11 + 0x2d30 + (uint)*(byte *)((int)puVar13 + 0x12) * 4) + 0x1ef9c))\n                    ();\n          return;\n        }\n      }\n      else {\n        pFVar15->fts_info = 0xb;\n        bVar3 = false;\n        if (*(byte *)((int)puVar13 + 0x12) < 0xd) {\n                    /* WARNING: Could not recover jumptable at 0x0001cab8. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n          (*(code *)(puVar29 +\n                    *(int *)(*(int *)(puVar29 + 0x16fd4) + 0x2d64 +\n                            (uint)*(byte *)((int)puVar13 + 0x12) * 4) + 0x1ef9c))();\n          return;\n        }\n      }\n      pFVar15->fts_statp[0].st_mode = 0;\n      if (bVar3) {\n        uVar16 = 1;\n      }\n      else {\n        uVar16 = 2;\n      }\n      *(undefined4 *)((int)&pFVar15->fts_statp[0].st_size + 4) = uVar16;\n      *(undefined4 *)&pFVar15->fts_statp[0].st_size = 0;\n    }\n    else {\n      uVar20 = fts_stat(fts,pFVar15,false);\n      pFVar15->fts_info = uVar20;\n    }\n    pFVar15->fts_link = (_ftsent *)0x0;\n    pFVar19 = pFVar15;\n    if (pFStack_a0 != (FTSENT *)0x0) {\n      pFStack_a4->fts_link = pFVar15;\n      pFVar19 = pFStack_a0;\n    }\n    pFStack_a0 = pFVar19;\n    pFStack_a4 = pFVar15;\n    if (uVar26 == 10000) {\n      if (fts->fts_compar != (_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *)0x0) {\nLAB_0001cb74:\n        uVar26 = 0x2711;\n        goto LAB_0001c96c;\n      }\n      iVar18 = (*(code *)(iVar10 + -0x47a8))(p,iStack_7c);\n      if (iVar18 == 0x6969) {\n        bVar4 = false;\n      }\n      else if (iVar18 == 0x1021994) {\n        bVar4 = false;\n      }\n      else {\n        if (iVar18 != -0xacb2be) {\n          bVar4 = true;\n          goto LAB_0001cb74;\n        }\n        bVar4 = false;\n      }\n    }\n    uVar26 = uVar26 + 1;\n  } while (uVar26 < uStack_94);" do (compound_statement "{\n    do {\n      if (p->fts_dirp == (DIR *)0x0) goto LAB_0001c66c;\n      piVar12 = (int *)(**(code **)(puVar29 + 0x17220))();\n      *piVar12 = 0;\n      puVar13 = (undefined4 *)(**(code **)(puVar29 + 0x171d8))(p->fts_dirp);\n      if (puVar13 == (undefined4 *)0x0) {\n        if (*piVar12 != 0) {\n          p->fts_errno = *piVar12;\n          uVar20 = 7;\n          if ((pDVar23 == (DIR *)0x0) && (uVar26 == 0)) {\n            uVar20 = 4;\n          }\n          p->fts_info = uVar20;\n        }\n        if (p->fts_dirp != (DIR *)0x0) {\n          (**(code **)(puVar29 + 0x17194))();\n          p->fts_dirp = (DIR *)0x0;\n        }\n        goto LAB_0001c66c;\n      }\n    } while ((((fts->fts_options & 0x20U) == 0) && (*(char *)((int)puVar13 + 0x13) == '.')) &&\n            ((*(char *)(puVar13 + 5) == '\0' || ((puVar13[5] & 0xffff0000) == 0x2e000000))));\n    uVar14 = (**(code **)(puVar29 + 0x17240))((int)puVar13 + 0x13);\n    pFVar15 = (FTSENT *)(*(code *)(iVar9 + -0x4b14))(fts,(int)puVar13 + 0x13,uVar14);\n    if (pFVar15 == (FTSENT *)0x0) {\nLAB_0001c794:\n      iVar5 = *piVar12;\n      (**(code **)(puVar29 + 0x172c8))(pFVar15);\n      fts_lfree(pFStack_a0);\n      (**(code **)(puVar29 + 0x17194))(p->fts_dirp);\n      p->fts_dirp = (DIR *)0x0;\n      p->fts_info = 7;\n      fts->fts_options = fts->fts_options | 0x4000;\n      *piVar12 = iVar5;\n      return;\n    }\n    if (uVar30 <= uVar14) {\n      pcVar25 = fts->fts_path;\n      _Var21 = fts_palloc(fts,sVar24 + 2 + uVar14);\n      iVar18 = CONCAT31(extraout_var_00,_Var21);\n      if (iVar18 == 0) goto LAB_0001c794;\n      if ((fts->fts_path != pcVar25) && (iStack_8c = iVar18, (fts->fts_options & 4U) != 0)) {\n        pcStack_90 = fts->fts_path + uVar27;\n      }\n      uVar30 = fts->fts_pathlen - uVar27;\n    }\n    if (uVar27 + uVar14 < uVar27) {\n      (**(code **)(puVar29 + 0x172c8))(pFVar15);\n      fts_lfree(pFStack_a0);\n      (**(code **)(puVar29 + 0x17194))(p->fts_dirp);\n      p->fts_dirp = (DIR *)0x0;\n      p->fts_info = 7;\n      fts->fts_options = fts->fts_options | 0x4000;\n      *piVar12 = 0x4e;\n      return;\n    }\n    pFVar15->fts_level = iVar5 + 1;\n    pFVar15->fts_parent = fts->fts_cur;\n    pFVar15->fts_pathlen = uVar27 + uVar14;\n    uVar16 = *puVar13;\n    *(undefined4 *)((int)&pFVar15->fts_statp[0].st_ino + 4) = puVar13[1];\n    *(undefined4 *)&pFVar15->fts_statp[0].st_ino = uVar16;\n    if ((fts->fts_options & 4U) == 0) {\n      pFVar15->fts_accpath = (char *)(pFVar15 + 1);\n      p_Var17 = fts->fts_compar;\n    }\n    else {\n      pFVar15->fts_accpath = pFVar15->fts_path;\n      (**(code **)(puVar29 + 0x172cc))(pcStack_90,pFVar15 + 1,pFVar15->fts_namelen + 1);\n      p_Var17 = fts->fts_compar;\n    }\n    if ((p_Var17 == (_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *)0x0) ||\n       ((fts->fts_options & 0x400U) != 0)) {\n      if (((fts->fts_options & 0x18U) == 0x18) && ((*(byte *)((int)puVar13 + 0x12) & 0xfb) != 0)) {\n        pFVar15->fts_info = 0xb;\n        bVar3 = true;\n        if (*(byte *)((int)puVar13 + 0x12) < 0xd) {\n                    /* WARNING: Could not recover jumptable at 0x0001c904. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n          (*(code *)(puVar29 +\n                    *(int *)(iVar11 + 0x2d30 + (uint)*(byte *)((int)puVar13 + 0x12) * 4) + 0x1ef9c))\n                    ();\n          return;\n        }\n      }\n      else {\n        pFVar15->fts_info = 0xb;\n        bVar3 = false;\n        if (*(byte *)((int)puVar13 + 0x12) < 0xd) {\n                    /* WARNING: Could not recover jumptable at 0x0001cab8. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n          (*(code *)(puVar29 +\n                    *(int *)(*(int *)(puVar29 + 0x16fd4) + 0x2d64 +\n                            (uint)*(byte *)((int)puVar13 + 0x12) * 4) + 0x1ef9c))();\n          return;\n        }\n      }\n      pFVar15->fts_statp[0].st_mode = 0;\n      if (bVar3) {\n        uVar16 = 1;\n      }\n      else {\n        uVar16 = 2;\n      }\n      *(undefined4 *)((int)&pFVar15->fts_statp[0].st_size + 4) = uVar16;\n      *(undefined4 *)&pFVar15->fts_statp[0].st_size = 0;\n    }\n    else {\n      uVar20 = fts_stat(fts,pFVar15,false);\n      pFVar15->fts_info = uVar20;\n    }\n    pFVar15->fts_link = (_ftsent *)0x0;\n    pFVar19 = pFVar15;\n    if (pFStack_a0 != (FTSENT *)0x0) {\n      pFStack_a4->fts_link = pFVar15;\n      pFVar19 = pFStack_a0;\n    }\n    pFStack_a0 = pFVar19;\n    pFStack_a4 = pFVar15;\n    if (uVar26 == 10000) {\n      if (fts->fts_compar != (_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *)0x0) {\nLAB_0001cb74:\n        uVar26 = 0x2711;\n        goto LAB_0001c96c;\n      }\n      iVar18 = (*(code *)(iVar10 + -0x47a8))(p,iStack_7c);\n      if (iVar18 == 0x6969) {\n        bVar4 = false;\n      }\n      else if (iVar18 == 0x1021994) {\n        bVar4 = false;\n      }\n      else {\n        if (iVar18 != -0xacb2be) {\n          bVar4 = true;\n          goto LAB_0001cb74;\n        }\n        bVar4 = false;\n      }\n    }\n    uVar26 = uVar26 + 1;\n  }" { (do_statement "do {\n      if (p->fts_dirp == (DIR *)0x0) goto LAB_0001c66c;\n      piVar12 = (int *)(**(code **)(puVar29 + 0x17220))();\n      *piVar12 = 0;\n      puVar13 = (undefined4 *)(**(code **)(puVar29 + 0x171d8))(p->fts_dirp);\n      if (puVar13 == (undefined4 *)0x0) {\n        if (*piVar12 != 0) {\n          p->fts_errno = *piVar12;\n          uVar20 = 7;\n          if ((pDVar23 == (DIR *)0x0) && (uVar26 == 0)) {\n            uVar20 = 4;\n          }\n          p->fts_info = uVar20;\n        }\n        if (p->fts_dirp != (DIR *)0x0) {\n          (**(code **)(puVar29 + 0x17194))();\n          p->fts_dirp = (DIR *)0x0;\n        }\n        goto LAB_0001c66c;\n      }\n    } while ((((fts->fts_options & 0x20U) == 0) && (*(char *)((int)puVar13 + 0x13) == '.')) &&\n            ((*(char *)(puVar13 + 5) == '\0' || ((puVar13[5] & 0xffff0000) == 0x2e000000))));" do (compound_statement "{\n      if (p->fts_dirp == (DIR *)0x0) goto LAB_0001c66c;\n      piVar12 = (int *)(**(code **)(puVar29 + 0x17220))();\n      *piVar12 = 0;\n      puVar13 = (undefined4 *)(**(code **)(puVar29 + 0x171d8))(p->fts_dirp);\n      if (puVar13 == (undefined4 *)0x0) {\n        if (*piVar12 != 0) {\n          p->fts_errno = *piVar12;\n          uVar20 = 7;\n          if ((pDVar23 == (DIR *)0x0) && (uVar26 == 0)) {\n            uVar20 = 4;\n          }\n          p->fts_info = uVar20;\n        }\n        if (p->fts_dirp != (DIR *)0x0) {\n          (**(code **)(puVar29 + 0x17194))();\n          p->fts_dirp = (DIR *)0x0;\n        }\n        goto LAB_0001c66c;\n      }\n    }" { (if_statement "if (p->fts_dirp == (DIR *)0x0) goto LAB_0001c66c;" if (parenthesized_expression "(p->fts_dirp == (DIR *)0x0)" ( (binary_expression "p->fts_dirp == (DIR *)0x0" (field_expression "p->fts_dirp" identifier -> field_identifier) == (cast_expression "(DIR *)0x0" ( (type_descriptor "DIR *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0001c66c;" goto statement_identifier ;)) (expression_statement "piVar12 = (int *)(**(code **)(puVar29 + 0x17220))();" (assignment_expression "piVar12 = (int *)(**(code **)(puVar29 + 0x17220))()" identifier = (cast_expression "(int *)(**(code **)(puVar29 + 0x17220))()" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(puVar29 + 0x17220))()" (parenthesized_expression "(**(code **)(puVar29 + 0x17220))" ( (pointer_expression "**(code **)(puVar29 + 0x17220)" * (pointer_expression "*(code **)(puVar29 + 0x17220)" * (cast_expression "(code **)(puVar29 + 0x17220)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar29 + 0x17220)" ( (binary_expression "puVar29 + 0x17220" identifier + number_literal) ))))) )) (argument_list "()" ( ))))) ;) (expression_statement "*piVar12 = 0;" (assignment_expression "*piVar12 = 0" (pointer_expression "*piVar12" * identifier) = number_literal) ;) (expression_statement "puVar13 = (undefined4 *)(**(code **)(puVar29 + 0x171d8))(p->fts_dirp);" (assignment_expression "puVar13 = (undefined4 *)(**(code **)(puVar29 + 0x171d8))(p->fts_dirp)" identifier = (cast_expression "(undefined4 *)(**(code **)(puVar29 + 0x171d8))(p->fts_dirp)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(puVar29 + 0x171d8))(p->fts_dirp)" (parenthesized_expression "(**(code **)(puVar29 + 0x171d8))" ( (pointer_expression "**(code **)(puVar29 + 0x171d8)" * (pointer_expression "*(code **)(puVar29 + 0x171d8)" * (cast_expression "(code **)(puVar29 + 0x171d8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar29 + 0x171d8)" ( (binary_expression "puVar29 + 0x171d8" identifier + number_literal) ))))) )) (argument_list "(p->fts_dirp)" ( (field_expression "p->fts_dirp" identifier -> field_identifier) ))))) ;) (if_statement "if (puVar13 == (undefined4 *)0x0) {\n        if (*piVar12 != 0) {\n          p->fts_errno = *piVar12;\n          uVar20 = 7;\n          if ((pDVar23 == (DIR *)0x0) && (uVar26 == 0)) {\n            uVar20 = 4;\n          }\n          p->fts_info = uVar20;\n        }\n        if (p->fts_dirp != (DIR *)0x0) {\n          (**(code **)(puVar29 + 0x17194))();\n          p->fts_dirp = (DIR *)0x0;\n        }\n        goto LAB_0001c66c;\n      }" if (parenthesized_expression "(puVar13 == (undefined4 *)0x0)" ( (binary_expression "puVar13 == (undefined4 *)0x0" identifier == (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        if (*piVar12 != 0) {\n          p->fts_errno = *piVar12;\n          uVar20 = 7;\n          if ((pDVar23 == (DIR *)0x0) && (uVar26 == 0)) {\n            uVar20 = 4;\n          }\n          p->fts_info = uVar20;\n        }\n        if (p->fts_dirp != (DIR *)0x0) {\n          (**(code **)(puVar29 + 0x17194))();\n          p->fts_dirp = (DIR *)0x0;\n        }\n        goto LAB_0001c66c;\n      }" { (if_statement "if (*piVar12 != 0) {\n          p->fts_errno = *piVar12;\n          uVar20 = 7;\n          if ((pDVar23 == (DIR *)0x0) && (uVar26 == 0)) {\n            uVar20 = 4;\n          }\n          p->fts_info = uVar20;\n        }" if (parenthesized_expression "(*piVar12 != 0)" ( (binary_expression "*piVar12 != 0" (pointer_expression "*piVar12" * identifier) != number_literal) )) (compound_statement "{\n          p->fts_errno = *piVar12;\n          uVar20 = 7;\n          if ((pDVar23 == (DIR *)0x0) && (uVar26 == 0)) {\n            uVar20 = 4;\n          }\n          p->fts_info = uVar20;\n        }" { (expression_statement "p->fts_errno = *piVar12;" (assignment_expression "p->fts_errno = *piVar12" (field_expression "p->fts_errno" identifier -> field_identifier) = (pointer_expression "*piVar12" * identifier)) ;) (expression_statement "uVar20 = 7;" (assignment_expression "uVar20 = 7" identifier = number_literal) ;) (if_statement "if ((pDVar23 == (DIR *)0x0) && (uVar26 == 0)) {\n            uVar20 = 4;\n          }" if (parenthesized_expression "((pDVar23 == (DIR *)0x0) && (uVar26 == 0))" ( (binary_expression "(pDVar23 == (DIR *)0x0) && (uVar26 == 0)" (parenthesized_expression "(pDVar23 == (DIR *)0x0)" ( (binary_expression "pDVar23 == (DIR *)0x0" identifier == (cast_expression "(DIR *)0x0" ( (type_descriptor "DIR *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(uVar26 == 0)" ( (binary_expression "uVar26 == 0" identifier == number_literal) ))) )) (compound_statement "{\n            uVar20 = 4;\n          }" { (expression_statement "uVar20 = 4;" (assignment_expression "uVar20 = 4" identifier = number_literal) ;) })) (expression_statement "p->fts_info = uVar20;" (assignment_expression "p->fts_info = uVar20" (field_expression "p->fts_info" identifier -> field_identifier) = identifier) ;) })) (if_statement "if (p->fts_dirp != (DIR *)0x0) {\n          (**(code **)(puVar29 + 0x17194))();\n          p->fts_dirp = (DIR *)0x0;\n        }" if (parenthesized_expression "(p->fts_dirp != (DIR *)0x0)" ( (binary_expression "p->fts_dirp != (DIR *)0x0" (field_expression "p->fts_dirp" identifier -> field_identifier) != (cast_expression "(DIR *)0x0" ( (type_descriptor "DIR *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          (**(code **)(puVar29 + 0x17194))();\n          p->fts_dirp = (DIR *)0x0;\n        }" { (expression_statement "(**(code **)(puVar29 + 0x17194))();" (call_expression "(**(code **)(puVar29 + 0x17194))()" (parenthesized_expression "(**(code **)(puVar29 + 0x17194))" ( (pointer_expression "**(code **)(puVar29 + 0x17194)" * (pointer_expression "*(code **)(puVar29 + 0x17194)" * (cast_expression "(code **)(puVar29 + 0x17194)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar29 + 0x17194)" ( (binary_expression "puVar29 + 0x17194" identifier + number_literal) ))))) )) (argument_list "()" ( ))) ;) (expression_statement "p->fts_dirp = (DIR *)0x0;" (assignment_expression "p->fts_dirp = (DIR *)0x0" (field_expression "p->fts_dirp" identifier -> field_identifier) = (cast_expression "(DIR *)0x0" ( (type_descriptor "DIR *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) })) (goto_statement "goto LAB_0001c66c;" goto statement_identifier ;) })) }) while (parenthesized_expression "((((fts->fts_options & 0x20U) == 0) && (*(char *)((int)puVar13 + 0x13) == '.')) &&\n            ((*(char *)(puVar13 + 5) == '\0' || ((puVar13[5] & 0xffff0000) == 0x2e000000))))" ( (binary_expression "(((fts->fts_options & 0x20U) == 0) && (*(char *)((int)puVar13 + 0x13) == '.')) &&\n            ((*(char *)(puVar13 + 5) == '\0' || ((puVar13[5] & 0xffff0000) == 0x2e000000)))" (parenthesized_expression "(((fts->fts_options & 0x20U) == 0) && (*(char *)((int)puVar13 + 0x13) == '.'))" ( (binary_expression "((fts->fts_options & 0x20U) == 0) && (*(char *)((int)puVar13 + 0x13) == '.')" (parenthesized_expression "((fts->fts_options & 0x20U) == 0)" ( (binary_expression "(fts->fts_options & 0x20U) == 0" (parenthesized_expression "(fts->fts_options & 0x20U)" ( (binary_expression "fts->fts_options & 0x20U" (field_expression "fts->fts_options" identifier -> field_identifier) & number_literal) )) == number_literal) )) && (parenthesized_expression "(*(char *)((int)puVar13 + 0x13) == '.')" ( (binary_expression "*(char *)((int)puVar13 + 0x13) == '.'" (pointer_expression "*(char *)((int)puVar13 + 0x13)" * (cast_expression "(char *)((int)puVar13 + 0x13)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar13 + 0x13)" ( (binary_expression "(int)puVar13 + 0x13" (cast_expression "(int)puVar13" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) == (char_literal "'.'" ' character ')) ))) )) && (parenthesized_expression "((*(char *)(puVar13 + 5) == '\0' || ((puVar13[5] & 0xffff0000) == 0x2e000000)))" ( (parenthesized_expression "(*(char *)(puVar13 + 5) == '\0' || ((puVar13[5] & 0xffff0000) == 0x2e000000))" ( (binary_expression "*(char *)(puVar13 + 5) == '\0' || ((puVar13[5] & 0xffff0000) == 0x2e000000)" (binary_expression "*(char *)(puVar13 + 5) == '\0'" (pointer_expression "*(char *)(puVar13 + 5)" * (cast_expression "(char *)(puVar13 + 5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar13 + 5)" ( (binary_expression "puVar13 + 5" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) || (parenthesized_expression "((puVar13[5] & 0xffff0000) == 0x2e000000)" ( (binary_expression "(puVar13[5] & 0xffff0000) == 0x2e000000" (parenthesized_expression "(puVar13[5] & 0xffff0000)" ( (binary_expression "puVar13[5] & 0xffff0000" (subscript_expression "puVar13[5]" identifier [ number_literal ]) & number_literal) )) == number_literal) ))) )) ))) )) ;) (expression_statement "uVar14 = (**(code **)(puVar29 + 0x17240))((int)puVar13 + 0x13);" (assignment_expression "uVar14 = (**(code **)(puVar29 + 0x17240))((int)puVar13 + 0x13)" identifier = (call_expression "(**(code **)(puVar29 + 0x17240))((int)puVar13 + 0x13)" (parenthesized_expression "(**(code **)(puVar29 + 0x17240))" ( (pointer_expression "**(code **)(puVar29 + 0x17240)" * (pointer_expression "*(code **)(puVar29 + 0x17240)" * (cast_expression "(code **)(puVar29 + 0x17240)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar29 + 0x17240)" ( (binary_expression "puVar29 + 0x17240" identifier + number_literal) ))))) )) (argument_list "((int)puVar13 + 0x13)" ( (binary_expression "(int)puVar13 + 0x13" (cast_expression "(int)puVar13" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "pFVar15 = (FTSENT *)(*(code *)(iVar9 + -0x4b14))(fts,(int)puVar13 + 0x13,uVar14);" (assignment_expression "pFVar15 = (FTSENT *)(*(code *)(iVar9 + -0x4b14))(fts,(int)puVar13 + 0x13,uVar14)" identifier = (cast_expression "(FTSENT *)(*(code *)(iVar9 + -0x4b14))(fts,(int)puVar13 + 0x13,uVar14)" ( (type_descriptor "FTSENT *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)(iVar9 + -0x4b14))(fts,(int)puVar13 + 0x13,uVar14)" (parenthesized_expression "(*(code *)(iVar9 + -0x4b14))" ( (pointer_expression "*(code *)(iVar9 + -0x4b14)" * (cast_expression "(code *)(iVar9 + -0x4b14)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + -0x4b14)" ( (binary_expression "iVar9 + -0x4b14" identifier + number_literal) )))) )) (argument_list "(fts,(int)puVar13 + 0x13,uVar14)" ( identifier , (binary_expression "(int)puVar13 + 0x13" (cast_expression "(int)puVar13" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) , identifier ))))) ;) (if_statement "if (pFVar15 == (FTSENT *)0x0) {\nLAB_0001c794:\n      iVar5 = *piVar12;\n      (**(code **)(puVar29 + 0x172c8))(pFVar15);\n      fts_lfree(pFStack_a0);\n      (**(code **)(puVar29 + 0x17194))(p->fts_dirp);\n      p->fts_dirp = (DIR *)0x0;\n      p->fts_info = 7;\n      fts->fts_options = fts->fts_options | 0x4000;\n      *piVar12 = iVar5;\n      return;\n    }" if (parenthesized_expression "(pFVar15 == (FTSENT *)0x0)" ( (binary_expression "pFVar15 == (FTSENT *)0x0" identifier == (cast_expression "(FTSENT *)0x0" ( (type_descriptor "FTSENT *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nLAB_0001c794:\n      iVar5 = *piVar12;\n      (**(code **)(puVar29 + 0x172c8))(pFVar15);\n      fts_lfree(pFStack_a0);\n      (**(code **)(puVar29 + 0x17194))(p->fts_dirp);\n      p->fts_dirp = (DIR *)0x0;\n      p->fts_info = 7;\n      fts->fts_options = fts->fts_options | 0x4000;\n      *piVar12 = iVar5;\n      return;\n    }" { (labeled_statement "LAB_0001c794:\n      iVar5 = *piVar12;" statement_identifier : (expression_statement "iVar5 = *piVar12;" (assignment_expression "iVar5 = *piVar12" identifier = (pointer_expression "*piVar12" * identifier)) ;)) (expression_statement "(**(code **)(puVar29 + 0x172c8))(pFVar15);" (call_expression "(**(code **)(puVar29 + 0x172c8))(pFVar15)" (parenthesized_expression "(**(code **)(puVar29 + 0x172c8))" ( (pointer_expression "**(code **)(puVar29 + 0x172c8)" * (pointer_expression "*(code **)(puVar29 + 0x172c8)" * (cast_expression "(code **)(puVar29 + 0x172c8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar29 + 0x172c8)" ( (binary_expression "puVar29 + 0x172c8" identifier + number_literal) ))))) )) (argument_list "(pFVar15)" ( identifier ))) ;) (expression_statement "fts_lfree(pFStack_a0);" (call_expression "fts_lfree(pFStack_a0)" identifier (argument_list "(pFStack_a0)" ( identifier ))) ;) (expression_statement "(**(code **)(puVar29 + 0x17194))(p->fts_dirp);" (call_expression "(**(code **)(puVar29 + 0x17194))(p->fts_dirp)" (parenthesized_expression "(**(code **)(puVar29 + 0x17194))" ( (pointer_expression "**(code **)(puVar29 + 0x17194)" * (pointer_expression "*(code **)(puVar29 + 0x17194)" * (cast_expression "(code **)(puVar29 + 0x17194)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar29 + 0x17194)" ( (binary_expression "puVar29 + 0x17194" identifier + number_literal) ))))) )) (argument_list "(p->fts_dirp)" ( (field_expression "p->fts_dirp" identifier -> field_identifier) ))) ;) (expression_statement "p->fts_dirp = (DIR *)0x0;" (assignment_expression "p->fts_dirp = (DIR *)0x0" (field_expression "p->fts_dirp" identifier -> field_identifier) = (cast_expression "(DIR *)0x0" ( (type_descriptor "DIR *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "p->fts_info = 7;" (assignment_expression "p->fts_info = 7" (field_expression "p->fts_info" identifier -> field_identifier) = number_literal) ;) (expression_statement "fts->fts_options = fts->fts_options | 0x4000;" (assignment_expression "fts->fts_options = fts->fts_options | 0x4000" (field_expression "fts->fts_options" identifier -> field_identifier) = (binary_expression "fts->fts_options | 0x4000" (field_expression "fts->fts_options" identifier -> field_identifier) | number_literal)) ;) (expression_statement "*piVar12 = iVar5;" (assignment_expression "*piVar12 = iVar5" (pointer_expression "*piVar12" * identifier) = identifier) ;) (return_statement "return;" return ;) })) (if_statement "if (uVar30 <= uVar14) {\n      pcVar25 = fts->fts_path;\n      _Var21 = fts_palloc(fts,sVar24 + 2 + uVar14);\n      iVar18 = CONCAT31(extraout_var_00,_Var21);\n      if (iVar18 == 0) goto LAB_0001c794;\n      if ((fts->fts_path != pcVar25) && (iStack_8c = iVar18, (fts->fts_options & 4U) != 0)) {\n        pcStack_90 = fts->fts_path + uVar27;\n      }\n      uVar30 = fts->fts_pathlen - uVar27;\n    }" if (parenthesized_expression "(uVar30 <= uVar14)" ( (binary_expression "uVar30 <= uVar14" identifier <= identifier) )) (compound_statement "{\n      pcVar25 = fts->fts_path;\n      _Var21 = fts_palloc(fts,sVar24 + 2 + uVar14);\n      iVar18 = CONCAT31(extraout_var_00,_Var21);\n      if (iVar18 == 0) goto LAB_0001c794;\n      if ((fts->fts_path != pcVar25) && (iStack_8c = iVar18, (fts->fts_options & 4U) != 0)) {\n        pcStack_90 = fts->fts_path + uVar27;\n      }\n      uVar30 = fts->fts_pathlen - uVar27;\n    }" { (expression_statement "pcVar25 = fts->fts_path;" (assignment_expression "pcVar25 = fts->fts_path" identifier = (field_expression "fts->fts_path" identifier -> field_identifier)) ;) (expression_statement "_Var21 = fts_palloc(fts,sVar24 + 2 + uVar14);" (assignment_expression "_Var21 = fts_palloc(fts,sVar24 + 2 + uVar14)" identifier = (call_expression "fts_palloc(fts,sVar24 + 2 + uVar14)" identifier (argument_list "(fts,sVar24 + 2 + uVar14)" ( identifier , (binary_expression "sVar24 + 2 + uVar14" (binary_expression "sVar24 + 2" identifier + number_literal) + identifier) )))) ;) (expression_statement "iVar18 = CONCAT31(extraout_var_00,_Var21);" (assignment_expression "iVar18 = CONCAT31(extraout_var_00,_Var21)" identifier = (call_expression "CONCAT31(extraout_var_00,_Var21)" identifier (argument_list "(extraout_var_00,_Var21)" ( identifier , identifier )))) ;) (if_statement "if (iVar18 == 0) goto LAB_0001c794;" if (parenthesized_expression "(iVar18 == 0)" ( (binary_expression "iVar18 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0001c794;" goto statement_identifier ;)) (if_statement "if ((fts->fts_path != pcVar25) && (iStack_8c = iVar18, (fts->fts_options & 4U) != 0)) {\n        pcStack_90 = fts->fts_path + uVar27;\n      }" if (parenthesized_expression "((fts->fts_path != pcVar25) && (iStack_8c = iVar18, (fts->fts_options & 4U) != 0))" ( (binary_expression "(fts->fts_path != pcVar25) && (iStack_8c = iVar18, (fts->fts_options & 4U) != 0)" (parenthesized_expression "(fts->fts_path != pcVar25)" ( (binary_expression "fts->fts_path != pcVar25" (field_expression "fts->fts_path" identifier -> field_identifier) != identifier) )) && (parenthesized_expression "(iStack_8c = iVar18, (fts->fts_options & 4U) != 0)" ( (comma_expression "iStack_8c = iVar18, (fts->fts_options & 4U) != 0" (assignment_expression "iStack_8c = iVar18" identifier = identifier) , (binary_expression "(fts->fts_options & 4U) != 0" (parenthesized_expression "(fts->fts_options & 4U)" ( (binary_expression "fts->fts_options & 4U" (field_expression "fts->fts_options" identifier -> field_identifier) & number_literal) )) != number_literal)) ))) )) (compound_statement "{\n        pcStack_90 = fts->fts_path + uVar27;\n      }" { (expression_statement "pcStack_90 = fts->fts_path + uVar27;" (assignment_expression "pcStack_90 = fts->fts_path + uVar27" identifier = (binary_expression "fts->fts_path + uVar27" (field_expression "fts->fts_path" identifier -> field_identifier) + identifier)) ;) })) (expression_statement "uVar30 = fts->fts_pathlen - uVar27;" (assignment_expression "uVar30 = fts->fts_pathlen - uVar27" identifier = (binary_expression "fts->fts_pathlen - uVar27" (field_expression "fts->fts_pathlen" identifier -> field_identifier) - identifier)) ;) })) (if_statement "if (uVar27 + uVar14 < uVar27) {\n      (**(code **)(puVar29 + 0x172c8))(pFVar15);\n      fts_lfree(pFStack_a0);\n      (**(code **)(puVar29 + 0x17194))(p->fts_dirp);\n      p->fts_dirp = (DIR *)0x0;\n      p->fts_info = 7;\n      fts->fts_options = fts->fts_options | 0x4000;\n      *piVar12 = 0x4e;\n      return;\n    }" if (parenthesized_expression "(uVar27 + uVar14 < uVar27)" ( (binary_expression "uVar27 + uVar14 < uVar27" (binary_expression "uVar27 + uVar14" identifier + identifier) < identifier) )) (compound_statement "{\n      (**(code **)(puVar29 + 0x172c8))(pFVar15);\n      fts_lfree(pFStack_a0);\n      (**(code **)(puVar29 + 0x17194))(p->fts_dirp);\n      p->fts_dirp = (DIR *)0x0;\n      p->fts_info = 7;\n      fts->fts_options = fts->fts_options | 0x4000;\n      *piVar12 = 0x4e;\n      return;\n    }" { (expression_statement "(**(code **)(puVar29 + 0x172c8))(pFVar15);" (call_expression "(**(code **)(puVar29 + 0x172c8))(pFVar15)" (parenthesized_expression "(**(code **)(puVar29 + 0x172c8))" ( (pointer_expression "**(code **)(puVar29 + 0x172c8)" * (pointer_expression "*(code **)(puVar29 + 0x172c8)" * (cast_expression "(code **)(puVar29 + 0x172c8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar29 + 0x172c8)" ( (binary_expression "puVar29 + 0x172c8" identifier + number_literal) ))))) )) (argument_list "(pFVar15)" ( identifier ))) ;) (expression_statement "fts_lfree(pFStack_a0);" (call_expression "fts_lfree(pFStack_a0)" identifier (argument_list "(pFStack_a0)" ( identifier ))) ;) (expression_statement "(**(code **)(puVar29 + 0x17194))(p->fts_dirp);" (call_expression "(**(code **)(puVar29 + 0x17194))(p->fts_dirp)" (parenthesized_expression "(**(code **)(puVar29 + 0x17194))" ( (pointer_expression "**(code **)(puVar29 + 0x17194)" * (pointer_expression "*(code **)(puVar29 + 0x17194)" * (cast_expression "(code **)(puVar29 + 0x17194)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar29 + 0x17194)" ( (binary_expression "puVar29 + 0x17194" identifier + number_literal) ))))) )) (argument_list "(p->fts_dirp)" ( (field_expression "p->fts_dirp" identifier -> field_identifier) ))) ;) (expression_statement "p->fts_dirp = (DIR *)0x0;" (assignment_expression "p->fts_dirp = (DIR *)0x0" (field_expression "p->fts_dirp" identifier -> field_identifier) = (cast_expression "(DIR *)0x0" ( (type_descriptor "DIR *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "p->fts_info = 7;" (assignment_expression "p->fts_info = 7" (field_expression "p->fts_info" identifier -> field_identifier) = number_literal) ;) (expression_statement "fts->fts_options = fts->fts_options | 0x4000;" (assignment_expression "fts->fts_options = fts->fts_options | 0x4000" (field_expression "fts->fts_options" identifier -> field_identifier) = (binary_expression "fts->fts_options | 0x4000" (field_expression "fts->fts_options" identifier -> field_identifier) | number_literal)) ;) (expression_statement "*piVar12 = 0x4e;" (assignment_expression "*piVar12 = 0x4e" (pointer_expression "*piVar12" * identifier) = number_literal) ;) (return_statement "return;" return ;) })) (expression_statement "pFVar15->fts_level = iVar5 + 1;" (assignment_expression "pFVar15->fts_level = iVar5 + 1" (field_expression "pFVar15->fts_level" identifier -> field_identifier) = (binary_expression "iVar5 + 1" identifier + number_literal)) ;) (expression_statement "pFVar15->fts_parent = fts->fts_cur;" (assignment_expression "pFVar15->fts_parent = fts->fts_cur" (field_expression "pFVar15->fts_parent" identifier -> field_identifier) = (field_expression "fts->fts_cur" identifier -> field_identifier)) ;) (expression_statement "pFVar15->fts_pathlen = uVar27 + uVar14;" (assignment_expression "pFVar15->fts_pathlen = uVar27 + uVar14" (field_expression "pFVar15->fts_pathlen" identifier -> field_identifier) = (binary_expression "uVar27 + uVar14" identifier + identifier)) ;) (expression_statement "uVar16 = *puVar13;" (assignment_expression "uVar16 = *puVar13" identifier = (pointer_expression "*puVar13" * identifier)) ;) (expression_statement "*(undefined4 *)((int)&pFVar15->fts_statp[0].st_ino + 4) = puVar13[1];" (assignment_expression "*(undefined4 *)((int)&pFVar15->fts_statp[0].st_ino + 4) = puVar13[1]" (pointer_expression "*(undefined4 *)((int)&pFVar15->fts_statp[0].st_ino + 4)" * (cast_expression "(undefined4 *)((int)&pFVar15->fts_statp[0].st_ino + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&pFVar15->fts_statp[0].st_ino + 4)" ( (binary_expression "(int)&pFVar15->fts_statp[0].st_ino + 4" (cast_expression "(int)&pFVar15->fts_statp[0].st_ino" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&pFVar15->fts_statp[0].st_ino" & (field_expression "pFVar15->fts_statp[0].st_ino" (subscript_expression "pFVar15->fts_statp[0]" (field_expression "pFVar15->fts_statp" identifier -> field_identifier) [ number_literal ]) . field_identifier))) + number_literal) )))) = (subscript_expression "puVar13[1]" identifier [ number_literal ])) ;) (expression_statement "*(undefined4 *)&pFVar15->fts_statp[0].st_ino = uVar16;" (assignment_expression "*(undefined4 *)&pFVar15->fts_statp[0].st_ino = uVar16" (pointer_expression "*(undefined4 *)&pFVar15->fts_statp[0].st_ino" * (cast_expression "(undefined4 *)&pFVar15->fts_statp[0].st_ino" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pFVar15->fts_statp[0].st_ino" & (field_expression "pFVar15->fts_statp[0].st_ino" (subscript_expression "pFVar15->fts_statp[0]" (field_expression "pFVar15->fts_statp" identifier -> field_identifier) [ number_literal ]) . field_identifier)))) = identifier) ;) (if_statement "if ((fts->fts_options & 4U) == 0) {\n      pFVar15->fts_accpath = (char *)(pFVar15 + 1);\n      p_Var17 = fts->fts_compar;\n    }\n    else {\n      pFVar15->fts_accpath = pFVar15->fts_path;\n      (**(code **)(puVar29 + 0x172cc))(pcStack_90,pFVar15 + 1,pFVar15->fts_namelen + 1);\n      p_Var17 = fts->fts_compar;\n    }" if (parenthesized_expression "((fts->fts_options & 4U) == 0)" ( (binary_expression "(fts->fts_options & 4U) == 0" (parenthesized_expression "(fts->fts_options & 4U)" ( (binary_expression "fts->fts_options & 4U" (field_expression "fts->fts_options" identifier -> field_identifier) & number_literal) )) == number_literal) )) (compound_statement "{\n      pFVar15->fts_accpath = (char *)(pFVar15 + 1);\n      p_Var17 = fts->fts_compar;\n    }" { (expression_statement "pFVar15->fts_accpath = (char *)(pFVar15 + 1);" (assignment_expression "pFVar15->fts_accpath = (char *)(pFVar15 + 1)" (field_expression "pFVar15->fts_accpath" identifier -> field_identifier) = (cast_expression "(char *)(pFVar15 + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pFVar15 + 1)" ( (binary_expression "pFVar15 + 1" identifier + number_literal) )))) ;) (expression_statement "p_Var17 = fts->fts_compar;" (assignment_expression "p_Var17 = fts->fts_compar" identifier = (field_expression "fts->fts_compar" identifier -> field_identifier)) ;) }) (else_clause "else {\n      pFVar15->fts_accpath = pFVar15->fts_path;\n      (**(code **)(puVar29 + 0x172cc))(pcStack_90,pFVar15 + 1,pFVar15->fts_namelen + 1);\n      p_Var17 = fts->fts_compar;\n    }" else (compound_statement "{\n      pFVar15->fts_accpath = pFVar15->fts_path;\n      (**(code **)(puVar29 + 0x172cc))(pcStack_90,pFVar15 + 1,pFVar15->fts_namelen + 1);\n      p_Var17 = fts->fts_compar;\n    }" { (expression_statement "pFVar15->fts_accpath = pFVar15->fts_path;" (assignment_expression "pFVar15->fts_accpath = pFVar15->fts_path" (field_expression "pFVar15->fts_accpath" identifier -> field_identifier) = (field_expression "pFVar15->fts_path" identifier -> field_identifier)) ;) (expression_statement "(**(code **)(puVar29 + 0x172cc))(pcStack_90,pFVar15 + 1,pFVar15->fts_namelen + 1);" (call_expression "(**(code **)(puVar29 + 0x172cc))(pcStack_90,pFVar15 + 1,pFVar15->fts_namelen + 1)" (parenthesized_expression "(**(code **)(puVar29 + 0x172cc))" ( (pointer_expression "**(code **)(puVar29 + 0x172cc)" * (pointer_expression "*(code **)(puVar29 + 0x172cc)" * (cast_expression "(code **)(puVar29 + 0x172cc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar29 + 0x172cc)" ( (binary_expression "puVar29 + 0x172cc" identifier + number_literal) ))))) )) (argument_list "(pcStack_90,pFVar15 + 1,pFVar15->fts_namelen + 1)" ( identifier , (binary_expression "pFVar15 + 1" identifier + number_literal) , (binary_expression "pFVar15->fts_namelen + 1" (field_expression "pFVar15->fts_namelen" identifier -> field_identifier) + number_literal) ))) ;) (expression_statement "p_Var17 = fts->fts_compar;" (assignment_expression "p_Var17 = fts->fts_compar" identifier = (field_expression "fts->fts_compar" identifier -> field_identifier)) ;) }))) (if_statement "if ((p_Var17 == (_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *)0x0) ||\n       ((fts->fts_options & 0x400U) != 0)) {\n      if (((fts->fts_options & 0x18U) == 0x18) && ((*(byte *)((int)puVar13 + 0x12) & 0xfb) != 0)) {\n        pFVar15->fts_info = 0xb;\n        bVar3 = true;\n        if (*(byte *)((int)puVar13 + 0x12) < 0xd) {\n                    /* WARNING: Could not recover jumptable at 0x0001c904. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n          (*(code *)(puVar29 +\n                    *(int *)(iVar11 + 0x2d30 + (uint)*(byte *)((int)puVar13 + 0x12) * 4) + 0x1ef9c))\n                    ();\n          return;\n        }\n      }\n      else {\n        pFVar15->fts_info = 0xb;\n        bVar3 = false;\n        if (*(byte *)((int)puVar13 + 0x12) < 0xd) {\n                    /* WARNING: Could not recover jumptable at 0x0001cab8. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n          (*(code *)(puVar29 +\n                    *(int *)(*(int *)(puVar29 + 0x16fd4) + 0x2d64 +\n                            (uint)*(byte *)((int)puVar13 + 0x12) * 4) + 0x1ef9c))();\n          return;\n        }\n      }\n      pFVar15->fts_statp[0].st_mode = 0;\n      if (bVar3) {\n        uVar16 = 1;\n      }\n      else {\n        uVar16 = 2;\n      }\n      *(undefined4 *)((int)&pFVar15->fts_statp[0].st_size + 4) = uVar16;\n      *(undefined4 *)&pFVar15->fts_statp[0].st_size = 0;\n    }\n    else {\n      uVar20 = fts_stat(fts,pFVar15,false);\n      pFVar15->fts_info = uVar20;\n    }" if (parenthesized_expression "((p_Var17 == (_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *)0x0) ||\n       ((fts->fts_options & 0x400U) != 0))" ( (binary_expression "(p_Var17 == (_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *)0x0) ||\n       ((fts->fts_options & 0x400U) != 0)" (parenthesized_expression "(p_Var17 == (_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *)0x0)" ( (binary_expression "p_Var17 == (_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *)0x0" identifier == (cast_expression "(_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *)0x0" ( (type_descriptor "_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "((fts->fts_options & 0x400U) != 0)" ( (binary_expression "(fts->fts_options & 0x400U) != 0" (parenthesized_expression "(fts->fts_options & 0x400U)" ( (binary_expression "fts->fts_options & 0x400U" (field_expression "fts->fts_options" identifier -> field_identifier) & number_literal) )) != number_literal) ))) )) (compound_statement "{\n      if (((fts->fts_options & 0x18U) == 0x18) && ((*(byte *)((int)puVar13 + 0x12) & 0xfb) != 0)) {\n        pFVar15->fts_info = 0xb;\n        bVar3 = true;\n        if (*(byte *)((int)puVar13 + 0x12) < 0xd) {\n                    /* WARNING: Could not recover jumptable at 0x0001c904. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n          (*(code *)(puVar29 +\n                    *(int *)(iVar11 + 0x2d30 + (uint)*(byte *)((int)puVar13 + 0x12) * 4) + 0x1ef9c))\n                    ();\n          return;\n        }\n      }\n      else {\n        pFVar15->fts_info = 0xb;\n        bVar3 = false;\n        if (*(byte *)((int)puVar13 + 0x12) < 0xd) {\n                    /* WARNING: Could not recover jumptable at 0x0001cab8. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n          (*(code *)(puVar29 +\n                    *(int *)(*(int *)(puVar29 + 0x16fd4) + 0x2d64 +\n                            (uint)*(byte *)((int)puVar13 + 0x12) * 4) + 0x1ef9c))();\n          return;\n        }\n      }\n      pFVar15->fts_statp[0].st_mode = 0;\n      if (bVar3) {\n        uVar16 = 1;\n      }\n      else {\n        uVar16 = 2;\n      }\n      *(undefined4 *)((int)&pFVar15->fts_statp[0].st_size + 4) = uVar16;\n      *(undefined4 *)&pFVar15->fts_statp[0].st_size = 0;\n    }" { (if_statement "if (((fts->fts_options & 0x18U) == 0x18) && ((*(byte *)((int)puVar13 + 0x12) & 0xfb) != 0)) {\n        pFVar15->fts_info = 0xb;\n        bVar3 = true;\n        if (*(byte *)((int)puVar13 + 0x12) < 0xd) {\n                    /* WARNING: Could not recover jumptable at 0x0001c904. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n          (*(code *)(puVar29 +\n                    *(int *)(iVar11 + 0x2d30 + (uint)*(byte *)((int)puVar13 + 0x12) * 4) + 0x1ef9c))\n                    ();\n          return;\n        }\n      }\n      else {\n        pFVar15->fts_info = 0xb;\n        bVar3 = false;\n        if (*(byte *)((int)puVar13 + 0x12) < 0xd) {\n                    /* WARNING: Could not recover jumptable at 0x0001cab8. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n          (*(code *)(puVar29 +\n                    *(int *)(*(int *)(puVar29 + 0x16fd4) + 0x2d64 +\n                            (uint)*(byte *)((int)puVar13 + 0x12) * 4) + 0x1ef9c))();\n          return;\n        }\n      }" if (parenthesized_expression "(((fts->fts_options & 0x18U) == 0x18) && ((*(byte *)((int)puVar13 + 0x12) & 0xfb) != 0))" ( (binary_expression "((fts->fts_options & 0x18U) == 0x18) && ((*(byte *)((int)puVar13 + 0x12) & 0xfb) != 0)" (parenthesized_expression "((fts->fts_options & 0x18U) == 0x18)" ( (binary_expression "(fts->fts_options & 0x18U) == 0x18" (parenthesized_expression "(fts->fts_options & 0x18U)" ( (binary_expression "fts->fts_options & 0x18U" (field_expression "fts->fts_options" identifier -> field_identifier) & number_literal) )) == number_literal) )) && (parenthesized_expression "((*(byte *)((int)puVar13 + 0x12) & 0xfb) != 0)" ( (binary_expression "(*(byte *)((int)puVar13 + 0x12) & 0xfb) != 0" (parenthesized_expression "(*(byte *)((int)puVar13 + 0x12) & 0xfb)" ( (binary_expression "*(byte *)((int)puVar13 + 0x12) & 0xfb" (pointer_expression "*(byte *)((int)puVar13 + 0x12)" * (cast_expression "(byte *)((int)puVar13 + 0x12)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar13 + 0x12)" ( (binary_expression "(int)puVar13 + 0x12" (cast_expression "(int)puVar13" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) & number_literal) )) != number_literal) ))) )) (compound_statement "{\n        pFVar15->fts_info = 0xb;\n        bVar3 = true;\n        if (*(byte *)((int)puVar13 + 0x12) < 0xd) {\n                    /* WARNING: Could not recover jumptable at 0x0001c904. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n          (*(code *)(puVar29 +\n                    *(int *)(iVar11 + 0x2d30 + (uint)*(byte *)((int)puVar13 + 0x12) * 4) + 0x1ef9c))\n                    ();\n          return;\n        }\n      }" { (expression_statement "pFVar15->fts_info = 0xb;" (assignment_expression "pFVar15->fts_info = 0xb" (field_expression "pFVar15->fts_info" identifier -> field_identifier) = number_literal) ;) (expression_statement "bVar3 = true;" (assignment_expression "bVar3 = true" identifier = true) ;) (if_statement "if (*(byte *)((int)puVar13 + 0x12) < 0xd) {\n                    /* WARNING: Could not recover jumptable at 0x0001c904. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n          (*(code *)(puVar29 +\n                    *(int *)(iVar11 + 0x2d30 + (uint)*(byte *)((int)puVar13 + 0x12) * 4) + 0x1ef9c))\n                    ();\n          return;\n        }" if (parenthesized_expression "(*(byte *)((int)puVar13 + 0x12) < 0xd)" ( (binary_expression "*(byte *)((int)puVar13 + 0x12) < 0xd" (pointer_expression "*(byte *)((int)puVar13 + 0x12)" * (cast_expression "(byte *)((int)puVar13 + 0x12)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar13 + 0x12)" ( (binary_expression "(int)puVar13 + 0x12" (cast_expression "(int)puVar13" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) < number_literal) )) (compound_statement "{\n                    /* WARNING: Could not recover jumptable at 0x0001c904. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n          (*(code *)(puVar29 +\n                    *(int *)(iVar11 + 0x2d30 + (uint)*(byte *)((int)puVar13 + 0x12) * 4) + 0x1ef9c))\n                    ();\n          return;\n        }" { comment comment (expression_statement "(*(code *)(puVar29 +\n                    *(int *)(iVar11 + 0x2d30 + (uint)*(byte *)((int)puVar13 + 0x12) * 4) + 0x1ef9c))\n                    ();" (call_expression "(*(code *)(puVar29 +\n                    *(int *)(iVar11 + 0x2d30 + (uint)*(byte *)((int)puVar13 + 0x12) * 4) + 0x1ef9c))\n                    ()" (parenthesized_expression "(*(code *)(puVar29 +\n                    *(int *)(iVar11 + 0x2d30 + (uint)*(byte *)((int)puVar13 + 0x12) * 4) + 0x1ef9c))" ( (pointer_expression "*(code *)(puVar29 +\n                    *(int *)(iVar11 + 0x2d30 + (uint)*(byte *)((int)puVar13 + 0x12) * 4) + 0x1ef9c)" * (cast_expression "(code *)(puVar29 +\n                    *(int *)(iVar11 + 0x2d30 + (uint)*(byte *)((int)puVar13 + 0x12) * 4) + 0x1ef9c)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar29 +\n                    *(int *)(iVar11 + 0x2d30 + (uint)*(byte *)((int)puVar13 + 0x12) * 4) + 0x1ef9c)" ( (binary_expression "puVar29 +\n                    *(int *)(iVar11 + 0x2d30 + (uint)*(byte *)((int)puVar13 + 0x12) * 4) + 0x1ef9c" (binary_expression "puVar29 +\n                    *(int *)(iVar11 + 0x2d30 + (uint)*(byte *)((int)puVar13 + 0x12) * 4)" identifier + (pointer_expression "*(int *)(iVar11 + 0x2d30 + (uint)*(byte *)((int)puVar13 + 0x12) * 4)" * (cast_expression "(int *)(iVar11 + 0x2d30 + (uint)*(byte *)((int)puVar13 + 0x12) * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar11 + 0x2d30 + (uint)*(byte *)((int)puVar13 + 0x12) * 4)" ( (binary_expression "iVar11 + 0x2d30 + (uint)*(byte *)((int)puVar13 + 0x12) * 4" (binary_expression "iVar11 + 0x2d30" identifier + number_literal) + (binary_expression "(uint)*(byte *)((int)puVar13 + 0x12) * 4" (binary_expression "(uint)*(byte *)((int)puVar13 + 0x12)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)((int)puVar13 + 0x12)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar13 + 0x12)" ( (binary_expression "(int)puVar13 + 0x12" (cast_expression "(int)puVar13" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) * number_literal)) ))))) + number_literal) )))) )) (argument_list "()" ( ))) ;) (return_statement "return;" return ;) })) }) (else_clause "else {\n        pFVar15->fts_info = 0xb;\n        bVar3 = false;\n        if (*(byte *)((int)puVar13 + 0x12) < 0xd) {\n                    /* WARNING: Could not recover jumptable at 0x0001cab8. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n          (*(code *)(puVar29 +\n                    *(int *)(*(int *)(puVar29 + 0x16fd4) + 0x2d64 +\n                            (uint)*(byte *)((int)puVar13 + 0x12) * 4) + 0x1ef9c))();\n          return;\n        }\n      }" else (compound_statement "{\n        pFVar15->fts_info = 0xb;\n        bVar3 = false;\n        if (*(byte *)((int)puVar13 + 0x12) < 0xd) {\n                    /* WARNING: Could not recover jumptable at 0x0001cab8. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n          (*(code *)(puVar29 +\n                    *(int *)(*(int *)(puVar29 + 0x16fd4) + 0x2d64 +\n                            (uint)*(byte *)((int)puVar13 + 0x12) * 4) + 0x1ef9c))();\n          return;\n        }\n      }" { (expression_statement "pFVar15->fts_info = 0xb;" (assignment_expression "pFVar15->fts_info = 0xb" (field_expression "pFVar15->fts_info" identifier -> field_identifier) = number_literal) ;) (expression_statement "bVar3 = false;" (assignment_expression "bVar3 = false" identifier = false) ;) (if_statement "if (*(byte *)((int)puVar13 + 0x12) < 0xd) {\n                    /* WARNING: Could not recover jumptable at 0x0001cab8. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n          (*(code *)(puVar29 +\n                    *(int *)(*(int *)(puVar29 + 0x16fd4) + 0x2d64 +\n                            (uint)*(byte *)((int)puVar13 + 0x12) * 4) + 0x1ef9c))();\n          return;\n        }" if (parenthesized_expression "(*(byte *)((int)puVar13 + 0x12) < 0xd)" ( (binary_expression "*(byte *)((int)puVar13 + 0x12) < 0xd" (pointer_expression "*(byte *)((int)puVar13 + 0x12)" * (cast_expression "(byte *)((int)puVar13 + 0x12)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar13 + 0x12)" ( (binary_expression "(int)puVar13 + 0x12" (cast_expression "(int)puVar13" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) < number_literal) )) (compound_statement "{\n                    /* WARNING: Could not recover jumptable at 0x0001cab8. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n          (*(code *)(puVar29 +\n                    *(int *)(*(int *)(puVar29 + 0x16fd4) + 0x2d64 +\n                            (uint)*(byte *)((int)puVar13 + 0x12) * 4) + 0x1ef9c))();\n          return;\n        }" { comment comment (expression_statement "(*(code *)(puVar29 +\n                    *(int *)(*(int *)(puVar29 + 0x16fd4) + 0x2d64 +\n                            (uint)*(byte *)((int)puVar13 + 0x12) * 4) + 0x1ef9c))();" (call_expression "(*(code *)(puVar29 +\n                    *(int *)(*(int *)(puVar29 + 0x16fd4) + 0x2d64 +\n                            (uint)*(byte *)((int)puVar13 + 0x12) * 4) + 0x1ef9c))()" (parenthesized_expression "(*(code *)(puVar29 +\n                    *(int *)(*(int *)(puVar29 + 0x16fd4) + 0x2d64 +\n                            (uint)*(byte *)((int)puVar13 + 0x12) * 4) + 0x1ef9c))" ( (pointer_expression "*(code *)(puVar29 +\n                    *(int *)(*(int *)(puVar29 + 0x16fd4) + 0x2d64 +\n                            (uint)*(byte *)((int)puVar13 + 0x12) * 4) + 0x1ef9c)" * (cast_expression "(code *)(puVar29 +\n                    *(int *)(*(int *)(puVar29 + 0x16fd4) + 0x2d64 +\n                            (uint)*(byte *)((int)puVar13 + 0x12) * 4) + 0x1ef9c)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar29 +\n                    *(int *)(*(int *)(puVar29 + 0x16fd4) + 0x2d64 +\n                            (uint)*(byte *)((int)puVar13 + 0x12) * 4) + 0x1ef9c)" ( (binary_expression "puVar29 +\n                    *(int *)(*(int *)(puVar29 + 0x16fd4) + 0x2d64 +\n                            (uint)*(byte *)((int)puVar13 + 0x12) * 4) + 0x1ef9c" (binary_expression "puVar29 +\n                    *(int *)(*(int *)(puVar29 + 0x16fd4) + 0x2d64 +\n                            (uint)*(byte *)((int)puVar13 + 0x12) * 4)" identifier + (pointer_expression "*(int *)(*(int *)(puVar29 + 0x16fd4) + 0x2d64 +\n                            (uint)*(byte *)((int)puVar13 + 0x12) * 4)" * (cast_expression "(int *)(*(int *)(puVar29 + 0x16fd4) + 0x2d64 +\n                            (uint)*(byte *)((int)puVar13 + 0x12) * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar29 + 0x16fd4) + 0x2d64 +\n                            (uint)*(byte *)((int)puVar13 + 0x12) * 4)" ( (binary_expression "*(int *)(puVar29 + 0x16fd4) + 0x2d64 +\n                            (uint)*(byte *)((int)puVar13 + 0x12) * 4" (binary_expression "*(int *)(puVar29 + 0x16fd4) + 0x2d64" (pointer_expression "*(int *)(puVar29 + 0x16fd4)" * (cast_expression "(int *)(puVar29 + 0x16fd4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar29 + 0x16fd4)" ( (binary_expression "puVar29 + 0x16fd4" identifier + number_literal) )))) + number_literal) + (binary_expression "(uint)*(byte *)((int)puVar13 + 0x12) * 4" (binary_expression "(uint)*(byte *)((int)puVar13 + 0x12)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)((int)puVar13 + 0x12)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar13 + 0x12)" ( (binary_expression "(int)puVar13 + 0x12" (cast_expression "(int)puVar13" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) * number_literal)) ))))) + number_literal) )))) )) (argument_list "()" ( ))) ;) (return_statement "return;" return ;) })) }))) (expression_statement "pFVar15->fts_statp[0].st_mode = 0;" (assignment_expression "pFVar15->fts_statp[0].st_mode = 0" (field_expression "pFVar15->fts_statp[0].st_mode" (subscript_expression "pFVar15->fts_statp[0]" (field_expression "pFVar15->fts_statp" identifier -> field_identifier) [ number_literal ]) . field_identifier) = number_literal) ;) (if_statement "if (bVar3) {\n        uVar16 = 1;\n      }\n      else {\n        uVar16 = 2;\n      }" if (parenthesized_expression "(bVar3)" ( identifier )) (compound_statement "{\n        uVar16 = 1;\n      }" { (expression_statement "uVar16 = 1;" (assignment_expression "uVar16 = 1" identifier = number_literal) ;) }) (else_clause "else {\n        uVar16 = 2;\n      }" else (compound_statement "{\n        uVar16 = 2;\n      }" { (expression_statement "uVar16 = 2;" (assignment_expression "uVar16 = 2" identifier = number_literal) ;) }))) (expression_statement "*(undefined4 *)((int)&pFVar15->fts_statp[0].st_size + 4) = uVar16;" (assignment_expression "*(undefined4 *)((int)&pFVar15->fts_statp[0].st_size + 4) = uVar16" (pointer_expression "*(undefined4 *)((int)&pFVar15->fts_statp[0].st_size + 4)" * (cast_expression "(undefined4 *)((int)&pFVar15->fts_statp[0].st_size + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&pFVar15->fts_statp[0].st_size + 4)" ( (binary_expression "(int)&pFVar15->fts_statp[0].st_size + 4" (cast_expression "(int)&pFVar15->fts_statp[0].st_size" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&pFVar15->fts_statp[0].st_size" & (field_expression "pFVar15->fts_statp[0].st_size" (subscript_expression "pFVar15->fts_statp[0]" (field_expression "pFVar15->fts_statp" identifier -> field_identifier) [ number_literal ]) . field_identifier))) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)&pFVar15->fts_statp[0].st_size = 0;" (assignment_expression "*(undefined4 *)&pFVar15->fts_statp[0].st_size = 0" (pointer_expression "*(undefined4 *)&pFVar15->fts_statp[0].st_size" * (cast_expression "(undefined4 *)&pFVar15->fts_statp[0].st_size" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pFVar15->fts_statp[0].st_size" & (field_expression "pFVar15->fts_statp[0].st_size" (subscript_expression "pFVar15->fts_statp[0]" (field_expression "pFVar15->fts_statp" identifier -> field_identifier) [ number_literal ]) . field_identifier)))) = number_literal) ;) }) (else_clause "else {\n      uVar20 = fts_stat(fts,pFVar15,false);\n      pFVar15->fts_info = uVar20;\n    }" else (compound_statement "{\n      uVar20 = fts_stat(fts,pFVar15,false);\n      pFVar15->fts_info = uVar20;\n    }" { (expression_statement "uVar20 = fts_stat(fts,pFVar15,false);" (assignment_expression "uVar20 = fts_stat(fts,pFVar15,false)" identifier = (call_expression "fts_stat(fts,pFVar15,false)" identifier (argument_list "(fts,pFVar15,false)" ( identifier , identifier , false )))) ;) (expression_statement "pFVar15->fts_info = uVar20;" (assignment_expression "pFVar15->fts_info = uVar20" (field_expression "pFVar15->fts_info" identifier -> field_identifier) = identifier) ;) }))) (expression_statement "pFVar15->fts_link = (_ftsent *)0x0;" (assignment_expression "pFVar15->fts_link = (_ftsent *)0x0" (field_expression "pFVar15->fts_link" identifier -> field_identifier) = (cast_expression "(_ftsent *)0x0" ( (type_descriptor "_ftsent *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "pFVar19 = pFVar15;" (assignment_expression "pFVar19 = pFVar15" identifier = identifier) ;) (if_statement "if (pFStack_a0 != (FTSENT *)0x0) {\n      pFStack_a4->fts_link = pFVar15;\n      pFVar19 = pFStack_a0;\n    }" if (parenthesized_expression "(pFStack_a0 != (FTSENT *)0x0)" ( (binary_expression "pFStack_a0 != (FTSENT *)0x0" identifier != (cast_expression "(FTSENT *)0x0" ( (type_descriptor "FTSENT *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      pFStack_a4->fts_link = pFVar15;\n      pFVar19 = pFStack_a0;\n    }" { (expression_statement "pFStack_a4->fts_link = pFVar15;" (assignment_expression "pFStack_a4->fts_link = pFVar15" (field_expression "pFStack_a4->fts_link" identifier -> field_identifier) = identifier) ;) (expression_statement "pFVar19 = pFStack_a0;" (assignment_expression "pFVar19 = pFStack_a0" identifier = identifier) ;) })) (expression_statement "pFStack_a0 = pFVar19;" (assignment_expression "pFStack_a0 = pFVar19" identifier = identifier) ;) (expression_statement "pFStack_a4 = pFVar15;" (assignment_expression "pFStack_a4 = pFVar15" identifier = identifier) ;) (if_statement "if (uVar26 == 10000) {\n      if (fts->fts_compar != (_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *)0x0) {\nLAB_0001cb74:\n        uVar26 = 0x2711;\n        goto LAB_0001c96c;\n      }\n      iVar18 = (*(code *)(iVar10 + -0x47a8))(p,iStack_7c);\n      if (iVar18 == 0x6969) {\n        bVar4 = false;\n      }\n      else if (iVar18 == 0x1021994) {\n        bVar4 = false;\n      }\n      else {\n        if (iVar18 != -0xacb2be) {\n          bVar4 = true;\n          goto LAB_0001cb74;\n        }\n        bVar4 = false;\n      }\n    }" if (parenthesized_expression "(uVar26 == 10000)" ( (binary_expression "uVar26 == 10000" identifier == number_literal) )) (compound_statement "{\n      if (fts->fts_compar != (_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *)0x0) {\nLAB_0001cb74:\n        uVar26 = 0x2711;\n        goto LAB_0001c96c;\n      }\n      iVar18 = (*(code *)(iVar10 + -0x47a8))(p,iStack_7c);\n      if (iVar18 == 0x6969) {\n        bVar4 = false;\n      }\n      else if (iVar18 == 0x1021994) {\n        bVar4 = false;\n      }\n      else {\n        if (iVar18 != -0xacb2be) {\n          bVar4 = true;\n          goto LAB_0001cb74;\n        }\n        bVar4 = false;\n      }\n    }" { (if_statement "if (fts->fts_compar != (_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *)0x0) {\nLAB_0001cb74:\n        uVar26 = 0x2711;\n        goto LAB_0001c96c;\n      }" if (parenthesized_expression "(fts->fts_compar != (_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *)0x0)" ( (binary_expression "fts->fts_compar != (_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *)0x0" (field_expression "fts->fts_compar" identifier -> field_identifier) != (cast_expression "(_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *)0x0" ( (type_descriptor "_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nLAB_0001cb74:\n        uVar26 = 0x2711;\n        goto LAB_0001c96c;\n      }" { (labeled_statement "LAB_0001cb74:\n        uVar26 = 0x2711;" statement_identifier : (expression_statement "uVar26 = 0x2711;" (assignment_expression "uVar26 = 0x2711" identifier = number_literal) ;)) (goto_statement "goto LAB_0001c96c;" goto statement_identifier ;) })) (expression_statement "iVar18 = (*(code *)(iVar10 + -0x47a8))(p,iStack_7c);" (assignment_expression "iVar18 = (*(code *)(iVar10 + -0x47a8))(p,iStack_7c)" identifier = (call_expression "(*(code *)(iVar10 + -0x47a8))(p,iStack_7c)" (parenthesized_expression "(*(code *)(iVar10 + -0x47a8))" ( (pointer_expression "*(code *)(iVar10 + -0x47a8)" * (cast_expression "(code *)(iVar10 + -0x47a8)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar10 + -0x47a8)" ( (binary_expression "iVar10 + -0x47a8" identifier + number_literal) )))) )) (argument_list "(p,iStack_7c)" ( identifier , identifier )))) ;) (if_statement "if (iVar18 == 0x6969) {\n        bVar4 = false;\n      }\n      else if (iVar18 == 0x1021994) {\n        bVar4 = false;\n      }\n      else {\n        if (iVar18 != -0xacb2be) {\n          bVar4 = true;\n          goto LAB_0001cb74;\n        }\n        bVar4 = false;\n      }" if (parenthesized_expression "(iVar18 == 0x6969)" ( (binary_expression "iVar18 == 0x6969" identifier == number_literal) )) (compound_statement "{\n        bVar4 = false;\n      }" { (expression_statement "bVar4 = false;" (assignment_expression "bVar4 = false" identifier = false) ;) }) (else_clause "else if (iVar18 == 0x1021994) {\n        bVar4 = false;\n      }\n      else {\n        if (iVar18 != -0xacb2be) {\n          bVar4 = true;\n          goto LAB_0001cb74;\n        }\n        bVar4 = false;\n      }" else (if_statement "if (iVar18 == 0x1021994) {\n        bVar4 = false;\n      }\n      else {\n        if (iVar18 != -0xacb2be) {\n          bVar4 = true;\n          goto LAB_0001cb74;\n        }\n        bVar4 = false;\n      }" if (parenthesized_expression "(iVar18 == 0x1021994)" ( (binary_expression "iVar18 == 0x1021994" identifier == number_literal) )) (compound_statement "{\n        bVar4 = false;\n      }" { (expression_statement "bVar4 = false;" (assignment_expression "bVar4 = false" identifier = false) ;) }) (else_clause "else {\n        if (iVar18 != -0xacb2be) {\n          bVar4 = true;\n          goto LAB_0001cb74;\n        }\n        bVar4 = false;\n      }" else (compound_statement "{\n        if (iVar18 != -0xacb2be) {\n          bVar4 = true;\n          goto LAB_0001cb74;\n        }\n        bVar4 = false;\n      }" { (if_statement "if (iVar18 != -0xacb2be) {\n          bVar4 = true;\n          goto LAB_0001cb74;\n        }" if (parenthesized_expression "(iVar18 != -0xacb2be)" ( (binary_expression "iVar18 != -0xacb2be" identifier != number_literal) )) (compound_statement "{\n          bVar4 = true;\n          goto LAB_0001cb74;\n        }" { (expression_statement "bVar4 = true;" (assignment_expression "bVar4 = true" identifier = true) ;) (goto_statement "goto LAB_0001cb74;" goto statement_identifier ;) })) (expression_statement "bVar4 = false;" (assignment_expression "bVar4 = false" identifier = false) ;) }))))) })) (expression_statement "uVar26 = uVar26 + 1;" (assignment_expression "uVar26 = uVar26 + 1" identifier = (binary_expression "uVar26 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar26 < uStack_94)" ( (binary_expression "uVar26 < uStack_94" identifier < identifier) )) ;)) (labeled_statement "LAB_0001c66c:\n  if (iStack_8c != 0) {\n    pcVar25 = fts->fts_path;\n    for (p_Var6 = fts->fts_child; pFVar15 = pFStack_a0, p_Var6 != (_ftsent *)0x0;\n        p_Var6 = p_Var6->fts_link) {\n      if ((_ftsent *)p_Var6->fts_accpath != p_Var6 + 1) {\n        p_Var6->fts_accpath = pcVar25 + ((int)p_Var6->fts_accpath - (int)p_Var6->fts_path);\n      }\n      p_Var6->fts_path = pcVar25;\n    }\n    while (pFVar19 = pFVar15, -1 < pFVar19->fts_level) {\n      if ((FTSENT *)pFVar19->fts_accpath != pFVar19 + 1) {\n        pFVar19->fts_accpath = pcVar25 + ((int)pFVar19->fts_accpath - (int)pFVar19->fts_path);\n      }\n      pFVar19->fts_path = pcVar25;\n      pFVar15 = pFVar19->fts_link;\n      if (pFVar19->fts_link == (_ftsent *)0x0) {\n        pFVar15 = pFVar19->fts_parent;\n      }\n    }\n  }" statement_identifier : (if_statement "if (iStack_8c != 0) {\n    pcVar25 = fts->fts_path;\n    for (p_Var6 = fts->fts_child; pFVar15 = pFStack_a0, p_Var6 != (_ftsent *)0x0;\n        p_Var6 = p_Var6->fts_link) {\n      if ((_ftsent *)p_Var6->fts_accpath != p_Var6 + 1) {\n        p_Var6->fts_accpath = pcVar25 + ((int)p_Var6->fts_accpath - (int)p_Var6->fts_path);\n      }\n      p_Var6->fts_path = pcVar25;\n    }\n    while (pFVar19 = pFVar15, -1 < pFVar19->fts_level) {\n      if ((FTSENT *)pFVar19->fts_accpath != pFVar19 + 1) {\n        pFVar19->fts_accpath = pcVar25 + ((int)pFVar19->fts_accpath - (int)pFVar19->fts_path);\n      }\n      pFVar19->fts_path = pcVar25;\n      pFVar15 = pFVar19->fts_link;\n      if (pFVar19->fts_link == (_ftsent *)0x0) {\n        pFVar15 = pFVar19->fts_parent;\n      }\n    }\n  }" if (parenthesized_expression "(iStack_8c != 0)" ( (binary_expression "iStack_8c != 0" identifier != number_literal) )) (compound_statement "{\n    pcVar25 = fts->fts_path;\n    for (p_Var6 = fts->fts_child; pFVar15 = pFStack_a0, p_Var6 != (_ftsent *)0x0;\n        p_Var6 = p_Var6->fts_link) {\n      if ((_ftsent *)p_Var6->fts_accpath != p_Var6 + 1) {\n        p_Var6->fts_accpath = pcVar25 + ((int)p_Var6->fts_accpath - (int)p_Var6->fts_path);\n      }\n      p_Var6->fts_path = pcVar25;\n    }\n    while (pFVar19 = pFVar15, -1 < pFVar19->fts_level) {\n      if ((FTSENT *)pFVar19->fts_accpath != pFVar19 + 1) {\n        pFVar19->fts_accpath = pcVar25 + ((int)pFVar19->fts_accpath - (int)pFVar19->fts_path);\n      }\n      pFVar19->fts_path = pcVar25;\n      pFVar15 = pFVar19->fts_link;\n      if (pFVar19->fts_link == (_ftsent *)0x0) {\n        pFVar15 = pFVar19->fts_parent;\n      }\n    }\n  }" { (expression_statement "pcVar25 = fts->fts_path;" (assignment_expression "pcVar25 = fts->fts_path" identifier = (field_expression "fts->fts_path" identifier -> field_identifier)) ;) (for_statement "for (p_Var6 = fts->fts_child; pFVar15 = pFStack_a0, p_Var6 != (_ftsent *)0x0;\n        p_Var6 = p_Var6->fts_link) {\n      if ((_ftsent *)p_Var6->fts_accpath != p_Var6 + 1) {\n        p_Var6->fts_accpath = pcVar25 + ((int)p_Var6->fts_accpath - (int)p_Var6->fts_path);\n      }\n      p_Var6->fts_path = pcVar25;\n    }" for ( (assignment_expression "p_Var6 = fts->fts_child" identifier = (field_expression "fts->fts_child" identifier -> field_identifier)) ; (comma_expression "pFVar15 = pFStack_a0, p_Var6 != (_ftsent *)0x0" (assignment_expression "pFVar15 = pFStack_a0" identifier = identifier) , (binary_expression "p_Var6 != (_ftsent *)0x0" identifier != (cast_expression "(_ftsent *)0x0" ( (type_descriptor "_ftsent *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ; (assignment_expression "p_Var6 = p_Var6->fts_link" identifier = (field_expression "p_Var6->fts_link" identifier -> field_identifier)) ) (compound_statement "{\n      if ((_ftsent *)p_Var6->fts_accpath != p_Var6 + 1) {\n        p_Var6->fts_accpath = pcVar25 + ((int)p_Var6->fts_accpath - (int)p_Var6->fts_path);\n      }\n      p_Var6->fts_path = pcVar25;\n    }" { (if_statement "if ((_ftsent *)p_Var6->fts_accpath != p_Var6 + 1) {\n        p_Var6->fts_accpath = pcVar25 + ((int)p_Var6->fts_accpath - (int)p_Var6->fts_path);\n      }" if (parenthesized_expression "((_ftsent *)p_Var6->fts_accpath != p_Var6 + 1)" ( (binary_expression "(_ftsent *)p_Var6->fts_accpath != p_Var6 + 1" (cast_expression "(_ftsent *)p_Var6->fts_accpath" ( (type_descriptor "_ftsent *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "p_Var6->fts_accpath" identifier -> field_identifier)) != (binary_expression "p_Var6 + 1" identifier + number_literal)) )) (compound_statement "{\n        p_Var6->fts_accpath = pcVar25 + ((int)p_Var6->fts_accpath - (int)p_Var6->fts_path);\n      }" { (expression_statement "p_Var6->fts_accpath = pcVar25 + ((int)p_Var6->fts_accpath - (int)p_Var6->fts_path);" (assignment_expression "p_Var6->fts_accpath = pcVar25 + ((int)p_Var6->fts_accpath - (int)p_Var6->fts_path)" (field_expression "p_Var6->fts_accpath" identifier -> field_identifier) = (binary_expression "pcVar25 + ((int)p_Var6->fts_accpath - (int)p_Var6->fts_path)" identifier + (parenthesized_expression "((int)p_Var6->fts_accpath - (int)p_Var6->fts_path)" ( (binary_expression "(int)p_Var6->fts_accpath - (int)p_Var6->fts_path" (cast_expression "(int)p_Var6->fts_accpath" ( (type_descriptor "int" primitive_type) ) (field_expression "p_Var6->fts_accpath" identifier -> field_identifier)) - (cast_expression "(int)p_Var6->fts_path" ( (type_descriptor "int" primitive_type) ) (field_expression "p_Var6->fts_path" identifier -> field_identifier))) )))) ;) })) (expression_statement "p_Var6->fts_path = pcVar25;" (assignment_expression "p_Var6->fts_path = pcVar25" (field_expression "p_Var6->fts_path" identifier -> field_identifier) = identifier) ;) })) (while_statement "while (pFVar19 = pFVar15, -1 < pFVar19->fts_level) {\n      if ((FTSENT *)pFVar19->fts_accpath != pFVar19 + 1) {\n        pFVar19->fts_accpath = pcVar25 + ((int)pFVar19->fts_accpath - (int)pFVar19->fts_path);\n      }\n      pFVar19->fts_path = pcVar25;\n      pFVar15 = pFVar19->fts_link;\n      if (pFVar19->fts_link == (_ftsent *)0x0) {\n        pFVar15 = pFVar19->fts_parent;\n      }\n    }" while (parenthesized_expression "(pFVar19 = pFVar15, -1 < pFVar19->fts_level)" ( (comma_expression "pFVar19 = pFVar15, -1 < pFVar19->fts_level" (assignment_expression "pFVar19 = pFVar15" identifier = identifier) , (binary_expression "-1 < pFVar19->fts_level" number_literal < (field_expression "pFVar19->fts_level" identifier -> field_identifier))) )) (compound_statement "{\n      if ((FTSENT *)pFVar19->fts_accpath != pFVar19 + 1) {\n        pFVar19->fts_accpath = pcVar25 + ((int)pFVar19->fts_accpath - (int)pFVar19->fts_path);\n      }\n      pFVar19->fts_path = pcVar25;\n      pFVar15 = pFVar19->fts_link;\n      if (pFVar19->fts_link == (_ftsent *)0x0) {\n        pFVar15 = pFVar19->fts_parent;\n      }\n    }" { (if_statement "if ((FTSENT *)pFVar19->fts_accpath != pFVar19 + 1) {\n        pFVar19->fts_accpath = pcVar25 + ((int)pFVar19->fts_accpath - (int)pFVar19->fts_path);\n      }" if (parenthesized_expression "((FTSENT *)pFVar19->fts_accpath != pFVar19 + 1)" ( (binary_expression "(FTSENT *)pFVar19->fts_accpath != pFVar19 + 1" (cast_expression "(FTSENT *)pFVar19->fts_accpath" ( (type_descriptor "FTSENT *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "pFVar19->fts_accpath" identifier -> field_identifier)) != (binary_expression "pFVar19 + 1" identifier + number_literal)) )) (compound_statement "{\n        pFVar19->fts_accpath = pcVar25 + ((int)pFVar19->fts_accpath - (int)pFVar19->fts_path);\n      }" { (expression_statement "pFVar19->fts_accpath = pcVar25 + ((int)pFVar19->fts_accpath - (int)pFVar19->fts_path);" (assignment_expression "pFVar19->fts_accpath = pcVar25 + ((int)pFVar19->fts_accpath - (int)pFVar19->fts_path)" (field_expression "pFVar19->fts_accpath" identifier -> field_identifier) = (binary_expression "pcVar25 + ((int)pFVar19->fts_accpath - (int)pFVar19->fts_path)" identifier + (parenthesized_expression "((int)pFVar19->fts_accpath - (int)pFVar19->fts_path)" ( (binary_expression "(int)pFVar19->fts_accpath - (int)pFVar19->fts_path" (cast_expression "(int)pFVar19->fts_accpath" ( (type_descriptor "int" primitive_type) ) (field_expression "pFVar19->fts_accpath" identifier -> field_identifier)) - (cast_expression "(int)pFVar19->fts_path" ( (type_descriptor "int" primitive_type) ) (field_expression "pFVar19->fts_path" identifier -> field_identifier))) )))) ;) })) (expression_statement "pFVar19->fts_path = pcVar25;" (assignment_expression "pFVar19->fts_path = pcVar25" (field_expression "pFVar19->fts_path" identifier -> field_identifier) = identifier) ;) (expression_statement "pFVar15 = pFVar19->fts_link;" (assignment_expression "pFVar15 = pFVar19->fts_link" identifier = (field_expression "pFVar19->fts_link" identifier -> field_identifier)) ;) (if_statement "if (pFVar19->fts_link == (_ftsent *)0x0) {\n        pFVar15 = pFVar19->fts_parent;\n      }" if (parenthesized_expression "(pFVar19->fts_link == (_ftsent *)0x0)" ( (binary_expression "pFVar19->fts_link == (_ftsent *)0x0" (field_expression "pFVar19->fts_link" identifier -> field_identifier) == (cast_expression "(_ftsent *)0x0" ( (type_descriptor "_ftsent *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        pFVar15 = pFVar19->fts_parent;\n      }" { (expression_statement "pFVar15 = pFVar19->fts_parent;" (assignment_expression "pFVar15 = pFVar19->fts_parent" identifier = (field_expression "pFVar19->fts_parent" identifier -> field_identifier)) ;) })) })) }))) (if_statement "if ((fts->fts_options & 4U) != 0) {\n    if ((fts->fts_pathlen == uVar27) || (uVar26 == 0)) {\n      pcStack_90 = pcStack_90 + -1;\n    }\n    *pcStack_90 = '\0';\n  }" if (parenthesized_expression "((fts->fts_options & 4U) != 0)" ( (binary_expression "(fts->fts_options & 4U) != 0" (parenthesized_expression "(fts->fts_options & 4U)" ( (binary_expression "fts->fts_options & 4U" (field_expression "fts->fts_options" identifier -> field_identifier) & number_literal) )) != number_literal) )) (compound_statement "{\n    if ((fts->fts_pathlen == uVar27) || (uVar26 == 0)) {\n      pcStack_90 = pcStack_90 + -1;\n    }\n    *pcStack_90 = '\0';\n  }" { (if_statement "if ((fts->fts_pathlen == uVar27) || (uVar26 == 0)) {\n      pcStack_90 = pcStack_90 + -1;\n    }" if (parenthesized_expression "((fts->fts_pathlen == uVar27) || (uVar26 == 0))" ( (binary_expression "(fts->fts_pathlen == uVar27) || (uVar26 == 0)" (parenthesized_expression "(fts->fts_pathlen == uVar27)" ( (binary_expression "fts->fts_pathlen == uVar27" (field_expression "fts->fts_pathlen" identifier -> field_identifier) == identifier) )) || (parenthesized_expression "(uVar26 == 0)" ( (binary_expression "uVar26 == 0" identifier == number_literal) ))) )) (compound_statement "{\n      pcStack_90 = pcStack_90 + -1;\n    }" { (expression_statement "pcStack_90 = pcStack_90 + -1;" (assignment_expression "pcStack_90 = pcStack_90 + -1" identifier = (binary_expression "pcStack_90 + -1" identifier + number_literal)) ;) })) (expression_statement "*pcStack_90 = '\0';" (assignment_expression "*pcStack_90 = '\0'" (pointer_expression "*pcStack_90" * identifier) = (char_literal "'\0'" ' escape_sequence ')) ;) })) (if_statement "if ((pDVar23 == (DIR *)0x0) && (bVar2)) {\n    if ((ent != (FTSENT *)0x1) && (uVar26 != 0)) goto LAB_0001c6c0;\n    if (p->fts_level == 0) {\n      iVar5 = restore_initial_cwd(fts);\n    }\n    else {\n      iVar5 = fts_safe_changedir(fts,p->fts_parent,-1,(char *)(*(int *)(puVar29 + 0x16fd4) + 0x2d20)\n                                );\n    }\n    if (iVar5 != 0) {\n      p->fts_info = 7;\n      fts->fts_options = fts->fts_options | 0x4000;\n      fts_lfree(pFStack_a0);\n      return;\n    }\n  }" if (parenthesized_expression "((pDVar23 == (DIR *)0x0) && (bVar2))" ( (binary_expression "(pDVar23 == (DIR *)0x0) && (bVar2)" (parenthesized_expression "(pDVar23 == (DIR *)0x0)" ( (binary_expression "pDVar23 == (DIR *)0x0" identifier == (cast_expression "(DIR *)0x0" ( (type_descriptor "DIR *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(bVar2)" ( identifier ))) )) (compound_statement "{\n    if ((ent != (FTSENT *)0x1) && (uVar26 != 0)) goto LAB_0001c6c0;\n    if (p->fts_level == 0) {\n      iVar5 = restore_initial_cwd(fts);\n    }\n    else {\n      iVar5 = fts_safe_changedir(fts,p->fts_parent,-1,(char *)(*(int *)(puVar29 + 0x16fd4) + 0x2d20)\n                                );\n    }\n    if (iVar5 != 0) {\n      p->fts_info = 7;\n      fts->fts_options = fts->fts_options | 0x4000;\n      fts_lfree(pFStack_a0);\n      return;\n    }\n  }" { (if_statement "if ((ent != (FTSENT *)0x1) && (uVar26 != 0)) goto LAB_0001c6c0;" if (parenthesized_expression "((ent != (FTSENT *)0x1) && (uVar26 != 0))" ( (binary_expression "(ent != (FTSENT *)0x1) && (uVar26 != 0)" (parenthesized_expression "(ent != (FTSENT *)0x1)" ( (binary_expression "ent != (FTSENT *)0x1" identifier != (cast_expression "(FTSENT *)0x1" ( (type_descriptor "FTSENT *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(uVar26 != 0)" ( (binary_expression "uVar26 != 0" identifier != number_literal) ))) )) (goto_statement "goto LAB_0001c6c0;" goto statement_identifier ;)) (if_statement "if (p->fts_level == 0) {\n      iVar5 = restore_initial_cwd(fts);\n    }\n    else {\n      iVar5 = fts_safe_changedir(fts,p->fts_parent,-1,(char *)(*(int *)(puVar29 + 0x16fd4) + 0x2d20)\n                                );\n    }" if (parenthesized_expression "(p->fts_level == 0)" ( (binary_expression "p->fts_level == 0" (field_expression "p->fts_level" identifier -> field_identifier) == number_literal) )) (compound_statement "{\n      iVar5 = restore_initial_cwd(fts);\n    }" { (expression_statement "iVar5 = restore_initial_cwd(fts);" (assignment_expression "iVar5 = restore_initial_cwd(fts)" identifier = (call_expression "restore_initial_cwd(fts)" identifier (argument_list "(fts)" ( identifier )))) ;) }) (else_clause "else {\n      iVar5 = fts_safe_changedir(fts,p->fts_parent,-1,(char *)(*(int *)(puVar29 + 0x16fd4) + 0x2d20)\n                                );\n    }" else (compound_statement "{\n      iVar5 = fts_safe_changedir(fts,p->fts_parent,-1,(char *)(*(int *)(puVar29 + 0x16fd4) + 0x2d20)\n                                );\n    }" { (expression_statement "iVar5 = fts_safe_changedir(fts,p->fts_parent,-1,(char *)(*(int *)(puVar29 + 0x16fd4) + 0x2d20)\n                                );" (assignment_expression "iVar5 = fts_safe_changedir(fts,p->fts_parent,-1,(char *)(*(int *)(puVar29 + 0x16fd4) + 0x2d20)\n                                )" identifier = (call_expression "fts_safe_changedir(fts,p->fts_parent,-1,(char *)(*(int *)(puVar29 + 0x16fd4) + 0x2d20)\n                                )" identifier (argument_list "(fts,p->fts_parent,-1,(char *)(*(int *)(puVar29 + 0x16fd4) + 0x2d20)\n                                )" ( identifier , (field_expression "p->fts_parent" identifier -> field_identifier) , number_literal , (cast_expression "(char *)(*(int *)(puVar29 + 0x16fd4) + 0x2d20)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar29 + 0x16fd4) + 0x2d20)" ( (binary_expression "*(int *)(puVar29 + 0x16fd4) + 0x2d20" (pointer_expression "*(int *)(puVar29 + 0x16fd4)" * (cast_expression "(int *)(puVar29 + 0x16fd4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar29 + 0x16fd4)" ( (binary_expression "puVar29 + 0x16fd4" identifier + number_literal) )))) + number_literal) ))) )))) ;) }))) (if_statement "if (iVar5 != 0) {\n      p->fts_info = 7;\n      fts->fts_options = fts->fts_options | 0x4000;\n      fts_lfree(pFStack_a0);\n      return;\n    }" if (parenthesized_expression "(iVar5 != 0)" ( (binary_expression "iVar5 != 0" identifier != number_literal) )) (compound_statement "{\n      p->fts_info = 7;\n      fts->fts_options = fts->fts_options | 0x4000;\n      fts_lfree(pFStack_a0);\n      return;\n    }" { (expression_statement "p->fts_info = 7;" (assignment_expression "p->fts_info = 7" (field_expression "p->fts_info" identifier -> field_identifier) = number_literal) ;) (expression_statement "fts->fts_options = fts->fts_options | 0x4000;" (assignment_expression "fts->fts_options = fts->fts_options | 0x4000" (field_expression "fts->fts_options" identifier -> field_identifier) = (binary_expression "fts->fts_options | 0x4000" (field_expression "fts->fts_options" identifier -> field_identifier) | number_literal)) ;) (expression_statement "fts_lfree(pFStack_a0);" (call_expression "fts_lfree(pFStack_a0)" identifier (argument_list "(pFStack_a0)" ( identifier ))) ;) (return_statement "return;" return ;) })) })) (if_statement "if (uVar26 == 0) {\n    if (((ent == (FTSENT *)0x3) && (p->fts_info != 4)) && (p->fts_info != 7)) {\n      p->fts_info = 6;\n    }\n    fts_lfree(pFStack_a0);\n    return;\n  }" if (parenthesized_expression "(uVar26 == 0)" ( (binary_expression "uVar26 == 0" identifier == number_literal) )) (compound_statement "{\n    if (((ent == (FTSENT *)0x3) && (p->fts_info != 4)) && (p->fts_info != 7)) {\n      p->fts_info = 6;\n    }\n    fts_lfree(pFStack_a0);\n    return;\n  }" { (if_statement "if (((ent == (FTSENT *)0x3) && (p->fts_info != 4)) && (p->fts_info != 7)) {\n      p->fts_info = 6;\n    }" if (parenthesized_expression "(((ent == (FTSENT *)0x3) && (p->fts_info != 4)) && (p->fts_info != 7))" ( (binary_expression "((ent == (FTSENT *)0x3) && (p->fts_info != 4)) && (p->fts_info != 7)" (parenthesized_expression "((ent == (FTSENT *)0x3) && (p->fts_info != 4))" ( (binary_expression "(ent == (FTSENT *)0x3) && (p->fts_info != 4)" (parenthesized_expression "(ent == (FTSENT *)0x3)" ( (binary_expression "ent == (FTSENT *)0x3" identifier == (cast_expression "(FTSENT *)0x3" ( (type_descriptor "FTSENT *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(p->fts_info != 4)" ( (binary_expression "p->fts_info != 4" (field_expression "p->fts_info" identifier -> field_identifier) != number_literal) ))) )) && (parenthesized_expression "(p->fts_info != 7)" ( (binary_expression "p->fts_info != 7" (field_expression "p->fts_info" identifier -> field_identifier) != number_literal) ))) )) (compound_statement "{\n      p->fts_info = 6;\n    }" { (expression_statement "p->fts_info = 6;" (assignment_expression "p->fts_info = 6" (field_expression "p->fts_info" identifier -> field_identifier) = number_literal) ;) })) (expression_statement "fts_lfree(pFStack_a0);" (call_expression "fts_lfree(pFStack_a0)" identifier (argument_list "(pFStack_a0)" ( identifier ))) ;) (return_statement "return;" return ;) })) (labeled_statement "LAB_0001c6c0:\n  if (bVar4) {\n    fts->fts_compar =\n         (_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *)(*(int *)(puVar29 + 0x16fd4) + -0x4fa0);\n    fts_sort(fts,pFStack_a0,uVar26);\n    fts->fts_compar = (_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *)0x0;\n    return;\n  }" statement_identifier : (if_statement "if (bVar4) {\n    fts->fts_compar =\n         (_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *)(*(int *)(puVar29 + 0x16fd4) + -0x4fa0);\n    fts_sort(fts,pFStack_a0,uVar26);\n    fts->fts_compar = (_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *)0x0;\n    return;\n  }" if (parenthesized_expression "(bVar4)" ( identifier )) (compound_statement "{\n    fts->fts_compar =\n         (_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *)(*(int *)(puVar29 + 0x16fd4) + -0x4fa0);\n    fts_sort(fts,pFStack_a0,uVar26);\n    fts->fts_compar = (_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *)0x0;\n    return;\n  }" { (expression_statement "fts->fts_compar =\n         (_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *)(*(int *)(puVar29 + 0x16fd4) + -0x4fa0);" (assignment_expression "fts->fts_compar =\n         (_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *)(*(int *)(puVar29 + 0x16fd4) + -0x4fa0)" (field_expression "fts->fts_compar" identifier -> field_identifier) = (cast_expression "(_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *)(*(int *)(puVar29 + 0x16fd4) + -0x4fa0)" ( (type_descriptor "_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar29 + 0x16fd4) + -0x4fa0)" ( (binary_expression "*(int *)(puVar29 + 0x16fd4) + -0x4fa0" (pointer_expression "*(int *)(puVar29 + 0x16fd4)" * (cast_expression "(int *)(puVar29 + 0x16fd4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar29 + 0x16fd4)" ( (binary_expression "puVar29 + 0x16fd4" identifier + number_literal) )))) + number_literal) )))) ;) (expression_statement "fts_sort(fts,pFStack_a0,uVar26);" (call_expression "fts_sort(fts,pFStack_a0,uVar26)" identifier (argument_list "(fts,pFStack_a0,uVar26)" ( identifier , identifier , identifier ))) ;) (expression_statement "fts->fts_compar = (_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *)0x0;" (assignment_expression "fts->fts_compar = (_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *)0x0" (field_expression "fts->fts_compar" identifier -> field_identifier) = (cast_expression "(_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *)0x0" ( (type_descriptor "_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (return_statement "return;" return ;) }))) (if_statement "if (fts->fts_compar == (_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *)0x0) {\n    return;\n  }" if (parenthesized_expression "(fts->fts_compar == (_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *)0x0)" ( (binary_expression "fts->fts_compar == (_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *)0x0" (field_expression "fts->fts_compar" identifier -> field_identifier) == (cast_expression "(_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *)0x0" ( (type_descriptor "_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (if_statement "if (uVar26 < 2) {\n    return;\n  }" if (parenthesized_expression "(uVar26 < 2)" ( (binary_expression "uVar26 < 2" identifier < number_literal) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (expression_statement "fts_sort(fts,pFStack_a0,uVar26);" (call_expression "fts_sort(fts,pFStack_a0,uVar26)" identifier (argument_list "(fts,pFStack_a0,uVar26)" ( identifier , identifier , identifier ))) ;) (return_statement "return;" return ;) })))
(translation_unit "int FUN_0001bfec(int *param_1,undefined4 *param_2)\n\n{\n  int *piVar1;\n  bool bVar2;\n  bool bVar3;\n  bool bVar4;\n  int iVar5;\n  int iVar6;\n  int iVar7;\n  int iVar8;\n  int iVar9;\n  undefined4 *puVar10;\n  uint uVar11;\n  int iVar12;\n  undefined4 uVar13;\n  int iVar14;\n  undefined2 uVar15;\n  int *piVar16;\n  int iVar17;\n  int iVar18;\n  uint uVar19;\n  uint uVar20;\n  code *pcVar21;\n  undefined *puVar22;\n  uint uVar23;\n  int iVar24;\n  int iStack_a4;\n  int iStack_a0;\n  uint uStack_94;\n  undefined1 *puStack_90;\n  int iStack_8c;\n  int iStack_7c;\n  undefined4 local_28;\n  undefined4 local_24;\n  undefined4 local_20;\n  undefined4 local_1c;\n  int local_c;\n  \n  local_c = *(int *)PTR___stack_chk_guard_000333f4;\n  if ((param_1[0xc] & 0x102U) == 0) {\n    iVar5 = param_2[1];\n    if ((iVar5 != 0) && (-1 < *(int *)(iVar5 + 0x30))) {\n      piVar16 = (int *)param_1[0xe];\n      pcVar21 = (code *)PTR_abort_000332e8;\n      if (piVar16[4] == 0 && piVar16[5] == 0) goto LAB_0001c120;\n      if ((*piVar16 == param_2[0x16]) && (piVar16[1] == param_2[0x17])) {\n        piVar1 = param_2 + 0x12;\n        param_2 = (undefined4 *)piVar16[2];\n        if ((param_2 == (undefined4 *)0x0) &&\n           (param_2 = (undefined4 *)piVar16[3], param_2 == (undefined4 *)*piVar1)) {\n          piVar16[3] = *(int *)(iVar5 + 0x48);\n          piVar16[2] = 0;\n          piVar16 = (int *)param_1[0xe];\n          param_2 = *(undefined4 **)(iVar5 + 0x5c);\n          param_1 = *(int **)(iVar5 + 0x58);\n          piVar16[1] = (int)param_2;\n          *piVar16 = (int)param_1;\n        }\n      }\n    }\nLAB_0001c0f8:\n    if (local_c == *(int *)PTR___stack_chk_guard_000333f4) {\n      return *(int *)PTR___stack_chk_guard_000333f4;\n    }\n  }\n  else {\n    local_24 = param_2[0x12];\n    local_28 = 0;\n    local_1c = param_2[0x17];\n    local_20 = param_2[0x16];\n    param_2 = &local_28;\n    param_1 = (int *)hash_delete(param_1[0xe]);\n    if (param_1 != (int *)0x0) {\n      (*(code *)PTR_free_000333fc)();\n      goto LAB_0001c0f8;\n    }\n    pcVar21 = (code *)PTR_abort_000332e8;\n    (*(code *)PTR_abort_000332e8)();\nLAB_0001c120:\n    (*pcVar21)();\n  }\n  puVar22 = PTR___stack_chk_fail_000333dc;\n  (*(code *)PTR___stack_chk_fail_000333dc)();\n  iVar18 = *param_1;\n  iVar5 = *(int *)(iVar18 + 0xc);\n  if (iVar5 != 0) {\n    iStack_7c = (**(code **)(puVar22 + 0x172d0))();\n    if (iStack_7c < 0) {\n      (**(code **)(puVar22 + 0x17194))(*(undefined4 *)(iVar18 + 0xc));\n      *(undefined4 *)(iVar18 + 0xc) = 0;\n      if (param_2 != (undefined4 *)0x3) {\n        return 0;\n      }\n      *(undefined2 *)(iVar18 + 0x3c) = 4;\n      puVar10 = (undefined4 *)(**(code **)(puVar22 + 0x17220))();\n      *(undefined4 *)(iVar18 + 0x20) = *puVar10;\n      return 0;\n    }\n    if (param_1[0xb] == 0) {\n      uStack_94 = 100000;\n      bVar2 = true;\n    }\n    else {\n      uStack_94 = 0xffffffff;\n      bVar2 = true;\n    }\n    goto LAB_0001c1b8;\n  }\n  uVar19 = param_1[0xc];\n  if ((uVar19 & 0x204) == 0x200) {\n    iVar17 = param_1[8];\n  }\n  else {\n    iVar17 = -100;\n  }\n  uVar20 = uVar19 & 0x10;\n  if (((uVar20 != 0) && (uVar20 = 0x20000, (uVar19 & 1) != 0)) &&\n     (uVar20 = *(uint *)(iVar18 + 0x30), uVar20 != 0)) {\n    uVar20 = 0x20000;\n  }\n  iStack_7c = openat_safer(iVar17,*(undefined4 *)(iVar18 + 0x18),\n                           (uVar19 & 0x800) << 7 | uVar20 | 0x90880);\n  if (iStack_7c < 0) {\nLAB_0001c3e8:\n    *(undefined4 *)(iVar18 + 0xc) = 0;\n    if (param_2 == (undefined4 *)0x3) {\n      *(undefined2 *)(iVar18 + 0x3c) = 4;\n      puVar10 = (undefined4 *)(**(code **)(puVar22 + 0x17220))();\n      *(undefined4 *)(iVar18 + 0x20) = *puVar10;\n    }\n    return 0;\n  }\n  iVar17 = (**(code **)(puVar22 + 0x171f0))(iStack_7c);\n  if (iVar17 == 0) {\n    puVar10 = (undefined4 *)(**(code **)(puVar22 + 0x17220))();\n    uVar13 = *puVar10;\n    (**(code **)(puVar22 + 0x17198))(iStack_7c);\n    *puVar10 = uVar13;\n    goto LAB_0001c3e8;\n  }\n  *(int *)(iVar18 + 0xc) = iVar17;\n  if (*(short *)(iVar18 + 0x3c) == 0xb) {\n    uVar15 = FUN_0001b18c(param_1,iVar18,0);\n    *(undefined2 *)(iVar18 + 0x3c) = uVar15;\n  }\n  else if ((param_1[0xc] & 0x100U) != 0) {\n    FUN_0001bfec(param_1,iVar18);\n    FUN_0001b18c(param_1,iVar18,0);\n    iVar17 = FUN_0001bad0(param_1,iVar18);\n    if (iVar17 == 0) {\n      puVar10 = (undefined4 *)(**(code **)(puVar22 + 0x17220))();\n      *puVar10 = 0xc;\n      return 0;\n    }\n  }\n  if (param_1[0xb] == 0) {\n    uStack_94 = 100000;\n  }\n  else {\n    uStack_94 = 0xffffffff;\n  }\n  if (param_2 == (undefined4 *)0x2) {\n    bVar2 = false;\n  }\n  else {\n    if ((((param_1[0xc] & 0x38U) == 0x18) && (*(int *)(iVar18 + 100) == 2)) &&\n       (iVar17 = FUN_0001ba08(iVar18,iStack_7c), iVar17 != 0)) {\n      bVar2 = false;\n      if (param_2 != (undefined4 *)0x3) {\n        bVar2 = false;\n        goto LAB_0001c1b8;\n      }\n      uVar19 = param_1[0xc];\n    }\n    else {\n      bVar2 = true;\n      uVar19 = param_1[0xc];\n    }\n    if ((uVar19 & 0x200) != 0) {\n      iStack_7c = rpl_fcntl(iStack_7c,0x406,3);\n    }\n    if ((iStack_7c < 0) || (iVar17 = FUN_0001bd68(param_1,iVar18,iStack_7c,0), iVar17 != 0)) {\n      if ((bVar2) && (param_2 == (undefined4 *)0x3)) {\n        puVar10 = (undefined4 *)(**(code **)(puVar22 + 0x17220))();\n        *(undefined4 *)(iVar18 + 0x20) = *puVar10;\n      }\n      *(ushort *)(iVar18 + 0x3e) = *(ushort *)(iVar18 + 0x3e) | 1;\n      (**(code **)(puVar22 + 0x17194))(*(undefined4 *)(iVar18 + 0xc));\n      *(undefined4 *)(iVar18 + 0xc) = 0;\n      if (((param_1[0xc] & 0x200U) != 0) && (-1 < iStack_7c)) {\n        (**(code **)(puVar22 + 0x17198))(iStack_7c);\n        *(undefined4 *)(iVar18 + 0xc) = 0;\n      }\n      bVar2 = false;\n    }\n    else {\n      bVar2 = true;\n    }\n  }\nLAB_0001c1b8:\n  iVar17 = *(int *)(iVar18 + 0x28) + -1;\n  if (*(char *)(*(int *)(iVar18 + 0x1c) + iVar17) != '/') {\n    iVar17 = *(int *)(iVar18 + 0x28);\n  }\n  if ((param_1[0xc] & 4U) == 0) {\n    puStack_90 = (undefined1 *)0x0;\n  }\n  else {\n    puStack_90 = (undefined1 *)(param_1[6] + iVar17) + 1;\n    *(undefined1 *)(param_1[6] + iVar17) = 0x2f;\n  }\n  uVar20 = iVar17 + 1;\n  uVar23 = param_1[9] - uVar20;\n  iVar6 = *(int *)(iVar18 + 0x30);\n  bVar4 = false;\n  iStack_8c = 0;\n  iStack_a4 = 0;\n  uVar19 = 0;\n  iStack_a0 = 0;\n  iVar7 = *(int *)(puVar22 + 0x16fd4);\n  iVar8 = *(int *)(puVar22 + 0x16fd4);\n  iVar9 = *(int *)(puVar22 + 0x16fd4);\nLAB_0001c96c:\n  do {\n    do {\n      if (*(int *)(iVar18 + 0xc) == 0) goto LAB_0001c66c;\n      piVar16 = (int *)(**(code **)(puVar22 + 0x17220))();\n      *piVar16 = 0;\n      puVar10 = (undefined4 *)(**(code **)(puVar22 + 0x171d8))(*(undefined4 *)(iVar18 + 0xc));\n      if (puVar10 == (undefined4 *)0x0) {\n        if (*piVar16 != 0) {\n          *(int *)(iVar18 + 0x20) = *piVar16;\n          uVar15 = 7;\n          if ((iVar5 == 0) && (uVar19 == 0)) {\n            uVar15 = 4;\n          }\n          *(undefined2 *)(iVar18 + 0x3c) = uVar15;\n        }\n        if (*(int *)(iVar18 + 0xc) != 0) {\n          (**(code **)(puVar22 + 0x17194))();\n          *(undefined4 *)(iVar18 + 0xc) = 0;\n        }\n        goto LAB_0001c66c;\n      }\n    } while ((((param_1[0xc] & 0x20U) == 0) && (*(char *)((int)puVar10 + 0x13) == '.')) &&\n            ((*(char *)(puVar10 + 5) == '\0' || ((puVar10[5] & 0xffff0000) == 0x2e000000))));\n    uVar11 = (**(code **)(puVar22 + 0x17240))((int)puVar10 + 0x13);\n    iVar12 = (*(code *)(iVar7 + -0x4b14))(param_1,(int)puVar10 + 0x13,uVar11);\n    if (iVar12 == 0) {\nLAB_0001c794:\n      iVar5 = *piVar16;\n      (**(code **)(puVar22 + 0x172c8))(iVar12);\n      FUN_0001b6fc(iStack_a0);\n      (**(code **)(puVar22 + 0x17194))(*(undefined4 *)(iVar18 + 0xc));\n      *(undefined4 *)(iVar18 + 0xc) = 0;\n      *(undefined2 *)(iVar18 + 0x3c) = 7;\n      param_1[0xc] = param_1[0xc] | 0x4000;\n      *piVar16 = iVar5;\n      return 0;\n    }\n    if (uVar23 <= uVar11) {\n      iVar24 = param_1[6];\n      iVar14 = FUN_0001b0cc(param_1,iVar17 + 2 + uVar11);\n      if (iVar14 == 0) goto LAB_0001c794;\n      if ((param_1[6] != iVar24) && (iStack_8c = iVar14, (param_1[0xc] & 4U) != 0)) {\n        puStack_90 = (undefined1 *)(param_1[6] + uVar20);\n      }\n      uVar23 = param_1[9] - uVar20;\n    }\n    if (uVar20 + uVar11 < uVar20) {\n      (**(code **)(puVar22 + 0x172c8))(iVar12);\n      FUN_0001b6fc(iStack_a0);\n      (**(code **)(puVar22 + 0x17194))(*(undefined4 *)(iVar18 + 0xc));\n      *(undefined4 *)(iVar18 + 0xc) = 0;\n      *(undefined2 *)(iVar18 + 0x3c) = 7;\n      param_1[0xc] = param_1[0xc] | 0x4000;\n      *piVar16 = 0x4e;\n      return 0;\n    }\n    *(int *)(iVar12 + 0x30) = iVar6 + 1;\n    *(int *)(iVar12 + 4) = *param_1;\n    *(uint *)(iVar12 + 0x28) = uVar20 + uVar11;\n    uVar13 = *puVar10;\n    *(undefined4 *)(iVar12 + 0x5c) = puVar10[1];\n    *(undefined4 *)(iVar12 + 0x58) = uVar13;\n    if ((param_1[0xc] & 4U) == 0) {\n      *(int *)(iVar12 + 0x18) = iVar12 + 0xe8;\n      iVar14 = param_1[0xb];\n    }\n    else {\n      *(undefined4 *)(iVar12 + 0x18) = *(undefined4 *)(iVar12 + 0x1c);\n      (**(code **)(puVar22 + 0x172cc))(puStack_90,iVar12 + 0xe8,*(int *)(iVar12 + 0x34) + 1);\n      iVar14 = param_1[0xb];\n    }\n    if ((iVar14 == 0) || ((param_1[0xc] & 0x400U) != 0)) {\n      if (((param_1[0xc] & 0x18U) == 0x18) && ((*(byte *)((int)puVar10 + 0x12) & 0xfb) != 0)) {\n        *(undefined2 *)(iVar12 + 0x3c) = 0xb;\n        bVar3 = true;\n        if (*(byte *)((int)puVar10 + 0x12) < 0xd) {\n                    \n                    \n          iVar5 = (*(code *)(puVar22 +\n                            *(int *)(iVar9 + 0x2d30 + (uint)*(byte *)((int)puVar10 + 0x12) * 4) +\n                            0x1ef9c))();\n          return iVar5;\n        }\n      }\n      else {\n        *(undefined2 *)(iVar12 + 0x3c) = 0xb;\n        bVar3 = false;\n        if (*(byte *)((int)puVar10 + 0x12) < 0xd) {\n                    \n                    \n          iVar5 = (*(code *)(puVar22 +\n                            *(int *)(*(int *)(puVar22 + 0x16fd4) + 0x2d64 +\n                                    (uint)*(byte *)((int)puVar10 + 0x12) * 4) + 0x1ef9c))();\n          return iVar5;\n        }\n      }\n      *(undefined4 *)(iVar12 + 0x60) = 0;\n      if (bVar3) {\n        uVar13 = 1;\n      }\n      else {\n        uVar13 = 2;\n      }\n      *(undefined4 *)(iVar12 + 0x84) = uVar13;\n      *(undefined4 *)(iVar12 + 0x80) = 0;\n    }\n    else {\n      uVar15 = FUN_0001b18c(param_1,iVar12,0);\n      *(undefined2 *)(iVar12 + 0x3c) = uVar15;\n    }\n    *(undefined4 *)(iVar12 + 8) = 0;\n    iVar14 = iVar12;\n    if (iStack_a0 != 0) {\n      *(int *)(iStack_a4 + 8) = iVar12;\n      iVar14 = iStack_a0;\n    }\n    iStack_a0 = iVar14;\n    iStack_a4 = iVar12;\n    if (uVar19 == 10000) {\n      if (param_1[0xb] != 0) {\nLAB_0001cb74:\n        uVar19 = 0x2711;\n        goto LAB_0001c96c;\n      }\n      iVar12 = (*(code *)(iVar8 + -0x47a8))(iVar18,iStack_7c);\n      if (iVar12 == 0x6969) {\n        bVar4 = false;\n      }\n      else if (iVar12 == 0x1021994) {\n        bVar4 = false;\n      }\n      else {\n        if (iVar12 != -0xacb2be) {\n          bVar4 = true;\n          goto LAB_0001cb74;\n        }\n        bVar4 = false;\n      }\n    }\n    uVar19 = uVar19 + 1;\n  } while (uVar19 < uStack_94);\nLAB_0001c66c:\n  if (iStack_8c != 0) {\n    iVar6 = param_1[6];\n    for (iVar17 = param_1[1]; iVar7 = iStack_a0, iVar17 != 0; iVar17 = *(int *)(iVar17 + 8)) {\n      if (*(int *)(iVar17 + 0x18) != iVar17 + 0xe8) {\n        *(int *)(iVar17 + 0x18) = iVar6 + (*(int *)(iVar17 + 0x18) - *(int *)(iVar17 + 0x1c));\n      }\n      *(int *)(iVar17 + 0x1c) = iVar6;\n    }\n    while (iVar17 = iVar7, -1 < *(int *)(iVar17 + 0x30)) {\n      if (*(int *)(iVar17 + 0x18) != iVar17 + 0xe8) {\n        *(int *)(iVar17 + 0x18) = iVar6 + (*(int *)(iVar17 + 0x18) - *(int *)(iVar17 + 0x1c));\n      }\n      *(int *)(iVar17 + 0x1c) = iVar6;\n      iVar7 = *(int *)(iVar17 + 8);\n      if (*(int *)(iVar17 + 8) == 0) {\n        iVar7 = *(int *)(iVar17 + 4);\n      }\n    }\n  }\n  if ((param_1[0xc] & 4U) != 0) {\n    if ((param_1[9] == uVar20) || (uVar19 == 0)) {\n      puStack_90 = puStack_90 + -1;\n    }\n    *puStack_90 = 0;\n  }\n  if ((iVar5 == 0) && (bVar2)) {\n    if ((param_2 != (undefined4 *)0x1) && (uVar19 != 0)) goto LAB_0001c6c0;\n    if (*(int *)(iVar18 + 0x30) == 0) {\n      iVar5 = FUN_0001bcbc(param_1);\n    }\n    else {\n      iVar5 = FUN_0001bd68(param_1,*(undefined4 *)(iVar18 + 4),0xffffffff,\n                           *(int *)(puVar22 + 0x16fd4) + 0x2d20);\n    }\n    if (iVar5 != 0) {\n      *(undefined2 *)(iVar18 + 0x3c) = 7;\n      param_1[0xc] = param_1[0xc] | 0x4000;\n      FUN_0001b6fc(iStack_a0);\n      return 0;\n    }\n  }\n  if (uVar19 == 0) {\n    if (((param_2 == (undefined4 *)0x3) && (*(short *)(iVar18 + 0x3c) != 4)) &&\n       (*(short *)(iVar18 + 0x3c) != 7)) {\n      *(undefined2 *)(iVar18 + 0x3c) = 6;\n    }\n    FUN_0001b6fc(iStack_a0);\n    return 0;\n  }\nLAB_0001c6c0:\n  if (bVar4) {\n    param_1[0xb] = *(int *)(puVar22 + 0x16fd4) + -0x4fa0;\n    iVar5 = FUN_0001b3ac(param_1,iStack_a0,uVar19);\n    param_1[0xb] = 0;\n    return iVar5;\n  }\n  if (param_1[0xb] == 0) {\n    return iStack_a0;\n  }\n  if (uVar19 < 2) {\n    return iStack_a0;\n  }\n  iVar5 = FUN_0001b3ac(param_1,iStack_a0,uVar19);\n  return iVar5;\n}\n\n" (function_definition "int FUN_0001bfec(int *param_1,undefined4 *param_2)\n\n{\n  int *piVar1;\n  bool bVar2;\n  bool bVar3;\n  bool bVar4;\n  int iVar5;\n  int iVar6;\n  int iVar7;\n  int iVar8;\n  int iVar9;\n  undefined4 *puVar10;\n  uint uVar11;\n  int iVar12;\n  undefined4 uVar13;\n  int iVar14;\n  undefined2 uVar15;\n  int *piVar16;\n  int iVar17;\n  int iVar18;\n  uint uVar19;\n  uint uVar20;\n  code *pcVar21;\n  undefined *puVar22;\n  uint uVar23;\n  int iVar24;\n  int iStack_a4;\n  int iStack_a0;\n  uint uStack_94;\n  undefined1 *puStack_90;\n  int iStack_8c;\n  int iStack_7c;\n  undefined4 local_28;\n  undefined4 local_24;\n  undefined4 local_20;\n  undefined4 local_1c;\n  int local_c;\n  \n  local_c = *(int *)PTR___stack_chk_guard_000333f4;\n  if ((param_1[0xc] & 0x102U) == 0) {\n    iVar5 = param_2[1];\n    if ((iVar5 != 0) && (-1 < *(int *)(iVar5 + 0x30))) {\n      piVar16 = (int *)param_1[0xe];\n      pcVar21 = (code *)PTR_abort_000332e8;\n      if (piVar16[4] == 0 && piVar16[5] == 0) goto LAB_0001c120;\n      if ((*piVar16 == param_2[0x16]) && (piVar16[1] == param_2[0x17])) {\n        piVar1 = param_2 + 0x12;\n        param_2 = (undefined4 *)piVar16[2];\n        if ((param_2 == (undefined4 *)0x0) &&\n           (param_2 = (undefined4 *)piVar16[3], param_2 == (undefined4 *)*piVar1)) {\n          piVar16[3] = *(int *)(iVar5 + 0x48);\n          piVar16[2] = 0;\n          piVar16 = (int *)param_1[0xe];\n          param_2 = *(undefined4 **)(iVar5 + 0x5c);\n          param_1 = *(int **)(iVar5 + 0x58);\n          piVar16[1] = (int)param_2;\n          *piVar16 = (int)param_1;\n        }\n      }\n    }\nLAB_0001c0f8:\n    if (local_c == *(int *)PTR___stack_chk_guard_000333f4) {\n      return *(int *)PTR___stack_chk_guard_000333f4;\n    }\n  }\n  else {\n    local_24 = param_2[0x12];\n    local_28 = 0;\n    local_1c = param_2[0x17];\n    local_20 = param_2[0x16];\n    param_2 = &local_28;\n    param_1 = (int *)hash_delete(param_1[0xe]);\n    if (param_1 != (int *)0x0) {\n      (*(code *)PTR_free_000333fc)();\n      goto LAB_0001c0f8;\n    }\n    pcVar21 = (code *)PTR_abort_000332e8;\n    (*(code *)PTR_abort_000332e8)();\nLAB_0001c120:\n    (*pcVar21)();\n  }\n  puVar22 = PTR___stack_chk_fail_000333dc;\n  (*(code *)PTR___stack_chk_fail_000333dc)();\n  iVar18 = *param_1;\n  iVar5 = *(int *)(iVar18 + 0xc);\n  if (iVar5 != 0) {\n    iStack_7c = (**(code **)(puVar22 + 0x172d0))();\n    if (iStack_7c < 0) {\n      (**(code **)(puVar22 + 0x17194))(*(undefined4 *)(iVar18 + 0xc));\n      *(undefined4 *)(iVar18 + 0xc) = 0;\n      if (param_2 != (undefined4 *)0x3) {\n        return 0;\n      }\n      *(undefined2 *)(iVar18 + 0x3c) = 4;\n      puVar10 = (undefined4 *)(**(code **)(puVar22 + 0x17220))();\n      *(undefined4 *)(iVar18 + 0x20) = *puVar10;\n      return 0;\n    }\n    if (param_1[0xb] == 0) {\n      uStack_94 = 100000;\n      bVar2 = true;\n    }\n    else {\n      uStack_94 = 0xffffffff;\n      bVar2 = true;\n    }\n    goto LAB_0001c1b8;\n  }\n  uVar19 = param_1[0xc];\n  if ((uVar19 & 0x204) == 0x200) {\n    iVar17 = param_1[8];\n  }\n  else {\n    iVar17 = -100;\n  }\n  uVar20 = uVar19 & 0x10;\n  if (((uVar20 != 0) && (uVar20 = 0x20000, (uVar19 & 1) != 0)) &&\n     (uVar20 = *(uint *)(iVar18 + 0x30), uVar20 != 0)) {\n    uVar20 = 0x20000;\n  }\n  iStack_7c = openat_safer(iVar17,*(undefined4 *)(iVar18 + 0x18),\n                           (uVar19 & 0x800) << 7 | uVar20 | 0x90880);\n  if (iStack_7c < 0) {\nLAB_0001c3e8:\n    *(undefined4 *)(iVar18 + 0xc) = 0;\n    if (param_2 == (undefined4 *)0x3) {\n      *(undefined2 *)(iVar18 + 0x3c) = 4;\n      puVar10 = (undefined4 *)(**(code **)(puVar22 + 0x17220))();\n      *(undefined4 *)(iVar18 + 0x20) = *puVar10;\n    }\n    return 0;\n  }\n  iVar17 = (**(code **)(puVar22 + 0x171f0))(iStack_7c);\n  if (iVar17 == 0) {\n    puVar10 = (undefined4 *)(**(code **)(puVar22 + 0x17220))();\n    uVar13 = *puVar10;\n    (**(code **)(puVar22 + 0x17198))(iStack_7c);\n    *puVar10 = uVar13;\n    goto LAB_0001c3e8;\n  }\n  *(int *)(iVar18 + 0xc) = iVar17;\n  if (*(short *)(iVar18 + 0x3c) == 0xb) {\n    uVar15 = FUN_0001b18c(param_1,iVar18,0);\n    *(undefined2 *)(iVar18 + 0x3c) = uVar15;\n  }\n  else if ((param_1[0xc] & 0x100U) != 0) {\n    FUN_0001bfec(param_1,iVar18);\n    FUN_0001b18c(param_1,iVar18,0);\n    iVar17 = FUN_0001bad0(param_1,iVar18);\n    if (iVar17 == 0) {\n      puVar10 = (undefined4 *)(**(code **)(puVar22 + 0x17220))();\n      *puVar10 = 0xc;\n      return 0;\n    }\n  }\n  if (param_1[0xb] == 0) {\n    uStack_94 = 100000;\n  }\n  else {\n    uStack_94 = 0xffffffff;\n  }\n  if (param_2 == (undefined4 *)0x2) {\n    bVar2 = false;\n  }\n  else {\n    if ((((param_1[0xc] & 0x38U) == 0x18) && (*(int *)(iVar18 + 100) == 2)) &&\n       (iVar17 = FUN_0001ba08(iVar18,iStack_7c), iVar17 != 0)) {\n      bVar2 = false;\n      if (param_2 != (undefined4 *)0x3) {\n        bVar2 = false;\n        goto LAB_0001c1b8;\n      }\n      uVar19 = param_1[0xc];\n    }\n    else {\n      bVar2 = true;\n      uVar19 = param_1[0xc];\n    }\n    if ((uVar19 & 0x200) != 0) {\n      iStack_7c = rpl_fcntl(iStack_7c,0x406,3);\n    }\n    if ((iStack_7c < 0) || (iVar17 = FUN_0001bd68(param_1,iVar18,iStack_7c,0), iVar17 != 0)) {\n      if ((bVar2) && (param_2 == (undefined4 *)0x3)) {\n        puVar10 = (undefined4 *)(**(code **)(puVar22 + 0x17220))();\n        *(undefined4 *)(iVar18 + 0x20) = *puVar10;\n      }\n      *(ushort *)(iVar18 + 0x3e) = *(ushort *)(iVar18 + 0x3e) | 1;\n      (**(code **)(puVar22 + 0x17194))(*(undefined4 *)(iVar18 + 0xc));\n      *(undefined4 *)(iVar18 + 0xc) = 0;\n      if (((param_1[0xc] & 0x200U) != 0) && (-1 < iStack_7c)) {\n        (**(code **)(puVar22 + 0x17198))(iStack_7c);\n        *(undefined4 *)(iVar18 + 0xc) = 0;\n      }\n      bVar2 = false;\n    }\n    else {\n      bVar2 = true;\n    }\n  }\nLAB_0001c1b8:\n  iVar17 = *(int *)(iVar18 + 0x28) + -1;\n  if (*(char *)(*(int *)(iVar18 + 0x1c) + iVar17) != '/') {\n    iVar17 = *(int *)(iVar18 + 0x28);\n  }\n  if ((param_1[0xc] & 4U) == 0) {\n    puStack_90 = (undefined1 *)0x0;\n  }\n  else {\n    puStack_90 = (undefined1 *)(param_1[6] + iVar17) + 1;\n    *(undefined1 *)(param_1[6] + iVar17) = 0x2f;\n  }\n  uVar20 = iVar17 + 1;\n  uVar23 = param_1[9] - uVar20;\n  iVar6 = *(int *)(iVar18 + 0x30);\n  bVar4 = false;\n  iStack_8c = 0;\n  iStack_a4 = 0;\n  uVar19 = 0;\n  iStack_a0 = 0;\n  iVar7 = *(int *)(puVar22 + 0x16fd4);\n  iVar8 = *(int *)(puVar22 + 0x16fd4);\n  iVar9 = *(int *)(puVar22 + 0x16fd4);\nLAB_0001c96c:\n  do {\n    do {\n      if (*(int *)(iVar18 + 0xc) == 0) goto LAB_0001c66c;\n      piVar16 = (int *)(**(code **)(puVar22 + 0x17220))();\n      *piVar16 = 0;\n      puVar10 = (undefined4 *)(**(code **)(puVar22 + 0x171d8))(*(undefined4 *)(iVar18 + 0xc));\n      if (puVar10 == (undefined4 *)0x0) {\n        if (*piVar16 != 0) {\n          *(int *)(iVar18 + 0x20) = *piVar16;\n          uVar15 = 7;\n          if ((iVar5 == 0) && (uVar19 == 0)) {\n            uVar15 = 4;\n          }\n          *(undefined2 *)(iVar18 + 0x3c) = uVar15;\n        }\n        if (*(int *)(iVar18 + 0xc) != 0) {\n          (**(code **)(puVar22 + 0x17194))();\n          *(undefined4 *)(iVar18 + 0xc) = 0;\n        }\n        goto LAB_0001c66c;\n      }\n    } while ((((param_1[0xc] & 0x20U) == 0) && (*(char *)((int)puVar10 + 0x13) == '.')) &&\n            ((*(char *)(puVar10 + 5) == '\0' || ((puVar10[5] & 0xffff0000) == 0x2e000000))));\n    uVar11 = (**(code **)(puVar22 + 0x17240))((int)puVar10 + 0x13);\n    iVar12 = (*(code *)(iVar7 + -0x4b14))(param_1,(int)puVar10 + 0x13,uVar11);\n    if (iVar12 == 0) {\nLAB_0001c794:\n      iVar5 = *piVar16;\n      (**(code **)(puVar22 + 0x172c8))(iVar12);\n      FUN_0001b6fc(iStack_a0);\n      (**(code **)(puVar22 + 0x17194))(*(undefined4 *)(iVar18 + 0xc));\n      *(undefined4 *)(iVar18 + 0xc) = 0;\n      *(undefined2 *)(iVar18 + 0x3c) = 7;\n      param_1[0xc] = param_1[0xc] | 0x4000;\n      *piVar16 = iVar5;\n      return 0;\n    }\n    if (uVar23 <= uVar11) {\n      iVar24 = param_1[6];\n      iVar14 = FUN_0001b0cc(param_1,iVar17 + 2 + uVar11);\n      if (iVar14 == 0) goto LAB_0001c794;\n      if ((param_1[6] != iVar24) && (iStack_8c = iVar14, (param_1[0xc] & 4U) != 0)) {\n        puStack_90 = (undefined1 *)(param_1[6] + uVar20);\n      }\n      uVar23 = param_1[9] - uVar20;\n    }\n    if (uVar20 + uVar11 < uVar20) {\n      (**(code **)(puVar22 + 0x172c8))(iVar12);\n      FUN_0001b6fc(iStack_a0);\n      (**(code **)(puVar22 + 0x17194))(*(undefined4 *)(iVar18 + 0xc));\n      *(undefined4 *)(iVar18 + 0xc) = 0;\n      *(undefined2 *)(iVar18 + 0x3c) = 7;\n      param_1[0xc] = param_1[0xc] | 0x4000;\n      *piVar16 = 0x4e;\n      return 0;\n    }\n    *(int *)(iVar12 + 0x30) = iVar6 + 1;\n    *(int *)(iVar12 + 4) = *param_1;\n    *(uint *)(iVar12 + 0x28) = uVar20 + uVar11;\n    uVar13 = *puVar10;\n    *(undefined4 *)(iVar12 + 0x5c) = puVar10[1];\n    *(undefined4 *)(iVar12 + 0x58) = uVar13;\n    if ((param_1[0xc] & 4U) == 0) {\n      *(int *)(iVar12 + 0x18) = iVar12 + 0xe8;\n      iVar14 = param_1[0xb];\n    }\n    else {\n      *(undefined4 *)(iVar12 + 0x18) = *(undefined4 *)(iVar12 + 0x1c);\n      (**(code **)(puVar22 + 0x172cc))(puStack_90,iVar12 + 0xe8,*(int *)(iVar12 + 0x34) + 1);\n      iVar14 = param_1[0xb];\n    }\n    if ((iVar14 == 0) || ((param_1[0xc] & 0x400U) != 0)) {\n      if (((param_1[0xc] & 0x18U) == 0x18) && ((*(byte *)((int)puVar10 + 0x12) & 0xfb) != 0)) {\n        *(undefined2 *)(iVar12 + 0x3c) = 0xb;\n        bVar3 = true;\n        if (*(byte *)((int)puVar10 + 0x12) < 0xd) {\n                    \n                    \n          iVar5 = (*(code *)(puVar22 +\n                            *(int *)(iVar9 + 0x2d30 + (uint)*(byte *)((int)puVar10 + 0x12) * 4) +\n                            0x1ef9c))();\n          return iVar5;\n        }\n      }\n      else {\n        *(undefined2 *)(iVar12 + 0x3c) = 0xb;\n        bVar3 = false;\n        if (*(byte *)((int)puVar10 + 0x12) < 0xd) {\n                    \n                    \n          iVar5 = (*(code *)(puVar22 +\n                            *(int *)(*(int *)(puVar22 + 0x16fd4) + 0x2d64 +\n                                    (uint)*(byte *)((int)puVar10 + 0x12) * 4) + 0x1ef9c))();\n          return iVar5;\n        }\n      }\n      *(undefined4 *)(iVar12 + 0x60) = 0;\n      if (bVar3) {\n        uVar13 = 1;\n      }\n      else {\n        uVar13 = 2;\n      }\n      *(undefined4 *)(iVar12 + 0x84) = uVar13;\n      *(undefined4 *)(iVar12 + 0x80) = 0;\n    }\n    else {\n      uVar15 = FUN_0001b18c(param_1,iVar12,0);\n      *(undefined2 *)(iVar12 + 0x3c) = uVar15;\n    }\n    *(undefined4 *)(iVar12 + 8) = 0;\n    iVar14 = iVar12;\n    if (iStack_a0 != 0) {\n      *(int *)(iStack_a4 + 8) = iVar12;\n      iVar14 = iStack_a0;\n    }\n    iStack_a0 = iVar14;\n    iStack_a4 = iVar12;\n    if (uVar19 == 10000) {\n      if (param_1[0xb] != 0) {\nLAB_0001cb74:\n        uVar19 = 0x2711;\n        goto LAB_0001c96c;\n      }\n      iVar12 = (*(code *)(iVar8 + -0x47a8))(iVar18,iStack_7c);\n      if (iVar12 == 0x6969) {\n        bVar4 = false;\n      }\n      else if (iVar12 == 0x1021994) {\n        bVar4 = false;\n      }\n      else {\n        if (iVar12 != -0xacb2be) {\n          bVar4 = true;\n          goto LAB_0001cb74;\n        }\n        bVar4 = false;\n      }\n    }\n    uVar19 = uVar19 + 1;\n  } while (uVar19 < uStack_94);\nLAB_0001c66c:\n  if (iStack_8c != 0) {\n    iVar6 = param_1[6];\n    for (iVar17 = param_1[1]; iVar7 = iStack_a0, iVar17 != 0; iVar17 = *(int *)(iVar17 + 8)) {\n      if (*(int *)(iVar17 + 0x18) != iVar17 + 0xe8) {\n        *(int *)(iVar17 + 0x18) = iVar6 + (*(int *)(iVar17 + 0x18) - *(int *)(iVar17 + 0x1c));\n      }\n      *(int *)(iVar17 + 0x1c) = iVar6;\n    }\n    while (iVar17 = iVar7, -1 < *(int *)(iVar17 + 0x30)) {\n      if (*(int *)(iVar17 + 0x18) != iVar17 + 0xe8) {\n        *(int *)(iVar17 + 0x18) = iVar6 + (*(int *)(iVar17 + 0x18) - *(int *)(iVar17 + 0x1c));\n      }\n      *(int *)(iVar17 + 0x1c) = iVar6;\n      iVar7 = *(int *)(iVar17 + 8);\n      if (*(int *)(iVar17 + 8) == 0) {\n        iVar7 = *(int *)(iVar17 + 4);\n      }\n    }\n  }\n  if ((param_1[0xc] & 4U) != 0) {\n    if ((param_1[9] == uVar20) || (uVar19 == 0)) {\n      puStack_90 = puStack_90 + -1;\n    }\n    *puStack_90 = 0;\n  }\n  if ((iVar5 == 0) && (bVar2)) {\n    if ((param_2 != (undefined4 *)0x1) && (uVar19 != 0)) goto LAB_0001c6c0;\n    if (*(int *)(iVar18 + 0x30) == 0) {\n      iVar5 = FUN_0001bcbc(param_1);\n    }\n    else {\n      iVar5 = FUN_0001bd68(param_1,*(undefined4 *)(iVar18 + 4),0xffffffff,\n                           *(int *)(puVar22 + 0x16fd4) + 0x2d20);\n    }\n    if (iVar5 != 0) {\n      *(undefined2 *)(iVar18 + 0x3c) = 7;\n      param_1[0xc] = param_1[0xc] | 0x4000;\n      FUN_0001b6fc(iStack_a0);\n      return 0;\n    }\n  }\n  if (uVar19 == 0) {\n    if (((param_2 == (undefined4 *)0x3) && (*(short *)(iVar18 + 0x3c) != 4)) &&\n       (*(short *)(iVar18 + 0x3c) != 7)) {\n      *(undefined2 *)(iVar18 + 0x3c) = 6;\n    }\n    FUN_0001b6fc(iStack_a0);\n    return 0;\n  }\nLAB_0001c6c0:\n  if (bVar4) {\n    param_1[0xb] = *(int *)(puVar22 + 0x16fd4) + -0x4fa0;\n    iVar5 = FUN_0001b3ac(param_1,iStack_a0,uVar19);\n    param_1[0xb] = 0;\n    return iVar5;\n  }\n  if (param_1[0xb] == 0) {\n    return iStack_a0;\n  }\n  if (uVar19 < 2) {\n    return iStack_a0;\n  }\n  iVar5 = FUN_0001b3ac(param_1,iStack_a0,uVar19);\n  return iVar5;\n}" primitive_type (function_declarator "FUN_0001bfec(int *param_1,undefined4 *param_2)" identifier (parameter_list "(int *param_1,undefined4 *param_2)" ( (parameter_declaration "int *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "undefined4 *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) ))) (compound_statement "{\n  int *piVar1;\n  bool bVar2;\n  bool bVar3;\n  bool bVar4;\n  int iVar5;\n  int iVar6;\n  int iVar7;\n  int iVar8;\n  int iVar9;\n  undefined4 *puVar10;\n  uint uVar11;\n  int iVar12;\n  undefined4 uVar13;\n  int iVar14;\n  undefined2 uVar15;\n  int *piVar16;\n  int iVar17;\n  int iVar18;\n  uint uVar19;\n  uint uVar20;\n  code *pcVar21;\n  undefined *puVar22;\n  uint uVar23;\n  int iVar24;\n  int iStack_a4;\n  int iStack_a0;\n  uint uStack_94;\n  undefined1 *puStack_90;\n  int iStack_8c;\n  int iStack_7c;\n  undefined4 local_28;\n  undefined4 local_24;\n  undefined4 local_20;\n  undefined4 local_1c;\n  int local_c;\n  \n  local_c = *(int *)PTR___stack_chk_guard_000333f4;\n  if ((param_1[0xc] & 0x102U) == 0) {\n    iVar5 = param_2[1];\n    if ((iVar5 != 0) && (-1 < *(int *)(iVar5 + 0x30))) {\n      piVar16 = (int *)param_1[0xe];\n      pcVar21 = (code *)PTR_abort_000332e8;\n      if (piVar16[4] == 0 && piVar16[5] == 0) goto LAB_0001c120;\n      if ((*piVar16 == param_2[0x16]) && (piVar16[1] == param_2[0x17])) {\n        piVar1 = param_2 + 0x12;\n        param_2 = (undefined4 *)piVar16[2];\n        if ((param_2 == (undefined4 *)0x0) &&\n           (param_2 = (undefined4 *)piVar16[3], param_2 == (undefined4 *)*piVar1)) {\n          piVar16[3] = *(int *)(iVar5 + 0x48);\n          piVar16[2] = 0;\n          piVar16 = (int *)param_1[0xe];\n          param_2 = *(undefined4 **)(iVar5 + 0x5c);\n          param_1 = *(int **)(iVar5 + 0x58);\n          piVar16[1] = (int)param_2;\n          *piVar16 = (int)param_1;\n        }\n      }\n    }\nLAB_0001c0f8:\n    if (local_c == *(int *)PTR___stack_chk_guard_000333f4) {\n      return *(int *)PTR___stack_chk_guard_000333f4;\n    }\n  }\n  else {\n    local_24 = param_2[0x12];\n    local_28 = 0;\n    local_1c = param_2[0x17];\n    local_20 = param_2[0x16];\n    param_2 = &local_28;\n    param_1 = (int *)hash_delete(param_1[0xe]);\n    if (param_1 != (int *)0x0) {\n      (*(code *)PTR_free_000333fc)();\n      goto LAB_0001c0f8;\n    }\n    pcVar21 = (code *)PTR_abort_000332e8;\n    (*(code *)PTR_abort_000332e8)();\nLAB_0001c120:\n    (*pcVar21)();\n  }\n  puVar22 = PTR___stack_chk_fail_000333dc;\n  (*(code *)PTR___stack_chk_fail_000333dc)();\n  iVar18 = *param_1;\n  iVar5 = *(int *)(iVar18 + 0xc);\n  if (iVar5 != 0) {\n    iStack_7c = (**(code **)(puVar22 + 0x172d0))();\n    if (iStack_7c < 0) {\n      (**(code **)(puVar22 + 0x17194))(*(undefined4 *)(iVar18 + 0xc));\n      *(undefined4 *)(iVar18 + 0xc) = 0;\n      if (param_2 != (undefined4 *)0x3) {\n        return 0;\n      }\n      *(undefined2 *)(iVar18 + 0x3c) = 4;\n      puVar10 = (undefined4 *)(**(code **)(puVar22 + 0x17220))();\n      *(undefined4 *)(iVar18 + 0x20) = *puVar10;\n      return 0;\n    }\n    if (param_1[0xb] == 0) {\n      uStack_94 = 100000;\n      bVar2 = true;\n    }\n    else {\n      uStack_94 = 0xffffffff;\n      bVar2 = true;\n    }\n    goto LAB_0001c1b8;\n  }\n  uVar19 = param_1[0xc];\n  if ((uVar19 & 0x204) == 0x200) {\n    iVar17 = param_1[8];\n  }\n  else {\n    iVar17 = -100;\n  }\n  uVar20 = uVar19 & 0x10;\n  if (((uVar20 != 0) && (uVar20 = 0x20000, (uVar19 & 1) != 0)) &&\n     (uVar20 = *(uint *)(iVar18 + 0x30), uVar20 != 0)) {\n    uVar20 = 0x20000;\n  }\n  iStack_7c = openat_safer(iVar17,*(undefined4 *)(iVar18 + 0x18),\n                           (uVar19 & 0x800) << 7 | uVar20 | 0x90880);\n  if (iStack_7c < 0) {\nLAB_0001c3e8:\n    *(undefined4 *)(iVar18 + 0xc) = 0;\n    if (param_2 == (undefined4 *)0x3) {\n      *(undefined2 *)(iVar18 + 0x3c) = 4;\n      puVar10 = (undefined4 *)(**(code **)(puVar22 + 0x17220))();\n      *(undefined4 *)(iVar18 + 0x20) = *puVar10;\n    }\n    return 0;\n  }\n  iVar17 = (**(code **)(puVar22 + 0x171f0))(iStack_7c);\n  if (iVar17 == 0) {\n    puVar10 = (undefined4 *)(**(code **)(puVar22 + 0x17220))();\n    uVar13 = *puVar10;\n    (**(code **)(puVar22 + 0x17198))(iStack_7c);\n    *puVar10 = uVar13;\n    goto LAB_0001c3e8;\n  }\n  *(int *)(iVar18 + 0xc) = iVar17;\n  if (*(short *)(iVar18 + 0x3c) == 0xb) {\n    uVar15 = FUN_0001b18c(param_1,iVar18,0);\n    *(undefined2 *)(iVar18 + 0x3c) = uVar15;\n  }\n  else if ((param_1[0xc] & 0x100U) != 0) {\n    FUN_0001bfec(param_1,iVar18);\n    FUN_0001b18c(param_1,iVar18,0);\n    iVar17 = FUN_0001bad0(param_1,iVar18);\n    if (iVar17 == 0) {\n      puVar10 = (undefined4 *)(**(code **)(puVar22 + 0x17220))();\n      *puVar10 = 0xc;\n      return 0;\n    }\n  }\n  if (param_1[0xb] == 0) {\n    uStack_94 = 100000;\n  }\n  else {\n    uStack_94 = 0xffffffff;\n  }\n  if (param_2 == (undefined4 *)0x2) {\n    bVar2 = false;\n  }\n  else {\n    if ((((param_1[0xc] & 0x38U) == 0x18) && (*(int *)(iVar18 + 100) == 2)) &&\n       (iVar17 = FUN_0001ba08(iVar18,iStack_7c), iVar17 != 0)) {\n      bVar2 = false;\n      if (param_2 != (undefined4 *)0x3) {\n        bVar2 = false;\n        goto LAB_0001c1b8;\n      }\n      uVar19 = param_1[0xc];\n    }\n    else {\n      bVar2 = true;\n      uVar19 = param_1[0xc];\n    }\n    if ((uVar19 & 0x200) != 0) {\n      iStack_7c = rpl_fcntl(iStack_7c,0x406,3);\n    }\n    if ((iStack_7c < 0) || (iVar17 = FUN_0001bd68(param_1,iVar18,iStack_7c,0), iVar17 != 0)) {\n      if ((bVar2) && (param_2 == (undefined4 *)0x3)) {\n        puVar10 = (undefined4 *)(**(code **)(puVar22 + 0x17220))();\n        *(undefined4 *)(iVar18 + 0x20) = *puVar10;\n      }\n      *(ushort *)(iVar18 + 0x3e) = *(ushort *)(iVar18 + 0x3e) | 1;\n      (**(code **)(puVar22 + 0x17194))(*(undefined4 *)(iVar18 + 0xc));\n      *(undefined4 *)(iVar18 + 0xc) = 0;\n      if (((param_1[0xc] & 0x200U) != 0) && (-1 < iStack_7c)) {\n        (**(code **)(puVar22 + 0x17198))(iStack_7c);\n        *(undefined4 *)(iVar18 + 0xc) = 0;\n      }\n      bVar2 = false;\n    }\n    else {\n      bVar2 = true;\n    }\n  }\nLAB_0001c1b8:\n  iVar17 = *(int *)(iVar18 + 0x28) + -1;\n  if (*(char *)(*(int *)(iVar18 + 0x1c) + iVar17) != '/') {\n    iVar17 = *(int *)(iVar18 + 0x28);\n  }\n  if ((param_1[0xc] & 4U) == 0) {\n    puStack_90 = (undefined1 *)0x0;\n  }\n  else {\n    puStack_90 = (undefined1 *)(param_1[6] + iVar17) + 1;\n    *(undefined1 *)(param_1[6] + iVar17) = 0x2f;\n  }\n  uVar20 = iVar17 + 1;\n  uVar23 = param_1[9] - uVar20;\n  iVar6 = *(int *)(iVar18 + 0x30);\n  bVar4 = false;\n  iStack_8c = 0;\n  iStack_a4 = 0;\n  uVar19 = 0;\n  iStack_a0 = 0;\n  iVar7 = *(int *)(puVar22 + 0x16fd4);\n  iVar8 = *(int *)(puVar22 + 0x16fd4);\n  iVar9 = *(int *)(puVar22 + 0x16fd4);\nLAB_0001c96c:\n  do {\n    do {\n      if (*(int *)(iVar18 + 0xc) == 0) goto LAB_0001c66c;\n      piVar16 = (int *)(**(code **)(puVar22 + 0x17220))();\n      *piVar16 = 0;\n      puVar10 = (undefined4 *)(**(code **)(puVar22 + 0x171d8))(*(undefined4 *)(iVar18 + 0xc));\n      if (puVar10 == (undefined4 *)0x0) {\n        if (*piVar16 != 0) {\n          *(int *)(iVar18 + 0x20) = *piVar16;\n          uVar15 = 7;\n          if ((iVar5 == 0) && (uVar19 == 0)) {\n            uVar15 = 4;\n          }\n          *(undefined2 *)(iVar18 + 0x3c) = uVar15;\n        }\n        if (*(int *)(iVar18 + 0xc) != 0) {\n          (**(code **)(puVar22 + 0x17194))();\n          *(undefined4 *)(iVar18 + 0xc) = 0;\n        }\n        goto LAB_0001c66c;\n      }\n    } while ((((param_1[0xc] & 0x20U) == 0) && (*(char *)((int)puVar10 + 0x13) == '.')) &&\n            ((*(char *)(puVar10 + 5) == '\0' || ((puVar10[5] & 0xffff0000) == 0x2e000000))));\n    uVar11 = (**(code **)(puVar22 + 0x17240))((int)puVar10 + 0x13);\n    iVar12 = (*(code *)(iVar7 + -0x4b14))(param_1,(int)puVar10 + 0x13,uVar11);\n    if (iVar12 == 0) {\nLAB_0001c794:\n      iVar5 = *piVar16;\n      (**(code **)(puVar22 + 0x172c8))(iVar12);\n      FUN_0001b6fc(iStack_a0);\n      (**(code **)(puVar22 + 0x17194))(*(undefined4 *)(iVar18 + 0xc));\n      *(undefined4 *)(iVar18 + 0xc) = 0;\n      *(undefined2 *)(iVar18 + 0x3c) = 7;\n      param_1[0xc] = param_1[0xc] | 0x4000;\n      *piVar16 = iVar5;\n      return 0;\n    }\n    if (uVar23 <= uVar11) {\n      iVar24 = param_1[6];\n      iVar14 = FUN_0001b0cc(param_1,iVar17 + 2 + uVar11);\n      if (iVar14 == 0) goto LAB_0001c794;\n      if ((param_1[6] != iVar24) && (iStack_8c = iVar14, (param_1[0xc] & 4U) != 0)) {\n        puStack_90 = (undefined1 *)(param_1[6] + uVar20);\n      }\n      uVar23 = param_1[9] - uVar20;\n    }\n    if (uVar20 + uVar11 < uVar20) {\n      (**(code **)(puVar22 + 0x172c8))(iVar12);\n      FUN_0001b6fc(iStack_a0);\n      (**(code **)(puVar22 + 0x17194))(*(undefined4 *)(iVar18 + 0xc));\n      *(undefined4 *)(iVar18 + 0xc) = 0;\n      *(undefined2 *)(iVar18 + 0x3c) = 7;\n      param_1[0xc] = param_1[0xc] | 0x4000;\n      *piVar16 = 0x4e;\n      return 0;\n    }\n    *(int *)(iVar12 + 0x30) = iVar6 + 1;\n    *(int *)(iVar12 + 4) = *param_1;\n    *(uint *)(iVar12 + 0x28) = uVar20 + uVar11;\n    uVar13 = *puVar10;\n    *(undefined4 *)(iVar12 + 0x5c) = puVar10[1];\n    *(undefined4 *)(iVar12 + 0x58) = uVar13;\n    if ((param_1[0xc] & 4U) == 0) {\n      *(int *)(iVar12 + 0x18) = iVar12 + 0xe8;\n      iVar14 = param_1[0xb];\n    }\n    else {\n      *(undefined4 *)(iVar12 + 0x18) = *(undefined4 *)(iVar12 + 0x1c);\n      (**(code **)(puVar22 + 0x172cc))(puStack_90,iVar12 + 0xe8,*(int *)(iVar12 + 0x34) + 1);\n      iVar14 = param_1[0xb];\n    }\n    if ((iVar14 == 0) || ((param_1[0xc] & 0x400U) != 0)) {\n      if (((param_1[0xc] & 0x18U) == 0x18) && ((*(byte *)((int)puVar10 + 0x12) & 0xfb) != 0)) {\n        *(undefined2 *)(iVar12 + 0x3c) = 0xb;\n        bVar3 = true;\n        if (*(byte *)((int)puVar10 + 0x12) < 0xd) {\n                    \n                    \n          iVar5 = (*(code *)(puVar22 +\n                            *(int *)(iVar9 + 0x2d30 + (uint)*(byte *)((int)puVar10 + 0x12) * 4) +\n                            0x1ef9c))();\n          return iVar5;\n        }\n      }\n      else {\n        *(undefined2 *)(iVar12 + 0x3c) = 0xb;\n        bVar3 = false;\n        if (*(byte *)((int)puVar10 + 0x12) < 0xd) {\n                    \n                    \n          iVar5 = (*(code *)(puVar22 +\n                            *(int *)(*(int *)(puVar22 + 0x16fd4) + 0x2d64 +\n                                    (uint)*(byte *)((int)puVar10 + 0x12) * 4) + 0x1ef9c))();\n          return iVar5;\n        }\n      }\n      *(undefined4 *)(iVar12 + 0x60) = 0;\n      if (bVar3) {\n        uVar13 = 1;\n      }\n      else {\n        uVar13 = 2;\n      }\n      *(undefined4 *)(iVar12 + 0x84) = uVar13;\n      *(undefined4 *)(iVar12 + 0x80) = 0;\n    }\n    else {\n      uVar15 = FUN_0001b18c(param_1,iVar12,0);\n      *(undefined2 *)(iVar12 + 0x3c) = uVar15;\n    }\n    *(undefined4 *)(iVar12 + 8) = 0;\n    iVar14 = iVar12;\n    if (iStack_a0 != 0) {\n      *(int *)(iStack_a4 + 8) = iVar12;\n      iVar14 = iStack_a0;\n    }\n    iStack_a0 = iVar14;\n    iStack_a4 = iVar12;\n    if (uVar19 == 10000) {\n      if (param_1[0xb] != 0) {\nLAB_0001cb74:\n        uVar19 = 0x2711;\n        goto LAB_0001c96c;\n      }\n      iVar12 = (*(code *)(iVar8 + -0x47a8))(iVar18,iStack_7c);\n      if (iVar12 == 0x6969) {\n        bVar4 = false;\n      }\n      else if (iVar12 == 0x1021994) {\n        bVar4 = false;\n      }\n      else {\n        if (iVar12 != -0xacb2be) {\n          bVar4 = true;\n          goto LAB_0001cb74;\n        }\n        bVar4 = false;\n      }\n    }\n    uVar19 = uVar19 + 1;\n  } while (uVar19 < uStack_94);\nLAB_0001c66c:\n  if (iStack_8c != 0) {\n    iVar6 = param_1[6];\n    for (iVar17 = param_1[1]; iVar7 = iStack_a0, iVar17 != 0; iVar17 = *(int *)(iVar17 + 8)) {\n      if (*(int *)(iVar17 + 0x18) != iVar17 + 0xe8) {\n        *(int *)(iVar17 + 0x18) = iVar6 + (*(int *)(iVar17 + 0x18) - *(int *)(iVar17 + 0x1c));\n      }\n      *(int *)(iVar17 + 0x1c) = iVar6;\n    }\n    while (iVar17 = iVar7, -1 < *(int *)(iVar17 + 0x30)) {\n      if (*(int *)(iVar17 + 0x18) != iVar17 + 0xe8) {\n        *(int *)(iVar17 + 0x18) = iVar6 + (*(int *)(iVar17 + 0x18) - *(int *)(iVar17 + 0x1c));\n      }\n      *(int *)(iVar17 + 0x1c) = iVar6;\n      iVar7 = *(int *)(iVar17 + 8);\n      if (*(int *)(iVar17 + 8) == 0) {\n        iVar7 = *(int *)(iVar17 + 4);\n      }\n    }\n  }\n  if ((param_1[0xc] & 4U) != 0) {\n    if ((param_1[9] == uVar20) || (uVar19 == 0)) {\n      puStack_90 = puStack_90 + -1;\n    }\n    *puStack_90 = 0;\n  }\n  if ((iVar5 == 0) && (bVar2)) {\n    if ((param_2 != (undefined4 *)0x1) && (uVar19 != 0)) goto LAB_0001c6c0;\n    if (*(int *)(iVar18 + 0x30) == 0) {\n      iVar5 = FUN_0001bcbc(param_1);\n    }\n    else {\n      iVar5 = FUN_0001bd68(param_1,*(undefined4 *)(iVar18 + 4),0xffffffff,\n                           *(int *)(puVar22 + 0x16fd4) + 0x2d20);\n    }\n    if (iVar5 != 0) {\n      *(undefined2 *)(iVar18 + 0x3c) = 7;\n      param_1[0xc] = param_1[0xc] | 0x4000;\n      FUN_0001b6fc(iStack_a0);\n      return 0;\n    }\n  }\n  if (uVar19 == 0) {\n    if (((param_2 == (undefined4 *)0x3) && (*(short *)(iVar18 + 0x3c) != 4)) &&\n       (*(short *)(iVar18 + 0x3c) != 7)) {\n      *(undefined2 *)(iVar18 + 0x3c) = 6;\n    }\n    FUN_0001b6fc(iStack_a0);\n    return 0;\n  }\nLAB_0001c6c0:\n  if (bVar4) {\n    param_1[0xb] = *(int *)(puVar22 + 0x16fd4) + -0x4fa0;\n    iVar5 = FUN_0001b3ac(param_1,iStack_a0,uVar19);\n    param_1[0xb] = 0;\n    return iVar5;\n  }\n  if (param_1[0xb] == 0) {\n    return iStack_a0;\n  }\n  if (uVar19 < 2) {\n    return iStack_a0;\n  }\n  iVar5 = FUN_0001b3ac(param_1,iStack_a0,uVar19);\n  return iVar5;\n}" { (declaration "int *piVar1;" primitive_type (pointer_declarator "*piVar1" * identifier) ;) (declaration "bool bVar2;" primitive_type identifier ;) (declaration "bool bVar3;" primitive_type identifier ;) (declaration "bool bVar4;" primitive_type identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "int iVar8;" primitive_type identifier ;) (declaration "int iVar9;" primitive_type identifier ;) (declaration "undefined4 *puVar10;" type_identifier (pointer_declarator "*puVar10" * identifier) ;) (declaration "uint uVar11;" type_identifier identifier ;) (declaration "int iVar12;" primitive_type identifier ;) (declaration "undefined4 uVar13;" type_identifier identifier ;) (declaration "int iVar14;" primitive_type identifier ;) (declaration "undefined2 uVar15;" type_identifier identifier ;) (declaration "int *piVar16;" primitive_type (pointer_declarator "*piVar16" * identifier) ;) (declaration "int iVar17;" primitive_type identifier ;) (declaration "int iVar18;" primitive_type identifier ;) (declaration "uint uVar19;" type_identifier identifier ;) (declaration "uint uVar20;" type_identifier identifier ;) (declaration "code *pcVar21;" type_identifier (pointer_declarator "*pcVar21" * identifier) ;) (declaration "undefined *puVar22;" type_identifier (pointer_declarator "*puVar22" * identifier) ;) (declaration "uint uVar23;" type_identifier identifier ;) (declaration "int iVar24;" primitive_type identifier ;) (declaration "int iStack_a4;" primitive_type identifier ;) (declaration "int iStack_a0;" primitive_type identifier ;) (declaration "uint uStack_94;" type_identifier identifier ;) (declaration "undefined1 *puStack_90;" type_identifier (pointer_declarator "*puStack_90" * identifier) ;) (declaration "int iStack_8c;" primitive_type identifier ;) (declaration "int iStack_7c;" primitive_type identifier ;) (declaration "undefined4 local_28;" type_identifier identifier ;) (declaration "undefined4 local_24;" type_identifier identifier ;) (declaration "undefined4 local_20;" type_identifier identifier ;) (declaration "undefined4 local_1c;" type_identifier identifier ;) (declaration "int local_c;" primitive_type identifier ;) (expression_statement "local_c = *(int *)PTR___stack_chk_guard_000333f4;" (assignment_expression "local_c = *(int *)PTR___stack_chk_guard_000333f4" identifier = (pointer_expression "*(int *)PTR___stack_chk_guard_000333f4" * (cast_expression "(int *)PTR___stack_chk_guard_000333f4" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (if_statement "if ((param_1[0xc] & 0x102U) == 0) {\n    iVar5 = param_2[1];\n    if ((iVar5 != 0) && (-1 < *(int *)(iVar5 + 0x30))) {\n      piVar16 = (int *)param_1[0xe];\n      pcVar21 = (code *)PTR_abort_000332e8;\n      if (piVar16[4] == 0 && piVar16[5] == 0) goto LAB_0001c120;\n      if ((*piVar16 == param_2[0x16]) && (piVar16[1] == param_2[0x17])) {\n        piVar1 = param_2 + 0x12;\n        param_2 = (undefined4 *)piVar16[2];\n        if ((param_2 == (undefined4 *)0x0) &&\n           (param_2 = (undefined4 *)piVar16[3], param_2 == (undefined4 *)*piVar1)) {\n          piVar16[3] = *(int *)(iVar5 + 0x48);\n          piVar16[2] = 0;\n          piVar16 = (int *)param_1[0xe];\n          param_2 = *(undefined4 **)(iVar5 + 0x5c);\n          param_1 = *(int **)(iVar5 + 0x58);\n          piVar16[1] = (int)param_2;\n          *piVar16 = (int)param_1;\n        }\n      }\n    }\nLAB_0001c0f8:\n    if (local_c == *(int *)PTR___stack_chk_guard_000333f4) {\n      return *(int *)PTR___stack_chk_guard_000333f4;\n    }\n  }\n  else {\n    local_24 = param_2[0x12];\n    local_28 = 0;\n    local_1c = param_2[0x17];\n    local_20 = param_2[0x16];\n    param_2 = &local_28;\n    param_1 = (int *)hash_delete(param_1[0xe]);\n    if (param_1 != (int *)0x0) {\n      (*(code *)PTR_free_000333fc)();\n      goto LAB_0001c0f8;\n    }\n    pcVar21 = (code *)PTR_abort_000332e8;\n    (*(code *)PTR_abort_000332e8)();\nLAB_0001c120:\n    (*pcVar21)();\n  }" if (parenthesized_expression "((param_1[0xc] & 0x102U) == 0)" ( (binary_expression "(param_1[0xc] & 0x102U) == 0" (parenthesized_expression "(param_1[0xc] & 0x102U)" ( (binary_expression "param_1[0xc] & 0x102U" (subscript_expression "param_1[0xc]" identifier [ number_literal ]) & number_literal) )) == number_literal) )) (compound_statement "{\n    iVar5 = param_2[1];\n    if ((iVar5 != 0) && (-1 < *(int *)(iVar5 + 0x30))) {\n      piVar16 = (int *)param_1[0xe];\n      pcVar21 = (code *)PTR_abort_000332e8;\n      if (piVar16[4] == 0 && piVar16[5] == 0) goto LAB_0001c120;\n      if ((*piVar16 == param_2[0x16]) && (piVar16[1] == param_2[0x17])) {\n        piVar1 = param_2 + 0x12;\n        param_2 = (undefined4 *)piVar16[2];\n        if ((param_2 == (undefined4 *)0x0) &&\n           (param_2 = (undefined4 *)piVar16[3], param_2 == (undefined4 *)*piVar1)) {\n          piVar16[3] = *(int *)(iVar5 + 0x48);\n          piVar16[2] = 0;\n          piVar16 = (int *)param_1[0xe];\n          param_2 = *(undefined4 **)(iVar5 + 0x5c);\n          param_1 = *(int **)(iVar5 + 0x58);\n          piVar16[1] = (int)param_2;\n          *piVar16 = (int)param_1;\n        }\n      }\n    }\nLAB_0001c0f8:\n    if (local_c == *(int *)PTR___stack_chk_guard_000333f4) {\n      return *(int *)PTR___stack_chk_guard_000333f4;\n    }\n  }" { (expression_statement "iVar5 = param_2[1];" (assignment_expression "iVar5 = param_2[1]" identifier = (subscript_expression "param_2[1]" identifier [ number_literal ])) ;) (if_statement "if ((iVar5 != 0) && (-1 < *(int *)(iVar5 + 0x30))) {\n      piVar16 = (int *)param_1[0xe];\n      pcVar21 = (code *)PTR_abort_000332e8;\n      if (piVar16[4] == 0 && piVar16[5] == 0) goto LAB_0001c120;\n      if ((*piVar16 == param_2[0x16]) && (piVar16[1] == param_2[0x17])) {\n        piVar1 = param_2 + 0x12;\n        param_2 = (undefined4 *)piVar16[2];\n        if ((param_2 == (undefined4 *)0x0) &&\n           (param_2 = (undefined4 *)piVar16[3], param_2 == (undefined4 *)*piVar1)) {\n          piVar16[3] = *(int *)(iVar5 + 0x48);\n          piVar16[2] = 0;\n          piVar16 = (int *)param_1[0xe];\n          param_2 = *(undefined4 **)(iVar5 + 0x5c);\n          param_1 = *(int **)(iVar5 + 0x58);\n          piVar16[1] = (int)param_2;\n          *piVar16 = (int)param_1;\n        }\n      }\n    }" if (parenthesized_expression "((iVar5 != 0) && (-1 < *(int *)(iVar5 + 0x30)))" ( (binary_expression "(iVar5 != 0) && (-1 < *(int *)(iVar5 + 0x30))" (parenthesized_expression "(iVar5 != 0)" ( (binary_expression "iVar5 != 0" identifier != number_literal) )) && (parenthesized_expression "(-1 < *(int *)(iVar5 + 0x30))" ( (binary_expression "-1 < *(int *)(iVar5 + 0x30)" number_literal < (pointer_expression "*(int *)(iVar5 + 0x30)" * (cast_expression "(int *)(iVar5 + 0x30)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x30)" ( (binary_expression "iVar5 + 0x30" identifier + number_literal) ))))) ))) )) (compound_statement "{\n      piVar16 = (int *)param_1[0xe];\n      pcVar21 = (code *)PTR_abort_000332e8;\n      if (piVar16[4] == 0 && piVar16[5] == 0) goto LAB_0001c120;\n      if ((*piVar16 == param_2[0x16]) && (piVar16[1] == param_2[0x17])) {\n        piVar1 = param_2 + 0x12;\n        param_2 = (undefined4 *)piVar16[2];\n        if ((param_2 == (undefined4 *)0x0) &&\n           (param_2 = (undefined4 *)piVar16[3], param_2 == (undefined4 *)*piVar1)) {\n          piVar16[3] = *(int *)(iVar5 + 0x48);\n          piVar16[2] = 0;\n          piVar16 = (int *)param_1[0xe];\n          param_2 = *(undefined4 **)(iVar5 + 0x5c);\n          param_1 = *(int **)(iVar5 + 0x58);\n          piVar16[1] = (int)param_2;\n          *piVar16 = (int)param_1;\n        }\n      }\n    }" { (expression_statement "piVar16 = (int *)param_1[0xe];" (assignment_expression "piVar16 = (int *)param_1[0xe]" identifier = (cast_expression "(int *)param_1[0xe]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[0xe]" identifier [ number_literal ]))) ;) (expression_statement "pcVar21 = (code *)PTR_abort_000332e8;" (assignment_expression "pcVar21 = (code *)PTR_abort_000332e8" identifier = (cast_expression "(code *)PTR_abort_000332e8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (if_statement "if (piVar16[4] == 0 && piVar16[5] == 0) goto LAB_0001c120;" if (parenthesized_expression "(piVar16[4] == 0 && piVar16[5] == 0)" ( (binary_expression "piVar16[4] == 0 && piVar16[5] == 0" (binary_expression "piVar16[4] == 0" (subscript_expression "piVar16[4]" identifier [ number_literal ]) == number_literal) && (binary_expression "piVar16[5] == 0" (subscript_expression "piVar16[5]" identifier [ number_literal ]) == number_literal)) )) (goto_statement "goto LAB_0001c120;" goto statement_identifier ;)) (if_statement "if ((*piVar16 == param_2[0x16]) && (piVar16[1] == param_2[0x17])) {\n        piVar1 = param_2 + 0x12;\n        param_2 = (undefined4 *)piVar16[2];\n        if ((param_2 == (undefined4 *)0x0) &&\n           (param_2 = (undefined4 *)piVar16[3], param_2 == (undefined4 *)*piVar1)) {\n          piVar16[3] = *(int *)(iVar5 + 0x48);\n          piVar16[2] = 0;\n          piVar16 = (int *)param_1[0xe];\n          param_2 = *(undefined4 **)(iVar5 + 0x5c);\n          param_1 = *(int **)(iVar5 + 0x58);\n          piVar16[1] = (int)param_2;\n          *piVar16 = (int)param_1;\n        }\n      }" if (parenthesized_expression "((*piVar16 == param_2[0x16]) && (piVar16[1] == param_2[0x17]))" ( (binary_expression "(*piVar16 == param_2[0x16]) && (piVar16[1] == param_2[0x17])" (parenthesized_expression "(*piVar16 == param_2[0x16])" ( (binary_expression "*piVar16 == param_2[0x16]" (pointer_expression "*piVar16" * identifier) == (subscript_expression "param_2[0x16]" identifier [ number_literal ])) )) && (parenthesized_expression "(piVar16[1] == param_2[0x17])" ( (binary_expression "piVar16[1] == param_2[0x17]" (subscript_expression "piVar16[1]" identifier [ number_literal ]) == (subscript_expression "param_2[0x17]" identifier [ number_literal ])) ))) )) (compound_statement "{\n        piVar1 = param_2 + 0x12;\n        param_2 = (undefined4 *)piVar16[2];\n        if ((param_2 == (undefined4 *)0x0) &&\n           (param_2 = (undefined4 *)piVar16[3], param_2 == (undefined4 *)*piVar1)) {\n          piVar16[3] = *(int *)(iVar5 + 0x48);\n          piVar16[2] = 0;\n          piVar16 = (int *)param_1[0xe];\n          param_2 = *(undefined4 **)(iVar5 + 0x5c);\n          param_1 = *(int **)(iVar5 + 0x58);\n          piVar16[1] = (int)param_2;\n          *piVar16 = (int)param_1;\n        }\n      }" { (expression_statement "piVar1 = param_2 + 0x12;" (assignment_expression "piVar1 = param_2 + 0x12" identifier = (binary_expression "param_2 + 0x12" identifier + number_literal)) ;) (expression_statement "param_2 = (undefined4 *)piVar16[2];" (assignment_expression "param_2 = (undefined4 *)piVar16[2]" identifier = (cast_expression "(undefined4 *)piVar16[2]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar16[2]" identifier [ number_literal ]))) ;) (if_statement "if ((param_2 == (undefined4 *)0x0) &&\n           (param_2 = (undefined4 *)piVar16[3], param_2 == (undefined4 *)*piVar1)) {\n          piVar16[3] = *(int *)(iVar5 + 0x48);\n          piVar16[2] = 0;\n          piVar16 = (int *)param_1[0xe];\n          param_2 = *(undefined4 **)(iVar5 + 0x5c);\n          param_1 = *(int **)(iVar5 + 0x58);\n          piVar16[1] = (int)param_2;\n          *piVar16 = (int)param_1;\n        }" if (parenthesized_expression "((param_2 == (undefined4 *)0x0) &&\n           (param_2 = (undefined4 *)piVar16[3], param_2 == (undefined4 *)*piVar1))" ( (binary_expression "(param_2 == (undefined4 *)0x0) &&\n           (param_2 = (undefined4 *)piVar16[3], param_2 == (undefined4 *)*piVar1)" (parenthesized_expression "(param_2 == (undefined4 *)0x0)" ( (binary_expression "param_2 == (undefined4 *)0x0" identifier == (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(param_2 = (undefined4 *)piVar16[3], param_2 == (undefined4 *)*piVar1)" ( (comma_expression "param_2 = (undefined4 *)piVar16[3], param_2 == (undefined4 *)*piVar1" (assignment_expression "param_2 = (undefined4 *)piVar16[3]" identifier = (cast_expression "(undefined4 *)piVar16[3]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar16[3]" identifier [ number_literal ]))) , (binary_expression "param_2 == (undefined4 *)*piVar1" identifier == (cast_expression "(undefined4 *)*piVar1" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar1" * identifier)))) ))) )) (compound_statement "{\n          piVar16[3] = *(int *)(iVar5 + 0x48);\n          piVar16[2] = 0;\n          piVar16 = (int *)param_1[0xe];\n          param_2 = *(undefined4 **)(iVar5 + 0x5c);\n          param_1 = *(int **)(iVar5 + 0x58);\n          piVar16[1] = (int)param_2;\n          *piVar16 = (int)param_1;\n        }" { (expression_statement "piVar16[3] = *(int *)(iVar5 + 0x48);" (assignment_expression "piVar16[3] = *(int *)(iVar5 + 0x48)" (subscript_expression "piVar16[3]" identifier [ number_literal ]) = (pointer_expression "*(int *)(iVar5 + 0x48)" * (cast_expression "(int *)(iVar5 + 0x48)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x48)" ( (binary_expression "iVar5 + 0x48" identifier + number_literal) ))))) ;) (expression_statement "piVar16[2] = 0;" (assignment_expression "piVar16[2] = 0" (subscript_expression "piVar16[2]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "piVar16 = (int *)param_1[0xe];" (assignment_expression "piVar16 = (int *)param_1[0xe]" identifier = (cast_expression "(int *)param_1[0xe]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[0xe]" identifier [ number_literal ]))) ;) (expression_statement "param_2 = *(undefined4 **)(iVar5 + 0x5c);" (assignment_expression "param_2 = *(undefined4 **)(iVar5 + 0x5c)" identifier = (pointer_expression "*(undefined4 **)(iVar5 + 0x5c)" * (cast_expression "(undefined4 **)(iVar5 + 0x5c)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar5 + 0x5c)" ( (binary_expression "iVar5 + 0x5c" identifier + number_literal) ))))) ;) (expression_statement "param_1 = *(int **)(iVar5 + 0x58);" (assignment_expression "param_1 = *(int **)(iVar5 + 0x58)" identifier = (pointer_expression "*(int **)(iVar5 + 0x58)" * (cast_expression "(int **)(iVar5 + 0x58)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar5 + 0x58)" ( (binary_expression "iVar5 + 0x58" identifier + number_literal) ))))) ;) (expression_statement "piVar16[1] = (int)param_2;" (assignment_expression "piVar16[1] = (int)param_2" (subscript_expression "piVar16[1]" identifier [ number_literal ]) = (cast_expression "(int)param_2" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "*piVar16 = (int)param_1;" (assignment_expression "*piVar16 = (int)param_1" (pointer_expression "*piVar16" * identifier) = (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier)) ;) })) })) })) (labeled_statement "LAB_0001c0f8:\n    if (local_c == *(int *)PTR___stack_chk_guard_000333f4) {\n      return *(int *)PTR___stack_chk_guard_000333f4;\n    }" statement_identifier : (if_statement "if (local_c == *(int *)PTR___stack_chk_guard_000333f4) {\n      return *(int *)PTR___stack_chk_guard_000333f4;\n    }" if (parenthesized_expression "(local_c == *(int *)PTR___stack_chk_guard_000333f4)" ( (binary_expression "local_c == *(int *)PTR___stack_chk_guard_000333f4" identifier == (pointer_expression "*(int *)PTR___stack_chk_guard_000333f4" * (cast_expression "(int *)PTR___stack_chk_guard_000333f4" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) )) (compound_statement "{\n      return *(int *)PTR___stack_chk_guard_000333f4;\n    }" { (return_statement "return *(int *)PTR___stack_chk_guard_000333f4;" return (pointer_expression "*(int *)PTR___stack_chk_guard_000333f4" * (cast_expression "(int *)PTR___stack_chk_guard_000333f4" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) ;) }))) }) (else_clause "else {\n    local_24 = param_2[0x12];\n    local_28 = 0;\n    local_1c = param_2[0x17];\n    local_20 = param_2[0x16];\n    param_2 = &local_28;\n    param_1 = (int *)hash_delete(param_1[0xe]);\n    if (param_1 != (int *)0x0) {\n      (*(code *)PTR_free_000333fc)();\n      goto LAB_0001c0f8;\n    }\n    pcVar21 = (code *)PTR_abort_000332e8;\n    (*(code *)PTR_abort_000332e8)();\nLAB_0001c120:\n    (*pcVar21)();\n  }" else (compound_statement "{\n    local_24 = param_2[0x12];\n    local_28 = 0;\n    local_1c = param_2[0x17];\n    local_20 = param_2[0x16];\n    param_2 = &local_28;\n    param_1 = (int *)hash_delete(param_1[0xe]);\n    if (param_1 != (int *)0x0) {\n      (*(code *)PTR_free_000333fc)();\n      goto LAB_0001c0f8;\n    }\n    pcVar21 = (code *)PTR_abort_000332e8;\n    (*(code *)PTR_abort_000332e8)();\nLAB_0001c120:\n    (*pcVar21)();\n  }" { (expression_statement "local_24 = param_2[0x12];" (assignment_expression "local_24 = param_2[0x12]" identifier = (subscript_expression "param_2[0x12]" identifier [ number_literal ])) ;) (expression_statement "local_28 = 0;" (assignment_expression "local_28 = 0" identifier = number_literal) ;) (expression_statement "local_1c = param_2[0x17];" (assignment_expression "local_1c = param_2[0x17]" identifier = (subscript_expression "param_2[0x17]" identifier [ number_literal ])) ;) (expression_statement "local_20 = param_2[0x16];" (assignment_expression "local_20 = param_2[0x16]" identifier = (subscript_expression "param_2[0x16]" identifier [ number_literal ])) ;) (expression_statement "param_2 = &local_28;" (assignment_expression "param_2 = &local_28" identifier = (pointer_expression "&local_28" & identifier)) ;) (expression_statement "param_1 = (int *)hash_delete(param_1[0xe]);" (assignment_expression "param_1 = (int *)hash_delete(param_1[0xe])" identifier = (cast_expression "(int *)hash_delete(param_1[0xe])" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "hash_delete(param_1[0xe])" identifier (argument_list "(param_1[0xe])" ( (subscript_expression "param_1[0xe]" identifier [ number_literal ]) ))))) ;) (if_statement "if (param_1 != (int *)0x0) {\n      (*(code *)PTR_free_000333fc)();\n      goto LAB_0001c0f8;\n    }" if (parenthesized_expression "(param_1 != (int *)0x0)" ( (binary_expression "param_1 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      (*(code *)PTR_free_000333fc)();\n      goto LAB_0001c0f8;\n    }" { (expression_statement "(*(code *)PTR_free_000333fc)();" (call_expression "(*(code *)PTR_free_000333fc)()" (parenthesized_expression "(*(code *)PTR_free_000333fc)" ( (pointer_expression "*(code *)PTR_free_000333fc" * (cast_expression "(code *)PTR_free_000333fc" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (goto_statement "goto LAB_0001c0f8;" goto statement_identifier ;) })) (expression_statement "pcVar21 = (code *)PTR_abort_000332e8;" (assignment_expression "pcVar21 = (code *)PTR_abort_000332e8" identifier = (cast_expression "(code *)PTR_abort_000332e8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "(*(code *)PTR_abort_000332e8)();" (call_expression "(*(code *)PTR_abort_000332e8)()" (parenthesized_expression "(*(code *)PTR_abort_000332e8)" ( (pointer_expression "*(code *)PTR_abort_000332e8" * (cast_expression "(code *)PTR_abort_000332e8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (labeled_statement "LAB_0001c120:\n    (*pcVar21)();" statement_identifier : (expression_statement "(*pcVar21)();" (call_expression "(*pcVar21)()" (parenthesized_expression "(*pcVar21)" ( (pointer_expression "*pcVar21" * identifier) )) (argument_list "()" ( ))) ;)) }))) (expression_statement "puVar22 = PTR___stack_chk_fail_000333dc;" (assignment_expression "puVar22 = PTR___stack_chk_fail_000333dc" identifier = identifier) ;) (expression_statement "(*(code *)PTR___stack_chk_fail_000333dc)();" (call_expression "(*(code *)PTR___stack_chk_fail_000333dc)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_000333dc)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_000333dc" * (cast_expression "(code *)PTR___stack_chk_fail_000333dc" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "iVar18 = *param_1;" (assignment_expression "iVar18 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "iVar5 = *(int *)(iVar18 + 0xc);" (assignment_expression "iVar5 = *(int *)(iVar18 + 0xc)" identifier = (pointer_expression "*(int *)(iVar18 + 0xc)" * (cast_expression "(int *)(iVar18 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar18 + 0xc)" ( (binary_expression "iVar18 + 0xc" identifier + number_literal) ))))) ;) (if_statement "if (iVar5 != 0) {\n    iStack_7c = (**(code **)(puVar22 + 0x172d0))();\n    if (iStack_7c < 0) {\n      (**(code **)(puVar22 + 0x17194))(*(undefined4 *)(iVar18 + 0xc));\n      *(undefined4 *)(iVar18 + 0xc) = 0;\n      if (param_2 != (undefined4 *)0x3) {\n        return 0;\n      }\n      *(undefined2 *)(iVar18 + 0x3c) = 4;\n      puVar10 = (undefined4 *)(**(code **)(puVar22 + 0x17220))();\n      *(undefined4 *)(iVar18 + 0x20) = *puVar10;\n      return 0;\n    }\n    if (param_1[0xb] == 0) {\n      uStack_94 = 100000;\n      bVar2 = true;\n    }\n    else {\n      uStack_94 = 0xffffffff;\n      bVar2 = true;\n    }\n    goto LAB_0001c1b8;\n  }" if (parenthesized_expression "(iVar5 != 0)" ( (binary_expression "iVar5 != 0" identifier != number_literal) )) (compound_statement "{\n    iStack_7c = (**(code **)(puVar22 + 0x172d0))();\n    if (iStack_7c < 0) {\n      (**(code **)(puVar22 + 0x17194))(*(undefined4 *)(iVar18 + 0xc));\n      *(undefined4 *)(iVar18 + 0xc) = 0;\n      if (param_2 != (undefined4 *)0x3) {\n        return 0;\n      }\n      *(undefined2 *)(iVar18 + 0x3c) = 4;\n      puVar10 = (undefined4 *)(**(code **)(puVar22 + 0x17220))();\n      *(undefined4 *)(iVar18 + 0x20) = *puVar10;\n      return 0;\n    }\n    if (param_1[0xb] == 0) {\n      uStack_94 = 100000;\n      bVar2 = true;\n    }\n    else {\n      uStack_94 = 0xffffffff;\n      bVar2 = true;\n    }\n    goto LAB_0001c1b8;\n  }" { (expression_statement "iStack_7c = (**(code **)(puVar22 + 0x172d0))();" (assignment_expression "iStack_7c = (**(code **)(puVar22 + 0x172d0))()" identifier = (call_expression "(**(code **)(puVar22 + 0x172d0))()" (parenthesized_expression "(**(code **)(puVar22 + 0x172d0))" ( (pointer_expression "**(code **)(puVar22 + 0x172d0)" * (pointer_expression "*(code **)(puVar22 + 0x172d0)" * (cast_expression "(code **)(puVar22 + 0x172d0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar22 + 0x172d0)" ( (binary_expression "puVar22 + 0x172d0" identifier + number_literal) ))))) )) (argument_list "()" ( )))) ;) (if_statement "if (iStack_7c < 0) {\n      (**(code **)(puVar22 + 0x17194))(*(undefined4 *)(iVar18 + 0xc));\n      *(undefined4 *)(iVar18 + 0xc) = 0;\n      if (param_2 != (undefined4 *)0x3) {\n        return 0;\n      }\n      *(undefined2 *)(iVar18 + 0x3c) = 4;\n      puVar10 = (undefined4 *)(**(code **)(puVar22 + 0x17220))();\n      *(undefined4 *)(iVar18 + 0x20) = *puVar10;\n      return 0;\n    }" if (parenthesized_expression "(iStack_7c < 0)" ( (binary_expression "iStack_7c < 0" identifier < number_literal) )) (compound_statement "{\n      (**(code **)(puVar22 + 0x17194))(*(undefined4 *)(iVar18 + 0xc));\n      *(undefined4 *)(iVar18 + 0xc) = 0;\n      if (param_2 != (undefined4 *)0x3) {\n        return 0;\n      }\n      *(undefined2 *)(iVar18 + 0x3c) = 4;\n      puVar10 = (undefined4 *)(**(code **)(puVar22 + 0x17220))();\n      *(undefined4 *)(iVar18 + 0x20) = *puVar10;\n      return 0;\n    }" { (expression_statement "(**(code **)(puVar22 + 0x17194))(*(undefined4 *)(iVar18 + 0xc));" (call_expression "(**(code **)(puVar22 + 0x17194))(*(undefined4 *)(iVar18 + 0xc))" (parenthesized_expression "(**(code **)(puVar22 + 0x17194))" ( (pointer_expression "**(code **)(puVar22 + 0x17194)" * (pointer_expression "*(code **)(puVar22 + 0x17194)" * (cast_expression "(code **)(puVar22 + 0x17194)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar22 + 0x17194)" ( (binary_expression "puVar22 + 0x17194" identifier + number_literal) ))))) )) (argument_list "(*(undefined4 *)(iVar18 + 0xc))" ( (pointer_expression "*(undefined4 *)(iVar18 + 0xc)" * (cast_expression "(undefined4 *)(iVar18 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar18 + 0xc)" ( (binary_expression "iVar18 + 0xc" identifier + number_literal) )))) ))) ;) (expression_statement "*(undefined4 *)(iVar18 + 0xc) = 0;" (assignment_expression "*(undefined4 *)(iVar18 + 0xc) = 0" (pointer_expression "*(undefined4 *)(iVar18 + 0xc)" * (cast_expression "(undefined4 *)(iVar18 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar18 + 0xc)" ( (binary_expression "iVar18 + 0xc" identifier + number_literal) )))) = number_literal) ;) (if_statement "if (param_2 != (undefined4 *)0x3) {\n        return 0;\n      }" if (parenthesized_expression "(param_2 != (undefined4 *)0x3)" ( (binary_expression "param_2 != (undefined4 *)0x3" identifier != (cast_expression "(undefined4 *)0x3" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        return 0;\n      }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "*(undefined2 *)(iVar18 + 0x3c) = 4;" (assignment_expression "*(undefined2 *)(iVar18 + 0x3c) = 4" (pointer_expression "*(undefined2 *)(iVar18 + 0x3c)" * (cast_expression "(undefined2 *)(iVar18 + 0x3c)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar18 + 0x3c)" ( (binary_expression "iVar18 + 0x3c" identifier + number_literal) )))) = number_literal) ;) (expression_statement "puVar10 = (undefined4 *)(**(code **)(puVar22 + 0x17220))();" (assignment_expression "puVar10 = (undefined4 *)(**(code **)(puVar22 + 0x17220))()" identifier = (cast_expression "(undefined4 *)(**(code **)(puVar22 + 0x17220))()" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(puVar22 + 0x17220))()" (parenthesized_expression "(**(code **)(puVar22 + 0x17220))" ( (pointer_expression "**(code **)(puVar22 + 0x17220)" * (pointer_expression "*(code **)(puVar22 + 0x17220)" * (cast_expression "(code **)(puVar22 + 0x17220)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar22 + 0x17220)" ( (binary_expression "puVar22 + 0x17220" identifier + number_literal) ))))) )) (argument_list "()" ( ))))) ;) (expression_statement "*(undefined4 *)(iVar18 + 0x20) = *puVar10;" (assignment_expression "*(undefined4 *)(iVar18 + 0x20) = *puVar10" (pointer_expression "*(undefined4 *)(iVar18 + 0x20)" * (cast_expression "(undefined4 *)(iVar18 + 0x20)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar18 + 0x20)" ( (binary_expression "iVar18 + 0x20" identifier + number_literal) )))) = (pointer_expression "*puVar10" * identifier)) ;) (return_statement "return 0;" return number_literal ;) })) (if_statement "if (param_1[0xb] == 0) {\n      uStack_94 = 100000;\n      bVar2 = true;\n    }\n    else {\n      uStack_94 = 0xffffffff;\n      bVar2 = true;\n    }" if (parenthesized_expression "(param_1[0xb] == 0)" ( (binary_expression "param_1[0xb] == 0" (subscript_expression "param_1[0xb]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n      uStack_94 = 100000;\n      bVar2 = true;\n    }" { (expression_statement "uStack_94 = 100000;" (assignment_expression "uStack_94 = 100000" identifier = number_literal) ;) (expression_statement "bVar2 = true;" (assignment_expression "bVar2 = true" identifier = true) ;) }) (else_clause "else {\n      uStack_94 = 0xffffffff;\n      bVar2 = true;\n    }" else (compound_statement "{\n      uStack_94 = 0xffffffff;\n      bVar2 = true;\n    }" { (expression_statement "uStack_94 = 0xffffffff;" (assignment_expression "uStack_94 = 0xffffffff" identifier = number_literal) ;) (expression_statement "bVar2 = true;" (assignment_expression "bVar2 = true" identifier = true) ;) }))) (goto_statement "goto LAB_0001c1b8;" goto statement_identifier ;) })) (expression_statement "uVar19 = param_1[0xc];" (assignment_expression "uVar19 = param_1[0xc]" identifier = (subscript_expression "param_1[0xc]" identifier [ number_literal ])) ;) (if_statement "if ((uVar19 & 0x204) == 0x200) {\n    iVar17 = param_1[8];\n  }\n  else {\n    iVar17 = -100;\n  }" if (parenthesized_expression "((uVar19 & 0x204) == 0x200)" ( (binary_expression "(uVar19 & 0x204) == 0x200" (parenthesized_expression "(uVar19 & 0x204)" ( (binary_expression "uVar19 & 0x204" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n    iVar17 = param_1[8];\n  }" { (expression_statement "iVar17 = param_1[8];" (assignment_expression "iVar17 = param_1[8]" identifier = (subscript_expression "param_1[8]" identifier [ number_literal ])) ;) }) (else_clause "else {\n    iVar17 = -100;\n  }" else (compound_statement "{\n    iVar17 = -100;\n  }" { (expression_statement "iVar17 = -100;" (assignment_expression "iVar17 = -100" identifier = number_literal) ;) }))) (expression_statement "uVar20 = uVar19 & 0x10;" (assignment_expression "uVar20 = uVar19 & 0x10" identifier = (binary_expression "uVar19 & 0x10" identifier & number_literal)) ;) (if_statement "if (((uVar20 != 0) && (uVar20 = 0x20000, (uVar19 & 1) != 0)) &&\n     (uVar20 = *(uint *)(iVar18 + 0x30), uVar20 != 0)) {\n    uVar20 = 0x20000;\n  }" if (parenthesized_expression "(((uVar20 != 0) && (uVar20 = 0x20000, (uVar19 & 1) != 0)) &&\n     (uVar20 = *(uint *)(iVar18 + 0x30), uVar20 != 0))" ( (binary_expression "((uVar20 != 0) && (uVar20 = 0x20000, (uVar19 & 1) != 0)) &&\n     (uVar20 = *(uint *)(iVar18 + 0x30), uVar20 != 0)" (parenthesized_expression "((uVar20 != 0) && (uVar20 = 0x20000, (uVar19 & 1) != 0))" ( (binary_expression "(uVar20 != 0) && (uVar20 = 0x20000, (uVar19 & 1) != 0)" (parenthesized_expression "(uVar20 != 0)" ( (binary_expression "uVar20 != 0" identifier != number_literal) )) && (parenthesized_expression "(uVar20 = 0x20000, (uVar19 & 1) != 0)" ( (comma_expression "uVar20 = 0x20000, (uVar19 & 1) != 0" (assignment_expression "uVar20 = 0x20000" identifier = number_literal) , (binary_expression "(uVar19 & 1) != 0" (parenthesized_expression "(uVar19 & 1)" ( (binary_expression "uVar19 & 1" identifier & number_literal) )) != number_literal)) ))) )) && (parenthesized_expression "(uVar20 = *(uint *)(iVar18 + 0x30), uVar20 != 0)" ( (comma_expression "uVar20 = *(uint *)(iVar18 + 0x30), uVar20 != 0" (assignment_expression "uVar20 = *(uint *)(iVar18 + 0x30)" identifier = (pointer_expression "*(uint *)(iVar18 + 0x30)" * (cast_expression "(uint *)(iVar18 + 0x30)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar18 + 0x30)" ( (binary_expression "iVar18 + 0x30" identifier + number_literal) ))))) , (binary_expression "uVar20 != 0" identifier != number_literal)) ))) )) (compound_statement "{\n    uVar20 = 0x20000;\n  }" { (expression_statement "uVar20 = 0x20000;" (assignment_expression "uVar20 = 0x20000" identifier = number_literal) ;) })) (expression_statement "iStack_7c = openat_safer(iVar17,*(undefined4 *)(iVar18 + 0x18),\n                           (uVar19 & 0x800) << 7 | uVar20 | 0x90880);" (assignment_expression "iStack_7c = openat_safer(iVar17,*(undefined4 *)(iVar18 + 0x18),\n                           (uVar19 & 0x800) << 7 | uVar20 | 0x90880)" identifier = (call_expression "openat_safer(iVar17,*(undefined4 *)(iVar18 + 0x18),\n                           (uVar19 & 0x800) << 7 | uVar20 | 0x90880)" identifier (argument_list "(iVar17,*(undefined4 *)(iVar18 + 0x18),\n                           (uVar19 & 0x800) << 7 | uVar20 | 0x90880)" ( identifier , (pointer_expression "*(undefined4 *)(iVar18 + 0x18)" * (cast_expression "(undefined4 *)(iVar18 + 0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar18 + 0x18)" ( (binary_expression "iVar18 + 0x18" identifier + number_literal) )))) , (binary_expression "(uVar19 & 0x800) << 7 | uVar20 | 0x90880" (binary_expression "(uVar19 & 0x800) << 7 | uVar20" (binary_expression "(uVar19 & 0x800) << 7" (parenthesized_expression "(uVar19 & 0x800)" ( (binary_expression "uVar19 & 0x800" identifier & number_literal) )) << number_literal) | identifier) | number_literal) )))) ;) (if_statement "if (iStack_7c < 0) {\nLAB_0001c3e8:\n    *(undefined4 *)(iVar18 + 0xc) = 0;\n    if (param_2 == (undefined4 *)0x3) {\n      *(undefined2 *)(iVar18 + 0x3c) = 4;\n      puVar10 = (undefined4 *)(**(code **)(puVar22 + 0x17220))();\n      *(undefined4 *)(iVar18 + 0x20) = *puVar10;\n    }\n    return 0;\n  }" if (parenthesized_expression "(iStack_7c < 0)" ( (binary_expression "iStack_7c < 0" identifier < number_literal) )) (compound_statement "{\nLAB_0001c3e8:\n    *(undefined4 *)(iVar18 + 0xc) = 0;\n    if (param_2 == (undefined4 *)0x3) {\n      *(undefined2 *)(iVar18 + 0x3c) = 4;\n      puVar10 = (undefined4 *)(**(code **)(puVar22 + 0x17220))();\n      *(undefined4 *)(iVar18 + 0x20) = *puVar10;\n    }\n    return 0;\n  }" { (labeled_statement "LAB_0001c3e8:\n    *(undefined4 *)(iVar18 + 0xc) = 0;" statement_identifier : (expression_statement "*(undefined4 *)(iVar18 + 0xc) = 0;" (assignment_expression "*(undefined4 *)(iVar18 + 0xc) = 0" (pointer_expression "*(undefined4 *)(iVar18 + 0xc)" * (cast_expression "(undefined4 *)(iVar18 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar18 + 0xc)" ( (binary_expression "iVar18 + 0xc" identifier + number_literal) )))) = number_literal) ;)) (if_statement "if (param_2 == (undefined4 *)0x3) {\n      *(undefined2 *)(iVar18 + 0x3c) = 4;\n      puVar10 = (undefined4 *)(**(code **)(puVar22 + 0x17220))();\n      *(undefined4 *)(iVar18 + 0x20) = *puVar10;\n    }" if (parenthesized_expression "(param_2 == (undefined4 *)0x3)" ( (binary_expression "param_2 == (undefined4 *)0x3" identifier == (cast_expression "(undefined4 *)0x3" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      *(undefined2 *)(iVar18 + 0x3c) = 4;\n      puVar10 = (undefined4 *)(**(code **)(puVar22 + 0x17220))();\n      *(undefined4 *)(iVar18 + 0x20) = *puVar10;\n    }" { (expression_statement "*(undefined2 *)(iVar18 + 0x3c) = 4;" (assignment_expression "*(undefined2 *)(iVar18 + 0x3c) = 4" (pointer_expression "*(undefined2 *)(iVar18 + 0x3c)" * (cast_expression "(undefined2 *)(iVar18 + 0x3c)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar18 + 0x3c)" ( (binary_expression "iVar18 + 0x3c" identifier + number_literal) )))) = number_literal) ;) (expression_statement "puVar10 = (undefined4 *)(**(code **)(puVar22 + 0x17220))();" (assignment_expression "puVar10 = (undefined4 *)(**(code **)(puVar22 + 0x17220))()" identifier = (cast_expression "(undefined4 *)(**(code **)(puVar22 + 0x17220))()" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(puVar22 + 0x17220))()" (parenthesized_expression "(**(code **)(puVar22 + 0x17220))" ( (pointer_expression "**(code **)(puVar22 + 0x17220)" * (pointer_expression "*(code **)(puVar22 + 0x17220)" * (cast_expression "(code **)(puVar22 + 0x17220)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar22 + 0x17220)" ( (binary_expression "puVar22 + 0x17220" identifier + number_literal) ))))) )) (argument_list "()" ( ))))) ;) (expression_statement "*(undefined4 *)(iVar18 + 0x20) = *puVar10;" (assignment_expression "*(undefined4 *)(iVar18 + 0x20) = *puVar10" (pointer_expression "*(undefined4 *)(iVar18 + 0x20)" * (cast_expression "(undefined4 *)(iVar18 + 0x20)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar18 + 0x20)" ( (binary_expression "iVar18 + 0x20" identifier + number_literal) )))) = (pointer_expression "*puVar10" * identifier)) ;) })) (return_statement "return 0;" return number_literal ;) })) (expression_statement "iVar17 = (**(code **)(puVar22 + 0x171f0))(iStack_7c);" (assignment_expression "iVar17 = (**(code **)(puVar22 + 0x171f0))(iStack_7c)" identifier = (call_expression "(**(code **)(puVar22 + 0x171f0))(iStack_7c)" (parenthesized_expression "(**(code **)(puVar22 + 0x171f0))" ( (pointer_expression "**(code **)(puVar22 + 0x171f0)" * (pointer_expression "*(code **)(puVar22 + 0x171f0)" * (cast_expression "(code **)(puVar22 + 0x171f0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar22 + 0x171f0)" ( (binary_expression "puVar22 + 0x171f0" identifier + number_literal) ))))) )) (argument_list "(iStack_7c)" ( identifier )))) ;) (if_statement "if (iVar17 == 0) {\n    puVar10 = (undefined4 *)(**(code **)(puVar22 + 0x17220))();\n    uVar13 = *puVar10;\n    (**(code **)(puVar22 + 0x17198))(iStack_7c);\n    *puVar10 = uVar13;\n    goto LAB_0001c3e8;\n  }" if (parenthesized_expression "(iVar17 == 0)" ( (binary_expression "iVar17 == 0" identifier == number_literal) )) (compound_statement "{\n    puVar10 = (undefined4 *)(**(code **)(puVar22 + 0x17220))();\n    uVar13 = *puVar10;\n    (**(code **)(puVar22 + 0x17198))(iStack_7c);\n    *puVar10 = uVar13;\n    goto LAB_0001c3e8;\n  }" { (expression_statement "puVar10 = (undefined4 *)(**(code **)(puVar22 + 0x17220))();" (assignment_expression "puVar10 = (undefined4 *)(**(code **)(puVar22 + 0x17220))()" identifier = (cast_expression "(undefined4 *)(**(code **)(puVar22 + 0x17220))()" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(puVar22 + 0x17220))()" (parenthesized_expression "(**(code **)(puVar22 + 0x17220))" ( (pointer_expression "**(code **)(puVar22 + 0x17220)" * (pointer_expression "*(code **)(puVar22 + 0x17220)" * (cast_expression "(code **)(puVar22 + 0x17220)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar22 + 0x17220)" ( (binary_expression "puVar22 + 0x17220" identifier + number_literal) ))))) )) (argument_list "()" ( ))))) ;) (expression_statement "uVar13 = *puVar10;" (assignment_expression "uVar13 = *puVar10" identifier = (pointer_expression "*puVar10" * identifier)) ;) (expression_statement "(**(code **)(puVar22 + 0x17198))(iStack_7c);" (call_expression "(**(code **)(puVar22 + 0x17198))(iStack_7c)" (parenthesized_expression "(**(code **)(puVar22 + 0x17198))" ( (pointer_expression "**(code **)(puVar22 + 0x17198)" * (pointer_expression "*(code **)(puVar22 + 0x17198)" * (cast_expression "(code **)(puVar22 + 0x17198)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar22 + 0x17198)" ( (binary_expression "puVar22 + 0x17198" identifier + number_literal) ))))) )) (argument_list "(iStack_7c)" ( identifier ))) ;) (expression_statement "*puVar10 = uVar13;" (assignment_expression "*puVar10 = uVar13" (pointer_expression "*puVar10" * identifier) = identifier) ;) (goto_statement "goto LAB_0001c3e8;" goto statement_identifier ;) })) (expression_statement "*(int *)(iVar18 + 0xc) = iVar17;" (assignment_expression "*(int *)(iVar18 + 0xc) = iVar17" (pointer_expression "*(int *)(iVar18 + 0xc)" * (cast_expression "(int *)(iVar18 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar18 + 0xc)" ( (binary_expression "iVar18 + 0xc" identifier + number_literal) )))) = identifier) ;) (if_statement "if (*(short *)(iVar18 + 0x3c) == 0xb) {\n    uVar15 = FUN_0001b18c(param_1,iVar18,0);\n    *(undefined2 *)(iVar18 + 0x3c) = uVar15;\n  }\n  else if ((param_1[0xc] & 0x100U) != 0) {\n    FUN_0001bfec(param_1,iVar18);\n    FUN_0001b18c(param_1,iVar18,0);\n    iVar17 = FUN_0001bad0(param_1,iVar18);\n    if (iVar17 == 0) {\n      puVar10 = (undefined4 *)(**(code **)(puVar22 + 0x17220))();\n      *puVar10 = 0xc;\n      return 0;\n    }\n  }" if (parenthesized_expression "(*(short *)(iVar18 + 0x3c) == 0xb)" ( (binary_expression "*(short *)(iVar18 + 0x3c) == 0xb" (pointer_expression "*(short *)(iVar18 + 0x3c)" * (cast_expression "(short *)(iVar18 + 0x3c)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar18 + 0x3c)" ( (binary_expression "iVar18 + 0x3c" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n    uVar15 = FUN_0001b18c(param_1,iVar18,0);\n    *(undefined2 *)(iVar18 + 0x3c) = uVar15;\n  }" { (expression_statement "uVar15 = FUN_0001b18c(param_1,iVar18,0);" (assignment_expression "uVar15 = FUN_0001b18c(param_1,iVar18,0)" identifier = (call_expression "FUN_0001b18c(param_1,iVar18,0)" identifier (argument_list "(param_1,iVar18,0)" ( identifier , identifier , number_literal )))) ;) (expression_statement "*(undefined2 *)(iVar18 + 0x3c) = uVar15;" (assignment_expression "*(undefined2 *)(iVar18 + 0x3c) = uVar15" (pointer_expression "*(undefined2 *)(iVar18 + 0x3c)" * (cast_expression "(undefined2 *)(iVar18 + 0x3c)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar18 + 0x3c)" ( (binary_expression "iVar18 + 0x3c" identifier + number_literal) )))) = identifier) ;) }) (else_clause "else if ((param_1[0xc] & 0x100U) != 0) {\n    FUN_0001bfec(param_1,iVar18);\n    FUN_0001b18c(param_1,iVar18,0);\n    iVar17 = FUN_0001bad0(param_1,iVar18);\n    if (iVar17 == 0) {\n      puVar10 = (undefined4 *)(**(code **)(puVar22 + 0x17220))();\n      *puVar10 = 0xc;\n      return 0;\n    }\n  }" else (if_statement "if ((param_1[0xc] & 0x100U) != 0) {\n    FUN_0001bfec(param_1,iVar18);\n    FUN_0001b18c(param_1,iVar18,0);\n    iVar17 = FUN_0001bad0(param_1,iVar18);\n    if (iVar17 == 0) {\n      puVar10 = (undefined4 *)(**(code **)(puVar22 + 0x17220))();\n      *puVar10 = 0xc;\n      return 0;\n    }\n  }" if (parenthesized_expression "((param_1[0xc] & 0x100U) != 0)" ( (binary_expression "(param_1[0xc] & 0x100U) != 0" (parenthesized_expression "(param_1[0xc] & 0x100U)" ( (binary_expression "param_1[0xc] & 0x100U" (subscript_expression "param_1[0xc]" identifier [ number_literal ]) & number_literal) )) != number_literal) )) (compound_statement "{\n    FUN_0001bfec(param_1,iVar18);\n    FUN_0001b18c(param_1,iVar18,0);\n    iVar17 = FUN_0001bad0(param_1,iVar18);\n    if (iVar17 == 0) {\n      puVar10 = (undefined4 *)(**(code **)(puVar22 + 0x17220))();\n      *puVar10 = 0xc;\n      return 0;\n    }\n  }" { (expression_statement "FUN_0001bfec(param_1,iVar18);" (call_expression "FUN_0001bfec(param_1,iVar18)" identifier (argument_list "(param_1,iVar18)" ( identifier , identifier ))) ;) (expression_statement "FUN_0001b18c(param_1,iVar18,0);" (call_expression "FUN_0001b18c(param_1,iVar18,0)" identifier (argument_list "(param_1,iVar18,0)" ( identifier , identifier , number_literal ))) ;) (expression_statement "iVar17 = FUN_0001bad0(param_1,iVar18);" (assignment_expression "iVar17 = FUN_0001bad0(param_1,iVar18)" identifier = (call_expression "FUN_0001bad0(param_1,iVar18)" identifier (argument_list "(param_1,iVar18)" ( identifier , identifier )))) ;) (if_statement "if (iVar17 == 0) {\n      puVar10 = (undefined4 *)(**(code **)(puVar22 + 0x17220))();\n      *puVar10 = 0xc;\n      return 0;\n    }" if (parenthesized_expression "(iVar17 == 0)" ( (binary_expression "iVar17 == 0" identifier == number_literal) )) (compound_statement "{\n      puVar10 = (undefined4 *)(**(code **)(puVar22 + 0x17220))();\n      *puVar10 = 0xc;\n      return 0;\n    }" { (expression_statement "puVar10 = (undefined4 *)(**(code **)(puVar22 + 0x17220))();" (assignment_expression "puVar10 = (undefined4 *)(**(code **)(puVar22 + 0x17220))()" identifier = (cast_expression "(undefined4 *)(**(code **)(puVar22 + 0x17220))()" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(puVar22 + 0x17220))()" (parenthesized_expression "(**(code **)(puVar22 + 0x17220))" ( (pointer_expression "**(code **)(puVar22 + 0x17220)" * (pointer_expression "*(code **)(puVar22 + 0x17220)" * (cast_expression "(code **)(puVar22 + 0x17220)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar22 + 0x17220)" ( (binary_expression "puVar22 + 0x17220" identifier + number_literal) ))))) )) (argument_list "()" ( ))))) ;) (expression_statement "*puVar10 = 0xc;" (assignment_expression "*puVar10 = 0xc" (pointer_expression "*puVar10" * identifier) = number_literal) ;) (return_statement "return 0;" return number_literal ;) })) })))) (if_statement "if (param_1[0xb] == 0) {\n    uStack_94 = 100000;\n  }\n  else {\n    uStack_94 = 0xffffffff;\n  }" if (parenthesized_expression "(param_1[0xb] == 0)" ( (binary_expression "param_1[0xb] == 0" (subscript_expression "param_1[0xb]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n    uStack_94 = 100000;\n  }" { (expression_statement "uStack_94 = 100000;" (assignment_expression "uStack_94 = 100000" identifier = number_literal) ;) }) (else_clause "else {\n    uStack_94 = 0xffffffff;\n  }" else (compound_statement "{\n    uStack_94 = 0xffffffff;\n  }" { (expression_statement "uStack_94 = 0xffffffff;" (assignment_expression "uStack_94 = 0xffffffff" identifier = number_literal) ;) }))) (if_statement "if (param_2 == (undefined4 *)0x2) {\n    bVar2 = false;\n  }\n  else {\n    if ((((param_1[0xc] & 0x38U) == 0x18) && (*(int *)(iVar18 + 100) == 2)) &&\n       (iVar17 = FUN_0001ba08(iVar18,iStack_7c), iVar17 != 0)) {\n      bVar2 = false;\n      if (param_2 != (undefined4 *)0x3) {\n        bVar2 = false;\n        goto LAB_0001c1b8;\n      }\n      uVar19 = param_1[0xc];\n    }\n    else {\n      bVar2 = true;\n      uVar19 = param_1[0xc];\n    }\n    if ((uVar19 & 0x200) != 0) {\n      iStack_7c = rpl_fcntl(iStack_7c,0x406,3);\n    }\n    if ((iStack_7c < 0) || (iVar17 = FUN_0001bd68(param_1,iVar18,iStack_7c,0), iVar17 != 0)) {\n      if ((bVar2) && (param_2 == (undefined4 *)0x3)) {\n        puVar10 = (undefined4 *)(**(code **)(puVar22 + 0x17220))();\n        *(undefined4 *)(iVar18 + 0x20) = *puVar10;\n      }\n      *(ushort *)(iVar18 + 0x3e) = *(ushort *)(iVar18 + 0x3e) | 1;\n      (**(code **)(puVar22 + 0x17194))(*(undefined4 *)(iVar18 + 0xc));\n      *(undefined4 *)(iVar18 + 0xc) = 0;\n      if (((param_1[0xc] & 0x200U) != 0) && (-1 < iStack_7c)) {\n        (**(code **)(puVar22 + 0x17198))(iStack_7c);\n        *(undefined4 *)(iVar18 + 0xc) = 0;\n      }\n      bVar2 = false;\n    }\n    else {\n      bVar2 = true;\n    }\n  }" if (parenthesized_expression "(param_2 == (undefined4 *)0x2)" ( (binary_expression "param_2 == (undefined4 *)0x2" identifier == (cast_expression "(undefined4 *)0x2" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    bVar2 = false;\n  }" { (expression_statement "bVar2 = false;" (assignment_expression "bVar2 = false" identifier = false) ;) }) (else_clause "else {\n    if ((((param_1[0xc] & 0x38U) == 0x18) && (*(int *)(iVar18 + 100) == 2)) &&\n       (iVar17 = FUN_0001ba08(iVar18,iStack_7c), iVar17 != 0)) {\n      bVar2 = false;\n      if (param_2 != (undefined4 *)0x3) {\n        bVar2 = false;\n        goto LAB_0001c1b8;\n      }\n      uVar19 = param_1[0xc];\n    }\n    else {\n      bVar2 = true;\n      uVar19 = param_1[0xc];\n    }\n    if ((uVar19 & 0x200) != 0) {\n      iStack_7c = rpl_fcntl(iStack_7c,0x406,3);\n    }\n    if ((iStack_7c < 0) || (iVar17 = FUN_0001bd68(param_1,iVar18,iStack_7c,0), iVar17 != 0)) {\n      if ((bVar2) && (param_2 == (undefined4 *)0x3)) {\n        puVar10 = (undefined4 *)(**(code **)(puVar22 + 0x17220))();\n        *(undefined4 *)(iVar18 + 0x20) = *puVar10;\n      }\n      *(ushort *)(iVar18 + 0x3e) = *(ushort *)(iVar18 + 0x3e) | 1;\n      (**(code **)(puVar22 + 0x17194))(*(undefined4 *)(iVar18 + 0xc));\n      *(undefined4 *)(iVar18 + 0xc) = 0;\n      if (((param_1[0xc] & 0x200U) != 0) && (-1 < iStack_7c)) {\n        (**(code **)(puVar22 + 0x17198))(iStack_7c);\n        *(undefined4 *)(iVar18 + 0xc) = 0;\n      }\n      bVar2 = false;\n    }\n    else {\n      bVar2 = true;\n    }\n  }" else (compound_statement "{\n    if ((((param_1[0xc] & 0x38U) == 0x18) && (*(int *)(iVar18 + 100) == 2)) &&\n       (iVar17 = FUN_0001ba08(iVar18,iStack_7c), iVar17 != 0)) {\n      bVar2 = false;\n      if (param_2 != (undefined4 *)0x3) {\n        bVar2 = false;\n        goto LAB_0001c1b8;\n      }\n      uVar19 = param_1[0xc];\n    }\n    else {\n      bVar2 = true;\n      uVar19 = param_1[0xc];\n    }\n    if ((uVar19 & 0x200) != 0) {\n      iStack_7c = rpl_fcntl(iStack_7c,0x406,3);\n    }\n    if ((iStack_7c < 0) || (iVar17 = FUN_0001bd68(param_1,iVar18,iStack_7c,0), iVar17 != 0)) {\n      if ((bVar2) && (param_2 == (undefined4 *)0x3)) {\n        puVar10 = (undefined4 *)(**(code **)(puVar22 + 0x17220))();\n        *(undefined4 *)(iVar18 + 0x20) = *puVar10;\n      }\n      *(ushort *)(iVar18 + 0x3e) = *(ushort *)(iVar18 + 0x3e) | 1;\n      (**(code **)(puVar22 + 0x17194))(*(undefined4 *)(iVar18 + 0xc));\n      *(undefined4 *)(iVar18 + 0xc) = 0;\n      if (((param_1[0xc] & 0x200U) != 0) && (-1 < iStack_7c)) {\n        (**(code **)(puVar22 + 0x17198))(iStack_7c);\n        *(undefined4 *)(iVar18 + 0xc) = 0;\n      }\n      bVar2 = false;\n    }\n    else {\n      bVar2 = true;\n    }\n  }" { (if_statement "if ((((param_1[0xc] & 0x38U) == 0x18) && (*(int *)(iVar18 + 100) == 2)) &&\n       (iVar17 = FUN_0001ba08(iVar18,iStack_7c), iVar17 != 0)) {\n      bVar2 = false;\n      if (param_2 != (undefined4 *)0x3) {\n        bVar2 = false;\n        goto LAB_0001c1b8;\n      }\n      uVar19 = param_1[0xc];\n    }\n    else {\n      bVar2 = true;\n      uVar19 = param_1[0xc];\n    }" if (parenthesized_expression "((((param_1[0xc] & 0x38U) == 0x18) && (*(int *)(iVar18 + 100) == 2)) &&\n       (iVar17 = FUN_0001ba08(iVar18,iStack_7c), iVar17 != 0))" ( (binary_expression "(((param_1[0xc] & 0x38U) == 0x18) && (*(int *)(iVar18 + 100) == 2)) &&\n       (iVar17 = FUN_0001ba08(iVar18,iStack_7c), iVar17 != 0)" (parenthesized_expression "(((param_1[0xc] & 0x38U) == 0x18) && (*(int *)(iVar18 + 100) == 2))" ( (binary_expression "((param_1[0xc] & 0x38U) == 0x18) && (*(int *)(iVar18 + 100) == 2)" (parenthesized_expression "((param_1[0xc] & 0x38U) == 0x18)" ( (binary_expression "(param_1[0xc] & 0x38U) == 0x18" (parenthesized_expression "(param_1[0xc] & 0x38U)" ( (binary_expression "param_1[0xc] & 0x38U" (subscript_expression "param_1[0xc]" identifier [ number_literal ]) & number_literal) )) == number_literal) )) && (parenthesized_expression "(*(int *)(iVar18 + 100) == 2)" ( (binary_expression "*(int *)(iVar18 + 100) == 2" (pointer_expression "*(int *)(iVar18 + 100)" * (cast_expression "(int *)(iVar18 + 100)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar18 + 100)" ( (binary_expression "iVar18 + 100" identifier + number_literal) )))) == number_literal) ))) )) && (parenthesized_expression "(iVar17 = FUN_0001ba08(iVar18,iStack_7c), iVar17 != 0)" ( (comma_expression "iVar17 = FUN_0001ba08(iVar18,iStack_7c), iVar17 != 0" (assignment_expression "iVar17 = FUN_0001ba08(iVar18,iStack_7c)" identifier = (call_expression "FUN_0001ba08(iVar18,iStack_7c)" identifier (argument_list "(iVar18,iStack_7c)" ( identifier , identifier )))) , (binary_expression "iVar17 != 0" identifier != number_literal)) ))) )) (compound_statement "{\n      bVar2 = false;\n      if (param_2 != (undefined4 *)0x3) {\n        bVar2 = false;\n        goto LAB_0001c1b8;\n      }\n      uVar19 = param_1[0xc];\n    }" { (expression_statement "bVar2 = false;" (assignment_expression "bVar2 = false" identifier = false) ;) (if_statement "if (param_2 != (undefined4 *)0x3) {\n        bVar2 = false;\n        goto LAB_0001c1b8;\n      }" if (parenthesized_expression "(param_2 != (undefined4 *)0x3)" ( (binary_expression "param_2 != (undefined4 *)0x3" identifier != (cast_expression "(undefined4 *)0x3" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        bVar2 = false;\n        goto LAB_0001c1b8;\n      }" { (expression_statement "bVar2 = false;" (assignment_expression "bVar2 = false" identifier = false) ;) (goto_statement "goto LAB_0001c1b8;" goto statement_identifier ;) })) (expression_statement "uVar19 = param_1[0xc];" (assignment_expression "uVar19 = param_1[0xc]" identifier = (subscript_expression "param_1[0xc]" identifier [ number_literal ])) ;) }) (else_clause "else {\n      bVar2 = true;\n      uVar19 = param_1[0xc];\n    }" else (compound_statement "{\n      bVar2 = true;\n      uVar19 = param_1[0xc];\n    }" { (expression_statement "bVar2 = true;" (assignment_expression "bVar2 = true" identifier = true) ;) (expression_statement "uVar19 = param_1[0xc];" (assignment_expression "uVar19 = param_1[0xc]" identifier = (subscript_expression "param_1[0xc]" identifier [ number_literal ])) ;) }))) (if_statement "if ((uVar19 & 0x200) != 0) {\n      iStack_7c = rpl_fcntl(iStack_7c,0x406,3);\n    }" if (parenthesized_expression "((uVar19 & 0x200) != 0)" ( (binary_expression "(uVar19 & 0x200) != 0" (parenthesized_expression "(uVar19 & 0x200)" ( (binary_expression "uVar19 & 0x200" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n      iStack_7c = rpl_fcntl(iStack_7c,0x406,3);\n    }" { (expression_statement "iStack_7c = rpl_fcntl(iStack_7c,0x406,3);" (assignment_expression "iStack_7c = rpl_fcntl(iStack_7c,0x406,3)" identifier = (call_expression "rpl_fcntl(iStack_7c,0x406,3)" identifier (argument_list "(iStack_7c,0x406,3)" ( identifier , number_literal , number_literal )))) ;) })) (if_statement "if ((iStack_7c < 0) || (iVar17 = FUN_0001bd68(param_1,iVar18,iStack_7c,0), iVar17 != 0)) {\n      if ((bVar2) && (param_2 == (undefined4 *)0x3)) {\n        puVar10 = (undefined4 *)(**(code **)(puVar22 + 0x17220))();\n        *(undefined4 *)(iVar18 + 0x20) = *puVar10;\n      }\n      *(ushort *)(iVar18 + 0x3e) = *(ushort *)(iVar18 + 0x3e) | 1;\n      (**(code **)(puVar22 + 0x17194))(*(undefined4 *)(iVar18 + 0xc));\n      *(undefined4 *)(iVar18 + 0xc) = 0;\n      if (((param_1[0xc] & 0x200U) != 0) && (-1 < iStack_7c)) {\n        (**(code **)(puVar22 + 0x17198))(iStack_7c);\n        *(undefined4 *)(iVar18 + 0xc) = 0;\n      }\n      bVar2 = false;\n    }\n    else {\n      bVar2 = true;\n    }" if (parenthesized_expression "((iStack_7c < 0) || (iVar17 = FUN_0001bd68(param_1,iVar18,iStack_7c,0), iVar17 != 0))" ( (binary_expression "(iStack_7c < 0) || (iVar17 = FUN_0001bd68(param_1,iVar18,iStack_7c,0), iVar17 != 0)" (parenthesized_expression "(iStack_7c < 0)" ( (binary_expression "iStack_7c < 0" identifier < number_literal) )) || (parenthesized_expression "(iVar17 = FUN_0001bd68(param_1,iVar18,iStack_7c,0), iVar17 != 0)" ( (comma_expression "iVar17 = FUN_0001bd68(param_1,iVar18,iStack_7c,0), iVar17 != 0" (assignment_expression "iVar17 = FUN_0001bd68(param_1,iVar18,iStack_7c,0)" identifier = (call_expression "FUN_0001bd68(param_1,iVar18,iStack_7c,0)" identifier (argument_list "(param_1,iVar18,iStack_7c,0)" ( identifier , identifier , identifier , number_literal )))) , (binary_expression "iVar17 != 0" identifier != number_literal)) ))) )) (compound_statement "{\n      if ((bVar2) && (param_2 == (undefined4 *)0x3)) {\n        puVar10 = (undefined4 *)(**(code **)(puVar22 + 0x17220))();\n        *(undefined4 *)(iVar18 + 0x20) = *puVar10;\n      }\n      *(ushort *)(iVar18 + 0x3e) = *(ushort *)(iVar18 + 0x3e) | 1;\n      (**(code **)(puVar22 + 0x17194))(*(undefined4 *)(iVar18 + 0xc));\n      *(undefined4 *)(iVar18 + 0xc) = 0;\n      if (((param_1[0xc] & 0x200U) != 0) && (-1 < iStack_7c)) {\n        (**(code **)(puVar22 + 0x17198))(iStack_7c);\n        *(undefined4 *)(iVar18 + 0xc) = 0;\n      }\n      bVar2 = false;\n    }" { (if_statement "if ((bVar2) && (param_2 == (undefined4 *)0x3)) {\n        puVar10 = (undefined4 *)(**(code **)(puVar22 + 0x17220))();\n        *(undefined4 *)(iVar18 + 0x20) = *puVar10;\n      }" if (parenthesized_expression "((bVar2) && (param_2 == (undefined4 *)0x3))" ( (binary_expression "(bVar2) && (param_2 == (undefined4 *)0x3)" (parenthesized_expression "(bVar2)" ( identifier )) && (parenthesized_expression "(param_2 == (undefined4 *)0x3)" ( (binary_expression "param_2 == (undefined4 *)0x3" identifier == (cast_expression "(undefined4 *)0x3" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) (compound_statement "{\n        puVar10 = (undefined4 *)(**(code **)(puVar22 + 0x17220))();\n        *(undefined4 *)(iVar18 + 0x20) = *puVar10;\n      }" { (expression_statement "puVar10 = (undefined4 *)(**(code **)(puVar22 + 0x17220))();" (assignment_expression "puVar10 = (undefined4 *)(**(code **)(puVar22 + 0x17220))()" identifier = (cast_expression "(undefined4 *)(**(code **)(puVar22 + 0x17220))()" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(puVar22 + 0x17220))()" (parenthesized_expression "(**(code **)(puVar22 + 0x17220))" ( (pointer_expression "**(code **)(puVar22 + 0x17220)" * (pointer_expression "*(code **)(puVar22 + 0x17220)" * (cast_expression "(code **)(puVar22 + 0x17220)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar22 + 0x17220)" ( (binary_expression "puVar22 + 0x17220" identifier + number_literal) ))))) )) (argument_list "()" ( ))))) ;) (expression_statement "*(undefined4 *)(iVar18 + 0x20) = *puVar10;" (assignment_expression "*(undefined4 *)(iVar18 + 0x20) = *puVar10" (pointer_expression "*(undefined4 *)(iVar18 + 0x20)" * (cast_expression "(undefined4 *)(iVar18 + 0x20)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar18 + 0x20)" ( (binary_expression "iVar18 + 0x20" identifier + number_literal) )))) = (pointer_expression "*puVar10" * identifier)) ;) })) (expression_statement "*(ushort *)(iVar18 + 0x3e) = *(ushort *)(iVar18 + 0x3e) | 1;" (assignment_expression "*(ushort *)(iVar18 + 0x3e) = *(ushort *)(iVar18 + 0x3e) | 1" (pointer_expression "*(ushort *)(iVar18 + 0x3e)" * (cast_expression "(ushort *)(iVar18 + 0x3e)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar18 + 0x3e)" ( (binary_expression "iVar18 + 0x3e" identifier + number_literal) )))) = (binary_expression "*(ushort *)(iVar18 + 0x3e) | 1" (pointer_expression "*(ushort *)(iVar18 + 0x3e)" * (cast_expression "(ushort *)(iVar18 + 0x3e)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar18 + 0x3e)" ( (binary_expression "iVar18 + 0x3e" identifier + number_literal) )))) | number_literal)) ;) (expression_statement "(**(code **)(puVar22 + 0x17194))(*(undefined4 *)(iVar18 + 0xc));" (call_expression "(**(code **)(puVar22 + 0x17194))(*(undefined4 *)(iVar18 + 0xc))" (parenthesized_expression "(**(code **)(puVar22 + 0x17194))" ( (pointer_expression "**(code **)(puVar22 + 0x17194)" * (pointer_expression "*(code **)(puVar22 + 0x17194)" * (cast_expression "(code **)(puVar22 + 0x17194)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar22 + 0x17194)" ( (binary_expression "puVar22 + 0x17194" identifier + number_literal) ))))) )) (argument_list "(*(undefined4 *)(iVar18 + 0xc))" ( (pointer_expression "*(undefined4 *)(iVar18 + 0xc)" * (cast_expression "(undefined4 *)(iVar18 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar18 + 0xc)" ( (binary_expression "iVar18 + 0xc" identifier + number_literal) )))) ))) ;) (expression_statement "*(undefined4 *)(iVar18 + 0xc) = 0;" (assignment_expression "*(undefined4 *)(iVar18 + 0xc) = 0" (pointer_expression "*(undefined4 *)(iVar18 + 0xc)" * (cast_expression "(undefined4 *)(iVar18 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar18 + 0xc)" ( (binary_expression "iVar18 + 0xc" identifier + number_literal) )))) = number_literal) ;) (if_statement "if (((param_1[0xc] & 0x200U) != 0) && (-1 < iStack_7c)) {\n        (**(code **)(puVar22 + 0x17198))(iStack_7c);\n        *(undefined4 *)(iVar18 + 0xc) = 0;\n      }" if (parenthesized_expression "(((param_1[0xc] & 0x200U) != 0) && (-1 < iStack_7c))" ( (binary_expression "((param_1[0xc] & 0x200U) != 0) && (-1 < iStack_7c)" (parenthesized_expression "((param_1[0xc] & 0x200U) != 0)" ( (binary_expression "(param_1[0xc] & 0x200U) != 0" (parenthesized_expression "(param_1[0xc] & 0x200U)" ( (binary_expression "param_1[0xc] & 0x200U" (subscript_expression "param_1[0xc]" identifier [ number_literal ]) & number_literal) )) != number_literal) )) && (parenthesized_expression "(-1 < iStack_7c)" ( (binary_expression "-1 < iStack_7c" number_literal < identifier) ))) )) (compound_statement "{\n        (**(code **)(puVar22 + 0x17198))(iStack_7c);\n        *(undefined4 *)(iVar18 + 0xc) = 0;\n      }" { (expression_statement "(**(code **)(puVar22 + 0x17198))(iStack_7c);" (call_expression "(**(code **)(puVar22 + 0x17198))(iStack_7c)" (parenthesized_expression "(**(code **)(puVar22 + 0x17198))" ( (pointer_expression "**(code **)(puVar22 + 0x17198)" * (pointer_expression "*(code **)(puVar22 + 0x17198)" * (cast_expression "(code **)(puVar22 + 0x17198)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar22 + 0x17198)" ( (binary_expression "puVar22 + 0x17198" identifier + number_literal) ))))) )) (argument_list "(iStack_7c)" ( identifier ))) ;) (expression_statement "*(undefined4 *)(iVar18 + 0xc) = 0;" (assignment_expression "*(undefined4 *)(iVar18 + 0xc) = 0" (pointer_expression "*(undefined4 *)(iVar18 + 0xc)" * (cast_expression "(undefined4 *)(iVar18 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar18 + 0xc)" ( (binary_expression "iVar18 + 0xc" identifier + number_literal) )))) = number_literal) ;) })) (expression_statement "bVar2 = false;" (assignment_expression "bVar2 = false" identifier = false) ;) }) (else_clause "else {\n      bVar2 = true;\n    }" else (compound_statement "{\n      bVar2 = true;\n    }" { (expression_statement "bVar2 = true;" (assignment_expression "bVar2 = true" identifier = true) ;) }))) }))) (labeled_statement "LAB_0001c1b8:\n  iVar17 = *(int *)(iVar18 + 0x28) + -1;" statement_identifier : (expression_statement "iVar17 = *(int *)(iVar18 + 0x28) + -1;" (assignment_expression "iVar17 = *(int *)(iVar18 + 0x28) + -1" identifier = (binary_expression "*(int *)(iVar18 + 0x28) + -1" (pointer_expression "*(int *)(iVar18 + 0x28)" * (cast_expression "(int *)(iVar18 + 0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar18 + 0x28)" ( (binary_expression "iVar18 + 0x28" identifier + number_literal) )))) + number_literal)) ;)) (if_statement "if (*(char *)(*(int *)(iVar18 + 0x1c) + iVar17) != '/') {\n    iVar17 = *(int *)(iVar18 + 0x28);\n  }" if (parenthesized_expression "(*(char *)(*(int *)(iVar18 + 0x1c) + iVar17) != '/')" ( (binary_expression "*(char *)(*(int *)(iVar18 + 0x1c) + iVar17) != '/'" (pointer_expression "*(char *)(*(int *)(iVar18 + 0x1c) + iVar17)" * (cast_expression "(char *)(*(int *)(iVar18 + 0x1c) + iVar17)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar18 + 0x1c) + iVar17)" ( (binary_expression "*(int *)(iVar18 + 0x1c) + iVar17" (pointer_expression "*(int *)(iVar18 + 0x1c)" * (cast_expression "(int *)(iVar18 + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar18 + 0x1c)" ( (binary_expression "iVar18 + 0x1c" identifier + number_literal) )))) + identifier) )))) != (char_literal "'/'" ' character ')) )) (compound_statement "{\n    iVar17 = *(int *)(iVar18 + 0x28);\n  }" { (expression_statement "iVar17 = *(int *)(iVar18 + 0x28);" (assignment_expression "iVar17 = *(int *)(iVar18 + 0x28)" identifier = (pointer_expression "*(int *)(iVar18 + 0x28)" * (cast_expression "(int *)(iVar18 + 0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar18 + 0x28)" ( (binary_expression "iVar18 + 0x28" identifier + number_literal) ))))) ;) })) (if_statement "if ((param_1[0xc] & 4U) == 0) {\n    puStack_90 = (undefined1 *)0x0;\n  }\n  else {\n    puStack_90 = (undefined1 *)(param_1[6] + iVar17) + 1;\n    *(undefined1 *)(param_1[6] + iVar17) = 0x2f;\n  }" if (parenthesized_expression "((param_1[0xc] & 4U) == 0)" ( (binary_expression "(param_1[0xc] & 4U) == 0" (parenthesized_expression "(param_1[0xc] & 4U)" ( (binary_expression "param_1[0xc] & 4U" (subscript_expression "param_1[0xc]" identifier [ number_literal ]) & number_literal) )) == number_literal) )) (compound_statement "{\n    puStack_90 = (undefined1 *)0x0;\n  }" { (expression_statement "puStack_90 = (undefined1 *)0x0;" (assignment_expression "puStack_90 = (undefined1 *)0x0" identifier = (cast_expression "(undefined1 *)0x0" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }) (else_clause "else {\n    puStack_90 = (undefined1 *)(param_1[6] + iVar17) + 1;\n    *(undefined1 *)(param_1[6] + iVar17) = 0x2f;\n  }" else (compound_statement "{\n    puStack_90 = (undefined1 *)(param_1[6] + iVar17) + 1;\n    *(undefined1 *)(param_1[6] + iVar17) = 0x2f;\n  }" { (expression_statement "puStack_90 = (undefined1 *)(param_1[6] + iVar17) + 1;" (assignment_expression "puStack_90 = (undefined1 *)(param_1[6] + iVar17) + 1" identifier = (binary_expression "(undefined1 *)(param_1[6] + iVar17) + 1" (cast_expression "(undefined1 *)(param_1[6] + iVar17)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1[6] + iVar17)" ( (binary_expression "param_1[6] + iVar17" (subscript_expression "param_1[6]" identifier [ number_literal ]) + identifier) ))) + number_literal)) ;) (expression_statement "*(undefined1 *)(param_1[6] + iVar17) = 0x2f;" (assignment_expression "*(undefined1 *)(param_1[6] + iVar17) = 0x2f" (pointer_expression "*(undefined1 *)(param_1[6] + iVar17)" * (cast_expression "(undefined1 *)(param_1[6] + iVar17)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1[6] + iVar17)" ( (binary_expression "param_1[6] + iVar17" (subscript_expression "param_1[6]" identifier [ number_literal ]) + identifier) )))) = number_literal) ;) }))) (expression_statement "uVar20 = iVar17 + 1;" (assignment_expression "uVar20 = iVar17 + 1" identifier = (binary_expression "iVar17 + 1" identifier + number_literal)) ;) (expression_statement "uVar23 = param_1[9] - uVar20;" (assignment_expression "uVar23 = param_1[9] - uVar20" identifier = (binary_expression "param_1[9] - uVar20" (subscript_expression "param_1[9]" identifier [ number_literal ]) - identifier)) ;) (expression_statement "iVar6 = *(int *)(iVar18 + 0x30);" (assignment_expression "iVar6 = *(int *)(iVar18 + 0x30)" identifier = (pointer_expression "*(int *)(iVar18 + 0x30)" * (cast_expression "(int *)(iVar18 + 0x30)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar18 + 0x30)" ( (binary_expression "iVar18 + 0x30" identifier + number_literal) ))))) ;) (expression_statement "bVar4 = false;" (assignment_expression "bVar4 = false" identifier = false) ;) (expression_statement "iStack_8c = 0;" (assignment_expression "iStack_8c = 0" identifier = number_literal) ;) (expression_statement "iStack_a4 = 0;" (assignment_expression "iStack_a4 = 0" identifier = number_literal) ;) (expression_statement "uVar19 = 0;" (assignment_expression "uVar19 = 0" identifier = number_literal) ;) (expression_statement "iStack_a0 = 0;" (assignment_expression "iStack_a0 = 0" identifier = number_literal) ;) (expression_statement "iVar7 = *(int *)(puVar22 + 0x16fd4);" (assignment_expression "iVar7 = *(int *)(puVar22 + 0x16fd4)" identifier = (pointer_expression "*(int *)(puVar22 + 0x16fd4)" * (cast_expression "(int *)(puVar22 + 0x16fd4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar22 + 0x16fd4)" ( (binary_expression "puVar22 + 0x16fd4" identifier + number_literal) ))))) ;) (expression_statement "iVar8 = *(int *)(puVar22 + 0x16fd4);" (assignment_expression "iVar8 = *(int *)(puVar22 + 0x16fd4)" identifier = (pointer_expression "*(int *)(puVar22 + 0x16fd4)" * (cast_expression "(int *)(puVar22 + 0x16fd4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar22 + 0x16fd4)" ( (binary_expression "puVar22 + 0x16fd4" identifier + number_literal) ))))) ;) (expression_statement "iVar9 = *(int *)(puVar22 + 0x16fd4);" (assignment_expression "iVar9 = *(int *)(puVar22 + 0x16fd4)" identifier = (pointer_expression "*(int *)(puVar22 + 0x16fd4)" * (cast_expression "(int *)(puVar22 + 0x16fd4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar22 + 0x16fd4)" ( (binary_expression "puVar22 + 0x16fd4" identifier + number_literal) ))))) ;) (labeled_statement "LAB_0001c96c:\n  do {\n    do {\n      if (*(int *)(iVar18 + 0xc) == 0) goto LAB_0001c66c;\n      piVar16 = (int *)(**(code **)(puVar22 + 0x17220))();\n      *piVar16 = 0;\n      puVar10 = (undefined4 *)(**(code **)(puVar22 + 0x171d8))(*(undefined4 *)(iVar18 + 0xc));\n      if (puVar10 == (undefined4 *)0x0) {\n        if (*piVar16 != 0) {\n          *(int *)(iVar18 + 0x20) = *piVar16;\n          uVar15 = 7;\n          if ((iVar5 == 0) && (uVar19 == 0)) {\n            uVar15 = 4;\n          }\n          *(undefined2 *)(iVar18 + 0x3c) = uVar15;\n        }\n        if (*(int *)(iVar18 + 0xc) != 0) {\n          (**(code **)(puVar22 + 0x17194))();\n          *(undefined4 *)(iVar18 + 0xc) = 0;\n        }\n        goto LAB_0001c66c;\n      }\n    } while ((((param_1[0xc] & 0x20U) == 0) && (*(char *)((int)puVar10 + 0x13) == '.')) &&\n            ((*(char *)(puVar10 + 5) == '\0' || ((puVar10[5] & 0xffff0000) == 0x2e000000))));\n    uVar11 = (**(code **)(puVar22 + 0x17240))((int)puVar10 + 0x13);\n    iVar12 = (*(code *)(iVar7 + -0x4b14))(param_1,(int)puVar10 + 0x13,uVar11);\n    if (iVar12 == 0) {\nLAB_0001c794:\n      iVar5 = *piVar16;\n      (**(code **)(puVar22 + 0x172c8))(iVar12);\n      FUN_0001b6fc(iStack_a0);\n      (**(code **)(puVar22 + 0x17194))(*(undefined4 *)(iVar18 + 0xc));\n      *(undefined4 *)(iVar18 + 0xc) = 0;\n      *(undefined2 *)(iVar18 + 0x3c) = 7;\n      param_1[0xc] = param_1[0xc] | 0x4000;\n      *piVar16 = iVar5;\n      return 0;\n    }\n    if (uVar23 <= uVar11) {\n      iVar24 = param_1[6];\n      iVar14 = FUN_0001b0cc(param_1,iVar17 + 2 + uVar11);\n      if (iVar14 == 0) goto LAB_0001c794;\n      if ((param_1[6] != iVar24) && (iStack_8c = iVar14, (param_1[0xc] & 4U) != 0)) {\n        puStack_90 = (undefined1 *)(param_1[6] + uVar20);\n      }\n      uVar23 = param_1[9] - uVar20;\n    }\n    if (uVar20 + uVar11 < uVar20) {\n      (**(code **)(puVar22 + 0x172c8))(iVar12);\n      FUN_0001b6fc(iStack_a0);\n      (**(code **)(puVar22 + 0x17194))(*(undefined4 *)(iVar18 + 0xc));\n      *(undefined4 *)(iVar18 + 0xc) = 0;\n      *(undefined2 *)(iVar18 + 0x3c) = 7;\n      param_1[0xc] = param_1[0xc] | 0x4000;\n      *piVar16 = 0x4e;\n      return 0;\n    }\n    *(int *)(iVar12 + 0x30) = iVar6 + 1;\n    *(int *)(iVar12 + 4) = *param_1;\n    *(uint *)(iVar12 + 0x28) = uVar20 + uVar11;\n    uVar13 = *puVar10;\n    *(undefined4 *)(iVar12 + 0x5c) = puVar10[1];\n    *(undefined4 *)(iVar12 + 0x58) = uVar13;\n    if ((param_1[0xc] & 4U) == 0) {\n      *(int *)(iVar12 + 0x18) = iVar12 + 0xe8;\n      iVar14 = param_1[0xb];\n    }\n    else {\n      *(undefined4 *)(iVar12 + 0x18) = *(undefined4 *)(iVar12 + 0x1c);\n      (**(code **)(puVar22 + 0x172cc))(puStack_90,iVar12 + 0xe8,*(int *)(iVar12 + 0x34) + 1);\n      iVar14 = param_1[0xb];\n    }\n    if ((iVar14 == 0) || ((param_1[0xc] & 0x400U) != 0)) {\n      if (((param_1[0xc] & 0x18U) == 0x18) && ((*(byte *)((int)puVar10 + 0x12) & 0xfb) != 0)) {\n        *(undefined2 *)(iVar12 + 0x3c) = 0xb;\n        bVar3 = true;\n        if (*(byte *)((int)puVar10 + 0x12) < 0xd) {\n                    \n                    \n          iVar5 = (*(code *)(puVar22 +\n                            *(int *)(iVar9 + 0x2d30 + (uint)*(byte *)((int)puVar10 + 0x12) * 4) +\n                            0x1ef9c))();\n          return iVar5;\n        }\n      }\n      else {\n        *(undefined2 *)(iVar12 + 0x3c) = 0xb;\n        bVar3 = false;\n        if (*(byte *)((int)puVar10 + 0x12) < 0xd) {\n                    \n                    \n          iVar5 = (*(code *)(puVar22 +\n                            *(int *)(*(int *)(puVar22 + 0x16fd4) + 0x2d64 +\n                                    (uint)*(byte *)((int)puVar10 + 0x12) * 4) + 0x1ef9c))();\n          return iVar5;\n        }\n      }\n      *(undefined4 *)(iVar12 + 0x60) = 0;\n      if (bVar3) {\n        uVar13 = 1;\n      }\n      else {\n        uVar13 = 2;\n      }\n      *(undefined4 *)(iVar12 + 0x84) = uVar13;\n      *(undefined4 *)(iVar12 + 0x80) = 0;\n    }\n    else {\n      uVar15 = FUN_0001b18c(param_1,iVar12,0);\n      *(undefined2 *)(iVar12 + 0x3c) = uVar15;\n    }\n    *(undefined4 *)(iVar12 + 8) = 0;\n    iVar14 = iVar12;\n    if (iStack_a0 != 0) {\n      *(int *)(iStack_a4 + 8) = iVar12;\n      iVar14 = iStack_a0;\n    }\n    iStack_a0 = iVar14;\n    iStack_a4 = iVar12;\n    if (uVar19 == 10000) {\n      if (param_1[0xb] != 0) {\nLAB_0001cb74:\n        uVar19 = 0x2711;\n        goto LAB_0001c96c;\n      }\n      iVar12 = (*(code *)(iVar8 + -0x47a8))(iVar18,iStack_7c);\n      if (iVar12 == 0x6969) {\n        bVar4 = false;\n      }\n      else if (iVar12 == 0x1021994) {\n        bVar4 = false;\n      }\n      else {\n        if (iVar12 != -0xacb2be) {\n          bVar4 = true;\n          goto LAB_0001cb74;\n        }\n        bVar4 = false;\n      }\n    }\n    uVar19 = uVar19 + 1;\n  } while (uVar19 < uStack_94);" statement_identifier : (do_statement "do {\n    do {\n      if (*(int *)(iVar18 + 0xc) == 0) goto LAB_0001c66c;\n      piVar16 = (int *)(**(code **)(puVar22 + 0x17220))();\n      *piVar16 = 0;\n      puVar10 = (undefined4 *)(**(code **)(puVar22 + 0x171d8))(*(undefined4 *)(iVar18 + 0xc));\n      if (puVar10 == (undefined4 *)0x0) {\n        if (*piVar16 != 0) {\n          *(int *)(iVar18 + 0x20) = *piVar16;\n          uVar15 = 7;\n          if ((iVar5 == 0) && (uVar19 == 0)) {\n            uVar15 = 4;\n          }\n          *(undefined2 *)(iVar18 + 0x3c) = uVar15;\n        }\n        if (*(int *)(iVar18 + 0xc) != 0) {\n          (**(code **)(puVar22 + 0x17194))();\n          *(undefined4 *)(iVar18 + 0xc) = 0;\n        }\n        goto LAB_0001c66c;\n      }\n    } while ((((param_1[0xc] & 0x20U) == 0) && (*(char *)((int)puVar10 + 0x13) == '.')) &&\n            ((*(char *)(puVar10 + 5) == '\0' || ((puVar10[5] & 0xffff0000) == 0x2e000000))));\n    uVar11 = (**(code **)(puVar22 + 0x17240))((int)puVar10 + 0x13);\n    iVar12 = (*(code *)(iVar7 + -0x4b14))(param_1,(int)puVar10 + 0x13,uVar11);\n    if (iVar12 == 0) {\nLAB_0001c794:\n      iVar5 = *piVar16;\n      (**(code **)(puVar22 + 0x172c8))(iVar12);\n      FUN_0001b6fc(iStack_a0);\n      (**(code **)(puVar22 + 0x17194))(*(undefined4 *)(iVar18 + 0xc));\n      *(undefined4 *)(iVar18 + 0xc) = 0;\n      *(undefined2 *)(iVar18 + 0x3c) = 7;\n      param_1[0xc] = param_1[0xc] | 0x4000;\n      *piVar16 = iVar5;\n      return 0;\n    }\n    if (uVar23 <= uVar11) {\n      iVar24 = param_1[6];\n      iVar14 = FUN_0001b0cc(param_1,iVar17 + 2 + uVar11);\n      if (iVar14 == 0) goto LAB_0001c794;\n      if ((param_1[6] != iVar24) && (iStack_8c = iVar14, (param_1[0xc] & 4U) != 0)) {\n        puStack_90 = (undefined1 *)(param_1[6] + uVar20);\n      }\n      uVar23 = param_1[9] - uVar20;\n    }\n    if (uVar20 + uVar11 < uVar20) {\n      (**(code **)(puVar22 + 0x172c8))(iVar12);\n      FUN_0001b6fc(iStack_a0);\n      (**(code **)(puVar22 + 0x17194))(*(undefined4 *)(iVar18 + 0xc));\n      *(undefined4 *)(iVar18 + 0xc) = 0;\n      *(undefined2 *)(iVar18 + 0x3c) = 7;\n      param_1[0xc] = param_1[0xc] | 0x4000;\n      *piVar16 = 0x4e;\n      return 0;\n    }\n    *(int *)(iVar12 + 0x30) = iVar6 + 1;\n    *(int *)(iVar12 + 4) = *param_1;\n    *(uint *)(iVar12 + 0x28) = uVar20 + uVar11;\n    uVar13 = *puVar10;\n    *(undefined4 *)(iVar12 + 0x5c) = puVar10[1];\n    *(undefined4 *)(iVar12 + 0x58) = uVar13;\n    if ((param_1[0xc] & 4U) == 0) {\n      *(int *)(iVar12 + 0x18) = iVar12 + 0xe8;\n      iVar14 = param_1[0xb];\n    }\n    else {\n      *(undefined4 *)(iVar12 + 0x18) = *(undefined4 *)(iVar12 + 0x1c);\n      (**(code **)(puVar22 + 0x172cc))(puStack_90,iVar12 + 0xe8,*(int *)(iVar12 + 0x34) + 1);\n      iVar14 = param_1[0xb];\n    }\n    if ((iVar14 == 0) || ((param_1[0xc] & 0x400U) != 0)) {\n      if (((param_1[0xc] & 0x18U) == 0x18) && ((*(byte *)((int)puVar10 + 0x12) & 0xfb) != 0)) {\n        *(undefined2 *)(iVar12 + 0x3c) = 0xb;\n        bVar3 = true;\n        if (*(byte *)((int)puVar10 + 0x12) < 0xd) {\n                    \n                    \n          iVar5 = (*(code *)(puVar22 +\n                            *(int *)(iVar9 + 0x2d30 + (uint)*(byte *)((int)puVar10 + 0x12) * 4) +\n                            0x1ef9c))();\n          return iVar5;\n        }\n      }\n      else {\n        *(undefined2 *)(iVar12 + 0x3c) = 0xb;\n        bVar3 = false;\n        if (*(byte *)((int)puVar10 + 0x12) < 0xd) {\n                    \n                    \n          iVar5 = (*(code *)(puVar22 +\n                            *(int *)(*(int *)(puVar22 + 0x16fd4) + 0x2d64 +\n                                    (uint)*(byte *)((int)puVar10 + 0x12) * 4) + 0x1ef9c))();\n          return iVar5;\n        }\n      }\n      *(undefined4 *)(iVar12 + 0x60) = 0;\n      if (bVar3) {\n        uVar13 = 1;\n      }\n      else {\n        uVar13 = 2;\n      }\n      *(undefined4 *)(iVar12 + 0x84) = uVar13;\n      *(undefined4 *)(iVar12 + 0x80) = 0;\n    }\n    else {\n      uVar15 = FUN_0001b18c(param_1,iVar12,0);\n      *(undefined2 *)(iVar12 + 0x3c) = uVar15;\n    }\n    *(undefined4 *)(iVar12 + 8) = 0;\n    iVar14 = iVar12;\n    if (iStack_a0 != 0) {\n      *(int *)(iStack_a4 + 8) = iVar12;\n      iVar14 = iStack_a0;\n    }\n    iStack_a0 = iVar14;\n    iStack_a4 = iVar12;\n    if (uVar19 == 10000) {\n      if (param_1[0xb] != 0) {\nLAB_0001cb74:\n        uVar19 = 0x2711;\n        goto LAB_0001c96c;\n      }\n      iVar12 = (*(code *)(iVar8 + -0x47a8))(iVar18,iStack_7c);\n      if (iVar12 == 0x6969) {\n        bVar4 = false;\n      }\n      else if (iVar12 == 0x1021994) {\n        bVar4 = false;\n      }\n      else {\n        if (iVar12 != -0xacb2be) {\n          bVar4 = true;\n          goto LAB_0001cb74;\n        }\n        bVar4 = false;\n      }\n    }\n    uVar19 = uVar19 + 1;\n  } while (uVar19 < uStack_94);" do (compound_statement "{\n    do {\n      if (*(int *)(iVar18 + 0xc) == 0) goto LAB_0001c66c;\n      piVar16 = (int *)(**(code **)(puVar22 + 0x17220))();\n      *piVar16 = 0;\n      puVar10 = (undefined4 *)(**(code **)(puVar22 + 0x171d8))(*(undefined4 *)(iVar18 + 0xc));\n      if (puVar10 == (undefined4 *)0x0) {\n        if (*piVar16 != 0) {\n          *(int *)(iVar18 + 0x20) = *piVar16;\n          uVar15 = 7;\n          if ((iVar5 == 0) && (uVar19 == 0)) {\n            uVar15 = 4;\n          }\n          *(undefined2 *)(iVar18 + 0x3c) = uVar15;\n        }\n        if (*(int *)(iVar18 + 0xc) != 0) {\n          (**(code **)(puVar22 + 0x17194))();\n          *(undefined4 *)(iVar18 + 0xc) = 0;\n        }\n        goto LAB_0001c66c;\n      }\n    } while ((((param_1[0xc] & 0x20U) == 0) && (*(char *)((int)puVar10 + 0x13) == '.')) &&\n            ((*(char *)(puVar10 + 5) == '\0' || ((puVar10[5] & 0xffff0000) == 0x2e000000))));\n    uVar11 = (**(code **)(puVar22 + 0x17240))((int)puVar10 + 0x13);\n    iVar12 = (*(code *)(iVar7 + -0x4b14))(param_1,(int)puVar10 + 0x13,uVar11);\n    if (iVar12 == 0) {\nLAB_0001c794:\n      iVar5 = *piVar16;\n      (**(code **)(puVar22 + 0x172c8))(iVar12);\n      FUN_0001b6fc(iStack_a0);\n      (**(code **)(puVar22 + 0x17194))(*(undefined4 *)(iVar18 + 0xc));\n      *(undefined4 *)(iVar18 + 0xc) = 0;\n      *(undefined2 *)(iVar18 + 0x3c) = 7;\n      param_1[0xc] = param_1[0xc] | 0x4000;\n      *piVar16 = iVar5;\n      return 0;\n    }\n    if (uVar23 <= uVar11) {\n      iVar24 = param_1[6];\n      iVar14 = FUN_0001b0cc(param_1,iVar17 + 2 + uVar11);\n      if (iVar14 == 0) goto LAB_0001c794;\n      if ((param_1[6] != iVar24) && (iStack_8c = iVar14, (param_1[0xc] & 4U) != 0)) {\n        puStack_90 = (undefined1 *)(param_1[6] + uVar20);\n      }\n      uVar23 = param_1[9] - uVar20;\n    }\n    if (uVar20 + uVar11 < uVar20) {\n      (**(code **)(puVar22 + 0x172c8))(iVar12);\n      FUN_0001b6fc(iStack_a0);\n      (**(code **)(puVar22 + 0x17194))(*(undefined4 *)(iVar18 + 0xc));\n      *(undefined4 *)(iVar18 + 0xc) = 0;\n      *(undefined2 *)(iVar18 + 0x3c) = 7;\n      param_1[0xc] = param_1[0xc] | 0x4000;\n      *piVar16 = 0x4e;\n      return 0;\n    }\n    *(int *)(iVar12 + 0x30) = iVar6 + 1;\n    *(int *)(iVar12 + 4) = *param_1;\n    *(uint *)(iVar12 + 0x28) = uVar20 + uVar11;\n    uVar13 = *puVar10;\n    *(undefined4 *)(iVar12 + 0x5c) = puVar10[1];\n    *(undefined4 *)(iVar12 + 0x58) = uVar13;\n    if ((param_1[0xc] & 4U) == 0) {\n      *(int *)(iVar12 + 0x18) = iVar12 + 0xe8;\n      iVar14 = param_1[0xb];\n    }\n    else {\n      *(undefined4 *)(iVar12 + 0x18) = *(undefined4 *)(iVar12 + 0x1c);\n      (**(code **)(puVar22 + 0x172cc))(puStack_90,iVar12 + 0xe8,*(int *)(iVar12 + 0x34) + 1);\n      iVar14 = param_1[0xb];\n    }\n    if ((iVar14 == 0) || ((param_1[0xc] & 0x400U) != 0)) {\n      if (((param_1[0xc] & 0x18U) == 0x18) && ((*(byte *)((int)puVar10 + 0x12) & 0xfb) != 0)) {\n        *(undefined2 *)(iVar12 + 0x3c) = 0xb;\n        bVar3 = true;\n        if (*(byte *)((int)puVar10 + 0x12) < 0xd) {\n                    \n                    \n          iVar5 = (*(code *)(puVar22 +\n                            *(int *)(iVar9 + 0x2d30 + (uint)*(byte *)((int)puVar10 + 0x12) * 4) +\n                            0x1ef9c))();\n          return iVar5;\n        }\n      }\n      else {\n        *(undefined2 *)(iVar12 + 0x3c) = 0xb;\n        bVar3 = false;\n        if (*(byte *)((int)puVar10 + 0x12) < 0xd) {\n                    \n                    \n          iVar5 = (*(code *)(puVar22 +\n                            *(int *)(*(int *)(puVar22 + 0x16fd4) + 0x2d64 +\n                                    (uint)*(byte *)((int)puVar10 + 0x12) * 4) + 0x1ef9c))();\n          return iVar5;\n        }\n      }\n      *(undefined4 *)(iVar12 + 0x60) = 0;\n      if (bVar3) {\n        uVar13 = 1;\n      }\n      else {\n        uVar13 = 2;\n      }\n      *(undefined4 *)(iVar12 + 0x84) = uVar13;\n      *(undefined4 *)(iVar12 + 0x80) = 0;\n    }\n    else {\n      uVar15 = FUN_0001b18c(param_1,iVar12,0);\n      *(undefined2 *)(iVar12 + 0x3c) = uVar15;\n    }\n    *(undefined4 *)(iVar12 + 8) = 0;\n    iVar14 = iVar12;\n    if (iStack_a0 != 0) {\n      *(int *)(iStack_a4 + 8) = iVar12;\n      iVar14 = iStack_a0;\n    }\n    iStack_a0 = iVar14;\n    iStack_a4 = iVar12;\n    if (uVar19 == 10000) {\n      if (param_1[0xb] != 0) {\nLAB_0001cb74:\n        uVar19 = 0x2711;\n        goto LAB_0001c96c;\n      }\n      iVar12 = (*(code *)(iVar8 + -0x47a8))(iVar18,iStack_7c);\n      if (iVar12 == 0x6969) {\n        bVar4 = false;\n      }\n      else if (iVar12 == 0x1021994) {\n        bVar4 = false;\n      }\n      else {\n        if (iVar12 != -0xacb2be) {\n          bVar4 = true;\n          goto LAB_0001cb74;\n        }\n        bVar4 = false;\n      }\n    }\n    uVar19 = uVar19 + 1;\n  }" { (do_statement "do {\n      if (*(int *)(iVar18 + 0xc) == 0) goto LAB_0001c66c;\n      piVar16 = (int *)(**(code **)(puVar22 + 0x17220))();\n      *piVar16 = 0;\n      puVar10 = (undefined4 *)(**(code **)(puVar22 + 0x171d8))(*(undefined4 *)(iVar18 + 0xc));\n      if (puVar10 == (undefined4 *)0x0) {\n        if (*piVar16 != 0) {\n          *(int *)(iVar18 + 0x20) = *piVar16;\n          uVar15 = 7;\n          if ((iVar5 == 0) && (uVar19 == 0)) {\n            uVar15 = 4;\n          }\n          *(undefined2 *)(iVar18 + 0x3c) = uVar15;\n        }\n        if (*(int *)(iVar18 + 0xc) != 0) {\n          (**(code **)(puVar22 + 0x17194))();\n          *(undefined4 *)(iVar18 + 0xc) = 0;\n        }\n        goto LAB_0001c66c;\n      }\n    } while ((((param_1[0xc] & 0x20U) == 0) && (*(char *)((int)puVar10 + 0x13) == '.')) &&\n            ((*(char *)(puVar10 + 5) == '\0' || ((puVar10[5] & 0xffff0000) == 0x2e000000))));" do (compound_statement "{\n      if (*(int *)(iVar18 + 0xc) == 0) goto LAB_0001c66c;\n      piVar16 = (int *)(**(code **)(puVar22 + 0x17220))();\n      *piVar16 = 0;\n      puVar10 = (undefined4 *)(**(code **)(puVar22 + 0x171d8))(*(undefined4 *)(iVar18 + 0xc));\n      if (puVar10 == (undefined4 *)0x0) {\n        if (*piVar16 != 0) {\n          *(int *)(iVar18 + 0x20) = *piVar16;\n          uVar15 = 7;\n          if ((iVar5 == 0) && (uVar19 == 0)) {\n            uVar15 = 4;\n          }\n          *(undefined2 *)(iVar18 + 0x3c) = uVar15;\n        }\n        if (*(int *)(iVar18 + 0xc) != 0) {\n          (**(code **)(puVar22 + 0x17194))();\n          *(undefined4 *)(iVar18 + 0xc) = 0;\n        }\n        goto LAB_0001c66c;\n      }\n    }" { (if_statement "if (*(int *)(iVar18 + 0xc) == 0) goto LAB_0001c66c;" if (parenthesized_expression "(*(int *)(iVar18 + 0xc) == 0)" ( (binary_expression "*(int *)(iVar18 + 0xc) == 0" (pointer_expression "*(int *)(iVar18 + 0xc)" * (cast_expression "(int *)(iVar18 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar18 + 0xc)" ( (binary_expression "iVar18 + 0xc" identifier + number_literal) )))) == number_literal) )) (goto_statement "goto LAB_0001c66c;" goto statement_identifier ;)) (expression_statement "piVar16 = (int *)(**(code **)(puVar22 + 0x17220))();" (assignment_expression "piVar16 = (int *)(**(code **)(puVar22 + 0x17220))()" identifier = (cast_expression "(int *)(**(code **)(puVar22 + 0x17220))()" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(puVar22 + 0x17220))()" (parenthesized_expression "(**(code **)(puVar22 + 0x17220))" ( (pointer_expression "**(code **)(puVar22 + 0x17220)" * (pointer_expression "*(code **)(puVar22 + 0x17220)" * (cast_expression "(code **)(puVar22 + 0x17220)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar22 + 0x17220)" ( (binary_expression "puVar22 + 0x17220" identifier + number_literal) ))))) )) (argument_list "()" ( ))))) ;) (expression_statement "*piVar16 = 0;" (assignment_expression "*piVar16 = 0" (pointer_expression "*piVar16" * identifier) = number_literal) ;) (expression_statement "puVar10 = (undefined4 *)(**(code **)(puVar22 + 0x171d8))(*(undefined4 *)(iVar18 + 0xc));" (assignment_expression "puVar10 = (undefined4 *)(**(code **)(puVar22 + 0x171d8))(*(undefined4 *)(iVar18 + 0xc))" identifier = (cast_expression "(undefined4 *)(**(code **)(puVar22 + 0x171d8))(*(undefined4 *)(iVar18 + 0xc))" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(puVar22 + 0x171d8))(*(undefined4 *)(iVar18 + 0xc))" (parenthesized_expression "(**(code **)(puVar22 + 0x171d8))" ( (pointer_expression "**(code **)(puVar22 + 0x171d8)" * (pointer_expression "*(code **)(puVar22 + 0x171d8)" * (cast_expression "(code **)(puVar22 + 0x171d8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar22 + 0x171d8)" ( (binary_expression "puVar22 + 0x171d8" identifier + number_literal) ))))) )) (argument_list "(*(undefined4 *)(iVar18 + 0xc))" ( (pointer_expression "*(undefined4 *)(iVar18 + 0xc)" * (cast_expression "(undefined4 *)(iVar18 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar18 + 0xc)" ( (binary_expression "iVar18 + 0xc" identifier + number_literal) )))) ))))) ;) (if_statement "if (puVar10 == (undefined4 *)0x0) {\n        if (*piVar16 != 0) {\n          *(int *)(iVar18 + 0x20) = *piVar16;\n          uVar15 = 7;\n          if ((iVar5 == 0) && (uVar19 == 0)) {\n            uVar15 = 4;\n          }\n          *(undefined2 *)(iVar18 + 0x3c) = uVar15;\n        }\n        if (*(int *)(iVar18 + 0xc) != 0) {\n          (**(code **)(puVar22 + 0x17194))();\n          *(undefined4 *)(iVar18 + 0xc) = 0;\n        }\n        goto LAB_0001c66c;\n      }" if (parenthesized_expression "(puVar10 == (undefined4 *)0x0)" ( (binary_expression "puVar10 == (undefined4 *)0x0" identifier == (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        if (*piVar16 != 0) {\n          *(int *)(iVar18 + 0x20) = *piVar16;\n          uVar15 = 7;\n          if ((iVar5 == 0) && (uVar19 == 0)) {\n            uVar15 = 4;\n          }\n          *(undefined2 *)(iVar18 + 0x3c) = uVar15;\n        }\n        if (*(int *)(iVar18 + 0xc) != 0) {\n          (**(code **)(puVar22 + 0x17194))();\n          *(undefined4 *)(iVar18 + 0xc) = 0;\n        }\n        goto LAB_0001c66c;\n      }" { (if_statement "if (*piVar16 != 0) {\n          *(int *)(iVar18 + 0x20) = *piVar16;\n          uVar15 = 7;\n          if ((iVar5 == 0) && (uVar19 == 0)) {\n            uVar15 = 4;\n          }\n          *(undefined2 *)(iVar18 + 0x3c) = uVar15;\n        }" if (parenthesized_expression "(*piVar16 != 0)" ( (binary_expression "*piVar16 != 0" (pointer_expression "*piVar16" * identifier) != number_literal) )) (compound_statement "{\n          *(int *)(iVar18 + 0x20) = *piVar16;\n          uVar15 = 7;\n          if ((iVar5 == 0) && (uVar19 == 0)) {\n            uVar15 = 4;\n          }\n          *(undefined2 *)(iVar18 + 0x3c) = uVar15;\n        }" { (expression_statement "*(int *)(iVar18 + 0x20) = *piVar16;" (assignment_expression "*(int *)(iVar18 + 0x20) = *piVar16" (pointer_expression "*(int *)(iVar18 + 0x20)" * (cast_expression "(int *)(iVar18 + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar18 + 0x20)" ( (binary_expression "iVar18 + 0x20" identifier + number_literal) )))) = (pointer_expression "*piVar16" * identifier)) ;) (expression_statement "uVar15 = 7;" (assignment_expression "uVar15 = 7" identifier = number_literal) ;) (if_statement "if ((iVar5 == 0) && (uVar19 == 0)) {\n            uVar15 = 4;\n          }" if (parenthesized_expression "((iVar5 == 0) && (uVar19 == 0))" ( (binary_expression "(iVar5 == 0) && (uVar19 == 0)" (parenthesized_expression "(iVar5 == 0)" ( (binary_expression "iVar5 == 0" identifier == number_literal) )) && (parenthesized_expression "(uVar19 == 0)" ( (binary_expression "uVar19 == 0" identifier == number_literal) ))) )) (compound_statement "{\n            uVar15 = 4;\n          }" { (expression_statement "uVar15 = 4;" (assignment_expression "uVar15 = 4" identifier = number_literal) ;) })) (expression_statement "*(undefined2 *)(iVar18 + 0x3c) = uVar15;" (assignment_expression "*(undefined2 *)(iVar18 + 0x3c) = uVar15" (pointer_expression "*(undefined2 *)(iVar18 + 0x3c)" * (cast_expression "(undefined2 *)(iVar18 + 0x3c)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar18 + 0x3c)" ( (binary_expression "iVar18 + 0x3c" identifier + number_literal) )))) = identifier) ;) })) (if_statement "if (*(int *)(iVar18 + 0xc) != 0) {\n          (**(code **)(puVar22 + 0x17194))();\n          *(undefined4 *)(iVar18 + 0xc) = 0;\n        }" if (parenthesized_expression "(*(int *)(iVar18 + 0xc) != 0)" ( (binary_expression "*(int *)(iVar18 + 0xc) != 0" (pointer_expression "*(int *)(iVar18 + 0xc)" * (cast_expression "(int *)(iVar18 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar18 + 0xc)" ( (binary_expression "iVar18 + 0xc" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n          (**(code **)(puVar22 + 0x17194))();\n          *(undefined4 *)(iVar18 + 0xc) = 0;\n        }" { (expression_statement "(**(code **)(puVar22 + 0x17194))();" (call_expression "(**(code **)(puVar22 + 0x17194))()" (parenthesized_expression "(**(code **)(puVar22 + 0x17194))" ( (pointer_expression "**(code **)(puVar22 + 0x17194)" * (pointer_expression "*(code **)(puVar22 + 0x17194)" * (cast_expression "(code **)(puVar22 + 0x17194)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar22 + 0x17194)" ( (binary_expression "puVar22 + 0x17194" identifier + number_literal) ))))) )) (argument_list "()" ( ))) ;) (expression_statement "*(undefined4 *)(iVar18 + 0xc) = 0;" (assignment_expression "*(undefined4 *)(iVar18 + 0xc) = 0" (pointer_expression "*(undefined4 *)(iVar18 + 0xc)" * (cast_expression "(undefined4 *)(iVar18 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar18 + 0xc)" ( (binary_expression "iVar18 + 0xc" identifier + number_literal) )))) = number_literal) ;) })) (goto_statement "goto LAB_0001c66c;" goto statement_identifier ;) })) }) while (parenthesized_expression "((((param_1[0xc] & 0x20U) == 0) && (*(char *)((int)puVar10 + 0x13) == '.')) &&\n            ((*(char *)(puVar10 + 5) == '\0' || ((puVar10[5] & 0xffff0000) == 0x2e000000))))" ( (binary_expression "(((param_1[0xc] & 0x20U) == 0) && (*(char *)((int)puVar10 + 0x13) == '.')) &&\n            ((*(char *)(puVar10 + 5) == '\0' || ((puVar10[5] & 0xffff0000) == 0x2e000000)))" (parenthesized_expression "(((param_1[0xc] & 0x20U) == 0) && (*(char *)((int)puVar10 + 0x13) == '.'))" ( (binary_expression "((param_1[0xc] & 0x20U) == 0) && (*(char *)((int)puVar10 + 0x13) == '.')" (parenthesized_expression "((param_1[0xc] & 0x20U) == 0)" ( (binary_expression "(param_1[0xc] & 0x20U) == 0" (parenthesized_expression "(param_1[0xc] & 0x20U)" ( (binary_expression "param_1[0xc] & 0x20U" (subscript_expression "param_1[0xc]" identifier [ number_literal ]) & number_literal) )) == number_literal) )) && (parenthesized_expression "(*(char *)((int)puVar10 + 0x13) == '.')" ( (binary_expression "*(char *)((int)puVar10 + 0x13) == '.'" (pointer_expression "*(char *)((int)puVar10 + 0x13)" * (cast_expression "(char *)((int)puVar10 + 0x13)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar10 + 0x13)" ( (binary_expression "(int)puVar10 + 0x13" (cast_expression "(int)puVar10" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) == (char_literal "'.'" ' character ')) ))) )) && (parenthesized_expression "((*(char *)(puVar10 + 5) == '\0' || ((puVar10[5] & 0xffff0000) == 0x2e000000)))" ( (parenthesized_expression "(*(char *)(puVar10 + 5) == '\0' || ((puVar10[5] & 0xffff0000) == 0x2e000000))" ( (binary_expression "*(char *)(puVar10 + 5) == '\0' || ((puVar10[5] & 0xffff0000) == 0x2e000000)" (binary_expression "*(char *)(puVar10 + 5) == '\0'" (pointer_expression "*(char *)(puVar10 + 5)" * (cast_expression "(char *)(puVar10 + 5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + 5)" ( (binary_expression "puVar10 + 5" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) || (parenthesized_expression "((puVar10[5] & 0xffff0000) == 0x2e000000)" ( (binary_expression "(puVar10[5] & 0xffff0000) == 0x2e000000" (parenthesized_expression "(puVar10[5] & 0xffff0000)" ( (binary_expression "puVar10[5] & 0xffff0000" (subscript_expression "puVar10[5]" identifier [ number_literal ]) & number_literal) )) == number_literal) ))) )) ))) )) ;) (expression_statement "uVar11 = (**(code **)(puVar22 + 0x17240))((int)puVar10 + 0x13);" (assignment_expression "uVar11 = (**(code **)(puVar22 + 0x17240))((int)puVar10 + 0x13)" identifier = (call_expression "(**(code **)(puVar22 + 0x17240))((int)puVar10 + 0x13)" (parenthesized_expression "(**(code **)(puVar22 + 0x17240))" ( (pointer_expression "**(code **)(puVar22 + 0x17240)" * (pointer_expression "*(code **)(puVar22 + 0x17240)" * (cast_expression "(code **)(puVar22 + 0x17240)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar22 + 0x17240)" ( (binary_expression "puVar22 + 0x17240" identifier + number_literal) ))))) )) (argument_list "((int)puVar10 + 0x13)" ( (binary_expression "(int)puVar10 + 0x13" (cast_expression "(int)puVar10" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "iVar12 = (*(code *)(iVar7 + -0x4b14))(param_1,(int)puVar10 + 0x13,uVar11);" (assignment_expression "iVar12 = (*(code *)(iVar7 + -0x4b14))(param_1,(int)puVar10 + 0x13,uVar11)" identifier = (call_expression "(*(code *)(iVar7 + -0x4b14))(param_1,(int)puVar10 + 0x13,uVar11)" (parenthesized_expression "(*(code *)(iVar7 + -0x4b14))" ( (pointer_expression "*(code *)(iVar7 + -0x4b14)" * (cast_expression "(code *)(iVar7 + -0x4b14)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + -0x4b14)" ( (binary_expression "iVar7 + -0x4b14" identifier + number_literal) )))) )) (argument_list "(param_1,(int)puVar10 + 0x13,uVar11)" ( identifier , (binary_expression "(int)puVar10 + 0x13" (cast_expression "(int)puVar10" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) , identifier )))) ;) (if_statement "if (iVar12 == 0) {\nLAB_0001c794:\n      iVar5 = *piVar16;\n      (**(code **)(puVar22 + 0x172c8))(iVar12);\n      FUN_0001b6fc(iStack_a0);\n      (**(code **)(puVar22 + 0x17194))(*(undefined4 *)(iVar18 + 0xc));\n      *(undefined4 *)(iVar18 + 0xc) = 0;\n      *(undefined2 *)(iVar18 + 0x3c) = 7;\n      param_1[0xc] = param_1[0xc] | 0x4000;\n      *piVar16 = iVar5;\n      return 0;\n    }" if (parenthesized_expression "(iVar12 == 0)" ( (binary_expression "iVar12 == 0" identifier == number_literal) )) (compound_statement "{\nLAB_0001c794:\n      iVar5 = *piVar16;\n      (**(code **)(puVar22 + 0x172c8))(iVar12);\n      FUN_0001b6fc(iStack_a0);\n      (**(code **)(puVar22 + 0x17194))(*(undefined4 *)(iVar18 + 0xc));\n      *(undefined4 *)(iVar18 + 0xc) = 0;\n      *(undefined2 *)(iVar18 + 0x3c) = 7;\n      param_1[0xc] = param_1[0xc] | 0x4000;\n      *piVar16 = iVar5;\n      return 0;\n    }" { (labeled_statement "LAB_0001c794:\n      iVar5 = *piVar16;" statement_identifier : (expression_statement "iVar5 = *piVar16;" (assignment_expression "iVar5 = *piVar16" identifier = (pointer_expression "*piVar16" * identifier)) ;)) (expression_statement "(**(code **)(puVar22 + 0x172c8))(iVar12);" (call_expression "(**(code **)(puVar22 + 0x172c8))(iVar12)" (parenthesized_expression "(**(code **)(puVar22 + 0x172c8))" ( (pointer_expression "**(code **)(puVar22 + 0x172c8)" * (pointer_expression "*(code **)(puVar22 + 0x172c8)" * (cast_expression "(code **)(puVar22 + 0x172c8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar22 + 0x172c8)" ( (binary_expression "puVar22 + 0x172c8" identifier + number_literal) ))))) )) (argument_list "(iVar12)" ( identifier ))) ;) (expression_statement "FUN_0001b6fc(iStack_a0);" (call_expression "FUN_0001b6fc(iStack_a0)" identifier (argument_list "(iStack_a0)" ( identifier ))) ;) (expression_statement "(**(code **)(puVar22 + 0x17194))(*(undefined4 *)(iVar18 + 0xc));" (call_expression "(**(code **)(puVar22 + 0x17194))(*(undefined4 *)(iVar18 + 0xc))" (parenthesized_expression "(**(code **)(puVar22 + 0x17194))" ( (pointer_expression "**(code **)(puVar22 + 0x17194)" * (pointer_expression "*(code **)(puVar22 + 0x17194)" * (cast_expression "(code **)(puVar22 + 0x17194)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar22 + 0x17194)" ( (binary_expression "puVar22 + 0x17194" identifier + number_literal) ))))) )) (argument_list "(*(undefined4 *)(iVar18 + 0xc))" ( (pointer_expression "*(undefined4 *)(iVar18 + 0xc)" * (cast_expression "(undefined4 *)(iVar18 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar18 + 0xc)" ( (binary_expression "iVar18 + 0xc" identifier + number_literal) )))) ))) ;) (expression_statement "*(undefined4 *)(iVar18 + 0xc) = 0;" (assignment_expression "*(undefined4 *)(iVar18 + 0xc) = 0" (pointer_expression "*(undefined4 *)(iVar18 + 0xc)" * (cast_expression "(undefined4 *)(iVar18 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar18 + 0xc)" ( (binary_expression "iVar18 + 0xc" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined2 *)(iVar18 + 0x3c) = 7;" (assignment_expression "*(undefined2 *)(iVar18 + 0x3c) = 7" (pointer_expression "*(undefined2 *)(iVar18 + 0x3c)" * (cast_expression "(undefined2 *)(iVar18 + 0x3c)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar18 + 0x3c)" ( (binary_expression "iVar18 + 0x3c" identifier + number_literal) )))) = number_literal) ;) (expression_statement "param_1[0xc] = param_1[0xc] | 0x4000;" (assignment_expression "param_1[0xc] = param_1[0xc] | 0x4000" (subscript_expression "param_1[0xc]" identifier [ number_literal ]) = (binary_expression "param_1[0xc] | 0x4000" (subscript_expression "param_1[0xc]" identifier [ number_literal ]) | number_literal)) ;) (expression_statement "*piVar16 = iVar5;" (assignment_expression "*piVar16 = iVar5" (pointer_expression "*piVar16" * identifier) = identifier) ;) (return_statement "return 0;" return number_literal ;) })) (if_statement "if (uVar23 <= uVar11) {\n      iVar24 = param_1[6];\n      iVar14 = FUN_0001b0cc(param_1,iVar17 + 2 + uVar11);\n      if (iVar14 == 0) goto LAB_0001c794;\n      if ((param_1[6] != iVar24) && (iStack_8c = iVar14, (param_1[0xc] & 4U) != 0)) {\n        puStack_90 = (undefined1 *)(param_1[6] + uVar20);\n      }\n      uVar23 = param_1[9] - uVar20;\n    }" if (parenthesized_expression "(uVar23 <= uVar11)" ( (binary_expression "uVar23 <= uVar11" identifier <= identifier) )) (compound_statement "{\n      iVar24 = param_1[6];\n      iVar14 = FUN_0001b0cc(param_1,iVar17 + 2 + uVar11);\n      if (iVar14 == 0) goto LAB_0001c794;\n      if ((param_1[6] != iVar24) && (iStack_8c = iVar14, (param_1[0xc] & 4U) != 0)) {\n        puStack_90 = (undefined1 *)(param_1[6] + uVar20);\n      }\n      uVar23 = param_1[9] - uVar20;\n    }" { (expression_statement "iVar24 = param_1[6];" (assignment_expression "iVar24 = param_1[6]" identifier = (subscript_expression "param_1[6]" identifier [ number_literal ])) ;) (expression_statement "iVar14 = FUN_0001b0cc(param_1,iVar17 + 2 + uVar11);" (assignment_expression "iVar14 = FUN_0001b0cc(param_1,iVar17 + 2 + uVar11)" identifier = (call_expression "FUN_0001b0cc(param_1,iVar17 + 2 + uVar11)" identifier (argument_list "(param_1,iVar17 + 2 + uVar11)" ( identifier , (binary_expression "iVar17 + 2 + uVar11" (binary_expression "iVar17 + 2" identifier + number_literal) + identifier) )))) ;) (if_statement "if (iVar14 == 0) goto LAB_0001c794;" if (parenthesized_expression "(iVar14 == 0)" ( (binary_expression "iVar14 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0001c794;" goto statement_identifier ;)) (if_statement "if ((param_1[6] != iVar24) && (iStack_8c = iVar14, (param_1[0xc] & 4U) != 0)) {\n        puStack_90 = (undefined1 *)(param_1[6] + uVar20);\n      }" if (parenthesized_expression "((param_1[6] != iVar24) && (iStack_8c = iVar14, (param_1[0xc] & 4U) != 0))" ( (binary_expression "(param_1[6] != iVar24) && (iStack_8c = iVar14, (param_1[0xc] & 4U) != 0)" (parenthesized_expression "(param_1[6] != iVar24)" ( (binary_expression "param_1[6] != iVar24" (subscript_expression "param_1[6]" identifier [ number_literal ]) != identifier) )) && (parenthesized_expression "(iStack_8c = iVar14, (param_1[0xc] & 4U) != 0)" ( (comma_expression "iStack_8c = iVar14, (param_1[0xc] & 4U) != 0" (assignment_expression "iStack_8c = iVar14" identifier = identifier) , (binary_expression "(param_1[0xc] & 4U) != 0" (parenthesized_expression "(param_1[0xc] & 4U)" ( (binary_expression "param_1[0xc] & 4U" (subscript_expression "param_1[0xc]" identifier [ number_literal ]) & number_literal) )) != number_literal)) ))) )) (compound_statement "{\n        puStack_90 = (undefined1 *)(param_1[6] + uVar20);\n      }" { (expression_statement "puStack_90 = (undefined1 *)(param_1[6] + uVar20);" (assignment_expression "puStack_90 = (undefined1 *)(param_1[6] + uVar20)" identifier = (cast_expression "(undefined1 *)(param_1[6] + uVar20)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1[6] + uVar20)" ( (binary_expression "param_1[6] + uVar20" (subscript_expression "param_1[6]" identifier [ number_literal ]) + identifier) )))) ;) })) (expression_statement "uVar23 = param_1[9] - uVar20;" (assignment_expression "uVar23 = param_1[9] - uVar20" identifier = (binary_expression "param_1[9] - uVar20" (subscript_expression "param_1[9]" identifier [ number_literal ]) - identifier)) ;) })) (if_statement "if (uVar20 + uVar11 < uVar20) {\n      (**(code **)(puVar22 + 0x172c8))(iVar12);\n      FUN_0001b6fc(iStack_a0);\n      (**(code **)(puVar22 + 0x17194))(*(undefined4 *)(iVar18 + 0xc));\n      *(undefined4 *)(iVar18 + 0xc) = 0;\n      *(undefined2 *)(iVar18 + 0x3c) = 7;\n      param_1[0xc] = param_1[0xc] | 0x4000;\n      *piVar16 = 0x4e;\n      return 0;\n    }" if (parenthesized_expression "(uVar20 + uVar11 < uVar20)" ( (binary_expression "uVar20 + uVar11 < uVar20" (binary_expression "uVar20 + uVar11" identifier + identifier) < identifier) )) (compound_statement "{\n      (**(code **)(puVar22 + 0x172c8))(iVar12);\n      FUN_0001b6fc(iStack_a0);\n      (**(code **)(puVar22 + 0x17194))(*(undefined4 *)(iVar18 + 0xc));\n      *(undefined4 *)(iVar18 + 0xc) = 0;\n      *(undefined2 *)(iVar18 + 0x3c) = 7;\n      param_1[0xc] = param_1[0xc] | 0x4000;\n      *piVar16 = 0x4e;\n      return 0;\n    }" { (expression_statement "(**(code **)(puVar22 + 0x172c8))(iVar12);" (call_expression "(**(code **)(puVar22 + 0x172c8))(iVar12)" (parenthesized_expression "(**(code **)(puVar22 + 0x172c8))" ( (pointer_expression "**(code **)(puVar22 + 0x172c8)" * (pointer_expression "*(code **)(puVar22 + 0x172c8)" * (cast_expression "(code **)(puVar22 + 0x172c8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar22 + 0x172c8)" ( (binary_expression "puVar22 + 0x172c8" identifier + number_literal) ))))) )) (argument_list "(iVar12)" ( identifier ))) ;) (expression_statement "FUN_0001b6fc(iStack_a0);" (call_expression "FUN_0001b6fc(iStack_a0)" identifier (argument_list "(iStack_a0)" ( identifier ))) ;) (expression_statement "(**(code **)(puVar22 + 0x17194))(*(undefined4 *)(iVar18 + 0xc));" (call_expression "(**(code **)(puVar22 + 0x17194))(*(undefined4 *)(iVar18 + 0xc))" (parenthesized_expression "(**(code **)(puVar22 + 0x17194))" ( (pointer_expression "**(code **)(puVar22 + 0x17194)" * (pointer_expression "*(code **)(puVar22 + 0x17194)" * (cast_expression "(code **)(puVar22 + 0x17194)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar22 + 0x17194)" ( (binary_expression "puVar22 + 0x17194" identifier + number_literal) ))))) )) (argument_list "(*(undefined4 *)(iVar18 + 0xc))" ( (pointer_expression "*(undefined4 *)(iVar18 + 0xc)" * (cast_expression "(undefined4 *)(iVar18 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar18 + 0xc)" ( (binary_expression "iVar18 + 0xc" identifier + number_literal) )))) ))) ;) (expression_statement "*(undefined4 *)(iVar18 + 0xc) = 0;" (assignment_expression "*(undefined4 *)(iVar18 + 0xc) = 0" (pointer_expression "*(undefined4 *)(iVar18 + 0xc)" * (cast_expression "(undefined4 *)(iVar18 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar18 + 0xc)" ( (binary_expression "iVar18 + 0xc" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined2 *)(iVar18 + 0x3c) = 7;" (assignment_expression "*(undefined2 *)(iVar18 + 0x3c) = 7" (pointer_expression "*(undefined2 *)(iVar18 + 0x3c)" * (cast_expression "(undefined2 *)(iVar18 + 0x3c)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar18 + 0x3c)" ( (binary_expression "iVar18 + 0x3c" identifier + number_literal) )))) = number_literal) ;) (expression_statement "param_1[0xc] = param_1[0xc] | 0x4000;" (assignment_expression "param_1[0xc] = param_1[0xc] | 0x4000" (subscript_expression "param_1[0xc]" identifier [ number_literal ]) = (binary_expression "param_1[0xc] | 0x4000" (subscript_expression "param_1[0xc]" identifier [ number_literal ]) | number_literal)) ;) (expression_statement "*piVar16 = 0x4e;" (assignment_expression "*piVar16 = 0x4e" (pointer_expression "*piVar16" * identifier) = number_literal) ;) (return_statement "return 0;" return number_literal ;) })) (expression_statement "*(int *)(iVar12 + 0x30) = iVar6 + 1;" (assignment_expression "*(int *)(iVar12 + 0x30) = iVar6 + 1" (pointer_expression "*(int *)(iVar12 + 0x30)" * (cast_expression "(int *)(iVar12 + 0x30)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar12 + 0x30)" ( (binary_expression "iVar12 + 0x30" identifier + number_literal) )))) = (binary_expression "iVar6 + 1" identifier + number_literal)) ;) (expression_statement "*(int *)(iVar12 + 4) = *param_1;" (assignment_expression "*(int *)(iVar12 + 4) = *param_1" (pointer_expression "*(int *)(iVar12 + 4)" * (cast_expression "(int *)(iVar12 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar12 + 4)" ( (binary_expression "iVar12 + 4" identifier + number_literal) )))) = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "*(uint *)(iVar12 + 0x28) = uVar20 + uVar11;" (assignment_expression "*(uint *)(iVar12 + 0x28) = uVar20 + uVar11" (pointer_expression "*(uint *)(iVar12 + 0x28)" * (cast_expression "(uint *)(iVar12 + 0x28)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar12 + 0x28)" ( (binary_expression "iVar12 + 0x28" identifier + number_literal) )))) = (binary_expression "uVar20 + uVar11" identifier + identifier)) ;) (expression_statement "uVar13 = *puVar10;" (assignment_expression "uVar13 = *puVar10" identifier = (pointer_expression "*puVar10" * identifier)) ;) (expression_statement "*(undefined4 *)(iVar12 + 0x5c) = puVar10[1];" (assignment_expression "*(undefined4 *)(iVar12 + 0x5c) = puVar10[1]" (pointer_expression "*(undefined4 *)(iVar12 + 0x5c)" * (cast_expression "(undefined4 *)(iVar12 + 0x5c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar12 + 0x5c)" ( (binary_expression "iVar12 + 0x5c" identifier + number_literal) )))) = (subscript_expression "puVar10[1]" identifier [ number_literal ])) ;) (expression_statement "*(undefined4 *)(iVar12 + 0x58) = uVar13;" (assignment_expression "*(undefined4 *)(iVar12 + 0x58) = uVar13" (pointer_expression "*(undefined4 *)(iVar12 + 0x58)" * (cast_expression "(undefined4 *)(iVar12 + 0x58)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar12 + 0x58)" ( (binary_expression "iVar12 + 0x58" identifier + number_literal) )))) = identifier) ;) (if_statement "if ((param_1[0xc] & 4U) == 0) {\n      *(int *)(iVar12 + 0x18) = iVar12 + 0xe8;\n      iVar14 = param_1[0xb];\n    }\n    else {\n      *(undefined4 *)(iVar12 + 0x18) = *(undefined4 *)(iVar12 + 0x1c);\n      (**(code **)(puVar22 + 0x172cc))(puStack_90,iVar12 + 0xe8,*(int *)(iVar12 + 0x34) + 1);\n      iVar14 = param_1[0xb];\n    }" if (parenthesized_expression "((param_1[0xc] & 4U) == 0)" ( (binary_expression "(param_1[0xc] & 4U) == 0" (parenthesized_expression "(param_1[0xc] & 4U)" ( (binary_expression "param_1[0xc] & 4U" (subscript_expression "param_1[0xc]" identifier [ number_literal ]) & number_literal) )) == number_literal) )) (compound_statement "{\n      *(int *)(iVar12 + 0x18) = iVar12 + 0xe8;\n      iVar14 = param_1[0xb];\n    }" { (expression_statement "*(int *)(iVar12 + 0x18) = iVar12 + 0xe8;" (assignment_expression "*(int *)(iVar12 + 0x18) = iVar12 + 0xe8" (pointer_expression "*(int *)(iVar12 + 0x18)" * (cast_expression "(int *)(iVar12 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar12 + 0x18)" ( (binary_expression "iVar12 + 0x18" identifier + number_literal) )))) = (binary_expression "iVar12 + 0xe8" identifier + number_literal)) ;) (expression_statement "iVar14 = param_1[0xb];" (assignment_expression "iVar14 = param_1[0xb]" identifier = (subscript_expression "param_1[0xb]" identifier [ number_literal ])) ;) }) (else_clause "else {\n      *(undefined4 *)(iVar12 + 0x18) = *(undefined4 *)(iVar12 + 0x1c);\n      (**(code **)(puVar22 + 0x172cc))(puStack_90,iVar12 + 0xe8,*(int *)(iVar12 + 0x34) + 1);\n      iVar14 = param_1[0xb];\n    }" else (compound_statement "{\n      *(undefined4 *)(iVar12 + 0x18) = *(undefined4 *)(iVar12 + 0x1c);\n      (**(code **)(puVar22 + 0x172cc))(puStack_90,iVar12 + 0xe8,*(int *)(iVar12 + 0x34) + 1);\n      iVar14 = param_1[0xb];\n    }" { (expression_statement "*(undefined4 *)(iVar12 + 0x18) = *(undefined4 *)(iVar12 + 0x1c);" (assignment_expression "*(undefined4 *)(iVar12 + 0x18) = *(undefined4 *)(iVar12 + 0x1c)" (pointer_expression "*(undefined4 *)(iVar12 + 0x18)" * (cast_expression "(undefined4 *)(iVar12 + 0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar12 + 0x18)" ( (binary_expression "iVar12 + 0x18" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(iVar12 + 0x1c)" * (cast_expression "(undefined4 *)(iVar12 + 0x1c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar12 + 0x1c)" ( (binary_expression "iVar12 + 0x1c" identifier + number_literal) ))))) ;) (expression_statement "(**(code **)(puVar22 + 0x172cc))(puStack_90,iVar12 + 0xe8,*(int *)(iVar12 + 0x34) + 1);" (call_expression "(**(code **)(puVar22 + 0x172cc))(puStack_90,iVar12 + 0xe8,*(int *)(iVar12 + 0x34) + 1)" (parenthesized_expression "(**(code **)(puVar22 + 0x172cc))" ( (pointer_expression "**(code **)(puVar22 + 0x172cc)" * (pointer_expression "*(code **)(puVar22 + 0x172cc)" * (cast_expression "(code **)(puVar22 + 0x172cc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar22 + 0x172cc)" ( (binary_expression "puVar22 + 0x172cc" identifier + number_literal) ))))) )) (argument_list "(puStack_90,iVar12 + 0xe8,*(int *)(iVar12 + 0x34) + 1)" ( identifier , (binary_expression "iVar12 + 0xe8" identifier + number_literal) , (binary_expression "*(int *)(iVar12 + 0x34) + 1" (pointer_expression "*(int *)(iVar12 + 0x34)" * (cast_expression "(int *)(iVar12 + 0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar12 + 0x34)" ( (binary_expression "iVar12 + 0x34" identifier + number_literal) )))) + number_literal) ))) ;) (expression_statement "iVar14 = param_1[0xb];" (assignment_expression "iVar14 = param_1[0xb]" identifier = (subscript_expression "param_1[0xb]" identifier [ number_literal ])) ;) }))) (if_statement "if ((iVar14 == 0) || ((param_1[0xc] & 0x400U) != 0)) {\n      if (((param_1[0xc] & 0x18U) == 0x18) && ((*(byte *)((int)puVar10 + 0x12) & 0xfb) != 0)) {\n        *(undefined2 *)(iVar12 + 0x3c) = 0xb;\n        bVar3 = true;\n        if (*(byte *)((int)puVar10 + 0x12) < 0xd) {\n                    \n                    \n          iVar5 = (*(code *)(puVar22 +\n                            *(int *)(iVar9 + 0x2d30 + (uint)*(byte *)((int)puVar10 + 0x12) * 4) +\n                            0x1ef9c))();\n          return iVar5;\n        }\n      }\n      else {\n        *(undefined2 *)(iVar12 + 0x3c) = 0xb;\n        bVar3 = false;\n        if (*(byte *)((int)puVar10 + 0x12) < 0xd) {\n                    \n                    \n          iVar5 = (*(code *)(puVar22 +\n                            *(int *)(*(int *)(puVar22 + 0x16fd4) + 0x2d64 +\n                                    (uint)*(byte *)((int)puVar10 + 0x12) * 4) + 0x1ef9c))();\n          return iVar5;\n        }\n      }\n      *(undefined4 *)(iVar12 + 0x60) = 0;\n      if (bVar3) {\n        uVar13 = 1;\n      }\n      else {\n        uVar13 = 2;\n      }\n      *(undefined4 *)(iVar12 + 0x84) = uVar13;\n      *(undefined4 *)(iVar12 + 0x80) = 0;\n    }\n    else {\n      uVar15 = FUN_0001b18c(param_1,iVar12,0);\n      *(undefined2 *)(iVar12 + 0x3c) = uVar15;\n    }" if (parenthesized_expression "((iVar14 == 0) || ((param_1[0xc] & 0x400U) != 0))" ( (binary_expression "(iVar14 == 0) || ((param_1[0xc] & 0x400U) != 0)" (parenthesized_expression "(iVar14 == 0)" ( (binary_expression "iVar14 == 0" identifier == number_literal) )) || (parenthesized_expression "((param_1[0xc] & 0x400U) != 0)" ( (binary_expression "(param_1[0xc] & 0x400U) != 0" (parenthesized_expression "(param_1[0xc] & 0x400U)" ( (binary_expression "param_1[0xc] & 0x400U" (subscript_expression "param_1[0xc]" identifier [ number_literal ]) & number_literal) )) != number_literal) ))) )) (compound_statement "{\n      if (((param_1[0xc] & 0x18U) == 0x18) && ((*(byte *)((int)puVar10 + 0x12) & 0xfb) != 0)) {\n        *(undefined2 *)(iVar12 + 0x3c) = 0xb;\n        bVar3 = true;\n        if (*(byte *)((int)puVar10 + 0x12) < 0xd) {\n                    \n                    \n          iVar5 = (*(code *)(puVar22 +\n                            *(int *)(iVar9 + 0x2d30 + (uint)*(byte *)((int)puVar10 + 0x12) * 4) +\n                            0x1ef9c))();\n          return iVar5;\n        }\n      }\n      else {\n        *(undefined2 *)(iVar12 + 0x3c) = 0xb;\n        bVar3 = false;\n        if (*(byte *)((int)puVar10 + 0x12) < 0xd) {\n                    \n                    \n          iVar5 = (*(code *)(puVar22 +\n                            *(int *)(*(int *)(puVar22 + 0x16fd4) + 0x2d64 +\n                                    (uint)*(byte *)((int)puVar10 + 0x12) * 4) + 0x1ef9c))();\n          return iVar5;\n        }\n      }\n      *(undefined4 *)(iVar12 + 0x60) = 0;\n      if (bVar3) {\n        uVar13 = 1;\n      }\n      else {\n        uVar13 = 2;\n      }\n      *(undefined4 *)(iVar12 + 0x84) = uVar13;\n      *(undefined4 *)(iVar12 + 0x80) = 0;\n    }" { (if_statement "if (((param_1[0xc] & 0x18U) == 0x18) && ((*(byte *)((int)puVar10 + 0x12) & 0xfb) != 0)) {\n        *(undefined2 *)(iVar12 + 0x3c) = 0xb;\n        bVar3 = true;\n        if (*(byte *)((int)puVar10 + 0x12) < 0xd) {\n                    \n                    \n          iVar5 = (*(code *)(puVar22 +\n                            *(int *)(iVar9 + 0x2d30 + (uint)*(byte *)((int)puVar10 + 0x12) * 4) +\n                            0x1ef9c))();\n          return iVar5;\n        }\n      }\n      else {\n        *(undefined2 *)(iVar12 + 0x3c) = 0xb;\n        bVar3 = false;\n        if (*(byte *)((int)puVar10 + 0x12) < 0xd) {\n                    \n                    \n          iVar5 = (*(code *)(puVar22 +\n                            *(int *)(*(int *)(puVar22 + 0x16fd4) + 0x2d64 +\n                                    (uint)*(byte *)((int)puVar10 + 0x12) * 4) + 0x1ef9c))();\n          return iVar5;\n        }\n      }" if (parenthesized_expression "(((param_1[0xc] & 0x18U) == 0x18) && ((*(byte *)((int)puVar10 + 0x12) & 0xfb) != 0))" ( (binary_expression "((param_1[0xc] & 0x18U) == 0x18) && ((*(byte *)((int)puVar10 + 0x12) & 0xfb) != 0)" (parenthesized_expression "((param_1[0xc] & 0x18U) == 0x18)" ( (binary_expression "(param_1[0xc] & 0x18U) == 0x18" (parenthesized_expression "(param_1[0xc] & 0x18U)" ( (binary_expression "param_1[0xc] & 0x18U" (subscript_expression "param_1[0xc]" identifier [ number_literal ]) & number_literal) )) == number_literal) )) && (parenthesized_expression "((*(byte *)((int)puVar10 + 0x12) & 0xfb) != 0)" ( (binary_expression "(*(byte *)((int)puVar10 + 0x12) & 0xfb) != 0" (parenthesized_expression "(*(byte *)((int)puVar10 + 0x12) & 0xfb)" ( (binary_expression "*(byte *)((int)puVar10 + 0x12) & 0xfb" (pointer_expression "*(byte *)((int)puVar10 + 0x12)" * (cast_expression "(byte *)((int)puVar10 + 0x12)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar10 + 0x12)" ( (binary_expression "(int)puVar10 + 0x12" (cast_expression "(int)puVar10" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) & number_literal) )) != number_literal) ))) )) (compound_statement "{\n        *(undefined2 *)(iVar12 + 0x3c) = 0xb;\n        bVar3 = true;\n        if (*(byte *)((int)puVar10 + 0x12) < 0xd) {\n                    \n                    \n          iVar5 = (*(code *)(puVar22 +\n                            *(int *)(iVar9 + 0x2d30 + (uint)*(byte *)((int)puVar10 + 0x12) * 4) +\n                            0x1ef9c))();\n          return iVar5;\n        }\n      }" { (expression_statement "*(undefined2 *)(iVar12 + 0x3c) = 0xb;" (assignment_expression "*(undefined2 *)(iVar12 + 0x3c) = 0xb" (pointer_expression "*(undefined2 *)(iVar12 + 0x3c)" * (cast_expression "(undefined2 *)(iVar12 + 0x3c)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar12 + 0x3c)" ( (binary_expression "iVar12 + 0x3c" identifier + number_literal) )))) = number_literal) ;) (expression_statement "bVar3 = true;" (assignment_expression "bVar3 = true" identifier = true) ;) (if_statement "if (*(byte *)((int)puVar10 + 0x12) < 0xd) {\n                    \n                    \n          iVar5 = (*(code *)(puVar22 +\n                            *(int *)(iVar9 + 0x2d30 + (uint)*(byte *)((int)puVar10 + 0x12) * 4) +\n                            0x1ef9c))();\n          return iVar5;\n        }" if (parenthesized_expression "(*(byte *)((int)puVar10 + 0x12) < 0xd)" ( (binary_expression "*(byte *)((int)puVar10 + 0x12) < 0xd" (pointer_expression "*(byte *)((int)puVar10 + 0x12)" * (cast_expression "(byte *)((int)puVar10 + 0x12)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar10 + 0x12)" ( (binary_expression "(int)puVar10 + 0x12" (cast_expression "(int)puVar10" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) < number_literal) )) (compound_statement "{\n                    \n                    \n          iVar5 = (*(code *)(puVar22 +\n                            *(int *)(iVar9 + 0x2d30 + (uint)*(byte *)((int)puVar10 + 0x12) * 4) +\n                            0x1ef9c))();\n          return iVar5;\n        }" { (expression_statement "iVar5 = (*(code *)(puVar22 +\n                            *(int *)(iVar9 + 0x2d30 + (uint)*(byte *)((int)puVar10 + 0x12) * 4) +\n                            0x1ef9c))();" (assignment_expression "iVar5 = (*(code *)(puVar22 +\n                            *(int *)(iVar9 + 0x2d30 + (uint)*(byte *)((int)puVar10 + 0x12) * 4) +\n                            0x1ef9c))()" identifier = (call_expression "(*(code *)(puVar22 +\n                            *(int *)(iVar9 + 0x2d30 + (uint)*(byte *)((int)puVar10 + 0x12) * 4) +\n                            0x1ef9c))()" (parenthesized_expression "(*(code *)(puVar22 +\n                            *(int *)(iVar9 + 0x2d30 + (uint)*(byte *)((int)puVar10 + 0x12) * 4) +\n                            0x1ef9c))" ( (pointer_expression "*(code *)(puVar22 +\n                            *(int *)(iVar9 + 0x2d30 + (uint)*(byte *)((int)puVar10 + 0x12) * 4) +\n                            0x1ef9c)" * (cast_expression "(code *)(puVar22 +\n                            *(int *)(iVar9 + 0x2d30 + (uint)*(byte *)((int)puVar10 + 0x12) * 4) +\n                            0x1ef9c)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar22 +\n                            *(int *)(iVar9 + 0x2d30 + (uint)*(byte *)((int)puVar10 + 0x12) * 4) +\n                            0x1ef9c)" ( (binary_expression "puVar22 +\n                            *(int *)(iVar9 + 0x2d30 + (uint)*(byte *)((int)puVar10 + 0x12) * 4) +\n                            0x1ef9c" (binary_expression "puVar22 +\n                            *(int *)(iVar9 + 0x2d30 + (uint)*(byte *)((int)puVar10 + 0x12) * 4)" identifier + (pointer_expression "*(int *)(iVar9 + 0x2d30 + (uint)*(byte *)((int)puVar10 + 0x12) * 4)" * (cast_expression "(int *)(iVar9 + 0x2d30 + (uint)*(byte *)((int)puVar10 + 0x12) * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 0x2d30 + (uint)*(byte *)((int)puVar10 + 0x12) * 4)" ( (binary_expression "iVar9 + 0x2d30 + (uint)*(byte *)((int)puVar10 + 0x12) * 4" (binary_expression "iVar9 + 0x2d30" identifier + number_literal) + (binary_expression "(uint)*(byte *)((int)puVar10 + 0x12) * 4" (binary_expression "(uint)*(byte *)((int)puVar10 + 0x12)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)((int)puVar10 + 0x12)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar10 + 0x12)" ( (binary_expression "(int)puVar10 + 0x12" (cast_expression "(int)puVar10" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) * number_literal)) ))))) + number_literal) )))) )) (argument_list "()" ( )))) ;) (return_statement "return iVar5;" return identifier ;) })) }) (else_clause "else {\n        *(undefined2 *)(iVar12 + 0x3c) = 0xb;\n        bVar3 = false;\n        if (*(byte *)((int)puVar10 + 0x12) < 0xd) {\n                    \n                    \n          iVar5 = (*(code *)(puVar22 +\n                            *(int *)(*(int *)(puVar22 + 0x16fd4) + 0x2d64 +\n                                    (uint)*(byte *)((int)puVar10 + 0x12) * 4) + 0x1ef9c))();\n          return iVar5;\n        }\n      }" else (compound_statement "{\n        *(undefined2 *)(iVar12 + 0x3c) = 0xb;\n        bVar3 = false;\n        if (*(byte *)((int)puVar10 + 0x12) < 0xd) {\n                    \n                    \n          iVar5 = (*(code *)(puVar22 +\n                            *(int *)(*(int *)(puVar22 + 0x16fd4) + 0x2d64 +\n                                    (uint)*(byte *)((int)puVar10 + 0x12) * 4) + 0x1ef9c))();\n          return iVar5;\n        }\n      }" { (expression_statement "*(undefined2 *)(iVar12 + 0x3c) = 0xb;" (assignment_expression "*(undefined2 *)(iVar12 + 0x3c) = 0xb" (pointer_expression "*(undefined2 *)(iVar12 + 0x3c)" * (cast_expression "(undefined2 *)(iVar12 + 0x3c)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar12 + 0x3c)" ( (binary_expression "iVar12 + 0x3c" identifier + number_literal) )))) = number_literal) ;) (expression_statement "bVar3 = false;" (assignment_expression "bVar3 = false" identifier = false) ;) (if_statement "if (*(byte *)((int)puVar10 + 0x12) < 0xd) {\n                    \n                    \n          iVar5 = (*(code *)(puVar22 +\n                            *(int *)(*(int *)(puVar22 + 0x16fd4) + 0x2d64 +\n                                    (uint)*(byte *)((int)puVar10 + 0x12) * 4) + 0x1ef9c))();\n          return iVar5;\n        }" if (parenthesized_expression "(*(byte *)((int)puVar10 + 0x12) < 0xd)" ( (binary_expression "*(byte *)((int)puVar10 + 0x12) < 0xd" (pointer_expression "*(byte *)((int)puVar10 + 0x12)" * (cast_expression "(byte *)((int)puVar10 + 0x12)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar10 + 0x12)" ( (binary_expression "(int)puVar10 + 0x12" (cast_expression "(int)puVar10" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) < number_literal) )) (compound_statement "{\n                    \n                    \n          iVar5 = (*(code *)(puVar22 +\n                            *(int *)(*(int *)(puVar22 + 0x16fd4) + 0x2d64 +\n                                    (uint)*(byte *)((int)puVar10 + 0x12) * 4) + 0x1ef9c))();\n          return iVar5;\n        }" { (expression_statement "iVar5 = (*(code *)(puVar22 +\n                            *(int *)(*(int *)(puVar22 + 0x16fd4) + 0x2d64 +\n                                    (uint)*(byte *)((int)puVar10 + 0x12) * 4) + 0x1ef9c))();" (assignment_expression "iVar5 = (*(code *)(puVar22 +\n                            *(int *)(*(int *)(puVar22 + 0x16fd4) + 0x2d64 +\n                                    (uint)*(byte *)((int)puVar10 + 0x12) * 4) + 0x1ef9c))()" identifier = (call_expression "(*(code *)(puVar22 +\n                            *(int *)(*(int *)(puVar22 + 0x16fd4) + 0x2d64 +\n                                    (uint)*(byte *)((int)puVar10 + 0x12) * 4) + 0x1ef9c))()" (parenthesized_expression "(*(code *)(puVar22 +\n                            *(int *)(*(int *)(puVar22 + 0x16fd4) + 0x2d64 +\n                                    (uint)*(byte *)((int)puVar10 + 0x12) * 4) + 0x1ef9c))" ( (pointer_expression "*(code *)(puVar22 +\n                            *(int *)(*(int *)(puVar22 + 0x16fd4) + 0x2d64 +\n                                    (uint)*(byte *)((int)puVar10 + 0x12) * 4) + 0x1ef9c)" * (cast_expression "(code *)(puVar22 +\n                            *(int *)(*(int *)(puVar22 + 0x16fd4) + 0x2d64 +\n                                    (uint)*(byte *)((int)puVar10 + 0x12) * 4) + 0x1ef9c)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar22 +\n                            *(int *)(*(int *)(puVar22 + 0x16fd4) + 0x2d64 +\n                                    (uint)*(byte *)((int)puVar10 + 0x12) * 4) + 0x1ef9c)" ( (binary_expression "puVar22 +\n                            *(int *)(*(int *)(puVar22 + 0x16fd4) + 0x2d64 +\n                                    (uint)*(byte *)((int)puVar10 + 0x12) * 4) + 0x1ef9c" (binary_expression "puVar22 +\n                            *(int *)(*(int *)(puVar22 + 0x16fd4) + 0x2d64 +\n                                    (uint)*(byte *)((int)puVar10 + 0x12) * 4)" identifier + (pointer_expression "*(int *)(*(int *)(puVar22 + 0x16fd4) + 0x2d64 +\n                                    (uint)*(byte *)((int)puVar10 + 0x12) * 4)" * (cast_expression "(int *)(*(int *)(puVar22 + 0x16fd4) + 0x2d64 +\n                                    (uint)*(byte *)((int)puVar10 + 0x12) * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar22 + 0x16fd4) + 0x2d64 +\n                                    (uint)*(byte *)((int)puVar10 + 0x12) * 4)" ( (binary_expression "*(int *)(puVar22 + 0x16fd4) + 0x2d64 +\n                                    (uint)*(byte *)((int)puVar10 + 0x12) * 4" (binary_expression "*(int *)(puVar22 + 0x16fd4) + 0x2d64" (pointer_expression "*(int *)(puVar22 + 0x16fd4)" * (cast_expression "(int *)(puVar22 + 0x16fd4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar22 + 0x16fd4)" ( (binary_expression "puVar22 + 0x16fd4" identifier + number_literal) )))) + number_literal) + (binary_expression "(uint)*(byte *)((int)puVar10 + 0x12) * 4" (binary_expression "(uint)*(byte *)((int)puVar10 + 0x12)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)((int)puVar10 + 0x12)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar10 + 0x12)" ( (binary_expression "(int)puVar10 + 0x12" (cast_expression "(int)puVar10" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) * number_literal)) ))))) + number_literal) )))) )) (argument_list "()" ( )))) ;) (return_statement "return iVar5;" return identifier ;) })) }))) (expression_statement "*(undefined4 *)(iVar12 + 0x60) = 0;" (assignment_expression "*(undefined4 *)(iVar12 + 0x60) = 0" (pointer_expression "*(undefined4 *)(iVar12 + 0x60)" * (cast_expression "(undefined4 *)(iVar12 + 0x60)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar12 + 0x60)" ( (binary_expression "iVar12 + 0x60" identifier + number_literal) )))) = number_literal) ;) (if_statement "if (bVar3) {\n        uVar13 = 1;\n      }\n      else {\n        uVar13 = 2;\n      }" if (parenthesized_expression "(bVar3)" ( identifier )) (compound_statement "{\n        uVar13 = 1;\n      }" { (expression_statement "uVar13 = 1;" (assignment_expression "uVar13 = 1" identifier = number_literal) ;) }) (else_clause "else {\n        uVar13 = 2;\n      }" else (compound_statement "{\n        uVar13 = 2;\n      }" { (expression_statement "uVar13 = 2;" (assignment_expression "uVar13 = 2" identifier = number_literal) ;) }))) (expression_statement "*(undefined4 *)(iVar12 + 0x84) = uVar13;" (assignment_expression "*(undefined4 *)(iVar12 + 0x84) = uVar13" (pointer_expression "*(undefined4 *)(iVar12 + 0x84)" * (cast_expression "(undefined4 *)(iVar12 + 0x84)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar12 + 0x84)" ( (binary_expression "iVar12 + 0x84" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(iVar12 + 0x80) = 0;" (assignment_expression "*(undefined4 *)(iVar12 + 0x80) = 0" (pointer_expression "*(undefined4 *)(iVar12 + 0x80)" * (cast_expression "(undefined4 *)(iVar12 + 0x80)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar12 + 0x80)" ( (binary_expression "iVar12 + 0x80" identifier + number_literal) )))) = number_literal) ;) }) (else_clause "else {\n      uVar15 = FUN_0001b18c(param_1,iVar12,0);\n      *(undefined2 *)(iVar12 + 0x3c) = uVar15;\n    }" else (compound_statement "{\n      uVar15 = FUN_0001b18c(param_1,iVar12,0);\n      *(undefined2 *)(iVar12 + 0x3c) = uVar15;\n    }" { (expression_statement "uVar15 = FUN_0001b18c(param_1,iVar12,0);" (assignment_expression "uVar15 = FUN_0001b18c(param_1,iVar12,0)" identifier = (call_expression "FUN_0001b18c(param_1,iVar12,0)" identifier (argument_list "(param_1,iVar12,0)" ( identifier , identifier , number_literal )))) ;) (expression_statement "*(undefined2 *)(iVar12 + 0x3c) = uVar15;" (assignment_expression "*(undefined2 *)(iVar12 + 0x3c) = uVar15" (pointer_expression "*(undefined2 *)(iVar12 + 0x3c)" * (cast_expression "(undefined2 *)(iVar12 + 0x3c)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar12 + 0x3c)" ( (binary_expression "iVar12 + 0x3c" identifier + number_literal) )))) = identifier) ;) }))) (expression_statement "*(undefined4 *)(iVar12 + 8) = 0;" (assignment_expression "*(undefined4 *)(iVar12 + 8) = 0" (pointer_expression "*(undefined4 *)(iVar12 + 8)" * (cast_expression "(undefined4 *)(iVar12 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar12 + 8)" ( (binary_expression "iVar12 + 8" identifier + number_literal) )))) = number_literal) ;) (expression_statement "iVar14 = iVar12;" (assignment_expression "iVar14 = iVar12" identifier = identifier) ;) (if_statement "if (iStack_a0 != 0) {\n      *(int *)(iStack_a4 + 8) = iVar12;\n      iVar14 = iStack_a0;\n    }" if (parenthesized_expression "(iStack_a0 != 0)" ( (binary_expression "iStack_a0 != 0" identifier != number_literal) )) (compound_statement "{\n      *(int *)(iStack_a4 + 8) = iVar12;\n      iVar14 = iStack_a0;\n    }" { (expression_statement "*(int *)(iStack_a4 + 8) = iVar12;" (assignment_expression "*(int *)(iStack_a4 + 8) = iVar12" (pointer_expression "*(int *)(iStack_a4 + 8)" * (cast_expression "(int *)(iStack_a4 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iStack_a4 + 8)" ( (binary_expression "iStack_a4 + 8" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar14 = iStack_a0;" (assignment_expression "iVar14 = iStack_a0" identifier = identifier) ;) })) (expression_statement "iStack_a0 = iVar14;" (assignment_expression "iStack_a0 = iVar14" identifier = identifier) ;) (expression_statement "iStack_a4 = iVar12;" (assignment_expression "iStack_a4 = iVar12" identifier = identifier) ;) (if_statement "if (uVar19 == 10000) {\n      if (param_1[0xb] != 0) {\nLAB_0001cb74:\n        uVar19 = 0x2711;\n        goto LAB_0001c96c;\n      }\n      iVar12 = (*(code *)(iVar8 + -0x47a8))(iVar18,iStack_7c);\n      if (iVar12 == 0x6969) {\n        bVar4 = false;\n      }\n      else if (iVar12 == 0x1021994) {\n        bVar4 = false;\n      }\n      else {\n        if (iVar12 != -0xacb2be) {\n          bVar4 = true;\n          goto LAB_0001cb74;\n        }\n        bVar4 = false;\n      }\n    }" if (parenthesized_expression "(uVar19 == 10000)" ( (binary_expression "uVar19 == 10000" identifier == number_literal) )) (compound_statement "{\n      if (param_1[0xb] != 0) {\nLAB_0001cb74:\n        uVar19 = 0x2711;\n        goto LAB_0001c96c;\n      }\n      iVar12 = (*(code *)(iVar8 + -0x47a8))(iVar18,iStack_7c);\n      if (iVar12 == 0x6969) {\n        bVar4 = false;\n      }\n      else if (iVar12 == 0x1021994) {\n        bVar4 = false;\n      }\n      else {\n        if (iVar12 != -0xacb2be) {\n          bVar4 = true;\n          goto LAB_0001cb74;\n        }\n        bVar4 = false;\n      }\n    }" { (if_statement "if (param_1[0xb] != 0) {\nLAB_0001cb74:\n        uVar19 = 0x2711;\n        goto LAB_0001c96c;\n      }" if (parenthesized_expression "(param_1[0xb] != 0)" ( (binary_expression "param_1[0xb] != 0" (subscript_expression "param_1[0xb]" identifier [ number_literal ]) != number_literal) )) (compound_statement "{\nLAB_0001cb74:\n        uVar19 = 0x2711;\n        goto LAB_0001c96c;\n      }" { (labeled_statement "LAB_0001cb74:\n        uVar19 = 0x2711;" statement_identifier : (expression_statement "uVar19 = 0x2711;" (assignment_expression "uVar19 = 0x2711" identifier = number_literal) ;)) (goto_statement "goto LAB_0001c96c;" goto statement_identifier ;) })) (expression_statement "iVar12 = (*(code *)(iVar8 + -0x47a8))(iVar18,iStack_7c);" (assignment_expression "iVar12 = (*(code *)(iVar8 + -0x47a8))(iVar18,iStack_7c)" identifier = (call_expression "(*(code *)(iVar8 + -0x47a8))(iVar18,iStack_7c)" (parenthesized_expression "(*(code *)(iVar8 + -0x47a8))" ( (pointer_expression "*(code *)(iVar8 + -0x47a8)" * (cast_expression "(code *)(iVar8 + -0x47a8)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + -0x47a8)" ( (binary_expression "iVar8 + -0x47a8" identifier + number_literal) )))) )) (argument_list "(iVar18,iStack_7c)" ( identifier , identifier )))) ;) (if_statement "if (iVar12 == 0x6969) {\n        bVar4 = false;\n      }\n      else if (iVar12 == 0x1021994) {\n        bVar4 = false;\n      }\n      else {\n        if (iVar12 != -0xacb2be) {\n          bVar4 = true;\n          goto LAB_0001cb74;\n        }\n        bVar4 = false;\n      }" if (parenthesized_expression "(iVar12 == 0x6969)" ( (binary_expression "iVar12 == 0x6969" identifier == number_literal) )) (compound_statement "{\n        bVar4 = false;\n      }" { (expression_statement "bVar4 = false;" (assignment_expression "bVar4 = false" identifier = false) ;) }) (else_clause "else if (iVar12 == 0x1021994) {\n        bVar4 = false;\n      }\n      else {\n        if (iVar12 != -0xacb2be) {\n          bVar4 = true;\n          goto LAB_0001cb74;\n        }\n        bVar4 = false;\n      }" else (if_statement "if (iVar12 == 0x1021994) {\n        bVar4 = false;\n      }\n      else {\n        if (iVar12 != -0xacb2be) {\n          bVar4 = true;\n          goto LAB_0001cb74;\n        }\n        bVar4 = false;\n      }" if (parenthesized_expression "(iVar12 == 0x1021994)" ( (binary_expression "iVar12 == 0x1021994" identifier == number_literal) )) (compound_statement "{\n        bVar4 = false;\n      }" { (expression_statement "bVar4 = false;" (assignment_expression "bVar4 = false" identifier = false) ;) }) (else_clause "else {\n        if (iVar12 != -0xacb2be) {\n          bVar4 = true;\n          goto LAB_0001cb74;\n        }\n        bVar4 = false;\n      }" else (compound_statement "{\n        if (iVar12 != -0xacb2be) {\n          bVar4 = true;\n          goto LAB_0001cb74;\n        }\n        bVar4 = false;\n      }" { (if_statement "if (iVar12 != -0xacb2be) {\n          bVar4 = true;\n          goto LAB_0001cb74;\n        }" if (parenthesized_expression "(iVar12 != -0xacb2be)" ( (binary_expression "iVar12 != -0xacb2be" identifier != number_literal) )) (compound_statement "{\n          bVar4 = true;\n          goto LAB_0001cb74;\n        }" { (expression_statement "bVar4 = true;" (assignment_expression "bVar4 = true" identifier = true) ;) (goto_statement "goto LAB_0001cb74;" goto statement_identifier ;) })) (expression_statement "bVar4 = false;" (assignment_expression "bVar4 = false" identifier = false) ;) }))))) })) (expression_statement "uVar19 = uVar19 + 1;" (assignment_expression "uVar19 = uVar19 + 1" identifier = (binary_expression "uVar19 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar19 < uStack_94)" ( (binary_expression "uVar19 < uStack_94" identifier < identifier) )) ;)) (labeled_statement "LAB_0001c66c:\n  if (iStack_8c != 0) {\n    iVar6 = param_1[6];\n    for (iVar17 = param_1[1]; iVar7 = iStack_a0, iVar17 != 0; iVar17 = *(int *)(iVar17 + 8)) {\n      if (*(int *)(iVar17 + 0x18) != iVar17 + 0xe8) {\n        *(int *)(iVar17 + 0x18) = iVar6 + (*(int *)(iVar17 + 0x18) - *(int *)(iVar17 + 0x1c));\n      }\n      *(int *)(iVar17 + 0x1c) = iVar6;\n    }\n    while (iVar17 = iVar7, -1 < *(int *)(iVar17 + 0x30)) {\n      if (*(int *)(iVar17 + 0x18) != iVar17 + 0xe8) {\n        *(int *)(iVar17 + 0x18) = iVar6 + (*(int *)(iVar17 + 0x18) - *(int *)(iVar17 + 0x1c));\n      }\n      *(int *)(iVar17 + 0x1c) = iVar6;\n      iVar7 = *(int *)(iVar17 + 8);\n      if (*(int *)(iVar17 + 8) == 0) {\n        iVar7 = *(int *)(iVar17 + 4);\n      }\n    }\n  }" statement_identifier : (if_statement "if (iStack_8c != 0) {\n    iVar6 = param_1[6];\n    for (iVar17 = param_1[1]; iVar7 = iStack_a0, iVar17 != 0; iVar17 = *(int *)(iVar17 + 8)) {\n      if (*(int *)(iVar17 + 0x18) != iVar17 + 0xe8) {\n        *(int *)(iVar17 + 0x18) = iVar6 + (*(int *)(iVar17 + 0x18) - *(int *)(iVar17 + 0x1c));\n      }\n      *(int *)(iVar17 + 0x1c) = iVar6;\n    }\n    while (iVar17 = iVar7, -1 < *(int *)(iVar17 + 0x30)) {\n      if (*(int *)(iVar17 + 0x18) != iVar17 + 0xe8) {\n        *(int *)(iVar17 + 0x18) = iVar6 + (*(int *)(iVar17 + 0x18) - *(int *)(iVar17 + 0x1c));\n      }\n      *(int *)(iVar17 + 0x1c) = iVar6;\n      iVar7 = *(int *)(iVar17 + 8);\n      if (*(int *)(iVar17 + 8) == 0) {\n        iVar7 = *(int *)(iVar17 + 4);\n      }\n    }\n  }" if (parenthesized_expression "(iStack_8c != 0)" ( (binary_expression "iStack_8c != 0" identifier != number_literal) )) (compound_statement "{\n    iVar6 = param_1[6];\n    for (iVar17 = param_1[1]; iVar7 = iStack_a0, iVar17 != 0; iVar17 = *(int *)(iVar17 + 8)) {\n      if (*(int *)(iVar17 + 0x18) != iVar17 + 0xe8) {\n        *(int *)(iVar17 + 0x18) = iVar6 + (*(int *)(iVar17 + 0x18) - *(int *)(iVar17 + 0x1c));\n      }\n      *(int *)(iVar17 + 0x1c) = iVar6;\n    }\n    while (iVar17 = iVar7, -1 < *(int *)(iVar17 + 0x30)) {\n      if (*(int *)(iVar17 + 0x18) != iVar17 + 0xe8) {\n        *(int *)(iVar17 + 0x18) = iVar6 + (*(int *)(iVar17 + 0x18) - *(int *)(iVar17 + 0x1c));\n      }\n      *(int *)(iVar17 + 0x1c) = iVar6;\n      iVar7 = *(int *)(iVar17 + 8);\n      if (*(int *)(iVar17 + 8) == 0) {\n        iVar7 = *(int *)(iVar17 + 4);\n      }\n    }\n  }" { (expression_statement "iVar6 = param_1[6];" (assignment_expression "iVar6 = param_1[6]" identifier = (subscript_expression "param_1[6]" identifier [ number_literal ])) ;) (for_statement "for (iVar17 = param_1[1]; iVar7 = iStack_a0, iVar17 != 0; iVar17 = *(int *)(iVar17 + 8)) {\n      if (*(int *)(iVar17 + 0x18) != iVar17 + 0xe8) {\n        *(int *)(iVar17 + 0x18) = iVar6 + (*(int *)(iVar17 + 0x18) - *(int *)(iVar17 + 0x1c));\n      }\n      *(int *)(iVar17 + 0x1c) = iVar6;\n    }" for ( (assignment_expression "iVar17 = param_1[1]" identifier = (subscript_expression "param_1[1]" identifier [ number_literal ])) ; (comma_expression "iVar7 = iStack_a0, iVar17 != 0" (assignment_expression "iVar7 = iStack_a0" identifier = identifier) , (binary_expression "iVar17 != 0" identifier != number_literal)) ; (assignment_expression "iVar17 = *(int *)(iVar17 + 8)" identifier = (pointer_expression "*(int *)(iVar17 + 8)" * (cast_expression "(int *)(iVar17 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar17 + 8)" ( (binary_expression "iVar17 + 8" identifier + number_literal) ))))) ) (compound_statement "{\n      if (*(int *)(iVar17 + 0x18) != iVar17 + 0xe8) {\n        *(int *)(iVar17 + 0x18) = iVar6 + (*(int *)(iVar17 + 0x18) - *(int *)(iVar17 + 0x1c));\n      }\n      *(int *)(iVar17 + 0x1c) = iVar6;\n    }" { (if_statement "if (*(int *)(iVar17 + 0x18) != iVar17 + 0xe8) {\n        *(int *)(iVar17 + 0x18) = iVar6 + (*(int *)(iVar17 + 0x18) - *(int *)(iVar17 + 0x1c));\n      }" if (parenthesized_expression "(*(int *)(iVar17 + 0x18) != iVar17 + 0xe8)" ( (binary_expression "*(int *)(iVar17 + 0x18) != iVar17 + 0xe8" (pointer_expression "*(int *)(iVar17 + 0x18)" * (cast_expression "(int *)(iVar17 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar17 + 0x18)" ( (binary_expression "iVar17 + 0x18" identifier + number_literal) )))) != (binary_expression "iVar17 + 0xe8" identifier + number_literal)) )) (compound_statement "{\n        *(int *)(iVar17 + 0x18) = iVar6 + (*(int *)(iVar17 + 0x18) - *(int *)(iVar17 + 0x1c));\n      }" { (expression_statement "*(int *)(iVar17 + 0x18) = iVar6 + (*(int *)(iVar17 + 0x18) - *(int *)(iVar17 + 0x1c));" (assignment_expression "*(int *)(iVar17 + 0x18) = iVar6 + (*(int *)(iVar17 + 0x18) - *(int *)(iVar17 + 0x1c))" (pointer_expression "*(int *)(iVar17 + 0x18)" * (cast_expression "(int *)(iVar17 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar17 + 0x18)" ( (binary_expression "iVar17 + 0x18" identifier + number_literal) )))) = (binary_expression "iVar6 + (*(int *)(iVar17 + 0x18) - *(int *)(iVar17 + 0x1c))" identifier + (parenthesized_expression "(*(int *)(iVar17 + 0x18) - *(int *)(iVar17 + 0x1c))" ( (binary_expression "*(int *)(iVar17 + 0x18) - *(int *)(iVar17 + 0x1c)" (pointer_expression "*(int *)(iVar17 + 0x18)" * (cast_expression "(int *)(iVar17 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar17 + 0x18)" ( (binary_expression "iVar17 + 0x18" identifier + number_literal) )))) - (pointer_expression "*(int *)(iVar17 + 0x1c)" * (cast_expression "(int *)(iVar17 + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar17 + 0x1c)" ( (binary_expression "iVar17 + 0x1c" identifier + number_literal) ))))) )))) ;) })) (expression_statement "*(int *)(iVar17 + 0x1c) = iVar6;" (assignment_expression "*(int *)(iVar17 + 0x1c) = iVar6" (pointer_expression "*(int *)(iVar17 + 0x1c)" * (cast_expression "(int *)(iVar17 + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar17 + 0x1c)" ( (binary_expression "iVar17 + 0x1c" identifier + number_literal) )))) = identifier) ;) })) (while_statement "while (iVar17 = iVar7, -1 < *(int *)(iVar17 + 0x30)) {\n      if (*(int *)(iVar17 + 0x18) != iVar17 + 0xe8) {\n        *(int *)(iVar17 + 0x18) = iVar6 + (*(int *)(iVar17 + 0x18) - *(int *)(iVar17 + 0x1c));\n      }\n      *(int *)(iVar17 + 0x1c) = iVar6;\n      iVar7 = *(int *)(iVar17 + 8);\n      if (*(int *)(iVar17 + 8) == 0) {\n        iVar7 = *(int *)(iVar17 + 4);\n      }\n    }" while (parenthesized_expression "(iVar17 = iVar7, -1 < *(int *)(iVar17 + 0x30))" ( (comma_expression "iVar17 = iVar7, -1 < *(int *)(iVar17 + 0x30)" (assignment_expression "iVar17 = iVar7" identifier = identifier) , (binary_expression "-1 < *(int *)(iVar17 + 0x30)" number_literal < (pointer_expression "*(int *)(iVar17 + 0x30)" * (cast_expression "(int *)(iVar17 + 0x30)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar17 + 0x30)" ( (binary_expression "iVar17 + 0x30" identifier + number_literal) )))))) )) (compound_statement "{\n      if (*(int *)(iVar17 + 0x18) != iVar17 + 0xe8) {\n        *(int *)(iVar17 + 0x18) = iVar6 + (*(int *)(iVar17 + 0x18) - *(int *)(iVar17 + 0x1c));\n      }\n      *(int *)(iVar17 + 0x1c) = iVar6;\n      iVar7 = *(int *)(iVar17 + 8);\n      if (*(int *)(iVar17 + 8) == 0) {\n        iVar7 = *(int *)(iVar17 + 4);\n      }\n    }" { (if_statement "if (*(int *)(iVar17 + 0x18) != iVar17 + 0xe8) {\n        *(int *)(iVar17 + 0x18) = iVar6 + (*(int *)(iVar17 + 0x18) - *(int *)(iVar17 + 0x1c));\n      }" if (parenthesized_expression "(*(int *)(iVar17 + 0x18) != iVar17 + 0xe8)" ( (binary_expression "*(int *)(iVar17 + 0x18) != iVar17 + 0xe8" (pointer_expression "*(int *)(iVar17 + 0x18)" * (cast_expression "(int *)(iVar17 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar17 + 0x18)" ( (binary_expression "iVar17 + 0x18" identifier + number_literal) )))) != (binary_expression "iVar17 + 0xe8" identifier + number_literal)) )) (compound_statement "{\n        *(int *)(iVar17 + 0x18) = iVar6 + (*(int *)(iVar17 + 0x18) - *(int *)(iVar17 + 0x1c));\n      }" { (expression_statement "*(int *)(iVar17 + 0x18) = iVar6 + (*(int *)(iVar17 + 0x18) - *(int *)(iVar17 + 0x1c));" (assignment_expression "*(int *)(iVar17 + 0x18) = iVar6 + (*(int *)(iVar17 + 0x18) - *(int *)(iVar17 + 0x1c))" (pointer_expression "*(int *)(iVar17 + 0x18)" * (cast_expression "(int *)(iVar17 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar17 + 0x18)" ( (binary_expression "iVar17 + 0x18" identifier + number_literal) )))) = (binary_expression "iVar6 + (*(int *)(iVar17 + 0x18) - *(int *)(iVar17 + 0x1c))" identifier + (parenthesized_expression "(*(int *)(iVar17 + 0x18) - *(int *)(iVar17 + 0x1c))" ( (binary_expression "*(int *)(iVar17 + 0x18) - *(int *)(iVar17 + 0x1c)" (pointer_expression "*(int *)(iVar17 + 0x18)" * (cast_expression "(int *)(iVar17 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar17 + 0x18)" ( (binary_expression "iVar17 + 0x18" identifier + number_literal) )))) - (pointer_expression "*(int *)(iVar17 + 0x1c)" * (cast_expression "(int *)(iVar17 + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar17 + 0x1c)" ( (binary_expression "iVar17 + 0x1c" identifier + number_literal) ))))) )))) ;) })) (expression_statement "*(int *)(iVar17 + 0x1c) = iVar6;" (assignment_expression "*(int *)(iVar17 + 0x1c) = iVar6" (pointer_expression "*(int *)(iVar17 + 0x1c)" * (cast_expression "(int *)(iVar17 + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar17 + 0x1c)" ( (binary_expression "iVar17 + 0x1c" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar7 = *(int *)(iVar17 + 8);" (assignment_expression "iVar7 = *(int *)(iVar17 + 8)" identifier = (pointer_expression "*(int *)(iVar17 + 8)" * (cast_expression "(int *)(iVar17 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar17 + 8)" ( (binary_expression "iVar17 + 8" identifier + number_literal) ))))) ;) (if_statement "if (*(int *)(iVar17 + 8) == 0) {\n        iVar7 = *(int *)(iVar17 + 4);\n      }" if (parenthesized_expression "(*(int *)(iVar17 + 8) == 0)" ( (binary_expression "*(int *)(iVar17 + 8) == 0" (pointer_expression "*(int *)(iVar17 + 8)" * (cast_expression "(int *)(iVar17 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar17 + 8)" ( (binary_expression "iVar17 + 8" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n        iVar7 = *(int *)(iVar17 + 4);\n      }" { (expression_statement "iVar7 = *(int *)(iVar17 + 4);" (assignment_expression "iVar7 = *(int *)(iVar17 + 4)" identifier = (pointer_expression "*(int *)(iVar17 + 4)" * (cast_expression "(int *)(iVar17 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar17 + 4)" ( (binary_expression "iVar17 + 4" identifier + number_literal) ))))) ;) })) })) }))) (if_statement "if ((param_1[0xc] & 4U) != 0) {\n    if ((param_1[9] == uVar20) || (uVar19 == 0)) {\n      puStack_90 = puStack_90 + -1;\n    }\n    *puStack_90 = 0;\n  }" if (parenthesized_expression "((param_1[0xc] & 4U) != 0)" ( (binary_expression "(param_1[0xc] & 4U) != 0" (parenthesized_expression "(param_1[0xc] & 4U)" ( (binary_expression "param_1[0xc] & 4U" (subscript_expression "param_1[0xc]" identifier [ number_literal ]) & number_literal) )) != number_literal) )) (compound_statement "{\n    if ((param_1[9] == uVar20) || (uVar19 == 0)) {\n      puStack_90 = puStack_90 + -1;\n    }\n    *puStack_90 = 0;\n  }" { (if_statement "if ((param_1[9] == uVar20) || (uVar19 == 0)) {\n      puStack_90 = puStack_90 + -1;\n    }" if (parenthesized_expression "((param_1[9] == uVar20) || (uVar19 == 0))" ( (binary_expression "(param_1[9] == uVar20) || (uVar19 == 0)" (parenthesized_expression "(param_1[9] == uVar20)" ( (binary_expression "param_1[9] == uVar20" (subscript_expression "param_1[9]" identifier [ number_literal ]) == identifier) )) || (parenthesized_expression "(uVar19 == 0)" ( (binary_expression "uVar19 == 0" identifier == number_literal) ))) )) (compound_statement "{\n      puStack_90 = puStack_90 + -1;\n    }" { (expression_statement "puStack_90 = puStack_90 + -1;" (assignment_expression "puStack_90 = puStack_90 + -1" identifier = (binary_expression "puStack_90 + -1" identifier + number_literal)) ;) })) (expression_statement "*puStack_90 = 0;" (assignment_expression "*puStack_90 = 0" (pointer_expression "*puStack_90" * identifier) = number_literal) ;) })) (if_statement "if ((iVar5 == 0) && (bVar2)) {\n    if ((param_2 != (undefined4 *)0x1) && (uVar19 != 0)) goto LAB_0001c6c0;\n    if (*(int *)(iVar18 + 0x30) == 0) {\n      iVar5 = FUN_0001bcbc(param_1);\n    }\n    else {\n      iVar5 = FUN_0001bd68(param_1,*(undefined4 *)(iVar18 + 4),0xffffffff,\n                           *(int *)(puVar22 + 0x16fd4) + 0x2d20);\n    }\n    if (iVar5 != 0) {\n      *(undefined2 *)(iVar18 + 0x3c) = 7;\n      param_1[0xc] = param_1[0xc] | 0x4000;\n      FUN_0001b6fc(iStack_a0);\n      return 0;\n    }\n  }" if (parenthesized_expression "((iVar5 == 0) && (bVar2))" ( (binary_expression "(iVar5 == 0) && (bVar2)" (parenthesized_expression "(iVar5 == 0)" ( (binary_expression "iVar5 == 0" identifier == number_literal) )) && (parenthesized_expression "(bVar2)" ( identifier ))) )) (compound_statement "{\n    if ((param_2 != (undefined4 *)0x1) && (uVar19 != 0)) goto LAB_0001c6c0;\n    if (*(int *)(iVar18 + 0x30) == 0) {\n      iVar5 = FUN_0001bcbc(param_1);\n    }\n    else {\n      iVar5 = FUN_0001bd68(param_1,*(undefined4 *)(iVar18 + 4),0xffffffff,\n                           *(int *)(puVar22 + 0x16fd4) + 0x2d20);\n    }\n    if (iVar5 != 0) {\n      *(undefined2 *)(iVar18 + 0x3c) = 7;\n      param_1[0xc] = param_1[0xc] | 0x4000;\n      FUN_0001b6fc(iStack_a0);\n      return 0;\n    }\n  }" { (if_statement "if ((param_2 != (undefined4 *)0x1) && (uVar19 != 0)) goto LAB_0001c6c0;" if (parenthesized_expression "((param_2 != (undefined4 *)0x1) && (uVar19 != 0))" ( (binary_expression "(param_2 != (undefined4 *)0x1) && (uVar19 != 0)" (parenthesized_expression "(param_2 != (undefined4 *)0x1)" ( (binary_expression "param_2 != (undefined4 *)0x1" identifier != (cast_expression "(undefined4 *)0x1" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(uVar19 != 0)" ( (binary_expression "uVar19 != 0" identifier != number_literal) ))) )) (goto_statement "goto LAB_0001c6c0;" goto statement_identifier ;)) (if_statement "if (*(int *)(iVar18 + 0x30) == 0) {\n      iVar5 = FUN_0001bcbc(param_1);\n    }\n    else {\n      iVar5 = FUN_0001bd68(param_1,*(undefined4 *)(iVar18 + 4),0xffffffff,\n                           *(int *)(puVar22 + 0x16fd4) + 0x2d20);\n    }" if (parenthesized_expression "(*(int *)(iVar18 + 0x30) == 0)" ( (binary_expression "*(int *)(iVar18 + 0x30) == 0" (pointer_expression "*(int *)(iVar18 + 0x30)" * (cast_expression "(int *)(iVar18 + 0x30)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar18 + 0x30)" ( (binary_expression "iVar18 + 0x30" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n      iVar5 = FUN_0001bcbc(param_1);\n    }" { (expression_statement "iVar5 = FUN_0001bcbc(param_1);" (assignment_expression "iVar5 = FUN_0001bcbc(param_1)" identifier = (call_expression "FUN_0001bcbc(param_1)" identifier (argument_list "(param_1)" ( identifier )))) ;) }) (else_clause "else {\n      iVar5 = FUN_0001bd68(param_1,*(undefined4 *)(iVar18 + 4),0xffffffff,\n                           *(int *)(puVar22 + 0x16fd4) + 0x2d20);\n    }" else (compound_statement "{\n      iVar5 = FUN_0001bd68(param_1,*(undefined4 *)(iVar18 + 4),0xffffffff,\n                           *(int *)(puVar22 + 0x16fd4) + 0x2d20);\n    }" { (expression_statement "iVar5 = FUN_0001bd68(param_1,*(undefined4 *)(iVar18 + 4),0xffffffff,\n                           *(int *)(puVar22 + 0x16fd4) + 0x2d20);" (assignment_expression "iVar5 = FUN_0001bd68(param_1,*(undefined4 *)(iVar18 + 4),0xffffffff,\n                           *(int *)(puVar22 + 0x16fd4) + 0x2d20)" identifier = (call_expression "FUN_0001bd68(param_1,*(undefined4 *)(iVar18 + 4),0xffffffff,\n                           *(int *)(puVar22 + 0x16fd4) + 0x2d20)" identifier (argument_list "(param_1,*(undefined4 *)(iVar18 + 4),0xffffffff,\n                           *(int *)(puVar22 + 0x16fd4) + 0x2d20)" ( identifier , (pointer_expression "*(undefined4 *)(iVar18 + 4)" * (cast_expression "(undefined4 *)(iVar18 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar18 + 4)" ( (binary_expression "iVar18 + 4" identifier + number_literal) )))) , number_literal , (binary_expression "*(int *)(puVar22 + 0x16fd4) + 0x2d20" (pointer_expression "*(int *)(puVar22 + 0x16fd4)" * (cast_expression "(int *)(puVar22 + 0x16fd4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar22 + 0x16fd4)" ( (binary_expression "puVar22 + 0x16fd4" identifier + number_literal) )))) + number_literal) )))) ;) }))) (if_statement "if (iVar5 != 0) {\n      *(undefined2 *)(iVar18 + 0x3c) = 7;\n      param_1[0xc] = param_1[0xc] | 0x4000;\n      FUN_0001b6fc(iStack_a0);\n      return 0;\n    }" if (parenthesized_expression "(iVar5 != 0)" ( (binary_expression "iVar5 != 0" identifier != number_literal) )) (compound_statement "{\n      *(undefined2 *)(iVar18 + 0x3c) = 7;\n      param_1[0xc] = param_1[0xc] | 0x4000;\n      FUN_0001b6fc(iStack_a0);\n      return 0;\n    }" { (expression_statement "*(undefined2 *)(iVar18 + 0x3c) = 7;" (assignment_expression "*(undefined2 *)(iVar18 + 0x3c) = 7" (pointer_expression "*(undefined2 *)(iVar18 + 0x3c)" * (cast_expression "(undefined2 *)(iVar18 + 0x3c)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar18 + 0x3c)" ( (binary_expression "iVar18 + 0x3c" identifier + number_literal) )))) = number_literal) ;) (expression_statement "param_1[0xc] = param_1[0xc] | 0x4000;" (assignment_expression "param_1[0xc] = param_1[0xc] | 0x4000" (subscript_expression "param_1[0xc]" identifier [ number_literal ]) = (binary_expression "param_1[0xc] | 0x4000" (subscript_expression "param_1[0xc]" identifier [ number_literal ]) | number_literal)) ;) (expression_statement "FUN_0001b6fc(iStack_a0);" (call_expression "FUN_0001b6fc(iStack_a0)" identifier (argument_list "(iStack_a0)" ( identifier ))) ;) (return_statement "return 0;" return number_literal ;) })) })) (if_statement "if (uVar19 == 0) {\n    if (((param_2 == (undefined4 *)0x3) && (*(short *)(iVar18 + 0x3c) != 4)) &&\n       (*(short *)(iVar18 + 0x3c) != 7)) {\n      *(undefined2 *)(iVar18 + 0x3c) = 6;\n    }\n    FUN_0001b6fc(iStack_a0);\n    return 0;\n  }" if (parenthesized_expression "(uVar19 == 0)" ( (binary_expression "uVar19 == 0" identifier == number_literal) )) (compound_statement "{\n    if (((param_2 == (undefined4 *)0x3) && (*(short *)(iVar18 + 0x3c) != 4)) &&\n       (*(short *)(iVar18 + 0x3c) != 7)) {\n      *(undefined2 *)(iVar18 + 0x3c) = 6;\n    }\n    FUN_0001b6fc(iStack_a0);\n    return 0;\n  }" { (if_statement "if (((param_2 == (undefined4 *)0x3) && (*(short *)(iVar18 + 0x3c) != 4)) &&\n       (*(short *)(iVar18 + 0x3c) != 7)) {\n      *(undefined2 *)(iVar18 + 0x3c) = 6;\n    }" if (parenthesized_expression "(((param_2 == (undefined4 *)0x3) && (*(short *)(iVar18 + 0x3c) != 4)) &&\n       (*(short *)(iVar18 + 0x3c) != 7))" ( (binary_expression "((param_2 == (undefined4 *)0x3) && (*(short *)(iVar18 + 0x3c) != 4)) &&\n       (*(short *)(iVar18 + 0x3c) != 7)" (parenthesized_expression "((param_2 == (undefined4 *)0x3) && (*(short *)(iVar18 + 0x3c) != 4))" ( (binary_expression "(param_2 == (undefined4 *)0x3) && (*(short *)(iVar18 + 0x3c) != 4)" (parenthesized_expression "(param_2 == (undefined4 *)0x3)" ( (binary_expression "param_2 == (undefined4 *)0x3" identifier == (cast_expression "(undefined4 *)0x3" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(*(short *)(iVar18 + 0x3c) != 4)" ( (binary_expression "*(short *)(iVar18 + 0x3c) != 4" (pointer_expression "*(short *)(iVar18 + 0x3c)" * (cast_expression "(short *)(iVar18 + 0x3c)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar18 + 0x3c)" ( (binary_expression "iVar18 + 0x3c" identifier + number_literal) )))) != number_literal) ))) )) && (parenthesized_expression "(*(short *)(iVar18 + 0x3c) != 7)" ( (binary_expression "*(short *)(iVar18 + 0x3c) != 7" (pointer_expression "*(short *)(iVar18 + 0x3c)" * (cast_expression "(short *)(iVar18 + 0x3c)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar18 + 0x3c)" ( (binary_expression "iVar18 + 0x3c" identifier + number_literal) )))) != number_literal) ))) )) (compound_statement "{\n      *(undefined2 *)(iVar18 + 0x3c) = 6;\n    }" { (expression_statement "*(undefined2 *)(iVar18 + 0x3c) = 6;" (assignment_expression "*(undefined2 *)(iVar18 + 0x3c) = 6" (pointer_expression "*(undefined2 *)(iVar18 + 0x3c)" * (cast_expression "(undefined2 *)(iVar18 + 0x3c)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar18 + 0x3c)" ( (binary_expression "iVar18 + 0x3c" identifier + number_literal) )))) = number_literal) ;) })) (expression_statement "FUN_0001b6fc(iStack_a0);" (call_expression "FUN_0001b6fc(iStack_a0)" identifier (argument_list "(iStack_a0)" ( identifier ))) ;) (return_statement "return 0;" return number_literal ;) })) (labeled_statement "LAB_0001c6c0:\n  if (bVar4) {\n    param_1[0xb] = *(int *)(puVar22 + 0x16fd4) + -0x4fa0;\n    iVar5 = FUN_0001b3ac(param_1,iStack_a0,uVar19);\n    param_1[0xb] = 0;\n    return iVar5;\n  }" statement_identifier : (if_statement "if (bVar4) {\n    param_1[0xb] = *(int *)(puVar22 + 0x16fd4) + -0x4fa0;\n    iVar5 = FUN_0001b3ac(param_1,iStack_a0,uVar19);\n    param_1[0xb] = 0;\n    return iVar5;\n  }" if (parenthesized_expression "(bVar4)" ( identifier )) (compound_statement "{\n    param_1[0xb] = *(int *)(puVar22 + 0x16fd4) + -0x4fa0;\n    iVar5 = FUN_0001b3ac(param_1,iStack_a0,uVar19);\n    param_1[0xb] = 0;\n    return iVar5;\n  }" { (expression_statement "param_1[0xb] = *(int *)(puVar22 + 0x16fd4) + -0x4fa0;" (assignment_expression "param_1[0xb] = *(int *)(puVar22 + 0x16fd4) + -0x4fa0" (subscript_expression "param_1[0xb]" identifier [ number_literal ]) = (binary_expression "*(int *)(puVar22 + 0x16fd4) + -0x4fa0" (pointer_expression "*(int *)(puVar22 + 0x16fd4)" * (cast_expression "(int *)(puVar22 + 0x16fd4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar22 + 0x16fd4)" ( (binary_expression "puVar22 + 0x16fd4" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "iVar5 = FUN_0001b3ac(param_1,iStack_a0,uVar19);" (assignment_expression "iVar5 = FUN_0001b3ac(param_1,iStack_a0,uVar19)" identifier = (call_expression "FUN_0001b3ac(param_1,iStack_a0,uVar19)" identifier (argument_list "(param_1,iStack_a0,uVar19)" ( identifier , identifier , identifier )))) ;) (expression_statement "param_1[0xb] = 0;" (assignment_expression "param_1[0xb] = 0" (subscript_expression "param_1[0xb]" identifier [ number_literal ]) = number_literal) ;) (return_statement "return iVar5;" return identifier ;) }))) (if_statement "if (param_1[0xb] == 0) {\n    return iStack_a0;\n  }" if (parenthesized_expression "(param_1[0xb] == 0)" ( (binary_expression "param_1[0xb] == 0" (subscript_expression "param_1[0xb]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n    return iStack_a0;\n  }" { (return_statement "return iStack_a0;" return identifier ;) })) (if_statement "if (uVar19 < 2) {\n    return iStack_a0;\n  }" if (parenthesized_expression "(uVar19 < 2)" ( (binary_expression "uVar19 < 2" identifier < number_literal) )) (compound_statement "{\n    return iStack_a0;\n  }" { (return_statement "return iStack_a0;" return identifier ;) })) (expression_statement "iVar5 = FUN_0001b3ac(param_1,iStack_a0,uVar19);" (assignment_expression "iVar5 = FUN_0001b3ac(param_1,iStack_a0,uVar19)" identifier = (call_expression "FUN_0001b3ac(param_1,iStack_a0,uVar19)" identifier (argument_list "(param_1,iStack_a0,uVar19)" ( identifier , identifier , identifier )))) ;) (return_statement "return iVar5;" return identifier ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) & LIT) )) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != LIT) )) && (parenthesized_expression ( (binary_expression LIT < (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) && (binary_expression (subscript_expression IDENT [ LIT ]) == LIT)) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == (subscript_expression IDENT [ LIT ])) )) && (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == (subscript_expression IDENT [ LIT ])) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) , (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT)))) ))) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (subscript_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 IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) })) })) })) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT == (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) )) (compound_statement { (return_statement return (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) ;) }))) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( (subscript_expression IDENT [ LIT ]) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( ))) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( ))) ;) (labeled_statement statement_identifier : (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( ))) ;)) }))) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (return_statement return LIT ;) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * IDENT)) ;) (return_statement return LIT ;) })) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = BOOL) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = BOOL) ;) }))) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }))) (expression_statement (assignment_expression IDENT = (binary_expression IDENT & LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != LIT) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = LIT) , (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT)) ))) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) , (binary_expression IDENT != LIT)) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (binary_expression (binary_expression (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) << LIT) | IDENT) | LIT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * IDENT)) ;) })) (return_statement return LIT ;) })) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = 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) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier short) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , LIT )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) & LIT) )) != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , LIT ))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( ))))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (return_statement return LIT ;) })) })))) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = BOOL) ;) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) & LIT) )) == LIT) )) && (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) ))) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) , (binary_expression IDENT != LIT)) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = BOOL) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = BOOL) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = BOOL) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , LIT , LIT )))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT < LIT) )) || (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , LIT )))) , (binary_expression IDENT != LIT)) ))) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( IDENT )) && (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * IDENT)) ;) })) (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)) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) & LIT) )) != LIT) )) && (parenthesized_expression ( (binary_expression LIT < IDENT) ))) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) })) (expression_statement (assignment_expression IDENT = BOOL) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = BOOL) ;) }))) }))) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT)) ;)) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + IDENT) )))) != (char_literal ' character ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) & LIT) )) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + IDENT) ))) + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + IDENT) )))) = LIT) ;) }))) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (subscript_expression IDENT [ LIT ]) - IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = BOOL) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (labeled_statement statement_identifier : (do_statement do (compound_statement { (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( ))))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) != LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) && (parenthesized_expression ( (binary_expression IDENT == LIT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( ))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) })) (goto_statement goto statement_identifier ;) })) }) while (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) & LIT) )) == LIT) )) && (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) == (char_literal ' character ')) ))) )) && (parenthesized_expression ( (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == (char_literal ' escape_sequence ')) || (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) & LIT) )) == LIT) ))) )) ))) )) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )) (argument_list ( IDENT , (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;)) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (subscript_expression IDENT [ LIT ]) | LIT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (return_statement return LIT ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (binary_expression (binary_expression IDENT + LIT) + IDENT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != IDENT) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = IDENT) , (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) & LIT) )) != LIT)) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + IDENT) )))) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression (subscript_expression IDENT [ LIT ]) - IDENT)) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT + IDENT) < IDENT) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (subscript_expression IDENT [ LIT ]) | LIT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (return_statement return LIT ;) })) (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 (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) & 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 (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( IDENT , (binary_expression IDENT + LIT) , (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) ))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) || (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) & LIT) )) != LIT) ))) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) & LIT) )) == LIT) )) && (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) & LIT) )) != LIT) ))) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = BOOL) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + (binary_expression (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) * LIT)) ))))) + LIT) )))) )) (argument_list ( )))) ;) (return_statement return IDENT ;) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = BOOL) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) + (binary_expression (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) * LIT)) ))))) + LIT) )))) )) (argument_list ( )))) ;) (return_statement return IDENT ;) })) }))) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (if_statement if (parenthesized_expression ( IDENT )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }))) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) }) (else_clause else (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 IDENT + LIT) )))) = IDENT) ;) }))) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = 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) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != LIT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )) (argument_list ( IDENT , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = BOOL) ;) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = BOOL) ;) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = BOOL) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = BOOL) ;) }))))) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT < IDENT) )) ;)) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (for_statement for ( (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ; (comma_expression (assignment_expression IDENT = IDENT) , (binary_expression IDENT != LIT)) ; (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != (binary_expression IDENT + LIT)) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) - (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )))) ;) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) })) (while_statement while (parenthesized_expression ( (comma_expression (assignment_expression IDENT = IDENT) , (binary_expression LIT < (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != (binary_expression IDENT + LIT)) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) - (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )))) ;) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (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 IDENT + LIT) )))) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) })) })) }))) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) & LIT) )) != LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == IDENT) )) || (parenthesized_expression ( (binary_expression IDENT == LIT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) })) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) && (parenthesized_expression ( IDENT ))) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) && (parenthesized_expression ( (binary_expression IDENT != LIT) ))) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , LIT , (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (subscript_expression IDENT [ LIT ]) | LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (return_statement return LIT ;) })) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) && (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier short) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) ))) )) && (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier short) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) ))) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) })) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (return_statement return LIT ;) })) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( IDENT )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT )))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (return_statement return IDENT ;) }))) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) (compound_statement { (return_statement return IDENT ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (return_statement return IDENT ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT )))) ;) (return_statement return IDENT ;) })))
(function_definition "int FUN_0001bfec(int *param_1,undefined4 *param_2)\n\n{\n  int *piVar1;\n  bool bVar2;\n  bool bVar3;\n  bool bVar4;\n  int iVar5;\n  int iVar6;\n  int iVar7;\n  int iVar8;\n  int iVar9;\n  undefined4 *puVar10;\n  uint uVar11;\n  int iVar12;\n  undefined4 uVar13;\n  int iVar14;\n  undefined2 uVar15;\n  int *piVar16;\n  int iVar17;\n  int iVar18;\n  uint uVar19;\n  uint uVar20;\n  code *pcVar21;\n  undefined *puVar22;\n  uint uVar23;\n  int iVar24;\n  int iStack_a4;\n  int iStack_a0;\n  uint uStack_94;\n  undefined1 *puStack_90;\n  int iStack_8c;\n  int iStack_7c;\n  undefined4 local_28;\n  undefined4 local_24;\n  undefined4 local_20;\n  undefined4 local_1c;\n  int local_c;\n  \n  local_c = *(int *)PTR___stack_chk_guard_000333f4;\n  if ((param_1[0xc] & 0x102U) == 0) {\n    iVar5 = param_2[1];\n    if ((iVar5 != 0) && (-1 < *(int *)(iVar5 + 0x30))) {\n      piVar16 = (int *)param_1[0xe];\n      pcVar21 = (code *)PTR_abort_000332e8;\n      if (piVar16[4] == 0 && piVar16[5] == 0) goto LAB_0001c120;\n      if ((*piVar16 == param_2[0x16]) && (piVar16[1] == param_2[0x17])) {\n        piVar1 = param_2 + 0x12;\n        param_2 = (undefined4 *)piVar16[2];\n        if ((param_2 == (undefined4 *)0x0) &&\n           (param_2 = (undefined4 *)piVar16[3], param_2 == (undefined4 *)*piVar1)) {\n          piVar16[3] = *(int *)(iVar5 + 0x48);\n          piVar16[2] = 0;\n          piVar16 = (int *)param_1[0xe];\n          param_2 = *(undefined4 **)(iVar5 + 0x5c);\n          param_1 = *(int **)(iVar5 + 0x58);\n          piVar16[1] = (int)param_2;\n          *piVar16 = (int)param_1;\n        }\n      }\n    }\nLAB_0001c0f8:\n    if (local_c == *(int *)PTR___stack_chk_guard_000333f4) {\n      return *(int *)PTR___stack_chk_guard_000333f4;\n    }\n  }\n  else {\n    local_24 = param_2[0x12];\n    local_28 = 0;\n    local_1c = param_2[0x17];\n    local_20 = param_2[0x16];\n    param_2 = &local_28;\n    param_1 = (int *)hash_delete(param_1[0xe]);\n    if (param_1 != (int *)0x0) {\n      (*(code *)PTR_free_000333fc)();\n      goto LAB_0001c0f8;\n    }\n    pcVar21 = (code *)PTR_abort_000332e8;\n    (*(code *)PTR_abort_000332e8)();\nLAB_0001c120:\n    (*pcVar21)();\n  }\n  puVar22 = PTR___stack_chk_fail_000333dc;\n  (*(code *)PTR___stack_chk_fail_000333dc)();\n  iVar18 = *param_1;\n  iVar5 = *(int *)(iVar18 + 0xc);\n  if (iVar5 != 0) {\n    iStack_7c = (**(code **)(puVar22 + 0x172d0))();\n    if (iStack_7c < 0) {\n      (**(code **)(puVar22 + 0x17194))(*(undefined4 *)(iVar18 + 0xc));\n      *(undefined4 *)(iVar18 + 0xc) = 0;\n      if (param_2 != (undefined4 *)0x3) {\n        return 0;\n      }\n      *(undefined2 *)(iVar18 + 0x3c) = 4;\n      puVar10 = (undefined4 *)(**(code **)(puVar22 + 0x17220))();\n      *(undefined4 *)(iVar18 + 0x20) = *puVar10;\n      return 0;\n    }\n    if (param_1[0xb] == 0) {\n      uStack_94 = 100000;\n      bVar2 = true;\n    }\n    else {\n      uStack_94 = 0xffffffff;\n      bVar2 = true;\n    }\n    goto LAB_0001c1b8;\n  }\n  uVar19 = param_1[0xc];\n  if ((uVar19 & 0x204) == 0x200) {\n    iVar17 = param_1[8];\n  }\n  else {\n    iVar17 = -100;\n  }\n  uVar20 = uVar19 & 0x10;\n  if (((uVar20 != 0) && (uVar20 = 0x20000, (uVar19 & 1) != 0)) &&\n     (uVar20 = *(uint *)(iVar18 + 0x30), uVar20 != 0)) {\n    uVar20 = 0x20000;\n  }\n  iStack_7c = openat_safer(iVar17,*(undefined4 *)(iVar18 + 0x18),\n                           (uVar19 & 0x800) << 7 | uVar20 | 0x90880);\n  if (iStack_7c < 0) {\nLAB_0001c3e8:\n    *(undefined4 *)(iVar18 + 0xc) = 0;\n    if (param_2 == (undefined4 *)0x3) {\n      *(undefined2 *)(iVar18 + 0x3c) = 4;\n      puVar10 = (undefined4 *)(**(code **)(puVar22 + 0x17220))();\n      *(undefined4 *)(iVar18 + 0x20) = *puVar10;\n    }\n    return 0;\n  }\n  iVar17 = (**(code **)(puVar22 + 0x171f0))(iStack_7c);\n  if (iVar17 == 0) {\n    puVar10 = (undefined4 *)(**(code **)(puVar22 + 0x17220))();\n    uVar13 = *puVar10;\n    (**(code **)(puVar22 + 0x17198))(iStack_7c);\n    *puVar10 = uVar13;\n    goto LAB_0001c3e8;\n  }\n  *(int *)(iVar18 + 0xc) = iVar17;\n  if (*(short *)(iVar18 + 0x3c) == 0xb) {\n    uVar15 = FUN_0001b18c(param_1,iVar18,0);\n    *(undefined2 *)(iVar18 + 0x3c) = uVar15;\n  }\n  else if ((param_1[0xc] & 0x100U) != 0) {\n    FUN_0001bfec(param_1,iVar18);\n    FUN_0001b18c(param_1,iVar18,0);\n    iVar17 = FUN_0001bad0(param_1,iVar18);\n    if (iVar17 == 0) {\n      puVar10 = (undefined4 *)(**(code **)(puVar22 + 0x17220))();\n      *puVar10 = 0xc;\n      return 0;\n    }\n  }\n  if (param_1[0xb] == 0) {\n    uStack_94 = 100000;\n  }\n  else {\n    uStack_94 = 0xffffffff;\n  }\n  if (param_2 == (undefined4 *)0x2) {\n    bVar2 = false;\n  }\n  else {\n    if ((((param_1[0xc] & 0x38U) == 0x18) && (*(int *)(iVar18 + 100) == 2)) &&\n       (iVar17 = FUN_0001ba08(iVar18,iStack_7c), iVar17 != 0)) {\n      bVar2 = false;\n      if (param_2 != (undefined4 *)0x3) {\n        bVar2 = false;\n        goto LAB_0001c1b8;\n      }\n      uVar19 = param_1[0xc];\n    }\n    else {\n      bVar2 = true;\n      uVar19 = param_1[0xc];\n    }\n    if ((uVar19 & 0x200) != 0) {\n      iStack_7c = rpl_fcntl(iStack_7c,0x406,3);\n    }\n    if ((iStack_7c < 0) || (iVar17 = FUN_0001bd68(param_1,iVar18,iStack_7c,0), iVar17 != 0)) {\n      if ((bVar2) && (param_2 == (undefined4 *)0x3)) {\n        puVar10 = (undefined4 *)(**(code **)(puVar22 + 0x17220))();\n        *(undefined4 *)(iVar18 + 0x20) = *puVar10;\n      }\n      *(ushort *)(iVar18 + 0x3e) = *(ushort *)(iVar18 + 0x3e) | 1;\n      (**(code **)(puVar22 + 0x17194))(*(undefined4 *)(iVar18 + 0xc));\n      *(undefined4 *)(iVar18 + 0xc) = 0;\n      if (((param_1[0xc] & 0x200U) != 0) && (-1 < iStack_7c)) {\n        (**(code **)(puVar22 + 0x17198))(iStack_7c);\n        *(undefined4 *)(iVar18 + 0xc) = 0;\n      }\n      bVar2 = false;\n    }\n    else {\n      bVar2 = true;\n    }\n  }\nLAB_0001c1b8:\n  iVar17 = *(int *)(iVar18 + 0x28) + -1;\n  if (*(char *)(*(int *)(iVar18 + 0x1c) + iVar17) != '/') {\n    iVar17 = *(int *)(iVar18 + 0x28);\n  }\n  if ((param_1[0xc] & 4U) == 0) {\n    puStack_90 = (undefined1 *)0x0;\n  }\n  else {\n    puStack_90 = (undefined1 *)(param_1[6] + iVar17) + 1;\n    *(undefined1 *)(param_1[6] + iVar17) = 0x2f;\n  }\n  uVar20 = iVar17 + 1;\n  uVar23 = param_1[9] - uVar20;\n  iVar6 = *(int *)(iVar18 + 0x30);\n  bVar4 = false;\n  iStack_8c = 0;\n  iStack_a4 = 0;\n  uVar19 = 0;\n  iStack_a0 = 0;\n  iVar7 = *(int *)(puVar22 + 0x16fd4);\n  iVar8 = *(int *)(puVar22 + 0x16fd4);\n  iVar9 = *(int *)(puVar22 + 0x16fd4);\nLAB_0001c96c:\n  do {\n    do {\n      if (*(int *)(iVar18 + 0xc) == 0) goto LAB_0001c66c;\n      piVar16 = (int *)(**(code **)(puVar22 + 0x17220))();\n      *piVar16 = 0;\n      puVar10 = (undefined4 *)(**(code **)(puVar22 + 0x171d8))(*(undefined4 *)(iVar18 + 0xc));\n      if (puVar10 == (undefined4 *)0x0) {\n        if (*piVar16 != 0) {\n          *(int *)(iVar18 + 0x20) = *piVar16;\n          uVar15 = 7;\n          if ((iVar5 == 0) && (uVar19 == 0)) {\n            uVar15 = 4;\n          }\n          *(undefined2 *)(iVar18 + 0x3c) = uVar15;\n        }\n        if (*(int *)(iVar18 + 0xc) != 0) {\n          (**(code **)(puVar22 + 0x17194))();\n          *(undefined4 *)(iVar18 + 0xc) = 0;\n        }\n        goto LAB_0001c66c;\n      }\n    } while ((((param_1[0xc] & 0x20U) == 0) && (*(char *)((int)puVar10 + 0x13) == '.')) &&\n            ((*(char *)(puVar10 + 5) == '\0' || ((puVar10[5] & 0xffff0000) == 0x2e000000))));\n    uVar11 = (**(code **)(puVar22 + 0x17240))((int)puVar10 + 0x13);\n    iVar12 = (*(code *)(iVar7 + -0x4b14))(param_1,(int)puVar10 + 0x13,uVar11);\n    if (iVar12 == 0) {\nLAB_0001c794:\n      iVar5 = *piVar16;\n      (**(code **)(puVar22 + 0x172c8))(iVar12);\n      FUN_0001b6fc(iStack_a0);\n      (**(code **)(puVar22 + 0x17194))(*(undefined4 *)(iVar18 + 0xc));\n      *(undefined4 *)(iVar18 + 0xc) = 0;\n      *(undefined2 *)(iVar18 + 0x3c) = 7;\n      param_1[0xc] = param_1[0xc] | 0x4000;\n      *piVar16 = iVar5;\n      return 0;\n    }\n    if (uVar23 <= uVar11) {\n      iVar24 = param_1[6];\n      iVar14 = FUN_0001b0cc(param_1,iVar17 + 2 + uVar11);\n      if (iVar14 == 0) goto LAB_0001c794;\n      if ((param_1[6] != iVar24) && (iStack_8c = iVar14, (param_1[0xc] & 4U) != 0)) {\n        puStack_90 = (undefined1 *)(param_1[6] + uVar20);\n      }\n      uVar23 = param_1[9] - uVar20;\n    }\n    if (uVar20 + uVar11 < uVar20) {\n      (**(code **)(puVar22 + 0x172c8))(iVar12);\n      FUN_0001b6fc(iStack_a0);\n      (**(code **)(puVar22 + 0x17194))(*(undefined4 *)(iVar18 + 0xc));\n      *(undefined4 *)(iVar18 + 0xc) = 0;\n      *(undefined2 *)(iVar18 + 0x3c) = 7;\n      param_1[0xc] = param_1[0xc] | 0x4000;\n      *piVar16 = 0x4e;\n      return 0;\n    }\n    *(int *)(iVar12 + 0x30) = iVar6 + 1;\n    *(int *)(iVar12 + 4) = *param_1;\n    *(uint *)(iVar12 + 0x28) = uVar20 + uVar11;\n    uVar13 = *puVar10;\n    *(undefined4 *)(iVar12 + 0x5c) = puVar10[1];\n    *(undefined4 *)(iVar12 + 0x58) = uVar13;\n    if ((param_1[0xc] & 4U) == 0) {\n      *(int *)(iVar12 + 0x18) = iVar12 + 0xe8;\n      iVar14 = param_1[0xb];\n    }\n    else {\n      *(undefined4 *)(iVar12 + 0x18) = *(undefined4 *)(iVar12 + 0x1c);\n      (**(code **)(puVar22 + 0x172cc))(puStack_90,iVar12 + 0xe8,*(int *)(iVar12 + 0x34) + 1);\n      iVar14 = param_1[0xb];\n    }\n    if ((iVar14 == 0) || ((param_1[0xc] & 0x400U) != 0)) {\n      if (((param_1[0xc] & 0x18U) == 0x18) && ((*(byte *)((int)puVar10 + 0x12) & 0xfb) != 0)) {\n        *(undefined2 *)(iVar12 + 0x3c) = 0xb;\n        bVar3 = true;\n        if (*(byte *)((int)puVar10 + 0x12) < 0xd) {\n                    \n                    \n          iVar5 = (*(code *)(puVar22 +\n                            *(int *)(iVar9 + 0x2d30 + (uint)*(byte *)((int)puVar10 + 0x12) * 4) +\n                            0x1ef9c))();\n          return iVar5;\n        }\n      }\n      else {\n        *(undefined2 *)(iVar12 + 0x3c) = 0xb;\n        bVar3 = false;\n        if (*(byte *)((int)puVar10 + 0x12) < 0xd) {\n                    \n                    \n          iVar5 = (*(code *)(puVar22 +\n                            *(int *)(*(int *)(puVar22 + 0x16fd4) + 0x2d64 +\n                                    (uint)*(byte *)((int)puVar10 + 0x12) * 4) + 0x1ef9c))();\n          return iVar5;\n        }\n      }\n      *(undefined4 *)(iVar12 + 0x60) = 0;\n      if (bVar3) {\n        uVar13 = 1;\n      }\n      else {\n        uVar13 = 2;\n      }\n      *(undefined4 *)(iVar12 + 0x84) = uVar13;\n      *(undefined4 *)(iVar12 + 0x80) = 0;\n    }\n    else {\n      uVar15 = FUN_0001b18c(param_1,iVar12,0);\n      *(undefined2 *)(iVar12 + 0x3c) = uVar15;\n    }\n    *(undefined4 *)(iVar12 + 8) = 0;\n    iVar14 = iVar12;\n    if (iStack_a0 != 0) {\n      *(int *)(iStack_a4 + 8) = iVar12;\n      iVar14 = iStack_a0;\n    }\n    iStack_a0 = iVar14;\n    iStack_a4 = iVar12;\n    if (uVar19 == 10000) {\n      if (param_1[0xb] != 0) {\nLAB_0001cb74:\n        uVar19 = 0x2711;\n        goto LAB_0001c96c;\n      }\n      iVar12 = (*(code *)(iVar8 + -0x47a8))(iVar18,iStack_7c);\n      if (iVar12 == 0x6969) {\n        bVar4 = false;\n      }\n      else if (iVar12 == 0x1021994) {\n        bVar4 = false;\n      }\n      else {\n        if (iVar12 != -0xacb2be) {\n          bVar4 = true;\n          goto LAB_0001cb74;\n        }\n        bVar4 = false;\n      }\n    }\n    uVar19 = uVar19 + 1;\n  } while (uVar19 < uStack_94);\nLAB_0001c66c:\n  if (iStack_8c != 0) {\n    iVar6 = param_1[6];\n    for (iVar17 = param_1[1]; iVar7 = iStack_a0, iVar17 != 0; iVar17 = *(int *)(iVar17 + 8)) {\n      if (*(int *)(iVar17 + 0x18) != iVar17 + 0xe8) {\n        *(int *)(iVar17 + 0x18) = iVar6 + (*(int *)(iVar17 + 0x18) - *(int *)(iVar17 + 0x1c));\n      }\n      *(int *)(iVar17 + 0x1c) = iVar6;\n    }\n    while (iVar17 = iVar7, -1 < *(int *)(iVar17 + 0x30)) {\n      if (*(int *)(iVar17 + 0x18) != iVar17 + 0xe8) {\n        *(int *)(iVar17 + 0x18) = iVar6 + (*(int *)(iVar17 + 0x18) - *(int *)(iVar17 + 0x1c));\n      }\n      *(int *)(iVar17 + 0x1c) = iVar6;\n      iVar7 = *(int *)(iVar17 + 8);\n      if (*(int *)(iVar17 + 8) == 0) {\n        iVar7 = *(int *)(iVar17 + 4);\n      }\n    }\n  }\n  if ((param_1[0xc] & 4U) != 0) {\n    if ((param_1[9] == uVar20) || (uVar19 == 0)) {\n      puStack_90 = puStack_90 + -1;\n    }\n    *puStack_90 = 0;\n  }\n  if ((iVar5 == 0) && (bVar2)) {\n    if ((param_2 != (undefined4 *)0x1) && (uVar19 != 0)) goto LAB_0001c6c0;\n    if (*(int *)(iVar18 + 0x30) == 0) {\n      iVar5 = FUN_0001bcbc(param_1);\n    }\n    else {\n      iVar5 = FUN_0001bd68(param_1,*(undefined4 *)(iVar18 + 4),0xffffffff,\n                           *(int *)(puVar22 + 0x16fd4) + 0x2d20);\n    }\n    if (iVar5 != 0) {\n      *(undefined2 *)(iVar18 + 0x3c) = 7;\n      param_1[0xc] = param_1[0xc] | 0x4000;\n      FUN_0001b6fc(iStack_a0);\n      return 0;\n    }\n  }\n  if (uVar19 == 0) {\n    if (((param_2 == (undefined4 *)0x3) && (*(short *)(iVar18 + 0x3c) != 4)) &&\n       (*(short *)(iVar18 + 0x3c) != 7)) {\n      *(undefined2 *)(iVar18 + 0x3c) = 6;\n    }\n    FUN_0001b6fc(iStack_a0);\n    return 0;\n  }\nLAB_0001c6c0:\n  if (bVar4) {\n    param_1[0xb] = *(int *)(puVar22 + 0x16fd4) + -0x4fa0;\n    iVar5 = FUN_0001b3ac(param_1,iStack_a0,uVar19);\n    param_1[0xb] = 0;\n    return iVar5;\n  }\n  if (param_1[0xb] == 0) {\n    return iStack_a0;\n  }\n  if (uVar19 < 2) {\n    return iStack_a0;\n  }\n  iVar5 = FUN_0001b3ac(param_1,iStack_a0,uVar19);\n  return iVar5;\n}" (primitive_type "int") (function_declarator "FUN_0001bfec(int *param_1,undefined4 *param_2)" (identifier "FUN_0001bfec") (parameter_list "(int *param_1,undefined4 *param_2)" (( "(") (parameter_declaration "int *param_1" (primitive_type "int") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "undefined4 *param_2" (type_identifier "undefined4") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) () ")"))) (compound_statement "{\n  int *piVar1;\n  bool bVar2;\n  bool bVar3;\n  bool bVar4;\n  int iVar5;\n  int iVar6;\n  int iVar7;\n  int iVar8;\n  int iVar9;\n  undefined4 *puVar10;\n  uint uVar11;\n  int iVar12;\n  undefined4 uVar13;\n  int iVar14;\n  undefined2 uVar15;\n  int *piVar16;\n  int iVar17;\n  int iVar18;\n  uint uVar19;\n  uint uVar20;\n  code *pcVar21;\n  undefined *puVar22;\n  uint uVar23;\n  int iVar24;\n  int iStack_a4;\n  int iStack_a0;\n  uint uStack_94;\n  undefined1 *puStack_90;\n  int iStack_8c;\n  int iStack_7c;\n  undefined4 local_28;\n  undefined4 local_24;\n  undefined4 local_20;\n  undefined4 local_1c;\n  int local_c;\n  \n  local_c = *(int *)PTR___stack_chk_guard_000333f4;\n  if ((param_1[0xc] & 0x102U) == 0) {\n    iVar5 = param_2[1];\n    if ((iVar5 != 0) && (-1 < *(int *)(iVar5 + 0x30))) {\n      piVar16 = (int *)param_1[0xe];\n      pcVar21 = (code *)PTR_abort_000332e8;\n      if (piVar16[4] == 0 && piVar16[5] == 0) goto LAB_0001c120;\n      if ((*piVar16 == param_2[0x16]) && (piVar16[1] == param_2[0x17])) {\n        piVar1 = param_2 + 0x12;\n        param_2 = (undefined4 *)piVar16[2];\n        if ((param_2 == (undefined4 *)0x0) &&\n           (param_2 = (undefined4 *)piVar16[3], param_2 == (undefined4 *)*piVar1)) {\n          piVar16[3] = *(int *)(iVar5 + 0x48);\n          piVar16[2] = 0;\n          piVar16 = (int *)param_1[0xe];\n          param_2 = *(undefined4 **)(iVar5 + 0x5c);\n          param_1 = *(int **)(iVar5 + 0x58);\n          piVar16[1] = (int)param_2;\n          *piVar16 = (int)param_1;\n        }\n      }\n    }\nLAB_0001c0f8:\n    if (local_c == *(int *)PTR___stack_chk_guard_000333f4) {\n      return *(int *)PTR___stack_chk_guard_000333f4;\n    }\n  }\n  else {\n    local_24 = param_2[0x12];\n    local_28 = 0;\n    local_1c = param_2[0x17];\n    local_20 = param_2[0x16];\n    param_2 = &local_28;\n    param_1 = (int *)hash_delete(param_1[0xe]);\n    if (param_1 != (int *)0x0) {\n      (*(code *)PTR_free_000333fc)();\n      goto LAB_0001c0f8;\n    }\n    pcVar21 = (code *)PTR_abort_000332e8;\n    (*(code *)PTR_abort_000332e8)();\nLAB_0001c120:\n    (*pcVar21)();\n  }\n  puVar22 = PTR___stack_chk_fail_000333dc;\n  (*(code *)PTR___stack_chk_fail_000333dc)();\n  iVar18 = *param_1;\n  iVar5 = *(int *)(iVar18 + 0xc);\n  if (iVar5 != 0) {\n    iStack_7c = (**(code **)(puVar22 + 0x172d0))();\n    if (iStack_7c < 0) {\n      (**(code **)(puVar22 + 0x17194))(*(undefined4 *)(iVar18 + 0xc));\n      *(undefined4 *)(iVar18 + 0xc) = 0;\n      if (param_2 != (undefined4 *)0x3) {\n        return 0;\n      }\n      *(undefined2 *)(iVar18 + 0x3c) = 4;\n      puVar10 = (undefined4 *)(**(code **)(puVar22 + 0x17220))();\n      *(undefined4 *)(iVar18 + 0x20) = *puVar10;\n      return 0;\n    }\n    if (param_1[0xb] == 0) {\n      uStack_94 = 100000;\n      bVar2 = true;\n    }\n    else {\n      uStack_94 = 0xffffffff;\n      bVar2 = true;\n    }\n    goto LAB_0001c1b8;\n  }\n  uVar19 = param_1[0xc];\n  if ((uVar19 & 0x204) == 0x200) {\n    iVar17 = param_1[8];\n  }\n  else {\n    iVar17 = -100;\n  }\n  uVar20 = uVar19 & 0x10;\n  if (((uVar20 != 0) && (uVar20 = 0x20000, (uVar19 & 1) != 0)) &&\n     (uVar20 = *(uint *)(iVar18 + 0x30), uVar20 != 0)) {\n    uVar20 = 0x20000;\n  }\n  iStack_7c = openat_safer(iVar17,*(undefined4 *)(iVar18 + 0x18),\n                           (uVar19 & 0x800) << 7 | uVar20 | 0x90880);\n  if (iStack_7c < 0) {\nLAB_0001c3e8:\n    *(undefined4 *)(iVar18 + 0xc) = 0;\n    if (param_2 == (undefined4 *)0x3) {\n      *(undefined2 *)(iVar18 + 0x3c) = 4;\n      puVar10 = (undefined4 *)(**(code **)(puVar22 + 0x17220))();\n      *(undefined4 *)(iVar18 + 0x20) = *puVar10;\n    }\n    return 0;\n  }\n  iVar17 = (**(code **)(puVar22 + 0x171f0))(iStack_7c);\n  if (iVar17 == 0) {\n    puVar10 = (undefined4 *)(**(code **)(puVar22 + 0x17220))();\n    uVar13 = *puVar10;\n    (**(code **)(puVar22 + 0x17198))(iStack_7c);\n    *puVar10 = uVar13;\n    goto LAB_0001c3e8;\n  }\n  *(int *)(iVar18 + 0xc) = iVar17;\n  if (*(short *)(iVar18 + 0x3c) == 0xb) {\n    uVar15 = FUN_0001b18c(param_1,iVar18,0);\n    *(undefined2 *)(iVar18 + 0x3c) = uVar15;\n  }\n  else if ((param_1[0xc] & 0x100U) != 0) {\n    FUN_0001bfec(param_1,iVar18);\n    FUN_0001b18c(param_1,iVar18,0);\n    iVar17 = FUN_0001bad0(param_1,iVar18);\n    if (iVar17 == 0) {\n      puVar10 = (undefined4 *)(**(code **)(puVar22 + 0x17220))();\n      *puVar10 = 0xc;\n      return 0;\n    }\n  }\n  if (param_1[0xb] == 0) {\n    uStack_94 = 100000;\n  }\n  else {\n    uStack_94 = 0xffffffff;\n  }\n  if (param_2 == (undefined4 *)0x2) {\n    bVar2 = false;\n  }\n  else {\n    if ((((param_1[0xc] & 0x38U) == 0x18) && (*(int *)(iVar18 + 100) == 2)) &&\n       (iVar17 = FUN_0001ba08(iVar18,iStack_7c), iVar17 != 0)) {\n      bVar2 = false;\n      if (param_2 != (undefined4 *)0x3) {\n        bVar2 = false;\n        goto LAB_0001c1b8;\n      }\n      uVar19 = param_1[0xc];\n    }\n    else {\n      bVar2 = true;\n      uVar19 = param_1[0xc];\n    }\n    if ((uVar19 & 0x200) != 0) {\n      iStack_7c = rpl_fcntl(iStack_7c,0x406,3);\n    }\n    if ((iStack_7c < 0) || (iVar17 = FUN_0001bd68(param_1,iVar18,iStack_7c,0), iVar17 != 0)) {\n      if ((bVar2) && (param_2 == (undefined4 *)0x3)) {\n        puVar10 = (undefined4 *)(**(code **)(puVar22 + 0x17220))();\n        *(undefined4 *)(iVar18 + 0x20) = *puVar10;\n      }\n      *(ushort *)(iVar18 + 0x3e) = *(ushort *)(iVar18 + 0x3e) | 1;\n      (**(code **)(puVar22 + 0x17194))(*(undefined4 *)(iVar18 + 0xc));\n      *(undefined4 *)(iVar18 + 0xc) = 0;\n      if (((param_1[0xc] & 0x200U) != 0) && (-1 < iStack_7c)) {\n        (**(code **)(puVar22 + 0x17198))(iStack_7c);\n        *(undefined4 *)(iVar18 + 0xc) = 0;\n      }\n      bVar2 = false;\n    }\n    else {\n      bVar2 = true;\n    }\n  }\nLAB_0001c1b8:\n  iVar17 = *(int *)(iVar18 + 0x28) + -1;\n  if (*(char *)(*(int *)(iVar18 + 0x1c) + iVar17) != '/') {\n    iVar17 = *(int *)(iVar18 + 0x28);\n  }\n  if ((param_1[0xc] & 4U) == 0) {\n    puStack_90 = (undefined1 *)0x0;\n  }\n  else {\n    puStack_90 = (undefined1 *)(param_1[6] + iVar17) + 1;\n    *(undefined1 *)(param_1[6] + iVar17) = 0x2f;\n  }\n  uVar20 = iVar17 + 1;\n  uVar23 = param_1[9] - uVar20;\n  iVar6 = *(int *)(iVar18 + 0x30);\n  bVar4 = false;\n  iStack_8c = 0;\n  iStack_a4 = 0;\n  uVar19 = 0;\n  iStack_a0 = 0;\n  iVar7 = *(int *)(puVar22 + 0x16fd4);\n  iVar8 = *(int *)(puVar22 + 0x16fd4);\n  iVar9 = *(int *)(puVar22 + 0x16fd4);\nLAB_0001c96c:\n  do {\n    do {\n      if (*(int *)(iVar18 + 0xc) == 0) goto LAB_0001c66c;\n      piVar16 = (int *)(**(code **)(puVar22 + 0x17220))();\n      *piVar16 = 0;\n      puVar10 = (undefined4 *)(**(code **)(puVar22 + 0x171d8))(*(undefined4 *)(iVar18 + 0xc));\n      if (puVar10 == (undefined4 *)0x0) {\n        if (*piVar16 != 0) {\n          *(int *)(iVar18 + 0x20) = *piVar16;\n          uVar15 = 7;\n          if ((iVar5 == 0) && (uVar19 == 0)) {\n            uVar15 = 4;\n          }\n          *(undefined2 *)(iVar18 + 0x3c) = uVar15;\n        }\n        if (*(int *)(iVar18 + 0xc) != 0) {\n          (**(code **)(puVar22 + 0x17194))();\n          *(undefined4 *)(iVar18 + 0xc) = 0;\n        }\n        goto LAB_0001c66c;\n      }\n    } while ((((param_1[0xc] & 0x20U) == 0) && (*(char *)((int)puVar10 + 0x13) == '.')) &&\n            ((*(char *)(puVar10 + 5) == '\0' || ((puVar10[5] & 0xffff0000) == 0x2e000000))));\n    uVar11 = (**(code **)(puVar22 + 0x17240))((int)puVar10 + 0x13);\n    iVar12 = (*(code *)(iVar7 + -0x4b14))(param_1,(int)puVar10 + 0x13,uVar11);\n    if (iVar12 == 0) {\nLAB_0001c794:\n      iVar5 = *piVar16;\n      (**(code **)(puVar22 + 0x172c8))(iVar12);\n      FUN_0001b6fc(iStack_a0);\n      (**(code **)(puVar22 + 0x17194))(*(undefined4 *)(iVar18 + 0xc));\n      *(undefined4 *)(iVar18 + 0xc) = 0;\n      *(undefined2 *)(iVar18 + 0x3c) = 7;\n      param_1[0xc] = param_1[0xc] | 0x4000;\n      *piVar16 = iVar5;\n      return 0;\n    }\n    if (uVar23 <= uVar11) {\n      iVar24 = param_1[6];\n      iVar14 = FUN_0001b0cc(param_1,iVar17 + 2 + uVar11);\n      if (iVar14 == 0) goto LAB_0001c794;\n      if ((param_1[6] != iVar24) && (iStack_8c = iVar14, (param_1[0xc] & 4U) != 0)) {\n        puStack_90 = (undefined1 *)(param_1[6] + uVar20);\n      }\n      uVar23 = param_1[9] - uVar20;\n    }\n    if (uVar20 + uVar11 < uVar20) {\n      (**(code **)(puVar22 + 0x172c8))(iVar12);\n      FUN_0001b6fc(iStack_a0);\n      (**(code **)(puVar22 + 0x17194))(*(undefined4 *)(iVar18 + 0xc));\n      *(undefined4 *)(iVar18 + 0xc) = 0;\n      *(undefined2 *)(iVar18 + 0x3c) = 7;\n      param_1[0xc] = param_1[0xc] | 0x4000;\n      *piVar16 = 0x4e;\n      return 0;\n    }\n    *(int *)(iVar12 + 0x30) = iVar6 + 1;\n    *(int *)(iVar12 + 4) = *param_1;\n    *(uint *)(iVar12 + 0x28) = uVar20 + uVar11;\n    uVar13 = *puVar10;\n    *(undefined4 *)(iVar12 + 0x5c) = puVar10[1];\n    *(undefined4 *)(iVar12 + 0x58) = uVar13;\n    if ((param_1[0xc] & 4U) == 0) {\n      *(int *)(iVar12 + 0x18) = iVar12 + 0xe8;\n      iVar14 = param_1[0xb];\n    }\n    else {\n      *(undefined4 *)(iVar12 + 0x18) = *(undefined4 *)(iVar12 + 0x1c);\n      (**(code **)(puVar22 + 0x172cc))(puStack_90,iVar12 + 0xe8,*(int *)(iVar12 + 0x34) + 1);\n      iVar14 = param_1[0xb];\n    }\n    if ((iVar14 == 0) || ((param_1[0xc] & 0x400U) != 0)) {\n      if (((param_1[0xc] & 0x18U) == 0x18) && ((*(byte *)((int)puVar10 + 0x12) & 0xfb) != 0)) {\n        *(undefined2 *)(iVar12 + 0x3c) = 0xb;\n        bVar3 = true;\n        if (*(byte *)((int)puVar10 + 0x12) < 0xd) {\n                    \n                    \n          iVar5 = (*(code *)(puVar22 +\n                            *(int *)(iVar9 + 0x2d30 + (uint)*(byte *)((int)puVar10 + 0x12) * 4) +\n                            0x1ef9c))();\n          return iVar5;\n        }\n      }\n      else {\n        *(undefined2 *)(iVar12 + 0x3c) = 0xb;\n        bVar3 = false;\n        if (*(byte *)((int)puVar10 + 0x12) < 0xd) {\n                    \n                    \n          iVar5 = (*(code *)(puVar22 +\n                            *(int *)(*(int *)(puVar22 + 0x16fd4) + 0x2d64 +\n                                    (uint)*(byte *)((int)puVar10 + 0x12) * 4) + 0x1ef9c))();\n          return iVar5;\n        }\n      }\n      *(undefined4 *)(iVar12 + 0x60) = 0;\n      if (bVar3) {\n        uVar13 = 1;\n      }\n      else {\n        uVar13 = 2;\n      }\n      *(undefined4 *)(iVar12 + 0x84) = uVar13;\n      *(undefined4 *)(iVar12 + 0x80) = 0;\n    }\n    else {\n      uVar15 = FUN_0001b18c(param_1,iVar12,0);\n      *(undefined2 *)(iVar12 + 0x3c) = uVar15;\n    }\n    *(undefined4 *)(iVar12 + 8) = 0;\n    iVar14 = iVar12;\n    if (iStack_a0 != 0) {\n      *(int *)(iStack_a4 + 8) = iVar12;\n      iVar14 = iStack_a0;\n    }\n    iStack_a0 = iVar14;\n    iStack_a4 = iVar12;\n    if (uVar19 == 10000) {\n      if (param_1[0xb] != 0) {\nLAB_0001cb74:\n        uVar19 = 0x2711;\n        goto LAB_0001c96c;\n      }\n      iVar12 = (*(code *)(iVar8 + -0x47a8))(iVar18,iStack_7c);\n      if (iVar12 == 0x6969) {\n        bVar4 = false;\n      }\n      else if (iVar12 == 0x1021994) {\n        bVar4 = false;\n      }\n      else {\n        if (iVar12 != -0xacb2be) {\n          bVar4 = true;\n          goto LAB_0001cb74;\n        }\n        bVar4 = false;\n      }\n    }\n    uVar19 = uVar19 + 1;\n  } while (uVar19 < uStack_94);\nLAB_0001c66c:\n  if (iStack_8c != 0) {\n    iVar6 = param_1[6];\n    for (iVar17 = param_1[1]; iVar7 = iStack_a0, iVar17 != 0; iVar17 = *(int *)(iVar17 + 8)) {\n      if (*(int *)(iVar17 + 0x18) != iVar17 + 0xe8) {\n        *(int *)(iVar17 + 0x18) = iVar6 + (*(int *)(iVar17 + 0x18) - *(int *)(iVar17 + 0x1c));\n      }\n      *(int *)(iVar17 + 0x1c) = iVar6;\n    }\n    while (iVar17 = iVar7, -1 < *(int *)(iVar17 + 0x30)) {\n      if (*(int *)(iVar17 + 0x18) != iVar17 + 0xe8) {\n        *(int *)(iVar17 + 0x18) = iVar6 + (*(int *)(iVar17 + 0x18) - *(int *)(iVar17 + 0x1c));\n      }\n      *(int *)(iVar17 + 0x1c) = iVar6;\n      iVar7 = *(int *)(iVar17 + 8);\n      if (*(int *)(iVar17 + 8) == 0) {\n        iVar7 = *(int *)(iVar17 + 4);\n      }\n    }\n  }\n  if ((param_1[0xc] & 4U) != 0) {\n    if ((param_1[9] == uVar20) || (uVar19 == 0)) {\n      puStack_90 = puStack_90 + -1;\n    }\n    *puStack_90 = 0;\n  }\n  if ((iVar5 == 0) && (bVar2)) {\n    if ((param_2 != (undefined4 *)0x1) && (uVar19 != 0)) goto LAB_0001c6c0;\n    if (*(int *)(iVar18 + 0x30) == 0) {\n      iVar5 = FUN_0001bcbc(param_1);\n    }\n    else {\n      iVar5 = FUN_0001bd68(param_1,*(undefined4 *)(iVar18 + 4),0xffffffff,\n                           *(int *)(puVar22 + 0x16fd4) + 0x2d20);\n    }\n    if (iVar5 != 0) {\n      *(undefined2 *)(iVar18 + 0x3c) = 7;\n      param_1[0xc] = param_1[0xc] | 0x4000;\n      FUN_0001b6fc(iStack_a0);\n      return 0;\n    }\n  }\n  if (uVar19 == 0) {\n    if (((param_2 == (undefined4 *)0x3) && (*(short *)(iVar18 + 0x3c) != 4)) &&\n       (*(short *)(iVar18 + 0x3c) != 7)) {\n      *(undefined2 *)(iVar18 + 0x3c) = 6;\n    }\n    FUN_0001b6fc(iStack_a0);\n    return 0;\n  }\nLAB_0001c6c0:\n  if (bVar4) {\n    param_1[0xb] = *(int *)(puVar22 + 0x16fd4) + -0x4fa0;\n    iVar5 = FUN_0001b3ac(param_1,iStack_a0,uVar19);\n    param_1[0xb] = 0;\n    return iVar5;\n  }\n  if (param_1[0xb] == 0) {\n    return iStack_a0;\n  }\n  if (uVar19 < 2) {\n    return iStack_a0;\n  }\n  iVar5 = FUN_0001b3ac(param_1,iStack_a0,uVar19);\n  return iVar5;\n}" ({ "{") (declaration "int *piVar1;" (primitive_type "int") (pointer_declarator "*piVar1" (* "*") (identifier "piVar1")) (; ";")) (declaration "bool bVar2;" (primitive_type "bool") (identifier "bVar2") (; ";")) (declaration "bool bVar3;" (primitive_type "bool") (identifier "bVar3") (; ";")) (declaration "bool bVar4;" (primitive_type "bool") (identifier "bVar4") (; ";")) (declaration "int iVar5;" (primitive_type "int") (identifier "iVar5") (; ";")) (declaration "int iVar6;" (primitive_type "int") (identifier "iVar6") (; ";")) (declaration "int iVar7;" (primitive_type "int") (identifier "iVar7") (; ";")) (declaration "int iVar8;" (primitive_type "int") (identifier "iVar8") (; ";")) (declaration "int iVar9;" (primitive_type "int") (identifier "iVar9") (; ";")) (declaration "undefined4 *puVar10;" (type_identifier "undefined4") (pointer_declarator "*puVar10" (* "*") (identifier "puVar10")) (; ";")) (declaration "uint uVar11;" (type_identifier "uint") (identifier "uVar11") (; ";")) (declaration "int iVar12;" (primitive_type "int") (identifier "iVar12") (; ";")) (declaration "undefined4 uVar13;" (type_identifier "undefined4") (identifier "uVar13") (; ";")) (declaration "int iVar14;" (primitive_type "int") (identifier "iVar14") (; ";")) (declaration "undefined2 uVar15;" (type_identifier "undefined2") (identifier "uVar15") (; ";")) (declaration "int *piVar16;" (primitive_type "int") (pointer_declarator "*piVar16" (* "*") (identifier "piVar16")) (; ";")) (declaration "int iVar17;" (primitive_type "int") (identifier "iVar17") (; ";")) (declaration "int iVar18;" (primitive_type "int") (identifier "iVar18") (; ";")) (declaration "uint uVar19;" (type_identifier "uint") (identifier "uVar19") (; ";")) (declaration "uint uVar20;" (type_identifier "uint") (identifier "uVar20") (; ";")) (declaration "code *pcVar21;" (type_identifier "code") (pointer_declarator "*pcVar21" (* "*") (identifier "pcVar21")) (; ";")) (declaration "undefined *puVar22;" (type_identifier "undefined") (pointer_declarator "*puVar22" (* "*") (identifier "puVar22")) (; ";")) (declaration "uint uVar23;" (type_identifier "uint") (identifier "uVar23") (; ";")) (declaration "int iVar24;" (primitive_type "int") (identifier "iVar24") (; ";")) (declaration "int iStack_a4;" (primitive_type "int") (identifier "iStack_a4") (; ";")) (declaration "int iStack_a0;" (primitive_type "int") (identifier "iStack_a0") (; ";")) (declaration "uint uStack_94;" (type_identifier "uint") (identifier "uStack_94") (; ";")) (declaration "undefined1 *puStack_90;" (type_identifier "undefined1") (pointer_declarator "*puStack_90" (* "*") (identifier "puStack_90")) (; ";")) (declaration "int iStack_8c;" (primitive_type "int") (identifier "iStack_8c") (; ";")) (declaration "int iStack_7c;" (primitive_type "int") (identifier "iStack_7c") (; ";")) (declaration "undefined4 local_28;" (type_identifier "undefined4") (identifier "local_28") (; ";")) (declaration "undefined4 local_24;" (type_identifier "undefined4") (identifier "local_24") (; ";")) (declaration "undefined4 local_20;" (type_identifier "undefined4") (identifier "local_20") (; ";")) (declaration "undefined4 local_1c;" (type_identifier "undefined4") (identifier "local_1c") (; ";")) (declaration "int local_c;" (primitive_type "int") (identifier "local_c") (; ";")) (expression_statement "local_c = *(int *)PTR___stack_chk_guard_000333f4;" (assignment_expression "local_c = *(int *)PTR___stack_chk_guard_000333f4" (identifier "local_c") (= "=") (pointer_expression "*(int *)PTR___stack_chk_guard_000333f4" (* "*") (cast_expression "(int *)PTR___stack_chk_guard_000333f4" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___stack_chk_guard_000333f4")))) (; ";")) (if_statement "if ((param_1[0xc] & 0x102U) == 0) {\n    iVar5 = param_2[1];\n    if ((iVar5 != 0) && (-1 < *(int *)(iVar5 + 0x30))) {\n      piVar16 = (int *)param_1[0xe];\n      pcVar21 = (code *)PTR_abort_000332e8;\n      if (piVar16[4] == 0 && piVar16[5] == 0) goto LAB_0001c120;\n      if ((*piVar16 == param_2[0x16]) && (piVar16[1] == param_2[0x17])) {\n        piVar1 = param_2 + 0x12;\n        param_2 = (undefined4 *)piVar16[2];\n        if ((param_2 == (undefined4 *)0x0) &&\n           (param_2 = (undefined4 *)piVar16[3], param_2 == (undefined4 *)*piVar1)) {\n          piVar16[3] = *(int *)(iVar5 + 0x48);\n          piVar16[2] = 0;\n          piVar16 = (int *)param_1[0xe];\n          param_2 = *(undefined4 **)(iVar5 + 0x5c);\n          param_1 = *(int **)(iVar5 + 0x58);\n          piVar16[1] = (int)param_2;\n          *piVar16 = (int)param_1;\n        }\n      }\n    }\nLAB_0001c0f8:\n    if (local_c == *(int *)PTR___stack_chk_guard_000333f4) {\n      return *(int *)PTR___stack_chk_guard_000333f4;\n    }\n  }\n  else {\n    local_24 = param_2[0x12];\n    local_28 = 0;\n    local_1c = param_2[0x17];\n    local_20 = param_2[0x16];\n    param_2 = &local_28;\n    param_1 = (int *)hash_delete(param_1[0xe]);\n    if (param_1 != (int *)0x0) {\n      (*(code *)PTR_free_000333fc)();\n      goto LAB_0001c0f8;\n    }\n    pcVar21 = (code *)PTR_abort_000332e8;\n    (*(code *)PTR_abort_000332e8)();\nLAB_0001c120:\n    (*pcVar21)();\n  }" (if "if") (parenthesized_expression "((param_1[0xc] & 0x102U) == 0)" (( "(") (binary_expression "(param_1[0xc] & 0x102U) == 0" (parenthesized_expression "(param_1[0xc] & 0x102U)" (( "(") (binary_expression "param_1[0xc] & 0x102U" (subscript_expression "param_1[0xc]" (identifier "param_1") ([ "[") (number_literal "0xc") (] "]")) (& "&") (number_literal "0x102U")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    iVar5 = param_2[1];\n    if ((iVar5 != 0) && (-1 < *(int *)(iVar5 + 0x30))) {\n      piVar16 = (int *)param_1[0xe];\n      pcVar21 = (code *)PTR_abort_000332e8;\n      if (piVar16[4] == 0 && piVar16[5] == 0) goto LAB_0001c120;\n      if ((*piVar16 == param_2[0x16]) && (piVar16[1] == param_2[0x17])) {\n        piVar1 = param_2 + 0x12;\n        param_2 = (undefined4 *)piVar16[2];\n        if ((param_2 == (undefined4 *)0x0) &&\n           (param_2 = (undefined4 *)piVar16[3], param_2 == (undefined4 *)*piVar1)) {\n          piVar16[3] = *(int *)(iVar5 + 0x48);\n          piVar16[2] = 0;\n          piVar16 = (int *)param_1[0xe];\n          param_2 = *(undefined4 **)(iVar5 + 0x5c);\n          param_1 = *(int **)(iVar5 + 0x58);\n          piVar16[1] = (int)param_2;\n          *piVar16 = (int)param_1;\n        }\n      }\n    }\nLAB_0001c0f8:\n    if (local_c == *(int *)PTR___stack_chk_guard_000333f4) {\n      return *(int *)PTR___stack_chk_guard_000333f4;\n    }\n  }" ({ "{") (expression_statement "iVar5 = param_2[1];" (assignment_expression "iVar5 = param_2[1]" (identifier "iVar5") (= "=") (subscript_expression "param_2[1]" (identifier "param_2") ([ "[") (number_literal "1") (] "]"))) (; ";")) (if_statement "if ((iVar5 != 0) && (-1 < *(int *)(iVar5 + 0x30))) {\n      piVar16 = (int *)param_1[0xe];\n      pcVar21 = (code *)PTR_abort_000332e8;\n      if (piVar16[4] == 0 && piVar16[5] == 0) goto LAB_0001c120;\n      if ((*piVar16 == param_2[0x16]) && (piVar16[1] == param_2[0x17])) {\n        piVar1 = param_2 + 0x12;\n        param_2 = (undefined4 *)piVar16[2];\n        if ((param_2 == (undefined4 *)0x0) &&\n           (param_2 = (undefined4 *)piVar16[3], param_2 == (undefined4 *)*piVar1)) {\n          piVar16[3] = *(int *)(iVar5 + 0x48);\n          piVar16[2] = 0;\n          piVar16 = (int *)param_1[0xe];\n          param_2 = *(undefined4 **)(iVar5 + 0x5c);\n          param_1 = *(int **)(iVar5 + 0x58);\n          piVar16[1] = (int)param_2;\n          *piVar16 = (int)param_1;\n        }\n      }\n    }" (if "if") (parenthesized_expression "((iVar5 != 0) && (-1 < *(int *)(iVar5 + 0x30)))" (( "(") (binary_expression "(iVar5 != 0) && (-1 < *(int *)(iVar5 + 0x30))" (parenthesized_expression "(iVar5 != 0)" (( "(") (binary_expression "iVar5 != 0" (identifier "iVar5") (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(-1 < *(int *)(iVar5 + 0x30))" (( "(") (binary_expression "-1 < *(int *)(iVar5 + 0x30)" (number_literal "-1") (< "<") (pointer_expression "*(int *)(iVar5 + 0x30)" (* "*") (cast_expression "(int *)(iVar5 + 0x30)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar5 + 0x30)" (( "(") (binary_expression "iVar5 + 0x30" (identifier "iVar5") (+ "+") (number_literal "0x30")) () ")"))))) () ")"))) () ")")) (compound_statement "{\n      piVar16 = (int *)param_1[0xe];\n      pcVar21 = (code *)PTR_abort_000332e8;\n      if (piVar16[4] == 0 && piVar16[5] == 0) goto LAB_0001c120;\n      if ((*piVar16 == param_2[0x16]) && (piVar16[1] == param_2[0x17])) {\n        piVar1 = param_2 + 0x12;\n        param_2 = (undefined4 *)piVar16[2];\n        if ((param_2 == (undefined4 *)0x0) &&\n           (param_2 = (undefined4 *)piVar16[3], param_2 == (undefined4 *)*piVar1)) {\n          piVar16[3] = *(int *)(iVar5 + 0x48);\n          piVar16[2] = 0;\n          piVar16 = (int *)param_1[0xe];\n          param_2 = *(undefined4 **)(iVar5 + 0x5c);\n          param_1 = *(int **)(iVar5 + 0x58);\n          piVar16[1] = (int)param_2;\n          *piVar16 = (int)param_1;\n        }\n      }\n    }" ({ "{") (expression_statement "piVar16 = (int *)param_1[0xe];" (assignment_expression "piVar16 = (int *)param_1[0xe]" (identifier "piVar16") (= "=") (cast_expression "(int *)param_1[0xe]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[0xe]" (identifier "param_1") ([ "[") (number_literal "0xe") (] "]")))) (; ";")) (expression_statement "pcVar21 = (code *)PTR_abort_000332e8;" (assignment_expression "pcVar21 = (code *)PTR_abort_000332e8" (identifier "pcVar21") (= "=") (cast_expression "(code *)PTR_abort_000332e8" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_abort_000332e8"))) (; ";")) (if_statement "if (piVar16[4] == 0 && piVar16[5] == 0) goto LAB_0001c120;" (if "if") (parenthesized_expression "(piVar16[4] == 0 && piVar16[5] == 0)" (( "(") (binary_expression "piVar16[4] == 0 && piVar16[5] == 0" (binary_expression "piVar16[4] == 0" (subscript_expression "piVar16[4]" (identifier "piVar16") ([ "[") (number_literal "4") (] "]")) (== "==") (number_literal "0")) (&& "&&") (binary_expression "piVar16[5] == 0" (subscript_expression "piVar16[5]" (identifier "piVar16") ([ "[") (number_literal "5") (] "]")) (== "==") (number_literal "0"))) () ")")) (goto_statement "goto LAB_0001c120;" (goto "goto") (statement_identifier "LAB_0001c120") (; ";"))) (if_statement "if ((*piVar16 == param_2[0x16]) && (piVar16[1] == param_2[0x17])) {\n        piVar1 = param_2 + 0x12;\n        param_2 = (undefined4 *)piVar16[2];\n        if ((param_2 == (undefined4 *)0x0) &&\n           (param_2 = (undefined4 *)piVar16[3], param_2 == (undefined4 *)*piVar1)) {\n          piVar16[3] = *(int *)(iVar5 + 0x48);\n          piVar16[2] = 0;\n          piVar16 = (int *)param_1[0xe];\n          param_2 = *(undefined4 **)(iVar5 + 0x5c);\n          param_1 = *(int **)(iVar5 + 0x58);\n          piVar16[1] = (int)param_2;\n          *piVar16 = (int)param_1;\n        }\n      }" (if "if") (parenthesized_expression "((*piVar16 == param_2[0x16]) && (piVar16[1] == param_2[0x17]))" (( "(") (binary_expression "(*piVar16 == param_2[0x16]) && (piVar16[1] == param_2[0x17])" (parenthesized_expression "(*piVar16 == param_2[0x16])" (( "(") (binary_expression "*piVar16 == param_2[0x16]" (pointer_expression "*piVar16" (* "*") (identifier "piVar16")) (== "==") (subscript_expression "param_2[0x16]" (identifier "param_2") ([ "[") (number_literal "0x16") (] "]"))) () ")")) (&& "&&") (parenthesized_expression "(piVar16[1] == param_2[0x17])" (( "(") (binary_expression "piVar16[1] == param_2[0x17]" (subscript_expression "piVar16[1]" (identifier "piVar16") ([ "[") (number_literal "1") (] "]")) (== "==") (subscript_expression "param_2[0x17]" (identifier "param_2") ([ "[") (number_literal "0x17") (] "]"))) () ")"))) () ")")) (compound_statement "{\n        piVar1 = param_2 + 0x12;\n        param_2 = (undefined4 *)piVar16[2];\n        if ((param_2 == (undefined4 *)0x0) &&\n           (param_2 = (undefined4 *)piVar16[3], param_2 == (undefined4 *)*piVar1)) {\n          piVar16[3] = *(int *)(iVar5 + 0x48);\n          piVar16[2] = 0;\n          piVar16 = (int *)param_1[0xe];\n          param_2 = *(undefined4 **)(iVar5 + 0x5c);\n          param_1 = *(int **)(iVar5 + 0x58);\n          piVar16[1] = (int)param_2;\n          *piVar16 = (int)param_1;\n        }\n      }" ({ "{") (expression_statement "piVar1 = param_2 + 0x12;" (assignment_expression "piVar1 = param_2 + 0x12" (identifier "piVar1") (= "=") (binary_expression "param_2 + 0x12" (identifier "param_2") (+ "+") (number_literal "0x12"))) (; ";")) (expression_statement "param_2 = (undefined4 *)piVar16[2];" (assignment_expression "param_2 = (undefined4 *)piVar16[2]" (identifier "param_2") (= "=") (cast_expression "(undefined4 *)piVar16[2]" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar16[2]" (identifier "piVar16") ([ "[") (number_literal "2") (] "]")))) (; ";")) (if_statement "if ((param_2 == (undefined4 *)0x0) &&\n           (param_2 = (undefined4 *)piVar16[3], param_2 == (undefined4 *)*piVar1)) {\n          piVar16[3] = *(int *)(iVar5 + 0x48);\n          piVar16[2] = 0;\n          piVar16 = (int *)param_1[0xe];\n          param_2 = *(undefined4 **)(iVar5 + 0x5c);\n          param_1 = *(int **)(iVar5 + 0x58);\n          piVar16[1] = (int)param_2;\n          *piVar16 = (int)param_1;\n        }" (if "if") (parenthesized_expression "((param_2 == (undefined4 *)0x0) &&\n           (param_2 = (undefined4 *)piVar16[3], param_2 == (undefined4 *)*piVar1))" (( "(") (binary_expression "(param_2 == (undefined4 *)0x0) &&\n           (param_2 = (undefined4 *)piVar16[3], param_2 == (undefined4 *)*piVar1)" (parenthesized_expression "(param_2 == (undefined4 *)0x0)" (( "(") (binary_expression "param_2 == (undefined4 *)0x0" (identifier "param_2") (== "==") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (&& "&&") (parenthesized_expression "(param_2 = (undefined4 *)piVar16[3], param_2 == (undefined4 *)*piVar1)" (( "(") (comma_expression "param_2 = (undefined4 *)piVar16[3], param_2 == (undefined4 *)*piVar1" (assignment_expression "param_2 = (undefined4 *)piVar16[3]" (identifier "param_2") (= "=") (cast_expression "(undefined4 *)piVar16[3]" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar16[3]" (identifier "piVar16") ([ "[") (number_literal "3") (] "]")))) (, ",") (binary_expression "param_2 == (undefined4 *)*piVar1" (identifier "param_2") (== "==") (cast_expression "(undefined4 *)*piVar1" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*piVar1" (* "*") (identifier "piVar1"))))) () ")"))) () ")")) (compound_statement "{\n          piVar16[3] = *(int *)(iVar5 + 0x48);\n          piVar16[2] = 0;\n          piVar16 = (int *)param_1[0xe];\n          param_2 = *(undefined4 **)(iVar5 + 0x5c);\n          param_1 = *(int **)(iVar5 + 0x58);\n          piVar16[1] = (int)param_2;\n          *piVar16 = (int)param_1;\n        }" ({ "{") (expression_statement "piVar16[3] = *(int *)(iVar5 + 0x48);" (assignment_expression "piVar16[3] = *(int *)(iVar5 + 0x48)" (subscript_expression "piVar16[3]" (identifier "piVar16") ([ "[") (number_literal "3") (] "]")) (= "=") (pointer_expression "*(int *)(iVar5 + 0x48)" (* "*") (cast_expression "(int *)(iVar5 + 0x48)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar5 + 0x48)" (( "(") (binary_expression "iVar5 + 0x48" (identifier "iVar5") (+ "+") (number_literal "0x48")) () ")"))))) (; ";")) (expression_statement "piVar16[2] = 0;" (assignment_expression "piVar16[2] = 0" (subscript_expression "piVar16[2]" (identifier "piVar16") ([ "[") (number_literal "2") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "piVar16 = (int *)param_1[0xe];" (assignment_expression "piVar16 = (int *)param_1[0xe]" (identifier "piVar16") (= "=") (cast_expression "(int *)param_1[0xe]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[0xe]" (identifier "param_1") ([ "[") (number_literal "0xe") (] "]")))) (; ";")) (expression_statement "param_2 = *(undefined4 **)(iVar5 + 0x5c);" (assignment_expression "param_2 = *(undefined4 **)(iVar5 + 0x5c)" (identifier "param_2") (= "=") (pointer_expression "*(undefined4 **)(iVar5 + 0x5c)" (* "*") (cast_expression "(undefined4 **)(iVar5 + 0x5c)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar5 + 0x5c)" (( "(") (binary_expression "iVar5 + 0x5c" (identifier "iVar5") (+ "+") (number_literal "0x5c")) () ")"))))) (; ";")) (expression_statement "param_1 = *(int **)(iVar5 + 0x58);" (assignment_expression "param_1 = *(int **)(iVar5 + 0x58)" (identifier "param_1") (= "=") (pointer_expression "*(int **)(iVar5 + 0x58)" (* "*") (cast_expression "(int **)(iVar5 + 0x58)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar5 + 0x58)" (( "(") (binary_expression "iVar5 + 0x58" (identifier "iVar5") (+ "+") (number_literal "0x58")) () ")"))))) (; ";")) (expression_statement "piVar16[1] = (int)param_2;" (assignment_expression "piVar16[1] = (int)param_2" (subscript_expression "piVar16[1]" (identifier "piVar16") ([ "[") (number_literal "1") (] "]")) (= "=") (cast_expression "(int)param_2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_2"))) (; ";")) (expression_statement "*piVar16 = (int)param_1;" (assignment_expression "*piVar16 = (int)param_1" (pointer_expression "*piVar16" (* "*") (identifier "piVar16")) (= "=") (cast_expression "(int)param_1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_1"))) (; ";")) (} "}"))) (} "}"))) (} "}"))) (labeled_statement "LAB_0001c0f8:\n    if (local_c == *(int *)PTR___stack_chk_guard_000333f4) {\n      return *(int *)PTR___stack_chk_guard_000333f4;\n    }" (statement_identifier "LAB_0001c0f8") (: ":") (if_statement "if (local_c == *(int *)PTR___stack_chk_guard_000333f4) {\n      return *(int *)PTR___stack_chk_guard_000333f4;\n    }" (if "if") (parenthesized_expression "(local_c == *(int *)PTR___stack_chk_guard_000333f4)" (( "(") (binary_expression "local_c == *(int *)PTR___stack_chk_guard_000333f4" (identifier "local_c") (== "==") (pointer_expression "*(int *)PTR___stack_chk_guard_000333f4" (* "*") (cast_expression "(int *)PTR___stack_chk_guard_000333f4" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___stack_chk_guard_000333f4")))) () ")")) (compound_statement "{\n      return *(int *)PTR___stack_chk_guard_000333f4;\n    }" ({ "{") (return_statement "return *(int *)PTR___stack_chk_guard_000333f4;" (return "return") (pointer_expression "*(int *)PTR___stack_chk_guard_000333f4" (* "*") (cast_expression "(int *)PTR___stack_chk_guard_000333f4" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___stack_chk_guard_000333f4"))) (; ";")) (} "}")))) (} "}")) (else_clause "else {\n    local_24 = param_2[0x12];\n    local_28 = 0;\n    local_1c = param_2[0x17];\n    local_20 = param_2[0x16];\n    param_2 = &local_28;\n    param_1 = (int *)hash_delete(param_1[0xe]);\n    if (param_1 != (int *)0x0) {\n      (*(code *)PTR_free_000333fc)();\n      goto LAB_0001c0f8;\n    }\n    pcVar21 = (code *)PTR_abort_000332e8;\n    (*(code *)PTR_abort_000332e8)();\nLAB_0001c120:\n    (*pcVar21)();\n  }" (else "else") (compound_statement "{\n    local_24 = param_2[0x12];\n    local_28 = 0;\n    local_1c = param_2[0x17];\n    local_20 = param_2[0x16];\n    param_2 = &local_28;\n    param_1 = (int *)hash_delete(param_1[0xe]);\n    if (param_1 != (int *)0x0) {\n      (*(code *)PTR_free_000333fc)();\n      goto LAB_0001c0f8;\n    }\n    pcVar21 = (code *)PTR_abort_000332e8;\n    (*(code *)PTR_abort_000332e8)();\nLAB_0001c120:\n    (*pcVar21)();\n  }" ({ "{") (expression_statement "local_24 = param_2[0x12];" (assignment_expression "local_24 = param_2[0x12]" (identifier "local_24") (= "=") (subscript_expression "param_2[0x12]" (identifier "param_2") ([ "[") (number_literal "0x12") (] "]"))) (; ";")) (expression_statement "local_28 = 0;" (assignment_expression "local_28 = 0" (identifier "local_28") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_1c = param_2[0x17];" (assignment_expression "local_1c = param_2[0x17]" (identifier "local_1c") (= "=") (subscript_expression "param_2[0x17]" (identifier "param_2") ([ "[") (number_literal "0x17") (] "]"))) (; ";")) (expression_statement "local_20 = param_2[0x16];" (assignment_expression "local_20 = param_2[0x16]" (identifier "local_20") (= "=") (subscript_expression "param_2[0x16]" (identifier "param_2") ([ "[") (number_literal "0x16") (] "]"))) (; ";")) (expression_statement "param_2 = &local_28;" (assignment_expression "param_2 = &local_28" (identifier "param_2") (= "=") (pointer_expression "&local_28" (& "&") (identifier "local_28"))) (; ";")) (expression_statement "param_1 = (int *)hash_delete(param_1[0xe]);" (assignment_expression "param_1 = (int *)hash_delete(param_1[0xe])" (identifier "param_1") (= "=") (cast_expression "(int *)hash_delete(param_1[0xe])" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "hash_delete(param_1[0xe])" (identifier "hash_delete") (argument_list "(param_1[0xe])" (( "(") (subscript_expression "param_1[0xe]" (identifier "param_1") ([ "[") (number_literal "0xe") (] "]")) () ")"))))) (; ";")) (if_statement "if (param_1 != (int *)0x0) {\n      (*(code *)PTR_free_000333fc)();\n      goto LAB_0001c0f8;\n    }" (if "if") (parenthesized_expression "(param_1 != (int *)0x0)" (( "(") (binary_expression "param_1 != (int *)0x0" (identifier "param_1") (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n      (*(code *)PTR_free_000333fc)();\n      goto LAB_0001c0f8;\n    }" ({ "{") (expression_statement "(*(code *)PTR_free_000333fc)();" (call_expression "(*(code *)PTR_free_000333fc)()" (parenthesized_expression "(*(code *)PTR_free_000333fc)" (( "(") (pointer_expression "*(code *)PTR_free_000333fc" (* "*") (cast_expression "(code *)PTR_free_000333fc" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_free_000333fc"))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (goto_statement "goto LAB_0001c0f8;" (goto "goto") (statement_identifier "LAB_0001c0f8") (; ";")) (} "}"))) (expression_statement "pcVar21 = (code *)PTR_abort_000332e8;" (assignment_expression "pcVar21 = (code *)PTR_abort_000332e8" (identifier "pcVar21") (= "=") (cast_expression "(code *)PTR_abort_000332e8" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_abort_000332e8"))) (; ";")) (expression_statement "(*(code *)PTR_abort_000332e8)();" (call_expression "(*(code *)PTR_abort_000332e8)()" (parenthesized_expression "(*(code *)PTR_abort_000332e8)" (( "(") (pointer_expression "*(code *)PTR_abort_000332e8" (* "*") (cast_expression "(code *)PTR_abort_000332e8" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_abort_000332e8"))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (labeled_statement "LAB_0001c120:\n    (*pcVar21)();" (statement_identifier "LAB_0001c120") (: ":") (expression_statement "(*pcVar21)();" (call_expression "(*pcVar21)()" (parenthesized_expression "(*pcVar21)" (( "(") (pointer_expression "*pcVar21" (* "*") (identifier "pcVar21")) () ")")) (argument_list "()" (( "(") () ")"))) (; ";"))) (} "}")))) (expression_statement "puVar22 = PTR___stack_chk_fail_000333dc;" (assignment_expression "puVar22 = PTR___stack_chk_fail_000333dc" (identifier "puVar22") (= "=") (identifier "PTR___stack_chk_fail_000333dc")) (; ";")) (expression_statement "(*(code *)PTR___stack_chk_fail_000333dc)();" (call_expression "(*(code *)PTR___stack_chk_fail_000333dc)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_000333dc)" (( "(") (pointer_expression "*(code *)PTR___stack_chk_fail_000333dc" (* "*") (cast_expression "(code *)PTR___stack_chk_fail_000333dc" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___stack_chk_fail_000333dc"))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "iVar18 = *param_1;" (assignment_expression "iVar18 = *param_1" (identifier "iVar18") (= "=") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (; ";")) (expression_statement "iVar5 = *(int *)(iVar18 + 0xc);" (assignment_expression "iVar5 = *(int *)(iVar18 + 0xc)" (identifier "iVar5") (= "=") (pointer_expression "*(int *)(iVar18 + 0xc)" (* "*") (cast_expression "(int *)(iVar18 + 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar18 + 0xc)" (( "(") (binary_expression "iVar18 + 0xc" (identifier "iVar18") (+ "+") (number_literal "0xc")) () ")"))))) (; ";")) (if_statement "if (iVar5 != 0) {\n    iStack_7c = (**(code **)(puVar22 + 0x172d0))();\n    if (iStack_7c < 0) {\n      (**(code **)(puVar22 + 0x17194))(*(undefined4 *)(iVar18 + 0xc));\n      *(undefined4 *)(iVar18 + 0xc) = 0;\n      if (param_2 != (undefined4 *)0x3) {\n        return 0;\n      }\n      *(undefined2 *)(iVar18 + 0x3c) = 4;\n      puVar10 = (undefined4 *)(**(code **)(puVar22 + 0x17220))();\n      *(undefined4 *)(iVar18 + 0x20) = *puVar10;\n      return 0;\n    }\n    if (param_1[0xb] == 0) {\n      uStack_94 = 100000;\n      bVar2 = true;\n    }\n    else {\n      uStack_94 = 0xffffffff;\n      bVar2 = true;\n    }\n    goto LAB_0001c1b8;\n  }" (if "if") (parenthesized_expression "(iVar5 != 0)" (( "(") (binary_expression "iVar5 != 0" (identifier "iVar5") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    iStack_7c = (**(code **)(puVar22 + 0x172d0))();\n    if (iStack_7c < 0) {\n      (**(code **)(puVar22 + 0x17194))(*(undefined4 *)(iVar18 + 0xc));\n      *(undefined4 *)(iVar18 + 0xc) = 0;\n      if (param_2 != (undefined4 *)0x3) {\n        return 0;\n      }\n      *(undefined2 *)(iVar18 + 0x3c) = 4;\n      puVar10 = (undefined4 *)(**(code **)(puVar22 + 0x17220))();\n      *(undefined4 *)(iVar18 + 0x20) = *puVar10;\n      return 0;\n    }\n    if (param_1[0xb] == 0) {\n      uStack_94 = 100000;\n      bVar2 = true;\n    }\n    else {\n      uStack_94 = 0xffffffff;\n      bVar2 = true;\n    }\n    goto LAB_0001c1b8;\n  }" ({ "{") (expression_statement "iStack_7c = (**(code **)(puVar22 + 0x172d0))();" (assignment_expression "iStack_7c = (**(code **)(puVar22 + 0x172d0))()" (identifier "iStack_7c") (= "=") (call_expression "(**(code **)(puVar22 + 0x172d0))()" (parenthesized_expression "(**(code **)(puVar22 + 0x172d0))" (( "(") (pointer_expression "**(code **)(puVar22 + 0x172d0)" (* "*") (pointer_expression "*(code **)(puVar22 + 0x172d0)" (* "*") (cast_expression "(code **)(puVar22 + 0x172d0)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar22 + 0x172d0)" (( "(") (binary_expression "puVar22 + 0x172d0" (identifier "puVar22") (+ "+") (number_literal "0x172d0")) () ")"))))) () ")")) (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if (iStack_7c < 0) {\n      (**(code **)(puVar22 + 0x17194))(*(undefined4 *)(iVar18 + 0xc));\n      *(undefined4 *)(iVar18 + 0xc) = 0;\n      if (param_2 != (undefined4 *)0x3) {\n        return 0;\n      }\n      *(undefined2 *)(iVar18 + 0x3c) = 4;\n      puVar10 = (undefined4 *)(**(code **)(puVar22 + 0x17220))();\n      *(undefined4 *)(iVar18 + 0x20) = *puVar10;\n      return 0;\n    }" (if "if") (parenthesized_expression "(iStack_7c < 0)" (( "(") (binary_expression "iStack_7c < 0" (identifier "iStack_7c") (< "<") (number_literal "0")) () ")")) (compound_statement "{\n      (**(code **)(puVar22 + 0x17194))(*(undefined4 *)(iVar18 + 0xc));\n      *(undefined4 *)(iVar18 + 0xc) = 0;\n      if (param_2 != (undefined4 *)0x3) {\n        return 0;\n      }\n      *(undefined2 *)(iVar18 + 0x3c) = 4;\n      puVar10 = (undefined4 *)(**(code **)(puVar22 + 0x17220))();\n      *(undefined4 *)(iVar18 + 0x20) = *puVar10;\n      return 0;\n    }" ({ "{") (expression_statement "(**(code **)(puVar22 + 0x17194))(*(undefined4 *)(iVar18 + 0xc));" (call_expression "(**(code **)(puVar22 + 0x17194))(*(undefined4 *)(iVar18 + 0xc))" (parenthesized_expression "(**(code **)(puVar22 + 0x17194))" (( "(") (pointer_expression "**(code **)(puVar22 + 0x17194)" (* "*") (pointer_expression "*(code **)(puVar22 + 0x17194)" (* "*") (cast_expression "(code **)(puVar22 + 0x17194)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar22 + 0x17194)" (( "(") (binary_expression "puVar22 + 0x17194" (identifier "puVar22") (+ "+") (number_literal "0x17194")) () ")"))))) () ")")) (argument_list "(*(undefined4 *)(iVar18 + 0xc))" (( "(") (pointer_expression "*(undefined4 *)(iVar18 + 0xc)" (* "*") (cast_expression "(undefined4 *)(iVar18 + 0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar18 + 0xc)" (( "(") (binary_expression "iVar18 + 0xc" (identifier "iVar18") (+ "+") (number_literal "0xc")) () ")")))) () ")"))) (; ";")) (expression_statement "*(undefined4 *)(iVar18 + 0xc) = 0;" (assignment_expression "*(undefined4 *)(iVar18 + 0xc) = 0" (pointer_expression "*(undefined4 *)(iVar18 + 0xc)" (* "*") (cast_expression "(undefined4 *)(iVar18 + 0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar18 + 0xc)" (( "(") (binary_expression "iVar18 + 0xc" (identifier "iVar18") (+ "+") (number_literal "0xc")) () ")")))) (= "=") (number_literal "0")) (; ";")) (if_statement "if (param_2 != (undefined4 *)0x3) {\n        return 0;\n      }" (if "if") (parenthesized_expression "(param_2 != (undefined4 *)0x3)" (( "(") (binary_expression "param_2 != (undefined4 *)0x3" (identifier "param_2") (!= "!=") (cast_expression "(undefined4 *)0x3" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x3"))) () ")")) (compound_statement "{\n        return 0;\n      }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (expression_statement "*(undefined2 *)(iVar18 + 0x3c) = 4;" (assignment_expression "*(undefined2 *)(iVar18 + 0x3c) = 4" (pointer_expression "*(undefined2 *)(iVar18 + 0x3c)" (* "*") (cast_expression "(undefined2 *)(iVar18 + 0x3c)" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar18 + 0x3c)" (( "(") (binary_expression "iVar18 + 0x3c" (identifier "iVar18") (+ "+") (number_literal "0x3c")) () ")")))) (= "=") (number_literal "4")) (; ";")) (expression_statement "puVar10 = (undefined4 *)(**(code **)(puVar22 + 0x17220))();" (assignment_expression "puVar10 = (undefined4 *)(**(code **)(puVar22 + 0x17220))()" (identifier "puVar10") (= "=") (cast_expression "(undefined4 *)(**(code **)(puVar22 + 0x17220))()" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(**(code **)(puVar22 + 0x17220))()" (parenthesized_expression "(**(code **)(puVar22 + 0x17220))" (( "(") (pointer_expression "**(code **)(puVar22 + 0x17220)" (* "*") (pointer_expression "*(code **)(puVar22 + 0x17220)" (* "*") (cast_expression "(code **)(puVar22 + 0x17220)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar22 + 0x17220)" (( "(") (binary_expression "puVar22 + 0x17220" (identifier "puVar22") (+ "+") (number_literal "0x17220")) () ")"))))) () ")")) (argument_list "()" (( "(") () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(iVar18 + 0x20) = *puVar10;" (assignment_expression "*(undefined4 *)(iVar18 + 0x20) = *puVar10" (pointer_expression "*(undefined4 *)(iVar18 + 0x20)" (* "*") (cast_expression "(undefined4 *)(iVar18 + 0x20)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar18 + 0x20)" (( "(") (binary_expression "iVar18 + 0x20" (identifier "iVar18") (+ "+") (number_literal "0x20")) () ")")))) (= "=") (pointer_expression "*puVar10" (* "*") (identifier "puVar10"))) (; ";")) (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (if_statement "if (param_1[0xb] == 0) {\n      uStack_94 = 100000;\n      bVar2 = true;\n    }\n    else {\n      uStack_94 = 0xffffffff;\n      bVar2 = true;\n    }" (if "if") (parenthesized_expression "(param_1[0xb] == 0)" (( "(") (binary_expression "param_1[0xb] == 0" (subscript_expression "param_1[0xb]" (identifier "param_1") ([ "[") (number_literal "0xb") (] "]")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      uStack_94 = 100000;\n      bVar2 = true;\n    }" ({ "{") (expression_statement "uStack_94 = 100000;" (assignment_expression "uStack_94 = 100000" (identifier "uStack_94") (= "=") (number_literal "100000")) (; ";")) (expression_statement "bVar2 = true;" (assignment_expression "bVar2 = true" (identifier "bVar2") (= "=") (true "true")) (; ";")) (} "}")) (else_clause "else {\n      uStack_94 = 0xffffffff;\n      bVar2 = true;\n    }" (else "else") (compound_statement "{\n      uStack_94 = 0xffffffff;\n      bVar2 = true;\n    }" ({ "{") (expression_statement "uStack_94 = 0xffffffff;" (assignment_expression "uStack_94 = 0xffffffff" (identifier "uStack_94") (= "=") (number_literal "0xffffffff")) (; ";")) (expression_statement "bVar2 = true;" (assignment_expression "bVar2 = true" (identifier "bVar2") (= "=") (true "true")) (; ";")) (} "}")))) (goto_statement "goto LAB_0001c1b8;" (goto "goto") (statement_identifier "LAB_0001c1b8") (; ";")) (} "}"))) (expression_statement "uVar19 = param_1[0xc];" (assignment_expression "uVar19 = param_1[0xc]" (identifier "uVar19") (= "=") (subscript_expression "param_1[0xc]" (identifier "param_1") ([ "[") (number_literal "0xc") (] "]"))) (; ";")) (if_statement "if ((uVar19 & 0x204) == 0x200) {\n    iVar17 = param_1[8];\n  }\n  else {\n    iVar17 = -100;\n  }" (if "if") (parenthesized_expression "((uVar19 & 0x204) == 0x200)" (( "(") (binary_expression "(uVar19 & 0x204) == 0x200" (parenthesized_expression "(uVar19 & 0x204)" (( "(") (binary_expression "uVar19 & 0x204" (identifier "uVar19") (& "&") (number_literal "0x204")) () ")")) (== "==") (number_literal "0x200")) () ")")) (compound_statement "{\n    iVar17 = param_1[8];\n  }" ({ "{") (expression_statement "iVar17 = param_1[8];" (assignment_expression "iVar17 = param_1[8]" (identifier "iVar17") (= "=") (subscript_expression "param_1[8]" (identifier "param_1") ([ "[") (number_literal "8") (] "]"))) (; ";")) (} "}")) (else_clause "else {\n    iVar17 = -100;\n  }" (else "else") (compound_statement "{\n    iVar17 = -100;\n  }" ({ "{") (expression_statement "iVar17 = -100;" (assignment_expression "iVar17 = -100" (identifier "iVar17") (= "=") (number_literal "-100")) (; ";")) (} "}")))) (expression_statement "uVar20 = uVar19 & 0x10;" (assignment_expression "uVar20 = uVar19 & 0x10" (identifier "uVar20") (= "=") (binary_expression "uVar19 & 0x10" (identifier "uVar19") (& "&") (number_literal "0x10"))) (; ";")) (if_statement "if (((uVar20 != 0) && (uVar20 = 0x20000, (uVar19 & 1) != 0)) &&\n     (uVar20 = *(uint *)(iVar18 + 0x30), uVar20 != 0)) {\n    uVar20 = 0x20000;\n  }" (if "if") (parenthesized_expression "(((uVar20 != 0) && (uVar20 = 0x20000, (uVar19 & 1) != 0)) &&\n     (uVar20 = *(uint *)(iVar18 + 0x30), uVar20 != 0))" (( "(") (binary_expression "((uVar20 != 0) && (uVar20 = 0x20000, (uVar19 & 1) != 0)) &&\n     (uVar20 = *(uint *)(iVar18 + 0x30), uVar20 != 0)" (parenthesized_expression "((uVar20 != 0) && (uVar20 = 0x20000, (uVar19 & 1) != 0))" (( "(") (binary_expression "(uVar20 != 0) && (uVar20 = 0x20000, (uVar19 & 1) != 0)" (parenthesized_expression "(uVar20 != 0)" (( "(") (binary_expression "uVar20 != 0" (identifier "uVar20") (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(uVar20 = 0x20000, (uVar19 & 1) != 0)" (( "(") (comma_expression "uVar20 = 0x20000, (uVar19 & 1) != 0" (assignment_expression "uVar20 = 0x20000" (identifier "uVar20") (= "=") (number_literal "0x20000")) (, ",") (binary_expression "(uVar19 & 1) != 0" (parenthesized_expression "(uVar19 & 1)" (( "(") (binary_expression "uVar19 & 1" (identifier "uVar19") (& "&") (number_literal "1")) () ")")) (!= "!=") (number_literal "0"))) () ")"))) () ")")) (&& "&&") (parenthesized_expression "(uVar20 = *(uint *)(iVar18 + 0x30), uVar20 != 0)" (( "(") (comma_expression "uVar20 = *(uint *)(iVar18 + 0x30), uVar20 != 0" (assignment_expression "uVar20 = *(uint *)(iVar18 + 0x30)" (identifier "uVar20") (= "=") (pointer_expression "*(uint *)(iVar18 + 0x30)" (* "*") (cast_expression "(uint *)(iVar18 + 0x30)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar18 + 0x30)" (( "(") (binary_expression "iVar18 + 0x30" (identifier "iVar18") (+ "+") (number_literal "0x30")) () ")"))))) (, ",") (binary_expression "uVar20 != 0" (identifier "uVar20") (!= "!=") (number_literal "0"))) () ")"))) () ")")) (compound_statement "{\n    uVar20 = 0x20000;\n  }" ({ "{") (expression_statement "uVar20 = 0x20000;" (assignment_expression "uVar20 = 0x20000" (identifier "uVar20") (= "=") (number_literal "0x20000")) (; ";")) (} "}"))) (expression_statement "iStack_7c = openat_safer(iVar17,*(undefined4 *)(iVar18 + 0x18),\n                           (uVar19 & 0x800) << 7 | uVar20 | 0x90880);" (assignment_expression "iStack_7c = openat_safer(iVar17,*(undefined4 *)(iVar18 + 0x18),\n                           (uVar19 & 0x800) << 7 | uVar20 | 0x90880)" (identifier "iStack_7c") (= "=") (call_expression "openat_safer(iVar17,*(undefined4 *)(iVar18 + 0x18),\n                           (uVar19 & 0x800) << 7 | uVar20 | 0x90880)" (identifier "openat_safer") (argument_list "(iVar17,*(undefined4 *)(iVar18 + 0x18),\n                           (uVar19 & 0x800) << 7 | uVar20 | 0x90880)" (( "(") (identifier "iVar17") (, ",") (pointer_expression "*(undefined4 *)(iVar18 + 0x18)" (* "*") (cast_expression "(undefined4 *)(iVar18 + 0x18)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar18 + 0x18)" (( "(") (binary_expression "iVar18 + 0x18" (identifier "iVar18") (+ "+") (number_literal "0x18")) () ")")))) (, ",") (binary_expression "(uVar19 & 0x800) << 7 | uVar20 | 0x90880" (binary_expression "(uVar19 & 0x800) << 7 | uVar20" (binary_expression "(uVar19 & 0x800) << 7" (parenthesized_expression "(uVar19 & 0x800)" (( "(") (binary_expression "uVar19 & 0x800" (identifier "uVar19") (& "&") (number_literal "0x800")) () ")")) (<< "<<") (number_literal "7")) (| "|") (identifier "uVar20")) (| "|") (number_literal "0x90880")) () ")")))) (; ";")) (if_statement "if (iStack_7c < 0) {\nLAB_0001c3e8:\n    *(undefined4 *)(iVar18 + 0xc) = 0;\n    if (param_2 == (undefined4 *)0x3) {\n      *(undefined2 *)(iVar18 + 0x3c) = 4;\n      puVar10 = (undefined4 *)(**(code **)(puVar22 + 0x17220))();\n      *(undefined4 *)(iVar18 + 0x20) = *puVar10;\n    }\n    return 0;\n  }" (if "if") (parenthesized_expression "(iStack_7c < 0)" (( "(") (binary_expression "iStack_7c < 0" (identifier "iStack_7c") (< "<") (number_literal "0")) () ")")) (compound_statement "{\nLAB_0001c3e8:\n    *(undefined4 *)(iVar18 + 0xc) = 0;\n    if (param_2 == (undefined4 *)0x3) {\n      *(undefined2 *)(iVar18 + 0x3c) = 4;\n      puVar10 = (undefined4 *)(**(code **)(puVar22 + 0x17220))();\n      *(undefined4 *)(iVar18 + 0x20) = *puVar10;\n    }\n    return 0;\n  }" ({ "{") (labeled_statement "LAB_0001c3e8:\n    *(undefined4 *)(iVar18 + 0xc) = 0;" (statement_identifier "LAB_0001c3e8") (: ":") (expression_statement "*(undefined4 *)(iVar18 + 0xc) = 0;" (assignment_expression "*(undefined4 *)(iVar18 + 0xc) = 0" (pointer_expression "*(undefined4 *)(iVar18 + 0xc)" (* "*") (cast_expression "(undefined4 *)(iVar18 + 0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar18 + 0xc)" (( "(") (binary_expression "iVar18 + 0xc" (identifier "iVar18") (+ "+") (number_literal "0xc")) () ")")))) (= "=") (number_literal "0")) (; ";"))) (if_statement "if (param_2 == (undefined4 *)0x3) {\n      *(undefined2 *)(iVar18 + 0x3c) = 4;\n      puVar10 = (undefined4 *)(**(code **)(puVar22 + 0x17220))();\n      *(undefined4 *)(iVar18 + 0x20) = *puVar10;\n    }" (if "if") (parenthesized_expression "(param_2 == (undefined4 *)0x3)" (( "(") (binary_expression "param_2 == (undefined4 *)0x3" (identifier "param_2") (== "==") (cast_expression "(undefined4 *)0x3" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x3"))) () ")")) (compound_statement "{\n      *(undefined2 *)(iVar18 + 0x3c) = 4;\n      puVar10 = (undefined4 *)(**(code **)(puVar22 + 0x17220))();\n      *(undefined4 *)(iVar18 + 0x20) = *puVar10;\n    }" ({ "{") (expression_statement "*(undefined2 *)(iVar18 + 0x3c) = 4;" (assignment_expression "*(undefined2 *)(iVar18 + 0x3c) = 4" (pointer_expression "*(undefined2 *)(iVar18 + 0x3c)" (* "*") (cast_expression "(undefined2 *)(iVar18 + 0x3c)" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar18 + 0x3c)" (( "(") (binary_expression "iVar18 + 0x3c" (identifier "iVar18") (+ "+") (number_literal "0x3c")) () ")")))) (= "=") (number_literal "4")) (; ";")) (expression_statement "puVar10 = (undefined4 *)(**(code **)(puVar22 + 0x17220))();" (assignment_expression "puVar10 = (undefined4 *)(**(code **)(puVar22 + 0x17220))()" (identifier "puVar10") (= "=") (cast_expression "(undefined4 *)(**(code **)(puVar22 + 0x17220))()" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(**(code **)(puVar22 + 0x17220))()" (parenthesized_expression "(**(code **)(puVar22 + 0x17220))" (( "(") (pointer_expression "**(code **)(puVar22 + 0x17220)" (* "*") (pointer_expression "*(code **)(puVar22 + 0x17220)" (* "*") (cast_expression "(code **)(puVar22 + 0x17220)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar22 + 0x17220)" (( "(") (binary_expression "puVar22 + 0x17220" (identifier "puVar22") (+ "+") (number_literal "0x17220")) () ")"))))) () ")")) (argument_list "()" (( "(") () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(iVar18 + 0x20) = *puVar10;" (assignment_expression "*(undefined4 *)(iVar18 + 0x20) = *puVar10" (pointer_expression "*(undefined4 *)(iVar18 + 0x20)" (* "*") (cast_expression "(undefined4 *)(iVar18 + 0x20)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar18 + 0x20)" (( "(") (binary_expression "iVar18 + 0x20" (identifier "iVar18") (+ "+") (number_literal "0x20")) () ")")))) (= "=") (pointer_expression "*puVar10" (* "*") (identifier "puVar10"))) (; ";")) (} "}"))) (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (expression_statement "iVar17 = (**(code **)(puVar22 + 0x171f0))(iStack_7c);" (assignment_expression "iVar17 = (**(code **)(puVar22 + 0x171f0))(iStack_7c)" (identifier "iVar17") (= "=") (call_expression "(**(code **)(puVar22 + 0x171f0))(iStack_7c)" (parenthesized_expression "(**(code **)(puVar22 + 0x171f0))" (( "(") (pointer_expression "**(code **)(puVar22 + 0x171f0)" (* "*") (pointer_expression "*(code **)(puVar22 + 0x171f0)" (* "*") (cast_expression "(code **)(puVar22 + 0x171f0)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar22 + 0x171f0)" (( "(") (binary_expression "puVar22 + 0x171f0" (identifier "puVar22") (+ "+") (number_literal "0x171f0")) () ")"))))) () ")")) (argument_list "(iStack_7c)" (( "(") (identifier "iStack_7c") () ")")))) (; ";")) (if_statement "if (iVar17 == 0) {\n    puVar10 = (undefined4 *)(**(code **)(puVar22 + 0x17220))();\n    uVar13 = *puVar10;\n    (**(code **)(puVar22 + 0x17198))(iStack_7c);\n    *puVar10 = uVar13;\n    goto LAB_0001c3e8;\n  }" (if "if") (parenthesized_expression "(iVar17 == 0)" (( "(") (binary_expression "iVar17 == 0" (identifier "iVar17") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    puVar10 = (undefined4 *)(**(code **)(puVar22 + 0x17220))();\n    uVar13 = *puVar10;\n    (**(code **)(puVar22 + 0x17198))(iStack_7c);\n    *puVar10 = uVar13;\n    goto LAB_0001c3e8;\n  }" ({ "{") (expression_statement "puVar10 = (undefined4 *)(**(code **)(puVar22 + 0x17220))();" (assignment_expression "puVar10 = (undefined4 *)(**(code **)(puVar22 + 0x17220))()" (identifier "puVar10") (= "=") (cast_expression "(undefined4 *)(**(code **)(puVar22 + 0x17220))()" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(**(code **)(puVar22 + 0x17220))()" (parenthesized_expression "(**(code **)(puVar22 + 0x17220))" (( "(") (pointer_expression "**(code **)(puVar22 + 0x17220)" (* "*") (pointer_expression "*(code **)(puVar22 + 0x17220)" (* "*") (cast_expression "(code **)(puVar22 + 0x17220)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar22 + 0x17220)" (( "(") (binary_expression "puVar22 + 0x17220" (identifier "puVar22") (+ "+") (number_literal "0x17220")) () ")"))))) () ")")) (argument_list "()" (( "(") () ")"))))) (; ";")) (expression_statement "uVar13 = *puVar10;" (assignment_expression "uVar13 = *puVar10" (identifier "uVar13") (= "=") (pointer_expression "*puVar10" (* "*") (identifier "puVar10"))) (; ";")) (expression_statement "(**(code **)(puVar22 + 0x17198))(iStack_7c);" (call_expression "(**(code **)(puVar22 + 0x17198))(iStack_7c)" (parenthesized_expression "(**(code **)(puVar22 + 0x17198))" (( "(") (pointer_expression "**(code **)(puVar22 + 0x17198)" (* "*") (pointer_expression "*(code **)(puVar22 + 0x17198)" (* "*") (cast_expression "(code **)(puVar22 + 0x17198)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar22 + 0x17198)" (( "(") (binary_expression "puVar22 + 0x17198" (identifier "puVar22") (+ "+") (number_literal "0x17198")) () ")"))))) () ")")) (argument_list "(iStack_7c)" (( "(") (identifier "iStack_7c") () ")"))) (; ";")) (expression_statement "*puVar10 = uVar13;" (assignment_expression "*puVar10 = uVar13" (pointer_expression "*puVar10" (* "*") (identifier "puVar10")) (= "=") (identifier "uVar13")) (; ";")) (goto_statement "goto LAB_0001c3e8;" (goto "goto") (statement_identifier "LAB_0001c3e8") (; ";")) (} "}"))) (expression_statement "*(int *)(iVar18 + 0xc) = iVar17;" (assignment_expression "*(int *)(iVar18 + 0xc) = iVar17" (pointer_expression "*(int *)(iVar18 + 0xc)" (* "*") (cast_expression "(int *)(iVar18 + 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar18 + 0xc)" (( "(") (binary_expression "iVar18 + 0xc" (identifier "iVar18") (+ "+") (number_literal "0xc")) () ")")))) (= "=") (identifier "iVar17")) (; ";")) (if_statement "if (*(short *)(iVar18 + 0x3c) == 0xb) {\n    uVar15 = FUN_0001b18c(param_1,iVar18,0);\n    *(undefined2 *)(iVar18 + 0x3c) = uVar15;\n  }\n  else if ((param_1[0xc] & 0x100U) != 0) {\n    FUN_0001bfec(param_1,iVar18);\n    FUN_0001b18c(param_1,iVar18,0);\n    iVar17 = FUN_0001bad0(param_1,iVar18);\n    if (iVar17 == 0) {\n      puVar10 = (undefined4 *)(**(code **)(puVar22 + 0x17220))();\n      *puVar10 = 0xc;\n      return 0;\n    }\n  }" (if "if") (parenthesized_expression "(*(short *)(iVar18 + 0x3c) == 0xb)" (( "(") (binary_expression "*(short *)(iVar18 + 0x3c) == 0xb" (pointer_expression "*(short *)(iVar18 + 0x3c)" (* "*") (cast_expression "(short *)(iVar18 + 0x3c)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar18 + 0x3c)" (( "(") (binary_expression "iVar18 + 0x3c" (identifier "iVar18") (+ "+") (number_literal "0x3c")) () ")")))) (== "==") (number_literal "0xb")) () ")")) (compound_statement "{\n    uVar15 = FUN_0001b18c(param_1,iVar18,0);\n    *(undefined2 *)(iVar18 + 0x3c) = uVar15;\n  }" ({ "{") (expression_statement "uVar15 = FUN_0001b18c(param_1,iVar18,0);" (assignment_expression "uVar15 = FUN_0001b18c(param_1,iVar18,0)" (identifier "uVar15") (= "=") (call_expression "FUN_0001b18c(param_1,iVar18,0)" (identifier "FUN_0001b18c") (argument_list "(param_1,iVar18,0)" (( "(") (identifier "param_1") (, ",") (identifier "iVar18") (, ",") (number_literal "0") () ")")))) (; ";")) (expression_statement "*(undefined2 *)(iVar18 + 0x3c) = uVar15;" (assignment_expression "*(undefined2 *)(iVar18 + 0x3c) = uVar15" (pointer_expression "*(undefined2 *)(iVar18 + 0x3c)" (* "*") (cast_expression "(undefined2 *)(iVar18 + 0x3c)" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar18 + 0x3c)" (( "(") (binary_expression "iVar18 + 0x3c" (identifier "iVar18") (+ "+") (number_literal "0x3c")) () ")")))) (= "=") (identifier "uVar15")) (; ";")) (} "}")) (else_clause "else if ((param_1[0xc] & 0x100U) != 0) {\n    FUN_0001bfec(param_1,iVar18);\n    FUN_0001b18c(param_1,iVar18,0);\n    iVar17 = FUN_0001bad0(param_1,iVar18);\n    if (iVar17 == 0) {\n      puVar10 = (undefined4 *)(**(code **)(puVar22 + 0x17220))();\n      *puVar10 = 0xc;\n      return 0;\n    }\n  }" (else "else") (if_statement "if ((param_1[0xc] & 0x100U) != 0) {\n    FUN_0001bfec(param_1,iVar18);\n    FUN_0001b18c(param_1,iVar18,0);\n    iVar17 = FUN_0001bad0(param_1,iVar18);\n    if (iVar17 == 0) {\n      puVar10 = (undefined4 *)(**(code **)(puVar22 + 0x17220))();\n      *puVar10 = 0xc;\n      return 0;\n    }\n  }" (if "if") (parenthesized_expression "((param_1[0xc] & 0x100U) != 0)" (( "(") (binary_expression "(param_1[0xc] & 0x100U) != 0" (parenthesized_expression "(param_1[0xc] & 0x100U)" (( "(") (binary_expression "param_1[0xc] & 0x100U" (subscript_expression "param_1[0xc]" (identifier "param_1") ([ "[") (number_literal "0xc") (] "]")) (& "&") (number_literal "0x100U")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    FUN_0001bfec(param_1,iVar18);\n    FUN_0001b18c(param_1,iVar18,0);\n    iVar17 = FUN_0001bad0(param_1,iVar18);\n    if (iVar17 == 0) {\n      puVar10 = (undefined4 *)(**(code **)(puVar22 + 0x17220))();\n      *puVar10 = 0xc;\n      return 0;\n    }\n  }" ({ "{") (expression_statement "FUN_0001bfec(param_1,iVar18);" (call_expression "FUN_0001bfec(param_1,iVar18)" (identifier "FUN_0001bfec") (argument_list "(param_1,iVar18)" (( "(") (identifier "param_1") (, ",") (identifier "iVar18") () ")"))) (; ";")) (expression_statement "FUN_0001b18c(param_1,iVar18,0);" (call_expression "FUN_0001b18c(param_1,iVar18,0)" (identifier "FUN_0001b18c") (argument_list "(param_1,iVar18,0)" (( "(") (identifier "param_1") (, ",") (identifier "iVar18") (, ",") (number_literal "0") () ")"))) (; ";")) (expression_statement "iVar17 = FUN_0001bad0(param_1,iVar18);" (assignment_expression "iVar17 = FUN_0001bad0(param_1,iVar18)" (identifier "iVar17") (= "=") (call_expression "FUN_0001bad0(param_1,iVar18)" (identifier "FUN_0001bad0") (argument_list "(param_1,iVar18)" (( "(") (identifier "param_1") (, ",") (identifier "iVar18") () ")")))) (; ";")) (if_statement "if (iVar17 == 0) {\n      puVar10 = (undefined4 *)(**(code **)(puVar22 + 0x17220))();\n      *puVar10 = 0xc;\n      return 0;\n    }" (if "if") (parenthesized_expression "(iVar17 == 0)" (( "(") (binary_expression "iVar17 == 0" (identifier "iVar17") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      puVar10 = (undefined4 *)(**(code **)(puVar22 + 0x17220))();\n      *puVar10 = 0xc;\n      return 0;\n    }" ({ "{") (expression_statement "puVar10 = (undefined4 *)(**(code **)(puVar22 + 0x17220))();" (assignment_expression "puVar10 = (undefined4 *)(**(code **)(puVar22 + 0x17220))()" (identifier "puVar10") (= "=") (cast_expression "(undefined4 *)(**(code **)(puVar22 + 0x17220))()" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(**(code **)(puVar22 + 0x17220))()" (parenthesized_expression "(**(code **)(puVar22 + 0x17220))" (( "(") (pointer_expression "**(code **)(puVar22 + 0x17220)" (* "*") (pointer_expression "*(code **)(puVar22 + 0x17220)" (* "*") (cast_expression "(code **)(puVar22 + 0x17220)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar22 + 0x17220)" (( "(") (binary_expression "puVar22 + 0x17220" (identifier "puVar22") (+ "+") (number_literal "0x17220")) () ")"))))) () ")")) (argument_list "()" (( "(") () ")"))))) (; ";")) (expression_statement "*puVar10 = 0xc;" (assignment_expression "*puVar10 = 0xc" (pointer_expression "*puVar10" (* "*") (identifier "puVar10")) (= "=") (number_literal "0xc")) (; ";")) (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (} "}"))))) (if_statement "if (param_1[0xb] == 0) {\n    uStack_94 = 100000;\n  }\n  else {\n    uStack_94 = 0xffffffff;\n  }" (if "if") (parenthesized_expression "(param_1[0xb] == 0)" (( "(") (binary_expression "param_1[0xb] == 0" (subscript_expression "param_1[0xb]" (identifier "param_1") ([ "[") (number_literal "0xb") (] "]")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    uStack_94 = 100000;\n  }" ({ "{") (expression_statement "uStack_94 = 100000;" (assignment_expression "uStack_94 = 100000" (identifier "uStack_94") (= "=") (number_literal "100000")) (; ";")) (} "}")) (else_clause "else {\n    uStack_94 = 0xffffffff;\n  }" (else "else") (compound_statement "{\n    uStack_94 = 0xffffffff;\n  }" ({ "{") (expression_statement "uStack_94 = 0xffffffff;" (assignment_expression "uStack_94 = 0xffffffff" (identifier "uStack_94") (= "=") (number_literal "0xffffffff")) (; ";")) (} "}")))) (if_statement "if (param_2 == (undefined4 *)0x2) {\n    bVar2 = false;\n  }\n  else {\n    if ((((param_1[0xc] & 0x38U) == 0x18) && (*(int *)(iVar18 + 100) == 2)) &&\n       (iVar17 = FUN_0001ba08(iVar18,iStack_7c), iVar17 != 0)) {\n      bVar2 = false;\n      if (param_2 != (undefined4 *)0x3) {\n        bVar2 = false;\n        goto LAB_0001c1b8;\n      }\n      uVar19 = param_1[0xc];\n    }\n    else {\n      bVar2 = true;\n      uVar19 = param_1[0xc];\n    }\n    if ((uVar19 & 0x200) != 0) {\n      iStack_7c = rpl_fcntl(iStack_7c,0x406,3);\n    }\n    if ((iStack_7c < 0) || (iVar17 = FUN_0001bd68(param_1,iVar18,iStack_7c,0), iVar17 != 0)) {\n      if ((bVar2) && (param_2 == (undefined4 *)0x3)) {\n        puVar10 = (undefined4 *)(**(code **)(puVar22 + 0x17220))();\n        *(undefined4 *)(iVar18 + 0x20) = *puVar10;\n      }\n      *(ushort *)(iVar18 + 0x3e) = *(ushort *)(iVar18 + 0x3e) | 1;\n      (**(code **)(puVar22 + 0x17194))(*(undefined4 *)(iVar18 + 0xc));\n      *(undefined4 *)(iVar18 + 0xc) = 0;\n      if (((param_1[0xc] & 0x200U) != 0) && (-1 < iStack_7c)) {\n        (**(code **)(puVar22 + 0x17198))(iStack_7c);\n        *(undefined4 *)(iVar18 + 0xc) = 0;\n      }\n      bVar2 = false;\n    }\n    else {\n      bVar2 = true;\n    }\n  }" (if "if") (parenthesized_expression "(param_2 == (undefined4 *)0x2)" (( "(") (binary_expression "param_2 == (undefined4 *)0x2" (identifier "param_2") (== "==") (cast_expression "(undefined4 *)0x2" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x2"))) () ")")) (compound_statement "{\n    bVar2 = false;\n  }" ({ "{") (expression_statement "bVar2 = false;" (assignment_expression "bVar2 = false" (identifier "bVar2") (= "=") (false "false")) (; ";")) (} "}")) (else_clause "else {\n    if ((((param_1[0xc] & 0x38U) == 0x18) && (*(int *)(iVar18 + 100) == 2)) &&\n       (iVar17 = FUN_0001ba08(iVar18,iStack_7c), iVar17 != 0)) {\n      bVar2 = false;\n      if (param_2 != (undefined4 *)0x3) {\n        bVar2 = false;\n        goto LAB_0001c1b8;\n      }\n      uVar19 = param_1[0xc];\n    }\n    else {\n      bVar2 = true;\n      uVar19 = param_1[0xc];\n    }\n    if ((uVar19 & 0x200) != 0) {\n      iStack_7c = rpl_fcntl(iStack_7c,0x406,3);\n    }\n    if ((iStack_7c < 0) || (iVar17 = FUN_0001bd68(param_1,iVar18,iStack_7c,0), iVar17 != 0)) {\n      if ((bVar2) && (param_2 == (undefined4 *)0x3)) {\n        puVar10 = (undefined4 *)(**(code **)(puVar22 + 0x17220))();\n        *(undefined4 *)(iVar18 + 0x20) = *puVar10;\n      }\n      *(ushort *)(iVar18 + 0x3e) = *(ushort *)(iVar18 + 0x3e) | 1;\n      (**(code **)(puVar22 + 0x17194))(*(undefined4 *)(iVar18 + 0xc));\n      *(undefined4 *)(iVar18 + 0xc) = 0;\n      if (((param_1[0xc] & 0x200U) != 0) && (-1 < iStack_7c)) {\n        (**(code **)(puVar22 + 0x17198))(iStack_7c);\n        *(undefined4 *)(iVar18 + 0xc) = 0;\n      }\n      bVar2 = false;\n    }\n    else {\n      bVar2 = true;\n    }\n  }" (else "else") (compound_statement "{\n    if ((((param_1[0xc] & 0x38U) == 0x18) && (*(int *)(iVar18 + 100) == 2)) &&\n       (iVar17 = FUN_0001ba08(iVar18,iStack_7c), iVar17 != 0)) {\n      bVar2 = false;\n      if (param_2 != (undefined4 *)0x3) {\n        bVar2 = false;\n        goto LAB_0001c1b8;\n      }\n      uVar19 = param_1[0xc];\n    }\n    else {\n      bVar2 = true;\n      uVar19 = param_1[0xc];\n    }\n    if ((uVar19 & 0x200) != 0) {\n      iStack_7c = rpl_fcntl(iStack_7c,0x406,3);\n    }\n    if ((iStack_7c < 0) || (iVar17 = FUN_0001bd68(param_1,iVar18,iStack_7c,0), iVar17 != 0)) {\n      if ((bVar2) && (param_2 == (undefined4 *)0x3)) {\n        puVar10 = (undefined4 *)(**(code **)(puVar22 + 0x17220))();\n        *(undefined4 *)(iVar18 + 0x20) = *puVar10;\n      }\n      *(ushort *)(iVar18 + 0x3e) = *(ushort *)(iVar18 + 0x3e) | 1;\n      (**(code **)(puVar22 + 0x17194))(*(undefined4 *)(iVar18 + 0xc));\n      *(undefined4 *)(iVar18 + 0xc) = 0;\n      if (((param_1[0xc] & 0x200U) != 0) && (-1 < iStack_7c)) {\n        (**(code **)(puVar22 + 0x17198))(iStack_7c);\n        *(undefined4 *)(iVar18 + 0xc) = 0;\n      }\n      bVar2 = false;\n    }\n    else {\n      bVar2 = true;\n    }\n  }" ({ "{") (if_statement "if ((((param_1[0xc] & 0x38U) == 0x18) && (*(int *)(iVar18 + 100) == 2)) &&\n       (iVar17 = FUN_0001ba08(iVar18,iStack_7c), iVar17 != 0)) {\n      bVar2 = false;\n      if (param_2 != (undefined4 *)0x3) {\n        bVar2 = false;\n        goto LAB_0001c1b8;\n      }\n      uVar19 = param_1[0xc];\n    }\n    else {\n      bVar2 = true;\n      uVar19 = param_1[0xc];\n    }" (if "if") (parenthesized_expression "((((param_1[0xc] & 0x38U) == 0x18) && (*(int *)(iVar18 + 100) == 2)) &&\n       (iVar17 = FUN_0001ba08(iVar18,iStack_7c), iVar17 != 0))" (( "(") (binary_expression "(((param_1[0xc] & 0x38U) == 0x18) && (*(int *)(iVar18 + 100) == 2)) &&\n       (iVar17 = FUN_0001ba08(iVar18,iStack_7c), iVar17 != 0)" (parenthesized_expression "(((param_1[0xc] & 0x38U) == 0x18) && (*(int *)(iVar18 + 100) == 2))" (( "(") (binary_expression "((param_1[0xc] & 0x38U) == 0x18) && (*(int *)(iVar18 + 100) == 2)" (parenthesized_expression "((param_1[0xc] & 0x38U) == 0x18)" (( "(") (binary_expression "(param_1[0xc] & 0x38U) == 0x18" (parenthesized_expression "(param_1[0xc] & 0x38U)" (( "(") (binary_expression "param_1[0xc] & 0x38U" (subscript_expression "param_1[0xc]" (identifier "param_1") ([ "[") (number_literal "0xc") (] "]")) (& "&") (number_literal "0x38U")) () ")")) (== "==") (number_literal "0x18")) () ")")) (&& "&&") (parenthesized_expression "(*(int *)(iVar18 + 100) == 2)" (( "(") (binary_expression "*(int *)(iVar18 + 100) == 2" (pointer_expression "*(int *)(iVar18 + 100)" (* "*") (cast_expression "(int *)(iVar18 + 100)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar18 + 100)" (( "(") (binary_expression "iVar18 + 100" (identifier "iVar18") (+ "+") (number_literal "100")) () ")")))) (== "==") (number_literal "2")) () ")"))) () ")")) (&& "&&") (parenthesized_expression "(iVar17 = FUN_0001ba08(iVar18,iStack_7c), iVar17 != 0)" (( "(") (comma_expression "iVar17 = FUN_0001ba08(iVar18,iStack_7c), iVar17 != 0" (assignment_expression "iVar17 = FUN_0001ba08(iVar18,iStack_7c)" (identifier "iVar17") (= "=") (call_expression "FUN_0001ba08(iVar18,iStack_7c)" (identifier "FUN_0001ba08") (argument_list "(iVar18,iStack_7c)" (( "(") (identifier "iVar18") (, ",") (identifier "iStack_7c") () ")")))) (, ",") (binary_expression "iVar17 != 0" (identifier "iVar17") (!= "!=") (number_literal "0"))) () ")"))) () ")")) (compound_statement "{\n      bVar2 = false;\n      if (param_2 != (undefined4 *)0x3) {\n        bVar2 = false;\n        goto LAB_0001c1b8;\n      }\n      uVar19 = param_1[0xc];\n    }" ({ "{") (expression_statement "bVar2 = false;" (assignment_expression "bVar2 = false" (identifier "bVar2") (= "=") (false "false")) (; ";")) (if_statement "if (param_2 != (undefined4 *)0x3) {\n        bVar2 = false;\n        goto LAB_0001c1b8;\n      }" (if "if") (parenthesized_expression "(param_2 != (undefined4 *)0x3)" (( "(") (binary_expression "param_2 != (undefined4 *)0x3" (identifier "param_2") (!= "!=") (cast_expression "(undefined4 *)0x3" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x3"))) () ")")) (compound_statement "{\n        bVar2 = false;\n        goto LAB_0001c1b8;\n      }" ({ "{") (expression_statement "bVar2 = false;" (assignment_expression "bVar2 = false" (identifier "bVar2") (= "=") (false "false")) (; ";")) (goto_statement "goto LAB_0001c1b8;" (goto "goto") (statement_identifier "LAB_0001c1b8") (; ";")) (} "}"))) (expression_statement "uVar19 = param_1[0xc];" (assignment_expression "uVar19 = param_1[0xc]" (identifier "uVar19") (= "=") (subscript_expression "param_1[0xc]" (identifier "param_1") ([ "[") (number_literal "0xc") (] "]"))) (; ";")) (} "}")) (else_clause "else {\n      bVar2 = true;\n      uVar19 = param_1[0xc];\n    }" (else "else") (compound_statement "{\n      bVar2 = true;\n      uVar19 = param_1[0xc];\n    }" ({ "{") (expression_statement "bVar2 = true;" (assignment_expression "bVar2 = true" (identifier "bVar2") (= "=") (true "true")) (; ";")) (expression_statement "uVar19 = param_1[0xc];" (assignment_expression "uVar19 = param_1[0xc]" (identifier "uVar19") (= "=") (subscript_expression "param_1[0xc]" (identifier "param_1") ([ "[") (number_literal "0xc") (] "]"))) (; ";")) (} "}")))) (if_statement "if ((uVar19 & 0x200) != 0) {\n      iStack_7c = rpl_fcntl(iStack_7c,0x406,3);\n    }" (if "if") (parenthesized_expression "((uVar19 & 0x200) != 0)" (( "(") (binary_expression "(uVar19 & 0x200) != 0" (parenthesized_expression "(uVar19 & 0x200)" (( "(") (binary_expression "uVar19 & 0x200" (identifier "uVar19") (& "&") (number_literal "0x200")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      iStack_7c = rpl_fcntl(iStack_7c,0x406,3);\n    }" ({ "{") (expression_statement "iStack_7c = rpl_fcntl(iStack_7c,0x406,3);" (assignment_expression "iStack_7c = rpl_fcntl(iStack_7c,0x406,3)" (identifier "iStack_7c") (= "=") (call_expression "rpl_fcntl(iStack_7c,0x406,3)" (identifier "rpl_fcntl") (argument_list "(iStack_7c,0x406,3)" (( "(") (identifier "iStack_7c") (, ",") (number_literal "0x406") (, ",") (number_literal "3") () ")")))) (; ";")) (} "}"))) (if_statement "if ((iStack_7c < 0) || (iVar17 = FUN_0001bd68(param_1,iVar18,iStack_7c,0), iVar17 != 0)) {\n      if ((bVar2) && (param_2 == (undefined4 *)0x3)) {\n        puVar10 = (undefined4 *)(**(code **)(puVar22 + 0x17220))();\n        *(undefined4 *)(iVar18 + 0x20) = *puVar10;\n      }\n      *(ushort *)(iVar18 + 0x3e) = *(ushort *)(iVar18 + 0x3e) | 1;\n      (**(code **)(puVar22 + 0x17194))(*(undefined4 *)(iVar18 + 0xc));\n      *(undefined4 *)(iVar18 + 0xc) = 0;\n      if (((param_1[0xc] & 0x200U) != 0) && (-1 < iStack_7c)) {\n        (**(code **)(puVar22 + 0x17198))(iStack_7c);\n        *(undefined4 *)(iVar18 + 0xc) = 0;\n      }\n      bVar2 = false;\n    }\n    else {\n      bVar2 = true;\n    }" (if "if") (parenthesized_expression "((iStack_7c < 0) || (iVar17 = FUN_0001bd68(param_1,iVar18,iStack_7c,0), iVar17 != 0))" (( "(") (binary_expression "(iStack_7c < 0) || (iVar17 = FUN_0001bd68(param_1,iVar18,iStack_7c,0), iVar17 != 0)" (parenthesized_expression "(iStack_7c < 0)" (( "(") (binary_expression "iStack_7c < 0" (identifier "iStack_7c") (< "<") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(iVar17 = FUN_0001bd68(param_1,iVar18,iStack_7c,0), iVar17 != 0)" (( "(") (comma_expression "iVar17 = FUN_0001bd68(param_1,iVar18,iStack_7c,0), iVar17 != 0" (assignment_expression "iVar17 = FUN_0001bd68(param_1,iVar18,iStack_7c,0)" (identifier "iVar17") (= "=") (call_expression "FUN_0001bd68(param_1,iVar18,iStack_7c,0)" (identifier "FUN_0001bd68") (argument_list "(param_1,iVar18,iStack_7c,0)" (( "(") (identifier "param_1") (, ",") (identifier "iVar18") (, ",") (identifier "iStack_7c") (, ",") (number_literal "0") () ")")))) (, ",") (binary_expression "iVar17 != 0" (identifier "iVar17") (!= "!=") (number_literal "0"))) () ")"))) () ")")) (compound_statement "{\n      if ((bVar2) && (param_2 == (undefined4 *)0x3)) {\n        puVar10 = (undefined4 *)(**(code **)(puVar22 + 0x17220))();\n        *(undefined4 *)(iVar18 + 0x20) = *puVar10;\n      }\n      *(ushort *)(iVar18 + 0x3e) = *(ushort *)(iVar18 + 0x3e) | 1;\n      (**(code **)(puVar22 + 0x17194))(*(undefined4 *)(iVar18 + 0xc));\n      *(undefined4 *)(iVar18 + 0xc) = 0;\n      if (((param_1[0xc] & 0x200U) != 0) && (-1 < iStack_7c)) {\n        (**(code **)(puVar22 + 0x17198))(iStack_7c);\n        *(undefined4 *)(iVar18 + 0xc) = 0;\n      }\n      bVar2 = false;\n    }" ({ "{") (if_statement "if ((bVar2) && (param_2 == (undefined4 *)0x3)) {\n        puVar10 = (undefined4 *)(**(code **)(puVar22 + 0x17220))();\n        *(undefined4 *)(iVar18 + 0x20) = *puVar10;\n      }" (if "if") (parenthesized_expression "((bVar2) && (param_2 == (undefined4 *)0x3))" (( "(") (binary_expression "(bVar2) && (param_2 == (undefined4 *)0x3)" (parenthesized_expression "(bVar2)" (( "(") (identifier "bVar2") () ")")) (&& "&&") (parenthesized_expression "(param_2 == (undefined4 *)0x3)" (( "(") (binary_expression "param_2 == (undefined4 *)0x3" (identifier "param_2") (== "==") (cast_expression "(undefined4 *)0x3" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x3"))) () ")"))) () ")")) (compound_statement "{\n        puVar10 = (undefined4 *)(**(code **)(puVar22 + 0x17220))();\n        *(undefined4 *)(iVar18 + 0x20) = *puVar10;\n      }" ({ "{") (expression_statement "puVar10 = (undefined4 *)(**(code **)(puVar22 + 0x17220))();" (assignment_expression "puVar10 = (undefined4 *)(**(code **)(puVar22 + 0x17220))()" (identifier "puVar10") (= "=") (cast_expression "(undefined4 *)(**(code **)(puVar22 + 0x17220))()" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(**(code **)(puVar22 + 0x17220))()" (parenthesized_expression "(**(code **)(puVar22 + 0x17220))" (( "(") (pointer_expression "**(code **)(puVar22 + 0x17220)" (* "*") (pointer_expression "*(code **)(puVar22 + 0x17220)" (* "*") (cast_expression "(code **)(puVar22 + 0x17220)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar22 + 0x17220)" (( "(") (binary_expression "puVar22 + 0x17220" (identifier "puVar22") (+ "+") (number_literal "0x17220")) () ")"))))) () ")")) (argument_list "()" (( "(") () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(iVar18 + 0x20) = *puVar10;" (assignment_expression "*(undefined4 *)(iVar18 + 0x20) = *puVar10" (pointer_expression "*(undefined4 *)(iVar18 + 0x20)" (* "*") (cast_expression "(undefined4 *)(iVar18 + 0x20)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar18 + 0x20)" (( "(") (binary_expression "iVar18 + 0x20" (identifier "iVar18") (+ "+") (number_literal "0x20")) () ")")))) (= "=") (pointer_expression "*puVar10" (* "*") (identifier "puVar10"))) (; ";")) (} "}"))) (expression_statement "*(ushort *)(iVar18 + 0x3e) = *(ushort *)(iVar18 + 0x3e) | 1;" (assignment_expression "*(ushort *)(iVar18 + 0x3e) = *(ushort *)(iVar18 + 0x3e) | 1" (pointer_expression "*(ushort *)(iVar18 + 0x3e)" (* "*") (cast_expression "(ushort *)(iVar18 + 0x3e)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar18 + 0x3e)" (( "(") (binary_expression "iVar18 + 0x3e" (identifier "iVar18") (+ "+") (number_literal "0x3e")) () ")")))) (= "=") (binary_expression "*(ushort *)(iVar18 + 0x3e) | 1" (pointer_expression "*(ushort *)(iVar18 + 0x3e)" (* "*") (cast_expression "(ushort *)(iVar18 + 0x3e)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar18 + 0x3e)" (( "(") (binary_expression "iVar18 + 0x3e" (identifier "iVar18") (+ "+") (number_literal "0x3e")) () ")")))) (| "|") (number_literal "1"))) (; ";")) (expression_statement "(**(code **)(puVar22 + 0x17194))(*(undefined4 *)(iVar18 + 0xc));" (call_expression "(**(code **)(puVar22 + 0x17194))(*(undefined4 *)(iVar18 + 0xc))" (parenthesized_expression "(**(code **)(puVar22 + 0x17194))" (( "(") (pointer_expression "**(code **)(puVar22 + 0x17194)" (* "*") (pointer_expression "*(code **)(puVar22 + 0x17194)" (* "*") (cast_expression "(code **)(puVar22 + 0x17194)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar22 + 0x17194)" (( "(") (binary_expression "puVar22 + 0x17194" (identifier "puVar22") (+ "+") (number_literal "0x17194")) () ")"))))) () ")")) (argument_list "(*(undefined4 *)(iVar18 + 0xc))" (( "(") (pointer_expression "*(undefined4 *)(iVar18 + 0xc)" (* "*") (cast_expression "(undefined4 *)(iVar18 + 0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar18 + 0xc)" (( "(") (binary_expression "iVar18 + 0xc" (identifier "iVar18") (+ "+") (number_literal "0xc")) () ")")))) () ")"))) (; ";")) (expression_statement "*(undefined4 *)(iVar18 + 0xc) = 0;" (assignment_expression "*(undefined4 *)(iVar18 + 0xc) = 0" (pointer_expression "*(undefined4 *)(iVar18 + 0xc)" (* "*") (cast_expression "(undefined4 *)(iVar18 + 0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar18 + 0xc)" (( "(") (binary_expression "iVar18 + 0xc" (identifier "iVar18") (+ "+") (number_literal "0xc")) () ")")))) (= "=") (number_literal "0")) (; ";")) (if_statement "if (((param_1[0xc] & 0x200U) != 0) && (-1 < iStack_7c)) {\n        (**(code **)(puVar22 + 0x17198))(iStack_7c);\n        *(undefined4 *)(iVar18 + 0xc) = 0;\n      }" (if "if") (parenthesized_expression "(((param_1[0xc] & 0x200U) != 0) && (-1 < iStack_7c))" (( "(") (binary_expression "((param_1[0xc] & 0x200U) != 0) && (-1 < iStack_7c)" (parenthesized_expression "((param_1[0xc] & 0x200U) != 0)" (( "(") (binary_expression "(param_1[0xc] & 0x200U) != 0" (parenthesized_expression "(param_1[0xc] & 0x200U)" (( "(") (binary_expression "param_1[0xc] & 0x200U" (subscript_expression "param_1[0xc]" (identifier "param_1") ([ "[") (number_literal "0xc") (] "]")) (& "&") (number_literal "0x200U")) () ")")) (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(-1 < iStack_7c)" (( "(") (binary_expression "-1 < iStack_7c" (number_literal "-1") (< "<") (identifier "iStack_7c")) () ")"))) () ")")) (compound_statement "{\n        (**(code **)(puVar22 + 0x17198))(iStack_7c);\n        *(undefined4 *)(iVar18 + 0xc) = 0;\n      }" ({ "{") (expression_statement "(**(code **)(puVar22 + 0x17198))(iStack_7c);" (call_expression "(**(code **)(puVar22 + 0x17198))(iStack_7c)" (parenthesized_expression "(**(code **)(puVar22 + 0x17198))" (( "(") (pointer_expression "**(code **)(puVar22 + 0x17198)" (* "*") (pointer_expression "*(code **)(puVar22 + 0x17198)" (* "*") (cast_expression "(code **)(puVar22 + 0x17198)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar22 + 0x17198)" (( "(") (binary_expression "puVar22 + 0x17198" (identifier "puVar22") (+ "+") (number_literal "0x17198")) () ")"))))) () ")")) (argument_list "(iStack_7c)" (( "(") (identifier "iStack_7c") () ")"))) (; ";")) (expression_statement "*(undefined4 *)(iVar18 + 0xc) = 0;" (assignment_expression "*(undefined4 *)(iVar18 + 0xc) = 0" (pointer_expression "*(undefined4 *)(iVar18 + 0xc)" (* "*") (cast_expression "(undefined4 *)(iVar18 + 0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar18 + 0xc)" (( "(") (binary_expression "iVar18 + 0xc" (identifier "iVar18") (+ "+") (number_literal "0xc")) () ")")))) (= "=") (number_literal "0")) (; ";")) (} "}"))) (expression_statement "bVar2 = false;" (assignment_expression "bVar2 = false" (identifier "bVar2") (= "=") (false "false")) (; ";")) (} "}")) (else_clause "else {\n      bVar2 = true;\n    }" (else "else") (compound_statement "{\n      bVar2 = true;\n    }" ({ "{") (expression_statement "bVar2 = true;" (assignment_expression "bVar2 = true" (identifier "bVar2") (= "=") (true "true")) (; ";")) (} "}")))) (} "}")))) (labeled_statement "LAB_0001c1b8:\n  iVar17 = *(int *)(iVar18 + 0x28) + -1;" (statement_identifier "LAB_0001c1b8") (: ":") (expression_statement "iVar17 = *(int *)(iVar18 + 0x28) + -1;" (assignment_expression "iVar17 = *(int *)(iVar18 + 0x28) + -1" (identifier "iVar17") (= "=") (binary_expression "*(int *)(iVar18 + 0x28) + -1" (pointer_expression "*(int *)(iVar18 + 0x28)" (* "*") (cast_expression "(int *)(iVar18 + 0x28)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar18 + 0x28)" (( "(") (binary_expression "iVar18 + 0x28" (identifier "iVar18") (+ "+") (number_literal "0x28")) () ")")))) (+ "+") (number_literal "-1"))) (; ";"))) (if_statement "if (*(char *)(*(int *)(iVar18 + 0x1c) + iVar17) != '/') {\n    iVar17 = *(int *)(iVar18 + 0x28);\n  }" (if "if") (parenthesized_expression "(*(char *)(*(int *)(iVar18 + 0x1c) + iVar17) != '/')" (( "(") (binary_expression "*(char *)(*(int *)(iVar18 + 0x1c) + iVar17) != '/'" (pointer_expression "*(char *)(*(int *)(iVar18 + 0x1c) + iVar17)" (* "*") (cast_expression "(char *)(*(int *)(iVar18 + 0x1c) + iVar17)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(iVar18 + 0x1c) + iVar17)" (( "(") (binary_expression "*(int *)(iVar18 + 0x1c) + iVar17" (pointer_expression "*(int *)(iVar18 + 0x1c)" (* "*") (cast_expression "(int *)(iVar18 + 0x1c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar18 + 0x1c)" (( "(") (binary_expression "iVar18 + 0x1c" (identifier "iVar18") (+ "+") (number_literal "0x1c")) () ")")))) (+ "+") (identifier "iVar17")) () ")")))) (!= "!=") (char_literal "'/'" (' "'") (character "/") (' "'"))) () ")")) (compound_statement "{\n    iVar17 = *(int *)(iVar18 + 0x28);\n  }" ({ "{") (expression_statement "iVar17 = *(int *)(iVar18 + 0x28);" (assignment_expression "iVar17 = *(int *)(iVar18 + 0x28)" (identifier "iVar17") (= "=") (pointer_expression "*(int *)(iVar18 + 0x28)" (* "*") (cast_expression "(int *)(iVar18 + 0x28)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar18 + 0x28)" (( "(") (binary_expression "iVar18 + 0x28" (identifier "iVar18") (+ "+") (number_literal "0x28")) () ")"))))) (; ";")) (} "}"))) (if_statement "if ((param_1[0xc] & 4U) == 0) {\n    puStack_90 = (undefined1 *)0x0;\n  }\n  else {\n    puStack_90 = (undefined1 *)(param_1[6] + iVar17) + 1;\n    *(undefined1 *)(param_1[6] + iVar17) = 0x2f;\n  }" (if "if") (parenthesized_expression "((param_1[0xc] & 4U) == 0)" (( "(") (binary_expression "(param_1[0xc] & 4U) == 0" (parenthesized_expression "(param_1[0xc] & 4U)" (( "(") (binary_expression "param_1[0xc] & 4U" (subscript_expression "param_1[0xc]" (identifier "param_1") ([ "[") (number_literal "0xc") (] "]")) (& "&") (number_literal "4U")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    puStack_90 = (undefined1 *)0x0;\n  }" ({ "{") (expression_statement "puStack_90 = (undefined1 *)0x0;" (assignment_expression "puStack_90 = (undefined1 *)0x0" (identifier "puStack_90") (= "=") (cast_expression "(undefined1 *)0x0" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (} "}")) (else_clause "else {\n    puStack_90 = (undefined1 *)(param_1[6] + iVar17) + 1;\n    *(undefined1 *)(param_1[6] + iVar17) = 0x2f;\n  }" (else "else") (compound_statement "{\n    puStack_90 = (undefined1 *)(param_1[6] + iVar17) + 1;\n    *(undefined1 *)(param_1[6] + iVar17) = 0x2f;\n  }" ({ "{") (expression_statement "puStack_90 = (undefined1 *)(param_1[6] + iVar17) + 1;" (assignment_expression "puStack_90 = (undefined1 *)(param_1[6] + iVar17) + 1" (identifier "puStack_90") (= "=") (binary_expression "(undefined1 *)(param_1[6] + iVar17) + 1" (cast_expression "(undefined1 *)(param_1[6] + iVar17)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1[6] + iVar17)" (( "(") (binary_expression "param_1[6] + iVar17" (subscript_expression "param_1[6]" (identifier "param_1") ([ "[") (number_literal "6") (] "]")) (+ "+") (identifier "iVar17")) () ")"))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*(undefined1 *)(param_1[6] + iVar17) = 0x2f;" (assignment_expression "*(undefined1 *)(param_1[6] + iVar17) = 0x2f" (pointer_expression "*(undefined1 *)(param_1[6] + iVar17)" (* "*") (cast_expression "(undefined1 *)(param_1[6] + iVar17)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1[6] + iVar17)" (( "(") (binary_expression "param_1[6] + iVar17" (subscript_expression "param_1[6]" (identifier "param_1") ([ "[") (number_literal "6") (] "]")) (+ "+") (identifier "iVar17")) () ")")))) (= "=") (number_literal "0x2f")) (; ";")) (} "}")))) (expression_statement "uVar20 = iVar17 + 1;" (assignment_expression "uVar20 = iVar17 + 1" (identifier "uVar20") (= "=") (binary_expression "iVar17 + 1" (identifier "iVar17") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "uVar23 = param_1[9] - uVar20;" (assignment_expression "uVar23 = param_1[9] - uVar20" (identifier "uVar23") (= "=") (binary_expression "param_1[9] - uVar20" (subscript_expression "param_1[9]" (identifier "param_1") ([ "[") (number_literal "9") (] "]")) (- "-") (identifier "uVar20"))) (; ";")) (expression_statement "iVar6 = *(int *)(iVar18 + 0x30);" (assignment_expression "iVar6 = *(int *)(iVar18 + 0x30)" (identifier "iVar6") (= "=") (pointer_expression "*(int *)(iVar18 + 0x30)" (* "*") (cast_expression "(int *)(iVar18 + 0x30)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar18 + 0x30)" (( "(") (binary_expression "iVar18 + 0x30" (identifier "iVar18") (+ "+") (number_literal "0x30")) () ")"))))) (; ";")) (expression_statement "bVar4 = false;" (assignment_expression "bVar4 = false" (identifier "bVar4") (= "=") (false "false")) (; ";")) (expression_statement "iStack_8c = 0;" (assignment_expression "iStack_8c = 0" (identifier "iStack_8c") (= "=") (number_literal "0")) (; ";")) (expression_statement "iStack_a4 = 0;" (assignment_expression "iStack_a4 = 0" (identifier "iStack_a4") (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar19 = 0;" (assignment_expression "uVar19 = 0" (identifier "uVar19") (= "=") (number_literal "0")) (; ";")) (expression_statement "iStack_a0 = 0;" (assignment_expression "iStack_a0 = 0" (identifier "iStack_a0") (= "=") (number_literal "0")) (; ";")) (expression_statement "iVar7 = *(int *)(puVar22 + 0x16fd4);" (assignment_expression "iVar7 = *(int *)(puVar22 + 0x16fd4)" (identifier "iVar7") (= "=") (pointer_expression "*(int *)(puVar22 + 0x16fd4)" (* "*") (cast_expression "(int *)(puVar22 + 0x16fd4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar22 + 0x16fd4)" (( "(") (binary_expression "puVar22 + 0x16fd4" (identifier "puVar22") (+ "+") (number_literal "0x16fd4")) () ")"))))) (; ";")) (expression_statement "iVar8 = *(int *)(puVar22 + 0x16fd4);" (assignment_expression "iVar8 = *(int *)(puVar22 + 0x16fd4)" (identifier "iVar8") (= "=") (pointer_expression "*(int *)(puVar22 + 0x16fd4)" (* "*") (cast_expression "(int *)(puVar22 + 0x16fd4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar22 + 0x16fd4)" (( "(") (binary_expression "puVar22 + 0x16fd4" (identifier "puVar22") (+ "+") (number_literal "0x16fd4")) () ")"))))) (; ";")) (expression_statement "iVar9 = *(int *)(puVar22 + 0x16fd4);" (assignment_expression "iVar9 = *(int *)(puVar22 + 0x16fd4)" (identifier "iVar9") (= "=") (pointer_expression "*(int *)(puVar22 + 0x16fd4)" (* "*") (cast_expression "(int *)(puVar22 + 0x16fd4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar22 + 0x16fd4)" (( "(") (binary_expression "puVar22 + 0x16fd4" (identifier "puVar22") (+ "+") (number_literal "0x16fd4")) () ")"))))) (; ";")) (labeled_statement "LAB_0001c96c:\n  do {\n    do {\n      if (*(int *)(iVar18 + 0xc) == 0) goto LAB_0001c66c;\n      piVar16 = (int *)(**(code **)(puVar22 + 0x17220))();\n      *piVar16 = 0;\n      puVar10 = (undefined4 *)(**(code **)(puVar22 + 0x171d8))(*(undefined4 *)(iVar18 + 0xc));\n      if (puVar10 == (undefined4 *)0x0) {\n        if (*piVar16 != 0) {\n          *(int *)(iVar18 + 0x20) = *piVar16;\n          uVar15 = 7;\n          if ((iVar5 == 0) && (uVar19 == 0)) {\n            uVar15 = 4;\n          }\n          *(undefined2 *)(iVar18 + 0x3c) = uVar15;\n        }\n        if (*(int *)(iVar18 + 0xc) != 0) {\n          (**(code **)(puVar22 + 0x17194))();\n          *(undefined4 *)(iVar18 + 0xc) = 0;\n        }\n        goto LAB_0001c66c;\n      }\n    } while ((((param_1[0xc] & 0x20U) == 0) && (*(char *)((int)puVar10 + 0x13) == '.')) &&\n            ((*(char *)(puVar10 + 5) == '\0' || ((puVar10[5] & 0xffff0000) == 0x2e000000))));\n    uVar11 = (**(code **)(puVar22 + 0x17240))((int)puVar10 + 0x13);\n    iVar12 = (*(code *)(iVar7 + -0x4b14))(param_1,(int)puVar10 + 0x13,uVar11);\n    if (iVar12 == 0) {\nLAB_0001c794:\n      iVar5 = *piVar16;\n      (**(code **)(puVar22 + 0x172c8))(iVar12);\n      FUN_0001b6fc(iStack_a0);\n      (**(code **)(puVar22 + 0x17194))(*(undefined4 *)(iVar18 + 0xc));\n      *(undefined4 *)(iVar18 + 0xc) = 0;\n      *(undefined2 *)(iVar18 + 0x3c) = 7;\n      param_1[0xc] = param_1[0xc] | 0x4000;\n      *piVar16 = iVar5;\n      return 0;\n    }\n    if (uVar23 <= uVar11) {\n      iVar24 = param_1[6];\n      iVar14 = FUN_0001b0cc(param_1,iVar17 + 2 + uVar11);\n      if (iVar14 == 0) goto LAB_0001c794;\n      if ((param_1[6] != iVar24) && (iStack_8c = iVar14, (param_1[0xc] & 4U) != 0)) {\n        puStack_90 = (undefined1 *)(param_1[6] + uVar20);\n      }\n      uVar23 = param_1[9] - uVar20;\n    }\n    if (uVar20 + uVar11 < uVar20) {\n      (**(code **)(puVar22 + 0x172c8))(iVar12);\n      FUN_0001b6fc(iStack_a0);\n      (**(code **)(puVar22 + 0x17194))(*(undefined4 *)(iVar18 + 0xc));\n      *(undefined4 *)(iVar18 + 0xc) = 0;\n      *(undefined2 *)(iVar18 + 0x3c) = 7;\n      param_1[0xc] = param_1[0xc] | 0x4000;\n      *piVar16 = 0x4e;\n      return 0;\n    }\n    *(int *)(iVar12 + 0x30) = iVar6 + 1;\n    *(int *)(iVar12 + 4) = *param_1;\n    *(uint *)(iVar12 + 0x28) = uVar20 + uVar11;\n    uVar13 = *puVar10;\n    *(undefined4 *)(iVar12 + 0x5c) = puVar10[1];\n    *(undefined4 *)(iVar12 + 0x58) = uVar13;\n    if ((param_1[0xc] & 4U) == 0) {\n      *(int *)(iVar12 + 0x18) = iVar12 + 0xe8;\n      iVar14 = param_1[0xb];\n    }\n    else {\n      *(undefined4 *)(iVar12 + 0x18) = *(undefined4 *)(iVar12 + 0x1c);\n      (**(code **)(puVar22 + 0x172cc))(puStack_90,iVar12 + 0xe8,*(int *)(iVar12 + 0x34) + 1);\n      iVar14 = param_1[0xb];\n    }\n    if ((iVar14 == 0) || ((param_1[0xc] & 0x400U) != 0)) {\n      if (((param_1[0xc] & 0x18U) == 0x18) && ((*(byte *)((int)puVar10 + 0x12) & 0xfb) != 0)) {\n        *(undefined2 *)(iVar12 + 0x3c) = 0xb;\n        bVar3 = true;\n        if (*(byte *)((int)puVar10 + 0x12) < 0xd) {\n                    \n                    \n          iVar5 = (*(code *)(puVar22 +\n                            *(int *)(iVar9 + 0x2d30 + (uint)*(byte *)((int)puVar10 + 0x12) * 4) +\n                            0x1ef9c))();\n          return iVar5;\n        }\n      }\n      else {\n        *(undefined2 *)(iVar12 + 0x3c) = 0xb;\n        bVar3 = false;\n        if (*(byte *)((int)puVar10 + 0x12) < 0xd) {\n                    \n                    \n          iVar5 = (*(code *)(puVar22 +\n                            *(int *)(*(int *)(puVar22 + 0x16fd4) + 0x2d64 +\n                                    (uint)*(byte *)((int)puVar10 + 0x12) * 4) + 0x1ef9c))();\n          return iVar5;\n        }\n      }\n      *(undefined4 *)(iVar12 + 0x60) = 0;\n      if (bVar3) {\n        uVar13 = 1;\n      }\n      else {\n        uVar13 = 2;\n      }\n      *(undefined4 *)(iVar12 + 0x84) = uVar13;\n      *(undefined4 *)(iVar12 + 0x80) = 0;\n    }\n    else {\n      uVar15 = FUN_0001b18c(param_1,iVar12,0);\n      *(undefined2 *)(iVar12 + 0x3c) = uVar15;\n    }\n    *(undefined4 *)(iVar12 + 8) = 0;\n    iVar14 = iVar12;\n    if (iStack_a0 != 0) {\n      *(int *)(iStack_a4 + 8) = iVar12;\n      iVar14 = iStack_a0;\n    }\n    iStack_a0 = iVar14;\n    iStack_a4 = iVar12;\n    if (uVar19 == 10000) {\n      if (param_1[0xb] != 0) {\nLAB_0001cb74:\n        uVar19 = 0x2711;\n        goto LAB_0001c96c;\n      }\n      iVar12 = (*(code *)(iVar8 + -0x47a8))(iVar18,iStack_7c);\n      if (iVar12 == 0x6969) {\n        bVar4 = false;\n      }\n      else if (iVar12 == 0x1021994) {\n        bVar4 = false;\n      }\n      else {\n        if (iVar12 != -0xacb2be) {\n          bVar4 = true;\n          goto LAB_0001cb74;\n        }\n        bVar4 = false;\n      }\n    }\n    uVar19 = uVar19 + 1;\n  } while (uVar19 < uStack_94);" (statement_identifier "LAB_0001c96c") (: ":") (do_statement "do {\n    do {\n      if (*(int *)(iVar18 + 0xc) == 0) goto LAB_0001c66c;\n      piVar16 = (int *)(**(code **)(puVar22 + 0x17220))();\n      *piVar16 = 0;\n      puVar10 = (undefined4 *)(**(code **)(puVar22 + 0x171d8))(*(undefined4 *)(iVar18 + 0xc));\n      if (puVar10 == (undefined4 *)0x0) {\n        if (*piVar16 != 0) {\n          *(int *)(iVar18 + 0x20) = *piVar16;\n          uVar15 = 7;\n          if ((iVar5 == 0) && (uVar19 == 0)) {\n            uVar15 = 4;\n          }\n          *(undefined2 *)(iVar18 + 0x3c) = uVar15;\n        }\n        if (*(int *)(iVar18 + 0xc) != 0) {\n          (**(code **)(puVar22 + 0x17194))();\n          *(undefined4 *)(iVar18 + 0xc) = 0;\n        }\n        goto LAB_0001c66c;\n      }\n    } while ((((param_1[0xc] & 0x20U) == 0) && (*(char *)((int)puVar10 + 0x13) == '.')) &&\n            ((*(char *)(puVar10 + 5) == '\0' || ((puVar10[5] & 0xffff0000) == 0x2e000000))));\n    uVar11 = (**(code **)(puVar22 + 0x17240))((int)puVar10 + 0x13);\n    iVar12 = (*(code *)(iVar7 + -0x4b14))(param_1,(int)puVar10 + 0x13,uVar11);\n    if (iVar12 == 0) {\nLAB_0001c794:\n      iVar5 = *piVar16;\n      (**(code **)(puVar22 + 0x172c8))(iVar12);\n      FUN_0001b6fc(iStack_a0);\n      (**(code **)(puVar22 + 0x17194))(*(undefined4 *)(iVar18 + 0xc));\n      *(undefined4 *)(iVar18 + 0xc) = 0;\n      *(undefined2 *)(iVar18 + 0x3c) = 7;\n      param_1[0xc] = param_1[0xc] | 0x4000;\n      *piVar16 = iVar5;\n      return 0;\n    }\n    if (uVar23 <= uVar11) {\n      iVar24 = param_1[6];\n      iVar14 = FUN_0001b0cc(param_1,iVar17 + 2 + uVar11);\n      if (iVar14 == 0) goto LAB_0001c794;\n      if ((param_1[6] != iVar24) && (iStack_8c = iVar14, (param_1[0xc] & 4U) != 0)) {\n        puStack_90 = (undefined1 *)(param_1[6] + uVar20);\n      }\n      uVar23 = param_1[9] - uVar20;\n    }\n    if (uVar20 + uVar11 < uVar20) {\n      (**(code **)(puVar22 + 0x172c8))(iVar12);\n      FUN_0001b6fc(iStack_a0);\n      (**(code **)(puVar22 + 0x17194))(*(undefined4 *)(iVar18 + 0xc));\n      *(undefined4 *)(iVar18 + 0xc) = 0;\n      *(undefined2 *)(iVar18 + 0x3c) = 7;\n      param_1[0xc] = param_1[0xc] | 0x4000;\n      *piVar16 = 0x4e;\n      return 0;\n    }\n    *(int *)(iVar12 + 0x30) = iVar6 + 1;\n    *(int *)(iVar12 + 4) = *param_1;\n    *(uint *)(iVar12 + 0x28) = uVar20 + uVar11;\n    uVar13 = *puVar10;\n    *(undefined4 *)(iVar12 + 0x5c) = puVar10[1];\n    *(undefined4 *)(iVar12 + 0x58) = uVar13;\n    if ((param_1[0xc] & 4U) == 0) {\n      *(int *)(iVar12 + 0x18) = iVar12 + 0xe8;\n      iVar14 = param_1[0xb];\n    }\n    else {\n      *(undefined4 *)(iVar12 + 0x18) = *(undefined4 *)(iVar12 + 0x1c);\n      (**(code **)(puVar22 + 0x172cc))(puStack_90,iVar12 + 0xe8,*(int *)(iVar12 + 0x34) + 1);\n      iVar14 = param_1[0xb];\n    }\n    if ((iVar14 == 0) || ((param_1[0xc] & 0x400U) != 0)) {\n      if (((param_1[0xc] & 0x18U) == 0x18) && ((*(byte *)((int)puVar10 + 0x12) & 0xfb) != 0)) {\n        *(undefined2 *)(iVar12 + 0x3c) = 0xb;\n        bVar3 = true;\n        if (*(byte *)((int)puVar10 + 0x12) < 0xd) {\n                    \n                    \n          iVar5 = (*(code *)(puVar22 +\n                            *(int *)(iVar9 + 0x2d30 + (uint)*(byte *)((int)puVar10 + 0x12) * 4) +\n                            0x1ef9c))();\n          return iVar5;\n        }\n      }\n      else {\n        *(undefined2 *)(iVar12 + 0x3c) = 0xb;\n        bVar3 = false;\n        if (*(byte *)((int)puVar10 + 0x12) < 0xd) {\n                    \n                    \n          iVar5 = (*(code *)(puVar22 +\n                            *(int *)(*(int *)(puVar22 + 0x16fd4) + 0x2d64 +\n                                    (uint)*(byte *)((int)puVar10 + 0x12) * 4) + 0x1ef9c))();\n          return iVar5;\n        }\n      }\n      *(undefined4 *)(iVar12 + 0x60) = 0;\n      if (bVar3) {\n        uVar13 = 1;\n      }\n      else {\n        uVar13 = 2;\n      }\n      *(undefined4 *)(iVar12 + 0x84) = uVar13;\n      *(undefined4 *)(iVar12 + 0x80) = 0;\n    }\n    else {\n      uVar15 = FUN_0001b18c(param_1,iVar12,0);\n      *(undefined2 *)(iVar12 + 0x3c) = uVar15;\n    }\n    *(undefined4 *)(iVar12 + 8) = 0;\n    iVar14 = iVar12;\n    if (iStack_a0 != 0) {\n      *(int *)(iStack_a4 + 8) = iVar12;\n      iVar14 = iStack_a0;\n    }\n    iStack_a0 = iVar14;\n    iStack_a4 = iVar12;\n    if (uVar19 == 10000) {\n      if (param_1[0xb] != 0) {\nLAB_0001cb74:\n        uVar19 = 0x2711;\n        goto LAB_0001c96c;\n      }\n      iVar12 = (*(code *)(iVar8 + -0x47a8))(iVar18,iStack_7c);\n      if (iVar12 == 0x6969) {\n        bVar4 = false;\n      }\n      else if (iVar12 == 0x1021994) {\n        bVar4 = false;\n      }\n      else {\n        if (iVar12 != -0xacb2be) {\n          bVar4 = true;\n          goto LAB_0001cb74;\n        }\n        bVar4 = false;\n      }\n    }\n    uVar19 = uVar19 + 1;\n  } while (uVar19 < uStack_94);" (do "do") (compound_statement "{\n    do {\n      if (*(int *)(iVar18 + 0xc) == 0) goto LAB_0001c66c;\n      piVar16 = (int *)(**(code **)(puVar22 + 0x17220))();\n      *piVar16 = 0;\n      puVar10 = (undefined4 *)(**(code **)(puVar22 + 0x171d8))(*(undefined4 *)(iVar18 + 0xc));\n      if (puVar10 == (undefined4 *)0x0) {\n        if (*piVar16 != 0) {\n          *(int *)(iVar18 + 0x20) = *piVar16;\n          uVar15 = 7;\n          if ((iVar5 == 0) && (uVar19 == 0)) {\n            uVar15 = 4;\n          }\n          *(undefined2 *)(iVar18 + 0x3c) = uVar15;\n        }\n        if (*(int *)(iVar18 + 0xc) != 0) {\n          (**(code **)(puVar22 + 0x17194))();\n          *(undefined4 *)(iVar18 + 0xc) = 0;\n        }\n        goto LAB_0001c66c;\n      }\n    } while ((((param_1[0xc] & 0x20U) == 0) && (*(char *)((int)puVar10 + 0x13) == '.')) &&\n            ((*(char *)(puVar10 + 5) == '\0' || ((puVar10[5] & 0xffff0000) == 0x2e000000))));\n    uVar11 = (**(code **)(puVar22 + 0x17240))((int)puVar10 + 0x13);\n    iVar12 = (*(code *)(iVar7 + -0x4b14))(param_1,(int)puVar10 + 0x13,uVar11);\n    if (iVar12 == 0) {\nLAB_0001c794:\n      iVar5 = *piVar16;\n      (**(code **)(puVar22 + 0x172c8))(iVar12);\n      FUN_0001b6fc(iStack_a0);\n      (**(code **)(puVar22 + 0x17194))(*(undefined4 *)(iVar18 + 0xc));\n      *(undefined4 *)(iVar18 + 0xc) = 0;\n      *(undefined2 *)(iVar18 + 0x3c) = 7;\n      param_1[0xc] = param_1[0xc] | 0x4000;\n      *piVar16 = iVar5;\n      return 0;\n    }\n    if (uVar23 <= uVar11) {\n      iVar24 = param_1[6];\n      iVar14 = FUN_0001b0cc(param_1,iVar17 + 2 + uVar11);\n      if (iVar14 == 0) goto LAB_0001c794;\n      if ((param_1[6] != iVar24) && (iStack_8c = iVar14, (param_1[0xc] & 4U) != 0)) {\n        puStack_90 = (undefined1 *)(param_1[6] + uVar20);\n      }\n      uVar23 = param_1[9] - uVar20;\n    }\n    if (uVar20 + uVar11 < uVar20) {\n      (**(code **)(puVar22 + 0x172c8))(iVar12);\n      FUN_0001b6fc(iStack_a0);\n      (**(code **)(puVar22 + 0x17194))(*(undefined4 *)(iVar18 + 0xc));\n      *(undefined4 *)(iVar18 + 0xc) = 0;\n      *(undefined2 *)(iVar18 + 0x3c) = 7;\n      param_1[0xc] = param_1[0xc] | 0x4000;\n      *piVar16 = 0x4e;\n      return 0;\n    }\n    *(int *)(iVar12 + 0x30) = iVar6 + 1;\n    *(int *)(iVar12 + 4) = *param_1;\n    *(uint *)(iVar12 + 0x28) = uVar20 + uVar11;\n    uVar13 = *puVar10;\n    *(undefined4 *)(iVar12 + 0x5c) = puVar10[1];\n    *(undefined4 *)(iVar12 + 0x58) = uVar13;\n    if ((param_1[0xc] & 4U) == 0) {\n      *(int *)(iVar12 + 0x18) = iVar12 + 0xe8;\n      iVar14 = param_1[0xb];\n    }\n    else {\n      *(undefined4 *)(iVar12 + 0x18) = *(undefined4 *)(iVar12 + 0x1c);\n      (**(code **)(puVar22 + 0x172cc))(puStack_90,iVar12 + 0xe8,*(int *)(iVar12 + 0x34) + 1);\n      iVar14 = param_1[0xb];\n    }\n    if ((iVar14 == 0) || ((param_1[0xc] & 0x400U) != 0)) {\n      if (((param_1[0xc] & 0x18U) == 0x18) && ((*(byte *)((int)puVar10 + 0x12) & 0xfb) != 0)) {\n        *(undefined2 *)(iVar12 + 0x3c) = 0xb;\n        bVar3 = true;\n        if (*(byte *)((int)puVar10 + 0x12) < 0xd) {\n                    \n                    \n          iVar5 = (*(code *)(puVar22 +\n                            *(int *)(iVar9 + 0x2d30 + (uint)*(byte *)((int)puVar10 + 0x12) * 4) +\n                            0x1ef9c))();\n          return iVar5;\n        }\n      }\n      else {\n        *(undefined2 *)(iVar12 + 0x3c) = 0xb;\n        bVar3 = false;\n        if (*(byte *)((int)puVar10 + 0x12) < 0xd) {\n                    \n                    \n          iVar5 = (*(code *)(puVar22 +\n                            *(int *)(*(int *)(puVar22 + 0x16fd4) + 0x2d64 +\n                                    (uint)*(byte *)((int)puVar10 + 0x12) * 4) + 0x1ef9c))();\n          return iVar5;\n        }\n      }\n      *(undefined4 *)(iVar12 + 0x60) = 0;\n      if (bVar3) {\n        uVar13 = 1;\n      }\n      else {\n        uVar13 = 2;\n      }\n      *(undefined4 *)(iVar12 + 0x84) = uVar13;\n      *(undefined4 *)(iVar12 + 0x80) = 0;\n    }\n    else {\n      uVar15 = FUN_0001b18c(param_1,iVar12,0);\n      *(undefined2 *)(iVar12 + 0x3c) = uVar15;\n    }\n    *(undefined4 *)(iVar12 + 8) = 0;\n    iVar14 = iVar12;\n    if (iStack_a0 != 0) {\n      *(int *)(iStack_a4 + 8) = iVar12;\n      iVar14 = iStack_a0;\n    }\n    iStack_a0 = iVar14;\n    iStack_a4 = iVar12;\n    if (uVar19 == 10000) {\n      if (param_1[0xb] != 0) {\nLAB_0001cb74:\n        uVar19 = 0x2711;\n        goto LAB_0001c96c;\n      }\n      iVar12 = (*(code *)(iVar8 + -0x47a8))(iVar18,iStack_7c);\n      if (iVar12 == 0x6969) {\n        bVar4 = false;\n      }\n      else if (iVar12 == 0x1021994) {\n        bVar4 = false;\n      }\n      else {\n        if (iVar12 != -0xacb2be) {\n          bVar4 = true;\n          goto LAB_0001cb74;\n        }\n        bVar4 = false;\n      }\n    }\n    uVar19 = uVar19 + 1;\n  }" ({ "{") (do_statement "do {\n      if (*(int *)(iVar18 + 0xc) == 0) goto LAB_0001c66c;\n      piVar16 = (int *)(**(code **)(puVar22 + 0x17220))();\n      *piVar16 = 0;\n      puVar10 = (undefined4 *)(**(code **)(puVar22 + 0x171d8))(*(undefined4 *)(iVar18 + 0xc));\n      if (puVar10 == (undefined4 *)0x0) {\n        if (*piVar16 != 0) {\n          *(int *)(iVar18 + 0x20) = *piVar16;\n          uVar15 = 7;\n          if ((iVar5 == 0) && (uVar19 == 0)) {\n            uVar15 = 4;\n          }\n          *(undefined2 *)(iVar18 + 0x3c) = uVar15;\n        }\n        if (*(int *)(iVar18 + 0xc) != 0) {\n          (**(code **)(puVar22 + 0x17194))();\n          *(undefined4 *)(iVar18 + 0xc) = 0;\n        }\n        goto LAB_0001c66c;\n      }\n    } while ((((param_1[0xc] & 0x20U) == 0) && (*(char *)((int)puVar10 + 0x13) == '.')) &&\n            ((*(char *)(puVar10 + 5) == '\0' || ((puVar10[5] & 0xffff0000) == 0x2e000000))));" (do "do") (compound_statement "{\n      if (*(int *)(iVar18 + 0xc) == 0) goto LAB_0001c66c;\n      piVar16 = (int *)(**(code **)(puVar22 + 0x17220))();\n      *piVar16 = 0;\n      puVar10 = (undefined4 *)(**(code **)(puVar22 + 0x171d8))(*(undefined4 *)(iVar18 + 0xc));\n      if (puVar10 == (undefined4 *)0x0) {\n        if (*piVar16 != 0) {\n          *(int *)(iVar18 + 0x20) = *piVar16;\n          uVar15 = 7;\n          if ((iVar5 == 0) && (uVar19 == 0)) {\n            uVar15 = 4;\n          }\n          *(undefined2 *)(iVar18 + 0x3c) = uVar15;\n        }\n        if (*(int *)(iVar18 + 0xc) != 0) {\n          (**(code **)(puVar22 + 0x17194))();\n          *(undefined4 *)(iVar18 + 0xc) = 0;\n        }\n        goto LAB_0001c66c;\n      }\n    }" ({ "{") (if_statement "if (*(int *)(iVar18 + 0xc) == 0) goto LAB_0001c66c;" (if "if") (parenthesized_expression "(*(int *)(iVar18 + 0xc) == 0)" (( "(") (binary_expression "*(int *)(iVar18 + 0xc) == 0" (pointer_expression "*(int *)(iVar18 + 0xc)" (* "*") (cast_expression "(int *)(iVar18 + 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar18 + 0xc)" (( "(") (binary_expression "iVar18 + 0xc" (identifier "iVar18") (+ "+") (number_literal "0xc")) () ")")))) (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_0001c66c;" (goto "goto") (statement_identifier "LAB_0001c66c") (; ";"))) (expression_statement "piVar16 = (int *)(**(code **)(puVar22 + 0x17220))();" (assignment_expression "piVar16 = (int *)(**(code **)(puVar22 + 0x17220))()" (identifier "piVar16") (= "=") (cast_expression "(int *)(**(code **)(puVar22 + 0x17220))()" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(**(code **)(puVar22 + 0x17220))()" (parenthesized_expression "(**(code **)(puVar22 + 0x17220))" (( "(") (pointer_expression "**(code **)(puVar22 + 0x17220)" (* "*") (pointer_expression "*(code **)(puVar22 + 0x17220)" (* "*") (cast_expression "(code **)(puVar22 + 0x17220)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar22 + 0x17220)" (( "(") (binary_expression "puVar22 + 0x17220" (identifier "puVar22") (+ "+") (number_literal "0x17220")) () ")"))))) () ")")) (argument_list "()" (( "(") () ")"))))) (; ";")) (expression_statement "*piVar16 = 0;" (assignment_expression "*piVar16 = 0" (pointer_expression "*piVar16" (* "*") (identifier "piVar16")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar10 = (undefined4 *)(**(code **)(puVar22 + 0x171d8))(*(undefined4 *)(iVar18 + 0xc));" (assignment_expression "puVar10 = (undefined4 *)(**(code **)(puVar22 + 0x171d8))(*(undefined4 *)(iVar18 + 0xc))" (identifier "puVar10") (= "=") (cast_expression "(undefined4 *)(**(code **)(puVar22 + 0x171d8))(*(undefined4 *)(iVar18 + 0xc))" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(**(code **)(puVar22 + 0x171d8))(*(undefined4 *)(iVar18 + 0xc))" (parenthesized_expression "(**(code **)(puVar22 + 0x171d8))" (( "(") (pointer_expression "**(code **)(puVar22 + 0x171d8)" (* "*") (pointer_expression "*(code **)(puVar22 + 0x171d8)" (* "*") (cast_expression "(code **)(puVar22 + 0x171d8)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar22 + 0x171d8)" (( "(") (binary_expression "puVar22 + 0x171d8" (identifier "puVar22") (+ "+") (number_literal "0x171d8")) () ")"))))) () ")")) (argument_list "(*(undefined4 *)(iVar18 + 0xc))" (( "(") (pointer_expression "*(undefined4 *)(iVar18 + 0xc)" (* "*") (cast_expression "(undefined4 *)(iVar18 + 0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar18 + 0xc)" (( "(") (binary_expression "iVar18 + 0xc" (identifier "iVar18") (+ "+") (number_literal "0xc")) () ")")))) () ")"))))) (; ";")) (if_statement "if (puVar10 == (undefined4 *)0x0) {\n        if (*piVar16 != 0) {\n          *(int *)(iVar18 + 0x20) = *piVar16;\n          uVar15 = 7;\n          if ((iVar5 == 0) && (uVar19 == 0)) {\n            uVar15 = 4;\n          }\n          *(undefined2 *)(iVar18 + 0x3c) = uVar15;\n        }\n        if (*(int *)(iVar18 + 0xc) != 0) {\n          (**(code **)(puVar22 + 0x17194))();\n          *(undefined4 *)(iVar18 + 0xc) = 0;\n        }\n        goto LAB_0001c66c;\n      }" (if "if") (parenthesized_expression "(puVar10 == (undefined4 *)0x0)" (( "(") (binary_expression "puVar10 == (undefined4 *)0x0" (identifier "puVar10") (== "==") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n        if (*piVar16 != 0) {\n          *(int *)(iVar18 + 0x20) = *piVar16;\n          uVar15 = 7;\n          if ((iVar5 == 0) && (uVar19 == 0)) {\n            uVar15 = 4;\n          }\n          *(undefined2 *)(iVar18 + 0x3c) = uVar15;\n        }\n        if (*(int *)(iVar18 + 0xc) != 0) {\n          (**(code **)(puVar22 + 0x17194))();\n          *(undefined4 *)(iVar18 + 0xc) = 0;\n        }\n        goto LAB_0001c66c;\n      }" ({ "{") (if_statement "if (*piVar16 != 0) {\n          *(int *)(iVar18 + 0x20) = *piVar16;\n          uVar15 = 7;\n          if ((iVar5 == 0) && (uVar19 == 0)) {\n            uVar15 = 4;\n          }\n          *(undefined2 *)(iVar18 + 0x3c) = uVar15;\n        }" (if "if") (parenthesized_expression "(*piVar16 != 0)" (( "(") (binary_expression "*piVar16 != 0" (pointer_expression "*piVar16" (* "*") (identifier "piVar16")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          *(int *)(iVar18 + 0x20) = *piVar16;\n          uVar15 = 7;\n          if ((iVar5 == 0) && (uVar19 == 0)) {\n            uVar15 = 4;\n          }\n          *(undefined2 *)(iVar18 + 0x3c) = uVar15;\n        }" ({ "{") (expression_statement "*(int *)(iVar18 + 0x20) = *piVar16;" (assignment_expression "*(int *)(iVar18 + 0x20) = *piVar16" (pointer_expression "*(int *)(iVar18 + 0x20)" (* "*") (cast_expression "(int *)(iVar18 + 0x20)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar18 + 0x20)" (( "(") (binary_expression "iVar18 + 0x20" (identifier "iVar18") (+ "+") (number_literal "0x20")) () ")")))) (= "=") (pointer_expression "*piVar16" (* "*") (identifier "piVar16"))) (; ";")) (expression_statement "uVar15 = 7;" (assignment_expression "uVar15 = 7" (identifier "uVar15") (= "=") (number_literal "7")) (; ";")) (if_statement "if ((iVar5 == 0) && (uVar19 == 0)) {\n            uVar15 = 4;\n          }" (if "if") (parenthesized_expression "((iVar5 == 0) && (uVar19 == 0))" (( "(") (binary_expression "(iVar5 == 0) && (uVar19 == 0)" (parenthesized_expression "(iVar5 == 0)" (( "(") (binary_expression "iVar5 == 0" (identifier "iVar5") (== "==") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(uVar19 == 0)" (( "(") (binary_expression "uVar19 == 0" (identifier "uVar19") (== "==") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n            uVar15 = 4;\n          }" ({ "{") (expression_statement "uVar15 = 4;" (assignment_expression "uVar15 = 4" (identifier "uVar15") (= "=") (number_literal "4")) (; ";")) (} "}"))) (expression_statement "*(undefined2 *)(iVar18 + 0x3c) = uVar15;" (assignment_expression "*(undefined2 *)(iVar18 + 0x3c) = uVar15" (pointer_expression "*(undefined2 *)(iVar18 + 0x3c)" (* "*") (cast_expression "(undefined2 *)(iVar18 + 0x3c)" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar18 + 0x3c)" (( "(") (binary_expression "iVar18 + 0x3c" (identifier "iVar18") (+ "+") (number_literal "0x3c")) () ")")))) (= "=") (identifier "uVar15")) (; ";")) (} "}"))) (if_statement "if (*(int *)(iVar18 + 0xc) != 0) {\n          (**(code **)(puVar22 + 0x17194))();\n          *(undefined4 *)(iVar18 + 0xc) = 0;\n        }" (if "if") (parenthesized_expression "(*(int *)(iVar18 + 0xc) != 0)" (( "(") (binary_expression "*(int *)(iVar18 + 0xc) != 0" (pointer_expression "*(int *)(iVar18 + 0xc)" (* "*") (cast_expression "(int *)(iVar18 + 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar18 + 0xc)" (( "(") (binary_expression "iVar18 + 0xc" (identifier "iVar18") (+ "+") (number_literal "0xc")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          (**(code **)(puVar22 + 0x17194))();\n          *(undefined4 *)(iVar18 + 0xc) = 0;\n        }" ({ "{") (expression_statement "(**(code **)(puVar22 + 0x17194))();" (call_expression "(**(code **)(puVar22 + 0x17194))()" (parenthesized_expression "(**(code **)(puVar22 + 0x17194))" (( "(") (pointer_expression "**(code **)(puVar22 + 0x17194)" (* "*") (pointer_expression "*(code **)(puVar22 + 0x17194)" (* "*") (cast_expression "(code **)(puVar22 + 0x17194)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar22 + 0x17194)" (( "(") (binary_expression "puVar22 + 0x17194" (identifier "puVar22") (+ "+") (number_literal "0x17194")) () ")"))))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "*(undefined4 *)(iVar18 + 0xc) = 0;" (assignment_expression "*(undefined4 *)(iVar18 + 0xc) = 0" (pointer_expression "*(undefined4 *)(iVar18 + 0xc)" (* "*") (cast_expression "(undefined4 *)(iVar18 + 0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar18 + 0xc)" (( "(") (binary_expression "iVar18 + 0xc" (identifier "iVar18") (+ "+") (number_literal "0xc")) () ")")))) (= "=") (number_literal "0")) (; ";")) (} "}"))) (goto_statement "goto LAB_0001c66c;" (goto "goto") (statement_identifier "LAB_0001c66c") (; ";")) (} "}"))) (} "}")) (while "while") (parenthesized_expression "((((param_1[0xc] & 0x20U) == 0) && (*(char *)((int)puVar10 + 0x13) == '.')) &&\n            ((*(char *)(puVar10 + 5) == '\0' || ((puVar10[5] & 0xffff0000) == 0x2e000000))))" (( "(") (binary_expression "(((param_1[0xc] & 0x20U) == 0) && (*(char *)((int)puVar10 + 0x13) == '.')) &&\n            ((*(char *)(puVar10 + 5) == '\0' || ((puVar10[5] & 0xffff0000) == 0x2e000000)))" (parenthesized_expression "(((param_1[0xc] & 0x20U) == 0) && (*(char *)((int)puVar10 + 0x13) == '.'))" (( "(") (binary_expression "((param_1[0xc] & 0x20U) == 0) && (*(char *)((int)puVar10 + 0x13) == '.')" (parenthesized_expression "((param_1[0xc] & 0x20U) == 0)" (( "(") (binary_expression "(param_1[0xc] & 0x20U) == 0" (parenthesized_expression "(param_1[0xc] & 0x20U)" (( "(") (binary_expression "param_1[0xc] & 0x20U" (subscript_expression "param_1[0xc]" (identifier "param_1") ([ "[") (number_literal "0xc") (] "]")) (& "&") (number_literal "0x20U")) () ")")) (== "==") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(*(char *)((int)puVar10 + 0x13) == '.')" (( "(") (binary_expression "*(char *)((int)puVar10 + 0x13) == '.'" (pointer_expression "*(char *)((int)puVar10 + 0x13)" (* "*") (cast_expression "(char *)((int)puVar10 + 0x13)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar10 + 0x13)" (( "(") (binary_expression "(int)puVar10 + 0x13" (cast_expression "(int)puVar10" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar10")) (+ "+") (number_literal "0x13")) () ")")))) (== "==") (char_literal "'.'" (' "'") (character ".") (' "'"))) () ")"))) () ")")) (&& "&&") (parenthesized_expression "((*(char *)(puVar10 + 5) == '\0' || ((puVar10[5] & 0xffff0000) == 0x2e000000)))" (( "(") (parenthesized_expression "(*(char *)(puVar10 + 5) == '\0' || ((puVar10[5] & 0xffff0000) == 0x2e000000))" (( "(") (binary_expression "*(char *)(puVar10 + 5) == '\0' || ((puVar10[5] & 0xffff0000) == 0x2e000000)" (binary_expression "*(char *)(puVar10 + 5) == '\0'" (pointer_expression "*(char *)(puVar10 + 5)" (* "*") (cast_expression "(char *)(puVar10 + 5)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar10 + 5)" (( "(") (binary_expression "puVar10 + 5" (identifier "puVar10") (+ "+") (number_literal "5")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) (|| "||") (parenthesized_expression "((puVar10[5] & 0xffff0000) == 0x2e000000)" (( "(") (binary_expression "(puVar10[5] & 0xffff0000) == 0x2e000000" (parenthesized_expression "(puVar10[5] & 0xffff0000)" (( "(") (binary_expression "puVar10[5] & 0xffff0000" (subscript_expression "puVar10[5]" (identifier "puVar10") ([ "[") (number_literal "5") (] "]")) (& "&") (number_literal "0xffff0000")) () ")")) (== "==") (number_literal "0x2e000000")) () ")"))) () ")")) () ")"))) () ")")) (; ";")) (expression_statement "uVar11 = (**(code **)(puVar22 + 0x17240))((int)puVar10 + 0x13);" (assignment_expression "uVar11 = (**(code **)(puVar22 + 0x17240))((int)puVar10 + 0x13)" (identifier "uVar11") (= "=") (call_expression "(**(code **)(puVar22 + 0x17240))((int)puVar10 + 0x13)" (parenthesized_expression "(**(code **)(puVar22 + 0x17240))" (( "(") (pointer_expression "**(code **)(puVar22 + 0x17240)" (* "*") (pointer_expression "*(code **)(puVar22 + 0x17240)" (* "*") (cast_expression "(code **)(puVar22 + 0x17240)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar22 + 0x17240)" (( "(") (binary_expression "puVar22 + 0x17240" (identifier "puVar22") (+ "+") (number_literal "0x17240")) () ")"))))) () ")")) (argument_list "((int)puVar10 + 0x13)" (( "(") (binary_expression "(int)puVar10 + 0x13" (cast_expression "(int)puVar10" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar10")) (+ "+") (number_literal "0x13")) () ")")))) (; ";")) (expression_statement "iVar12 = (*(code *)(iVar7 + -0x4b14))(param_1,(int)puVar10 + 0x13,uVar11);" (assignment_expression "iVar12 = (*(code *)(iVar7 + -0x4b14))(param_1,(int)puVar10 + 0x13,uVar11)" (identifier "iVar12") (= "=") (call_expression "(*(code *)(iVar7 + -0x4b14))(param_1,(int)puVar10 + 0x13,uVar11)" (parenthesized_expression "(*(code *)(iVar7 + -0x4b14))" (( "(") (pointer_expression "*(code *)(iVar7 + -0x4b14)" (* "*") (cast_expression "(code *)(iVar7 + -0x4b14)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar7 + -0x4b14)" (( "(") (binary_expression "iVar7 + -0x4b14" (identifier "iVar7") (+ "+") (number_literal "-0x4b14")) () ")")))) () ")")) (argument_list "(param_1,(int)puVar10 + 0x13,uVar11)" (( "(") (identifier "param_1") (, ",") (binary_expression "(int)puVar10 + 0x13" (cast_expression "(int)puVar10" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar10")) (+ "+") (number_literal "0x13")) (, ",") (identifier "uVar11") () ")")))) (; ";")) (if_statement "if (iVar12 == 0) {\nLAB_0001c794:\n      iVar5 = *piVar16;\n      (**(code **)(puVar22 + 0x172c8))(iVar12);\n      FUN_0001b6fc(iStack_a0);\n      (**(code **)(puVar22 + 0x17194))(*(undefined4 *)(iVar18 + 0xc));\n      *(undefined4 *)(iVar18 + 0xc) = 0;\n      *(undefined2 *)(iVar18 + 0x3c) = 7;\n      param_1[0xc] = param_1[0xc] | 0x4000;\n      *piVar16 = iVar5;\n      return 0;\n    }" (if "if") (parenthesized_expression "(iVar12 == 0)" (( "(") (binary_expression "iVar12 == 0" (identifier "iVar12") (== "==") (number_literal "0")) () ")")) (compound_statement "{\nLAB_0001c794:\n      iVar5 = *piVar16;\n      (**(code **)(puVar22 + 0x172c8))(iVar12);\n      FUN_0001b6fc(iStack_a0);\n      (**(code **)(puVar22 + 0x17194))(*(undefined4 *)(iVar18 + 0xc));\n      *(undefined4 *)(iVar18 + 0xc) = 0;\n      *(undefined2 *)(iVar18 + 0x3c) = 7;\n      param_1[0xc] = param_1[0xc] | 0x4000;\n      *piVar16 = iVar5;\n      return 0;\n    }" ({ "{") (labeled_statement "LAB_0001c794:\n      iVar5 = *piVar16;" (statement_identifier "LAB_0001c794") (: ":") (expression_statement "iVar5 = *piVar16;" (assignment_expression "iVar5 = *piVar16" (identifier "iVar5") (= "=") (pointer_expression "*piVar16" (* "*") (identifier "piVar16"))) (; ";"))) (expression_statement "(**(code **)(puVar22 + 0x172c8))(iVar12);" (call_expression "(**(code **)(puVar22 + 0x172c8))(iVar12)" (parenthesized_expression "(**(code **)(puVar22 + 0x172c8))" (( "(") (pointer_expression "**(code **)(puVar22 + 0x172c8)" (* "*") (pointer_expression "*(code **)(puVar22 + 0x172c8)" (* "*") (cast_expression "(code **)(puVar22 + 0x172c8)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar22 + 0x172c8)" (( "(") (binary_expression "puVar22 + 0x172c8" (identifier "puVar22") (+ "+") (number_literal "0x172c8")) () ")"))))) () ")")) (argument_list "(iVar12)" (( "(") (identifier "iVar12") () ")"))) (; ";")) (expression_statement "FUN_0001b6fc(iStack_a0);" (call_expression "FUN_0001b6fc(iStack_a0)" (identifier "FUN_0001b6fc") (argument_list "(iStack_a0)" (( "(") (identifier "iStack_a0") () ")"))) (; ";")) (expression_statement "(**(code **)(puVar22 + 0x17194))(*(undefined4 *)(iVar18 + 0xc));" (call_expression "(**(code **)(puVar22 + 0x17194))(*(undefined4 *)(iVar18 + 0xc))" (parenthesized_expression "(**(code **)(puVar22 + 0x17194))" (( "(") (pointer_expression "**(code **)(puVar22 + 0x17194)" (* "*") (pointer_expression "*(code **)(puVar22 + 0x17194)" (* "*") (cast_expression "(code **)(puVar22 + 0x17194)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar22 + 0x17194)" (( "(") (binary_expression "puVar22 + 0x17194" (identifier "puVar22") (+ "+") (number_literal "0x17194")) () ")"))))) () ")")) (argument_list "(*(undefined4 *)(iVar18 + 0xc))" (( "(") (pointer_expression "*(undefined4 *)(iVar18 + 0xc)" (* "*") (cast_expression "(undefined4 *)(iVar18 + 0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar18 + 0xc)" (( "(") (binary_expression "iVar18 + 0xc" (identifier "iVar18") (+ "+") (number_literal "0xc")) () ")")))) () ")"))) (; ";")) (expression_statement "*(undefined4 *)(iVar18 + 0xc) = 0;" (assignment_expression "*(undefined4 *)(iVar18 + 0xc) = 0" (pointer_expression "*(undefined4 *)(iVar18 + 0xc)" (* "*") (cast_expression "(undefined4 *)(iVar18 + 0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar18 + 0xc)" (( "(") (binary_expression "iVar18 + 0xc" (identifier "iVar18") (+ "+") (number_literal "0xc")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined2 *)(iVar18 + 0x3c) = 7;" (assignment_expression "*(undefined2 *)(iVar18 + 0x3c) = 7" (pointer_expression "*(undefined2 *)(iVar18 + 0x3c)" (* "*") (cast_expression "(undefined2 *)(iVar18 + 0x3c)" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar18 + 0x3c)" (( "(") (binary_expression "iVar18 + 0x3c" (identifier "iVar18") (+ "+") (number_literal "0x3c")) () ")")))) (= "=") (number_literal "7")) (; ";")) (expression_statement "param_1[0xc] = param_1[0xc] | 0x4000;" (assignment_expression "param_1[0xc] = param_1[0xc] | 0x4000" (subscript_expression "param_1[0xc]" (identifier "param_1") ([ "[") (number_literal "0xc") (] "]")) (= "=") (binary_expression "param_1[0xc] | 0x4000" (subscript_expression "param_1[0xc]" (identifier "param_1") ([ "[") (number_literal "0xc") (] "]")) (| "|") (number_literal "0x4000"))) (; ";")) (expression_statement "*piVar16 = iVar5;" (assignment_expression "*piVar16 = iVar5" (pointer_expression "*piVar16" (* "*") (identifier "piVar16")) (= "=") (identifier "iVar5")) (; ";")) (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (if_statement "if (uVar23 <= uVar11) {\n      iVar24 = param_1[6];\n      iVar14 = FUN_0001b0cc(param_1,iVar17 + 2 + uVar11);\n      if (iVar14 == 0) goto LAB_0001c794;\n      if ((param_1[6] != iVar24) && (iStack_8c = iVar14, (param_1[0xc] & 4U) != 0)) {\n        puStack_90 = (undefined1 *)(param_1[6] + uVar20);\n      }\n      uVar23 = param_1[9] - uVar20;\n    }" (if "if") (parenthesized_expression "(uVar23 <= uVar11)" (( "(") (binary_expression "uVar23 <= uVar11" (identifier "uVar23") (<= "<=") (identifier "uVar11")) () ")")) (compound_statement "{\n      iVar24 = param_1[6];\n      iVar14 = FUN_0001b0cc(param_1,iVar17 + 2 + uVar11);\n      if (iVar14 == 0) goto LAB_0001c794;\n      if ((param_1[6] != iVar24) && (iStack_8c = iVar14, (param_1[0xc] & 4U) != 0)) {\n        puStack_90 = (undefined1 *)(param_1[6] + uVar20);\n      }\n      uVar23 = param_1[9] - uVar20;\n    }" ({ "{") (expression_statement "iVar24 = param_1[6];" (assignment_expression "iVar24 = param_1[6]" (identifier "iVar24") (= "=") (subscript_expression "param_1[6]" (identifier "param_1") ([ "[") (number_literal "6") (] "]"))) (; ";")) (expression_statement "iVar14 = FUN_0001b0cc(param_1,iVar17 + 2 + uVar11);" (assignment_expression "iVar14 = FUN_0001b0cc(param_1,iVar17 + 2 + uVar11)" (identifier "iVar14") (= "=") (call_expression "FUN_0001b0cc(param_1,iVar17 + 2 + uVar11)" (identifier "FUN_0001b0cc") (argument_list "(param_1,iVar17 + 2 + uVar11)" (( "(") (identifier "param_1") (, ",") (binary_expression "iVar17 + 2 + uVar11" (binary_expression "iVar17 + 2" (identifier "iVar17") (+ "+") (number_literal "2")) (+ "+") (identifier "uVar11")) () ")")))) (; ";")) (if_statement "if (iVar14 == 0) goto LAB_0001c794;" (if "if") (parenthesized_expression "(iVar14 == 0)" (( "(") (binary_expression "iVar14 == 0" (identifier "iVar14") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_0001c794;" (goto "goto") (statement_identifier "LAB_0001c794") (; ";"))) (if_statement "if ((param_1[6] != iVar24) && (iStack_8c = iVar14, (param_1[0xc] & 4U) != 0)) {\n        puStack_90 = (undefined1 *)(param_1[6] + uVar20);\n      }" (if "if") (parenthesized_expression "((param_1[6] != iVar24) && (iStack_8c = iVar14, (param_1[0xc] & 4U) != 0))" (( "(") (binary_expression "(param_1[6] != iVar24) && (iStack_8c = iVar14, (param_1[0xc] & 4U) != 0)" (parenthesized_expression "(param_1[6] != iVar24)" (( "(") (binary_expression "param_1[6] != iVar24" (subscript_expression "param_1[6]" (identifier "param_1") ([ "[") (number_literal "6") (] "]")) (!= "!=") (identifier "iVar24")) () ")")) (&& "&&") (parenthesized_expression "(iStack_8c = iVar14, (param_1[0xc] & 4U) != 0)" (( "(") (comma_expression "iStack_8c = iVar14, (param_1[0xc] & 4U) != 0" (assignment_expression "iStack_8c = iVar14" (identifier "iStack_8c") (= "=") (identifier "iVar14")) (, ",") (binary_expression "(param_1[0xc] & 4U) != 0" (parenthesized_expression "(param_1[0xc] & 4U)" (( "(") (binary_expression "param_1[0xc] & 4U" (subscript_expression "param_1[0xc]" (identifier "param_1") ([ "[") (number_literal "0xc") (] "]")) (& "&") (number_literal "4U")) () ")")) (!= "!=") (number_literal "0"))) () ")"))) () ")")) (compound_statement "{\n        puStack_90 = (undefined1 *)(param_1[6] + uVar20);\n      }" ({ "{") (expression_statement "puStack_90 = (undefined1 *)(param_1[6] + uVar20);" (assignment_expression "puStack_90 = (undefined1 *)(param_1[6] + uVar20)" (identifier "puStack_90") (= "=") (cast_expression "(undefined1 *)(param_1[6] + uVar20)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1[6] + uVar20)" (( "(") (binary_expression "param_1[6] + uVar20" (subscript_expression "param_1[6]" (identifier "param_1") ([ "[") (number_literal "6") (] "]")) (+ "+") (identifier "uVar20")) () ")")))) (; ";")) (} "}"))) (expression_statement "uVar23 = param_1[9] - uVar20;" (assignment_expression "uVar23 = param_1[9] - uVar20" (identifier "uVar23") (= "=") (binary_expression "param_1[9] - uVar20" (subscript_expression "param_1[9]" (identifier "param_1") ([ "[") (number_literal "9") (] "]")) (- "-") (identifier "uVar20"))) (; ";")) (} "}"))) (if_statement "if (uVar20 + uVar11 < uVar20) {\n      (**(code **)(puVar22 + 0x172c8))(iVar12);\n      FUN_0001b6fc(iStack_a0);\n      (**(code **)(puVar22 + 0x17194))(*(undefined4 *)(iVar18 + 0xc));\n      *(undefined4 *)(iVar18 + 0xc) = 0;\n      *(undefined2 *)(iVar18 + 0x3c) = 7;\n      param_1[0xc] = param_1[0xc] | 0x4000;\n      *piVar16 = 0x4e;\n      return 0;\n    }" (if "if") (parenthesized_expression "(uVar20 + uVar11 < uVar20)" (( "(") (binary_expression "uVar20 + uVar11 < uVar20" (binary_expression "uVar20 + uVar11" (identifier "uVar20") (+ "+") (identifier "uVar11")) (< "<") (identifier "uVar20")) () ")")) (compound_statement "{\n      (**(code **)(puVar22 + 0x172c8))(iVar12);\n      FUN_0001b6fc(iStack_a0);\n      (**(code **)(puVar22 + 0x17194))(*(undefined4 *)(iVar18 + 0xc));\n      *(undefined4 *)(iVar18 + 0xc) = 0;\n      *(undefined2 *)(iVar18 + 0x3c) = 7;\n      param_1[0xc] = param_1[0xc] | 0x4000;\n      *piVar16 = 0x4e;\n      return 0;\n    }" ({ "{") (expression_statement "(**(code **)(puVar22 + 0x172c8))(iVar12);" (call_expression "(**(code **)(puVar22 + 0x172c8))(iVar12)" (parenthesized_expression "(**(code **)(puVar22 + 0x172c8))" (( "(") (pointer_expression "**(code **)(puVar22 + 0x172c8)" (* "*") (pointer_expression "*(code **)(puVar22 + 0x172c8)" (* "*") (cast_expression "(code **)(puVar22 + 0x172c8)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar22 + 0x172c8)" (( "(") (binary_expression "puVar22 + 0x172c8" (identifier "puVar22") (+ "+") (number_literal "0x172c8")) () ")"))))) () ")")) (argument_list "(iVar12)" (( "(") (identifier "iVar12") () ")"))) (; ";")) (expression_statement "FUN_0001b6fc(iStack_a0);" (call_expression "FUN_0001b6fc(iStack_a0)" (identifier "FUN_0001b6fc") (argument_list "(iStack_a0)" (( "(") (identifier "iStack_a0") () ")"))) (; ";")) (expression_statement "(**(code **)(puVar22 + 0x17194))(*(undefined4 *)(iVar18 + 0xc));" (call_expression "(**(code **)(puVar22 + 0x17194))(*(undefined4 *)(iVar18 + 0xc))" (parenthesized_expression "(**(code **)(puVar22 + 0x17194))" (( "(") (pointer_expression "**(code **)(puVar22 + 0x17194)" (* "*") (pointer_expression "*(code **)(puVar22 + 0x17194)" (* "*") (cast_expression "(code **)(puVar22 + 0x17194)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar22 + 0x17194)" (( "(") (binary_expression "puVar22 + 0x17194" (identifier "puVar22") (+ "+") (number_literal "0x17194")) () ")"))))) () ")")) (argument_list "(*(undefined4 *)(iVar18 + 0xc))" (( "(") (pointer_expression "*(undefined4 *)(iVar18 + 0xc)" (* "*") (cast_expression "(undefined4 *)(iVar18 + 0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar18 + 0xc)" (( "(") (binary_expression "iVar18 + 0xc" (identifier "iVar18") (+ "+") (number_literal "0xc")) () ")")))) () ")"))) (; ";")) (expression_statement "*(undefined4 *)(iVar18 + 0xc) = 0;" (assignment_expression "*(undefined4 *)(iVar18 + 0xc) = 0" (pointer_expression "*(undefined4 *)(iVar18 + 0xc)" (* "*") (cast_expression "(undefined4 *)(iVar18 + 0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar18 + 0xc)" (( "(") (binary_expression "iVar18 + 0xc" (identifier "iVar18") (+ "+") (number_literal "0xc")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined2 *)(iVar18 + 0x3c) = 7;" (assignment_expression "*(undefined2 *)(iVar18 + 0x3c) = 7" (pointer_expression "*(undefined2 *)(iVar18 + 0x3c)" (* "*") (cast_expression "(undefined2 *)(iVar18 + 0x3c)" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar18 + 0x3c)" (( "(") (binary_expression "iVar18 + 0x3c" (identifier "iVar18") (+ "+") (number_literal "0x3c")) () ")")))) (= "=") (number_literal "7")) (; ";")) (expression_statement "param_1[0xc] = param_1[0xc] | 0x4000;" (assignment_expression "param_1[0xc] = param_1[0xc] | 0x4000" (subscript_expression "param_1[0xc]" (identifier "param_1") ([ "[") (number_literal "0xc") (] "]")) (= "=") (binary_expression "param_1[0xc] | 0x4000" (subscript_expression "param_1[0xc]" (identifier "param_1") ([ "[") (number_literal "0xc") (] "]")) (| "|") (number_literal "0x4000"))) (; ";")) (expression_statement "*piVar16 = 0x4e;" (assignment_expression "*piVar16 = 0x4e" (pointer_expression "*piVar16" (* "*") (identifier "piVar16")) (= "=") (number_literal "0x4e")) (; ";")) (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (expression_statement "*(int *)(iVar12 + 0x30) = iVar6 + 1;" (assignment_expression "*(int *)(iVar12 + 0x30) = iVar6 + 1" (pointer_expression "*(int *)(iVar12 + 0x30)" (* "*") (cast_expression "(int *)(iVar12 + 0x30)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar12 + 0x30)" (( "(") (binary_expression "iVar12 + 0x30" (identifier "iVar12") (+ "+") (number_literal "0x30")) () ")")))) (= "=") (binary_expression "iVar6 + 1" (identifier "iVar6") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*(int *)(iVar12 + 4) = *param_1;" (assignment_expression "*(int *)(iVar12 + 4) = *param_1" (pointer_expression "*(int *)(iVar12 + 4)" (* "*") (cast_expression "(int *)(iVar12 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar12 + 4)" (( "(") (binary_expression "iVar12 + 4" (identifier "iVar12") (+ "+") (number_literal "4")) () ")")))) (= "=") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (; ";")) (expression_statement "*(uint *)(iVar12 + 0x28) = uVar20 + uVar11;" (assignment_expression "*(uint *)(iVar12 + 0x28) = uVar20 + uVar11" (pointer_expression "*(uint *)(iVar12 + 0x28)" (* "*") (cast_expression "(uint *)(iVar12 + 0x28)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar12 + 0x28)" (( "(") (binary_expression "iVar12 + 0x28" (identifier "iVar12") (+ "+") (number_literal "0x28")) () ")")))) (= "=") (binary_expression "uVar20 + uVar11" (identifier "uVar20") (+ "+") (identifier "uVar11"))) (; ";")) (expression_statement "uVar13 = *puVar10;" (assignment_expression "uVar13 = *puVar10" (identifier "uVar13") (= "=") (pointer_expression "*puVar10" (* "*") (identifier "puVar10"))) (; ";")) (expression_statement "*(undefined4 *)(iVar12 + 0x5c) = puVar10[1];" (assignment_expression "*(undefined4 *)(iVar12 + 0x5c) = puVar10[1]" (pointer_expression "*(undefined4 *)(iVar12 + 0x5c)" (* "*") (cast_expression "(undefined4 *)(iVar12 + 0x5c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar12 + 0x5c)" (( "(") (binary_expression "iVar12 + 0x5c" (identifier "iVar12") (+ "+") (number_literal "0x5c")) () ")")))) (= "=") (subscript_expression "puVar10[1]" (identifier "puVar10") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "*(undefined4 *)(iVar12 + 0x58) = uVar13;" (assignment_expression "*(undefined4 *)(iVar12 + 0x58) = uVar13" (pointer_expression "*(undefined4 *)(iVar12 + 0x58)" (* "*") (cast_expression "(undefined4 *)(iVar12 + 0x58)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar12 + 0x58)" (( "(") (binary_expression "iVar12 + 0x58" (identifier "iVar12") (+ "+") (number_literal "0x58")) () ")")))) (= "=") (identifier "uVar13")) (; ";")) (if_statement "if ((param_1[0xc] & 4U) == 0) {\n      *(int *)(iVar12 + 0x18) = iVar12 + 0xe8;\n      iVar14 = param_1[0xb];\n    }\n    else {\n      *(undefined4 *)(iVar12 + 0x18) = *(undefined4 *)(iVar12 + 0x1c);\n      (**(code **)(puVar22 + 0x172cc))(puStack_90,iVar12 + 0xe8,*(int *)(iVar12 + 0x34) + 1);\n      iVar14 = param_1[0xb];\n    }" (if "if") (parenthesized_expression "((param_1[0xc] & 4U) == 0)" (( "(") (binary_expression "(param_1[0xc] & 4U) == 0" (parenthesized_expression "(param_1[0xc] & 4U)" (( "(") (binary_expression "param_1[0xc] & 4U" (subscript_expression "param_1[0xc]" (identifier "param_1") ([ "[") (number_literal "0xc") (] "]")) (& "&") (number_literal "4U")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      *(int *)(iVar12 + 0x18) = iVar12 + 0xe8;\n      iVar14 = param_1[0xb];\n    }" ({ "{") (expression_statement "*(int *)(iVar12 + 0x18) = iVar12 + 0xe8;" (assignment_expression "*(int *)(iVar12 + 0x18) = iVar12 + 0xe8" (pointer_expression "*(int *)(iVar12 + 0x18)" (* "*") (cast_expression "(int *)(iVar12 + 0x18)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar12 + 0x18)" (( "(") (binary_expression "iVar12 + 0x18" (identifier "iVar12") (+ "+") (number_literal "0x18")) () ")")))) (= "=") (binary_expression "iVar12 + 0xe8" (identifier "iVar12") (+ "+") (number_literal "0xe8"))) (; ";")) (expression_statement "iVar14 = param_1[0xb];" (assignment_expression "iVar14 = param_1[0xb]" (identifier "iVar14") (= "=") (subscript_expression "param_1[0xb]" (identifier "param_1") ([ "[") (number_literal "0xb") (] "]"))) (; ";")) (} "}")) (else_clause "else {\n      *(undefined4 *)(iVar12 + 0x18) = *(undefined4 *)(iVar12 + 0x1c);\n      (**(code **)(puVar22 + 0x172cc))(puStack_90,iVar12 + 0xe8,*(int *)(iVar12 + 0x34) + 1);\n      iVar14 = param_1[0xb];\n    }" (else "else") (compound_statement "{\n      *(undefined4 *)(iVar12 + 0x18) = *(undefined4 *)(iVar12 + 0x1c);\n      (**(code **)(puVar22 + 0x172cc))(puStack_90,iVar12 + 0xe8,*(int *)(iVar12 + 0x34) + 1);\n      iVar14 = param_1[0xb];\n    }" ({ "{") (expression_statement "*(undefined4 *)(iVar12 + 0x18) = *(undefined4 *)(iVar12 + 0x1c);" (assignment_expression "*(undefined4 *)(iVar12 + 0x18) = *(undefined4 *)(iVar12 + 0x1c)" (pointer_expression "*(undefined4 *)(iVar12 + 0x18)" (* "*") (cast_expression "(undefined4 *)(iVar12 + 0x18)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar12 + 0x18)" (( "(") (binary_expression "iVar12 + 0x18" (identifier "iVar12") (+ "+") (number_literal "0x18")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(iVar12 + 0x1c)" (* "*") (cast_expression "(undefined4 *)(iVar12 + 0x1c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar12 + 0x1c)" (( "(") (binary_expression "iVar12 + 0x1c" (identifier "iVar12") (+ "+") (number_literal "0x1c")) () ")"))))) (; ";")) (expression_statement "(**(code **)(puVar22 + 0x172cc))(puStack_90,iVar12 + 0xe8,*(int *)(iVar12 + 0x34) + 1);" (call_expression "(**(code **)(puVar22 + 0x172cc))(puStack_90,iVar12 + 0xe8,*(int *)(iVar12 + 0x34) + 1)" (parenthesized_expression "(**(code **)(puVar22 + 0x172cc))" (( "(") (pointer_expression "**(code **)(puVar22 + 0x172cc)" (* "*") (pointer_expression "*(code **)(puVar22 + 0x172cc)" (* "*") (cast_expression "(code **)(puVar22 + 0x172cc)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar22 + 0x172cc)" (( "(") (binary_expression "puVar22 + 0x172cc" (identifier "puVar22") (+ "+") (number_literal "0x172cc")) () ")"))))) () ")")) (argument_list "(puStack_90,iVar12 + 0xe8,*(int *)(iVar12 + 0x34) + 1)" (( "(") (identifier "puStack_90") (, ",") (binary_expression "iVar12 + 0xe8" (identifier "iVar12") (+ "+") (number_literal "0xe8")) (, ",") (binary_expression "*(int *)(iVar12 + 0x34) + 1" (pointer_expression "*(int *)(iVar12 + 0x34)" (* "*") (cast_expression "(int *)(iVar12 + 0x34)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar12 + 0x34)" (( "(") (binary_expression "iVar12 + 0x34" (identifier "iVar12") (+ "+") (number_literal "0x34")) () ")")))) (+ "+") (number_literal "1")) () ")"))) (; ";")) (expression_statement "iVar14 = param_1[0xb];" (assignment_expression "iVar14 = param_1[0xb]" (identifier "iVar14") (= "=") (subscript_expression "param_1[0xb]" (identifier "param_1") ([ "[") (number_literal "0xb") (] "]"))) (; ";")) (} "}")))) (if_statement "if ((iVar14 == 0) || ((param_1[0xc] & 0x400U) != 0)) {\n      if (((param_1[0xc] & 0x18U) == 0x18) && ((*(byte *)((int)puVar10 + 0x12) & 0xfb) != 0)) {\n        *(undefined2 *)(iVar12 + 0x3c) = 0xb;\n        bVar3 = true;\n        if (*(byte *)((int)puVar10 + 0x12) < 0xd) {\n                    \n                    \n          iVar5 = (*(code *)(puVar22 +\n                            *(int *)(iVar9 + 0x2d30 + (uint)*(byte *)((int)puVar10 + 0x12) * 4) +\n                            0x1ef9c))();\n          return iVar5;\n        }\n      }\n      else {\n        *(undefined2 *)(iVar12 + 0x3c) = 0xb;\n        bVar3 = false;\n        if (*(byte *)((int)puVar10 + 0x12) < 0xd) {\n                    \n                    \n          iVar5 = (*(code *)(puVar22 +\n                            *(int *)(*(int *)(puVar22 + 0x16fd4) + 0x2d64 +\n                                    (uint)*(byte *)((int)puVar10 + 0x12) * 4) + 0x1ef9c))();\n          return iVar5;\n        }\n      }\n      *(undefined4 *)(iVar12 + 0x60) = 0;\n      if (bVar3) {\n        uVar13 = 1;\n      }\n      else {\n        uVar13 = 2;\n      }\n      *(undefined4 *)(iVar12 + 0x84) = uVar13;\n      *(undefined4 *)(iVar12 + 0x80) = 0;\n    }\n    else {\n      uVar15 = FUN_0001b18c(param_1,iVar12,0);\n      *(undefined2 *)(iVar12 + 0x3c) = uVar15;\n    }" (if "if") (parenthesized_expression "((iVar14 == 0) || ((param_1[0xc] & 0x400U) != 0))" (( "(") (binary_expression "(iVar14 == 0) || ((param_1[0xc] & 0x400U) != 0)" (parenthesized_expression "(iVar14 == 0)" (( "(") (binary_expression "iVar14 == 0" (identifier "iVar14") (== "==") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "((param_1[0xc] & 0x400U) != 0)" (( "(") (binary_expression "(param_1[0xc] & 0x400U) != 0" (parenthesized_expression "(param_1[0xc] & 0x400U)" (( "(") (binary_expression "param_1[0xc] & 0x400U" (subscript_expression "param_1[0xc]" (identifier "param_1") ([ "[") (number_literal "0xc") (] "]")) (& "&") (number_literal "0x400U")) () ")")) (!= "!=") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n      if (((param_1[0xc] & 0x18U) == 0x18) && ((*(byte *)((int)puVar10 + 0x12) & 0xfb) != 0)) {\n        *(undefined2 *)(iVar12 + 0x3c) = 0xb;\n        bVar3 = true;\n        if (*(byte *)((int)puVar10 + 0x12) < 0xd) {\n                    \n                    \n          iVar5 = (*(code *)(puVar22 +\n                            *(int *)(iVar9 + 0x2d30 + (uint)*(byte *)((int)puVar10 + 0x12) * 4) +\n                            0x1ef9c))();\n          return iVar5;\n        }\n      }\n      else {\n        *(undefined2 *)(iVar12 + 0x3c) = 0xb;\n        bVar3 = false;\n        if (*(byte *)((int)puVar10 + 0x12) < 0xd) {\n                    \n                    \n          iVar5 = (*(code *)(puVar22 +\n                            *(int *)(*(int *)(puVar22 + 0x16fd4) + 0x2d64 +\n                                    (uint)*(byte *)((int)puVar10 + 0x12) * 4) + 0x1ef9c))();\n          return iVar5;\n        }\n      }\n      *(undefined4 *)(iVar12 + 0x60) = 0;\n      if (bVar3) {\n        uVar13 = 1;\n      }\n      else {\n        uVar13 = 2;\n      }\n      *(undefined4 *)(iVar12 + 0x84) = uVar13;\n      *(undefined4 *)(iVar12 + 0x80) = 0;\n    }" ({ "{") (if_statement "if (((param_1[0xc] & 0x18U) == 0x18) && ((*(byte *)((int)puVar10 + 0x12) & 0xfb) != 0)) {\n        *(undefined2 *)(iVar12 + 0x3c) = 0xb;\n        bVar3 = true;\n        if (*(byte *)((int)puVar10 + 0x12) < 0xd) {\n                    \n                    \n          iVar5 = (*(code *)(puVar22 +\n                            *(int *)(iVar9 + 0x2d30 + (uint)*(byte *)((int)puVar10 + 0x12) * 4) +\n                            0x1ef9c))();\n          return iVar5;\n        }\n      }\n      else {\n        *(undefined2 *)(iVar12 + 0x3c) = 0xb;\n        bVar3 = false;\n        if (*(byte *)((int)puVar10 + 0x12) < 0xd) {\n                    \n                    \n          iVar5 = (*(code *)(puVar22 +\n                            *(int *)(*(int *)(puVar22 + 0x16fd4) + 0x2d64 +\n                                    (uint)*(byte *)((int)puVar10 + 0x12) * 4) + 0x1ef9c))();\n          return iVar5;\n        }\n      }" (if "if") (parenthesized_expression "(((param_1[0xc] & 0x18U) == 0x18) && ((*(byte *)((int)puVar10 + 0x12) & 0xfb) != 0))" (( "(") (binary_expression "((param_1[0xc] & 0x18U) == 0x18) && ((*(byte *)((int)puVar10 + 0x12) & 0xfb) != 0)" (parenthesized_expression "((param_1[0xc] & 0x18U) == 0x18)" (( "(") (binary_expression "(param_1[0xc] & 0x18U) == 0x18" (parenthesized_expression "(param_1[0xc] & 0x18U)" (( "(") (binary_expression "param_1[0xc] & 0x18U" (subscript_expression "param_1[0xc]" (identifier "param_1") ([ "[") (number_literal "0xc") (] "]")) (& "&") (number_literal "0x18U")) () ")")) (== "==") (number_literal "0x18")) () ")")) (&& "&&") (parenthesized_expression "((*(byte *)((int)puVar10 + 0x12) & 0xfb) != 0)" (( "(") (binary_expression "(*(byte *)((int)puVar10 + 0x12) & 0xfb) != 0" (parenthesized_expression "(*(byte *)((int)puVar10 + 0x12) & 0xfb)" (( "(") (binary_expression "*(byte *)((int)puVar10 + 0x12) & 0xfb" (pointer_expression "*(byte *)((int)puVar10 + 0x12)" (* "*") (cast_expression "(byte *)((int)puVar10 + 0x12)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar10 + 0x12)" (( "(") (binary_expression "(int)puVar10 + 0x12" (cast_expression "(int)puVar10" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar10")) (+ "+") (number_literal "0x12")) () ")")))) (& "&") (number_literal "0xfb")) () ")")) (!= "!=") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n        *(undefined2 *)(iVar12 + 0x3c) = 0xb;\n        bVar3 = true;\n        if (*(byte *)((int)puVar10 + 0x12) < 0xd) {\n                    \n                    \n          iVar5 = (*(code *)(puVar22 +\n                            *(int *)(iVar9 + 0x2d30 + (uint)*(byte *)((int)puVar10 + 0x12) * 4) +\n                            0x1ef9c))();\n          return iVar5;\n        }\n      }" ({ "{") (expression_statement "*(undefined2 *)(iVar12 + 0x3c) = 0xb;" (assignment_expression "*(undefined2 *)(iVar12 + 0x3c) = 0xb" (pointer_expression "*(undefined2 *)(iVar12 + 0x3c)" (* "*") (cast_expression "(undefined2 *)(iVar12 + 0x3c)" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar12 + 0x3c)" (( "(") (binary_expression "iVar12 + 0x3c" (identifier "iVar12") (+ "+") (number_literal "0x3c")) () ")")))) (= "=") (number_literal "0xb")) (; ";")) (expression_statement "bVar3 = true;" (assignment_expression "bVar3 = true" (identifier "bVar3") (= "=") (true "true")) (; ";")) (if_statement "if (*(byte *)((int)puVar10 + 0x12) < 0xd) {\n                    \n                    \n          iVar5 = (*(code *)(puVar22 +\n                            *(int *)(iVar9 + 0x2d30 + (uint)*(byte *)((int)puVar10 + 0x12) * 4) +\n                            0x1ef9c))();\n          return iVar5;\n        }" (if "if") (parenthesized_expression "(*(byte *)((int)puVar10 + 0x12) < 0xd)" (( "(") (binary_expression "*(byte *)((int)puVar10 + 0x12) < 0xd" (pointer_expression "*(byte *)((int)puVar10 + 0x12)" (* "*") (cast_expression "(byte *)((int)puVar10 + 0x12)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar10 + 0x12)" (( "(") (binary_expression "(int)puVar10 + 0x12" (cast_expression "(int)puVar10" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar10")) (+ "+") (number_literal "0x12")) () ")")))) (< "<") (number_literal "0xd")) () ")")) (compound_statement "{\n                    \n                    \n          iVar5 = (*(code *)(puVar22 +\n                            *(int *)(iVar9 + 0x2d30 + (uint)*(byte *)((int)puVar10 + 0x12) * 4) +\n                            0x1ef9c))();\n          return iVar5;\n        }" ({ "{") (expression_statement "iVar5 = (*(code *)(puVar22 +\n                            *(int *)(iVar9 + 0x2d30 + (uint)*(byte *)((int)puVar10 + 0x12) * 4) +\n                            0x1ef9c))();" (assignment_expression "iVar5 = (*(code *)(puVar22 +\n                            *(int *)(iVar9 + 0x2d30 + (uint)*(byte *)((int)puVar10 + 0x12) * 4) +\n                            0x1ef9c))()" (identifier "iVar5") (= "=") (call_expression "(*(code *)(puVar22 +\n                            *(int *)(iVar9 + 0x2d30 + (uint)*(byte *)((int)puVar10 + 0x12) * 4) +\n                            0x1ef9c))()" (parenthesized_expression "(*(code *)(puVar22 +\n                            *(int *)(iVar9 + 0x2d30 + (uint)*(byte *)((int)puVar10 + 0x12) * 4) +\n                            0x1ef9c))" (( "(") (pointer_expression "*(code *)(puVar22 +\n                            *(int *)(iVar9 + 0x2d30 + (uint)*(byte *)((int)puVar10 + 0x12) * 4) +\n                            0x1ef9c)" (* "*") (cast_expression "(code *)(puVar22 +\n                            *(int *)(iVar9 + 0x2d30 + (uint)*(byte *)((int)puVar10 + 0x12) * 4) +\n                            0x1ef9c)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar22 +\n                            *(int *)(iVar9 + 0x2d30 + (uint)*(byte *)((int)puVar10 + 0x12) * 4) +\n                            0x1ef9c)" (( "(") (binary_expression "puVar22 +\n                            *(int *)(iVar9 + 0x2d30 + (uint)*(byte *)((int)puVar10 + 0x12) * 4) +\n                            0x1ef9c" (binary_expression "puVar22 +\n                            *(int *)(iVar9 + 0x2d30 + (uint)*(byte *)((int)puVar10 + 0x12) * 4)" (identifier "puVar22") (+ "+") (pointer_expression "*(int *)(iVar9 + 0x2d30 + (uint)*(byte *)((int)puVar10 + 0x12) * 4)" (* "*") (cast_expression "(int *)(iVar9 + 0x2d30 + (uint)*(byte *)((int)puVar10 + 0x12) * 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar9 + 0x2d30 + (uint)*(byte *)((int)puVar10 + 0x12) * 4)" (( "(") (binary_expression "iVar9 + 0x2d30 + (uint)*(byte *)((int)puVar10 + 0x12) * 4" (binary_expression "iVar9 + 0x2d30" (identifier "iVar9") (+ "+") (number_literal "0x2d30")) (+ "+") (binary_expression "(uint)*(byte *)((int)puVar10 + 0x12) * 4" (binary_expression "(uint)*(byte *)((int)puVar10 + 0x12)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (cast_expression "(byte *)((int)puVar10 + 0x12)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar10 + 0x12)" (( "(") (binary_expression "(int)puVar10 + 0x12" (cast_expression "(int)puVar10" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar10")) (+ "+") (number_literal "0x12")) () ")")))) (* "*") (number_literal "4"))) () ")"))))) (+ "+") (number_literal "0x1ef9c")) () ")")))) () ")")) (argument_list "()" (( "(") () ")")))) (; ";")) (return_statement "return iVar5;" (return "return") (identifier "iVar5") (; ";")) (} "}"))) (} "}")) (else_clause "else {\n        *(undefined2 *)(iVar12 + 0x3c) = 0xb;\n        bVar3 = false;\n        if (*(byte *)((int)puVar10 + 0x12) < 0xd) {\n                    \n                    \n          iVar5 = (*(code *)(puVar22 +\n                            *(int *)(*(int *)(puVar22 + 0x16fd4) + 0x2d64 +\n                                    (uint)*(byte *)((int)puVar10 + 0x12) * 4) + 0x1ef9c))();\n          return iVar5;\n        }\n      }" (else "else") (compound_statement "{\n        *(undefined2 *)(iVar12 + 0x3c) = 0xb;\n        bVar3 = false;\n        if (*(byte *)((int)puVar10 + 0x12) < 0xd) {\n                    \n                    \n          iVar5 = (*(code *)(puVar22 +\n                            *(int *)(*(int *)(puVar22 + 0x16fd4) + 0x2d64 +\n                                    (uint)*(byte *)((int)puVar10 + 0x12) * 4) + 0x1ef9c))();\n          return iVar5;\n        }\n      }" ({ "{") (expression_statement "*(undefined2 *)(iVar12 + 0x3c) = 0xb;" (assignment_expression "*(undefined2 *)(iVar12 + 0x3c) = 0xb" (pointer_expression "*(undefined2 *)(iVar12 + 0x3c)" (* "*") (cast_expression "(undefined2 *)(iVar12 + 0x3c)" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar12 + 0x3c)" (( "(") (binary_expression "iVar12 + 0x3c" (identifier "iVar12") (+ "+") (number_literal "0x3c")) () ")")))) (= "=") (number_literal "0xb")) (; ";")) (expression_statement "bVar3 = false;" (assignment_expression "bVar3 = false" (identifier "bVar3") (= "=") (false "false")) (; ";")) (if_statement "if (*(byte *)((int)puVar10 + 0x12) < 0xd) {\n                    \n                    \n          iVar5 = (*(code *)(puVar22 +\n                            *(int *)(*(int *)(puVar22 + 0x16fd4) + 0x2d64 +\n                                    (uint)*(byte *)((int)puVar10 + 0x12) * 4) + 0x1ef9c))();\n          return iVar5;\n        }" (if "if") (parenthesized_expression "(*(byte *)((int)puVar10 + 0x12) < 0xd)" (( "(") (binary_expression "*(byte *)((int)puVar10 + 0x12) < 0xd" (pointer_expression "*(byte *)((int)puVar10 + 0x12)" (* "*") (cast_expression "(byte *)((int)puVar10 + 0x12)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar10 + 0x12)" (( "(") (binary_expression "(int)puVar10 + 0x12" (cast_expression "(int)puVar10" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar10")) (+ "+") (number_literal "0x12")) () ")")))) (< "<") (number_literal "0xd")) () ")")) (compound_statement "{\n                    \n                    \n          iVar5 = (*(code *)(puVar22 +\n                            *(int *)(*(int *)(puVar22 + 0x16fd4) + 0x2d64 +\n                                    (uint)*(byte *)((int)puVar10 + 0x12) * 4) + 0x1ef9c))();\n          return iVar5;\n        }" ({ "{") (expression_statement "iVar5 = (*(code *)(puVar22 +\n                            *(int *)(*(int *)(puVar22 + 0x16fd4) + 0x2d64 +\n                                    (uint)*(byte *)((int)puVar10 + 0x12) * 4) + 0x1ef9c))();" (assignment_expression "iVar5 = (*(code *)(puVar22 +\n                            *(int *)(*(int *)(puVar22 + 0x16fd4) + 0x2d64 +\n                                    (uint)*(byte *)((int)puVar10 + 0x12) * 4) + 0x1ef9c))()" (identifier "iVar5") (= "=") (call_expression "(*(code *)(puVar22 +\n                            *(int *)(*(int *)(puVar22 + 0x16fd4) + 0x2d64 +\n                                    (uint)*(byte *)((int)puVar10 + 0x12) * 4) + 0x1ef9c))()" (parenthesized_expression "(*(code *)(puVar22 +\n                            *(int *)(*(int *)(puVar22 + 0x16fd4) + 0x2d64 +\n                                    (uint)*(byte *)((int)puVar10 + 0x12) * 4) + 0x1ef9c))" (( "(") (pointer_expression "*(code *)(puVar22 +\n                            *(int *)(*(int *)(puVar22 + 0x16fd4) + 0x2d64 +\n                                    (uint)*(byte *)((int)puVar10 + 0x12) * 4) + 0x1ef9c)" (* "*") (cast_expression "(code *)(puVar22 +\n                            *(int *)(*(int *)(puVar22 + 0x16fd4) + 0x2d64 +\n                                    (uint)*(byte *)((int)puVar10 + 0x12) * 4) + 0x1ef9c)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar22 +\n                            *(int *)(*(int *)(puVar22 + 0x16fd4) + 0x2d64 +\n                                    (uint)*(byte *)((int)puVar10 + 0x12) * 4) + 0x1ef9c)" (( "(") (binary_expression "puVar22 +\n                            *(int *)(*(int *)(puVar22 + 0x16fd4) + 0x2d64 +\n                                    (uint)*(byte *)((int)puVar10 + 0x12) * 4) + 0x1ef9c" (binary_expression "puVar22 +\n                            *(int *)(*(int *)(puVar22 + 0x16fd4) + 0x2d64 +\n                                    (uint)*(byte *)((int)puVar10 + 0x12) * 4)" (identifier "puVar22") (+ "+") (pointer_expression "*(int *)(*(int *)(puVar22 + 0x16fd4) + 0x2d64 +\n                                    (uint)*(byte *)((int)puVar10 + 0x12) * 4)" (* "*") (cast_expression "(int *)(*(int *)(puVar22 + 0x16fd4) + 0x2d64 +\n                                    (uint)*(byte *)((int)puVar10 + 0x12) * 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(puVar22 + 0x16fd4) + 0x2d64 +\n                                    (uint)*(byte *)((int)puVar10 + 0x12) * 4)" (( "(") (binary_expression "*(int *)(puVar22 + 0x16fd4) + 0x2d64 +\n                                    (uint)*(byte *)((int)puVar10 + 0x12) * 4" (binary_expression "*(int *)(puVar22 + 0x16fd4) + 0x2d64" (pointer_expression "*(int *)(puVar22 + 0x16fd4)" (* "*") (cast_expression "(int *)(puVar22 + 0x16fd4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar22 + 0x16fd4)" (( "(") (binary_expression "puVar22 + 0x16fd4" (identifier "puVar22") (+ "+") (number_literal "0x16fd4")) () ")")))) (+ "+") (number_literal "0x2d64")) (+ "+") (binary_expression "(uint)*(byte *)((int)puVar10 + 0x12) * 4" (binary_expression "(uint)*(byte *)((int)puVar10 + 0x12)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (cast_expression "(byte *)((int)puVar10 + 0x12)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar10 + 0x12)" (( "(") (binary_expression "(int)puVar10 + 0x12" (cast_expression "(int)puVar10" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar10")) (+ "+") (number_literal "0x12")) () ")")))) (* "*") (number_literal "4"))) () ")"))))) (+ "+") (number_literal "0x1ef9c")) () ")")))) () ")")) (argument_list "()" (( "(") () ")")))) (; ";")) (return_statement "return iVar5;" (return "return") (identifier "iVar5") (; ";")) (} "}"))) (} "}")))) (expression_statement "*(undefined4 *)(iVar12 + 0x60) = 0;" (assignment_expression "*(undefined4 *)(iVar12 + 0x60) = 0" (pointer_expression "*(undefined4 *)(iVar12 + 0x60)" (* "*") (cast_expression "(undefined4 *)(iVar12 + 0x60)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar12 + 0x60)" (( "(") (binary_expression "iVar12 + 0x60" (identifier "iVar12") (+ "+") (number_literal "0x60")) () ")")))) (= "=") (number_literal "0")) (; ";")) (if_statement "if (bVar3) {\n        uVar13 = 1;\n      }\n      else {\n        uVar13 = 2;\n      }" (if "if") (parenthesized_expression "(bVar3)" (( "(") (identifier "bVar3") () ")")) (compound_statement "{\n        uVar13 = 1;\n      }" ({ "{") (expression_statement "uVar13 = 1;" (assignment_expression "uVar13 = 1" (identifier "uVar13") (= "=") (number_literal "1")) (; ";")) (} "}")) (else_clause "else {\n        uVar13 = 2;\n      }" (else "else") (compound_statement "{\n        uVar13 = 2;\n      }" ({ "{") (expression_statement "uVar13 = 2;" (assignment_expression "uVar13 = 2" (identifier "uVar13") (= "=") (number_literal "2")) (; ";")) (} "}")))) (expression_statement "*(undefined4 *)(iVar12 + 0x84) = uVar13;" (assignment_expression "*(undefined4 *)(iVar12 + 0x84) = uVar13" (pointer_expression "*(undefined4 *)(iVar12 + 0x84)" (* "*") (cast_expression "(undefined4 *)(iVar12 + 0x84)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar12 + 0x84)" (( "(") (binary_expression "iVar12 + 0x84" (identifier "iVar12") (+ "+") (number_literal "0x84")) () ")")))) (= "=") (identifier "uVar13")) (; ";")) (expression_statement "*(undefined4 *)(iVar12 + 0x80) = 0;" (assignment_expression "*(undefined4 *)(iVar12 + 0x80) = 0" (pointer_expression "*(undefined4 *)(iVar12 + 0x80)" (* "*") (cast_expression "(undefined4 *)(iVar12 + 0x80)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar12 + 0x80)" (( "(") (binary_expression "iVar12 + 0x80" (identifier "iVar12") (+ "+") (number_literal "0x80")) () ")")))) (= "=") (number_literal "0")) (; ";")) (} "}")) (else_clause "else {\n      uVar15 = FUN_0001b18c(param_1,iVar12,0);\n      *(undefined2 *)(iVar12 + 0x3c) = uVar15;\n    }" (else "else") (compound_statement "{\n      uVar15 = FUN_0001b18c(param_1,iVar12,0);\n      *(undefined2 *)(iVar12 + 0x3c) = uVar15;\n    }" ({ "{") (expression_statement "uVar15 = FUN_0001b18c(param_1,iVar12,0);" (assignment_expression "uVar15 = FUN_0001b18c(param_1,iVar12,0)" (identifier "uVar15") (= "=") (call_expression "FUN_0001b18c(param_1,iVar12,0)" (identifier "FUN_0001b18c") (argument_list "(param_1,iVar12,0)" (( "(") (identifier "param_1") (, ",") (identifier "iVar12") (, ",") (number_literal "0") () ")")))) (; ";")) (expression_statement "*(undefined2 *)(iVar12 + 0x3c) = uVar15;" (assignment_expression "*(undefined2 *)(iVar12 + 0x3c) = uVar15" (pointer_expression "*(undefined2 *)(iVar12 + 0x3c)" (* "*") (cast_expression "(undefined2 *)(iVar12 + 0x3c)" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar12 + 0x3c)" (( "(") (binary_expression "iVar12 + 0x3c" (identifier "iVar12") (+ "+") (number_literal "0x3c")) () ")")))) (= "=") (identifier "uVar15")) (; ";")) (} "}")))) (expression_statement "*(undefined4 *)(iVar12 + 8) = 0;" (assignment_expression "*(undefined4 *)(iVar12 + 8) = 0" (pointer_expression "*(undefined4 *)(iVar12 + 8)" (* "*") (cast_expression "(undefined4 *)(iVar12 + 8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar12 + 8)" (( "(") (binary_expression "iVar12 + 8" (identifier "iVar12") (+ "+") (number_literal "8")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "iVar14 = iVar12;" (assignment_expression "iVar14 = iVar12" (identifier "iVar14") (= "=") (identifier "iVar12")) (; ";")) (if_statement "if (iStack_a0 != 0) {\n      *(int *)(iStack_a4 + 8) = iVar12;\n      iVar14 = iStack_a0;\n    }" (if "if") (parenthesized_expression "(iStack_a0 != 0)" (( "(") (binary_expression "iStack_a0 != 0" (identifier "iStack_a0") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      *(int *)(iStack_a4 + 8) = iVar12;\n      iVar14 = iStack_a0;\n    }" ({ "{") (expression_statement "*(int *)(iStack_a4 + 8) = iVar12;" (assignment_expression "*(int *)(iStack_a4 + 8) = iVar12" (pointer_expression "*(int *)(iStack_a4 + 8)" (* "*") (cast_expression "(int *)(iStack_a4 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iStack_a4 + 8)" (( "(") (binary_expression "iStack_a4 + 8" (identifier "iStack_a4") (+ "+") (number_literal "8")) () ")")))) (= "=") (identifier "iVar12")) (; ";")) (expression_statement "iVar14 = iStack_a0;" (assignment_expression "iVar14 = iStack_a0" (identifier "iVar14") (= "=") (identifier "iStack_a0")) (; ";")) (} "}"))) (expression_statement "iStack_a0 = iVar14;" (assignment_expression "iStack_a0 = iVar14" (identifier "iStack_a0") (= "=") (identifier "iVar14")) (; ";")) (expression_statement "iStack_a4 = iVar12;" (assignment_expression "iStack_a4 = iVar12" (identifier "iStack_a4") (= "=") (identifier "iVar12")) (; ";")) (if_statement "if (uVar19 == 10000) {\n      if (param_1[0xb] != 0) {\nLAB_0001cb74:\n        uVar19 = 0x2711;\n        goto LAB_0001c96c;\n      }\n      iVar12 = (*(code *)(iVar8 + -0x47a8))(iVar18,iStack_7c);\n      if (iVar12 == 0x6969) {\n        bVar4 = false;\n      }\n      else if (iVar12 == 0x1021994) {\n        bVar4 = false;\n      }\n      else {\n        if (iVar12 != -0xacb2be) {\n          bVar4 = true;\n          goto LAB_0001cb74;\n        }\n        bVar4 = false;\n      }\n    }" (if "if") (parenthesized_expression "(uVar19 == 10000)" (( "(") (binary_expression "uVar19 == 10000" (identifier "uVar19") (== "==") (number_literal "10000")) () ")")) (compound_statement "{\n      if (param_1[0xb] != 0) {\nLAB_0001cb74:\n        uVar19 = 0x2711;\n        goto LAB_0001c96c;\n      }\n      iVar12 = (*(code *)(iVar8 + -0x47a8))(iVar18,iStack_7c);\n      if (iVar12 == 0x6969) {\n        bVar4 = false;\n      }\n      else if (iVar12 == 0x1021994) {\n        bVar4 = false;\n      }\n      else {\n        if (iVar12 != -0xacb2be) {\n          bVar4 = true;\n          goto LAB_0001cb74;\n        }\n        bVar4 = false;\n      }\n    }" ({ "{") (if_statement "if (param_1[0xb] != 0) {\nLAB_0001cb74:\n        uVar19 = 0x2711;\n        goto LAB_0001c96c;\n      }" (if "if") (parenthesized_expression "(param_1[0xb] != 0)" (( "(") (binary_expression "param_1[0xb] != 0" (subscript_expression "param_1[0xb]" (identifier "param_1") ([ "[") (number_literal "0xb") (] "]")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\nLAB_0001cb74:\n        uVar19 = 0x2711;\n        goto LAB_0001c96c;\n      }" ({ "{") (labeled_statement "LAB_0001cb74:\n        uVar19 = 0x2711;" (statement_identifier "LAB_0001cb74") (: ":") (expression_statement "uVar19 = 0x2711;" (assignment_expression "uVar19 = 0x2711" (identifier "uVar19") (= "=") (number_literal "0x2711")) (; ";"))) (goto_statement "goto LAB_0001c96c;" (goto "goto") (statement_identifier "LAB_0001c96c") (; ";")) (} "}"))) (expression_statement "iVar12 = (*(code *)(iVar8 + -0x47a8))(iVar18,iStack_7c);" (assignment_expression "iVar12 = (*(code *)(iVar8 + -0x47a8))(iVar18,iStack_7c)" (identifier "iVar12") (= "=") (call_expression "(*(code *)(iVar8 + -0x47a8))(iVar18,iStack_7c)" (parenthesized_expression "(*(code *)(iVar8 + -0x47a8))" (( "(") (pointer_expression "*(code *)(iVar8 + -0x47a8)" (* "*") (cast_expression "(code *)(iVar8 + -0x47a8)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar8 + -0x47a8)" (( "(") (binary_expression "iVar8 + -0x47a8" (identifier "iVar8") (+ "+") (number_literal "-0x47a8")) () ")")))) () ")")) (argument_list "(iVar18,iStack_7c)" (( "(") (identifier "iVar18") (, ",") (identifier "iStack_7c") () ")")))) (; ";")) (if_statement "if (iVar12 == 0x6969) {\n        bVar4 = false;\n      }\n      else if (iVar12 == 0x1021994) {\n        bVar4 = false;\n      }\n      else {\n        if (iVar12 != -0xacb2be) {\n          bVar4 = true;\n          goto LAB_0001cb74;\n        }\n        bVar4 = false;\n      }" (if "if") (parenthesized_expression "(iVar12 == 0x6969)" (( "(") (binary_expression "iVar12 == 0x6969" (identifier "iVar12") (== "==") (number_literal "0x6969")) () ")")) (compound_statement "{\n        bVar4 = false;\n      }" ({ "{") (expression_statement "bVar4 = false;" (assignment_expression "bVar4 = false" (identifier "bVar4") (= "=") (false "false")) (; ";")) (} "}")) (else_clause "else if (iVar12 == 0x1021994) {\n        bVar4 = false;\n      }\n      else {\n        if (iVar12 != -0xacb2be) {\n          bVar4 = true;\n          goto LAB_0001cb74;\n        }\n        bVar4 = false;\n      }" (else "else") (if_statement "if (iVar12 == 0x1021994) {\n        bVar4 = false;\n      }\n      else {\n        if (iVar12 != -0xacb2be) {\n          bVar4 = true;\n          goto LAB_0001cb74;\n        }\n        bVar4 = false;\n      }" (if "if") (parenthesized_expression "(iVar12 == 0x1021994)" (( "(") (binary_expression "iVar12 == 0x1021994" (identifier "iVar12") (== "==") (number_literal "0x1021994")) () ")")) (compound_statement "{\n        bVar4 = false;\n      }" ({ "{") (expression_statement "bVar4 = false;" (assignment_expression "bVar4 = false" (identifier "bVar4") (= "=") (false "false")) (; ";")) (} "}")) (else_clause "else {\n        if (iVar12 != -0xacb2be) {\n          bVar4 = true;\n          goto LAB_0001cb74;\n        }\n        bVar4 = false;\n      }" (else "else") (compound_statement "{\n        if (iVar12 != -0xacb2be) {\n          bVar4 = true;\n          goto LAB_0001cb74;\n        }\n        bVar4 = false;\n      }" ({ "{") (if_statement "if (iVar12 != -0xacb2be) {\n          bVar4 = true;\n          goto LAB_0001cb74;\n        }" (if "if") (parenthesized_expression "(iVar12 != -0xacb2be)" (( "(") (binary_expression "iVar12 != -0xacb2be" (identifier "iVar12") (!= "!=") (number_literal "-0xacb2be")) () ")")) (compound_statement "{\n          bVar4 = true;\n          goto LAB_0001cb74;\n        }" ({ "{") (expression_statement "bVar4 = true;" (assignment_expression "bVar4 = true" (identifier "bVar4") (= "=") (true "true")) (; ";")) (goto_statement "goto LAB_0001cb74;" (goto "goto") (statement_identifier "LAB_0001cb74") (; ";")) (} "}"))) (expression_statement "bVar4 = false;" (assignment_expression "bVar4 = false" (identifier "bVar4") (= "=") (false "false")) (; ";")) (} "}")))))) (} "}"))) (expression_statement "uVar19 = uVar19 + 1;" (assignment_expression "uVar19 = uVar19 + 1" (identifier "uVar19") (= "=") (binary_expression "uVar19 + 1" (identifier "uVar19") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar19 < uStack_94)" (( "(") (binary_expression "uVar19 < uStack_94" (identifier "uVar19") (< "<") (identifier "uStack_94")) () ")")) (; ";"))) (labeled_statement "LAB_0001c66c:\n  if (iStack_8c != 0) {\n    iVar6 = param_1[6];\n    for (iVar17 = param_1[1]; iVar7 = iStack_a0, iVar17 != 0; iVar17 = *(int *)(iVar17 + 8)) {\n      if (*(int *)(iVar17 + 0x18) != iVar17 + 0xe8) {\n        *(int *)(iVar17 + 0x18) = iVar6 + (*(int *)(iVar17 + 0x18) - *(int *)(iVar17 + 0x1c));\n      }\n      *(int *)(iVar17 + 0x1c) = iVar6;\n    }\n    while (iVar17 = iVar7, -1 < *(int *)(iVar17 + 0x30)) {\n      if (*(int *)(iVar17 + 0x18) != iVar17 + 0xe8) {\n        *(int *)(iVar17 + 0x18) = iVar6 + (*(int *)(iVar17 + 0x18) - *(int *)(iVar17 + 0x1c));\n      }\n      *(int *)(iVar17 + 0x1c) = iVar6;\n      iVar7 = *(int *)(iVar17 + 8);\n      if (*(int *)(iVar17 + 8) == 0) {\n        iVar7 = *(int *)(iVar17 + 4);\n      }\n    }\n  }" (statement_identifier "LAB_0001c66c") (: ":") (if_statement "if (iStack_8c != 0) {\n    iVar6 = param_1[6];\n    for (iVar17 = param_1[1]; iVar7 = iStack_a0, iVar17 != 0; iVar17 = *(int *)(iVar17 + 8)) {\n      if (*(int *)(iVar17 + 0x18) != iVar17 + 0xe8) {\n        *(int *)(iVar17 + 0x18) = iVar6 + (*(int *)(iVar17 + 0x18) - *(int *)(iVar17 + 0x1c));\n      }\n      *(int *)(iVar17 + 0x1c) = iVar6;\n    }\n    while (iVar17 = iVar7, -1 < *(int *)(iVar17 + 0x30)) {\n      if (*(int *)(iVar17 + 0x18) != iVar17 + 0xe8) {\n        *(int *)(iVar17 + 0x18) = iVar6 + (*(int *)(iVar17 + 0x18) - *(int *)(iVar17 + 0x1c));\n      }\n      *(int *)(iVar17 + 0x1c) = iVar6;\n      iVar7 = *(int *)(iVar17 + 8);\n      if (*(int *)(iVar17 + 8) == 0) {\n        iVar7 = *(int *)(iVar17 + 4);\n      }\n    }\n  }" (if "if") (parenthesized_expression "(iStack_8c != 0)" (( "(") (binary_expression "iStack_8c != 0" (identifier "iStack_8c") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    iVar6 = param_1[6];\n    for (iVar17 = param_1[1]; iVar7 = iStack_a0, iVar17 != 0; iVar17 = *(int *)(iVar17 + 8)) {\n      if (*(int *)(iVar17 + 0x18) != iVar17 + 0xe8) {\n        *(int *)(iVar17 + 0x18) = iVar6 + (*(int *)(iVar17 + 0x18) - *(int *)(iVar17 + 0x1c));\n      }\n      *(int *)(iVar17 + 0x1c) = iVar6;\n    }\n    while (iVar17 = iVar7, -1 < *(int *)(iVar17 + 0x30)) {\n      if (*(int *)(iVar17 + 0x18) != iVar17 + 0xe8) {\n        *(int *)(iVar17 + 0x18) = iVar6 + (*(int *)(iVar17 + 0x18) - *(int *)(iVar17 + 0x1c));\n      }\n      *(int *)(iVar17 + 0x1c) = iVar6;\n      iVar7 = *(int *)(iVar17 + 8);\n      if (*(int *)(iVar17 + 8) == 0) {\n        iVar7 = *(int *)(iVar17 + 4);\n      }\n    }\n  }" ({ "{") (expression_statement "iVar6 = param_1[6];" (assignment_expression "iVar6 = param_1[6]" (identifier "iVar6") (= "=") (subscript_expression "param_1[6]" (identifier "param_1") ([ "[") (number_literal "6") (] "]"))) (; ";")) (for_statement "for (iVar17 = param_1[1]; iVar7 = iStack_a0, iVar17 != 0; iVar17 = *(int *)(iVar17 + 8)) {\n      if (*(int *)(iVar17 + 0x18) != iVar17 + 0xe8) {\n        *(int *)(iVar17 + 0x18) = iVar6 + (*(int *)(iVar17 + 0x18) - *(int *)(iVar17 + 0x1c));\n      }\n      *(int *)(iVar17 + 0x1c) = iVar6;\n    }" (for "for") (( "(") (assignment_expression "iVar17 = param_1[1]" (identifier "iVar17") (= "=") (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]"))) (; ";") (comma_expression "iVar7 = iStack_a0, iVar17 != 0" (assignment_expression "iVar7 = iStack_a0" (identifier "iVar7") (= "=") (identifier "iStack_a0")) (, ",") (binary_expression "iVar17 != 0" (identifier "iVar17") (!= "!=") (number_literal "0"))) (; ";") (assignment_expression "iVar17 = *(int *)(iVar17 + 8)" (identifier "iVar17") (= "=") (pointer_expression "*(int *)(iVar17 + 8)" (* "*") (cast_expression "(int *)(iVar17 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar17 + 8)" (( "(") (binary_expression "iVar17 + 8" (identifier "iVar17") (+ "+") (number_literal "8")) () ")"))))) () ")") (compound_statement "{\n      if (*(int *)(iVar17 + 0x18) != iVar17 + 0xe8) {\n        *(int *)(iVar17 + 0x18) = iVar6 + (*(int *)(iVar17 + 0x18) - *(int *)(iVar17 + 0x1c));\n      }\n      *(int *)(iVar17 + 0x1c) = iVar6;\n    }" ({ "{") (if_statement "if (*(int *)(iVar17 + 0x18) != iVar17 + 0xe8) {\n        *(int *)(iVar17 + 0x18) = iVar6 + (*(int *)(iVar17 + 0x18) - *(int *)(iVar17 + 0x1c));\n      }" (if "if") (parenthesized_expression "(*(int *)(iVar17 + 0x18) != iVar17 + 0xe8)" (( "(") (binary_expression "*(int *)(iVar17 + 0x18) != iVar17 + 0xe8" (pointer_expression "*(int *)(iVar17 + 0x18)" (* "*") (cast_expression "(int *)(iVar17 + 0x18)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar17 + 0x18)" (( "(") (binary_expression "iVar17 + 0x18" (identifier "iVar17") (+ "+") (number_literal "0x18")) () ")")))) (!= "!=") (binary_expression "iVar17 + 0xe8" (identifier "iVar17") (+ "+") (number_literal "0xe8"))) () ")")) (compound_statement "{\n        *(int *)(iVar17 + 0x18) = iVar6 + (*(int *)(iVar17 + 0x18) - *(int *)(iVar17 + 0x1c));\n      }" ({ "{") (expression_statement "*(int *)(iVar17 + 0x18) = iVar6 + (*(int *)(iVar17 + 0x18) - *(int *)(iVar17 + 0x1c));" (assignment_expression "*(int *)(iVar17 + 0x18) = iVar6 + (*(int *)(iVar17 + 0x18) - *(int *)(iVar17 + 0x1c))" (pointer_expression "*(int *)(iVar17 + 0x18)" (* "*") (cast_expression "(int *)(iVar17 + 0x18)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar17 + 0x18)" (( "(") (binary_expression "iVar17 + 0x18" (identifier "iVar17") (+ "+") (number_literal "0x18")) () ")")))) (= "=") (binary_expression "iVar6 + (*(int *)(iVar17 + 0x18) - *(int *)(iVar17 + 0x1c))" (identifier "iVar6") (+ "+") (parenthesized_expression "(*(int *)(iVar17 + 0x18) - *(int *)(iVar17 + 0x1c))" (( "(") (binary_expression "*(int *)(iVar17 + 0x18) - *(int *)(iVar17 + 0x1c)" (pointer_expression "*(int *)(iVar17 + 0x18)" (* "*") (cast_expression "(int *)(iVar17 + 0x18)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar17 + 0x18)" (( "(") (binary_expression "iVar17 + 0x18" (identifier "iVar17") (+ "+") (number_literal "0x18")) () ")")))) (- "-") (pointer_expression "*(int *)(iVar17 + 0x1c)" (* "*") (cast_expression "(int *)(iVar17 + 0x1c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar17 + 0x1c)" (( "(") (binary_expression "iVar17 + 0x1c" (identifier "iVar17") (+ "+") (number_literal "0x1c")) () ")"))))) () ")")))) (; ";")) (} "}"))) (expression_statement "*(int *)(iVar17 + 0x1c) = iVar6;" (assignment_expression "*(int *)(iVar17 + 0x1c) = iVar6" (pointer_expression "*(int *)(iVar17 + 0x1c)" (* "*") (cast_expression "(int *)(iVar17 + 0x1c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar17 + 0x1c)" (( "(") (binary_expression "iVar17 + 0x1c" (identifier "iVar17") (+ "+") (number_literal "0x1c")) () ")")))) (= "=") (identifier "iVar6")) (; ";")) (} "}"))) (while_statement "while (iVar17 = iVar7, -1 < *(int *)(iVar17 + 0x30)) {\n      if (*(int *)(iVar17 + 0x18) != iVar17 + 0xe8) {\n        *(int *)(iVar17 + 0x18) = iVar6 + (*(int *)(iVar17 + 0x18) - *(int *)(iVar17 + 0x1c));\n      }\n      *(int *)(iVar17 + 0x1c) = iVar6;\n      iVar7 = *(int *)(iVar17 + 8);\n      if (*(int *)(iVar17 + 8) == 0) {\n        iVar7 = *(int *)(iVar17 + 4);\n      }\n    }" (while "while") (parenthesized_expression "(iVar17 = iVar7, -1 < *(int *)(iVar17 + 0x30))" (( "(") (comma_expression "iVar17 = iVar7, -1 < *(int *)(iVar17 + 0x30)" (assignment_expression "iVar17 = iVar7" (identifier "iVar17") (= "=") (identifier "iVar7")) (, ",") (binary_expression "-1 < *(int *)(iVar17 + 0x30)" (number_literal "-1") (< "<") (pointer_expression "*(int *)(iVar17 + 0x30)" (* "*") (cast_expression "(int *)(iVar17 + 0x30)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar17 + 0x30)" (( "(") (binary_expression "iVar17 + 0x30" (identifier "iVar17") (+ "+") (number_literal "0x30")) () ")")))))) () ")")) (compound_statement "{\n      if (*(int *)(iVar17 + 0x18) != iVar17 + 0xe8) {\n        *(int *)(iVar17 + 0x18) = iVar6 + (*(int *)(iVar17 + 0x18) - *(int *)(iVar17 + 0x1c));\n      }\n      *(int *)(iVar17 + 0x1c) = iVar6;\n      iVar7 = *(int *)(iVar17 + 8);\n      if (*(int *)(iVar17 + 8) == 0) {\n        iVar7 = *(int *)(iVar17 + 4);\n      }\n    }" ({ "{") (if_statement "if (*(int *)(iVar17 + 0x18) != iVar17 + 0xe8) {\n        *(int *)(iVar17 + 0x18) = iVar6 + (*(int *)(iVar17 + 0x18) - *(int *)(iVar17 + 0x1c));\n      }" (if "if") (parenthesized_expression "(*(int *)(iVar17 + 0x18) != iVar17 + 0xe8)" (( "(") (binary_expression "*(int *)(iVar17 + 0x18) != iVar17 + 0xe8" (pointer_expression "*(int *)(iVar17 + 0x18)" (* "*") (cast_expression "(int *)(iVar17 + 0x18)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar17 + 0x18)" (( "(") (binary_expression "iVar17 + 0x18" (identifier "iVar17") (+ "+") (number_literal "0x18")) () ")")))) (!= "!=") (binary_expression "iVar17 + 0xe8" (identifier "iVar17") (+ "+") (number_literal "0xe8"))) () ")")) (compound_statement "{\n        *(int *)(iVar17 + 0x18) = iVar6 + (*(int *)(iVar17 + 0x18) - *(int *)(iVar17 + 0x1c));\n      }" ({ "{") (expression_statement "*(int *)(iVar17 + 0x18) = iVar6 + (*(int *)(iVar17 + 0x18) - *(int *)(iVar17 + 0x1c));" (assignment_expression "*(int *)(iVar17 + 0x18) = iVar6 + (*(int *)(iVar17 + 0x18) - *(int *)(iVar17 + 0x1c))" (pointer_expression "*(int *)(iVar17 + 0x18)" (* "*") (cast_expression "(int *)(iVar17 + 0x18)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar17 + 0x18)" (( "(") (binary_expression "iVar17 + 0x18" (identifier "iVar17") (+ "+") (number_literal "0x18")) () ")")))) (= "=") (binary_expression "iVar6 + (*(int *)(iVar17 + 0x18) - *(int *)(iVar17 + 0x1c))" (identifier "iVar6") (+ "+") (parenthesized_expression "(*(int *)(iVar17 + 0x18) - *(int *)(iVar17 + 0x1c))" (( "(") (binary_expression "*(int *)(iVar17 + 0x18) - *(int *)(iVar17 + 0x1c)" (pointer_expression "*(int *)(iVar17 + 0x18)" (* "*") (cast_expression "(int *)(iVar17 + 0x18)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar17 + 0x18)" (( "(") (binary_expression "iVar17 + 0x18" (identifier "iVar17") (+ "+") (number_literal "0x18")) () ")")))) (- "-") (pointer_expression "*(int *)(iVar17 + 0x1c)" (* "*") (cast_expression "(int *)(iVar17 + 0x1c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar17 + 0x1c)" (( "(") (binary_expression "iVar17 + 0x1c" (identifier "iVar17") (+ "+") (number_literal "0x1c")) () ")"))))) () ")")))) (; ";")) (} "}"))) (expression_statement "*(int *)(iVar17 + 0x1c) = iVar6;" (assignment_expression "*(int *)(iVar17 + 0x1c) = iVar6" (pointer_expression "*(int *)(iVar17 + 0x1c)" (* "*") (cast_expression "(int *)(iVar17 + 0x1c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar17 + 0x1c)" (( "(") (binary_expression "iVar17 + 0x1c" (identifier "iVar17") (+ "+") (number_literal "0x1c")) () ")")))) (= "=") (identifier "iVar6")) (; ";")) (expression_statement "iVar7 = *(int *)(iVar17 + 8);" (assignment_expression "iVar7 = *(int *)(iVar17 + 8)" (identifier "iVar7") (= "=") (pointer_expression "*(int *)(iVar17 + 8)" (* "*") (cast_expression "(int *)(iVar17 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar17 + 8)" (( "(") (binary_expression "iVar17 + 8" (identifier "iVar17") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (if_statement "if (*(int *)(iVar17 + 8) == 0) {\n        iVar7 = *(int *)(iVar17 + 4);\n      }" (if "if") (parenthesized_expression "(*(int *)(iVar17 + 8) == 0)" (( "(") (binary_expression "*(int *)(iVar17 + 8) == 0" (pointer_expression "*(int *)(iVar17 + 8)" (* "*") (cast_expression "(int *)(iVar17 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar17 + 8)" (( "(") (binary_expression "iVar17 + 8" (identifier "iVar17") (+ "+") (number_literal "8")) () ")")))) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        iVar7 = *(int *)(iVar17 + 4);\n      }" ({ "{") (expression_statement "iVar7 = *(int *)(iVar17 + 4);" (assignment_expression "iVar7 = *(int *)(iVar17 + 4)" (identifier "iVar7") (= "=") (pointer_expression "*(int *)(iVar17 + 4)" (* "*") (cast_expression "(int *)(iVar17 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar17 + 4)" (( "(") (binary_expression "iVar17 + 4" (identifier "iVar17") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (} "}"))) (} "}"))) (} "}")))) (if_statement "if ((param_1[0xc] & 4U) != 0) {\n    if ((param_1[9] == uVar20) || (uVar19 == 0)) {\n      puStack_90 = puStack_90 + -1;\n    }\n    *puStack_90 = 0;\n  }" (if "if") (parenthesized_expression "((param_1[0xc] & 4U) != 0)" (( "(") (binary_expression "(param_1[0xc] & 4U) != 0" (parenthesized_expression "(param_1[0xc] & 4U)" (( "(") (binary_expression "param_1[0xc] & 4U" (subscript_expression "param_1[0xc]" (identifier "param_1") ([ "[") (number_literal "0xc") (] "]")) (& "&") (number_literal "4U")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    if ((param_1[9] == uVar20) || (uVar19 == 0)) {\n      puStack_90 = puStack_90 + -1;\n    }\n    *puStack_90 = 0;\n  }" ({ "{") (if_statement "if ((param_1[9] == uVar20) || (uVar19 == 0)) {\n      puStack_90 = puStack_90 + -1;\n    }" (if "if") (parenthesized_expression "((param_1[9] == uVar20) || (uVar19 == 0))" (( "(") (binary_expression "(param_1[9] == uVar20) || (uVar19 == 0)" (parenthesized_expression "(param_1[9] == uVar20)" (( "(") (binary_expression "param_1[9] == uVar20" (subscript_expression "param_1[9]" (identifier "param_1") ([ "[") (number_literal "9") (] "]")) (== "==") (identifier "uVar20")) () ")")) (|| "||") (parenthesized_expression "(uVar19 == 0)" (( "(") (binary_expression "uVar19 == 0" (identifier "uVar19") (== "==") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n      puStack_90 = puStack_90 + -1;\n    }" ({ "{") (expression_statement "puStack_90 = puStack_90 + -1;" (assignment_expression "puStack_90 = puStack_90 + -1" (identifier "puStack_90") (= "=") (binary_expression "puStack_90 + -1" (identifier "puStack_90") (+ "+") (number_literal "-1"))) (; ";")) (} "}"))) (expression_statement "*puStack_90 = 0;" (assignment_expression "*puStack_90 = 0" (pointer_expression "*puStack_90" (* "*") (identifier "puStack_90")) (= "=") (number_literal "0")) (; ";")) (} "}"))) (if_statement "if ((iVar5 == 0) && (bVar2)) {\n    if ((param_2 != (undefined4 *)0x1) && (uVar19 != 0)) goto LAB_0001c6c0;\n    if (*(int *)(iVar18 + 0x30) == 0) {\n      iVar5 = FUN_0001bcbc(param_1);\n    }\n    else {\n      iVar5 = FUN_0001bd68(param_1,*(undefined4 *)(iVar18 + 4),0xffffffff,\n                           *(int *)(puVar22 + 0x16fd4) + 0x2d20);\n    }\n    if (iVar5 != 0) {\n      *(undefined2 *)(iVar18 + 0x3c) = 7;\n      param_1[0xc] = param_1[0xc] | 0x4000;\n      FUN_0001b6fc(iStack_a0);\n      return 0;\n    }\n  }" (if "if") (parenthesized_expression "((iVar5 == 0) && (bVar2))" (( "(") (binary_expression "(iVar5 == 0) && (bVar2)" (parenthesized_expression "(iVar5 == 0)" (( "(") (binary_expression "iVar5 == 0" (identifier "iVar5") (== "==") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(bVar2)" (( "(") (identifier "bVar2") () ")"))) () ")")) (compound_statement "{\n    if ((param_2 != (undefined4 *)0x1) && (uVar19 != 0)) goto LAB_0001c6c0;\n    if (*(int *)(iVar18 + 0x30) == 0) {\n      iVar5 = FUN_0001bcbc(param_1);\n    }\n    else {\n      iVar5 = FUN_0001bd68(param_1,*(undefined4 *)(iVar18 + 4),0xffffffff,\n                           *(int *)(puVar22 + 0x16fd4) + 0x2d20);\n    }\n    if (iVar5 != 0) {\n      *(undefined2 *)(iVar18 + 0x3c) = 7;\n      param_1[0xc] = param_1[0xc] | 0x4000;\n      FUN_0001b6fc(iStack_a0);\n      return 0;\n    }\n  }" ({ "{") (if_statement "if ((param_2 != (undefined4 *)0x1) && (uVar19 != 0)) goto LAB_0001c6c0;" (if "if") (parenthesized_expression "((param_2 != (undefined4 *)0x1) && (uVar19 != 0))" (( "(") (binary_expression "(param_2 != (undefined4 *)0x1) && (uVar19 != 0)" (parenthesized_expression "(param_2 != (undefined4 *)0x1)" (( "(") (binary_expression "param_2 != (undefined4 *)0x1" (identifier "param_2") (!= "!=") (cast_expression "(undefined4 *)0x1" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x1"))) () ")")) (&& "&&") (parenthesized_expression "(uVar19 != 0)" (( "(") (binary_expression "uVar19 != 0" (identifier "uVar19") (!= "!=") (number_literal "0")) () ")"))) () ")")) (goto_statement "goto LAB_0001c6c0;" (goto "goto") (statement_identifier "LAB_0001c6c0") (; ";"))) (if_statement "if (*(int *)(iVar18 + 0x30) == 0) {\n      iVar5 = FUN_0001bcbc(param_1);\n    }\n    else {\n      iVar5 = FUN_0001bd68(param_1,*(undefined4 *)(iVar18 + 4),0xffffffff,\n                           *(int *)(puVar22 + 0x16fd4) + 0x2d20);\n    }" (if "if") (parenthesized_expression "(*(int *)(iVar18 + 0x30) == 0)" (( "(") (binary_expression "*(int *)(iVar18 + 0x30) == 0" (pointer_expression "*(int *)(iVar18 + 0x30)" (* "*") (cast_expression "(int *)(iVar18 + 0x30)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar18 + 0x30)" (( "(") (binary_expression "iVar18 + 0x30" (identifier "iVar18") (+ "+") (number_literal "0x30")) () ")")))) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      iVar5 = FUN_0001bcbc(param_1);\n    }" ({ "{") (expression_statement "iVar5 = FUN_0001bcbc(param_1);" (assignment_expression "iVar5 = FUN_0001bcbc(param_1)" (identifier "iVar5") (= "=") (call_expression "FUN_0001bcbc(param_1)" (identifier "FUN_0001bcbc") (argument_list "(param_1)" (( "(") (identifier "param_1") () ")")))) (; ";")) (} "}")) (else_clause "else {\n      iVar5 = FUN_0001bd68(param_1,*(undefined4 *)(iVar18 + 4),0xffffffff,\n                           *(int *)(puVar22 + 0x16fd4) + 0x2d20);\n    }" (else "else") (compound_statement "{\n      iVar5 = FUN_0001bd68(param_1,*(undefined4 *)(iVar18 + 4),0xffffffff,\n                           *(int *)(puVar22 + 0x16fd4) + 0x2d20);\n    }" ({ "{") (expression_statement "iVar5 = FUN_0001bd68(param_1,*(undefined4 *)(iVar18 + 4),0xffffffff,\n                           *(int *)(puVar22 + 0x16fd4) + 0x2d20);" (assignment_expression "iVar5 = FUN_0001bd68(param_1,*(undefined4 *)(iVar18 + 4),0xffffffff,\n                           *(int *)(puVar22 + 0x16fd4) + 0x2d20)" (identifier "iVar5") (= "=") (call_expression "FUN_0001bd68(param_1,*(undefined4 *)(iVar18 + 4),0xffffffff,\n                           *(int *)(puVar22 + 0x16fd4) + 0x2d20)" (identifier "FUN_0001bd68") (argument_list "(param_1,*(undefined4 *)(iVar18 + 4),0xffffffff,\n                           *(int *)(puVar22 + 0x16fd4) + 0x2d20)" (( "(") (identifier "param_1") (, ",") (pointer_expression "*(undefined4 *)(iVar18 + 4)" (* "*") (cast_expression "(undefined4 *)(iVar18 + 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar18 + 4)" (( "(") (binary_expression "iVar18 + 4" (identifier "iVar18") (+ "+") (number_literal "4")) () ")")))) (, ",") (number_literal "0xffffffff") (, ",") (binary_expression "*(int *)(puVar22 + 0x16fd4) + 0x2d20" (pointer_expression "*(int *)(puVar22 + 0x16fd4)" (* "*") (cast_expression "(int *)(puVar22 + 0x16fd4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar22 + 0x16fd4)" (( "(") (binary_expression "puVar22 + 0x16fd4" (identifier "puVar22") (+ "+") (number_literal "0x16fd4")) () ")")))) (+ "+") (number_literal "0x2d20")) () ")")))) (; ";")) (} "}")))) (if_statement "if (iVar5 != 0) {\n      *(undefined2 *)(iVar18 + 0x3c) = 7;\n      param_1[0xc] = param_1[0xc] | 0x4000;\n      FUN_0001b6fc(iStack_a0);\n      return 0;\n    }" (if "if") (parenthesized_expression "(iVar5 != 0)" (( "(") (binary_expression "iVar5 != 0" (identifier "iVar5") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      *(undefined2 *)(iVar18 + 0x3c) = 7;\n      param_1[0xc] = param_1[0xc] | 0x4000;\n      FUN_0001b6fc(iStack_a0);\n      return 0;\n    }" ({ "{") (expression_statement "*(undefined2 *)(iVar18 + 0x3c) = 7;" (assignment_expression "*(undefined2 *)(iVar18 + 0x3c) = 7" (pointer_expression "*(undefined2 *)(iVar18 + 0x3c)" (* "*") (cast_expression "(undefined2 *)(iVar18 + 0x3c)" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar18 + 0x3c)" (( "(") (binary_expression "iVar18 + 0x3c" (identifier "iVar18") (+ "+") (number_literal "0x3c")) () ")")))) (= "=") (number_literal "7")) (; ";")) (expression_statement "param_1[0xc] = param_1[0xc] | 0x4000;" (assignment_expression "param_1[0xc] = param_1[0xc] | 0x4000" (subscript_expression "param_1[0xc]" (identifier "param_1") ([ "[") (number_literal "0xc") (] "]")) (= "=") (binary_expression "param_1[0xc] | 0x4000" (subscript_expression "param_1[0xc]" (identifier "param_1") ([ "[") (number_literal "0xc") (] "]")) (| "|") (number_literal "0x4000"))) (; ";")) (expression_statement "FUN_0001b6fc(iStack_a0);" (call_expression "FUN_0001b6fc(iStack_a0)" (identifier "FUN_0001b6fc") (argument_list "(iStack_a0)" (( "(") (identifier "iStack_a0") () ")"))) (; ";")) (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (} "}"))) (if_statement "if (uVar19 == 0) {\n    if (((param_2 == (undefined4 *)0x3) && (*(short *)(iVar18 + 0x3c) != 4)) &&\n       (*(short *)(iVar18 + 0x3c) != 7)) {\n      *(undefined2 *)(iVar18 + 0x3c) = 6;\n    }\n    FUN_0001b6fc(iStack_a0);\n    return 0;\n  }" (if "if") (parenthesized_expression "(uVar19 == 0)" (( "(") (binary_expression "uVar19 == 0" (identifier "uVar19") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    if (((param_2 == (undefined4 *)0x3) && (*(short *)(iVar18 + 0x3c) != 4)) &&\n       (*(short *)(iVar18 + 0x3c) != 7)) {\n      *(undefined2 *)(iVar18 + 0x3c) = 6;\n    }\n    FUN_0001b6fc(iStack_a0);\n    return 0;\n  }" ({ "{") (if_statement "if (((param_2 == (undefined4 *)0x3) && (*(short *)(iVar18 + 0x3c) != 4)) &&\n       (*(short *)(iVar18 + 0x3c) != 7)) {\n      *(undefined2 *)(iVar18 + 0x3c) = 6;\n    }" (if "if") (parenthesized_expression "(((param_2 == (undefined4 *)0x3) && (*(short *)(iVar18 + 0x3c) != 4)) &&\n       (*(short *)(iVar18 + 0x3c) != 7))" (( "(") (binary_expression "((param_2 == (undefined4 *)0x3) && (*(short *)(iVar18 + 0x3c) != 4)) &&\n       (*(short *)(iVar18 + 0x3c) != 7)" (parenthesized_expression "((param_2 == (undefined4 *)0x3) && (*(short *)(iVar18 + 0x3c) != 4))" (( "(") (binary_expression "(param_2 == (undefined4 *)0x3) && (*(short *)(iVar18 + 0x3c) != 4)" (parenthesized_expression "(param_2 == (undefined4 *)0x3)" (( "(") (binary_expression "param_2 == (undefined4 *)0x3" (identifier "param_2") (== "==") (cast_expression "(undefined4 *)0x3" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x3"))) () ")")) (&& "&&") (parenthesized_expression "(*(short *)(iVar18 + 0x3c) != 4)" (( "(") (binary_expression "*(short *)(iVar18 + 0x3c) != 4" (pointer_expression "*(short *)(iVar18 + 0x3c)" (* "*") (cast_expression "(short *)(iVar18 + 0x3c)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar18 + 0x3c)" (( "(") (binary_expression "iVar18 + 0x3c" (identifier "iVar18") (+ "+") (number_literal "0x3c")) () ")")))) (!= "!=") (number_literal "4")) () ")"))) () ")")) (&& "&&") (parenthesized_expression "(*(short *)(iVar18 + 0x3c) != 7)" (( "(") (binary_expression "*(short *)(iVar18 + 0x3c) != 7" (pointer_expression "*(short *)(iVar18 + 0x3c)" (* "*") (cast_expression "(short *)(iVar18 + 0x3c)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar18 + 0x3c)" (( "(") (binary_expression "iVar18 + 0x3c" (identifier "iVar18") (+ "+") (number_literal "0x3c")) () ")")))) (!= "!=") (number_literal "7")) () ")"))) () ")")) (compound_statement "{\n      *(undefined2 *)(iVar18 + 0x3c) = 6;\n    }" ({ "{") (expression_statement "*(undefined2 *)(iVar18 + 0x3c) = 6;" (assignment_expression "*(undefined2 *)(iVar18 + 0x3c) = 6" (pointer_expression "*(undefined2 *)(iVar18 + 0x3c)" (* "*") (cast_expression "(undefined2 *)(iVar18 + 0x3c)" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar18 + 0x3c)" (( "(") (binary_expression "iVar18 + 0x3c" (identifier "iVar18") (+ "+") (number_literal "0x3c")) () ")")))) (= "=") (number_literal "6")) (; ";")) (} "}"))) (expression_statement "FUN_0001b6fc(iStack_a0);" (call_expression "FUN_0001b6fc(iStack_a0)" (identifier "FUN_0001b6fc") (argument_list "(iStack_a0)" (( "(") (identifier "iStack_a0") () ")"))) (; ";")) (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (labeled_statement "LAB_0001c6c0:\n  if (bVar4) {\n    param_1[0xb] = *(int *)(puVar22 + 0x16fd4) + -0x4fa0;\n    iVar5 = FUN_0001b3ac(param_1,iStack_a0,uVar19);\n    param_1[0xb] = 0;\n    return iVar5;\n  }" (statement_identifier "LAB_0001c6c0") (: ":") (if_statement "if (bVar4) {\n    param_1[0xb] = *(int *)(puVar22 + 0x16fd4) + -0x4fa0;\n    iVar5 = FUN_0001b3ac(param_1,iStack_a0,uVar19);\n    param_1[0xb] = 0;\n    return iVar5;\n  }" (if "if") (parenthesized_expression "(bVar4)" (( "(") (identifier "bVar4") () ")")) (compound_statement "{\n    param_1[0xb] = *(int *)(puVar22 + 0x16fd4) + -0x4fa0;\n    iVar5 = FUN_0001b3ac(param_1,iStack_a0,uVar19);\n    param_1[0xb] = 0;\n    return iVar5;\n  }" ({ "{") (expression_statement "param_1[0xb] = *(int *)(puVar22 + 0x16fd4) + -0x4fa0;" (assignment_expression "param_1[0xb] = *(int *)(puVar22 + 0x16fd4) + -0x4fa0" (subscript_expression "param_1[0xb]" (identifier "param_1") ([ "[") (number_literal "0xb") (] "]")) (= "=") (binary_expression "*(int *)(puVar22 + 0x16fd4) + -0x4fa0" (pointer_expression "*(int *)(puVar22 + 0x16fd4)" (* "*") (cast_expression "(int *)(puVar22 + 0x16fd4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar22 + 0x16fd4)" (( "(") (binary_expression "puVar22 + 0x16fd4" (identifier "puVar22") (+ "+") (number_literal "0x16fd4")) () ")")))) (+ "+") (number_literal "-0x4fa0"))) (; ";")) (expression_statement "iVar5 = FUN_0001b3ac(param_1,iStack_a0,uVar19);" (assignment_expression "iVar5 = FUN_0001b3ac(param_1,iStack_a0,uVar19)" (identifier "iVar5") (= "=") (call_expression "FUN_0001b3ac(param_1,iStack_a0,uVar19)" (identifier "FUN_0001b3ac") (argument_list "(param_1,iStack_a0,uVar19)" (( "(") (identifier "param_1") (, ",") (identifier "iStack_a0") (, ",") (identifier "uVar19") () ")")))) (; ";")) (expression_statement "param_1[0xb] = 0;" (assignment_expression "param_1[0xb] = 0" (subscript_expression "param_1[0xb]" (identifier "param_1") ([ "[") (number_literal "0xb") (] "]")) (= "=") (number_literal "0")) (; ";")) (return_statement "return iVar5;" (return "return") (identifier "iVar5") (; ";")) (} "}")))) (if_statement "if (param_1[0xb] == 0) {\n    return iStack_a0;\n  }" (if "if") (parenthesized_expression "(param_1[0xb] == 0)" (( "(") (binary_expression "param_1[0xb] == 0" (subscript_expression "param_1[0xb]" (identifier "param_1") ([ "[") (number_literal "0xb") (] "]")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    return iStack_a0;\n  }" ({ "{") (return_statement "return iStack_a0;" (return "return") (identifier "iStack_a0") (; ";")) (} "}"))) (if_statement "if (uVar19 < 2) {\n    return iStack_a0;\n  }" (if "if") (parenthesized_expression "(uVar19 < 2)" (( "(") (binary_expression "uVar19 < 2" (identifier "uVar19") (< "<") (number_literal "2")) () ")")) (compound_statement "{\n    return iStack_a0;\n  }" ({ "{") (return_statement "return iStack_a0;" (return "return") (identifier "iStack_a0") (; ";")) (} "}"))) (expression_statement "iVar5 = FUN_0001b3ac(param_1,iStack_a0,uVar19);" (assignment_expression "iVar5 = FUN_0001b3ac(param_1,iStack_a0,uVar19)" (identifier "iVar5") (= "=") (call_expression "FUN_0001b3ac(param_1,iStack_a0,uVar19)" (identifier "FUN_0001b3ac") (argument_list "(param_1,iStack_a0,uVar19)" (( "(") (identifier "param_1") (, ",") (identifier "iStack_a0") (, ",") (identifier "uVar19") () ")")))) (; ";")) (return_statement "return iVar5;" (return "return") (identifier "iVar5") (; ";")) (} "}")))
(translation_unit (function_definition type: (primitive_type) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))))) body: (compound_statement (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (parenthesized_expression (binary_expression left: (number_literal) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal)) right: (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal)))) consequence: (goto_statement label: (statement_identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (subscript_expression argument: (identifier) index: (number_literal)))) right: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (subscript_expression argument: (identifier) index: (number_literal)))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal)))) right: (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier)))))))) consequence: (compound_statement (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (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: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (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: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))))))))) (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (identifier))))) consequence: (compound_statement (return_statement (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (identifier)))))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (subscript_expression argument: (identifier) index: (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: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list))) (labeled_statement label: (statement_identifier) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list))))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) arguments: (argument_list)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) arguments: (argument_list (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (return_statement (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) arguments: (argument_list))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (identifier)))) (return_statement (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 (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (true)))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (true)))))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (number_literal)) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal)))))) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) right: (binary_expression left: (identifier) right: (number_literal)))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) (binary_expression left: (binary_expression left: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal)) right: (identifier)) right: (number_literal)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) arguments: (argument_list))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (identifier)))))) (return_statement (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) arguments: (argument_list (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) arguments: (argument_list))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) arguments: (argument_list (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (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: (identifier) right: (number_literal))))) right: (identifier)))) alternative: (else_clause (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (number_literal)))) (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: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) arguments: (argument_list))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) (return_statement (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 (assignment_expression left: (identifier) right: (number_literal)))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (false)))) alternative: (else_clause (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) right: (number_literal))) right: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))))) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier)))) right: (binary_expression left: (identifier) right: (number_literal)))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (false))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (false))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (true))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (number_literal) (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (identifier) (number_literal)))) right: (binary_expression left: (identifier) right: (number_literal)))))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (identifier)) right: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) arguments: (argument_list))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (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)))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) arguments: (argument_list (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) right: (number_literal))) right: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier))))) consequence: (compound_statement (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) arguments: (argument_list (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (false)))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (true))))))))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))))) (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: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))))) right: (char_literal (character)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (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: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))))) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (false))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (labeled_statement label: (statement_identifier) (do_statement body: (compound_statement (do_statement body: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) 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: (type_identifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) arguments: (argument_list (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: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) arguments: (argument_list))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))))) (goto_statement label: (statement_identifier))))) condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) right: (number_literal))) right: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))) right: (char_literal (character)))))) right: (parenthesized_expression (parenthesized_expression (binary_expression left: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (char_literal (escape_sequence))) right: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) right: (number_literal))))))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) arguments: (argument_list (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (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)))))) arguments: (argument_list (identifier) (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal)) (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier))))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) arguments: (argument_list (identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) arguments: (argument_list (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier))) (return_statement (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (identifier)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (identifier)) right: (binary_expression left: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) right: (number_literal)))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier)))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (identifier))) consequence: (compound_statement (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) arguments: (argument_list (identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) arguments: (argument_list (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) (return_statement (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (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: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (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: (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: (identifier) right: (number_literal))))))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) arguments: (argument_list (identifier) (binary_expression left: (identifier) right: (number_literal)) (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) right: (number_literal))))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) right: (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: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))) right: (number_literal))) right: (number_literal))))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (true))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (binary_expression left: (binary_expression left: (parenthesized_expression (identifier)) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))) right: (number_literal))))))) right: (number_literal)))))) arguments: (argument_list)))) (return_statement (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: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (false))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)) right: (binary_expression left: (binary_expression left: (parenthesized_expression (identifier)) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))) right: (number_literal))))))) right: (number_literal)))))) arguments: (argument_list)))) (return_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: (number_literal))) (if_statement condition: (parenthesized_expression (identifier)) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal)))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (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: (identifier) right: (number_literal))))) right: (identifier)))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) consequence: (compound_statement (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (number_literal)))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (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)))))) arguments: (argument_list (identifier) (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (false)))) alternative: (else_clause (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (false)))) alternative: (else_clause (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (true))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (false)))))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))))) (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (for_statement initializer: (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal))) condition: (comma_expression left: (assignment_expression left: (identifier) right: (identifier)) right: (binary_expression left: (identifier) right: (number_literal))) update: (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) body: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (identifier) right: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (identifier) right: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))))) (while_statement condition: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (identifier)) right: (binary_expression left: (number_literal) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))) body: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (identifier) right: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (identifier) right: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (number_literal))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (parenthesized_expression (identifier)))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) consequence: (goto_statement label: (statement_identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier)))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) (number_literal) (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))) (return_statement (number_literal)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) right: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))))) right: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))) (return_statement (number_literal)))) (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (identifier)) consequence: (compound_statement (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (identifier))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (return_statement (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) consequence: (compound_statement (return_statement (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (return_statement (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (identifier))))) (return_statement (identifier)))))

int MASKED(int *param_1,undefined4 *param_2)

{
  int *piVar1;
  bool bVar2;
  bool bVar3;
  bool bVar4;
  int iVar5;
  int iVar6;
  int iVar7;
  int iVar8;
  int iVar9;
  undefined4 *puVar10;
  uint uVar11;
  int iVar12;
  undefined4 uVar13;
  int iVar14;
  undefined2 uVar15;
  int *piVar16;
  int iVar17;
  int iVar18;
  uint uVar19;
  uint uVar20;
  code *pcVar21;
  undefined *puVar22;
  uint uVar23;
  int iVar24;
  int iStack_a4;
  int iStack_a0;
  uint uStack_94;
  undefined1 *puStack_90;
  int iStack_8c;
  int iStack_7c;
  undefined4 local_28;
  undefined4 local_24;
  undefined4 local_20;
  undefined4 local_1c;
  int local_c;
  
  local_c = *(int *)PTR___stack_chk_guard_000333f4;
  if ((param_1[0xc] & 0x102U) == 0) {
    iVar5 = param_2[1];
    if ((iVar5 != 0) && (-1 < *(int *)(iVar5 + 0x30))) {
      piVar16 = (int *)param_1[0xe];
      pcVar21 = (code *)PTR_abort_000332e8;
      if (piVar16[4] == 0 && piVar16[5] == 0) goto LAB_0001c120;
      if ((*piVar16 == param_2[0x16]) && (piVar16[1] == param_2[0x17])) {
        piVar1 = param_2 + 0x12;
        param_2 = (undefined4 *)piVar16[2];
        if ((param_2 == (undefined4 *)0x0) &&
           (param_2 = (undefined4 *)piVar16[3], param_2 == (undefined4 *)*piVar1)) {
          piVar16[3] = *(int *)(iVar5 + 0x48);
          piVar16[2] = 0;
          piVar16 = (int *)param_1[0xe];
          param_2 = *(undefined4 **)(iVar5 + 0x5c);
          param_1 = *(int **)(iVar5 + 0x58);
          piVar16[1] = (int)param_2;
          *piVar16 = (int)param_1;
        }
      }
    }
LAB_0001c0f8:
    if (local_c == *(int *)PTR___stack_chk_guard_000333f4) {
      return *(int *)PTR___stack_chk_guard_000333f4;
    }
  }
  else {
    local_24 = param_2[0x12];
    local_28 = 0;
    local_1c = param_2[0x17];
    local_20 = param_2[0x16];
    param_2 = &local_28;
    param_1 = (int *)hash_delete(param_1[0xe]);
    if (param_1 != (int *)0x0) {
      (*(code *)PTR_free_000333fc)();
      goto LAB_0001c0f8;
    }
    pcVar21 = (code *)PTR_abort_000332e8;
    (*(code *)PTR_abort_000332e8)();
LAB_0001c120:
    (*pcVar21)();
  }
  puVar22 = PTR___stack_chk_fail_000333dc;
  (*(code *)PTR___stack_chk_fail_000333dc)();
  iVar18 = *param_1;
  iVar5 = *(int *)(iVar18 + 0xc);
  if (iVar5 != 0) {
    iStack_7c = (**(code **)(puVar22 + 0x172d0))();
    if (iStack_7c < 0) {
      (**(code **)(puVar22 + 0x17194))(*(undefined4 *)(iVar18 + 0xc));
      *(undefined4 *)(iVar18 + 0xc) = 0;
      if (param_2 != (undefined4 *)0x3) {
        return 0;
      }
      *(undefined2 *)(iVar18 + 0x3c) = 4;
      puVar10 = (undefined4 *)(**(code **)(puVar22 + 0x17220))();
      *(undefined4 *)(iVar18 + 0x20) = *puVar10;
      return 0;
    }
    if (param_1[0xb] == 0) {
      uStack_94 = 100000;
      bVar2 = true;
    }
    else {
      uStack_94 = 0xffffffff;
      bVar2 = true;
    }
    goto LAB_0001c1b8;
  }
  uVar19 = param_1[0xc];
  if ((uVar19 & 0x204) == 0x200) {
    iVar17 = param_1[8];
  }
  else {
    iVar17 = -100;
  }
  uVar20 = uVar19 & 0x10;
  if (((uVar20 != 0) && (uVar20 = 0x20000, (uVar19 & 1) != 0)) &&
     (uVar20 = *(uint *)(iVar18 + 0x30), uVar20 != 0)) {
    uVar20 = 0x20000;
  }
  iStack_7c = openat_safer(iVar17,*(undefined4 *)(iVar18 + 0x18),
                           (uVar19 & 0x800) << 7 | uVar20 | 0x90880);
  if (iStack_7c < 0) {
LAB_0001c3e8:
    *(undefined4 *)(iVar18 + 0xc) = 0;
    if (param_2 == (undefined4 *)0x3) {
      *(undefined2 *)(iVar18 + 0x3c) = 4;
      puVar10 = (undefined4 *)(**(code **)(puVar22 + 0x17220))();
      *(undefined4 *)(iVar18 + 0x20) = *puVar10;
    }
    return 0;
  }
  iVar17 = (**(code **)(puVar22 + 0x171f0))(iStack_7c);
  if (iVar17 == 0) {
    puVar10 = (undefined4 *)(**(code **)(puVar22 + 0x17220))();
    uVar13 = *puVar10;
    (**(code **)(puVar22 + 0x17198))(iStack_7c);
    *puVar10 = uVar13;
    goto LAB_0001c3e8;
  }
  *(int *)(iVar18 + 0xc) = iVar17;
  if (*(short *)(iVar18 + 0x3c) == 0xb) {
    uVar15 = FUN_0001b18c(param_1,iVar18,0);
    *(undefined2 *)(iVar18 + 0x3c) = uVar15;
  }
  else if ((param_1[0xc] & 0x100U) != 0) {
    MASKED(param_1,iVar18);
    FUN_0001b18c(param_1,iVar18,0);
    iVar17 = FUN_0001bad0(param_1,iVar18);
    if (iVar17 == 0) {
      puVar10 = (undefined4 *)(**(code **)(puVar22 + 0x17220))();
      *puVar10 = 0xc;
      return 0;
    }
  }
  if (param_1[0xb] == 0) {
    uStack_94 = 100000;
  }
  else {
    uStack_94 = 0xffffffff;
  }
  if (param_2 == (undefined4 *)0x2) {
    bVar2 = false;
  }
  else {
    if ((((param_1[0xc] & 0x38U) == 0x18) && (*(int *)(iVar18 + 100) == 2)) &&
       (iVar17 = FUN_0001ba08(iVar18,iStack_7c), iVar17 != 0)) {
      bVar2 = false;
      if (param_2 != (undefined4 *)0x3) {
        bVar2 = false;
        goto LAB_0001c1b8;
      }
      uVar19 = param_1[0xc];
    }
    else {
      bVar2 = true;
      uVar19 = param_1[0xc];
    }
    if ((uVar19 & 0x200) != 0) {
      iStack_7c = rpl_fcntl(iStack_7c,0x406,3);
    }
    if ((iStack_7c < 0) || (iVar17 = FUN_0001bd68(param_1,iVar18,iStack_7c,0), iVar17 != 0)) {
      if ((bVar2) && (param_2 == (undefined4 *)0x3)) {
        puVar10 = (undefined4 *)(**(code **)(puVar22 + 0x17220))();
        *(undefined4 *)(iVar18 + 0x20) = *puVar10;
      }
      *(ushort *)(iVar18 + 0x3e) = *(ushort *)(iVar18 + 0x3e) | 1;
      (**(code **)(puVar22 + 0x17194))(*(undefined4 *)(iVar18 + 0xc));
      *(undefined4 *)(iVar18 + 0xc) = 0;
      if (((param_1[0xc] & 0x200U) != 0) && (-1 < iStack_7c)) {
        (**(code **)(puVar22 + 0x17198))(iStack_7c);
        *(undefined4 *)(iVar18 + 0xc) = 0;
      }
      bVar2 = false;
    }
    else {
      bVar2 = true;
    }
  }
LAB_0001c1b8:
  iVar17 = *(int *)(iVar18 + 0x28) + -1;
  if (*(char *)(*(int *)(iVar18 + 0x1c) + iVar17) != '/') {
    iVar17 = *(int *)(iVar18 + 0x28);
  }
  if ((param_1[0xc] & 4U) == 0) {
    puStack_90 = (undefined1 *)0x0;
  }
  else {
    puStack_90 = (undefined1 *)(param_1[6] + iVar17) + 1;
    *(undefined1 *)(param_1[6] + iVar17) = 0x2f;
  }
  uVar20 = iVar17 + 1;
  uVar23 = param_1[9] - uVar20;
  iVar6 = *(int *)(iVar18 + 0x30);
  bVar4 = false;
  iStack_8c = 0;
  iStack_a4 = 0;
  uVar19 = 0;
  iStack_a0 = 0;
  iVar7 = *(int *)(puVar22 + 0x16fd4);
  iVar8 = *(int *)(puVar22 + 0x16fd4);
  iVar9 = *(int *)(puVar22 + 0x16fd4);
LAB_0001c96c:
  do {
    do {
      if (*(int *)(iVar18 + 0xc) == 0) goto LAB_0001c66c;
      piVar16 = (int *)(**(code **)(puVar22 + 0x17220))();
      *piVar16 = 0;
      puVar10 = (undefined4 *)(**(code **)(puVar22 + 0x171d8))(*(undefined4 *)(iVar18 + 0xc));
      if (puVar10 == (undefined4 *)0x0) {
        if (*piVar16 != 0) {
          *(int *)(iVar18 + 0x20) = *piVar16;
          uVar15 = 7;
          if ((iVar5 == 0) && (uVar19 == 0)) {
            uVar15 = 4;
          }
          *(undefined2 *)(iVar18 + 0x3c) = uVar15;
        }
        if (*(int *)(iVar18 + 0xc) != 0) {
          (**(code **)(puVar22 + 0x17194))();
          *(undefined4 *)(iVar18 + 0xc) = 0;
        }
        goto LAB_0001c66c;
      }
    } while ((((param_1[0xc] & 0x20U) == 0) && (*(char *)((int)puVar10 + 0x13) == '.')) &&
            ((*(char *)(puVar10 + 5) == '\0' || ((puVar10[5] & 0xffff0000) == 0x2e000000))));
    uVar11 = (**(code **)(puVar22 + 0x17240))((int)puVar10 + 0x13);
    iVar12 = (*(code *)(iVar7 + -0x4b14))(param_1,(int)puVar10 + 0x13,uVar11);
    if (iVar12 == 0) {
LAB_0001c794:
      iVar5 = *piVar16;
      (**(code **)(puVar22 + 0x172c8))(iVar12);
      FUN_0001b6fc(iStack_a0);
      (**(code **)(puVar22 + 0x17194))(*(undefined4 *)(iVar18 + 0xc));
      *(undefined4 *)(iVar18 + 0xc) = 0;
      *(undefined2 *)(iVar18 + 0x3c) = 7;
      param_1[0xc] = param_1[0xc] | 0x4000;
      *piVar16 = iVar5;
      return 0;
    }
    if (uVar23 <= uVar11) {
      iVar24 = param_1[6];
      iVar14 = FUN_0001b0cc(param_1,iVar17 + 2 + uVar11);
      if (iVar14 == 0) goto LAB_0001c794;
      if ((param_1[6] != iVar24) && (iStack_8c = iVar14, (param_1[0xc] & 4U) != 0)) {
        puStack_90 = (undefined1 *)(param_1[6] + uVar20);
      }
      uVar23 = param_1[9] - uVar20;
    }
    if (uVar20 + uVar11 < uVar20) {
      (**(code **)(puVar22 + 0x172c8))(iVar12);
      FUN_0001b6fc(iStack_a0);
      (**(code **)(puVar22 + 0x17194))(*(undefined4 *)(iVar18 + 0xc));
      *(undefined4 *)(iVar18 + 0xc) = 0;
      *(undefined2 *)(iVar18 + 0x3c) = 7;
      param_1[0xc] = param_1[0xc] | 0x4000;
      *piVar16 = 0x4e;
      return 0;
    }
    *(int *)(iVar12 + 0x30) = iVar6 + 1;
    *(int *)(iVar12 + 4) = *param_1;
    *(uint *)(iVar12 + 0x28) = uVar20 + uVar11;
    uVar13 = *puVar10;
    *(undefined4 *)(iVar12 + 0x5c) = puVar10[1];
    *(undefined4 *)(iVar12 + 0x58) = uVar13;
    if ((param_1[0xc] & 4U) == 0) {
      *(int *)(iVar12 + 0x18) = iVar12 + 0xe8;
      iVar14 = param_1[0xb];
    }
    else {
      *(undefined4 *)(iVar12 + 0x18) = *(undefined4 *)(iVar12 + 0x1c);
      (**(code **)(puVar22 + 0x172cc))(puStack_90,iVar12 + 0xe8,*(int *)(iVar12 + 0x34) + 1);
      iVar14 = param_1[0xb];
    }
    if ((iVar14 == 0) || ((param_1[0xc] & 0x400U) != 0)) {
      if (((param_1[0xc] & 0x18U) == 0x18) && ((*(byte *)((int)puVar10 + 0x12) & 0xfb) != 0)) {
        *(undefined2 *)(iVar12 + 0x3c) = 0xb;
        bVar3 = true;
        if (*(byte *)((int)puVar10 + 0x12) < 0xd) {
                    /* WARNING: Could not recover jumptable at 0x0001c904. Too many branches */
                    /* WARNING: Treating indirect jump as call */
          iVar5 = (*(code *)(puVar22 +
                            *(int *)(iVar9 + 0x2d30 + (uint)*(byte *)((int)puVar10 + 0x12) * 4) +
                            0x1ef9c))();
          return iVar5;
        }
      }
      else {
        *(undefined2 *)(iVar12 + 0x3c) = 0xb;
        bVar3 = false;
        if (*(byte *)((int)puVar10 + 0x12) < 0xd) {
                    /* WARNING: Could not recover jumptable at 0x0001cab8. Too many branches */
                    /* WARNING: Treating indirect jump as call */
          iVar5 = (*(code *)(puVar22 +
                            *(int *)(*(int *)(puVar22 + 0x16fd4) + 0x2d64 +
                                    (uint)*(byte *)((int)puVar10 + 0x12) * 4) + 0x1ef9c))();
          return iVar5;
        }
      }
      *(undefined4 *)(iVar12 + 0x60) = 0;
      if (bVar3) {
        uVar13 = 1;
      }
      else {
        uVar13 = 2;
      }
      *(undefined4 *)(iVar12 + 0x84) = uVar13;
      *(undefined4 *)(iVar12 + 0x80) = 0;
    }
    else {
      uVar15 = FUN_0001b18c(param_1,iVar12,0);
      *(undefined2 *)(iVar12 + 0x3c) = uVar15;
    }
    *(undefined4 *)(iVar12 + 8) = 0;
    iVar14 = iVar12;
    if (iStack_a0 != 0) {
      *(int *)(iStack_a4 + 8) = iVar12;
      iVar14 = iStack_a0;
    }
    iStack_a0 = iVar14;
    iStack_a4 = iVar12;
    if (uVar19 == 10000) {
      if (param_1[0xb] != 0) {
LAB_0001cb74:
        uVar19 = 0x2711;
        goto LAB_0001c96c;
      }
      iVar12 = (*(code *)(iVar8 + -0x47a8))(iVar18,iStack_7c);
      if (iVar12 == 0x6969) {
        bVar4 = false;
      }
      else if (iVar12 == 0x1021994) {
        bVar4 = false;
      }
      else {
        if (iVar12 != -0xacb2be) {
          bVar4 = true;
          goto LAB_0001cb74;
        }
        bVar4 = false;
      }
    }
    uVar19 = uVar19 + 1;
  } while (uVar19 < uStack_94);
LAB_0001c66c:
  if (iStack_8c != 0) {
    iVar6 = param_1[6];
    for (iVar17 = param_1[1]; iVar7 = iStack_a0, iVar17 != 0; iVar17 = *(int *)(iVar17 + 8)) {
      if (*(int *)(iVar17 + 0x18) != iVar17 + 0xe8) {
        *(int *)(iVar17 + 0x18) = iVar6 + (*(int *)(iVar17 + 0x18) - *(int *)(iVar17 + 0x1c));
      }
      *(int *)(iVar17 + 0x1c) = iVar6;
    }
    while (iVar17 = iVar7, -1 < *(int *)(iVar17 + 0x30)) {
      if (*(int *)(iVar17 + 0x18) != iVar17 + 0xe8) {
        *(int *)(iVar17 + 0x18) = iVar6 + (*(int *)(iVar17 + 0x18) - *(int *)(iVar17 + 0x1c));
      }
      *(int *)(iVar17 + 0x1c) = iVar6;
      iVar7 = *(int *)(iVar17 + 8);
      if (*(int *)(iVar17 + 8) == 0) {
        iVar7 = *(int *)(iVar17 + 4);
      }
    }
  }
  if ((param_1[0xc] & 4U) != 0) {
    if ((param_1[9] == uVar20) || (uVar19 == 0)) {
      puStack_90 = puStack_90 + -1;
    }
    *puStack_90 = 0;
  }
  if ((iVar5 == 0) && (bVar2)) {
    if ((param_2 != (undefined4 *)0x1) && (uVar19 != 0)) goto LAB_0001c6c0;
    if (*(int *)(iVar18 + 0x30) == 0) {
      iVar5 = FUN_0001bcbc(param_1);
    }
    else {
      iVar5 = FUN_0001bd68(param_1,*(undefined4 *)(iVar18 + 4),0xffffffff,
                           *(int *)(puVar22 + 0x16fd4) + 0x2d20);
    }
    if (iVar5 != 0) {
      *(undefined2 *)(iVar18 + 0x3c) = 7;
      param_1[0xc] = param_1[0xc] | 0x4000;
      FUN_0001b6fc(iStack_a0);
      return 0;
    }
  }
  if (uVar19 == 0) {
    if (((param_2 == (undefined4 *)0x3) && (*(short *)(iVar18 + 0x3c) != 4)) &&
       (*(short *)(iVar18 + 0x3c) != 7)) {
      *(undefined2 *)(iVar18 + 0x3c) = 6;
    }
    FUN_0001b6fc(iStack_a0);
    return 0;
  }
LAB_0001c6c0:
  if (bVar4) {
    param_1[0xb] = *(int *)(puVar22 + 0x16fd4) + -0x4fa0;
    iVar5 = FUN_0001b3ac(param_1,iStack_a0,uVar19);
    param_1[0xb] = 0;
    return iVar5;
  }
  if (param_1[0xb] == 0) {
    return iStack_a0;
  }
  if (uVar19 < 2) {
    return iStack_a0;
  }
  iVar5 = FUN_0001b3ac(param_1,iStack_a0,uVar19);
  return iVar5;
}

