
FTS * fts_open(char **argv,int options,_func_int_FTSENT_ptr_ptr_FTSENT_ptr_ptr *compar)

{
  undefined *puVar1;
  undefined *puVar2;
  undefined3 extraout_var;
  undefined3 extraout_var_00;
  FTS *sp;
  uint uVar3;
  _Bool _Var13;
  FTSENT *pFVar4;
  code *pcVar5;
  uint uVar6;
  FTSENT *pFVar7;
  FTSENT *pFVar8;
  _ftsent *p_Var9;
  undefined4 *puVar10;
  ushort uVar12;
  int iVar11;
  char *pcVar14;
  char *pcVar15;
  FTS *pFVar16;
  uint uVar17;
  FTSENT *pFVar18;
  char **ppcVar19;
  code *pcVar20;
  code *local_3c;
  FTSENT *local_30;
  
  if ((((options & 0xffffe000U) != 0) || ((options & 0x204U) == 0x204)) || ((options & 0x12U) == 0))
  {
    puVar10 = (undefined4 *)(*(code *)PTR___errno_location_00043520)();
    *puVar10 = 0x16;
    return (FTS *)0x0;
  }
  sp = (FTS *)(*(code *)PTR_calloc_0004341c)(0x60,1);
  if (sp == (FTS *)0x0) {
    return (FTS *)0x0;
  }
  sp->fts_compar = (_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *)compar;
  if ((options & 2U) == 0) {
    sp->fts_options = options;
  }
  else {
    sp->fts_options = options & 0xfffffdffU | 4;
  }
  pcVar15 = *argv;
  sp->fts_cwd_fd = -100;
  if (pcVar15 == (char *)0x0) {
    pFVar16 = (FTS *)0x1000;
  }
  else {
    uVar17 = 0;
    ppcVar19 = argv;
    do {
      ppcVar19 = ppcVar19 + 1;
      uVar3 = (*(code *)PTR_strlen_00043564)();
      if (uVar17 < uVar3) {
        uVar17 = uVar3;
      }
    } while (*ppcVar19 != (char *)0x0);
    pFVar16 = (FTS *)(uVar17 + 1);
    if (pFVar16 < (FTS *)0x1000) {
      pFVar16 = (FTS *)0x1000;
    }
  }
  _Var13 = fts_palloc((FTS *)&sp->fts_path,(size_t)&sp->fts_pathlen,pFVar16);
  puVar2 = PTR_LAB_0004326c;
  puVar1 = PTR_s_ore_than_one_of__i___f___n__only_00043128;
  if (CONCAT31(extraout_var,_Var13) == 0) goto LAB_00029ae0;
  if (*argv == (char *)0x0) {
    pFVar4 = (FTSENT *)0x0;
LAB_00029b78:
    pFVar8 = (_ftsent *)0x0;
LAB_000299c0:
    local_3c = (code *)(puVar2 + 0x7d20);
    p_Var9 = (_ftsent *)(*local_3c)(sp,puVar1 + 0x44c,0);
    sp->fts_cur = p_Var9;
    if (p_Var9 != (_ftsent *)0x0) {
      p_Var9->fts_link = pFVar8;
      p_Var9->fts_level = 1;
      pFVar16 = (FTS *)sp->fts_options;
      p_Var9->fts_info = 9;
      _Var13 = setup_dir(pFVar16,(FTS *)&sp->fts_cycle);
      if (CONCAT31(extraout_var_00,_Var13) != 0) {
        if (((uint)sp->fts_options & 0x204) == 0) {
          iVar11 = diropen((FTS *)sp->fts_cwd_fd,(char *)sp->fts_options,
                           (FTS *)(PTR_s_ore_than_one_of__i___f___n__only_00043128 + 0xc4c));
          sp->fts_rfd = iVar11;
          if (iVar11 < 0) {
            sp->fts_options = sp->fts_options | 4;
          }
        }
        i_ring_init(&sp->fts_fd_ring,-1);
        return sp;
      }
    }
LAB_00029aac:
    fts_lfree(pFVar8);
    (*(code *)PTR_free_0004363c)(pFVar4);
  }
  else {
    pcVar20 = (code *)(PTR_LAB_0004326c + 0x7d20);
    pFVar4 = fts_alloc(sp,PTR_s_ore_than_one_of__i___f___n__only_00043128 + 0x44c,0);
    if (pFVar4 != (FTSENT *)0x0) {
      pcVar15 = *argv;
      pFVar4->fts_level = -1;
      pFVar4->fts_n_dirs_remaining = 0xffffffff;
      if (compar == (_func_int_FTSENT_ptr_ptr_FTSENT_ptr_ptr *)0x0) {
        uVar17 = 1;
      }
      else {
        uVar17 = (uint)(sp->fts_options << 0x15) >> 0x1f;
      }
      if (pcVar15 == (char *)0x0) goto LAB_00029b78;
      local_30 = (FTSENT *)0x0;
      uVar3 = 0;
      pcVar5 = (code *)(PTR_s_ore_than_one_of__i___f___n__only_00043128 + -0x7d80);
      pFVar18 = (FTSENT *)0x0;
      do {
        uVar6 = (*(code *)PTR_strlen_00043564)(pcVar15);
        if ((((options & 0x1000U) == 0) && (2 < uVar6)) &&
           (pcVar14 = pcVar15 + uVar6, pcVar14[-1] == '/')) {
          do {
            if (pcVar14[-2] != '/') break;
            uVar6 = uVar6 - 1;
            pcVar14 = pcVar15 + uVar6;
          } while (uVar6 != 1);
        }
        pFVar7 = (FTSENT *)(*pcVar20)(sp,pcVar15,uVar6);
        pFVar8 = pFVar18;
        if (pFVar7 == (FTSENT *)0x0) goto LAB_00029aac;
        pFVar7->fts_level = 0;
        pFVar7->fts_parent = pFVar4;
        pFVar7->fts_accpath = (char *)(pFVar7 + 1);
        pFVar8 = pFVar7;
        if (uVar17 == 0) {
          uVar12 = (*pcVar5)(sp->fts_cwd_fd,&sp->fts_options,pFVar7,0);
          pFVar7->fts_info = uVar12;
          if (compar != (_func_int_FTSENT_ptr_ptr_FTSENT_ptr_ptr *)0x0) goto LAB_00029978;
          pFVar7->fts_link = (_ftsent *)0x0;
          if (pFVar18 != (FTSENT *)0x0) goto LAB_00029b5c;
        }
        else if (pFVar18 == (FTSENT *)0x0) {
          uVar12 = (*pcVar5)(sp->fts_cwd_fd,&sp->fts_options,pFVar7,0);
          pFVar7->fts_info = uVar12;
          if (compar != (_func_int_FTSENT_ptr_ptr_FTSENT_ptr_ptr *)0x0) goto LAB_00029978;
          pFVar7->fts_link = (_ftsent *)0x0;
        }
        else {
          *(undefined4 *)((int)&pFVar7->fts_statp[0].st_size + 4) = 2;
          *(undefined4 *)&pFVar7->fts_statp[0].st_size = 0;
          pFVar7->fts_info = 0xb;
          if (compar == (_func_int_FTSENT_ptr_ptr_FTSENT_ptr_ptr *)0x0) {
            pFVar7->fts_link = (_ftsent *)0x0;
LAB_00029b5c:
            local_30->fts_link = pFVar7;
            pFVar8 = pFVar18;
          }
          else {
LAB_00029978:
            pFVar7->fts_link = pFVar18;
            pFVar7 = local_30;
          }
        }
        local_30 = pFVar7;
        argv = argv + 1;
        pcVar15 = *argv;
        uVar3 = uVar3 + 1;
        pFVar18 = pFVar8;
      } while (pcVar15 != (char *)0x0);
      if ((compar != (_func_int_FTSENT_ptr_ptr_FTSENT_ptr_ptr *)0x0) && (1 < uVar3)) {
        pFVar8 = fts_sort(sp,pFVar8,uVar3);
      }
      goto LAB_000299c0;
    }
  }
  (*(code *)PTR_free_0004363c)(sp->fts_path);
LAB_00029ae0:
  (*(code *)PTR_free_0004363c)(sp);
  return (FTS *)0x0;
}



int * fts_open(int *param_1,uint param_2,int param_3)

{
  undefined *puVar1;
  undefined *puVar2;
  int *piVar3;
  uint uVar4;
  code *pcVar5;
  uint uVar6;
  undefined4 *puVar7;
  undefined2 uVar8;
  int iVar9;
  int iVar10;
  int iVar11;
  uint uVar12;
  int *piVar13;
  int iVar14;
  code *pcVar15;
  code *local_3c;
  int local_30;
  
  if ((((param_2 & 0xffffe000) != 0) || ((param_2 & 0x204) == 0x204)) || ((param_2 & 0x12) == 0)) {
    puVar7 = (undefined4 *)(*(code *)PTR___errno_location_00043520)();
    *puVar7 = 0x16;
    return (int *)0x0;
  }
  piVar3 = (int *)(*(code *)PTR_calloc_0004341c)(0x60,1);
  if (piVar3 == (int *)0x0) {
    return (int *)0x0;
  }
  piVar3[0xb] = param_3;
  if ((param_2 & 2) == 0) {
    piVar3[0xc] = param_2;
  }
  else {
    piVar3[0xc] = param_2 & 0xfffffdff | 4;
  }
  iVar10 = *param_1;
  piVar3[8] = -100;
  if (iVar10 == 0) {
    uVar12 = 0x1000;
  }
  else {
    uVar12 = 0;
    piVar13 = param_1;
    do {
      piVar13 = piVar13 + 1;
      uVar4 = (*(code *)PTR_strlen_00043564)();
      if (uVar12 < uVar4) {
        uVar12 = uVar4;
      }
    } while (*piVar13 != 0);
    uVar12 = uVar12 + 1;
    if (uVar12 < 0x1000) {
      uVar12 = 0x1000;
    }
  }
  iVar10 = FUN_000284b8(piVar3 + 6,piVar3 + 9,uVar12);
  puVar2 = PTR_LAB_0004326c;
  puVar1 = PTR_s_ore_than_one_of__i___f___n__only_00043128;
  if (iVar10 == 0) goto LAB_00029ae0;
  if (*param_1 == 0) {
    iVar10 = 0;
LAB_00029b78:
    iVar9 = 0;
LAB_000299c0:
    local_3c = (code *)(puVar2 + 0x7d20);
    iVar14 = (*local_3c)(piVar3,puVar1 + 0x44c,0);
    *piVar3 = iVar14;
    if (iVar14 != 0) {
      *(int *)(iVar14 + 8) = iVar9;
      *(undefined4 *)(iVar14 + 0x30) = 1;
      iVar11 = piVar3[0xc];
      *(undefined2 *)(iVar14 + 0x3c) = 9;
      iVar14 = FUN_0002857c(iVar11,piVar3 + 0xe);
      if (iVar14 != 0) {
        if ((piVar3[0xc] & 0x204U) == 0) {
          iVar10 = FUN_00028630(piVar3[8],piVar3[0xc],
                                PTR_s_ore_than_one_of__i___f___n__only_00043128 + 0xc4c);
          piVar3[7] = iVar10;
          if (iVar10 < 0) {
            piVar3[0xc] = piVar3[0xc] | 4;
          }
        }
        i_ring_init(piVar3 + 0xf,0xffffffff);
        return piVar3;
      }
    }
LAB_00029aac:
    FUN_00027ddc(iVar9);
    (*(code *)PTR_free_0004363c)(iVar10);
  }
  else {
    pcVar15 = (code *)(PTR_LAB_0004326c + 0x7d20);
    iVar10 = FUN_00027d20(piVar3,PTR_s_ore_than_one_of__i___f___n__only_00043128 + 0x44c,0);
    if (iVar10 != 0) {
      iVar14 = *param_1;
      *(undefined4 *)(iVar10 + 0x30) = 0xffffffff;
      *(undefined4 *)(iVar10 + 0x38) = 0xffffffff;
      if (param_3 == 0) {
        uVar12 = 1;
      }
      else {
        uVar12 = (uint)(piVar3[0xc] << 0x15) >> 0x1f;
      }
      if (iVar14 == 0) goto LAB_00029b78;
      local_30 = 0;
      uVar4 = 0;
      pcVar5 = (code *)(PTR_s_ore_than_one_of__i___f___n__only_00043128 + -0x7d80);
      iVar11 = 0;
      do {
        uVar6 = (*(code *)PTR_strlen_00043564)(iVar14);
        if ((((param_2 & 0x1000) == 0) && (2 < uVar6)) &&
           (iVar9 = iVar14 + uVar6, *(char *)(iVar9 + -1) == '/')) {
          do {
            if (*(char *)(iVar9 + -2) != '/') break;
            uVar6 = uVar6 - 1;
            iVar9 = iVar14 + uVar6;
          } while (uVar6 != 1);
        }
        iVar14 = (*pcVar15)(piVar3,iVar14,uVar6);
        iVar9 = iVar11;
        if (iVar14 == 0) goto LAB_00029aac;
        *(undefined4 *)(iVar14 + 0x30) = 0;
        *(int *)(iVar14 + 4) = iVar10;
        *(int *)(iVar14 + 0x18) = iVar14 + 0xe8;
        iVar9 = iVar14;
        if (uVar12 == 0) {
          uVar8 = (*pcVar5)(piVar3[8],piVar3 + 0xc,iVar14,0);
          *(undefined2 *)(iVar14 + 0x3c) = uVar8;
          if (param_3 != 0) goto LAB_00029978;
          *(undefined4 *)(iVar14 + 8) = 0;
          if (iVar11 != 0) goto LAB_00029b5c;
        }
        else if (iVar11 == 0) {
          uVar8 = (*pcVar5)(piVar3[8],piVar3 + 0xc,iVar14,0);
          *(undefined2 *)(iVar14 + 0x3c) = uVar8;
          if (param_3 != 0) goto LAB_00029978;
          *(undefined4 *)(iVar14 + 8) = 0;
        }
        else {
          *(undefined4 *)(iVar14 + 0x84) = 2;
          *(undefined4 *)(iVar14 + 0x80) = 0;
          *(undefined2 *)(iVar14 + 0x3c) = 0xb;
          if (param_3 == 0) {
            *(undefined4 *)(iVar14 + 8) = 0;
LAB_00029b5c:
            *(int *)(local_30 + 8) = iVar14;
            iVar9 = iVar11;
          }
          else {
LAB_00029978:
            *(int *)(iVar14 + 8) = iVar11;
            iVar14 = local_30;
          }
        }
        local_30 = iVar14;
        param_1 = param_1 + 1;
        iVar14 = *param_1;
        uVar4 = uVar4 + 1;
        iVar11 = iVar9;
      } while (iVar14 != 0);
      if ((param_3 != 0) && (1 < uVar4)) {
        iVar9 = FUN_00027be4(piVar3,iVar9,uVar4);
      }
      goto LAB_000299c0;
    }
  }
  (*(code *)PTR_free_0004363c)(piVar3[6]);
LAB_00029ae0:
  (*(code *)PTR_free_0004363c)(piVar3);
  return (int *)0x0;
}


lui gp,0x2
addiu gp,gp,0x1974
addu gp,gp,t9
addiu sp,sp,-0x58
li v0,-0x2000
sw gp,0x10(sp)
and v0,a1,v0
sw ra,0x54(sp)
sw s8,0x50(sp)
sw s7,0x4c(sp)
sw s6,0x48(sp)
sw s5,0x44(sp)
sw s4,0x40(sp)
sw s3,0x3c(sp)
sw s2,0x38(sp)
sw s1,0x34(sp)
bne v0,zero,0x00029a64
_sw s0,0x30(sp)
li v0,0x204
andi v1,a1,0x204
beq v1,v0,0x00029a64
_or s2,a1,zero
andi v0,a1,0x12
beq v0,zero,0x00029a64
_lw t9,-0x7cd4(gp)
or s1,a0,zero
li a1,0x1
li a0,0x60
jalr t9
_or s5,a2,zero
lw gp,0x10(sp)
beq v0,zero,0x00029a30
_or s0,v0,zero
andi v0,s2,0x2
bne v0,zero,0x00029b24
_sw s5,0x2c(s0)
sw s2,0x30(s0)
lw a0,0x0(s1)
li v0,-0x64
beq a0,zero,0x00029bf4
_sw v0,0x20(s0)
or s3,zero,zero
or s4,s1,zero
lw t9,-0x7b8c(gp)
jalr t9
_addiu s4,s4,0x4
lw a0,0x0(s4)
sltu v1,s3,v0
lw gp,0x10(sp)
bne a0,zero,0x00029828
_movn s3,v0,v1
addiu a2,s3,0x1
li v0,0x1000
sltiu v1,a2,0x1000
movn a2,v0,v1
addiu a1,s0,0x24
lw t9,-0x7fc8(gp)
addiu t9,t9,-0x7b48
bal 0x000284b8
_addiu a0,s0,0x18
beq v0,zero,0x00029ae0
_lw gp,0x10(sp)
lw v0,-0x7fc8(gp)
lw s6,0x0(s1)
beq s6,zero,0x00029b6c
_sw v0,0x2c(sp)
lw s7,-0x7e84(gp)
or a2,zero,zero
addiu a1,v0,0x44c
or a0,s0,zero
addiu t9,s7,0x7d20
bal 0x00027d20
_sw t9,0x1c(sp)
lw gp,0x10(sp)
beq v0,zero,0x00029ad0
_or s6,v0,zero
li v0,-0x1
lw s7,0x0(s1)
sw v0,0x30(s6)
beq s5,zero,0x00029bec
_sw v0,0x38(s6)
lw s8,0x30(s0)
ext s8,s8,0xa,0x1
beq s7,zero,0x00029b78
_addiu v0,s0,0x30
sw zero,0x28(sp)
or s4,zero,zero
sw v0,0x20(sp)
or s3,zero,zero
lw v0,-0x7fc8(gp)
andi s2,s2,0x1000
addiu v0,v0,-0x7d80
sw v0,0x24(sp)
lw t9,-0x7b8c(gp)
jalr t9
_or a0,s7,zero
bne s2,zero,0x00029928
_lw t9,0x1c(sp)
sltiu v1,v0,0x3
bne v1,zero,0x0002992c
_or a1,s7,zero
addu v1,s7,v0
li a0,0x2f
lb a2,-0x1(v1)
beq a2,a0,0x00029b38
_nop
lw t9,0x1c(sp)
or a1,s7,zero
or a2,v0,zero
jalr t9
_or a0,s0,zero
lw gp,0x10(sp)
beq v0,zero,0x00029aac
_or s7,v0,zero
addiu v0,v0,0xe8
sw zero,0x30(s7)
sw s6,0x4(s7)
beq s8,zero,0x00029b80
_sw v0,0x18(s7)
beq s3,zero,0x00029bb8
_li a1,0x2
or a0,zero,zero
li v0,0xb
sw a1,0x84(s7)
sw a0,0x80(s7)
beq s5,zero,0x00029b58
_sh v0,0x3c(s7)
sw s3,0x8(s7)
or s3,s7,zero
addiu s1,s1,0x4
lw s7,0x0(s1)
bne s7,zero,0x000298f0
_addiu s4,s4,0x1
beq s5,zero,0x000299bc
_sltiu v0,s4,0x2
bne v0,zero,0x000299c0
_lw v0,0x2c(sp)
lw t9,-0x7e84(gp)
or a1,s3,zero
or a2,s4,zero
addiu t9,t9,0x7be4
bal 0x00027be4
_or a0,s0,zero
or s3,v0,zero
lw v0,0x2c(sp)
or a2,zero,zero
lw t9,0x1c(sp)
or a0,s0,zero
jalr t9
_addiu a1,v0,0x44c
lw gp,0x10(sp)
beq v0,zero,0x00029aac
_sw v0,0x0(s0)
li v1,0x1
lw t9,-0x7fc8(gp)
addiu a1,s0,0x38
sw s3,0x8(v0)
sw v1,0x30(v0)
li v1,0x9
lw a0,0x30(s0)
addiu t9,t9,-0x7a84
bal 0x0002857c
_sh v1,0x3c(v0)
beq v0,zero,0x00029aac
_lw gp,0x10(sp)
lw a1,0x30(s0)
andi v0,a1,0x204
beq v0,zero,0x00029bfc
_lw a2,-0x7fc8(gp)
lw t9,-0x7d50(gp)
li a1,-0x1
bal 0x0002d510
_addiu a0,s0,0x3c
lw ra,0x54(sp)
or v0,s0,zero
lw s8,0x50(sp)
lw s7,0x4c(sp)
lw s6,0x48(sp)
lw s5,0x44(sp)
lw s4,0x40(sp)
lw s3,0x3c(sp)
lw s2,0x38(sp)
lw s1,0x34(sp)
lw s0,0x30(sp)
jr ra
_addiu sp,sp,0x58
lw t9,-0x7bd0(gp)
jalr t9
_or s0,zero,zero
li v1,0x16
lw ra,0x54(sp)
lw s8,0x50(sp)
lw s7,0x4c(sp)
lw s6,0x48(sp)
lw s5,0x44(sp)
lw s4,0x40(sp)
lw s3,0x3c(sp)
lw s2,0x38(sp)
lw s1,0x34(sp)
sw v1,0x0(v0)
or v0,s0,zero
lw s0,0x30(sp)
jr ra
_addiu sp,sp,0x58
lw t9,-0x7e84(gp)
addiu t9,t9,0x7ddc
bal 0x00027ddc
_or a0,s3,zero
lw gp,0x10(sp)
lw t9,-0x7ab4(gp)
jalr t9
_or a0,s6,zero
lw gp,0x10(sp)
lw t9,-0x7ab4(gp)
jalr t9
_lw a0,0x18(s0)
lw gp,0x10(sp)
lw t9,-0x7ab4(gp)
or a0,s0,zero
jalr t9
_or s0,zero,zero
or v0,s0,zero
lw ra,0x54(sp)
lw s8,0x50(sp)
lw s7,0x4c(sp)
lw s6,0x48(sp)
lw s5,0x44(sp)
lw s4,0x40(sp)
lw s3,0x3c(sp)
lw s2,0x38(sp)
lw s1,0x34(sp)
lw s0,0x30(sp)
jr ra
_addiu sp,sp,0x58
li v0,-0x201
and v0,s2,v0
ori v0,v0,0x4
b 0x00029810
_sw v0,0x30(s0)
lb v1,-0x2(v1)
bne v1,a0,0x00029924
_li a1,0x1
addiu v0,v0,-0x1
bne v0,a1,0x00029b38
_addu v1,s7,v0
b 0x00029928
_lw t9,0x1c(sp)
sw zero,0x8(s7)
lw v0,0x28(sp)
sw s7,0x28(sp)
b 0x00029980
_sw s7,0x8(v0)
lw s7,-0x7e84(gp)
addiu v0,s7,0x7d20
sw v0,0x1c(sp)
b 0x000299bc
_or s3,zero,zero
lw a0,0x20(s0)
or a3,zero,zero
lw a1,0x20(sp)
lw t9,0x24(sp)
jalr t9
_or a2,s7,zero
lw gp,0x10(sp)
bne s5,zero,0x00029978
_sh v0,0x3c(s7)
bne s3,zero,0x00029b5c
_sw zero,0x8(s7)
or s3,s7,zero
b 0x00029980
_sw s7,0x28(sp)
lw a0,0x20(s0)
or a3,zero,zero
lw a1,0x20(sp)
lw t9,0x24(sp)
jalr t9
_or a2,s7,zero
lw gp,0x10(sp)
bne s5,zero,0x00029978
_sh v0,0x3c(s7)
or s3,s7,zero
sw s7,0x28(sp)
b 0x00029980
_sw zero,0x8(s7)
b 0x000298c8
_li s8,0x1
b 0x00029858
_li a2,0x1000
lw t9,-0x7fc8(gp)
lw a0,0x20(s0)
addiu t9,t9,-0x79d0
bal 0x00028630
_addiu a2,a2,0xc4c
lw gp,0x10(sp)
bgez v0,0x00029a20
_sw v0,0x1c(s0)
lw v0,0x30(s0)
ori v0,v0,0x4
b 0x00029a20
_sw v0,0x30(s0)
(translation_unit "int * fts_open(int *param_1,uint param_2,int param_3)\n\n{\n  undefined *puVar1;\n  undefined *puVar2;\n  int *piVar3;\n  uint uVar4;\n  code *pcVar5;\n  uint uVar6;\n  undefined4 *puVar7;\n  undefined2 uVar8;\n  int iVar9;\n  int iVar10;\n  int iVar11;\n  uint uVar12;\n  int *piVar13;\n  int iVar14;\n  code *pcVar15;\n  code *local_3c;\n  int local_30;\n  \n  if ((((param_2 & 0xffffe000) != 0) || ((param_2 & 0x204) == 0x204)) || ((param_2 & 0x12) == 0)) {\n    puVar7 = (undefined4 *)(*(code *)PTR___errno_location_00043520)();\n    *puVar7 = 0x16;\n    return (int *)0x0;\n  }\n  piVar3 = (int *)(*(code *)PTR_calloc_0004341c)(0x60,1);\n  if (piVar3 == (int *)0x0) {\n    return (int *)0x0;\n  }\n  piVar3[0xb] = param_3;\n  if ((param_2 & 2) == 0) {\n    piVar3[0xc] = param_2;\n  }\n  else {\n    piVar3[0xc] = param_2 & 0xfffffdff | 4;\n  }\n  iVar10 = *param_1;\n  piVar3[8] = -100;\n  if (iVar10 == 0) {\n    uVar12 = 0x1000;\n  }\n  else {\n    uVar12 = 0;\n    piVar13 = param_1;\n    do {\n      piVar13 = piVar13 + 1;\n      uVar4 = (*(code *)PTR_strlen_00043564)();\n      if (uVar12 < uVar4) {\n        uVar12 = uVar4;\n      }\n    } while (*piVar13 != 0);\n    uVar12 = uVar12 + 1;\n    if (uVar12 < 0x1000) {\n      uVar12 = 0x1000;\n    }\n  }\n  iVar10 = FUN_000284b8(piVar3 + 6,piVar3 + 9,uVar12);\n  puVar2 = PTR_LAB_0004326c;\n  puVar1 = PTR_s_ore_than_one_of__i___f___n__only_00043128;\n  if (iVar10 == 0) goto LAB_00029ae0;\n  if (*param_1 == 0) {\n    iVar10 = 0;\nLAB_00029b78:\n    iVar9 = 0;\nLAB_000299c0:\n    local_3c = (code *)(puVar2 + 0x7d20);\n    iVar14 = (*local_3c)(piVar3,puVar1 + 0x44c,0);\n    *piVar3 = iVar14;\n    if (iVar14 != 0) {\n      *(int *)(iVar14 + 8) = iVar9;\n      *(undefined4 *)(iVar14 + 0x30) = 1;\n      iVar11 = piVar3[0xc];\n      *(undefined2 *)(iVar14 + 0x3c) = 9;\n      iVar14 = FUN_0002857c(iVar11,piVar3 + 0xe);\n      if (iVar14 != 0) {\n        if ((piVar3[0xc] & 0x204U) == 0) {\n          iVar10 = FUN_00028630(piVar3[8],piVar3[0xc],\n                                PTR_s_ore_than_one_of__i___f___n__only_00043128 + 0xc4c);\n          piVar3[7] = iVar10;\n          if (iVar10 < 0) {\n            piVar3[0xc] = piVar3[0xc] | 4;\n          }\n        }\n        i_ring_init(piVar3 + 0xf,0xffffffff);\n        return piVar3;\n      }\n    }\nLAB_00029aac:\n    FUN_00027ddc(iVar9);\n    (*(code *)PTR_free_0004363c)(iVar10);\n  }\n  else {\n    pcVar15 = (code *)(PTR_LAB_0004326c + 0x7d20);\n    iVar10 = FUN_00027d20(piVar3,PTR_s_ore_than_one_of__i___f___n__only_00043128 + 0x44c,0);\n    if (iVar10 != 0) {\n      iVar14 = *param_1;\n      *(undefined4 *)(iVar10 + 0x30) = 0xffffffff;\n      *(undefined4 *)(iVar10 + 0x38) = 0xffffffff;\n      if (param_3 == 0) {\n        uVar12 = 1;\n      }\n      else {\n        uVar12 = (uint)(piVar3[0xc] << 0x15) >> 0x1f;\n      }\n      if (iVar14 == 0) goto LAB_00029b78;\n      local_30 = 0;\n      uVar4 = 0;\n      pcVar5 = (code *)(PTR_s_ore_than_one_of__i___f___n__only_00043128 + -0x7d80);\n      iVar11 = 0;\n      do {\n        uVar6 = (*(code *)PTR_strlen_00043564)(iVar14);\n        if ((((param_2 & 0x1000) == 0) && (2 < uVar6)) &&\n           (iVar9 = iVar14 + uVar6, *(char *)(iVar9 + -1) == '/')) {\n          do {\n            if (*(char *)(iVar9 + -2) != '/') break;\n            uVar6 = uVar6 - 1;\n            iVar9 = iVar14 + uVar6;\n          } while (uVar6 != 1);\n        }\n        iVar14 = (*pcVar15)(piVar3,iVar14,uVar6);\n        iVar9 = iVar11;\n        if (iVar14 == 0) goto LAB_00029aac;\n        *(undefined4 *)(iVar14 + 0x30) = 0;\n        *(int *)(iVar14 + 4) = iVar10;\n        *(int *)(iVar14 + 0x18) = iVar14 + 0xe8;\n        iVar9 = iVar14;\n        if (uVar12 == 0) {\n          uVar8 = (*pcVar5)(piVar3[8],piVar3 + 0xc,iVar14,0);\n          *(undefined2 *)(iVar14 + 0x3c) = uVar8;\n          if (param_3 != 0) goto LAB_00029978;\n          *(undefined4 *)(iVar14 + 8) = 0;\n          if (iVar11 != 0) goto LAB_00029b5c;\n        }\n        else if (iVar11 == 0) {\n          uVar8 = (*pcVar5)(piVar3[8],piVar3 + 0xc,iVar14,0);\n          *(undefined2 *)(iVar14 + 0x3c) = uVar8;\n          if (param_3 != 0) goto LAB_00029978;\n          *(undefined4 *)(iVar14 + 8) = 0;\n        }\n        else {\n          *(undefined4 *)(iVar14 + 0x84) = 2;\n          *(undefined4 *)(iVar14 + 0x80) = 0;\n          *(undefined2 *)(iVar14 + 0x3c) = 0xb;\n          if (param_3 == 0) {\n            *(undefined4 *)(iVar14 + 8) = 0;\nLAB_00029b5c:\n            *(int *)(local_30 + 8) = iVar14;\n            iVar9 = iVar11;\n          }\n          else {\nLAB_00029978:\n            *(int *)(iVar14 + 8) = iVar11;\n            iVar14 = local_30;\n          }\n        }\n        local_30 = iVar14;\n        param_1 = param_1 + 1;\n        iVar14 = *param_1;\n        uVar4 = uVar4 + 1;\n        iVar11 = iVar9;\n      } while (iVar14 != 0);\n      if ((param_3 != 0) && (1 < uVar4)) {\n        iVar9 = FUN_00027be4(piVar3,iVar9,uVar4);\n      }\n      goto LAB_000299c0;\n    }\n  }\n  (*(code *)PTR_free_0004363c)(piVar3[6]);\nLAB_00029ae0:\n  (*(code *)PTR_free_0004363c)(piVar3);\n  return (int *)0x0;\n}\n\n" (function_definition "int * fts_open(int *param_1,uint param_2,int param_3)\n\n{\n  undefined *puVar1;\n  undefined *puVar2;\n  int *piVar3;\n  uint uVar4;\n  code *pcVar5;\n  uint uVar6;\n  undefined4 *puVar7;\n  undefined2 uVar8;\n  int iVar9;\n  int iVar10;\n  int iVar11;\n  uint uVar12;\n  int *piVar13;\n  int iVar14;\n  code *pcVar15;\n  code *local_3c;\n  int local_30;\n  \n  if ((((param_2 & 0xffffe000) != 0) || ((param_2 & 0x204) == 0x204)) || ((param_2 & 0x12) == 0)) {\n    puVar7 = (undefined4 *)(*(code *)PTR___errno_location_00043520)();\n    *puVar7 = 0x16;\n    return (int *)0x0;\n  }\n  piVar3 = (int *)(*(code *)PTR_calloc_0004341c)(0x60,1);\n  if (piVar3 == (int *)0x0) {\n    return (int *)0x0;\n  }\n  piVar3[0xb] = param_3;\n  if ((param_2 & 2) == 0) {\n    piVar3[0xc] = param_2;\n  }\n  else {\n    piVar3[0xc] = param_2 & 0xfffffdff | 4;\n  }\n  iVar10 = *param_1;\n  piVar3[8] = -100;\n  if (iVar10 == 0) {\n    uVar12 = 0x1000;\n  }\n  else {\n    uVar12 = 0;\n    piVar13 = param_1;\n    do {\n      piVar13 = piVar13 + 1;\n      uVar4 = (*(code *)PTR_strlen_00043564)();\n      if (uVar12 < uVar4) {\n        uVar12 = uVar4;\n      }\n    } while (*piVar13 != 0);\n    uVar12 = uVar12 + 1;\n    if (uVar12 < 0x1000) {\n      uVar12 = 0x1000;\n    }\n  }\n  iVar10 = FUN_000284b8(piVar3 + 6,piVar3 + 9,uVar12);\n  puVar2 = PTR_LAB_0004326c;\n  puVar1 = PTR_s_ore_than_one_of__i___f___n__only_00043128;\n  if (iVar10 == 0) goto LAB_00029ae0;\n  if (*param_1 == 0) {\n    iVar10 = 0;\nLAB_00029b78:\n    iVar9 = 0;\nLAB_000299c0:\n    local_3c = (code *)(puVar2 + 0x7d20);\n    iVar14 = (*local_3c)(piVar3,puVar1 + 0x44c,0);\n    *piVar3 = iVar14;\n    if (iVar14 != 0) {\n      *(int *)(iVar14 + 8) = iVar9;\n      *(undefined4 *)(iVar14 + 0x30) = 1;\n      iVar11 = piVar3[0xc];\n      *(undefined2 *)(iVar14 + 0x3c) = 9;\n      iVar14 = FUN_0002857c(iVar11,piVar3 + 0xe);\n      if (iVar14 != 0) {\n        if ((piVar3[0xc] & 0x204U) == 0) {\n          iVar10 = FUN_00028630(piVar3[8],piVar3[0xc],\n                                PTR_s_ore_than_one_of__i___f___n__only_00043128 + 0xc4c);\n          piVar3[7] = iVar10;\n          if (iVar10 < 0) {\n            piVar3[0xc] = piVar3[0xc] | 4;\n          }\n        }\n        i_ring_init(piVar3 + 0xf,0xffffffff);\n        return piVar3;\n      }\n    }\nLAB_00029aac:\n    FUN_00027ddc(iVar9);\n    (*(code *)PTR_free_0004363c)(iVar10);\n  }\n  else {\n    pcVar15 = (code *)(PTR_LAB_0004326c + 0x7d20);\n    iVar10 = FUN_00027d20(piVar3,PTR_s_ore_than_one_of__i___f___n__only_00043128 + 0x44c,0);\n    if (iVar10 != 0) {\n      iVar14 = *param_1;\n      *(undefined4 *)(iVar10 + 0x30) = 0xffffffff;\n      *(undefined4 *)(iVar10 + 0x38) = 0xffffffff;\n      if (param_3 == 0) {\n        uVar12 = 1;\n      }\n      else {\n        uVar12 = (uint)(piVar3[0xc] << 0x15) >> 0x1f;\n      }\n      if (iVar14 == 0) goto LAB_00029b78;\n      local_30 = 0;\n      uVar4 = 0;\n      pcVar5 = (code *)(PTR_s_ore_than_one_of__i___f___n__only_00043128 + -0x7d80);\n      iVar11 = 0;\n      do {\n        uVar6 = (*(code *)PTR_strlen_00043564)(iVar14);\n        if ((((param_2 & 0x1000) == 0) && (2 < uVar6)) &&\n           (iVar9 = iVar14 + uVar6, *(char *)(iVar9 + -1) == '/')) {\n          do {\n            if (*(char *)(iVar9 + -2) != '/') break;\n            uVar6 = uVar6 - 1;\n            iVar9 = iVar14 + uVar6;\n          } while (uVar6 != 1);\n        }\n        iVar14 = (*pcVar15)(piVar3,iVar14,uVar6);\n        iVar9 = iVar11;\n        if (iVar14 == 0) goto LAB_00029aac;\n        *(undefined4 *)(iVar14 + 0x30) = 0;\n        *(int *)(iVar14 + 4) = iVar10;\n        *(int *)(iVar14 + 0x18) = iVar14 + 0xe8;\n        iVar9 = iVar14;\n        if (uVar12 == 0) {\n          uVar8 = (*pcVar5)(piVar3[8],piVar3 + 0xc,iVar14,0);\n          *(undefined2 *)(iVar14 + 0x3c) = uVar8;\n          if (param_3 != 0) goto LAB_00029978;\n          *(undefined4 *)(iVar14 + 8) = 0;\n          if (iVar11 != 0) goto LAB_00029b5c;\n        }\n        else if (iVar11 == 0) {\n          uVar8 = (*pcVar5)(piVar3[8],piVar3 + 0xc,iVar14,0);\n          *(undefined2 *)(iVar14 + 0x3c) = uVar8;\n          if (param_3 != 0) goto LAB_00029978;\n          *(undefined4 *)(iVar14 + 8) = 0;\n        }\n        else {\n          *(undefined4 *)(iVar14 + 0x84) = 2;\n          *(undefined4 *)(iVar14 + 0x80) = 0;\n          *(undefined2 *)(iVar14 + 0x3c) = 0xb;\n          if (param_3 == 0) {\n            *(undefined4 *)(iVar14 + 8) = 0;\nLAB_00029b5c:\n            *(int *)(local_30 + 8) = iVar14;\n            iVar9 = iVar11;\n          }\n          else {\nLAB_00029978:\n            *(int *)(iVar14 + 8) = iVar11;\n            iVar14 = local_30;\n          }\n        }\n        local_30 = iVar14;\n        param_1 = param_1 + 1;\n        iVar14 = *param_1;\n        uVar4 = uVar4 + 1;\n        iVar11 = iVar9;\n      } while (iVar14 != 0);\n      if ((param_3 != 0) && (1 < uVar4)) {\n        iVar9 = FUN_00027be4(piVar3,iVar9,uVar4);\n      }\n      goto LAB_000299c0;\n    }\n  }\n  (*(code *)PTR_free_0004363c)(piVar3[6]);\nLAB_00029ae0:\n  (*(code *)PTR_free_0004363c)(piVar3);\n  return (int *)0x0;\n}" primitive_type (pointer_declarator "* fts_open(int *param_1,uint param_2,int param_3)" * (function_declarator "fts_open(int *param_1,uint param_2,int param_3)" identifier (parameter_list "(int *param_1,uint param_2,int param_3)" ( (parameter_declaration "int *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "uint param_2" type_identifier identifier) , (parameter_declaration "int param_3" primitive_type identifier) )))) (compound_statement "{\n  undefined *puVar1;\n  undefined *puVar2;\n  int *piVar3;\n  uint uVar4;\n  code *pcVar5;\n  uint uVar6;\n  undefined4 *puVar7;\n  undefined2 uVar8;\n  int iVar9;\n  int iVar10;\n  int iVar11;\n  uint uVar12;\n  int *piVar13;\n  int iVar14;\n  code *pcVar15;\n  code *local_3c;\n  int local_30;\n  \n  if ((((param_2 & 0xffffe000) != 0) || ((param_2 & 0x204) == 0x204)) || ((param_2 & 0x12) == 0)) {\n    puVar7 = (undefined4 *)(*(code *)PTR___errno_location_00043520)();\n    *puVar7 = 0x16;\n    return (int *)0x0;\n  }\n  piVar3 = (int *)(*(code *)PTR_calloc_0004341c)(0x60,1);\n  if (piVar3 == (int *)0x0) {\n    return (int *)0x0;\n  }\n  piVar3[0xb] = param_3;\n  if ((param_2 & 2) == 0) {\n    piVar3[0xc] = param_2;\n  }\n  else {\n    piVar3[0xc] = param_2 & 0xfffffdff | 4;\n  }\n  iVar10 = *param_1;\n  piVar3[8] = -100;\n  if (iVar10 == 0) {\n    uVar12 = 0x1000;\n  }\n  else {\n    uVar12 = 0;\n    piVar13 = param_1;\n    do {\n      piVar13 = piVar13 + 1;\n      uVar4 = (*(code *)PTR_strlen_00043564)();\n      if (uVar12 < uVar4) {\n        uVar12 = uVar4;\n      }\n    } while (*piVar13 != 0);\n    uVar12 = uVar12 + 1;\n    if (uVar12 < 0x1000) {\n      uVar12 = 0x1000;\n    }\n  }\n  iVar10 = FUN_000284b8(piVar3 + 6,piVar3 + 9,uVar12);\n  puVar2 = PTR_LAB_0004326c;\n  puVar1 = PTR_s_ore_than_one_of__i___f___n__only_00043128;\n  if (iVar10 == 0) goto LAB_00029ae0;\n  if (*param_1 == 0) {\n    iVar10 = 0;\nLAB_00029b78:\n    iVar9 = 0;\nLAB_000299c0:\n    local_3c = (code *)(puVar2 + 0x7d20);\n    iVar14 = (*local_3c)(piVar3,puVar1 + 0x44c,0);\n    *piVar3 = iVar14;\n    if (iVar14 != 0) {\n      *(int *)(iVar14 + 8) = iVar9;\n      *(undefined4 *)(iVar14 + 0x30) = 1;\n      iVar11 = piVar3[0xc];\n      *(undefined2 *)(iVar14 + 0x3c) = 9;\n      iVar14 = FUN_0002857c(iVar11,piVar3 + 0xe);\n      if (iVar14 != 0) {\n        if ((piVar3[0xc] & 0x204U) == 0) {\n          iVar10 = FUN_00028630(piVar3[8],piVar3[0xc],\n                                PTR_s_ore_than_one_of__i___f___n__only_00043128 + 0xc4c);\n          piVar3[7] = iVar10;\n          if (iVar10 < 0) {\n            piVar3[0xc] = piVar3[0xc] | 4;\n          }\n        }\n        i_ring_init(piVar3 + 0xf,0xffffffff);\n        return piVar3;\n      }\n    }\nLAB_00029aac:\n    FUN_00027ddc(iVar9);\n    (*(code *)PTR_free_0004363c)(iVar10);\n  }\n  else {\n    pcVar15 = (code *)(PTR_LAB_0004326c + 0x7d20);\n    iVar10 = FUN_00027d20(piVar3,PTR_s_ore_than_one_of__i___f___n__only_00043128 + 0x44c,0);\n    if (iVar10 != 0) {\n      iVar14 = *param_1;\n      *(undefined4 *)(iVar10 + 0x30) = 0xffffffff;\n      *(undefined4 *)(iVar10 + 0x38) = 0xffffffff;\n      if (param_3 == 0) {\n        uVar12 = 1;\n      }\n      else {\n        uVar12 = (uint)(piVar3[0xc] << 0x15) >> 0x1f;\n      }\n      if (iVar14 == 0) goto LAB_00029b78;\n      local_30 = 0;\n      uVar4 = 0;\n      pcVar5 = (code *)(PTR_s_ore_than_one_of__i___f___n__only_00043128 + -0x7d80);\n      iVar11 = 0;\n      do {\n        uVar6 = (*(code *)PTR_strlen_00043564)(iVar14);\n        if ((((param_2 & 0x1000) == 0) && (2 < uVar6)) &&\n           (iVar9 = iVar14 + uVar6, *(char *)(iVar9 + -1) == '/')) {\n          do {\n            if (*(char *)(iVar9 + -2) != '/') break;\n            uVar6 = uVar6 - 1;\n            iVar9 = iVar14 + uVar6;\n          } while (uVar6 != 1);\n        }\n        iVar14 = (*pcVar15)(piVar3,iVar14,uVar6);\n        iVar9 = iVar11;\n        if (iVar14 == 0) goto LAB_00029aac;\n        *(undefined4 *)(iVar14 + 0x30) = 0;\n        *(int *)(iVar14 + 4) = iVar10;\n        *(int *)(iVar14 + 0x18) = iVar14 + 0xe8;\n        iVar9 = iVar14;\n        if (uVar12 == 0) {\n          uVar8 = (*pcVar5)(piVar3[8],piVar3 + 0xc,iVar14,0);\n          *(undefined2 *)(iVar14 + 0x3c) = uVar8;\n          if (param_3 != 0) goto LAB_00029978;\n          *(undefined4 *)(iVar14 + 8) = 0;\n          if (iVar11 != 0) goto LAB_00029b5c;\n        }\n        else if (iVar11 == 0) {\n          uVar8 = (*pcVar5)(piVar3[8],piVar3 + 0xc,iVar14,0);\n          *(undefined2 *)(iVar14 + 0x3c) = uVar8;\n          if (param_3 != 0) goto LAB_00029978;\n          *(undefined4 *)(iVar14 + 8) = 0;\n        }\n        else {\n          *(undefined4 *)(iVar14 + 0x84) = 2;\n          *(undefined4 *)(iVar14 + 0x80) = 0;\n          *(undefined2 *)(iVar14 + 0x3c) = 0xb;\n          if (param_3 == 0) {\n            *(undefined4 *)(iVar14 + 8) = 0;\nLAB_00029b5c:\n            *(int *)(local_30 + 8) = iVar14;\n            iVar9 = iVar11;\n          }\n          else {\nLAB_00029978:\n            *(int *)(iVar14 + 8) = iVar11;\n            iVar14 = local_30;\n          }\n        }\n        local_30 = iVar14;\n        param_1 = param_1 + 1;\n        iVar14 = *param_1;\n        uVar4 = uVar4 + 1;\n        iVar11 = iVar9;\n      } while (iVar14 != 0);\n      if ((param_3 != 0) && (1 < uVar4)) {\n        iVar9 = FUN_00027be4(piVar3,iVar9,uVar4);\n      }\n      goto LAB_000299c0;\n    }\n  }\n  (*(code *)PTR_free_0004363c)(piVar3[6]);\nLAB_00029ae0:\n  (*(code *)PTR_free_0004363c)(piVar3);\n  return (int *)0x0;\n}" { (declaration "undefined *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "undefined *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "int *piVar3;" primitive_type (pointer_declarator "*piVar3" * identifier) ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "code *pcVar5;" type_identifier (pointer_declarator "*pcVar5" * identifier) ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "undefined4 *puVar7;" type_identifier (pointer_declarator "*puVar7" * identifier) ;) (declaration "undefined2 uVar8;" type_identifier identifier ;) (declaration "int iVar9;" primitive_type identifier ;) (declaration "int iVar10;" primitive_type identifier ;) (declaration "int iVar11;" primitive_type identifier ;) (declaration "uint uVar12;" type_identifier identifier ;) (declaration "int *piVar13;" primitive_type (pointer_declarator "*piVar13" * identifier) ;) (declaration "int iVar14;" primitive_type identifier ;) (declaration "code *pcVar15;" type_identifier (pointer_declarator "*pcVar15" * identifier) ;) (declaration "code *local_3c;" type_identifier (pointer_declarator "*local_3c" * identifier) ;) (declaration "int local_30;" primitive_type identifier ;) (if_statement "if ((((param_2 & 0xffffe000) != 0) || ((param_2 & 0x204) == 0x204)) || ((param_2 & 0x12) == 0)) {\n    puVar7 = (undefined4 *)(*(code *)PTR___errno_location_00043520)();\n    *puVar7 = 0x16;\n    return (int *)0x0;\n  }" if (parenthesized_expression "((((param_2 & 0xffffe000) != 0) || ((param_2 & 0x204) == 0x204)) || ((param_2 & 0x12) == 0))" ( (binary_expression "(((param_2 & 0xffffe000) != 0) || ((param_2 & 0x204) == 0x204)) || ((param_2 & 0x12) == 0)" (parenthesized_expression "(((param_2 & 0xffffe000) != 0) || ((param_2 & 0x204) == 0x204))" ( (binary_expression "((param_2 & 0xffffe000) != 0) || ((param_2 & 0x204) == 0x204)" (parenthesized_expression "((param_2 & 0xffffe000) != 0)" ( (binary_expression "(param_2 & 0xffffe000) != 0" (parenthesized_expression "(param_2 & 0xffffe000)" ( (binary_expression "param_2 & 0xffffe000" identifier & number_literal) )) != number_literal) )) || (parenthesized_expression "((param_2 & 0x204) == 0x204)" ( (binary_expression "(param_2 & 0x204) == 0x204" (parenthesized_expression "(param_2 & 0x204)" ( (binary_expression "param_2 & 0x204" identifier & number_literal) )) == number_literal) ))) )) || (parenthesized_expression "((param_2 & 0x12) == 0)" ( (binary_expression "(param_2 & 0x12) == 0" (parenthesized_expression "(param_2 & 0x12)" ( (binary_expression "param_2 & 0x12" identifier & number_literal) )) == number_literal) ))) )) (compound_statement "{\n    puVar7 = (undefined4 *)(*(code *)PTR___errno_location_00043520)();\n    *puVar7 = 0x16;\n    return (int *)0x0;\n  }" { (expression_statement "puVar7 = (undefined4 *)(*(code *)PTR___errno_location_00043520)();" (assignment_expression "puVar7 = (undefined4 *)(*(code *)PTR___errno_location_00043520)()" identifier = (cast_expression "(undefined4 *)(*(code *)PTR___errno_location_00043520)()" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR___errno_location_00043520)()" (parenthesized_expression "(*(code *)PTR___errno_location_00043520)" ( (pointer_expression "*(code *)PTR___errno_location_00043520" * (cast_expression "(code *)PTR___errno_location_00043520" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))))) ;) (expression_statement "*puVar7 = 0x16;" (assignment_expression "*puVar7 = 0x16" (pointer_expression "*puVar7" * identifier) = number_literal) ;) (return_statement "return (int *)0x0;" return (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (expression_statement "piVar3 = (int *)(*(code *)PTR_calloc_0004341c)(0x60,1);" (assignment_expression "piVar3 = (int *)(*(code *)PTR_calloc_0004341c)(0x60,1)" identifier = (cast_expression "(int *)(*(code *)PTR_calloc_0004341c)(0x60,1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR_calloc_0004341c)(0x60,1)" (parenthesized_expression "(*(code *)PTR_calloc_0004341c)" ( (pointer_expression "*(code *)PTR_calloc_0004341c" * (cast_expression "(code *)PTR_calloc_0004341c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(0x60,1)" ( number_literal , number_literal ))))) ;) (if_statement "if (piVar3 == (int *)0x0) {\n    return (int *)0x0;\n  }" if (parenthesized_expression "(piVar3 == (int *)0x0)" ( (binary_expression "piVar3 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    return (int *)0x0;\n  }" { (return_statement "return (int *)0x0;" return (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (expression_statement "piVar3[0xb] = param_3;" (assignment_expression "piVar3[0xb] = param_3" (subscript_expression "piVar3[0xb]" identifier [ number_literal ]) = identifier) ;) (if_statement "if ((param_2 & 2) == 0) {\n    piVar3[0xc] = param_2;\n  }\n  else {\n    piVar3[0xc] = param_2 & 0xfffffdff | 4;\n  }" if (parenthesized_expression "((param_2 & 2) == 0)" ( (binary_expression "(param_2 & 2) == 0" (parenthesized_expression "(param_2 & 2)" ( (binary_expression "param_2 & 2" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n    piVar3[0xc] = param_2;\n  }" { (expression_statement "piVar3[0xc] = param_2;" (assignment_expression "piVar3[0xc] = param_2" (subscript_expression "piVar3[0xc]" identifier [ number_literal ]) = identifier) ;) }) (else_clause "else {\n    piVar3[0xc] = param_2 & 0xfffffdff | 4;\n  }" else (compound_statement "{\n    piVar3[0xc] = param_2 & 0xfffffdff | 4;\n  }" { (expression_statement "piVar3[0xc] = param_2 & 0xfffffdff | 4;" (assignment_expression "piVar3[0xc] = param_2 & 0xfffffdff | 4" (subscript_expression "piVar3[0xc]" identifier [ number_literal ]) = (binary_expression "param_2 & 0xfffffdff | 4" (binary_expression "param_2 & 0xfffffdff" identifier & number_literal) | number_literal)) ;) }))) (expression_statement "iVar10 = *param_1;" (assignment_expression "iVar10 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "piVar3[8] = -100;" (assignment_expression "piVar3[8] = -100" (subscript_expression "piVar3[8]" identifier [ number_literal ]) = number_literal) ;) (if_statement "if (iVar10 == 0) {\n    uVar12 = 0x1000;\n  }\n  else {\n    uVar12 = 0;\n    piVar13 = param_1;\n    do {\n      piVar13 = piVar13 + 1;\n      uVar4 = (*(code *)PTR_strlen_00043564)();\n      if (uVar12 < uVar4) {\n        uVar12 = uVar4;\n      }\n    } while (*piVar13 != 0);\n    uVar12 = uVar12 + 1;\n    if (uVar12 < 0x1000) {\n      uVar12 = 0x1000;\n    }\n  }" if (parenthesized_expression "(iVar10 == 0)" ( (binary_expression "iVar10 == 0" identifier == number_literal) )) (compound_statement "{\n    uVar12 = 0x1000;\n  }" { (expression_statement "uVar12 = 0x1000;" (assignment_expression "uVar12 = 0x1000" identifier = number_literal) ;) }) (else_clause "else {\n    uVar12 = 0;\n    piVar13 = param_1;\n    do {\n      piVar13 = piVar13 + 1;\n      uVar4 = (*(code *)PTR_strlen_00043564)();\n      if (uVar12 < uVar4) {\n        uVar12 = uVar4;\n      }\n    } while (*piVar13 != 0);\n    uVar12 = uVar12 + 1;\n    if (uVar12 < 0x1000) {\n      uVar12 = 0x1000;\n    }\n  }" else (compound_statement "{\n    uVar12 = 0;\n    piVar13 = param_1;\n    do {\n      piVar13 = piVar13 + 1;\n      uVar4 = (*(code *)PTR_strlen_00043564)();\n      if (uVar12 < uVar4) {\n        uVar12 = uVar4;\n      }\n    } while (*piVar13 != 0);\n    uVar12 = uVar12 + 1;\n    if (uVar12 < 0x1000) {\n      uVar12 = 0x1000;\n    }\n  }" { (expression_statement "uVar12 = 0;" (assignment_expression "uVar12 = 0" identifier = number_literal) ;) (expression_statement "piVar13 = param_1;" (assignment_expression "piVar13 = param_1" identifier = identifier) ;) (do_statement "do {\n      piVar13 = piVar13 + 1;\n      uVar4 = (*(code *)PTR_strlen_00043564)();\n      if (uVar12 < uVar4) {\n        uVar12 = uVar4;\n      }\n    } while (*piVar13 != 0);" do (compound_statement "{\n      piVar13 = piVar13 + 1;\n      uVar4 = (*(code *)PTR_strlen_00043564)();\n      if (uVar12 < uVar4) {\n        uVar12 = uVar4;\n      }\n    }" { (expression_statement "piVar13 = piVar13 + 1;" (assignment_expression "piVar13 = piVar13 + 1" identifier = (binary_expression "piVar13 + 1" identifier + number_literal)) ;) (expression_statement "uVar4 = (*(code *)PTR_strlen_00043564)();" (assignment_expression "uVar4 = (*(code *)PTR_strlen_00043564)()" identifier = (call_expression "(*(code *)PTR_strlen_00043564)()" (parenthesized_expression "(*(code *)PTR_strlen_00043564)" ( (pointer_expression "*(code *)PTR_strlen_00043564" * (cast_expression "(code *)PTR_strlen_00043564" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( )))) ;) (if_statement "if (uVar12 < uVar4) {\n        uVar12 = uVar4;\n      }" if (parenthesized_expression "(uVar12 < uVar4)" ( (binary_expression "uVar12 < uVar4" identifier < identifier) )) (compound_statement "{\n        uVar12 = uVar4;\n      }" { (expression_statement "uVar12 = uVar4;" (assignment_expression "uVar12 = uVar4" identifier = identifier) ;) })) }) while (parenthesized_expression "(*piVar13 != 0)" ( (binary_expression "*piVar13 != 0" (pointer_expression "*piVar13" * identifier) != number_literal) )) ;) (expression_statement "uVar12 = uVar12 + 1;" (assignment_expression "uVar12 = uVar12 + 1" identifier = (binary_expression "uVar12 + 1" identifier + number_literal)) ;) (if_statement "if (uVar12 < 0x1000) {\n      uVar12 = 0x1000;\n    }" if (parenthesized_expression "(uVar12 < 0x1000)" ( (binary_expression "uVar12 < 0x1000" identifier < number_literal) )) (compound_statement "{\n      uVar12 = 0x1000;\n    }" { (expression_statement "uVar12 = 0x1000;" (assignment_expression "uVar12 = 0x1000" identifier = number_literal) ;) })) }))) (expression_statement "iVar10 = FUN_000284b8(piVar3 + 6,piVar3 + 9,uVar12);" (assignment_expression "iVar10 = FUN_000284b8(piVar3 + 6,piVar3 + 9,uVar12)" identifier = (call_expression "FUN_000284b8(piVar3 + 6,piVar3 + 9,uVar12)" identifier (argument_list "(piVar3 + 6,piVar3 + 9,uVar12)" ( (binary_expression "piVar3 + 6" identifier + number_literal) , (binary_expression "piVar3 + 9" identifier + number_literal) , identifier )))) ;) (expression_statement "puVar2 = PTR_LAB_0004326c;" (assignment_expression "puVar2 = PTR_LAB_0004326c" identifier = identifier) ;) (expression_statement "puVar1 = PTR_s_ore_than_one_of__i___f___n__only_00043128;" (assignment_expression "puVar1 = PTR_s_ore_than_one_of__i___f___n__only_00043128" identifier = identifier) ;) (if_statement "if (iVar10 == 0) goto LAB_00029ae0;" if (parenthesized_expression "(iVar10 == 0)" ( (binary_expression "iVar10 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00029ae0;" goto statement_identifier ;)) (if_statement "if (*param_1 == 0) {\n    iVar10 = 0;\nLAB_00029b78:\n    iVar9 = 0;\nLAB_000299c0:\n    local_3c = (code *)(puVar2 + 0x7d20);\n    iVar14 = (*local_3c)(piVar3,puVar1 + 0x44c,0);\n    *piVar3 = iVar14;\n    if (iVar14 != 0) {\n      *(int *)(iVar14 + 8) = iVar9;\n      *(undefined4 *)(iVar14 + 0x30) = 1;\n      iVar11 = piVar3[0xc];\n      *(undefined2 *)(iVar14 + 0x3c) = 9;\n      iVar14 = FUN_0002857c(iVar11,piVar3 + 0xe);\n      if (iVar14 != 0) {\n        if ((piVar3[0xc] & 0x204U) == 0) {\n          iVar10 = FUN_00028630(piVar3[8],piVar3[0xc],\n                                PTR_s_ore_than_one_of__i___f___n__only_00043128 + 0xc4c);\n          piVar3[7] = iVar10;\n          if (iVar10 < 0) {\n            piVar3[0xc] = piVar3[0xc] | 4;\n          }\n        }\n        i_ring_init(piVar3 + 0xf,0xffffffff);\n        return piVar3;\n      }\n    }\nLAB_00029aac:\n    FUN_00027ddc(iVar9);\n    (*(code *)PTR_free_0004363c)(iVar10);\n  }\n  else {\n    pcVar15 = (code *)(PTR_LAB_0004326c + 0x7d20);\n    iVar10 = FUN_00027d20(piVar3,PTR_s_ore_than_one_of__i___f___n__only_00043128 + 0x44c,0);\n    if (iVar10 != 0) {\n      iVar14 = *param_1;\n      *(undefined4 *)(iVar10 + 0x30) = 0xffffffff;\n      *(undefined4 *)(iVar10 + 0x38) = 0xffffffff;\n      if (param_3 == 0) {\n        uVar12 = 1;\n      }\n      else {\n        uVar12 = (uint)(piVar3[0xc] << 0x15) >> 0x1f;\n      }\n      if (iVar14 == 0) goto LAB_00029b78;\n      local_30 = 0;\n      uVar4 = 0;\n      pcVar5 = (code *)(PTR_s_ore_than_one_of__i___f___n__only_00043128 + -0x7d80);\n      iVar11 = 0;\n      do {\n        uVar6 = (*(code *)PTR_strlen_00043564)(iVar14);\n        if ((((param_2 & 0x1000) == 0) && (2 < uVar6)) &&\n           (iVar9 = iVar14 + uVar6, *(char *)(iVar9 + -1) == '/')) {\n          do {\n            if (*(char *)(iVar9 + -2) != '/') break;\n            uVar6 = uVar6 - 1;\n            iVar9 = iVar14 + uVar6;\n          } while (uVar6 != 1);\n        }\n        iVar14 = (*pcVar15)(piVar3,iVar14,uVar6);\n        iVar9 = iVar11;\n        if (iVar14 == 0) goto LAB_00029aac;\n        *(undefined4 *)(iVar14 + 0x30) = 0;\n        *(int *)(iVar14 + 4) = iVar10;\n        *(int *)(iVar14 + 0x18) = iVar14 + 0xe8;\n        iVar9 = iVar14;\n        if (uVar12 == 0) {\n          uVar8 = (*pcVar5)(piVar3[8],piVar3 + 0xc,iVar14,0);\n          *(undefined2 *)(iVar14 + 0x3c) = uVar8;\n          if (param_3 != 0) goto LAB_00029978;\n          *(undefined4 *)(iVar14 + 8) = 0;\n          if (iVar11 != 0) goto LAB_00029b5c;\n        }\n        else if (iVar11 == 0) {\n          uVar8 = (*pcVar5)(piVar3[8],piVar3 + 0xc,iVar14,0);\n          *(undefined2 *)(iVar14 + 0x3c) = uVar8;\n          if (param_3 != 0) goto LAB_00029978;\n          *(undefined4 *)(iVar14 + 8) = 0;\n        }\n        else {\n          *(undefined4 *)(iVar14 + 0x84) = 2;\n          *(undefined4 *)(iVar14 + 0x80) = 0;\n          *(undefined2 *)(iVar14 + 0x3c) = 0xb;\n          if (param_3 == 0) {\n            *(undefined4 *)(iVar14 + 8) = 0;\nLAB_00029b5c:\n            *(int *)(local_30 + 8) = iVar14;\n            iVar9 = iVar11;\n          }\n          else {\nLAB_00029978:\n            *(int *)(iVar14 + 8) = iVar11;\n            iVar14 = local_30;\n          }\n        }\n        local_30 = iVar14;\n        param_1 = param_1 + 1;\n        iVar14 = *param_1;\n        uVar4 = uVar4 + 1;\n        iVar11 = iVar9;\n      } while (iVar14 != 0);\n      if ((param_3 != 0) && (1 < uVar4)) {\n        iVar9 = FUN_00027be4(piVar3,iVar9,uVar4);\n      }\n      goto LAB_000299c0;\n    }\n  }" if (parenthesized_expression "(*param_1 == 0)" ( (binary_expression "*param_1 == 0" (pointer_expression "*param_1" * identifier) == number_literal) )) (compound_statement "{\n    iVar10 = 0;\nLAB_00029b78:\n    iVar9 = 0;\nLAB_000299c0:\n    local_3c = (code *)(puVar2 + 0x7d20);\n    iVar14 = (*local_3c)(piVar3,puVar1 + 0x44c,0);\n    *piVar3 = iVar14;\n    if (iVar14 != 0) {\n      *(int *)(iVar14 + 8) = iVar9;\n      *(undefined4 *)(iVar14 + 0x30) = 1;\n      iVar11 = piVar3[0xc];\n      *(undefined2 *)(iVar14 + 0x3c) = 9;\n      iVar14 = FUN_0002857c(iVar11,piVar3 + 0xe);\n      if (iVar14 != 0) {\n        if ((piVar3[0xc] & 0x204U) == 0) {\n          iVar10 = FUN_00028630(piVar3[8],piVar3[0xc],\n                                PTR_s_ore_than_one_of__i___f___n__only_00043128 + 0xc4c);\n          piVar3[7] = iVar10;\n          if (iVar10 < 0) {\n            piVar3[0xc] = piVar3[0xc] | 4;\n          }\n        }\n        i_ring_init(piVar3 + 0xf,0xffffffff);\n        return piVar3;\n      }\n    }\nLAB_00029aac:\n    FUN_00027ddc(iVar9);\n    (*(code *)PTR_free_0004363c)(iVar10);\n  }" { (expression_statement "iVar10 = 0;" (assignment_expression "iVar10 = 0" identifier = number_literal) ;) (labeled_statement "LAB_00029b78:\n    iVar9 = 0;" statement_identifier : (expression_statement "iVar9 = 0;" (assignment_expression "iVar9 = 0" identifier = number_literal) ;)) (labeled_statement "LAB_000299c0:\n    local_3c = (code *)(puVar2 + 0x7d20);" statement_identifier : (expression_statement "local_3c = (code *)(puVar2 + 0x7d20);" (assignment_expression "local_3c = (code *)(puVar2 + 0x7d20)" identifier = (cast_expression "(code *)(puVar2 + 0x7d20)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 0x7d20)" ( (binary_expression "puVar2 + 0x7d20" identifier + number_literal) )))) ;)) (expression_statement "iVar14 = (*local_3c)(piVar3,puVar1 + 0x44c,0);" (assignment_expression "iVar14 = (*local_3c)(piVar3,puVar1 + 0x44c,0)" identifier = (call_expression "(*local_3c)(piVar3,puVar1 + 0x44c,0)" (parenthesized_expression "(*local_3c)" ( (pointer_expression "*local_3c" * identifier) )) (argument_list "(piVar3,puVar1 + 0x44c,0)" ( identifier , (binary_expression "puVar1 + 0x44c" identifier + number_literal) , number_literal )))) ;) (expression_statement "*piVar3 = iVar14;" (assignment_expression "*piVar3 = iVar14" (pointer_expression "*piVar3" * identifier) = identifier) ;) (if_statement "if (iVar14 != 0) {\n      *(int *)(iVar14 + 8) = iVar9;\n      *(undefined4 *)(iVar14 + 0x30) = 1;\n      iVar11 = piVar3[0xc];\n      *(undefined2 *)(iVar14 + 0x3c) = 9;\n      iVar14 = FUN_0002857c(iVar11,piVar3 + 0xe);\n      if (iVar14 != 0) {\n        if ((piVar3[0xc] & 0x204U) == 0) {\n          iVar10 = FUN_00028630(piVar3[8],piVar3[0xc],\n                                PTR_s_ore_than_one_of__i___f___n__only_00043128 + 0xc4c);\n          piVar3[7] = iVar10;\n          if (iVar10 < 0) {\n            piVar3[0xc] = piVar3[0xc] | 4;\n          }\n        }\n        i_ring_init(piVar3 + 0xf,0xffffffff);\n        return piVar3;\n      }\n    }" if (parenthesized_expression "(iVar14 != 0)" ( (binary_expression "iVar14 != 0" identifier != number_literal) )) (compound_statement "{\n      *(int *)(iVar14 + 8) = iVar9;\n      *(undefined4 *)(iVar14 + 0x30) = 1;\n      iVar11 = piVar3[0xc];\n      *(undefined2 *)(iVar14 + 0x3c) = 9;\n      iVar14 = FUN_0002857c(iVar11,piVar3 + 0xe);\n      if (iVar14 != 0) {\n        if ((piVar3[0xc] & 0x204U) == 0) {\n          iVar10 = FUN_00028630(piVar3[8],piVar3[0xc],\n                                PTR_s_ore_than_one_of__i___f___n__only_00043128 + 0xc4c);\n          piVar3[7] = iVar10;\n          if (iVar10 < 0) {\n            piVar3[0xc] = piVar3[0xc] | 4;\n          }\n        }\n        i_ring_init(piVar3 + 0xf,0xffffffff);\n        return piVar3;\n      }\n    }" { (expression_statement "*(int *)(iVar14 + 8) = iVar9;" (assignment_expression "*(int *)(iVar14 + 8) = iVar9" (pointer_expression "*(int *)(iVar14 + 8)" * (cast_expression "(int *)(iVar14 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar14 + 8)" ( (binary_expression "iVar14 + 8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(iVar14 + 0x30) = 1;" (assignment_expression "*(undefined4 *)(iVar14 + 0x30) = 1" (pointer_expression "*(undefined4 *)(iVar14 + 0x30)" * (cast_expression "(undefined4 *)(iVar14 + 0x30)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar14 + 0x30)" ( (binary_expression "iVar14 + 0x30" identifier + number_literal) )))) = number_literal) ;) (expression_statement "iVar11 = piVar3[0xc];" (assignment_expression "iVar11 = piVar3[0xc]" identifier = (subscript_expression "piVar3[0xc]" identifier [ number_literal ])) ;) (expression_statement "*(undefined2 *)(iVar14 + 0x3c) = 9;" (assignment_expression "*(undefined2 *)(iVar14 + 0x3c) = 9" (pointer_expression "*(undefined2 *)(iVar14 + 0x3c)" * (cast_expression "(undefined2 *)(iVar14 + 0x3c)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar14 + 0x3c)" ( (binary_expression "iVar14 + 0x3c" identifier + number_literal) )))) = number_literal) ;) (expression_statement "iVar14 = FUN_0002857c(iVar11,piVar3 + 0xe);" (assignment_expression "iVar14 = FUN_0002857c(iVar11,piVar3 + 0xe)" identifier = (call_expression "FUN_0002857c(iVar11,piVar3 + 0xe)" identifier (argument_list "(iVar11,piVar3 + 0xe)" ( identifier , (binary_expression "piVar3 + 0xe" identifier + number_literal) )))) ;) (if_statement "if (iVar14 != 0) {\n        if ((piVar3[0xc] & 0x204U) == 0) {\n          iVar10 = FUN_00028630(piVar3[8],piVar3[0xc],\n                                PTR_s_ore_than_one_of__i___f___n__only_00043128 + 0xc4c);\n          piVar3[7] = iVar10;\n          if (iVar10 < 0) {\n            piVar3[0xc] = piVar3[0xc] | 4;\n          }\n        }\n        i_ring_init(piVar3 + 0xf,0xffffffff);\n        return piVar3;\n      }" if (parenthesized_expression "(iVar14 != 0)" ( (binary_expression "iVar14 != 0" identifier != number_literal) )) (compound_statement "{\n        if ((piVar3[0xc] & 0x204U) == 0) {\n          iVar10 = FUN_00028630(piVar3[8],piVar3[0xc],\n                                PTR_s_ore_than_one_of__i___f___n__only_00043128 + 0xc4c);\n          piVar3[7] = iVar10;\n          if (iVar10 < 0) {\n            piVar3[0xc] = piVar3[0xc] | 4;\n          }\n        }\n        i_ring_init(piVar3 + 0xf,0xffffffff);\n        return piVar3;\n      }" { (if_statement "if ((piVar3[0xc] & 0x204U) == 0) {\n          iVar10 = FUN_00028630(piVar3[8],piVar3[0xc],\n                                PTR_s_ore_than_one_of__i___f___n__only_00043128 + 0xc4c);\n          piVar3[7] = iVar10;\n          if (iVar10 < 0) {\n            piVar3[0xc] = piVar3[0xc] | 4;\n          }\n        }" if (parenthesized_expression "((piVar3[0xc] & 0x204U) == 0)" ( (binary_expression "(piVar3[0xc] & 0x204U) == 0" (parenthesized_expression "(piVar3[0xc] & 0x204U)" ( (binary_expression "piVar3[0xc] & 0x204U" (subscript_expression "piVar3[0xc]" identifier [ number_literal ]) & number_literal) )) == number_literal) )) (compound_statement "{\n          iVar10 = FUN_00028630(piVar3[8],piVar3[0xc],\n                                PTR_s_ore_than_one_of__i___f___n__only_00043128 + 0xc4c);\n          piVar3[7] = iVar10;\n          if (iVar10 < 0) {\n            piVar3[0xc] = piVar3[0xc] | 4;\n          }\n        }" { (expression_statement "iVar10 = FUN_00028630(piVar3[8],piVar3[0xc],\n                                PTR_s_ore_than_one_of__i___f___n__only_00043128 + 0xc4c);" (assignment_expression "iVar10 = FUN_00028630(piVar3[8],piVar3[0xc],\n                                PTR_s_ore_than_one_of__i___f___n__only_00043128 + 0xc4c)" identifier = (call_expression "FUN_00028630(piVar3[8],piVar3[0xc],\n                                PTR_s_ore_than_one_of__i___f___n__only_00043128 + 0xc4c)" identifier (argument_list "(piVar3[8],piVar3[0xc],\n                                PTR_s_ore_than_one_of__i___f___n__only_00043128 + 0xc4c)" ( (subscript_expression "piVar3[8]" identifier [ number_literal ]) , (subscript_expression "piVar3[0xc]" identifier [ number_literal ]) , (binary_expression "PTR_s_ore_than_one_of__i___f___n__only_00043128 + 0xc4c" identifier + number_literal) )))) ;) (expression_statement "piVar3[7] = iVar10;" (assignment_expression "piVar3[7] = iVar10" (subscript_expression "piVar3[7]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (iVar10 < 0) {\n            piVar3[0xc] = piVar3[0xc] | 4;\n          }" if (parenthesized_expression "(iVar10 < 0)" ( (binary_expression "iVar10 < 0" identifier < number_literal) )) (compound_statement "{\n            piVar3[0xc] = piVar3[0xc] | 4;\n          }" { (expression_statement "piVar3[0xc] = piVar3[0xc] | 4;" (assignment_expression "piVar3[0xc] = piVar3[0xc] | 4" (subscript_expression "piVar3[0xc]" identifier [ number_literal ]) = (binary_expression "piVar3[0xc] | 4" (subscript_expression "piVar3[0xc]" identifier [ number_literal ]) | number_literal)) ;) })) })) (expression_statement "i_ring_init(piVar3 + 0xf,0xffffffff);" (call_expression "i_ring_init(piVar3 + 0xf,0xffffffff)" identifier (argument_list "(piVar3 + 0xf,0xffffffff)" ( (binary_expression "piVar3 + 0xf" identifier + number_literal) , number_literal ))) ;) (return_statement "return piVar3;" return identifier ;) })) })) (labeled_statement "LAB_00029aac:\n    FUN_00027ddc(iVar9);" statement_identifier : (expression_statement "FUN_00027ddc(iVar9);" (call_expression "FUN_00027ddc(iVar9)" identifier (argument_list "(iVar9)" ( identifier ))) ;)) (expression_statement "(*(code *)PTR_free_0004363c)(iVar10);" (call_expression "(*(code *)PTR_free_0004363c)(iVar10)" (parenthesized_expression "(*(code *)PTR_free_0004363c)" ( (pointer_expression "*(code *)PTR_free_0004363c" * (cast_expression "(code *)PTR_free_0004363c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(iVar10)" ( identifier ))) ;) }) (else_clause "else {\n    pcVar15 = (code *)(PTR_LAB_0004326c + 0x7d20);\n    iVar10 = FUN_00027d20(piVar3,PTR_s_ore_than_one_of__i___f___n__only_00043128 + 0x44c,0);\n    if (iVar10 != 0) {\n      iVar14 = *param_1;\n      *(undefined4 *)(iVar10 + 0x30) = 0xffffffff;\n      *(undefined4 *)(iVar10 + 0x38) = 0xffffffff;\n      if (param_3 == 0) {\n        uVar12 = 1;\n      }\n      else {\n        uVar12 = (uint)(piVar3[0xc] << 0x15) >> 0x1f;\n      }\n      if (iVar14 == 0) goto LAB_00029b78;\n      local_30 = 0;\n      uVar4 = 0;\n      pcVar5 = (code *)(PTR_s_ore_than_one_of__i___f___n__only_00043128 + -0x7d80);\n      iVar11 = 0;\n      do {\n        uVar6 = (*(code *)PTR_strlen_00043564)(iVar14);\n        if ((((param_2 & 0x1000) == 0) && (2 < uVar6)) &&\n           (iVar9 = iVar14 + uVar6, *(char *)(iVar9 + -1) == '/')) {\n          do {\n            if (*(char *)(iVar9 + -2) != '/') break;\n            uVar6 = uVar6 - 1;\n            iVar9 = iVar14 + uVar6;\n          } while (uVar6 != 1);\n        }\n        iVar14 = (*pcVar15)(piVar3,iVar14,uVar6);\n        iVar9 = iVar11;\n        if (iVar14 == 0) goto LAB_00029aac;\n        *(undefined4 *)(iVar14 + 0x30) = 0;\n        *(int *)(iVar14 + 4) = iVar10;\n        *(int *)(iVar14 + 0x18) = iVar14 + 0xe8;\n        iVar9 = iVar14;\n        if (uVar12 == 0) {\n          uVar8 = (*pcVar5)(piVar3[8],piVar3 + 0xc,iVar14,0);\n          *(undefined2 *)(iVar14 + 0x3c) = uVar8;\n          if (param_3 != 0) goto LAB_00029978;\n          *(undefined4 *)(iVar14 + 8) = 0;\n          if (iVar11 != 0) goto LAB_00029b5c;\n        }\n        else if (iVar11 == 0) {\n          uVar8 = (*pcVar5)(piVar3[8],piVar3 + 0xc,iVar14,0);\n          *(undefined2 *)(iVar14 + 0x3c) = uVar8;\n          if (param_3 != 0) goto LAB_00029978;\n          *(undefined4 *)(iVar14 + 8) = 0;\n        }\n        else {\n          *(undefined4 *)(iVar14 + 0x84) = 2;\n          *(undefined4 *)(iVar14 + 0x80) = 0;\n          *(undefined2 *)(iVar14 + 0x3c) = 0xb;\n          if (param_3 == 0) {\n            *(undefined4 *)(iVar14 + 8) = 0;\nLAB_00029b5c:\n            *(int *)(local_30 + 8) = iVar14;\n            iVar9 = iVar11;\n          }\n          else {\nLAB_00029978:\n            *(int *)(iVar14 + 8) = iVar11;\n            iVar14 = local_30;\n          }\n        }\n        local_30 = iVar14;\n        param_1 = param_1 + 1;\n        iVar14 = *param_1;\n        uVar4 = uVar4 + 1;\n        iVar11 = iVar9;\n      } while (iVar14 != 0);\n      if ((param_3 != 0) && (1 < uVar4)) {\n        iVar9 = FUN_00027be4(piVar3,iVar9,uVar4);\n      }\n      goto LAB_000299c0;\n    }\n  }" else (compound_statement "{\n    pcVar15 = (code *)(PTR_LAB_0004326c + 0x7d20);\n    iVar10 = FUN_00027d20(piVar3,PTR_s_ore_than_one_of__i___f___n__only_00043128 + 0x44c,0);\n    if (iVar10 != 0) {\n      iVar14 = *param_1;\n      *(undefined4 *)(iVar10 + 0x30) = 0xffffffff;\n      *(undefined4 *)(iVar10 + 0x38) = 0xffffffff;\n      if (param_3 == 0) {\n        uVar12 = 1;\n      }\n      else {\n        uVar12 = (uint)(piVar3[0xc] << 0x15) >> 0x1f;\n      }\n      if (iVar14 == 0) goto LAB_00029b78;\n      local_30 = 0;\n      uVar4 = 0;\n      pcVar5 = (code *)(PTR_s_ore_than_one_of__i___f___n__only_00043128 + -0x7d80);\n      iVar11 = 0;\n      do {\n        uVar6 = (*(code *)PTR_strlen_00043564)(iVar14);\n        if ((((param_2 & 0x1000) == 0) && (2 < uVar6)) &&\n           (iVar9 = iVar14 + uVar6, *(char *)(iVar9 + -1) == '/')) {\n          do {\n            if (*(char *)(iVar9 + -2) != '/') break;\n            uVar6 = uVar6 - 1;\n            iVar9 = iVar14 + uVar6;\n          } while (uVar6 != 1);\n        }\n        iVar14 = (*pcVar15)(piVar3,iVar14,uVar6);\n        iVar9 = iVar11;\n        if (iVar14 == 0) goto LAB_00029aac;\n        *(undefined4 *)(iVar14 + 0x30) = 0;\n        *(int *)(iVar14 + 4) = iVar10;\n        *(int *)(iVar14 + 0x18) = iVar14 + 0xe8;\n        iVar9 = iVar14;\n        if (uVar12 == 0) {\n          uVar8 = (*pcVar5)(piVar3[8],piVar3 + 0xc,iVar14,0);\n          *(undefined2 *)(iVar14 + 0x3c) = uVar8;\n          if (param_3 != 0) goto LAB_00029978;\n          *(undefined4 *)(iVar14 + 8) = 0;\n          if (iVar11 != 0) goto LAB_00029b5c;\n        }\n        else if (iVar11 == 0) {\n          uVar8 = (*pcVar5)(piVar3[8],piVar3 + 0xc,iVar14,0);\n          *(undefined2 *)(iVar14 + 0x3c) = uVar8;\n          if (param_3 != 0) goto LAB_00029978;\n          *(undefined4 *)(iVar14 + 8) = 0;\n        }\n        else {\n          *(undefined4 *)(iVar14 + 0x84) = 2;\n          *(undefined4 *)(iVar14 + 0x80) = 0;\n          *(undefined2 *)(iVar14 + 0x3c) = 0xb;\n          if (param_3 == 0) {\n            *(undefined4 *)(iVar14 + 8) = 0;\nLAB_00029b5c:\n            *(int *)(local_30 + 8) = iVar14;\n            iVar9 = iVar11;\n          }\n          else {\nLAB_00029978:\n            *(int *)(iVar14 + 8) = iVar11;\n            iVar14 = local_30;\n          }\n        }\n        local_30 = iVar14;\n        param_1 = param_1 + 1;\n        iVar14 = *param_1;\n        uVar4 = uVar4 + 1;\n        iVar11 = iVar9;\n      } while (iVar14 != 0);\n      if ((param_3 != 0) && (1 < uVar4)) {\n        iVar9 = FUN_00027be4(piVar3,iVar9,uVar4);\n      }\n      goto LAB_000299c0;\n    }\n  }" { (expression_statement "pcVar15 = (code *)(PTR_LAB_0004326c + 0x7d20);" (assignment_expression "pcVar15 = (code *)(PTR_LAB_0004326c + 0x7d20)" identifier = (cast_expression "(code *)(PTR_LAB_0004326c + 0x7d20)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_0004326c + 0x7d20)" ( (binary_expression "PTR_LAB_0004326c + 0x7d20" identifier + number_literal) )))) ;) (expression_statement "iVar10 = FUN_00027d20(piVar3,PTR_s_ore_than_one_of__i___f___n__only_00043128 + 0x44c,0);" (assignment_expression "iVar10 = FUN_00027d20(piVar3,PTR_s_ore_than_one_of__i___f___n__only_00043128 + 0x44c,0)" identifier = (call_expression "FUN_00027d20(piVar3,PTR_s_ore_than_one_of__i___f___n__only_00043128 + 0x44c,0)" identifier (argument_list "(piVar3,PTR_s_ore_than_one_of__i___f___n__only_00043128 + 0x44c,0)" ( identifier , (binary_expression "PTR_s_ore_than_one_of__i___f___n__only_00043128 + 0x44c" identifier + number_literal) , number_literal )))) ;) (if_statement "if (iVar10 != 0) {\n      iVar14 = *param_1;\n      *(undefined4 *)(iVar10 + 0x30) = 0xffffffff;\n      *(undefined4 *)(iVar10 + 0x38) = 0xffffffff;\n      if (param_3 == 0) {\n        uVar12 = 1;\n      }\n      else {\n        uVar12 = (uint)(piVar3[0xc] << 0x15) >> 0x1f;\n      }\n      if (iVar14 == 0) goto LAB_00029b78;\n      local_30 = 0;\n      uVar4 = 0;\n      pcVar5 = (code *)(PTR_s_ore_than_one_of__i___f___n__only_00043128 + -0x7d80);\n      iVar11 = 0;\n      do {\n        uVar6 = (*(code *)PTR_strlen_00043564)(iVar14);\n        if ((((param_2 & 0x1000) == 0) && (2 < uVar6)) &&\n           (iVar9 = iVar14 + uVar6, *(char *)(iVar9 + -1) == '/')) {\n          do {\n            if (*(char *)(iVar9 + -2) != '/') break;\n            uVar6 = uVar6 - 1;\n            iVar9 = iVar14 + uVar6;\n          } while (uVar6 != 1);\n        }\n        iVar14 = (*pcVar15)(piVar3,iVar14,uVar6);\n        iVar9 = iVar11;\n        if (iVar14 == 0) goto LAB_00029aac;\n        *(undefined4 *)(iVar14 + 0x30) = 0;\n        *(int *)(iVar14 + 4) = iVar10;\n        *(int *)(iVar14 + 0x18) = iVar14 + 0xe8;\n        iVar9 = iVar14;\n        if (uVar12 == 0) {\n          uVar8 = (*pcVar5)(piVar3[8],piVar3 + 0xc,iVar14,0);\n          *(undefined2 *)(iVar14 + 0x3c) = uVar8;\n          if (param_3 != 0) goto LAB_00029978;\n          *(undefined4 *)(iVar14 + 8) = 0;\n          if (iVar11 != 0) goto LAB_00029b5c;\n        }\n        else if (iVar11 == 0) {\n          uVar8 = (*pcVar5)(piVar3[8],piVar3 + 0xc,iVar14,0);\n          *(undefined2 *)(iVar14 + 0x3c) = uVar8;\n          if (param_3 != 0) goto LAB_00029978;\n          *(undefined4 *)(iVar14 + 8) = 0;\n        }\n        else {\n          *(undefined4 *)(iVar14 + 0x84) = 2;\n          *(undefined4 *)(iVar14 + 0x80) = 0;\n          *(undefined2 *)(iVar14 + 0x3c) = 0xb;\n          if (param_3 == 0) {\n            *(undefined4 *)(iVar14 + 8) = 0;\nLAB_00029b5c:\n            *(int *)(local_30 + 8) = iVar14;\n            iVar9 = iVar11;\n          }\n          else {\nLAB_00029978:\n            *(int *)(iVar14 + 8) = iVar11;\n            iVar14 = local_30;\n          }\n        }\n        local_30 = iVar14;\n        param_1 = param_1 + 1;\n        iVar14 = *param_1;\n        uVar4 = uVar4 + 1;\n        iVar11 = iVar9;\n      } while (iVar14 != 0);\n      if ((param_3 != 0) && (1 < uVar4)) {\n        iVar9 = FUN_00027be4(piVar3,iVar9,uVar4);\n      }\n      goto LAB_000299c0;\n    }" if (parenthesized_expression "(iVar10 != 0)" ( (binary_expression "iVar10 != 0" identifier != number_literal) )) (compound_statement "{\n      iVar14 = *param_1;\n      *(undefined4 *)(iVar10 + 0x30) = 0xffffffff;\n      *(undefined4 *)(iVar10 + 0x38) = 0xffffffff;\n      if (param_3 == 0) {\n        uVar12 = 1;\n      }\n      else {\n        uVar12 = (uint)(piVar3[0xc] << 0x15) >> 0x1f;\n      }\n      if (iVar14 == 0) goto LAB_00029b78;\n      local_30 = 0;\n      uVar4 = 0;\n      pcVar5 = (code *)(PTR_s_ore_than_one_of__i___f___n__only_00043128 + -0x7d80);\n      iVar11 = 0;\n      do {\n        uVar6 = (*(code *)PTR_strlen_00043564)(iVar14);\n        if ((((param_2 & 0x1000) == 0) && (2 < uVar6)) &&\n           (iVar9 = iVar14 + uVar6, *(char *)(iVar9 + -1) == '/')) {\n          do {\n            if (*(char *)(iVar9 + -2) != '/') break;\n            uVar6 = uVar6 - 1;\n            iVar9 = iVar14 + uVar6;\n          } while (uVar6 != 1);\n        }\n        iVar14 = (*pcVar15)(piVar3,iVar14,uVar6);\n        iVar9 = iVar11;\n        if (iVar14 == 0) goto LAB_00029aac;\n        *(undefined4 *)(iVar14 + 0x30) = 0;\n        *(int *)(iVar14 + 4) = iVar10;\n        *(int *)(iVar14 + 0x18) = iVar14 + 0xe8;\n        iVar9 = iVar14;\n        if (uVar12 == 0) {\n          uVar8 = (*pcVar5)(piVar3[8],piVar3 + 0xc,iVar14,0);\n          *(undefined2 *)(iVar14 + 0x3c) = uVar8;\n          if (param_3 != 0) goto LAB_00029978;\n          *(undefined4 *)(iVar14 + 8) = 0;\n          if (iVar11 != 0) goto LAB_00029b5c;\n        }\n        else if (iVar11 == 0) {\n          uVar8 = (*pcVar5)(piVar3[8],piVar3 + 0xc,iVar14,0);\n          *(undefined2 *)(iVar14 + 0x3c) = uVar8;\n          if (param_3 != 0) goto LAB_00029978;\n          *(undefined4 *)(iVar14 + 8) = 0;\n        }\n        else {\n          *(undefined4 *)(iVar14 + 0x84) = 2;\n          *(undefined4 *)(iVar14 + 0x80) = 0;\n          *(undefined2 *)(iVar14 + 0x3c) = 0xb;\n          if (param_3 == 0) {\n            *(undefined4 *)(iVar14 + 8) = 0;\nLAB_00029b5c:\n            *(int *)(local_30 + 8) = iVar14;\n            iVar9 = iVar11;\n          }\n          else {\nLAB_00029978:\n            *(int *)(iVar14 + 8) = iVar11;\n            iVar14 = local_30;\n          }\n        }\n        local_30 = iVar14;\n        param_1 = param_1 + 1;\n        iVar14 = *param_1;\n        uVar4 = uVar4 + 1;\n        iVar11 = iVar9;\n      } while (iVar14 != 0);\n      if ((param_3 != 0) && (1 < uVar4)) {\n        iVar9 = FUN_00027be4(piVar3,iVar9,uVar4);\n      }\n      goto LAB_000299c0;\n    }" { (expression_statement "iVar14 = *param_1;" (assignment_expression "iVar14 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "*(undefined4 *)(iVar10 + 0x30) = 0xffffffff;" (assignment_expression "*(undefined4 *)(iVar10 + 0x30) = 0xffffffff" (pointer_expression "*(undefined4 *)(iVar10 + 0x30)" * (cast_expression "(undefined4 *)(iVar10 + 0x30)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar10 + 0x30)" ( (binary_expression "iVar10 + 0x30" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(iVar10 + 0x38) = 0xffffffff;" (assignment_expression "*(undefined4 *)(iVar10 + 0x38) = 0xffffffff" (pointer_expression "*(undefined4 *)(iVar10 + 0x38)" * (cast_expression "(undefined4 *)(iVar10 + 0x38)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar10 + 0x38)" ( (binary_expression "iVar10 + 0x38" identifier + number_literal) )))) = number_literal) ;) (if_statement "if (param_3 == 0) {\n        uVar12 = 1;\n      }\n      else {\n        uVar12 = (uint)(piVar3[0xc] << 0x15) >> 0x1f;\n      }" if (parenthesized_expression "(param_3 == 0)" ( (binary_expression "param_3 == 0" identifier == number_literal) )) (compound_statement "{\n        uVar12 = 1;\n      }" { (expression_statement "uVar12 = 1;" (assignment_expression "uVar12 = 1" identifier = number_literal) ;) }) (else_clause "else {\n        uVar12 = (uint)(piVar3[0xc] << 0x15) >> 0x1f;\n      }" else (compound_statement "{\n        uVar12 = (uint)(piVar3[0xc] << 0x15) >> 0x1f;\n      }" { (expression_statement "uVar12 = (uint)(piVar3[0xc] << 0x15) >> 0x1f;" (assignment_expression "uVar12 = (uint)(piVar3[0xc] << 0x15) >> 0x1f" identifier = (binary_expression "(uint)(piVar3[0xc] << 0x15) >> 0x1f" (call_expression "(uint)(piVar3[0xc] << 0x15)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(piVar3[0xc] << 0x15)" ( (binary_expression "piVar3[0xc] << 0x15" (subscript_expression "piVar3[0xc]" identifier [ number_literal ]) << number_literal) ))) >> number_literal)) ;) }))) (if_statement "if (iVar14 == 0) goto LAB_00029b78;" if (parenthesized_expression "(iVar14 == 0)" ( (binary_expression "iVar14 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00029b78;" goto statement_identifier ;)) (expression_statement "local_30 = 0;" (assignment_expression "local_30 = 0" identifier = number_literal) ;) (expression_statement "uVar4 = 0;" (assignment_expression "uVar4 = 0" identifier = number_literal) ;) (expression_statement "pcVar5 = (code *)(PTR_s_ore_than_one_of__i___f___n__only_00043128 + -0x7d80);" (assignment_expression "pcVar5 = (code *)(PTR_s_ore_than_one_of__i___f___n__only_00043128 + -0x7d80)" identifier = (cast_expression "(code *)(PTR_s_ore_than_one_of__i___f___n__only_00043128 + -0x7d80)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_s_ore_than_one_of__i___f___n__only_00043128 + -0x7d80)" ( (binary_expression "PTR_s_ore_than_one_of__i___f___n__only_00043128 + -0x7d80" identifier + number_literal) )))) ;) (expression_statement "iVar11 = 0;" (assignment_expression "iVar11 = 0" identifier = number_literal) ;) (do_statement "do {\n        uVar6 = (*(code *)PTR_strlen_00043564)(iVar14);\n        if ((((param_2 & 0x1000) == 0) && (2 < uVar6)) &&\n           (iVar9 = iVar14 + uVar6, *(char *)(iVar9 + -1) == '/')) {\n          do {\n            if (*(char *)(iVar9 + -2) != '/') break;\n            uVar6 = uVar6 - 1;\n            iVar9 = iVar14 + uVar6;\n          } while (uVar6 != 1);\n        }\n        iVar14 = (*pcVar15)(piVar3,iVar14,uVar6);\n        iVar9 = iVar11;\n        if (iVar14 == 0) goto LAB_00029aac;\n        *(undefined4 *)(iVar14 + 0x30) = 0;\n        *(int *)(iVar14 + 4) = iVar10;\n        *(int *)(iVar14 + 0x18) = iVar14 + 0xe8;\n        iVar9 = iVar14;\n        if (uVar12 == 0) {\n          uVar8 = (*pcVar5)(piVar3[8],piVar3 + 0xc,iVar14,0);\n          *(undefined2 *)(iVar14 + 0x3c) = uVar8;\n          if (param_3 != 0) goto LAB_00029978;\n          *(undefined4 *)(iVar14 + 8) = 0;\n          if (iVar11 != 0) goto LAB_00029b5c;\n        }\n        else if (iVar11 == 0) {\n          uVar8 = (*pcVar5)(piVar3[8],piVar3 + 0xc,iVar14,0);\n          *(undefined2 *)(iVar14 + 0x3c) = uVar8;\n          if (param_3 != 0) goto LAB_00029978;\n          *(undefined4 *)(iVar14 + 8) = 0;\n        }\n        else {\n          *(undefined4 *)(iVar14 + 0x84) = 2;\n          *(undefined4 *)(iVar14 + 0x80) = 0;\n          *(undefined2 *)(iVar14 + 0x3c) = 0xb;\n          if (param_3 == 0) {\n            *(undefined4 *)(iVar14 + 8) = 0;\nLAB_00029b5c:\n            *(int *)(local_30 + 8) = iVar14;\n            iVar9 = iVar11;\n          }\n          else {\nLAB_00029978:\n            *(int *)(iVar14 + 8) = iVar11;\n            iVar14 = local_30;\n          }\n        }\n        local_30 = iVar14;\n        param_1 = param_1 + 1;\n        iVar14 = *param_1;\n        uVar4 = uVar4 + 1;\n        iVar11 = iVar9;\n      } while (iVar14 != 0);" do (compound_statement "{\n        uVar6 = (*(code *)PTR_strlen_00043564)(iVar14);\n        if ((((param_2 & 0x1000) == 0) && (2 < uVar6)) &&\n           (iVar9 = iVar14 + uVar6, *(char *)(iVar9 + -1) == '/')) {\n          do {\n            if (*(char *)(iVar9 + -2) != '/') break;\n            uVar6 = uVar6 - 1;\n            iVar9 = iVar14 + uVar6;\n          } while (uVar6 != 1);\n        }\n        iVar14 = (*pcVar15)(piVar3,iVar14,uVar6);\n        iVar9 = iVar11;\n        if (iVar14 == 0) goto LAB_00029aac;\n        *(undefined4 *)(iVar14 + 0x30) = 0;\n        *(int *)(iVar14 + 4) = iVar10;\n        *(int *)(iVar14 + 0x18) = iVar14 + 0xe8;\n        iVar9 = iVar14;\n        if (uVar12 == 0) {\n          uVar8 = (*pcVar5)(piVar3[8],piVar3 + 0xc,iVar14,0);\n          *(undefined2 *)(iVar14 + 0x3c) = uVar8;\n          if (param_3 != 0) goto LAB_00029978;\n          *(undefined4 *)(iVar14 + 8) = 0;\n          if (iVar11 != 0) goto LAB_00029b5c;\n        }\n        else if (iVar11 == 0) {\n          uVar8 = (*pcVar5)(piVar3[8],piVar3 + 0xc,iVar14,0);\n          *(undefined2 *)(iVar14 + 0x3c) = uVar8;\n          if (param_3 != 0) goto LAB_00029978;\n          *(undefined4 *)(iVar14 + 8) = 0;\n        }\n        else {\n          *(undefined4 *)(iVar14 + 0x84) = 2;\n          *(undefined4 *)(iVar14 + 0x80) = 0;\n          *(undefined2 *)(iVar14 + 0x3c) = 0xb;\n          if (param_3 == 0) {\n            *(undefined4 *)(iVar14 + 8) = 0;\nLAB_00029b5c:\n            *(int *)(local_30 + 8) = iVar14;\n            iVar9 = iVar11;\n          }\n          else {\nLAB_00029978:\n            *(int *)(iVar14 + 8) = iVar11;\n            iVar14 = local_30;\n          }\n        }\n        local_30 = iVar14;\n        param_1 = param_1 + 1;\n        iVar14 = *param_1;\n        uVar4 = uVar4 + 1;\n        iVar11 = iVar9;\n      }" { (expression_statement "uVar6 = (*(code *)PTR_strlen_00043564)(iVar14);" (assignment_expression "uVar6 = (*(code *)PTR_strlen_00043564)(iVar14)" identifier = (call_expression "(*(code *)PTR_strlen_00043564)(iVar14)" (parenthesized_expression "(*(code *)PTR_strlen_00043564)" ( (pointer_expression "*(code *)PTR_strlen_00043564" * (cast_expression "(code *)PTR_strlen_00043564" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(iVar14)" ( identifier )))) ;) (if_statement "if ((((param_2 & 0x1000) == 0) && (2 < uVar6)) &&\n           (iVar9 = iVar14 + uVar6, *(char *)(iVar9 + -1) == '/')) {\n          do {\n            if (*(char *)(iVar9 + -2) != '/') break;\n            uVar6 = uVar6 - 1;\n            iVar9 = iVar14 + uVar6;\n          } while (uVar6 != 1);\n        }" if (parenthesized_expression "((((param_2 & 0x1000) == 0) && (2 < uVar6)) &&\n           (iVar9 = iVar14 + uVar6, *(char *)(iVar9 + -1) == '/'))" ( (binary_expression "(((param_2 & 0x1000) == 0) && (2 < uVar6)) &&\n           (iVar9 = iVar14 + uVar6, *(char *)(iVar9 + -1) == '/')" (parenthesized_expression "(((param_2 & 0x1000) == 0) && (2 < uVar6))" ( (binary_expression "((param_2 & 0x1000) == 0) && (2 < uVar6)" (parenthesized_expression "((param_2 & 0x1000) == 0)" ( (binary_expression "(param_2 & 0x1000) == 0" (parenthesized_expression "(param_2 & 0x1000)" ( (binary_expression "param_2 & 0x1000" identifier & number_literal) )) == number_literal) )) && (parenthesized_expression "(2 < uVar6)" ( (binary_expression "2 < uVar6" number_literal < identifier) ))) )) && (parenthesized_expression "(iVar9 = iVar14 + uVar6, *(char *)(iVar9 + -1) == '/')" ( (comma_expression "iVar9 = iVar14 + uVar6, *(char *)(iVar9 + -1) == '/'" (assignment_expression "iVar9 = iVar14 + uVar6" identifier = (binary_expression "iVar14 + uVar6" identifier + identifier)) , (binary_expression "*(char *)(iVar9 + -1) == '/'" (pointer_expression "*(char *)(iVar9 + -1)" * (cast_expression "(char *)(iVar9 + -1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + -1)" ( (binary_expression "iVar9 + -1" identifier + number_literal) )))) == (char_literal "'/'" ' character '))) ))) )) (compound_statement "{\n          do {\n            if (*(char *)(iVar9 + -2) != '/') break;\n            uVar6 = uVar6 - 1;\n            iVar9 = iVar14 + uVar6;\n          } while (uVar6 != 1);\n        }" { (do_statement "do {\n            if (*(char *)(iVar9 + -2) != '/') break;\n            uVar6 = uVar6 - 1;\n            iVar9 = iVar14 + uVar6;\n          } while (uVar6 != 1);" do (compound_statement "{\n            if (*(char *)(iVar9 + -2) != '/') break;\n            uVar6 = uVar6 - 1;\n            iVar9 = iVar14 + uVar6;\n          }" { (if_statement "if (*(char *)(iVar9 + -2) != '/') break;" if (parenthesized_expression "(*(char *)(iVar9 + -2) != '/')" ( (binary_expression "*(char *)(iVar9 + -2) != '/'" (pointer_expression "*(char *)(iVar9 + -2)" * (cast_expression "(char *)(iVar9 + -2)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + -2)" ( (binary_expression "iVar9 + -2" identifier + number_literal) )))) != (char_literal "'/'" ' character ')) )) (break_statement "break;" break ;)) (expression_statement "uVar6 = uVar6 - 1;" (assignment_expression "uVar6 = uVar6 - 1" identifier = (binary_expression "uVar6 - 1" identifier - number_literal)) ;) (expression_statement "iVar9 = iVar14 + uVar6;" (assignment_expression "iVar9 = iVar14 + uVar6" identifier = (binary_expression "iVar14 + uVar6" identifier + identifier)) ;) }) while (parenthesized_expression "(uVar6 != 1)" ( (binary_expression "uVar6 != 1" identifier != number_literal) )) ;) })) (expression_statement "iVar14 = (*pcVar15)(piVar3,iVar14,uVar6);" (assignment_expression "iVar14 = (*pcVar15)(piVar3,iVar14,uVar6)" identifier = (call_expression "(*pcVar15)(piVar3,iVar14,uVar6)" (parenthesized_expression "(*pcVar15)" ( (pointer_expression "*pcVar15" * identifier) )) (argument_list "(piVar3,iVar14,uVar6)" ( identifier , identifier , identifier )))) ;) (expression_statement "iVar9 = iVar11;" (assignment_expression "iVar9 = iVar11" identifier = identifier) ;) (if_statement "if (iVar14 == 0) goto LAB_00029aac;" if (parenthesized_expression "(iVar14 == 0)" ( (binary_expression "iVar14 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00029aac;" goto statement_identifier ;)) (expression_statement "*(undefined4 *)(iVar14 + 0x30) = 0;" (assignment_expression "*(undefined4 *)(iVar14 + 0x30) = 0" (pointer_expression "*(undefined4 *)(iVar14 + 0x30)" * (cast_expression "(undefined4 *)(iVar14 + 0x30)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar14 + 0x30)" ( (binary_expression "iVar14 + 0x30" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(int *)(iVar14 + 4) = iVar10;" (assignment_expression "*(int *)(iVar14 + 4) = iVar10" (pointer_expression "*(int *)(iVar14 + 4)" * (cast_expression "(int *)(iVar14 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar14 + 4)" ( (binary_expression "iVar14 + 4" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(iVar14 + 0x18) = iVar14 + 0xe8;" (assignment_expression "*(int *)(iVar14 + 0x18) = iVar14 + 0xe8" (pointer_expression "*(int *)(iVar14 + 0x18)" * (cast_expression "(int *)(iVar14 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar14 + 0x18)" ( (binary_expression "iVar14 + 0x18" identifier + number_literal) )))) = (binary_expression "iVar14 + 0xe8" identifier + number_literal)) ;) (expression_statement "iVar9 = iVar14;" (assignment_expression "iVar9 = iVar14" identifier = identifier) ;) (if_statement "if (uVar12 == 0) {\n          uVar8 = (*pcVar5)(piVar3[8],piVar3 + 0xc,iVar14,0);\n          *(undefined2 *)(iVar14 + 0x3c) = uVar8;\n          if (param_3 != 0) goto LAB_00029978;\n          *(undefined4 *)(iVar14 + 8) = 0;\n          if (iVar11 != 0) goto LAB_00029b5c;\n        }\n        else if (iVar11 == 0) {\n          uVar8 = (*pcVar5)(piVar3[8],piVar3 + 0xc,iVar14,0);\n          *(undefined2 *)(iVar14 + 0x3c) = uVar8;\n          if (param_3 != 0) goto LAB_00029978;\n          *(undefined4 *)(iVar14 + 8) = 0;\n        }\n        else {\n          *(undefined4 *)(iVar14 + 0x84) = 2;\n          *(undefined4 *)(iVar14 + 0x80) = 0;\n          *(undefined2 *)(iVar14 + 0x3c) = 0xb;\n          if (param_3 == 0) {\n            *(undefined4 *)(iVar14 + 8) = 0;\nLAB_00029b5c:\n            *(int *)(local_30 + 8) = iVar14;\n            iVar9 = iVar11;\n          }\n          else {\nLAB_00029978:\n            *(int *)(iVar14 + 8) = iVar11;\n            iVar14 = local_30;\n          }\n        }" if (parenthesized_expression "(uVar12 == 0)" ( (binary_expression "uVar12 == 0" identifier == number_literal) )) (compound_statement "{\n          uVar8 = (*pcVar5)(piVar3[8],piVar3 + 0xc,iVar14,0);\n          *(undefined2 *)(iVar14 + 0x3c) = uVar8;\n          if (param_3 != 0) goto LAB_00029978;\n          *(undefined4 *)(iVar14 + 8) = 0;\n          if (iVar11 != 0) goto LAB_00029b5c;\n        }" { (expression_statement "uVar8 = (*pcVar5)(piVar3[8],piVar3 + 0xc,iVar14,0);" (assignment_expression "uVar8 = (*pcVar5)(piVar3[8],piVar3 + 0xc,iVar14,0)" identifier = (call_expression "(*pcVar5)(piVar3[8],piVar3 + 0xc,iVar14,0)" (parenthesized_expression "(*pcVar5)" ( (pointer_expression "*pcVar5" * identifier) )) (argument_list "(piVar3[8],piVar3 + 0xc,iVar14,0)" ( (subscript_expression "piVar3[8]" identifier [ number_literal ]) , (binary_expression "piVar3 + 0xc" identifier + number_literal) , identifier , number_literal )))) ;) (expression_statement "*(undefined2 *)(iVar14 + 0x3c) = uVar8;" (assignment_expression "*(undefined2 *)(iVar14 + 0x3c) = uVar8" (pointer_expression "*(undefined2 *)(iVar14 + 0x3c)" * (cast_expression "(undefined2 *)(iVar14 + 0x3c)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar14 + 0x3c)" ( (binary_expression "iVar14 + 0x3c" identifier + number_literal) )))) = identifier) ;) (if_statement "if (param_3 != 0) goto LAB_00029978;" if (parenthesized_expression "(param_3 != 0)" ( (binary_expression "param_3 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00029978;" goto statement_identifier ;)) (expression_statement "*(undefined4 *)(iVar14 + 8) = 0;" (assignment_expression "*(undefined4 *)(iVar14 + 8) = 0" (pointer_expression "*(undefined4 *)(iVar14 + 8)" * (cast_expression "(undefined4 *)(iVar14 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar14 + 8)" ( (binary_expression "iVar14 + 8" identifier + number_literal) )))) = number_literal) ;) (if_statement "if (iVar11 != 0) goto LAB_00029b5c;" if (parenthesized_expression "(iVar11 != 0)" ( (binary_expression "iVar11 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00029b5c;" goto statement_identifier ;)) }) (else_clause "else if (iVar11 == 0) {\n          uVar8 = (*pcVar5)(piVar3[8],piVar3 + 0xc,iVar14,0);\n          *(undefined2 *)(iVar14 + 0x3c) = uVar8;\n          if (param_3 != 0) goto LAB_00029978;\n          *(undefined4 *)(iVar14 + 8) = 0;\n        }\n        else {\n          *(undefined4 *)(iVar14 + 0x84) = 2;\n          *(undefined4 *)(iVar14 + 0x80) = 0;\n          *(undefined2 *)(iVar14 + 0x3c) = 0xb;\n          if (param_3 == 0) {\n            *(undefined4 *)(iVar14 + 8) = 0;\nLAB_00029b5c:\n            *(int *)(local_30 + 8) = iVar14;\n            iVar9 = iVar11;\n          }\n          else {\nLAB_00029978:\n            *(int *)(iVar14 + 8) = iVar11;\n            iVar14 = local_30;\n          }\n        }" else (if_statement "if (iVar11 == 0) {\n          uVar8 = (*pcVar5)(piVar3[8],piVar3 + 0xc,iVar14,0);\n          *(undefined2 *)(iVar14 + 0x3c) = uVar8;\n          if (param_3 != 0) goto LAB_00029978;\n          *(undefined4 *)(iVar14 + 8) = 0;\n        }\n        else {\n          *(undefined4 *)(iVar14 + 0x84) = 2;\n          *(undefined4 *)(iVar14 + 0x80) = 0;\n          *(undefined2 *)(iVar14 + 0x3c) = 0xb;\n          if (param_3 == 0) {\n            *(undefined4 *)(iVar14 + 8) = 0;\nLAB_00029b5c:\n            *(int *)(local_30 + 8) = iVar14;\n            iVar9 = iVar11;\n          }\n          else {\nLAB_00029978:\n            *(int *)(iVar14 + 8) = iVar11;\n            iVar14 = local_30;\n          }\n        }" if (parenthesized_expression "(iVar11 == 0)" ( (binary_expression "iVar11 == 0" identifier == number_literal) )) (compound_statement "{\n          uVar8 = (*pcVar5)(piVar3[8],piVar3 + 0xc,iVar14,0);\n          *(undefined2 *)(iVar14 + 0x3c) = uVar8;\n          if (param_3 != 0) goto LAB_00029978;\n          *(undefined4 *)(iVar14 + 8) = 0;\n        }" { (expression_statement "uVar8 = (*pcVar5)(piVar3[8],piVar3 + 0xc,iVar14,0);" (assignment_expression "uVar8 = (*pcVar5)(piVar3[8],piVar3 + 0xc,iVar14,0)" identifier = (call_expression "(*pcVar5)(piVar3[8],piVar3 + 0xc,iVar14,0)" (parenthesized_expression "(*pcVar5)" ( (pointer_expression "*pcVar5" * identifier) )) (argument_list "(piVar3[8],piVar3 + 0xc,iVar14,0)" ( (subscript_expression "piVar3[8]" identifier [ number_literal ]) , (binary_expression "piVar3 + 0xc" identifier + number_literal) , identifier , number_literal )))) ;) (expression_statement "*(undefined2 *)(iVar14 + 0x3c) = uVar8;" (assignment_expression "*(undefined2 *)(iVar14 + 0x3c) = uVar8" (pointer_expression "*(undefined2 *)(iVar14 + 0x3c)" * (cast_expression "(undefined2 *)(iVar14 + 0x3c)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar14 + 0x3c)" ( (binary_expression "iVar14 + 0x3c" identifier + number_literal) )))) = identifier) ;) (if_statement "if (param_3 != 0) goto LAB_00029978;" if (parenthesized_expression "(param_3 != 0)" ( (binary_expression "param_3 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00029978;" goto statement_identifier ;)) (expression_statement "*(undefined4 *)(iVar14 + 8) = 0;" (assignment_expression "*(undefined4 *)(iVar14 + 8) = 0" (pointer_expression "*(undefined4 *)(iVar14 + 8)" * (cast_expression "(undefined4 *)(iVar14 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar14 + 8)" ( (binary_expression "iVar14 + 8" identifier + number_literal) )))) = number_literal) ;) }) (else_clause "else {\n          *(undefined4 *)(iVar14 + 0x84) = 2;\n          *(undefined4 *)(iVar14 + 0x80) = 0;\n          *(undefined2 *)(iVar14 + 0x3c) = 0xb;\n          if (param_3 == 0) {\n            *(undefined4 *)(iVar14 + 8) = 0;\nLAB_00029b5c:\n            *(int *)(local_30 + 8) = iVar14;\n            iVar9 = iVar11;\n          }\n          else {\nLAB_00029978:\n            *(int *)(iVar14 + 8) = iVar11;\n            iVar14 = local_30;\n          }\n        }" else (compound_statement "{\n          *(undefined4 *)(iVar14 + 0x84) = 2;\n          *(undefined4 *)(iVar14 + 0x80) = 0;\n          *(undefined2 *)(iVar14 + 0x3c) = 0xb;\n          if (param_3 == 0) {\n            *(undefined4 *)(iVar14 + 8) = 0;\nLAB_00029b5c:\n            *(int *)(local_30 + 8) = iVar14;\n            iVar9 = iVar11;\n          }\n          else {\nLAB_00029978:\n            *(int *)(iVar14 + 8) = iVar11;\n            iVar14 = local_30;\n          }\n        }" { (expression_statement "*(undefined4 *)(iVar14 + 0x84) = 2;" (assignment_expression "*(undefined4 *)(iVar14 + 0x84) = 2" (pointer_expression "*(undefined4 *)(iVar14 + 0x84)" * (cast_expression "(undefined4 *)(iVar14 + 0x84)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar14 + 0x84)" ( (binary_expression "iVar14 + 0x84" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(iVar14 + 0x80) = 0;" (assignment_expression "*(undefined4 *)(iVar14 + 0x80) = 0" (pointer_expression "*(undefined4 *)(iVar14 + 0x80)" * (cast_expression "(undefined4 *)(iVar14 + 0x80)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar14 + 0x80)" ( (binary_expression "iVar14 + 0x80" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined2 *)(iVar14 + 0x3c) = 0xb;" (assignment_expression "*(undefined2 *)(iVar14 + 0x3c) = 0xb" (pointer_expression "*(undefined2 *)(iVar14 + 0x3c)" * (cast_expression "(undefined2 *)(iVar14 + 0x3c)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar14 + 0x3c)" ( (binary_expression "iVar14 + 0x3c" identifier + number_literal) )))) = number_literal) ;) (if_statement "if (param_3 == 0) {\n            *(undefined4 *)(iVar14 + 8) = 0;\nLAB_00029b5c:\n            *(int *)(local_30 + 8) = iVar14;\n            iVar9 = iVar11;\n          }\n          else {\nLAB_00029978:\n            *(int *)(iVar14 + 8) = iVar11;\n            iVar14 = local_30;\n          }" if (parenthesized_expression "(param_3 == 0)" ( (binary_expression "param_3 == 0" identifier == number_literal) )) (compound_statement "{\n            *(undefined4 *)(iVar14 + 8) = 0;\nLAB_00029b5c:\n            *(int *)(local_30 + 8) = iVar14;\n            iVar9 = iVar11;\n          }" { (expression_statement "*(undefined4 *)(iVar14 + 8) = 0;" (assignment_expression "*(undefined4 *)(iVar14 + 8) = 0" (pointer_expression "*(undefined4 *)(iVar14 + 8)" * (cast_expression "(undefined4 *)(iVar14 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar14 + 8)" ( (binary_expression "iVar14 + 8" identifier + number_literal) )))) = number_literal) ;) (labeled_statement "LAB_00029b5c:\n            *(int *)(local_30 + 8) = iVar14;" statement_identifier : (expression_statement "*(int *)(local_30 + 8) = iVar14;" (assignment_expression "*(int *)(local_30 + 8) = iVar14" (pointer_expression "*(int *)(local_30 + 8)" * (cast_expression "(int *)(local_30 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_30 + 8)" ( (binary_expression "local_30 + 8" identifier + number_literal) )))) = identifier) ;)) (expression_statement "iVar9 = iVar11;" (assignment_expression "iVar9 = iVar11" identifier = identifier) ;) }) (else_clause "else {\nLAB_00029978:\n            *(int *)(iVar14 + 8) = iVar11;\n            iVar14 = local_30;\n          }" else (compound_statement "{\nLAB_00029978:\n            *(int *)(iVar14 + 8) = iVar11;\n            iVar14 = local_30;\n          }" { (labeled_statement "LAB_00029978:\n            *(int *)(iVar14 + 8) = iVar11;" statement_identifier : (expression_statement "*(int *)(iVar14 + 8) = iVar11;" (assignment_expression "*(int *)(iVar14 + 8) = iVar11" (pointer_expression "*(int *)(iVar14 + 8)" * (cast_expression "(int *)(iVar14 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar14 + 8)" ( (binary_expression "iVar14 + 8" identifier + number_literal) )))) = identifier) ;)) (expression_statement "iVar14 = local_30;" (assignment_expression "iVar14 = local_30" identifier = identifier) ;) }))) }))))) (expression_statement "local_30 = iVar14;" (assignment_expression "local_30 = iVar14" identifier = identifier) ;) (expression_statement "param_1 = param_1 + 1;" (assignment_expression "param_1 = param_1 + 1" identifier = (binary_expression "param_1 + 1" identifier + number_literal)) ;) (expression_statement "iVar14 = *param_1;" (assignment_expression "iVar14 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "uVar4 = uVar4 + 1;" (assignment_expression "uVar4 = uVar4 + 1" identifier = (binary_expression "uVar4 + 1" identifier + number_literal)) ;) (expression_statement "iVar11 = iVar9;" (assignment_expression "iVar11 = iVar9" identifier = identifier) ;) }) while (parenthesized_expression "(iVar14 != 0)" ( (binary_expression "iVar14 != 0" identifier != number_literal) )) ;) (if_statement "if ((param_3 != 0) && (1 < uVar4)) {\n        iVar9 = FUN_00027be4(piVar3,iVar9,uVar4);\n      }" if (parenthesized_expression "((param_3 != 0) && (1 < uVar4))" ( (binary_expression "(param_3 != 0) && (1 < uVar4)" (parenthesized_expression "(param_3 != 0)" ( (binary_expression "param_3 != 0" identifier != number_literal) )) && (parenthesized_expression "(1 < uVar4)" ( (binary_expression "1 < uVar4" number_literal < identifier) ))) )) (compound_statement "{\n        iVar9 = FUN_00027be4(piVar3,iVar9,uVar4);\n      }" { (expression_statement "iVar9 = FUN_00027be4(piVar3,iVar9,uVar4);" (assignment_expression "iVar9 = FUN_00027be4(piVar3,iVar9,uVar4)" identifier = (call_expression "FUN_00027be4(piVar3,iVar9,uVar4)" identifier (argument_list "(piVar3,iVar9,uVar4)" ( identifier , identifier , identifier )))) ;) })) (goto_statement "goto LAB_000299c0;" goto statement_identifier ;) })) }))) (expression_statement "(*(code *)PTR_free_0004363c)(piVar3[6]);" (call_expression "(*(code *)PTR_free_0004363c)(piVar3[6])" (parenthesized_expression "(*(code *)PTR_free_0004363c)" ( (pointer_expression "*(code *)PTR_free_0004363c" * (cast_expression "(code *)PTR_free_0004363c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(piVar3[6])" ( (subscript_expression "piVar3[6]" identifier [ number_literal ]) ))) ;) (labeled_statement "LAB_00029ae0:\n  (*(code *)PTR_free_0004363c)(piVar3);" statement_identifier : (expression_statement "(*(code *)PTR_free_0004363c)(piVar3);" (call_expression "(*(code *)PTR_free_0004363c)(piVar3)" (parenthesized_expression "(*(code *)PTR_free_0004363c)" ( (pointer_expression "*(code *)PTR_free_0004363c" * (cast_expression "(code *)PTR_free_0004363c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(piVar3)" ( identifier ))) ;)) (return_statement "return (int *)0x0;" return (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) ;) })))
(translation_unit "FTS * fts_open(char **argv,int options,_func_int_FTSENT_ptr_ptr_FTSENT_ptr_ptr *compar)\n\n{\n  undefined *puVar1;\n  undefined *puVar2;\n  undefined3 extraout_var;\n  undefined3 extraout_var_00;\n  FTS *sp;\n  uint uVar3;\n  _Bool _Var13;\n  FTSENT *pFVar4;\n  code *pcVar5;\n  uint uVar6;\n  FTSENT *pFVar7;\n  FTSENT *pFVar8;\n  _ftsent *p_Var9;\n  undefined4 *puVar10;\n  ushort uVar12;\n  int iVar11;\n  char *pcVar14;\n  char *pcVar15;\n  FTS *pFVar16;\n  uint uVar17;\n  FTSENT *pFVar18;\n  char **ppcVar19;\n  code *pcVar20;\n  code *local_3c;\n  FTSENT *local_30;\n  \n  if ((((options & 0xffffe000U) != 0) || ((options & 0x204U) == 0x204)) || ((options & 0x12U) == 0))\n  {\n    puVar10 = (undefined4 *)(*(code *)PTR___errno_location_00043520)();\n    *puVar10 = 0x16;\n    return (FTS *)0x0;\n  }\n  sp = (FTS *)(*(code *)PTR_calloc_0004341c)(0x60,1);\n  if (sp == (FTS *)0x0) {\n    return (FTS *)0x0;\n  }\n  sp->fts_compar = (_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *)compar;\n  if ((options & 2U) == 0) {\n    sp->fts_options = options;\n  }\n  else {\n    sp->fts_options = options & 0xfffffdffU | 4;\n  }\n  pcVar15 = *argv;\n  sp->fts_cwd_fd = -100;\n  if (pcVar15 == (char *)0x0) {\n    pFVar16 = (FTS *)0x1000;\n  }\n  else {\n    uVar17 = 0;\n    ppcVar19 = argv;\n    do {\n      ppcVar19 = ppcVar19 + 1;\n      uVar3 = (*(code *)PTR_strlen_00043564)();\n      if (uVar17 < uVar3) {\n        uVar17 = uVar3;\n      }\n    } while (*ppcVar19 != (char *)0x0);\n    pFVar16 = (FTS *)(uVar17 + 1);\n    if (pFVar16 < (FTS *)0x1000) {\n      pFVar16 = (FTS *)0x1000;\n    }\n  }\n  _Var13 = fts_palloc((FTS *)&sp->fts_path,(size_t)&sp->fts_pathlen,pFVar16);\n  puVar2 = PTR_LAB_0004326c;\n  puVar1 = PTR_s_ore_than_one_of__i___f___n__only_00043128;\n  if (CONCAT31(extraout_var,_Var13) == 0) goto LAB_00029ae0;\n  if (*argv == (char *)0x0) {\n    pFVar4 = (FTSENT *)0x0;\nLAB_00029b78:\n    pFVar8 = (_ftsent *)0x0;\nLAB_000299c0:\n    local_3c = (code *)(puVar2 + 0x7d20);\n    p_Var9 = (_ftsent *)(*local_3c)(sp,puVar1 + 0x44c,0);\n    sp->fts_cur = p_Var9;\n    if (p_Var9 != (_ftsent *)0x0) {\n      p_Var9->fts_link = pFVar8;\n      p_Var9->fts_level = 1;\n      pFVar16 = (FTS *)sp->fts_options;\n      p_Var9->fts_info = 9;\n      _Var13 = setup_dir(pFVar16,(FTS *)&sp->fts_cycle);\n      if (CONCAT31(extraout_var_00,_Var13) != 0) {\n        if (((uint)sp->fts_options & 0x204) == 0) {\n          iVar11 = diropen((FTS *)sp->fts_cwd_fd,(char *)sp->fts_options,\n                           (FTS *)(PTR_s_ore_than_one_of__i___f___n__only_00043128 + 0xc4c));\n          sp->fts_rfd = iVar11;\n          if (iVar11 < 0) {\n            sp->fts_options = sp->fts_options | 4;\n          }\n        }\n        i_ring_init(&sp->fts_fd_ring,-1);\n        return sp;\n      }\n    }\nLAB_00029aac:\n    fts_lfree(pFVar8);\n    (*(code *)PTR_free_0004363c)(pFVar4);\n  }\n  else {\n    pcVar20 = (code *)(PTR_LAB_0004326c + 0x7d20);\n    pFVar4 = fts_alloc(sp,PTR_s_ore_than_one_of__i___f___n__only_00043128 + 0x44c,0);\n    if (pFVar4 != (FTSENT *)0x0) {\n      pcVar15 = *argv;\n      pFVar4->fts_level = -1;\n      pFVar4->fts_n_dirs_remaining = 0xffffffff;\n      if (compar == (_func_int_FTSENT_ptr_ptr_FTSENT_ptr_ptr *)0x0) {\n        uVar17 = 1;\n      }\n      else {\n        uVar17 = (uint)(sp->fts_options << 0x15) >> 0x1f;\n      }\n      if (pcVar15 == (char *)0x0) goto LAB_00029b78;\n      local_30 = (FTSENT *)0x0;\n      uVar3 = 0;\n      pcVar5 = (code *)(PTR_s_ore_than_one_of__i___f___n__only_00043128 + -0x7d80);\n      pFVar18 = (FTSENT *)0x0;\n      do {\n        uVar6 = (*(code *)PTR_strlen_00043564)(pcVar15);\n        if ((((options & 0x1000U) == 0) && (2 < uVar6)) &&\n           (pcVar14 = pcVar15 + uVar6, pcVar14[-1] == '/')) {\n          do {\n            if (pcVar14[-2] != '/') break;\n            uVar6 = uVar6 - 1;\n            pcVar14 = pcVar15 + uVar6;\n          } while (uVar6 != 1);\n        }\n        pFVar7 = (FTSENT *)(*pcVar20)(sp,pcVar15,uVar6);\n        pFVar8 = pFVar18;\n        if (pFVar7 == (FTSENT *)0x0) goto LAB_00029aac;\n        pFVar7->fts_level = 0;\n        pFVar7->fts_parent = pFVar4;\n        pFVar7->fts_accpath = (char *)(pFVar7 + 1);\n        pFVar8 = pFVar7;\n        if (uVar17 == 0) {\n          uVar12 = (*pcVar5)(sp->fts_cwd_fd,&sp->fts_options,pFVar7,0);\n          pFVar7->fts_info = uVar12;\n          if (compar != (_func_int_FTSENT_ptr_ptr_FTSENT_ptr_ptr *)0x0) goto LAB_00029978;\n          pFVar7->fts_link = (_ftsent *)0x0;\n          if (pFVar18 != (FTSENT *)0x0) goto LAB_00029b5c;\n        }\n        else if (pFVar18 == (FTSENT *)0x0) {\n          uVar12 = (*pcVar5)(sp->fts_cwd_fd,&sp->fts_options,pFVar7,0);\n          pFVar7->fts_info = uVar12;\n          if (compar != (_func_int_FTSENT_ptr_ptr_FTSENT_ptr_ptr *)0x0) goto LAB_00029978;\n          pFVar7->fts_link = (_ftsent *)0x0;\n        }\n        else {\n          *(undefined4 *)((int)&pFVar7->fts_statp[0].st_size + 4) = 2;\n          *(undefined4 *)&pFVar7->fts_statp[0].st_size = 0;\n          pFVar7->fts_info = 0xb;\n          if (compar == (_func_int_FTSENT_ptr_ptr_FTSENT_ptr_ptr *)0x0) {\n            pFVar7->fts_link = (_ftsent *)0x0;\nLAB_00029b5c:\n            local_30->fts_link = pFVar7;\n            pFVar8 = pFVar18;\n          }\n          else {\nLAB_00029978:\n            pFVar7->fts_link = pFVar18;\n            pFVar7 = local_30;\n          }\n        }\n        local_30 = pFVar7;\n        argv = argv + 1;\n        pcVar15 = *argv;\n        uVar3 = uVar3 + 1;\n        pFVar18 = pFVar8;\n      } while (pcVar15 != (char *)0x0);\n      if ((compar != (_func_int_FTSENT_ptr_ptr_FTSENT_ptr_ptr *)0x0) && (1 < uVar3)) {\n        pFVar8 = fts_sort(sp,pFVar8,uVar3);\n      }\n      goto LAB_000299c0;\n    }\n  }\n  (*(code *)PTR_free_0004363c)(sp->fts_path);\nLAB_00029ae0:\n  (*(code *)PTR_free_0004363c)(sp);\n  return (FTS *)0x0;\n}\n\n" (function_definition "FTS * fts_open(char **argv,int options,_func_int_FTSENT_ptr_ptr_FTSENT_ptr_ptr *compar)\n\n{\n  undefined *puVar1;\n  undefined *puVar2;\n  undefined3 extraout_var;\n  undefined3 extraout_var_00;\n  FTS *sp;\n  uint uVar3;\n  _Bool _Var13;\n  FTSENT *pFVar4;\n  code *pcVar5;\n  uint uVar6;\n  FTSENT *pFVar7;\n  FTSENT *pFVar8;\n  _ftsent *p_Var9;\n  undefined4 *puVar10;\n  ushort uVar12;\n  int iVar11;\n  char *pcVar14;\n  char *pcVar15;\n  FTS *pFVar16;\n  uint uVar17;\n  FTSENT *pFVar18;\n  char **ppcVar19;\n  code *pcVar20;\n  code *local_3c;\n  FTSENT *local_30;\n  \n  if ((((options & 0xffffe000U) != 0) || ((options & 0x204U) == 0x204)) || ((options & 0x12U) == 0))\n  {\n    puVar10 = (undefined4 *)(*(code *)PTR___errno_location_00043520)();\n    *puVar10 = 0x16;\n    return (FTS *)0x0;\n  }\n  sp = (FTS *)(*(code *)PTR_calloc_0004341c)(0x60,1);\n  if (sp == (FTS *)0x0) {\n    return (FTS *)0x0;\n  }\n  sp->fts_compar = (_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *)compar;\n  if ((options & 2U) == 0) {\n    sp->fts_options = options;\n  }\n  else {\n    sp->fts_options = options & 0xfffffdffU | 4;\n  }\n  pcVar15 = *argv;\n  sp->fts_cwd_fd = -100;\n  if (pcVar15 == (char *)0x0) {\n    pFVar16 = (FTS *)0x1000;\n  }\n  else {\n    uVar17 = 0;\n    ppcVar19 = argv;\n    do {\n      ppcVar19 = ppcVar19 + 1;\n      uVar3 = (*(code *)PTR_strlen_00043564)();\n      if (uVar17 < uVar3) {\n        uVar17 = uVar3;\n      }\n    } while (*ppcVar19 != (char *)0x0);\n    pFVar16 = (FTS *)(uVar17 + 1);\n    if (pFVar16 < (FTS *)0x1000) {\n      pFVar16 = (FTS *)0x1000;\n    }\n  }\n  _Var13 = fts_palloc((FTS *)&sp->fts_path,(size_t)&sp->fts_pathlen,pFVar16);\n  puVar2 = PTR_LAB_0004326c;\n  puVar1 = PTR_s_ore_than_one_of__i___f___n__only_00043128;\n  if (CONCAT31(extraout_var,_Var13) == 0) goto LAB_00029ae0;\n  if (*argv == (char *)0x0) {\n    pFVar4 = (FTSENT *)0x0;\nLAB_00029b78:\n    pFVar8 = (_ftsent *)0x0;\nLAB_000299c0:\n    local_3c = (code *)(puVar2 + 0x7d20);\n    p_Var9 = (_ftsent *)(*local_3c)(sp,puVar1 + 0x44c,0);\n    sp->fts_cur = p_Var9;\n    if (p_Var9 != (_ftsent *)0x0) {\n      p_Var9->fts_link = pFVar8;\n      p_Var9->fts_level = 1;\n      pFVar16 = (FTS *)sp->fts_options;\n      p_Var9->fts_info = 9;\n      _Var13 = setup_dir(pFVar16,(FTS *)&sp->fts_cycle);\n      if (CONCAT31(extraout_var_00,_Var13) != 0) {\n        if (((uint)sp->fts_options & 0x204) == 0) {\n          iVar11 = diropen((FTS *)sp->fts_cwd_fd,(char *)sp->fts_options,\n                           (FTS *)(PTR_s_ore_than_one_of__i___f___n__only_00043128 + 0xc4c));\n          sp->fts_rfd = iVar11;\n          if (iVar11 < 0) {\n            sp->fts_options = sp->fts_options | 4;\n          }\n        }\n        i_ring_init(&sp->fts_fd_ring,-1);\n        return sp;\n      }\n    }\nLAB_00029aac:\n    fts_lfree(pFVar8);\n    (*(code *)PTR_free_0004363c)(pFVar4);\n  }\n  else {\n    pcVar20 = (code *)(PTR_LAB_0004326c + 0x7d20);\n    pFVar4 = fts_alloc(sp,PTR_s_ore_than_one_of__i___f___n__only_00043128 + 0x44c,0);\n    if (pFVar4 != (FTSENT *)0x0) {\n      pcVar15 = *argv;\n      pFVar4->fts_level = -1;\n      pFVar4->fts_n_dirs_remaining = 0xffffffff;\n      if (compar == (_func_int_FTSENT_ptr_ptr_FTSENT_ptr_ptr *)0x0) {\n        uVar17 = 1;\n      }\n      else {\n        uVar17 = (uint)(sp->fts_options << 0x15) >> 0x1f;\n      }\n      if (pcVar15 == (char *)0x0) goto LAB_00029b78;\n      local_30 = (FTSENT *)0x0;\n      uVar3 = 0;\n      pcVar5 = (code *)(PTR_s_ore_than_one_of__i___f___n__only_00043128 + -0x7d80);\n      pFVar18 = (FTSENT *)0x0;\n      do {\n        uVar6 = (*(code *)PTR_strlen_00043564)(pcVar15);\n        if ((((options & 0x1000U) == 0) && (2 < uVar6)) &&\n           (pcVar14 = pcVar15 + uVar6, pcVar14[-1] == '/')) {\n          do {\n            if (pcVar14[-2] != '/') break;\n            uVar6 = uVar6 - 1;\n            pcVar14 = pcVar15 + uVar6;\n          } while (uVar6 != 1);\n        }\n        pFVar7 = (FTSENT *)(*pcVar20)(sp,pcVar15,uVar6);\n        pFVar8 = pFVar18;\n        if (pFVar7 == (FTSENT *)0x0) goto LAB_00029aac;\n        pFVar7->fts_level = 0;\n        pFVar7->fts_parent = pFVar4;\n        pFVar7->fts_accpath = (char *)(pFVar7 + 1);\n        pFVar8 = pFVar7;\n        if (uVar17 == 0) {\n          uVar12 = (*pcVar5)(sp->fts_cwd_fd,&sp->fts_options,pFVar7,0);\n          pFVar7->fts_info = uVar12;\n          if (compar != (_func_int_FTSENT_ptr_ptr_FTSENT_ptr_ptr *)0x0) goto LAB_00029978;\n          pFVar7->fts_link = (_ftsent *)0x0;\n          if (pFVar18 != (FTSENT *)0x0) goto LAB_00029b5c;\n        }\n        else if (pFVar18 == (FTSENT *)0x0) {\n          uVar12 = (*pcVar5)(sp->fts_cwd_fd,&sp->fts_options,pFVar7,0);\n          pFVar7->fts_info = uVar12;\n          if (compar != (_func_int_FTSENT_ptr_ptr_FTSENT_ptr_ptr *)0x0) goto LAB_00029978;\n          pFVar7->fts_link = (_ftsent *)0x0;\n        }\n        else {\n          *(undefined4 *)((int)&pFVar7->fts_statp[0].st_size + 4) = 2;\n          *(undefined4 *)&pFVar7->fts_statp[0].st_size = 0;\n          pFVar7->fts_info = 0xb;\n          if (compar == (_func_int_FTSENT_ptr_ptr_FTSENT_ptr_ptr *)0x0) {\n            pFVar7->fts_link = (_ftsent *)0x0;\nLAB_00029b5c:\n            local_30->fts_link = pFVar7;\n            pFVar8 = pFVar18;\n          }\n          else {\nLAB_00029978:\n            pFVar7->fts_link = pFVar18;\n            pFVar7 = local_30;\n          }\n        }\n        local_30 = pFVar7;\n        argv = argv + 1;\n        pcVar15 = *argv;\n        uVar3 = uVar3 + 1;\n        pFVar18 = pFVar8;\n      } while (pcVar15 != (char *)0x0);\n      if ((compar != (_func_int_FTSENT_ptr_ptr_FTSENT_ptr_ptr *)0x0) && (1 < uVar3)) {\n        pFVar8 = fts_sort(sp,pFVar8,uVar3);\n      }\n      goto LAB_000299c0;\n    }\n  }\n  (*(code *)PTR_free_0004363c)(sp->fts_path);\nLAB_00029ae0:\n  (*(code *)PTR_free_0004363c)(sp);\n  return (FTS *)0x0;\n}" type_identifier (pointer_declarator "* fts_open(char **argv,int options,_func_int_FTSENT_ptr_ptr_FTSENT_ptr_ptr *compar)" * (function_declarator "fts_open(char **argv,int options,_func_int_FTSENT_ptr_ptr_FTSENT_ptr_ptr *compar)" identifier (parameter_list "(char **argv,int options,_func_int_FTSENT_ptr_ptr_FTSENT_ptr_ptr *compar)" ( (parameter_declaration "char **argv" primitive_type (pointer_declarator "**argv" * (pointer_declarator "*argv" * identifier))) , (parameter_declaration "int options" primitive_type identifier) , (parameter_declaration "_func_int_FTSENT_ptr_ptr_FTSENT_ptr_ptr *compar" type_identifier (pointer_declarator "*compar" * identifier)) )))) (compound_statement "{\n  undefined *puVar1;\n  undefined *puVar2;\n  undefined3 extraout_var;\n  undefined3 extraout_var_00;\n  FTS *sp;\n  uint uVar3;\n  _Bool _Var13;\n  FTSENT *pFVar4;\n  code *pcVar5;\n  uint uVar6;\n  FTSENT *pFVar7;\n  FTSENT *pFVar8;\n  _ftsent *p_Var9;\n  undefined4 *puVar10;\n  ushort uVar12;\n  int iVar11;\n  char *pcVar14;\n  char *pcVar15;\n  FTS *pFVar16;\n  uint uVar17;\n  FTSENT *pFVar18;\n  char **ppcVar19;\n  code *pcVar20;\n  code *local_3c;\n  FTSENT *local_30;\n  \n  if ((((options & 0xffffe000U) != 0) || ((options & 0x204U) == 0x204)) || ((options & 0x12U) == 0))\n  {\n    puVar10 = (undefined4 *)(*(code *)PTR___errno_location_00043520)();\n    *puVar10 = 0x16;\n    return (FTS *)0x0;\n  }\n  sp = (FTS *)(*(code *)PTR_calloc_0004341c)(0x60,1);\n  if (sp == (FTS *)0x0) {\n    return (FTS *)0x0;\n  }\n  sp->fts_compar = (_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *)compar;\n  if ((options & 2U) == 0) {\n    sp->fts_options = options;\n  }\n  else {\n    sp->fts_options = options & 0xfffffdffU | 4;\n  }\n  pcVar15 = *argv;\n  sp->fts_cwd_fd = -100;\n  if (pcVar15 == (char *)0x0) {\n    pFVar16 = (FTS *)0x1000;\n  }\n  else {\n    uVar17 = 0;\n    ppcVar19 = argv;\n    do {\n      ppcVar19 = ppcVar19 + 1;\n      uVar3 = (*(code *)PTR_strlen_00043564)();\n      if (uVar17 < uVar3) {\n        uVar17 = uVar3;\n      }\n    } while (*ppcVar19 != (char *)0x0);\n    pFVar16 = (FTS *)(uVar17 + 1);\n    if (pFVar16 < (FTS *)0x1000) {\n      pFVar16 = (FTS *)0x1000;\n    }\n  }\n  _Var13 = fts_palloc((FTS *)&sp->fts_path,(size_t)&sp->fts_pathlen,pFVar16);\n  puVar2 = PTR_LAB_0004326c;\n  puVar1 = PTR_s_ore_than_one_of__i___f___n__only_00043128;\n  if (CONCAT31(extraout_var,_Var13) == 0) goto LAB_00029ae0;\n  if (*argv == (char *)0x0) {\n    pFVar4 = (FTSENT *)0x0;\nLAB_00029b78:\n    pFVar8 = (_ftsent *)0x0;\nLAB_000299c0:\n    local_3c = (code *)(puVar2 + 0x7d20);\n    p_Var9 = (_ftsent *)(*local_3c)(sp,puVar1 + 0x44c,0);\n    sp->fts_cur = p_Var9;\n    if (p_Var9 != (_ftsent *)0x0) {\n      p_Var9->fts_link = pFVar8;\n      p_Var9->fts_level = 1;\n      pFVar16 = (FTS *)sp->fts_options;\n      p_Var9->fts_info = 9;\n      _Var13 = setup_dir(pFVar16,(FTS *)&sp->fts_cycle);\n      if (CONCAT31(extraout_var_00,_Var13) != 0) {\n        if (((uint)sp->fts_options & 0x204) == 0) {\n          iVar11 = diropen((FTS *)sp->fts_cwd_fd,(char *)sp->fts_options,\n                           (FTS *)(PTR_s_ore_than_one_of__i___f___n__only_00043128 + 0xc4c));\n          sp->fts_rfd = iVar11;\n          if (iVar11 < 0) {\n            sp->fts_options = sp->fts_options | 4;\n          }\n        }\n        i_ring_init(&sp->fts_fd_ring,-1);\n        return sp;\n      }\n    }\nLAB_00029aac:\n    fts_lfree(pFVar8);\n    (*(code *)PTR_free_0004363c)(pFVar4);\n  }\n  else {\n    pcVar20 = (code *)(PTR_LAB_0004326c + 0x7d20);\n    pFVar4 = fts_alloc(sp,PTR_s_ore_than_one_of__i___f___n__only_00043128 + 0x44c,0);\n    if (pFVar4 != (FTSENT *)0x0) {\n      pcVar15 = *argv;\n      pFVar4->fts_level = -1;\n      pFVar4->fts_n_dirs_remaining = 0xffffffff;\n      if (compar == (_func_int_FTSENT_ptr_ptr_FTSENT_ptr_ptr *)0x0) {\n        uVar17 = 1;\n      }\n      else {\n        uVar17 = (uint)(sp->fts_options << 0x15) >> 0x1f;\n      }\n      if (pcVar15 == (char *)0x0) goto LAB_00029b78;\n      local_30 = (FTSENT *)0x0;\n      uVar3 = 0;\n      pcVar5 = (code *)(PTR_s_ore_than_one_of__i___f___n__only_00043128 + -0x7d80);\n      pFVar18 = (FTSENT *)0x0;\n      do {\n        uVar6 = (*(code *)PTR_strlen_00043564)(pcVar15);\n        if ((((options & 0x1000U) == 0) && (2 < uVar6)) &&\n           (pcVar14 = pcVar15 + uVar6, pcVar14[-1] == '/')) {\n          do {\n            if (pcVar14[-2] != '/') break;\n            uVar6 = uVar6 - 1;\n            pcVar14 = pcVar15 + uVar6;\n          } while (uVar6 != 1);\n        }\n        pFVar7 = (FTSENT *)(*pcVar20)(sp,pcVar15,uVar6);\n        pFVar8 = pFVar18;\n        if (pFVar7 == (FTSENT *)0x0) goto LAB_00029aac;\n        pFVar7->fts_level = 0;\n        pFVar7->fts_parent = pFVar4;\n        pFVar7->fts_accpath = (char *)(pFVar7 + 1);\n        pFVar8 = pFVar7;\n        if (uVar17 == 0) {\n          uVar12 = (*pcVar5)(sp->fts_cwd_fd,&sp->fts_options,pFVar7,0);\n          pFVar7->fts_info = uVar12;\n          if (compar != (_func_int_FTSENT_ptr_ptr_FTSENT_ptr_ptr *)0x0) goto LAB_00029978;\n          pFVar7->fts_link = (_ftsent *)0x0;\n          if (pFVar18 != (FTSENT *)0x0) goto LAB_00029b5c;\n        }\n        else if (pFVar18 == (FTSENT *)0x0) {\n          uVar12 = (*pcVar5)(sp->fts_cwd_fd,&sp->fts_options,pFVar7,0);\n          pFVar7->fts_info = uVar12;\n          if (compar != (_func_int_FTSENT_ptr_ptr_FTSENT_ptr_ptr *)0x0) goto LAB_00029978;\n          pFVar7->fts_link = (_ftsent *)0x0;\n        }\n        else {\n          *(undefined4 *)((int)&pFVar7->fts_statp[0].st_size + 4) = 2;\n          *(undefined4 *)&pFVar7->fts_statp[0].st_size = 0;\n          pFVar7->fts_info = 0xb;\n          if (compar == (_func_int_FTSENT_ptr_ptr_FTSENT_ptr_ptr *)0x0) {\n            pFVar7->fts_link = (_ftsent *)0x0;\nLAB_00029b5c:\n            local_30->fts_link = pFVar7;\n            pFVar8 = pFVar18;\n          }\n          else {\nLAB_00029978:\n            pFVar7->fts_link = pFVar18;\n            pFVar7 = local_30;\n          }\n        }\n        local_30 = pFVar7;\n        argv = argv + 1;\n        pcVar15 = *argv;\n        uVar3 = uVar3 + 1;\n        pFVar18 = pFVar8;\n      } while (pcVar15 != (char *)0x0);\n      if ((compar != (_func_int_FTSENT_ptr_ptr_FTSENT_ptr_ptr *)0x0) && (1 < uVar3)) {\n        pFVar8 = fts_sort(sp,pFVar8,uVar3);\n      }\n      goto LAB_000299c0;\n    }\n  }\n  (*(code *)PTR_free_0004363c)(sp->fts_path);\nLAB_00029ae0:\n  (*(code *)PTR_free_0004363c)(sp);\n  return (FTS *)0x0;\n}" { (declaration "undefined *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "undefined *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "undefined3 extraout_var;" type_identifier identifier ;) (declaration "undefined3 extraout_var_00;" type_identifier identifier ;) (declaration "FTS *sp;" type_identifier (pointer_declarator "*sp" * identifier) ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "_Bool _Var13;" type_identifier identifier ;) (declaration "FTSENT *pFVar4;" type_identifier (pointer_declarator "*pFVar4" * identifier) ;) (declaration "code *pcVar5;" type_identifier (pointer_declarator "*pcVar5" * identifier) ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "FTSENT *pFVar7;" type_identifier (pointer_declarator "*pFVar7" * identifier) ;) (declaration "FTSENT *pFVar8;" type_identifier (pointer_declarator "*pFVar8" * identifier) ;) (declaration "_ftsent *p_Var9;" type_identifier (pointer_declarator "*p_Var9" * identifier) ;) (declaration "undefined4 *puVar10;" type_identifier (pointer_declarator "*puVar10" * identifier) ;) (declaration "ushort uVar12;" type_identifier identifier ;) (declaration "int iVar11;" primitive_type identifier ;) (declaration "char *pcVar14;" primitive_type (pointer_declarator "*pcVar14" * identifier) ;) (declaration "char *pcVar15;" primitive_type (pointer_declarator "*pcVar15" * identifier) ;) (declaration "FTS *pFVar16;" type_identifier (pointer_declarator "*pFVar16" * identifier) ;) (declaration "uint uVar17;" type_identifier identifier ;) (declaration "FTSENT *pFVar18;" type_identifier (pointer_declarator "*pFVar18" * identifier) ;) (declaration "char **ppcVar19;" primitive_type (pointer_declarator "**ppcVar19" * (pointer_declarator "*ppcVar19" * identifier)) ;) (declaration "code *pcVar20;" type_identifier (pointer_declarator "*pcVar20" * identifier) ;) (declaration "code *local_3c;" type_identifier (pointer_declarator "*local_3c" * identifier) ;) (declaration "FTSENT *local_30;" type_identifier (pointer_declarator "*local_30" * identifier) ;) (if_statement "if ((((options & 0xffffe000U) != 0) || ((options & 0x204U) == 0x204)) || ((options & 0x12U) == 0))\n  {\n    puVar10 = (undefined4 *)(*(code *)PTR___errno_location_00043520)();\n    *puVar10 = 0x16;\n    return (FTS *)0x0;\n  }" if (parenthesized_expression "((((options & 0xffffe000U) != 0) || ((options & 0x204U) == 0x204)) || ((options & 0x12U) == 0))" ( (binary_expression "(((options & 0xffffe000U) != 0) || ((options & 0x204U) == 0x204)) || ((options & 0x12U) == 0)" (parenthesized_expression "(((options & 0xffffe000U) != 0) || ((options & 0x204U) == 0x204))" ( (binary_expression "((options & 0xffffe000U) != 0) || ((options & 0x204U) == 0x204)" (parenthesized_expression "((options & 0xffffe000U) != 0)" ( (binary_expression "(options & 0xffffe000U) != 0" (parenthesized_expression "(options & 0xffffe000U)" ( (binary_expression "options & 0xffffe000U" identifier & number_literal) )) != number_literal) )) || (parenthesized_expression "((options & 0x204U) == 0x204)" ( (binary_expression "(options & 0x204U) == 0x204" (parenthesized_expression "(options & 0x204U)" ( (binary_expression "options & 0x204U" identifier & number_literal) )) == number_literal) ))) )) || (parenthesized_expression "((options & 0x12U) == 0)" ( (binary_expression "(options & 0x12U) == 0" (parenthesized_expression "(options & 0x12U)" ( (binary_expression "options & 0x12U" identifier & number_literal) )) == number_literal) ))) )) (compound_statement "{\n    puVar10 = (undefined4 *)(*(code *)PTR___errno_location_00043520)();\n    *puVar10 = 0x16;\n    return (FTS *)0x0;\n  }" { (expression_statement "puVar10 = (undefined4 *)(*(code *)PTR___errno_location_00043520)();" (assignment_expression "puVar10 = (undefined4 *)(*(code *)PTR___errno_location_00043520)()" identifier = (cast_expression "(undefined4 *)(*(code *)PTR___errno_location_00043520)()" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR___errno_location_00043520)()" (parenthesized_expression "(*(code *)PTR___errno_location_00043520)" ( (pointer_expression "*(code *)PTR___errno_location_00043520" * (cast_expression "(code *)PTR___errno_location_00043520" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))))) ;) (expression_statement "*puVar10 = 0x16;" (assignment_expression "*puVar10 = 0x16" (pointer_expression "*puVar10" * identifier) = number_literal) ;) (return_statement "return (FTS *)0x0;" return (cast_expression "(FTS *)0x0" ( (type_descriptor "FTS *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (expression_statement "sp = (FTS *)(*(code *)PTR_calloc_0004341c)(0x60,1);" (assignment_expression "sp = (FTS *)(*(code *)PTR_calloc_0004341c)(0x60,1)" identifier = (cast_expression "(FTS *)(*(code *)PTR_calloc_0004341c)(0x60,1)" ( (type_descriptor "FTS *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR_calloc_0004341c)(0x60,1)" (parenthesized_expression "(*(code *)PTR_calloc_0004341c)" ( (pointer_expression "*(code *)PTR_calloc_0004341c" * (cast_expression "(code *)PTR_calloc_0004341c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(0x60,1)" ( number_literal , number_literal ))))) ;) (if_statement "if (sp == (FTS *)0x0) {\n    return (FTS *)0x0;\n  }" if (parenthesized_expression "(sp == (FTS *)0x0)" ( (binary_expression "sp == (FTS *)0x0" identifier == (cast_expression "(FTS *)0x0" ( (type_descriptor "FTS *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    return (FTS *)0x0;\n  }" { (return_statement "return (FTS *)0x0;" return (cast_expression "(FTS *)0x0" ( (type_descriptor "FTS *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (expression_statement "sp->fts_compar = (_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *)compar;" (assignment_expression "sp->fts_compar = (_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *)compar" (field_expression "sp->fts_compar" identifier -> field_identifier) = (cast_expression "(_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *)compar" ( (type_descriptor "_func_int__ftsent_ptr_ptr__ftsent_ptr_ptr *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (if_statement "if ((options & 2U) == 0) {\n    sp->fts_options = options;\n  }\n  else {\n    sp->fts_options = options & 0xfffffdffU | 4;\n  }" if (parenthesized_expression "((options & 2U) == 0)" ( (binary_expression "(options & 2U) == 0" (parenthesized_expression "(options & 2U)" ( (binary_expression "options & 2U" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n    sp->fts_options = options;\n  }" { (expression_statement "sp->fts_options = options;" (assignment_expression "sp->fts_options = options" (field_expression "sp->fts_options" identifier -> field_identifier) = identifier) ;) }) (else_clause "else {\n    sp->fts_options = options & 0xfffffdffU | 4;\n  }" else (compound_statement "{\n    sp->fts_options = options & 0xfffffdffU | 4;\n  }" { (expression_statement "sp->fts_options = options & 0xfffffdffU | 4;" (assignment_expression "sp->fts_options = options & 0xfffffdffU | 4" (field_expression "sp->fts_options" identifier -> field_identifier) = (binary_expression "options & 0xfffffdffU | 4" (binary_expression "options & 0xfffffdffU" identifier & number_literal) | number_literal)) ;) }))) (expression_statement "pcVar15 = *argv;" (assignment_expression "pcVar15 = *argv" identifier = (pointer_expression "*argv" * identifier)) ;) (expression_statement "sp->fts_cwd_fd = -100;" (assignment_expression "sp->fts_cwd_fd = -100" (field_expression "sp->fts_cwd_fd" identifier -> field_identifier) = number_literal) ;) (if_statement "if (pcVar15 == (char *)0x0) {\n    pFVar16 = (FTS *)0x1000;\n  }\n  else {\n    uVar17 = 0;\n    ppcVar19 = argv;\n    do {\n      ppcVar19 = ppcVar19 + 1;\n      uVar3 = (*(code *)PTR_strlen_00043564)();\n      if (uVar17 < uVar3) {\n        uVar17 = uVar3;\n      }\n    } while (*ppcVar19 != (char *)0x0);\n    pFVar16 = (FTS *)(uVar17 + 1);\n    if (pFVar16 < (FTS *)0x1000) {\n      pFVar16 = (FTS *)0x1000;\n    }\n  }" if (parenthesized_expression "(pcVar15 == (char *)0x0)" ( (binary_expression "pcVar15 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    pFVar16 = (FTS *)0x1000;\n  }" { (expression_statement "pFVar16 = (FTS *)0x1000;" (assignment_expression "pFVar16 = (FTS *)0x1000" identifier = (cast_expression "(FTS *)0x1000" ( (type_descriptor "FTS *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }) (else_clause "else {\n    uVar17 = 0;\n    ppcVar19 = argv;\n    do {\n      ppcVar19 = ppcVar19 + 1;\n      uVar3 = (*(code *)PTR_strlen_00043564)();\n      if (uVar17 < uVar3) {\n        uVar17 = uVar3;\n      }\n    } while (*ppcVar19 != (char *)0x0);\n    pFVar16 = (FTS *)(uVar17 + 1);\n    if (pFVar16 < (FTS *)0x1000) {\n      pFVar16 = (FTS *)0x1000;\n    }\n  }" else (compound_statement "{\n    uVar17 = 0;\n    ppcVar19 = argv;\n    do {\n      ppcVar19 = ppcVar19 + 1;\n      uVar3 = (*(code *)PTR_strlen_00043564)();\n      if (uVar17 < uVar3) {\n        uVar17 = uVar3;\n      }\n    } while (*ppcVar19 != (char *)0x0);\n    pFVar16 = (FTS *)(uVar17 + 1);\n    if (pFVar16 < (FTS *)0x1000) {\n      pFVar16 = (FTS *)0x1000;\n    }\n  }" { (expression_statement "uVar17 = 0;" (assignment_expression "uVar17 = 0" identifier = number_literal) ;) (expression_statement "ppcVar19 = argv;" (assignment_expression "ppcVar19 = argv" identifier = identifier) ;) (do_statement "do {\n      ppcVar19 = ppcVar19 + 1;\n      uVar3 = (*(code *)PTR_strlen_00043564)();\n      if (uVar17 < uVar3) {\n        uVar17 = uVar3;\n      }\n    } while (*ppcVar19 != (char *)0x0);" do (compound_statement "{\n      ppcVar19 = ppcVar19 + 1;\n      uVar3 = (*(code *)PTR_strlen_00043564)();\n      if (uVar17 < uVar3) {\n        uVar17 = uVar3;\n      }\n    }" { (expression_statement "ppcVar19 = ppcVar19 + 1;" (assignment_expression "ppcVar19 = ppcVar19 + 1" identifier = (binary_expression "ppcVar19 + 1" identifier + number_literal)) ;) (expression_statement "uVar3 = (*(code *)PTR_strlen_00043564)();" (assignment_expression "uVar3 = (*(code *)PTR_strlen_00043564)()" identifier = (call_expression "(*(code *)PTR_strlen_00043564)()" (parenthesized_expression "(*(code *)PTR_strlen_00043564)" ( (pointer_expression "*(code *)PTR_strlen_00043564" * (cast_expression "(code *)PTR_strlen_00043564" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( )))) ;) (if_statement "if (uVar17 < uVar3) {\n        uVar17 = uVar3;\n      }" if (parenthesized_expression "(uVar17 < uVar3)" ( (binary_expression "uVar17 < uVar3" identifier < identifier) )) (compound_statement "{\n        uVar17 = uVar3;\n      }" { (expression_statement "uVar17 = uVar3;" (assignment_expression "uVar17 = uVar3" identifier = identifier) ;) })) }) while (parenthesized_expression "(*ppcVar19 != (char *)0x0)" ( (binary_expression "*ppcVar19 != (char *)0x0" (pointer_expression "*ppcVar19" * identifier) != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) (expression_statement "pFVar16 = (FTS *)(uVar17 + 1);" (assignment_expression "pFVar16 = (FTS *)(uVar17 + 1)" identifier = (cast_expression "(FTS *)(uVar17 + 1)" ( (type_descriptor "FTS *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar17 + 1)" ( (binary_expression "uVar17 + 1" identifier + number_literal) )))) ;) (if_statement "if (pFVar16 < (FTS *)0x1000) {\n      pFVar16 = (FTS *)0x1000;\n    }" if (parenthesized_expression "(pFVar16 < (FTS *)0x1000)" ( (binary_expression "pFVar16 < (FTS *)0x1000" identifier < (cast_expression "(FTS *)0x1000" ( (type_descriptor "FTS *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      pFVar16 = (FTS *)0x1000;\n    }" { (expression_statement "pFVar16 = (FTS *)0x1000;" (assignment_expression "pFVar16 = (FTS *)0x1000" identifier = (cast_expression "(FTS *)0x1000" ( (type_descriptor "FTS *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) })) }))) (expression_statement "_Var13 = fts_palloc((FTS *)&sp->fts_path,(size_t)&sp->fts_pathlen,pFVar16);" (assignment_expression "_Var13 = fts_palloc((FTS *)&sp->fts_path,(size_t)&sp->fts_pathlen,pFVar16)" identifier = (call_expression "fts_palloc((FTS *)&sp->fts_path,(size_t)&sp->fts_pathlen,pFVar16)" identifier (argument_list "((FTS *)&sp->fts_path,(size_t)&sp->fts_pathlen,pFVar16)" ( (cast_expression "(FTS *)&sp->fts_path" ( (type_descriptor "FTS *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&sp->fts_path" & (field_expression "sp->fts_path" identifier -> field_identifier))) , (cast_expression "(size_t)&sp->fts_pathlen" ( (type_descriptor "size_t" primitive_type) ) (pointer_expression "&sp->fts_pathlen" & (field_expression "sp->fts_pathlen" identifier -> field_identifier))) , identifier )))) ;) (expression_statement "puVar2 = PTR_LAB_0004326c;" (assignment_expression "puVar2 = PTR_LAB_0004326c" identifier = identifier) ;) (expression_statement "puVar1 = PTR_s_ore_than_one_of__i___f___n__only_00043128;" (assignment_expression "puVar1 = PTR_s_ore_than_one_of__i___f___n__only_00043128" identifier = identifier) ;) (if_statement "if (CONCAT31(extraout_var,_Var13) == 0) goto LAB_00029ae0;" if (parenthesized_expression "(CONCAT31(extraout_var,_Var13) == 0)" ( (binary_expression "CONCAT31(extraout_var,_Var13) == 0" (call_expression "CONCAT31(extraout_var,_Var13)" identifier (argument_list "(extraout_var,_Var13)" ( identifier , identifier ))) == number_literal) )) (goto_statement "goto LAB_00029ae0;" goto statement_identifier ;)) (if_statement "if (*argv == (char *)0x0) {\n    pFVar4 = (FTSENT *)0x0;\nLAB_00029b78:\n    pFVar8 = (_ftsent *)0x0;\nLAB_000299c0:\n    local_3c = (code *)(puVar2 + 0x7d20);\n    p_Var9 = (_ftsent *)(*local_3c)(sp,puVar1 + 0x44c,0);\n    sp->fts_cur = p_Var9;\n    if (p_Var9 != (_ftsent *)0x0) {\n      p_Var9->fts_link = pFVar8;\n      p_Var9->fts_level = 1;\n      pFVar16 = (FTS *)sp->fts_options;\n      p_Var9->fts_info = 9;\n      _Var13 = setup_dir(pFVar16,(FTS *)&sp->fts_cycle);\n      if (CONCAT31(extraout_var_00,_Var13) != 0) {\n        if (((uint)sp->fts_options & 0x204) == 0) {\n          iVar11 = diropen((FTS *)sp->fts_cwd_fd,(char *)sp->fts_options,\n                           (FTS *)(PTR_s_ore_than_one_of__i___f___n__only_00043128 + 0xc4c));\n          sp->fts_rfd = iVar11;\n          if (iVar11 < 0) {\n            sp->fts_options = sp->fts_options | 4;\n          }\n        }\n        i_ring_init(&sp->fts_fd_ring,-1);\n        return sp;\n      }\n    }\nLAB_00029aac:\n    fts_lfree(pFVar8);\n    (*(code *)PTR_free_0004363c)(pFVar4);\n  }\n  else {\n    pcVar20 = (code *)(PTR_LAB_0004326c + 0x7d20);\n    pFVar4 = fts_alloc(sp,PTR_s_ore_than_one_of__i___f___n__only_00043128 + 0x44c,0);\n    if (pFVar4 != (FTSENT *)0x0) {\n      pcVar15 = *argv;\n      pFVar4->fts_level = -1;\n      pFVar4->fts_n_dirs_remaining = 0xffffffff;\n      if (compar == (_func_int_FTSENT_ptr_ptr_FTSENT_ptr_ptr *)0x0) {\n        uVar17 = 1;\n      }\n      else {\n        uVar17 = (uint)(sp->fts_options << 0x15) >> 0x1f;\n      }\n      if (pcVar15 == (char *)0x0) goto LAB_00029b78;\n      local_30 = (FTSENT *)0x0;\n      uVar3 = 0;\n      pcVar5 = (code *)(PTR_s_ore_than_one_of__i___f___n__only_00043128 + -0x7d80);\n      pFVar18 = (FTSENT *)0x0;\n      do {\n        uVar6 = (*(code *)PTR_strlen_00043564)(pcVar15);\n        if ((((options & 0x1000U) == 0) && (2 < uVar6)) &&\n           (pcVar14 = pcVar15 + uVar6, pcVar14[-1] == '/')) {\n          do {\n            if (pcVar14[-2] != '/') break;\n            uVar6 = uVar6 - 1;\n            pcVar14 = pcVar15 + uVar6;\n          } while (uVar6 != 1);\n        }\n        pFVar7 = (FTSENT *)(*pcVar20)(sp,pcVar15,uVar6);\n        pFVar8 = pFVar18;\n        if (pFVar7 == (FTSENT *)0x0) goto LAB_00029aac;\n        pFVar7->fts_level = 0;\n        pFVar7->fts_parent = pFVar4;\n        pFVar7->fts_accpath = (char *)(pFVar7 + 1);\n        pFVar8 = pFVar7;\n        if (uVar17 == 0) {\n          uVar12 = (*pcVar5)(sp->fts_cwd_fd,&sp->fts_options,pFVar7,0);\n          pFVar7->fts_info = uVar12;\n          if (compar != (_func_int_FTSENT_ptr_ptr_FTSENT_ptr_ptr *)0x0) goto LAB_00029978;\n          pFVar7->fts_link = (_ftsent *)0x0;\n          if (pFVar18 != (FTSENT *)0x0) goto LAB_00029b5c;\n        }\n        else if (pFVar18 == (FTSENT *)0x0) {\n          uVar12 = (*pcVar5)(sp->fts_cwd_fd,&sp->fts_options,pFVar7,0);\n          pFVar7->fts_info = uVar12;\n          if (compar != (_func_int_FTSENT_ptr_ptr_FTSENT_ptr_ptr *)0x0) goto LAB_00029978;\n          pFVar7->fts_link = (_ftsent *)0x0;\n        }\n        else {\n          *(undefined4 *)((int)&pFVar7->fts_statp[0].st_size + 4) = 2;\n          *(undefined4 *)&pFVar7->fts_statp[0].st_size = 0;\n          pFVar7->fts_info = 0xb;\n          if (compar == (_func_int_FTSENT_ptr_ptr_FTSENT_ptr_ptr *)0x0) {\n            pFVar7->fts_link = (_ftsent *)0x0;\nLAB_00029b5c:\n            local_30->fts_link = pFVar7;\n            pFVar8 = pFVar18;\n          }\n          else {\nLAB_00029978:\n            pFVar7->fts_link = pFVar18;\n            pFVar7 = local_30;\n          }\n        }\n        local_30 = pFVar7;\n        argv = argv + 1;\n        pcVar15 = *argv;\n        uVar3 = uVar3 + 1;\n        pFVar18 = pFVar8;\n      } while (pcVar15 != (char *)0x0);\n      if ((compar != (_func_int_FTSENT_ptr_ptr_FTSENT_ptr_ptr *)0x0) && (1 < uVar3)) {\n        pFVar8 = fts_sort(sp,pFVar8,uVar3);\n      }\n      goto LAB_000299c0;\n    }\n  }" if (parenthesized_expression "(*argv == (char *)0x0)" ( (binary_expression "*argv == (char *)0x0" (pointer_expression "*argv" * identifier) == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    pFVar4 = (FTSENT *)0x0;\nLAB_00029b78:\n    pFVar8 = (_ftsent *)0x0;\nLAB_000299c0:\n    local_3c = (code *)(puVar2 + 0x7d20);\n    p_Var9 = (_ftsent *)(*local_3c)(sp,puVar1 + 0x44c,0);\n    sp->fts_cur = p_Var9;\n    if (p_Var9 != (_ftsent *)0x0) {\n      p_Var9->fts_link = pFVar8;\n      p_Var9->fts_level = 1;\n      pFVar16 = (FTS *)sp->fts_options;\n      p_Var9->fts_info = 9;\n      _Var13 = setup_dir(pFVar16,(FTS *)&sp->fts_cycle);\n      if (CONCAT31(extraout_var_00,_Var13) != 0) {\n        if (((uint)sp->fts_options & 0x204) == 0) {\n          iVar11 = diropen((FTS *)sp->fts_cwd_fd,(char *)sp->fts_options,\n                           (FTS *)(PTR_s_ore_than_one_of__i___f___n__only_00043128 + 0xc4c));\n          sp->fts_rfd = iVar11;\n          if (iVar11 < 0) {\n            sp->fts_options = sp->fts_options | 4;\n          }\n        }\n        i_ring_init(&sp->fts_fd_ring,-1);\n        return sp;\n      }\n    }\nLAB_00029aac:\n    fts_lfree(pFVar8);\n    (*(code *)PTR_free_0004363c)(pFVar4);\n  }" { (expression_statement "pFVar4 = (FTSENT *)0x0;" (assignment_expression "pFVar4 = (FTSENT *)0x0" identifier = (cast_expression "(FTSENT *)0x0" ( (type_descriptor "FTSENT *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (labeled_statement "LAB_00029b78:\n    pFVar8 = (_ftsent *)0x0;" statement_identifier : (expression_statement "pFVar8 = (_ftsent *)0x0;" (assignment_expression "pFVar8 = (_ftsent *)0x0" identifier = (cast_expression "(_ftsent *)0x0" ( (type_descriptor "_ftsent *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;)) (labeled_statement "LAB_000299c0:\n    local_3c = (code *)(puVar2 + 0x7d20);" statement_identifier : (expression_statement "local_3c = (code *)(puVar2 + 0x7d20);" (assignment_expression "local_3c = (code *)(puVar2 + 0x7d20)" identifier = (cast_expression "(code *)(puVar2 + 0x7d20)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 0x7d20)" ( (binary_expression "puVar2 + 0x7d20" identifier + number_literal) )))) ;)) (expression_statement "p_Var9 = (_ftsent *)(*local_3c)(sp,puVar1 + 0x44c,0);" (assignment_expression "p_Var9 = (_ftsent *)(*local_3c)(sp,puVar1 + 0x44c,0)" identifier = (cast_expression "(_ftsent *)(*local_3c)(sp,puVar1 + 0x44c,0)" ( (type_descriptor "_ftsent *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*local_3c)(sp,puVar1 + 0x44c,0)" (parenthesized_expression "(*local_3c)" ( (pointer_expression "*local_3c" * identifier) )) (argument_list "(sp,puVar1 + 0x44c,0)" ( identifier , (binary_expression "puVar1 + 0x44c" identifier + number_literal) , number_literal ))))) ;) (expression_statement "sp->fts_cur = p_Var9;" (assignment_expression "sp->fts_cur = p_Var9" (field_expression "sp->fts_cur" identifier -> field_identifier) = identifier) ;) (if_statement "if (p_Var9 != (_ftsent *)0x0) {\n      p_Var9->fts_link = pFVar8;\n      p_Var9->fts_level = 1;\n      pFVar16 = (FTS *)sp->fts_options;\n      p_Var9->fts_info = 9;\n      _Var13 = setup_dir(pFVar16,(FTS *)&sp->fts_cycle);\n      if (CONCAT31(extraout_var_00,_Var13) != 0) {\n        if (((uint)sp->fts_options & 0x204) == 0) {\n          iVar11 = diropen((FTS *)sp->fts_cwd_fd,(char *)sp->fts_options,\n                           (FTS *)(PTR_s_ore_than_one_of__i___f___n__only_00043128 + 0xc4c));\n          sp->fts_rfd = iVar11;\n          if (iVar11 < 0) {\n            sp->fts_options = sp->fts_options | 4;\n          }\n        }\n        i_ring_init(&sp->fts_fd_ring,-1);\n        return sp;\n      }\n    }" if (parenthesized_expression "(p_Var9 != (_ftsent *)0x0)" ( (binary_expression "p_Var9 != (_ftsent *)0x0" identifier != (cast_expression "(_ftsent *)0x0" ( (type_descriptor "_ftsent *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      p_Var9->fts_link = pFVar8;\n      p_Var9->fts_level = 1;\n      pFVar16 = (FTS *)sp->fts_options;\n      p_Var9->fts_info = 9;\n      _Var13 = setup_dir(pFVar16,(FTS *)&sp->fts_cycle);\n      if (CONCAT31(extraout_var_00,_Var13) != 0) {\n        if (((uint)sp->fts_options & 0x204) == 0) {\n          iVar11 = diropen((FTS *)sp->fts_cwd_fd,(char *)sp->fts_options,\n                           (FTS *)(PTR_s_ore_than_one_of__i___f___n__only_00043128 + 0xc4c));\n          sp->fts_rfd = iVar11;\n          if (iVar11 < 0) {\n            sp->fts_options = sp->fts_options | 4;\n          }\n        }\n        i_ring_init(&sp->fts_fd_ring,-1);\n        return sp;\n      }\n    }" { (expression_statement "p_Var9->fts_link = pFVar8;" (assignment_expression "p_Var9->fts_link = pFVar8" (field_expression "p_Var9->fts_link" identifier -> field_identifier) = identifier) ;) (expression_statement "p_Var9->fts_level = 1;" (assignment_expression "p_Var9->fts_level = 1" (field_expression "p_Var9->fts_level" identifier -> field_identifier) = number_literal) ;) (expression_statement "pFVar16 = (FTS *)sp->fts_options;" (assignment_expression "pFVar16 = (FTS *)sp->fts_options" identifier = (cast_expression "(FTS *)sp->fts_options" ( (type_descriptor "FTS *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "sp->fts_options" identifier -> field_identifier))) ;) (expression_statement "p_Var9->fts_info = 9;" (assignment_expression "p_Var9->fts_info = 9" (field_expression "p_Var9->fts_info" identifier -> field_identifier) = number_literal) ;) (expression_statement "_Var13 = setup_dir(pFVar16,(FTS *)&sp->fts_cycle);" (assignment_expression "_Var13 = setup_dir(pFVar16,(FTS *)&sp->fts_cycle)" identifier = (call_expression "setup_dir(pFVar16,(FTS *)&sp->fts_cycle)" identifier (argument_list "(pFVar16,(FTS *)&sp->fts_cycle)" ( identifier , (cast_expression "(FTS *)&sp->fts_cycle" ( (type_descriptor "FTS *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&sp->fts_cycle" & (field_expression "sp->fts_cycle" identifier -> field_identifier))) )))) ;) (if_statement "if (CONCAT31(extraout_var_00,_Var13) != 0) {\n        if (((uint)sp->fts_options & 0x204) == 0) {\n          iVar11 = diropen((FTS *)sp->fts_cwd_fd,(char *)sp->fts_options,\n                           (FTS *)(PTR_s_ore_than_one_of__i___f___n__only_00043128 + 0xc4c));\n          sp->fts_rfd = iVar11;\n          if (iVar11 < 0) {\n            sp->fts_options = sp->fts_options | 4;\n          }\n        }\n        i_ring_init(&sp->fts_fd_ring,-1);\n        return sp;\n      }" if (parenthesized_expression "(CONCAT31(extraout_var_00,_Var13) != 0)" ( (binary_expression "CONCAT31(extraout_var_00,_Var13) != 0" (call_expression "CONCAT31(extraout_var_00,_Var13)" identifier (argument_list "(extraout_var_00,_Var13)" ( identifier , identifier ))) != number_literal) )) (compound_statement "{\n        if (((uint)sp->fts_options & 0x204) == 0) {\n          iVar11 = diropen((FTS *)sp->fts_cwd_fd,(char *)sp->fts_options,\n                           (FTS *)(PTR_s_ore_than_one_of__i___f___n__only_00043128 + 0xc4c));\n          sp->fts_rfd = iVar11;\n          if (iVar11 < 0) {\n            sp->fts_options = sp->fts_options | 4;\n          }\n        }\n        i_ring_init(&sp->fts_fd_ring,-1);\n        return sp;\n      }" { (if_statement "if (((uint)sp->fts_options & 0x204) == 0) {\n          iVar11 = diropen((FTS *)sp->fts_cwd_fd,(char *)sp->fts_options,\n                           (FTS *)(PTR_s_ore_than_one_of__i___f___n__only_00043128 + 0xc4c));\n          sp->fts_rfd = iVar11;\n          if (iVar11 < 0) {\n            sp->fts_options = sp->fts_options | 4;\n          }\n        }" if (parenthesized_expression "(((uint)sp->fts_options & 0x204) == 0)" ( (binary_expression "((uint)sp->fts_options & 0x204) == 0" (parenthesized_expression "((uint)sp->fts_options & 0x204)" ( (binary_expression "(uint)sp->fts_options & 0x204" (cast_expression "(uint)sp->fts_options" ( (type_descriptor "uint" type_identifier) ) (field_expression "sp->fts_options" identifier -> field_identifier)) & number_literal) )) == number_literal) )) (compound_statement "{\n          iVar11 = diropen((FTS *)sp->fts_cwd_fd,(char *)sp->fts_options,\n                           (FTS *)(PTR_s_ore_than_one_of__i___f___n__only_00043128 + 0xc4c));\n          sp->fts_rfd = iVar11;\n          if (iVar11 < 0) {\n            sp->fts_options = sp->fts_options | 4;\n          }\n        }" { (expression_statement "iVar11 = diropen((FTS *)sp->fts_cwd_fd,(char *)sp->fts_options,\n                           (FTS *)(PTR_s_ore_than_one_of__i___f___n__only_00043128 + 0xc4c));" (assignment_expression "iVar11 = diropen((FTS *)sp->fts_cwd_fd,(char *)sp->fts_options,\n                           (FTS *)(PTR_s_ore_than_one_of__i___f___n__only_00043128 + 0xc4c))" identifier = (call_expression "diropen((FTS *)sp->fts_cwd_fd,(char *)sp->fts_options,\n                           (FTS *)(PTR_s_ore_than_one_of__i___f___n__only_00043128 + 0xc4c))" identifier (argument_list "((FTS *)sp->fts_cwd_fd,(char *)sp->fts_options,\n                           (FTS *)(PTR_s_ore_than_one_of__i___f___n__only_00043128 + 0xc4c))" ( (cast_expression "(FTS *)sp->fts_cwd_fd" ( (type_descriptor "FTS *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "sp->fts_cwd_fd" identifier -> field_identifier)) , (cast_expression "(char *)sp->fts_options" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (field_expression "sp->fts_options" identifier -> field_identifier)) , (cast_expression "(FTS *)(PTR_s_ore_than_one_of__i___f___n__only_00043128 + 0xc4c)" ( (type_descriptor "FTS *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_s_ore_than_one_of__i___f___n__only_00043128 + 0xc4c)" ( (binary_expression "PTR_s_ore_than_one_of__i___f___n__only_00043128 + 0xc4c" identifier + number_literal) ))) )))) ;) (expression_statement "sp->fts_rfd = iVar11;" (assignment_expression "sp->fts_rfd = iVar11" (field_expression "sp->fts_rfd" identifier -> field_identifier) = identifier) ;) (if_statement "if (iVar11 < 0) {\n            sp->fts_options = sp->fts_options | 4;\n          }" if (parenthesized_expression "(iVar11 < 0)" ( (binary_expression "iVar11 < 0" identifier < number_literal) )) (compound_statement "{\n            sp->fts_options = sp->fts_options | 4;\n          }" { (expression_statement "sp->fts_options = sp->fts_options | 4;" (assignment_expression "sp->fts_options = sp->fts_options | 4" (field_expression "sp->fts_options" identifier -> field_identifier) = (binary_expression "sp->fts_options | 4" (field_expression "sp->fts_options" identifier -> field_identifier) | number_literal)) ;) })) })) (expression_statement "i_ring_init(&sp->fts_fd_ring,-1);" (call_expression "i_ring_init(&sp->fts_fd_ring,-1)" identifier (argument_list "(&sp->fts_fd_ring,-1)" ( (pointer_expression "&sp->fts_fd_ring" & (field_expression "sp->fts_fd_ring" identifier -> field_identifier)) , number_literal ))) ;) (return_statement "return sp;" return identifier ;) })) })) (labeled_statement "LAB_00029aac:\n    fts_lfree(pFVar8);" statement_identifier : (expression_statement "fts_lfree(pFVar8);" (call_expression "fts_lfree(pFVar8)" identifier (argument_list "(pFVar8)" ( identifier ))) ;)) (expression_statement "(*(code *)PTR_free_0004363c)(pFVar4);" (call_expression "(*(code *)PTR_free_0004363c)(pFVar4)" (parenthesized_expression "(*(code *)PTR_free_0004363c)" ( (pointer_expression "*(code *)PTR_free_0004363c" * (cast_expression "(code *)PTR_free_0004363c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(pFVar4)" ( identifier ))) ;) }) (else_clause "else {\n    pcVar20 = (code *)(PTR_LAB_0004326c + 0x7d20);\n    pFVar4 = fts_alloc(sp,PTR_s_ore_than_one_of__i___f___n__only_00043128 + 0x44c,0);\n    if (pFVar4 != (FTSENT *)0x0) {\n      pcVar15 = *argv;\n      pFVar4->fts_level = -1;\n      pFVar4->fts_n_dirs_remaining = 0xffffffff;\n      if (compar == (_func_int_FTSENT_ptr_ptr_FTSENT_ptr_ptr *)0x0) {\n        uVar17 = 1;\n      }\n      else {\n        uVar17 = (uint)(sp->fts_options << 0x15) >> 0x1f;\n      }\n      if (pcVar15 == (char *)0x0) goto LAB_00029b78;\n      local_30 = (FTSENT *)0x0;\n      uVar3 = 0;\n      pcVar5 = (code *)(PTR_s_ore_than_one_of__i___f___n__only_00043128 + -0x7d80);\n      pFVar18 = (FTSENT *)0x0;\n      do {\n        uVar6 = (*(code *)PTR_strlen_00043564)(pcVar15);\n        if ((((options & 0x1000U) == 0) && (2 < uVar6)) &&\n           (pcVar14 = pcVar15 + uVar6, pcVar14[-1] == '/')) {\n          do {\n            if (pcVar14[-2] != '/') break;\n            uVar6 = uVar6 - 1;\n            pcVar14 = pcVar15 + uVar6;\n          } while (uVar6 != 1);\n        }\n        pFVar7 = (FTSENT *)(*pcVar20)(sp,pcVar15,uVar6);\n        pFVar8 = pFVar18;\n        if (pFVar7 == (FTSENT *)0x0) goto LAB_00029aac;\n        pFVar7->fts_level = 0;\n        pFVar7->fts_parent = pFVar4;\n        pFVar7->fts_accpath = (char *)(pFVar7 + 1);\n        pFVar8 = pFVar7;\n        if (uVar17 == 0) {\n          uVar12 = (*pcVar5)(sp->fts_cwd_fd,&sp->fts_options,pFVar7,0);\n          pFVar7->fts_info = uVar12;\n          if (compar != (_func_int_FTSENT_ptr_ptr_FTSENT_ptr_ptr *)0x0) goto LAB_00029978;\n          pFVar7->fts_link = (_ftsent *)0x0;\n          if (pFVar18 != (FTSENT *)0x0) goto LAB_00029b5c;\n        }\n        else if (pFVar18 == (FTSENT *)0x0) {\n          uVar12 = (*pcVar5)(sp->fts_cwd_fd,&sp->fts_options,pFVar7,0);\n          pFVar7->fts_info = uVar12;\n          if (compar != (_func_int_FTSENT_ptr_ptr_FTSENT_ptr_ptr *)0x0) goto LAB_00029978;\n          pFVar7->fts_link = (_ftsent *)0x0;\n        }\n        else {\n          *(undefined4 *)((int)&pFVar7->fts_statp[0].st_size + 4) = 2;\n          *(undefined4 *)&pFVar7->fts_statp[0].st_size = 0;\n          pFVar7->fts_info = 0xb;\n          if (compar == (_func_int_FTSENT_ptr_ptr_FTSENT_ptr_ptr *)0x0) {\n            pFVar7->fts_link = (_ftsent *)0x0;\nLAB_00029b5c:\n            local_30->fts_link = pFVar7;\n            pFVar8 = pFVar18;\n          }\n          else {\nLAB_00029978:\n            pFVar7->fts_link = pFVar18;\n            pFVar7 = local_30;\n          }\n        }\n        local_30 = pFVar7;\n        argv = argv + 1;\n        pcVar15 = *argv;\n        uVar3 = uVar3 + 1;\n        pFVar18 = pFVar8;\n      } while (pcVar15 != (char *)0x0);\n      if ((compar != (_func_int_FTSENT_ptr_ptr_FTSENT_ptr_ptr *)0x0) && (1 < uVar3)) {\n        pFVar8 = fts_sort(sp,pFVar8,uVar3);\n      }\n      goto LAB_000299c0;\n    }\n  }" else (compound_statement "{\n    pcVar20 = (code *)(PTR_LAB_0004326c + 0x7d20);\n    pFVar4 = fts_alloc(sp,PTR_s_ore_than_one_of__i___f___n__only_00043128 + 0x44c,0);\n    if (pFVar4 != (FTSENT *)0x0) {\n      pcVar15 = *argv;\n      pFVar4->fts_level = -1;\n      pFVar4->fts_n_dirs_remaining = 0xffffffff;\n      if (compar == (_func_int_FTSENT_ptr_ptr_FTSENT_ptr_ptr *)0x0) {\n        uVar17 = 1;\n      }\n      else {\n        uVar17 = (uint)(sp->fts_options << 0x15) >> 0x1f;\n      }\n      if (pcVar15 == (char *)0x0) goto LAB_00029b78;\n      local_30 = (FTSENT *)0x0;\n      uVar3 = 0;\n      pcVar5 = (code *)(PTR_s_ore_than_one_of__i___f___n__only_00043128 + -0x7d80);\n      pFVar18 = (FTSENT *)0x0;\n      do {\n        uVar6 = (*(code *)PTR_strlen_00043564)(pcVar15);\n        if ((((options & 0x1000U) == 0) && (2 < uVar6)) &&\n           (pcVar14 = pcVar15 + uVar6, pcVar14[-1] == '/')) {\n          do {\n            if (pcVar14[-2] != '/') break;\n            uVar6 = uVar6 - 1;\n            pcVar14 = pcVar15 + uVar6;\n          } while (uVar6 != 1);\n        }\n        pFVar7 = (FTSENT *)(*pcVar20)(sp,pcVar15,uVar6);\n        pFVar8 = pFVar18;\n        if (pFVar7 == (FTSENT *)0x0) goto LAB_00029aac;\n        pFVar7->fts_level = 0;\n        pFVar7->fts_parent = pFVar4;\n        pFVar7->fts_accpath = (char *)(pFVar7 + 1);\n        pFVar8 = pFVar7;\n        if (uVar17 == 0) {\n          uVar12 = (*pcVar5)(sp->fts_cwd_fd,&sp->fts_options,pFVar7,0);\n          pFVar7->fts_info = uVar12;\n          if (compar != (_func_int_FTSENT_ptr_ptr_FTSENT_ptr_ptr *)0x0) goto LAB_00029978;\n          pFVar7->fts_link = (_ftsent *)0x0;\n          if (pFVar18 != (FTSENT *)0x0) goto LAB_00029b5c;\n        }\n        else if (pFVar18 == (FTSENT *)0x0) {\n          uVar12 = (*pcVar5)(sp->fts_cwd_fd,&sp->fts_options,pFVar7,0);\n          pFVar7->fts_info = uVar12;\n          if (compar != (_func_int_FTSENT_ptr_ptr_FTSENT_ptr_ptr *)0x0) goto LAB_00029978;\n          pFVar7->fts_link = (_ftsent *)0x0;\n        }\n        else {\n          *(undefined4 *)((int)&pFVar7->fts_statp[0].st_size + 4) = 2;\n          *(undefined4 *)&pFVar7->fts_statp[0].st_size = 0;\n          pFVar7->fts_info = 0xb;\n          if (compar == (_func_int_FTSENT_ptr_ptr_FTSENT_ptr_ptr *)0x0) {\n            pFVar7->fts_link = (_ftsent *)0x0;\nLAB_00029b5c:\n            local_30->fts_link = pFVar7;\n            pFVar8 = pFVar18;\n          }\n          else {\nLAB_00029978:\n            pFVar7->fts_link = pFVar18;\n            pFVar7 = local_30;\n          }\n        }\n        local_30 = pFVar7;\n        argv = argv + 1;\n        pcVar15 = *argv;\n        uVar3 = uVar3 + 1;\n        pFVar18 = pFVar8;\n      } while (pcVar15 != (char *)0x0);\n      if ((compar != (_func_int_FTSENT_ptr_ptr_FTSENT_ptr_ptr *)0x0) && (1 < uVar3)) {\n        pFVar8 = fts_sort(sp,pFVar8,uVar3);\n      }\n      goto LAB_000299c0;\n    }\n  }" { (expression_statement "pcVar20 = (code *)(PTR_LAB_0004326c + 0x7d20);" (assignment_expression "pcVar20 = (code *)(PTR_LAB_0004326c + 0x7d20)" identifier = (cast_expression "(code *)(PTR_LAB_0004326c + 0x7d20)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_0004326c + 0x7d20)" ( (binary_expression "PTR_LAB_0004326c + 0x7d20" identifier + number_literal) )))) ;) (expression_statement "pFVar4 = fts_alloc(sp,PTR_s_ore_than_one_of__i___f___n__only_00043128 + 0x44c,0);" (assignment_expression "pFVar4 = fts_alloc(sp,PTR_s_ore_than_one_of__i___f___n__only_00043128 + 0x44c,0)" identifier = (call_expression "fts_alloc(sp,PTR_s_ore_than_one_of__i___f___n__only_00043128 + 0x44c,0)" identifier (argument_list "(sp,PTR_s_ore_than_one_of__i___f___n__only_00043128 + 0x44c,0)" ( identifier , (binary_expression "PTR_s_ore_than_one_of__i___f___n__only_00043128 + 0x44c" identifier + number_literal) , number_literal )))) ;) (if_statement "if (pFVar4 != (FTSENT *)0x0) {\n      pcVar15 = *argv;\n      pFVar4->fts_level = -1;\n      pFVar4->fts_n_dirs_remaining = 0xffffffff;\n      if (compar == (_func_int_FTSENT_ptr_ptr_FTSENT_ptr_ptr *)0x0) {\n        uVar17 = 1;\n      }\n      else {\n        uVar17 = (uint)(sp->fts_options << 0x15) >> 0x1f;\n      }\n      if (pcVar15 == (char *)0x0) goto LAB_00029b78;\n      local_30 = (FTSENT *)0x0;\n      uVar3 = 0;\n      pcVar5 = (code *)(PTR_s_ore_than_one_of__i___f___n__only_00043128 + -0x7d80);\n      pFVar18 = (FTSENT *)0x0;\n      do {\n        uVar6 = (*(code *)PTR_strlen_00043564)(pcVar15);\n        if ((((options & 0x1000U) == 0) && (2 < uVar6)) &&\n           (pcVar14 = pcVar15 + uVar6, pcVar14[-1] == '/')) {\n          do {\n            if (pcVar14[-2] != '/') break;\n            uVar6 = uVar6 - 1;\n            pcVar14 = pcVar15 + uVar6;\n          } while (uVar6 != 1);\n        }\n        pFVar7 = (FTSENT *)(*pcVar20)(sp,pcVar15,uVar6);\n        pFVar8 = pFVar18;\n        if (pFVar7 == (FTSENT *)0x0) goto LAB_00029aac;\n        pFVar7->fts_level = 0;\n        pFVar7->fts_parent = pFVar4;\n        pFVar7->fts_accpath = (char *)(pFVar7 + 1);\n        pFVar8 = pFVar7;\n        if (uVar17 == 0) {\n          uVar12 = (*pcVar5)(sp->fts_cwd_fd,&sp->fts_options,pFVar7,0);\n          pFVar7->fts_info = uVar12;\n          if (compar != (_func_int_FTSENT_ptr_ptr_FTSENT_ptr_ptr *)0x0) goto LAB_00029978;\n          pFVar7->fts_link = (_ftsent *)0x0;\n          if (pFVar18 != (FTSENT *)0x0) goto LAB_00029b5c;\n        }\n        else if (pFVar18 == (FTSENT *)0x0) {\n          uVar12 = (*pcVar5)(sp->fts_cwd_fd,&sp->fts_options,pFVar7,0);\n          pFVar7->fts_info = uVar12;\n          if (compar != (_func_int_FTSENT_ptr_ptr_FTSENT_ptr_ptr *)0x0) goto LAB_00029978;\n          pFVar7->fts_link = (_ftsent *)0x0;\n        }\n        else {\n          *(undefined4 *)((int)&pFVar7->fts_statp[0].st_size + 4) = 2;\n          *(undefined4 *)&pFVar7->fts_statp[0].st_size = 0;\n          pFVar7->fts_info = 0xb;\n          if (compar == (_func_int_FTSENT_ptr_ptr_FTSENT_ptr_ptr *)0x0) {\n            pFVar7->fts_link = (_ftsent *)0x0;\nLAB_00029b5c:\n            local_30->fts_link = pFVar7;\n            pFVar8 = pFVar18;\n          }\n          else {\nLAB_00029978:\n            pFVar7->fts_link = pFVar18;\n            pFVar7 = local_30;\n          }\n        }\n        local_30 = pFVar7;\n        argv = argv + 1;\n        pcVar15 = *argv;\n        uVar3 = uVar3 + 1;\n        pFVar18 = pFVar8;\n      } while (pcVar15 != (char *)0x0);\n      if ((compar != (_func_int_FTSENT_ptr_ptr_FTSENT_ptr_ptr *)0x0) && (1 < uVar3)) {\n        pFVar8 = fts_sort(sp,pFVar8,uVar3);\n      }\n      goto LAB_000299c0;\n    }" if (parenthesized_expression "(pFVar4 != (FTSENT *)0x0)" ( (binary_expression "pFVar4 != (FTSENT *)0x0" identifier != (cast_expression "(FTSENT *)0x0" ( (type_descriptor "FTSENT *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      pcVar15 = *argv;\n      pFVar4->fts_level = -1;\n      pFVar4->fts_n_dirs_remaining = 0xffffffff;\n      if (compar == (_func_int_FTSENT_ptr_ptr_FTSENT_ptr_ptr *)0x0) {\n        uVar17 = 1;\n      }\n      else {\n        uVar17 = (uint)(sp->fts_options << 0x15) >> 0x1f;\n      }\n      if (pcVar15 == (char *)0x0) goto LAB_00029b78;\n      local_30 = (FTSENT *)0x0;\n      uVar3 = 0;\n      pcVar5 = (code *)(PTR_s_ore_than_one_of__i___f___n__only_00043128 + -0x7d80);\n      pFVar18 = (FTSENT *)0x0;\n      do {\n        uVar6 = (*(code *)PTR_strlen_00043564)(pcVar15);\n        if ((((options & 0x1000U) == 0) && (2 < uVar6)) &&\n           (pcVar14 = pcVar15 + uVar6, pcVar14[-1] == '/')) {\n          do {\n            if (pcVar14[-2] != '/') break;\n            uVar6 = uVar6 - 1;\n            pcVar14 = pcVar15 + uVar6;\n          } while (uVar6 != 1);\n        }\n        pFVar7 = (FTSENT *)(*pcVar20)(sp,pcVar15,uVar6);\n        pFVar8 = pFVar18;\n        if (pFVar7 == (FTSENT *)0x0) goto LAB_00029aac;\n        pFVar7->fts_level = 0;\n        pFVar7->fts_parent = pFVar4;\n        pFVar7->fts_accpath = (char *)(pFVar7 + 1);\n        pFVar8 = pFVar7;\n        if (uVar17 == 0) {\n          uVar12 = (*pcVar5)(sp->fts_cwd_fd,&sp->fts_options,pFVar7,0);\n          pFVar7->fts_info = uVar12;\n          if (compar != (_func_int_FTSENT_ptr_ptr_FTSENT_ptr_ptr *)0x0) goto LAB_00029978;\n          pFVar7->fts_link = (_ftsent *)0x0;\n          if (pFVar18 != (FTSENT *)0x0) goto LAB_00029b5c;\n        }\n        else if (pFVar18 == (FTSENT *)0x0) {\n          uVar12 = (*pcVar5)(sp->fts_cwd_fd,&sp->fts_options,pFVar7,0);\n          pFVar7->fts_info = uVar12;\n          if (compar != (_func_int_FTSENT_ptr_ptr_FTSENT_ptr_ptr *)0x0) goto LAB_00029978;\n          pFVar7->fts_link = (_ftsent *)0x0;\n        }\n        else {\n          *(undefined4 *)((int)&pFVar7->fts_statp[0].st_size + 4) = 2;\n          *(undefined4 *)&pFVar7->fts_statp[0].st_size = 0;\n          pFVar7->fts_info = 0xb;\n          if (compar == (_func_int_FTSENT_ptr_ptr_FTSENT_ptr_ptr *)0x0) {\n            pFVar7->fts_link = (_ftsent *)0x0;\nLAB_00029b5c:\n            local_30->fts_link = pFVar7;\n            pFVar8 = pFVar18;\n          }\n          else {\nLAB_00029978:\n            pFVar7->fts_link = pFVar18;\n            pFVar7 = local_30;\n          }\n        }\n        local_30 = pFVar7;\n        argv = argv + 1;\n        pcVar15 = *argv;\n        uVar3 = uVar3 + 1;\n        pFVar18 = pFVar8;\n      } while (pcVar15 != (char *)0x0);\n      if ((compar != (_func_int_FTSENT_ptr_ptr_FTSENT_ptr_ptr *)0x0) && (1 < uVar3)) {\n        pFVar8 = fts_sort(sp,pFVar8,uVar3);\n      }\n      goto LAB_000299c0;\n    }" { (expression_statement "pcVar15 = *argv;" (assignment_expression "pcVar15 = *argv" identifier = (pointer_expression "*argv" * identifier)) ;) (expression_statement "pFVar4->fts_level = -1;" (assignment_expression "pFVar4->fts_level = -1" (field_expression "pFVar4->fts_level" identifier -> field_identifier) = number_literal) ;) (expression_statement "pFVar4->fts_n_dirs_remaining = 0xffffffff;" (assignment_expression "pFVar4->fts_n_dirs_remaining = 0xffffffff" (field_expression "pFVar4->fts_n_dirs_remaining" identifier -> field_identifier) = number_literal) ;) (if_statement "if (compar == (_func_int_FTSENT_ptr_ptr_FTSENT_ptr_ptr *)0x0) {\n        uVar17 = 1;\n      }\n      else {\n        uVar17 = (uint)(sp->fts_options << 0x15) >> 0x1f;\n      }" if (parenthesized_expression "(compar == (_func_int_FTSENT_ptr_ptr_FTSENT_ptr_ptr *)0x0)" ( (binary_expression "compar == (_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)) )) (compound_statement "{\n        uVar17 = 1;\n      }" { (expression_statement "uVar17 = 1;" (assignment_expression "uVar17 = 1" identifier = number_literal) ;) }) (else_clause "else {\n        uVar17 = (uint)(sp->fts_options << 0x15) >> 0x1f;\n      }" else (compound_statement "{\n        uVar17 = (uint)(sp->fts_options << 0x15) >> 0x1f;\n      }" { (expression_statement "uVar17 = (uint)(sp->fts_options << 0x15) >> 0x1f;" (assignment_expression "uVar17 = (uint)(sp->fts_options << 0x15) >> 0x1f" identifier = (binary_expression "(uint)(sp->fts_options << 0x15) >> 0x1f" (call_expression "(uint)(sp->fts_options << 0x15)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(sp->fts_options << 0x15)" ( (binary_expression "sp->fts_options << 0x15" (field_expression "sp->fts_options" identifier -> field_identifier) << number_literal) ))) >> number_literal)) ;) }))) (if_statement "if (pcVar15 == (char *)0x0) goto LAB_00029b78;" if (parenthesized_expression "(pcVar15 == (char *)0x0)" ( (binary_expression "pcVar15 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00029b78;" goto statement_identifier ;)) (expression_statement "local_30 = (FTSENT *)0x0;" (assignment_expression "local_30 = (FTSENT *)0x0" identifier = (cast_expression "(FTSENT *)0x0" ( (type_descriptor "FTSENT *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "uVar3 = 0;" (assignment_expression "uVar3 = 0" identifier = number_literal) ;) (expression_statement "pcVar5 = (code *)(PTR_s_ore_than_one_of__i___f___n__only_00043128 + -0x7d80);" (assignment_expression "pcVar5 = (code *)(PTR_s_ore_than_one_of__i___f___n__only_00043128 + -0x7d80)" identifier = (cast_expression "(code *)(PTR_s_ore_than_one_of__i___f___n__only_00043128 + -0x7d80)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_s_ore_than_one_of__i___f___n__only_00043128 + -0x7d80)" ( (binary_expression "PTR_s_ore_than_one_of__i___f___n__only_00043128 + -0x7d80" identifier + number_literal) )))) ;) (expression_statement "pFVar18 = (FTSENT *)0x0;" (assignment_expression "pFVar18 = (FTSENT *)0x0" identifier = (cast_expression "(FTSENT *)0x0" ( (type_descriptor "FTSENT *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (do_statement "do {\n        uVar6 = (*(code *)PTR_strlen_00043564)(pcVar15);\n        if ((((options & 0x1000U) == 0) && (2 < uVar6)) &&\n           (pcVar14 = pcVar15 + uVar6, pcVar14[-1] == '/')) {\n          do {\n            if (pcVar14[-2] != '/') break;\n            uVar6 = uVar6 - 1;\n            pcVar14 = pcVar15 + uVar6;\n          } while (uVar6 != 1);\n        }\n        pFVar7 = (FTSENT *)(*pcVar20)(sp,pcVar15,uVar6);\n        pFVar8 = pFVar18;\n        if (pFVar7 == (FTSENT *)0x0) goto LAB_00029aac;\n        pFVar7->fts_level = 0;\n        pFVar7->fts_parent = pFVar4;\n        pFVar7->fts_accpath = (char *)(pFVar7 + 1);\n        pFVar8 = pFVar7;\n        if (uVar17 == 0) {\n          uVar12 = (*pcVar5)(sp->fts_cwd_fd,&sp->fts_options,pFVar7,0);\n          pFVar7->fts_info = uVar12;\n          if (compar != (_func_int_FTSENT_ptr_ptr_FTSENT_ptr_ptr *)0x0) goto LAB_00029978;\n          pFVar7->fts_link = (_ftsent *)0x0;\n          if (pFVar18 != (FTSENT *)0x0) goto LAB_00029b5c;\n        }\n        else if (pFVar18 == (FTSENT *)0x0) {\n          uVar12 = (*pcVar5)(sp->fts_cwd_fd,&sp->fts_options,pFVar7,0);\n          pFVar7->fts_info = uVar12;\n          if (compar != (_func_int_FTSENT_ptr_ptr_FTSENT_ptr_ptr *)0x0) goto LAB_00029978;\n          pFVar7->fts_link = (_ftsent *)0x0;\n        }\n        else {\n          *(undefined4 *)((int)&pFVar7->fts_statp[0].st_size + 4) = 2;\n          *(undefined4 *)&pFVar7->fts_statp[0].st_size = 0;\n          pFVar7->fts_info = 0xb;\n          if (compar == (_func_int_FTSENT_ptr_ptr_FTSENT_ptr_ptr *)0x0) {\n            pFVar7->fts_link = (_ftsent *)0x0;\nLAB_00029b5c:\n            local_30->fts_link = pFVar7;\n            pFVar8 = pFVar18;\n          }\n          else {\nLAB_00029978:\n            pFVar7->fts_link = pFVar18;\n            pFVar7 = local_30;\n          }\n        }\n        local_30 = pFVar7;\n        argv = argv + 1;\n        pcVar15 = *argv;\n        uVar3 = uVar3 + 1;\n        pFVar18 = pFVar8;\n      } while (pcVar15 != (char *)0x0);" do (compound_statement "{\n        uVar6 = (*(code *)PTR_strlen_00043564)(pcVar15);\n        if ((((options & 0x1000U) == 0) && (2 < uVar6)) &&\n           (pcVar14 = pcVar15 + uVar6, pcVar14[-1] == '/')) {\n          do {\n            if (pcVar14[-2] != '/') break;\n            uVar6 = uVar6 - 1;\n            pcVar14 = pcVar15 + uVar6;\n          } while (uVar6 != 1);\n        }\n        pFVar7 = (FTSENT *)(*pcVar20)(sp,pcVar15,uVar6);\n        pFVar8 = pFVar18;\n        if (pFVar7 == (FTSENT *)0x0) goto LAB_00029aac;\n        pFVar7->fts_level = 0;\n        pFVar7->fts_parent = pFVar4;\n        pFVar7->fts_accpath = (char *)(pFVar7 + 1);\n        pFVar8 = pFVar7;\n        if (uVar17 == 0) {\n          uVar12 = (*pcVar5)(sp->fts_cwd_fd,&sp->fts_options,pFVar7,0);\n          pFVar7->fts_info = uVar12;\n          if (compar != (_func_int_FTSENT_ptr_ptr_FTSENT_ptr_ptr *)0x0) goto LAB_00029978;\n          pFVar7->fts_link = (_ftsent *)0x0;\n          if (pFVar18 != (FTSENT *)0x0) goto LAB_00029b5c;\n        }\n        else if (pFVar18 == (FTSENT *)0x0) {\n          uVar12 = (*pcVar5)(sp->fts_cwd_fd,&sp->fts_options,pFVar7,0);\n          pFVar7->fts_info = uVar12;\n          if (compar != (_func_int_FTSENT_ptr_ptr_FTSENT_ptr_ptr *)0x0) goto LAB_00029978;\n          pFVar7->fts_link = (_ftsent *)0x0;\n        }\n        else {\n          *(undefined4 *)((int)&pFVar7->fts_statp[0].st_size + 4) = 2;\n          *(undefined4 *)&pFVar7->fts_statp[0].st_size = 0;\n          pFVar7->fts_info = 0xb;\n          if (compar == (_func_int_FTSENT_ptr_ptr_FTSENT_ptr_ptr *)0x0) {\n            pFVar7->fts_link = (_ftsent *)0x0;\nLAB_00029b5c:\n            local_30->fts_link = pFVar7;\n            pFVar8 = pFVar18;\n          }\n          else {\nLAB_00029978:\n            pFVar7->fts_link = pFVar18;\n            pFVar7 = local_30;\n          }\n        }\n        local_30 = pFVar7;\n        argv = argv + 1;\n        pcVar15 = *argv;\n        uVar3 = uVar3 + 1;\n        pFVar18 = pFVar8;\n      }" { (expression_statement "uVar6 = (*(code *)PTR_strlen_00043564)(pcVar15);" (assignment_expression "uVar6 = (*(code *)PTR_strlen_00043564)(pcVar15)" identifier = (call_expression "(*(code *)PTR_strlen_00043564)(pcVar15)" (parenthesized_expression "(*(code *)PTR_strlen_00043564)" ( (pointer_expression "*(code *)PTR_strlen_00043564" * (cast_expression "(code *)PTR_strlen_00043564" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(pcVar15)" ( identifier )))) ;) (if_statement "if ((((options & 0x1000U) == 0) && (2 < uVar6)) &&\n           (pcVar14 = pcVar15 + uVar6, pcVar14[-1] == '/')) {\n          do {\n            if (pcVar14[-2] != '/') break;\n            uVar6 = uVar6 - 1;\n            pcVar14 = pcVar15 + uVar6;\n          } while (uVar6 != 1);\n        }" if (parenthesized_expression "((((options & 0x1000U) == 0) && (2 < uVar6)) &&\n           (pcVar14 = pcVar15 + uVar6, pcVar14[-1] == '/'))" ( (binary_expression "(((options & 0x1000U) == 0) && (2 < uVar6)) &&\n           (pcVar14 = pcVar15 + uVar6, pcVar14[-1] == '/')" (parenthesized_expression "(((options & 0x1000U) == 0) && (2 < uVar6))" ( (binary_expression "((options & 0x1000U) == 0) && (2 < uVar6)" (parenthesized_expression "((options & 0x1000U) == 0)" ( (binary_expression "(options & 0x1000U) == 0" (parenthesized_expression "(options & 0x1000U)" ( (binary_expression "options & 0x1000U" identifier & number_literal) )) == number_literal) )) && (parenthesized_expression "(2 < uVar6)" ( (binary_expression "2 < uVar6" number_literal < identifier) ))) )) && (parenthesized_expression "(pcVar14 = pcVar15 + uVar6, pcVar14[-1] == '/')" ( (comma_expression "pcVar14 = pcVar15 + uVar6, pcVar14[-1] == '/'" (assignment_expression "pcVar14 = pcVar15 + uVar6" identifier = (binary_expression "pcVar15 + uVar6" identifier + identifier)) , (binary_expression "pcVar14[-1] == '/'" (subscript_expression "pcVar14[-1]" identifier [ number_literal ]) == (char_literal "'/'" ' character '))) ))) )) (compound_statement "{\n          do {\n            if (pcVar14[-2] != '/') break;\n            uVar6 = uVar6 - 1;\n            pcVar14 = pcVar15 + uVar6;\n          } while (uVar6 != 1);\n        }" { (do_statement "do {\n            if (pcVar14[-2] != '/') break;\n            uVar6 = uVar6 - 1;\n            pcVar14 = pcVar15 + uVar6;\n          } while (uVar6 != 1);" do (compound_statement "{\n            if (pcVar14[-2] != '/') break;\n            uVar6 = uVar6 - 1;\n            pcVar14 = pcVar15 + uVar6;\n          }" { (if_statement "if (pcVar14[-2] != '/') break;" if (parenthesized_expression "(pcVar14[-2] != '/')" ( (binary_expression "pcVar14[-2] != '/'" (subscript_expression "pcVar14[-2]" identifier [ number_literal ]) != (char_literal "'/'" ' character ')) )) (break_statement "break;" break ;)) (expression_statement "uVar6 = uVar6 - 1;" (assignment_expression "uVar6 = uVar6 - 1" identifier = (binary_expression "uVar6 - 1" identifier - number_literal)) ;) (expression_statement "pcVar14 = pcVar15 + uVar6;" (assignment_expression "pcVar14 = pcVar15 + uVar6" identifier = (binary_expression "pcVar15 + uVar6" identifier + identifier)) ;) }) while (parenthesized_expression "(uVar6 != 1)" ( (binary_expression "uVar6 != 1" identifier != number_literal) )) ;) })) (expression_statement "pFVar7 = (FTSENT *)(*pcVar20)(sp,pcVar15,uVar6);" (assignment_expression "pFVar7 = (FTSENT *)(*pcVar20)(sp,pcVar15,uVar6)" identifier = (cast_expression "(FTSENT *)(*pcVar20)(sp,pcVar15,uVar6)" ( (type_descriptor "FTSENT *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*pcVar20)(sp,pcVar15,uVar6)" (parenthesized_expression "(*pcVar20)" ( (pointer_expression "*pcVar20" * identifier) )) (argument_list "(sp,pcVar15,uVar6)" ( identifier , identifier , identifier ))))) ;) (expression_statement "pFVar8 = pFVar18;" (assignment_expression "pFVar8 = pFVar18" identifier = identifier) ;) (if_statement "if (pFVar7 == (FTSENT *)0x0) goto LAB_00029aac;" if (parenthesized_expression "(pFVar7 == (FTSENT *)0x0)" ( (binary_expression "pFVar7 == (FTSENT *)0x0" identifier == (cast_expression "(FTSENT *)0x0" ( (type_descriptor "FTSENT *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00029aac;" goto statement_identifier ;)) (expression_statement "pFVar7->fts_level = 0;" (assignment_expression "pFVar7->fts_level = 0" (field_expression "pFVar7->fts_level" identifier -> field_identifier) = number_literal) ;) (expression_statement "pFVar7->fts_parent = pFVar4;" (assignment_expression "pFVar7->fts_parent = pFVar4" (field_expression "pFVar7->fts_parent" identifier -> field_identifier) = identifier) ;) (expression_statement "pFVar7->fts_accpath = (char *)(pFVar7 + 1);" (assignment_expression "pFVar7->fts_accpath = (char *)(pFVar7 + 1)" (field_expression "pFVar7->fts_accpath" identifier -> field_identifier) = (cast_expression "(char *)(pFVar7 + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pFVar7 + 1)" ( (binary_expression "pFVar7 + 1" identifier + number_literal) )))) ;) (expression_statement "pFVar8 = pFVar7;" (assignment_expression "pFVar8 = pFVar7" identifier = identifier) ;) (if_statement "if (uVar17 == 0) {\n          uVar12 = (*pcVar5)(sp->fts_cwd_fd,&sp->fts_options,pFVar7,0);\n          pFVar7->fts_info = uVar12;\n          if (compar != (_func_int_FTSENT_ptr_ptr_FTSENT_ptr_ptr *)0x0) goto LAB_00029978;\n          pFVar7->fts_link = (_ftsent *)0x0;\n          if (pFVar18 != (FTSENT *)0x0) goto LAB_00029b5c;\n        }\n        else if (pFVar18 == (FTSENT *)0x0) {\n          uVar12 = (*pcVar5)(sp->fts_cwd_fd,&sp->fts_options,pFVar7,0);\n          pFVar7->fts_info = uVar12;\n          if (compar != (_func_int_FTSENT_ptr_ptr_FTSENT_ptr_ptr *)0x0) goto LAB_00029978;\n          pFVar7->fts_link = (_ftsent *)0x0;\n        }\n        else {\n          *(undefined4 *)((int)&pFVar7->fts_statp[0].st_size + 4) = 2;\n          *(undefined4 *)&pFVar7->fts_statp[0].st_size = 0;\n          pFVar7->fts_info = 0xb;\n          if (compar == (_func_int_FTSENT_ptr_ptr_FTSENT_ptr_ptr *)0x0) {\n            pFVar7->fts_link = (_ftsent *)0x0;\nLAB_00029b5c:\n            local_30->fts_link = pFVar7;\n            pFVar8 = pFVar18;\n          }\n          else {\nLAB_00029978:\n            pFVar7->fts_link = pFVar18;\n            pFVar7 = local_30;\n          }\n        }" if (parenthesized_expression "(uVar17 == 0)" ( (binary_expression "uVar17 == 0" identifier == number_literal) )) (compound_statement "{\n          uVar12 = (*pcVar5)(sp->fts_cwd_fd,&sp->fts_options,pFVar7,0);\n          pFVar7->fts_info = uVar12;\n          if (compar != (_func_int_FTSENT_ptr_ptr_FTSENT_ptr_ptr *)0x0) goto LAB_00029978;\n          pFVar7->fts_link = (_ftsent *)0x0;\n          if (pFVar18 != (FTSENT *)0x0) goto LAB_00029b5c;\n        }" { (expression_statement "uVar12 = (*pcVar5)(sp->fts_cwd_fd,&sp->fts_options,pFVar7,0);" (assignment_expression "uVar12 = (*pcVar5)(sp->fts_cwd_fd,&sp->fts_options,pFVar7,0)" identifier = (call_expression "(*pcVar5)(sp->fts_cwd_fd,&sp->fts_options,pFVar7,0)" (parenthesized_expression "(*pcVar5)" ( (pointer_expression "*pcVar5" * identifier) )) (argument_list "(sp->fts_cwd_fd,&sp->fts_options,pFVar7,0)" ( (field_expression "sp->fts_cwd_fd" identifier -> field_identifier) , (pointer_expression "&sp->fts_options" & (field_expression "sp->fts_options" identifier -> field_identifier)) , identifier , number_literal )))) ;) (expression_statement "pFVar7->fts_info = uVar12;" (assignment_expression "pFVar7->fts_info = uVar12" (field_expression "pFVar7->fts_info" identifier -> field_identifier) = identifier) ;) (if_statement "if (compar != (_func_int_FTSENT_ptr_ptr_FTSENT_ptr_ptr *)0x0) goto LAB_00029978;" if (parenthesized_expression "(compar != (_func_int_FTSENT_ptr_ptr_FTSENT_ptr_ptr *)0x0)" ( (binary_expression "compar != (_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)) )) (goto_statement "goto LAB_00029978;" goto statement_identifier ;)) (expression_statement "pFVar7->fts_link = (_ftsent *)0x0;" (assignment_expression "pFVar7->fts_link = (_ftsent *)0x0" (field_expression "pFVar7->fts_link" identifier -> field_identifier) = (cast_expression "(_ftsent *)0x0" ( (type_descriptor "_ftsent *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if (pFVar18 != (FTSENT *)0x0) goto LAB_00029b5c;" if (parenthesized_expression "(pFVar18 != (FTSENT *)0x0)" ( (binary_expression "pFVar18 != (FTSENT *)0x0" identifier != (cast_expression "(FTSENT *)0x0" ( (type_descriptor "FTSENT *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00029b5c;" goto statement_identifier ;)) }) (else_clause "else if (pFVar18 == (FTSENT *)0x0) {\n          uVar12 = (*pcVar5)(sp->fts_cwd_fd,&sp->fts_options,pFVar7,0);\n          pFVar7->fts_info = uVar12;\n          if (compar != (_func_int_FTSENT_ptr_ptr_FTSENT_ptr_ptr *)0x0) goto LAB_00029978;\n          pFVar7->fts_link = (_ftsent *)0x0;\n        }\n        else {\n          *(undefined4 *)((int)&pFVar7->fts_statp[0].st_size + 4) = 2;\n          *(undefined4 *)&pFVar7->fts_statp[0].st_size = 0;\n          pFVar7->fts_info = 0xb;\n          if (compar == (_func_int_FTSENT_ptr_ptr_FTSENT_ptr_ptr *)0x0) {\n            pFVar7->fts_link = (_ftsent *)0x0;\nLAB_00029b5c:\n            local_30->fts_link = pFVar7;\n            pFVar8 = pFVar18;\n          }\n          else {\nLAB_00029978:\n            pFVar7->fts_link = pFVar18;\n            pFVar7 = local_30;\n          }\n        }" else (if_statement "if (pFVar18 == (FTSENT *)0x0) {\n          uVar12 = (*pcVar5)(sp->fts_cwd_fd,&sp->fts_options,pFVar7,0);\n          pFVar7->fts_info = uVar12;\n          if (compar != (_func_int_FTSENT_ptr_ptr_FTSENT_ptr_ptr *)0x0) goto LAB_00029978;\n          pFVar7->fts_link = (_ftsent *)0x0;\n        }\n        else {\n          *(undefined4 *)((int)&pFVar7->fts_statp[0].st_size + 4) = 2;\n          *(undefined4 *)&pFVar7->fts_statp[0].st_size = 0;\n          pFVar7->fts_info = 0xb;\n          if (compar == (_func_int_FTSENT_ptr_ptr_FTSENT_ptr_ptr *)0x0) {\n            pFVar7->fts_link = (_ftsent *)0x0;\nLAB_00029b5c:\n            local_30->fts_link = pFVar7;\n            pFVar8 = pFVar18;\n          }\n          else {\nLAB_00029978:\n            pFVar7->fts_link = pFVar18;\n            pFVar7 = local_30;\n          }\n        }" if (parenthesized_expression "(pFVar18 == (FTSENT *)0x0)" ( (binary_expression "pFVar18 == (FTSENT *)0x0" identifier == (cast_expression "(FTSENT *)0x0" ( (type_descriptor "FTSENT *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          uVar12 = (*pcVar5)(sp->fts_cwd_fd,&sp->fts_options,pFVar7,0);\n          pFVar7->fts_info = uVar12;\n          if (compar != (_func_int_FTSENT_ptr_ptr_FTSENT_ptr_ptr *)0x0) goto LAB_00029978;\n          pFVar7->fts_link = (_ftsent *)0x0;\n        }" { (expression_statement "uVar12 = (*pcVar5)(sp->fts_cwd_fd,&sp->fts_options,pFVar7,0);" (assignment_expression "uVar12 = (*pcVar5)(sp->fts_cwd_fd,&sp->fts_options,pFVar7,0)" identifier = (call_expression "(*pcVar5)(sp->fts_cwd_fd,&sp->fts_options,pFVar7,0)" (parenthesized_expression "(*pcVar5)" ( (pointer_expression "*pcVar5" * identifier) )) (argument_list "(sp->fts_cwd_fd,&sp->fts_options,pFVar7,0)" ( (field_expression "sp->fts_cwd_fd" identifier -> field_identifier) , (pointer_expression "&sp->fts_options" & (field_expression "sp->fts_options" identifier -> field_identifier)) , identifier , number_literal )))) ;) (expression_statement "pFVar7->fts_info = uVar12;" (assignment_expression "pFVar7->fts_info = uVar12" (field_expression "pFVar7->fts_info" identifier -> field_identifier) = identifier) ;) (if_statement "if (compar != (_func_int_FTSENT_ptr_ptr_FTSENT_ptr_ptr *)0x0) goto LAB_00029978;" if (parenthesized_expression "(compar != (_func_int_FTSENT_ptr_ptr_FTSENT_ptr_ptr *)0x0)" ( (binary_expression "compar != (_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)) )) (goto_statement "goto LAB_00029978;" goto statement_identifier ;)) (expression_statement "pFVar7->fts_link = (_ftsent *)0x0;" (assignment_expression "pFVar7->fts_link = (_ftsent *)0x0" (field_expression "pFVar7->fts_link" identifier -> field_identifier) = (cast_expression "(_ftsent *)0x0" ( (type_descriptor "_ftsent *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }) (else_clause "else {\n          *(undefined4 *)((int)&pFVar7->fts_statp[0].st_size + 4) = 2;\n          *(undefined4 *)&pFVar7->fts_statp[0].st_size = 0;\n          pFVar7->fts_info = 0xb;\n          if (compar == (_func_int_FTSENT_ptr_ptr_FTSENT_ptr_ptr *)0x0) {\n            pFVar7->fts_link = (_ftsent *)0x0;\nLAB_00029b5c:\n            local_30->fts_link = pFVar7;\n            pFVar8 = pFVar18;\n          }\n          else {\nLAB_00029978:\n            pFVar7->fts_link = pFVar18;\n            pFVar7 = local_30;\n          }\n        }" else (compound_statement "{\n          *(undefined4 *)((int)&pFVar7->fts_statp[0].st_size + 4) = 2;\n          *(undefined4 *)&pFVar7->fts_statp[0].st_size = 0;\n          pFVar7->fts_info = 0xb;\n          if (compar == (_func_int_FTSENT_ptr_ptr_FTSENT_ptr_ptr *)0x0) {\n            pFVar7->fts_link = (_ftsent *)0x0;\nLAB_00029b5c:\n            local_30->fts_link = pFVar7;\n            pFVar8 = pFVar18;\n          }\n          else {\nLAB_00029978:\n            pFVar7->fts_link = pFVar18;\n            pFVar7 = local_30;\n          }\n        }" { (expression_statement "*(undefined4 *)((int)&pFVar7->fts_statp[0].st_size + 4) = 2;" (assignment_expression "*(undefined4 *)((int)&pFVar7->fts_statp[0].st_size + 4) = 2" (pointer_expression "*(undefined4 *)((int)&pFVar7->fts_statp[0].st_size + 4)" * (cast_expression "(undefined4 *)((int)&pFVar7->fts_statp[0].st_size + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&pFVar7->fts_statp[0].st_size + 4)" ( (binary_expression "(int)&pFVar7->fts_statp[0].st_size + 4" (cast_expression "(int)&pFVar7->fts_statp[0].st_size" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&pFVar7->fts_statp[0].st_size" & (field_expression "pFVar7->fts_statp[0].st_size" (subscript_expression "pFVar7->fts_statp[0]" (field_expression "pFVar7->fts_statp" identifier -> field_identifier) [ number_literal ]) . field_identifier))) + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)&pFVar7->fts_statp[0].st_size = 0;" (assignment_expression "*(undefined4 *)&pFVar7->fts_statp[0].st_size = 0" (pointer_expression "*(undefined4 *)&pFVar7->fts_statp[0].st_size" * (cast_expression "(undefined4 *)&pFVar7->fts_statp[0].st_size" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pFVar7->fts_statp[0].st_size" & (field_expression "pFVar7->fts_statp[0].st_size" (subscript_expression "pFVar7->fts_statp[0]" (field_expression "pFVar7->fts_statp" identifier -> field_identifier) [ number_literal ]) . field_identifier)))) = number_literal) ;) (expression_statement "pFVar7->fts_info = 0xb;" (assignment_expression "pFVar7->fts_info = 0xb" (field_expression "pFVar7->fts_info" identifier -> field_identifier) = number_literal) ;) (if_statement "if (compar == (_func_int_FTSENT_ptr_ptr_FTSENT_ptr_ptr *)0x0) {\n            pFVar7->fts_link = (_ftsent *)0x0;\nLAB_00029b5c:\n            local_30->fts_link = pFVar7;\n            pFVar8 = pFVar18;\n          }\n          else {\nLAB_00029978:\n            pFVar7->fts_link = pFVar18;\n            pFVar7 = local_30;\n          }" if (parenthesized_expression "(compar == (_func_int_FTSENT_ptr_ptr_FTSENT_ptr_ptr *)0x0)" ( (binary_expression "compar == (_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)) )) (compound_statement "{\n            pFVar7->fts_link = (_ftsent *)0x0;\nLAB_00029b5c:\n            local_30->fts_link = pFVar7;\n            pFVar8 = pFVar18;\n          }" { (expression_statement "pFVar7->fts_link = (_ftsent *)0x0;" (assignment_expression "pFVar7->fts_link = (_ftsent *)0x0" (field_expression "pFVar7->fts_link" identifier -> field_identifier) = (cast_expression "(_ftsent *)0x0" ( (type_descriptor "_ftsent *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (labeled_statement "LAB_00029b5c:\n            local_30->fts_link = pFVar7;" statement_identifier : (expression_statement "local_30->fts_link = pFVar7;" (assignment_expression "local_30->fts_link = pFVar7" (field_expression "local_30->fts_link" identifier -> field_identifier) = identifier) ;)) (expression_statement "pFVar8 = pFVar18;" (assignment_expression "pFVar8 = pFVar18" identifier = identifier) ;) }) (else_clause "else {\nLAB_00029978:\n            pFVar7->fts_link = pFVar18;\n            pFVar7 = local_30;\n          }" else (compound_statement "{\nLAB_00029978:\n            pFVar7->fts_link = pFVar18;\n            pFVar7 = local_30;\n          }" { (labeled_statement "LAB_00029978:\n            pFVar7->fts_link = pFVar18;" statement_identifier : (expression_statement "pFVar7->fts_link = pFVar18;" (assignment_expression "pFVar7->fts_link = pFVar18" (field_expression "pFVar7->fts_link" identifier -> field_identifier) = identifier) ;)) (expression_statement "pFVar7 = local_30;" (assignment_expression "pFVar7 = local_30" identifier = identifier) ;) }))) }))))) (expression_statement "local_30 = pFVar7;" (assignment_expression "local_30 = pFVar7" identifier = identifier) ;) (expression_statement "argv = argv + 1;" (assignment_expression "argv = argv + 1" identifier = (binary_expression "argv + 1" identifier + number_literal)) ;) (expression_statement "pcVar15 = *argv;" (assignment_expression "pcVar15 = *argv" identifier = (pointer_expression "*argv" * identifier)) ;) (expression_statement "uVar3 = uVar3 + 1;" (assignment_expression "uVar3 = uVar3 + 1" identifier = (binary_expression "uVar3 + 1" identifier + number_literal)) ;) (expression_statement "pFVar18 = pFVar8;" (assignment_expression "pFVar18 = pFVar8" identifier = identifier) ;) }) while (parenthesized_expression "(pcVar15 != (char *)0x0)" ( (binary_expression "pcVar15 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) (if_statement "if ((compar != (_func_int_FTSENT_ptr_ptr_FTSENT_ptr_ptr *)0x0) && (1 < uVar3)) {\n        pFVar8 = fts_sort(sp,pFVar8,uVar3);\n      }" if (parenthesized_expression "((compar != (_func_int_FTSENT_ptr_ptr_FTSENT_ptr_ptr *)0x0) && (1 < uVar3))" ( (binary_expression "(compar != (_func_int_FTSENT_ptr_ptr_FTSENT_ptr_ptr *)0x0) && (1 < uVar3)" (parenthesized_expression "(compar != (_func_int_FTSENT_ptr_ptr_FTSENT_ptr_ptr *)0x0)" ( (binary_expression "compar != (_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 "(1 < uVar3)" ( (binary_expression "1 < uVar3" number_literal < identifier) ))) )) (compound_statement "{\n        pFVar8 = fts_sort(sp,pFVar8,uVar3);\n      }" { (expression_statement "pFVar8 = fts_sort(sp,pFVar8,uVar3);" (assignment_expression "pFVar8 = fts_sort(sp,pFVar8,uVar3)" identifier = (call_expression "fts_sort(sp,pFVar8,uVar3)" identifier (argument_list "(sp,pFVar8,uVar3)" ( identifier , identifier , identifier )))) ;) })) (goto_statement "goto LAB_000299c0;" goto statement_identifier ;) })) }))) (expression_statement "(*(code *)PTR_free_0004363c)(sp->fts_path);" (call_expression "(*(code *)PTR_free_0004363c)(sp->fts_path)" (parenthesized_expression "(*(code *)PTR_free_0004363c)" ( (pointer_expression "*(code *)PTR_free_0004363c" * (cast_expression "(code *)PTR_free_0004363c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(sp->fts_path)" ( (field_expression "sp->fts_path" identifier -> field_identifier) ))) ;) (labeled_statement "LAB_00029ae0:\n  (*(code *)PTR_free_0004363c)(sp);" statement_identifier : (expression_statement "(*(code *)PTR_free_0004363c)(sp);" (call_expression "(*(code *)PTR_free_0004363c)(sp)" (parenthesized_expression "(*(code *)PTR_free_0004363c)" ( (pointer_expression "*(code *)PTR_free_0004363c" * (cast_expression "(code *)PTR_free_0004363c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(sp)" ( identifier ))) ;)) (return_statement "return (FTS *)0x0;" return (cast_expression "(FTS *)0x0" ( (type_descriptor "FTS *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })))
(translation_unit "int * fts_open(int *param_1,uint param_2,int param_3)\n\n{\n  undefined *puVar1;\n  undefined *puVar2;\n  int *piVar3;\n  uint uVar4;\n  code *pcVar5;\n  uint uVar6;\n  undefined4 *puVar7;\n  undefined2 uVar8;\n  int iVar9;\n  int iVar10;\n  int iVar11;\n  uint uVar12;\n  int *piVar13;\n  int iVar14;\n  code *pcVar15;\n  code *local_3c;\n  int local_30;\n  \n  if ((((param_2 & 0xffffe000) != 0) || ((param_2 & 0x204) == 0x204)) || ((param_2 & 0x12) == 0)) {\n    puVar7 = (undefined4 *)(*(code *)PTR___errno_location_00043520)();\n    *puVar7 = 0x16;\n    return (int *)0x0;\n  }\n  piVar3 = (int *)(*(code *)PTR_calloc_0004341c)(0x60,1);\n  if (piVar3 == (int *)0x0) {\n    return (int *)0x0;\n  }\n  piVar3[0xb] = param_3;\n  if ((param_2 & 2) == 0) {\n    piVar3[0xc] = param_2;\n  }\n  else {\n    piVar3[0xc] = param_2 & 0xfffffdff | 4;\n  }\n  iVar10 = *param_1;\n  piVar3[8] = -100;\n  if (iVar10 == 0) {\n    uVar12 = 0x1000;\n  }\n  else {\n    uVar12 = 0;\n    piVar13 = param_1;\n    do {\n      piVar13 = piVar13 + 1;\n      uVar4 = (*(code *)PTR_strlen_00043564)();\n      if (uVar12 < uVar4) {\n        uVar12 = uVar4;\n      }\n    } while (*piVar13 != 0);\n    uVar12 = uVar12 + 1;\n    if (uVar12 < 0x1000) {\n      uVar12 = 0x1000;\n    }\n  }\n  iVar10 = FUN_000284b8(piVar3 + 6,piVar3 + 9,uVar12);\n  puVar2 = PTR_LAB_0004326c;\n  puVar1 = PTR_s_ore_than_one_of__i___f___n__only_00043128;\n  if (iVar10 == 0) goto LAB_00029ae0;\n  if (*param_1 == 0) {\n    iVar10 = 0;\nLAB_00029b78:\n    iVar9 = 0;\nLAB_000299c0:\n    local_3c = (code *)(puVar2 + 0x7d20);\n    iVar14 = (*local_3c)(piVar3,puVar1 + 0x44c,0);\n    *piVar3 = iVar14;\n    if (iVar14 != 0) {\n      *(int *)(iVar14 + 8) = iVar9;\n      *(undefined4 *)(iVar14 + 0x30) = 1;\n      iVar11 = piVar3[0xc];\n      *(undefined2 *)(iVar14 + 0x3c) = 9;\n      iVar14 = FUN_0002857c(iVar11,piVar3 + 0xe);\n      if (iVar14 != 0) {\n        if ((piVar3[0xc] & 0x204U) == 0) {\n          iVar10 = FUN_00028630(piVar3[8],piVar3[0xc],\n                                PTR_s_ore_than_one_of__i___f___n__only_00043128 + 0xc4c);\n          piVar3[7] = iVar10;\n          if (iVar10 < 0) {\n            piVar3[0xc] = piVar3[0xc] | 4;\n          }\n        }\n        i_ring_init(piVar3 + 0xf,0xffffffff);\n        return piVar3;\n      }\n    }\nLAB_00029aac:\n    FUN_00027ddc(iVar9);\n    (*(code *)PTR_free_0004363c)(iVar10);\n  }\n  else {\n    pcVar15 = (code *)(PTR_LAB_0004326c + 0x7d20);\n    iVar10 = FUN_00027d20(piVar3,PTR_s_ore_than_one_of__i___f___n__only_00043128 + 0x44c,0);\n    if (iVar10 != 0) {\n      iVar14 = *param_1;\n      *(undefined4 *)(iVar10 + 0x30) = 0xffffffff;\n      *(undefined4 *)(iVar10 + 0x38) = 0xffffffff;\n      if (param_3 == 0) {\n        uVar12 = 1;\n      }\n      else {\n        uVar12 = (uint)(piVar3[0xc] << 0x15) >> 0x1f;\n      }\n      if (iVar14 == 0) goto LAB_00029b78;\n      local_30 = 0;\n      uVar4 = 0;\n      pcVar5 = (code *)(PTR_s_ore_than_one_of__i___f___n__only_00043128 + -0x7d80);\n      iVar11 = 0;\n      do {\n        uVar6 = (*(code *)PTR_strlen_00043564)(iVar14);\n        if ((((param_2 & 0x1000) == 0) && (2 < uVar6)) &&\n           (iVar9 = iVar14 + uVar6, *(char *)(iVar9 + -1) == '/')) {\n          do {\n            if (*(char *)(iVar9 + -2) != '/') break;\n            uVar6 = uVar6 - 1;\n            iVar9 = iVar14 + uVar6;\n          } while (uVar6 != 1);\n        }\n        iVar14 = (*pcVar15)(piVar3,iVar14,uVar6);\n        iVar9 = iVar11;\n        if (iVar14 == 0) goto LAB_00029aac;\n        *(undefined4 *)(iVar14 + 0x30) = 0;\n        *(int *)(iVar14 + 4) = iVar10;\n        *(int *)(iVar14 + 0x18) = iVar14 + 0xe8;\n        iVar9 = iVar14;\n        if (uVar12 == 0) {\n          uVar8 = (*pcVar5)(piVar3[8],piVar3 + 0xc,iVar14,0);\n          *(undefined2 *)(iVar14 + 0x3c) = uVar8;\n          if (param_3 != 0) goto LAB_00029978;\n          *(undefined4 *)(iVar14 + 8) = 0;\n          if (iVar11 != 0) goto LAB_00029b5c;\n        }\n        else if (iVar11 == 0) {\n          uVar8 = (*pcVar5)(piVar3[8],piVar3 + 0xc,iVar14,0);\n          *(undefined2 *)(iVar14 + 0x3c) = uVar8;\n          if (param_3 != 0) goto LAB_00029978;\n          *(undefined4 *)(iVar14 + 8) = 0;\n        }\n        else {\n          *(undefined4 *)(iVar14 + 0x84) = 2;\n          *(undefined4 *)(iVar14 + 0x80) = 0;\n          *(undefined2 *)(iVar14 + 0x3c) = 0xb;\n          if (param_3 == 0) {\n            *(undefined4 *)(iVar14 + 8) = 0;\nLAB_00029b5c:\n            *(int *)(local_30 + 8) = iVar14;\n            iVar9 = iVar11;\n          }\n          else {\nLAB_00029978:\n            *(int *)(iVar14 + 8) = iVar11;\n            iVar14 = local_30;\n          }\n        }\n        local_30 = iVar14;\n        param_1 = param_1 + 1;\n        iVar14 = *param_1;\n        uVar4 = uVar4 + 1;\n        iVar11 = iVar9;\n      } while (iVar14 != 0);\n      if ((param_3 != 0) && (1 < uVar4)) {\n        iVar9 = FUN_00027be4(piVar3,iVar9,uVar4);\n      }\n      goto LAB_000299c0;\n    }\n  }\n  (*(code *)PTR_free_0004363c)(piVar3[6]);\nLAB_00029ae0:\n  (*(code *)PTR_free_0004363c)(piVar3);\n  return (int *)0x0;\n}\n\n" (function_definition "int * fts_open(int *param_1,uint param_2,int param_3)\n\n{\n  undefined *puVar1;\n  undefined *puVar2;\n  int *piVar3;\n  uint uVar4;\n  code *pcVar5;\n  uint uVar6;\n  undefined4 *puVar7;\n  undefined2 uVar8;\n  int iVar9;\n  int iVar10;\n  int iVar11;\n  uint uVar12;\n  int *piVar13;\n  int iVar14;\n  code *pcVar15;\n  code *local_3c;\n  int local_30;\n  \n  if ((((param_2 & 0xffffe000) != 0) || ((param_2 & 0x204) == 0x204)) || ((param_2 & 0x12) == 0)) {\n    puVar7 = (undefined4 *)(*(code *)PTR___errno_location_00043520)();\n    *puVar7 = 0x16;\n    return (int *)0x0;\n  }\n  piVar3 = (int *)(*(code *)PTR_calloc_0004341c)(0x60,1);\n  if (piVar3 == (int *)0x0) {\n    return (int *)0x0;\n  }\n  piVar3[0xb] = param_3;\n  if ((param_2 & 2) == 0) {\n    piVar3[0xc] = param_2;\n  }\n  else {\n    piVar3[0xc] = param_2 & 0xfffffdff | 4;\n  }\n  iVar10 = *param_1;\n  piVar3[8] = -100;\n  if (iVar10 == 0) {\n    uVar12 = 0x1000;\n  }\n  else {\n    uVar12 = 0;\n    piVar13 = param_1;\n    do {\n      piVar13 = piVar13 + 1;\n      uVar4 = (*(code *)PTR_strlen_00043564)();\n      if (uVar12 < uVar4) {\n        uVar12 = uVar4;\n      }\n    } while (*piVar13 != 0);\n    uVar12 = uVar12 + 1;\n    if (uVar12 < 0x1000) {\n      uVar12 = 0x1000;\n    }\n  }\n  iVar10 = FUN_000284b8(piVar3 + 6,piVar3 + 9,uVar12);\n  puVar2 = PTR_LAB_0004326c;\n  puVar1 = PTR_s_ore_than_one_of__i___f___n__only_00043128;\n  if (iVar10 == 0) goto LAB_00029ae0;\n  if (*param_1 == 0) {\n    iVar10 = 0;\nLAB_00029b78:\n    iVar9 = 0;\nLAB_000299c0:\n    local_3c = (code *)(puVar2 + 0x7d20);\n    iVar14 = (*local_3c)(piVar3,puVar1 + 0x44c,0);\n    *piVar3 = iVar14;\n    if (iVar14 != 0) {\n      *(int *)(iVar14 + 8) = iVar9;\n      *(undefined4 *)(iVar14 + 0x30) = 1;\n      iVar11 = piVar3[0xc];\n      *(undefined2 *)(iVar14 + 0x3c) = 9;\n      iVar14 = FUN_0002857c(iVar11,piVar3 + 0xe);\n      if (iVar14 != 0) {\n        if ((piVar3[0xc] & 0x204U) == 0) {\n          iVar10 = FUN_00028630(piVar3[8],piVar3[0xc],\n                                PTR_s_ore_than_one_of__i___f___n__only_00043128 + 0xc4c);\n          piVar3[7] = iVar10;\n          if (iVar10 < 0) {\n            piVar3[0xc] = piVar3[0xc] | 4;\n          }\n        }\n        i_ring_init(piVar3 + 0xf,0xffffffff);\n        return piVar3;\n      }\n    }\nLAB_00029aac:\n    FUN_00027ddc(iVar9);\n    (*(code *)PTR_free_0004363c)(iVar10);\n  }\n  else {\n    pcVar15 = (code *)(PTR_LAB_0004326c + 0x7d20);\n    iVar10 = FUN_00027d20(piVar3,PTR_s_ore_than_one_of__i___f___n__only_00043128 + 0x44c,0);\n    if (iVar10 != 0) {\n      iVar14 = *param_1;\n      *(undefined4 *)(iVar10 + 0x30) = 0xffffffff;\n      *(undefined4 *)(iVar10 + 0x38) = 0xffffffff;\n      if (param_3 == 0) {\n        uVar12 = 1;\n      }\n      else {\n        uVar12 = (uint)(piVar3[0xc] << 0x15) >> 0x1f;\n      }\n      if (iVar14 == 0) goto LAB_00029b78;\n      local_30 = 0;\n      uVar4 = 0;\n      pcVar5 = (code *)(PTR_s_ore_than_one_of__i___f___n__only_00043128 + -0x7d80);\n      iVar11 = 0;\n      do {\n        uVar6 = (*(code *)PTR_strlen_00043564)(iVar14);\n        if ((((param_2 & 0x1000) == 0) && (2 < uVar6)) &&\n           (iVar9 = iVar14 + uVar6, *(char *)(iVar9 + -1) == '/')) {\n          do {\n            if (*(char *)(iVar9 + -2) != '/') break;\n            uVar6 = uVar6 - 1;\n            iVar9 = iVar14 + uVar6;\n          } while (uVar6 != 1);\n        }\n        iVar14 = (*pcVar15)(piVar3,iVar14,uVar6);\n        iVar9 = iVar11;\n        if (iVar14 == 0) goto LAB_00029aac;\n        *(undefined4 *)(iVar14 + 0x30) = 0;\n        *(int *)(iVar14 + 4) = iVar10;\n        *(int *)(iVar14 + 0x18) = iVar14 + 0xe8;\n        iVar9 = iVar14;\n        if (uVar12 == 0) {\n          uVar8 = (*pcVar5)(piVar3[8],piVar3 + 0xc,iVar14,0);\n          *(undefined2 *)(iVar14 + 0x3c) = uVar8;\n          if (param_3 != 0) goto LAB_00029978;\n          *(undefined4 *)(iVar14 + 8) = 0;\n          if (iVar11 != 0) goto LAB_00029b5c;\n        }\n        else if (iVar11 == 0) {\n          uVar8 = (*pcVar5)(piVar3[8],piVar3 + 0xc,iVar14,0);\n          *(undefined2 *)(iVar14 + 0x3c) = uVar8;\n          if (param_3 != 0) goto LAB_00029978;\n          *(undefined4 *)(iVar14 + 8) = 0;\n        }\n        else {\n          *(undefined4 *)(iVar14 + 0x84) = 2;\n          *(undefined4 *)(iVar14 + 0x80) = 0;\n          *(undefined2 *)(iVar14 + 0x3c) = 0xb;\n          if (param_3 == 0) {\n            *(undefined4 *)(iVar14 + 8) = 0;\nLAB_00029b5c:\n            *(int *)(local_30 + 8) = iVar14;\n            iVar9 = iVar11;\n          }\n          else {\nLAB_00029978:\n            *(int *)(iVar14 + 8) = iVar11;\n            iVar14 = local_30;\n          }\n        }\n        local_30 = iVar14;\n        param_1 = param_1 + 1;\n        iVar14 = *param_1;\n        uVar4 = uVar4 + 1;\n        iVar11 = iVar9;\n      } while (iVar14 != 0);\n      if ((param_3 != 0) && (1 < uVar4)) {\n        iVar9 = FUN_00027be4(piVar3,iVar9,uVar4);\n      }\n      goto LAB_000299c0;\n    }\n  }\n  (*(code *)PTR_free_0004363c)(piVar3[6]);\nLAB_00029ae0:\n  (*(code *)PTR_free_0004363c)(piVar3);\n  return (int *)0x0;\n}" primitive_type (pointer_declarator "* fts_open(int *param_1,uint param_2,int param_3)" * (function_declarator "fts_open(int *param_1,uint param_2,int param_3)" identifier (parameter_list "(int *param_1,uint param_2,int param_3)" ( (parameter_declaration "int *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "uint param_2" type_identifier identifier) , (parameter_declaration "int param_3" primitive_type identifier) )))) (compound_statement "{\n  undefined *puVar1;\n  undefined *puVar2;\n  int *piVar3;\n  uint uVar4;\n  code *pcVar5;\n  uint uVar6;\n  undefined4 *puVar7;\n  undefined2 uVar8;\n  int iVar9;\n  int iVar10;\n  int iVar11;\n  uint uVar12;\n  int *piVar13;\n  int iVar14;\n  code *pcVar15;\n  code *local_3c;\n  int local_30;\n  \n  if ((((param_2 & 0xffffe000) != 0) || ((param_2 & 0x204) == 0x204)) || ((param_2 & 0x12) == 0)) {\n    puVar7 = (undefined4 *)(*(code *)PTR___errno_location_00043520)();\n    *puVar7 = 0x16;\n    return (int *)0x0;\n  }\n  piVar3 = (int *)(*(code *)PTR_calloc_0004341c)(0x60,1);\n  if (piVar3 == (int *)0x0) {\n    return (int *)0x0;\n  }\n  piVar3[0xb] = param_3;\n  if ((param_2 & 2) == 0) {\n    piVar3[0xc] = param_2;\n  }\n  else {\n    piVar3[0xc] = param_2 & 0xfffffdff | 4;\n  }\n  iVar10 = *param_1;\n  piVar3[8] = -100;\n  if (iVar10 == 0) {\n    uVar12 = 0x1000;\n  }\n  else {\n    uVar12 = 0;\n    piVar13 = param_1;\n    do {\n      piVar13 = piVar13 + 1;\n      uVar4 = (*(code *)PTR_strlen_00043564)();\n      if (uVar12 < uVar4) {\n        uVar12 = uVar4;\n      }\n    } while (*piVar13 != 0);\n    uVar12 = uVar12 + 1;\n    if (uVar12 < 0x1000) {\n      uVar12 = 0x1000;\n    }\n  }\n  iVar10 = FUN_000284b8(piVar3 + 6,piVar3 + 9,uVar12);\n  puVar2 = PTR_LAB_0004326c;\n  puVar1 = PTR_s_ore_than_one_of__i___f___n__only_00043128;\n  if (iVar10 == 0) goto LAB_00029ae0;\n  if (*param_1 == 0) {\n    iVar10 = 0;\nLAB_00029b78:\n    iVar9 = 0;\nLAB_000299c0:\n    local_3c = (code *)(puVar2 + 0x7d20);\n    iVar14 = (*local_3c)(piVar3,puVar1 + 0x44c,0);\n    *piVar3 = iVar14;\n    if (iVar14 != 0) {\n      *(int *)(iVar14 + 8) = iVar9;\n      *(undefined4 *)(iVar14 + 0x30) = 1;\n      iVar11 = piVar3[0xc];\n      *(undefined2 *)(iVar14 + 0x3c) = 9;\n      iVar14 = FUN_0002857c(iVar11,piVar3 + 0xe);\n      if (iVar14 != 0) {\n        if ((piVar3[0xc] & 0x204U) == 0) {\n          iVar10 = FUN_00028630(piVar3[8],piVar3[0xc],\n                                PTR_s_ore_than_one_of__i___f___n__only_00043128 + 0xc4c);\n          piVar3[7] = iVar10;\n          if (iVar10 < 0) {\n            piVar3[0xc] = piVar3[0xc] | 4;\n          }\n        }\n        i_ring_init(piVar3 + 0xf,0xffffffff);\n        return piVar3;\n      }\n    }\nLAB_00029aac:\n    FUN_00027ddc(iVar9);\n    (*(code *)PTR_free_0004363c)(iVar10);\n  }\n  else {\n    pcVar15 = (code *)(PTR_LAB_0004326c + 0x7d20);\n    iVar10 = FUN_00027d20(piVar3,PTR_s_ore_than_one_of__i___f___n__only_00043128 + 0x44c,0);\n    if (iVar10 != 0) {\n      iVar14 = *param_1;\n      *(undefined4 *)(iVar10 + 0x30) = 0xffffffff;\n      *(undefined4 *)(iVar10 + 0x38) = 0xffffffff;\n      if (param_3 == 0) {\n        uVar12 = 1;\n      }\n      else {\n        uVar12 = (uint)(piVar3[0xc] << 0x15) >> 0x1f;\n      }\n      if (iVar14 == 0) goto LAB_00029b78;\n      local_30 = 0;\n      uVar4 = 0;\n      pcVar5 = (code *)(PTR_s_ore_than_one_of__i___f___n__only_00043128 + -0x7d80);\n      iVar11 = 0;\n      do {\n        uVar6 = (*(code *)PTR_strlen_00043564)(iVar14);\n        if ((((param_2 & 0x1000) == 0) && (2 < uVar6)) &&\n           (iVar9 = iVar14 + uVar6, *(char *)(iVar9 + -1) == '/')) {\n          do {\n            if (*(char *)(iVar9 + -2) != '/') break;\n            uVar6 = uVar6 - 1;\n            iVar9 = iVar14 + uVar6;\n          } while (uVar6 != 1);\n        }\n        iVar14 = (*pcVar15)(piVar3,iVar14,uVar6);\n        iVar9 = iVar11;\n        if (iVar14 == 0) goto LAB_00029aac;\n        *(undefined4 *)(iVar14 + 0x30) = 0;\n        *(int *)(iVar14 + 4) = iVar10;\n        *(int *)(iVar14 + 0x18) = iVar14 + 0xe8;\n        iVar9 = iVar14;\n        if (uVar12 == 0) {\n          uVar8 = (*pcVar5)(piVar3[8],piVar3 + 0xc,iVar14,0);\n          *(undefined2 *)(iVar14 + 0x3c) = uVar8;\n          if (param_3 != 0) goto LAB_00029978;\n          *(undefined4 *)(iVar14 + 8) = 0;\n          if (iVar11 != 0) goto LAB_00029b5c;\n        }\n        else if (iVar11 == 0) {\n          uVar8 = (*pcVar5)(piVar3[8],piVar3 + 0xc,iVar14,0);\n          *(undefined2 *)(iVar14 + 0x3c) = uVar8;\n          if (param_3 != 0) goto LAB_00029978;\n          *(undefined4 *)(iVar14 + 8) = 0;\n        }\n        else {\n          *(undefined4 *)(iVar14 + 0x84) = 2;\n          *(undefined4 *)(iVar14 + 0x80) = 0;\n          *(undefined2 *)(iVar14 + 0x3c) = 0xb;\n          if (param_3 == 0) {\n            *(undefined4 *)(iVar14 + 8) = 0;\nLAB_00029b5c:\n            *(int *)(local_30 + 8) = iVar14;\n            iVar9 = iVar11;\n          }\n          else {\nLAB_00029978:\n            *(int *)(iVar14 + 8) = iVar11;\n            iVar14 = local_30;\n          }\n        }\n        local_30 = iVar14;\n        param_1 = param_1 + 1;\n        iVar14 = *param_1;\n        uVar4 = uVar4 + 1;\n        iVar11 = iVar9;\n      } while (iVar14 != 0);\n      if ((param_3 != 0) && (1 < uVar4)) {\n        iVar9 = FUN_00027be4(piVar3,iVar9,uVar4);\n      }\n      goto LAB_000299c0;\n    }\n  }\n  (*(code *)PTR_free_0004363c)(piVar3[6]);\nLAB_00029ae0:\n  (*(code *)PTR_free_0004363c)(piVar3);\n  return (int *)0x0;\n}" { (declaration "undefined *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "undefined *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "int *piVar3;" primitive_type (pointer_declarator "*piVar3" * identifier) ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "code *pcVar5;" type_identifier (pointer_declarator "*pcVar5" * identifier) ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "undefined4 *puVar7;" type_identifier (pointer_declarator "*puVar7" * identifier) ;) (declaration "undefined2 uVar8;" type_identifier identifier ;) (declaration "int iVar9;" primitive_type identifier ;) (declaration "int iVar10;" primitive_type identifier ;) (declaration "int iVar11;" primitive_type identifier ;) (declaration "uint uVar12;" type_identifier identifier ;) (declaration "int *piVar13;" primitive_type (pointer_declarator "*piVar13" * identifier) ;) (declaration "int iVar14;" primitive_type identifier ;) (declaration "code *pcVar15;" type_identifier (pointer_declarator "*pcVar15" * identifier) ;) (declaration "code *local_3c;" type_identifier (pointer_declarator "*local_3c" * identifier) ;) (declaration "int local_30;" primitive_type identifier ;) (if_statement "if ((((param_2 & 0xffffe000) != 0) || ((param_2 & 0x204) == 0x204)) || ((param_2 & 0x12) == 0)) {\n    puVar7 = (undefined4 *)(*(code *)PTR___errno_location_00043520)();\n    *puVar7 = 0x16;\n    return (int *)0x0;\n  }" if (parenthesized_expression "((((param_2 & 0xffffe000) != 0) || ((param_2 & 0x204) == 0x204)) || ((param_2 & 0x12) == 0))" ( (binary_expression "(((param_2 & 0xffffe000) != 0) || ((param_2 & 0x204) == 0x204)) || ((param_2 & 0x12) == 0)" (parenthesized_expression "(((param_2 & 0xffffe000) != 0) || ((param_2 & 0x204) == 0x204))" ( (binary_expression "((param_2 & 0xffffe000) != 0) || ((param_2 & 0x204) == 0x204)" (parenthesized_expression "((param_2 & 0xffffe000) != 0)" ( (binary_expression "(param_2 & 0xffffe000) != 0" (parenthesized_expression "(param_2 & 0xffffe000)" ( (binary_expression "param_2 & 0xffffe000" identifier & number_literal) )) != number_literal) )) || (parenthesized_expression "((param_2 & 0x204) == 0x204)" ( (binary_expression "(param_2 & 0x204) == 0x204" (parenthesized_expression "(param_2 & 0x204)" ( (binary_expression "param_2 & 0x204" identifier & number_literal) )) == number_literal) ))) )) || (parenthesized_expression "((param_2 & 0x12) == 0)" ( (binary_expression "(param_2 & 0x12) == 0" (parenthesized_expression "(param_2 & 0x12)" ( (binary_expression "param_2 & 0x12" identifier & number_literal) )) == number_literal) ))) )) (compound_statement "{\n    puVar7 = (undefined4 *)(*(code *)PTR___errno_location_00043520)();\n    *puVar7 = 0x16;\n    return (int *)0x0;\n  }" { (expression_statement "puVar7 = (undefined4 *)(*(code *)PTR___errno_location_00043520)();" (assignment_expression "puVar7 = (undefined4 *)(*(code *)PTR___errno_location_00043520)()" identifier = (cast_expression "(undefined4 *)(*(code *)PTR___errno_location_00043520)()" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR___errno_location_00043520)()" (parenthesized_expression "(*(code *)PTR___errno_location_00043520)" ( (pointer_expression "*(code *)PTR___errno_location_00043520" * (cast_expression "(code *)PTR___errno_location_00043520" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))))) ;) (expression_statement "*puVar7 = 0x16;" (assignment_expression "*puVar7 = 0x16" (pointer_expression "*puVar7" * identifier) = number_literal) ;) (return_statement "return (int *)0x0;" return (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (expression_statement "piVar3 = (int *)(*(code *)PTR_calloc_0004341c)(0x60,1);" (assignment_expression "piVar3 = (int *)(*(code *)PTR_calloc_0004341c)(0x60,1)" identifier = (cast_expression "(int *)(*(code *)PTR_calloc_0004341c)(0x60,1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR_calloc_0004341c)(0x60,1)" (parenthesized_expression "(*(code *)PTR_calloc_0004341c)" ( (pointer_expression "*(code *)PTR_calloc_0004341c" * (cast_expression "(code *)PTR_calloc_0004341c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(0x60,1)" ( number_literal , number_literal ))))) ;) (if_statement "if (piVar3 == (int *)0x0) {\n    return (int *)0x0;\n  }" if (parenthesized_expression "(piVar3 == (int *)0x0)" ( (binary_expression "piVar3 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    return (int *)0x0;\n  }" { (return_statement "return (int *)0x0;" return (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (expression_statement "piVar3[0xb] = param_3;" (assignment_expression "piVar3[0xb] = param_3" (subscript_expression "piVar3[0xb]" identifier [ number_literal ]) = identifier) ;) (if_statement "if ((param_2 & 2) == 0) {\n    piVar3[0xc] = param_2;\n  }\n  else {\n    piVar3[0xc] = param_2 & 0xfffffdff | 4;\n  }" if (parenthesized_expression "((param_2 & 2) == 0)" ( (binary_expression "(param_2 & 2) == 0" (parenthesized_expression "(param_2 & 2)" ( (binary_expression "param_2 & 2" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n    piVar3[0xc] = param_2;\n  }" { (expression_statement "piVar3[0xc] = param_2;" (assignment_expression "piVar3[0xc] = param_2" (subscript_expression "piVar3[0xc]" identifier [ number_literal ]) = identifier) ;) }) (else_clause "else {\n    piVar3[0xc] = param_2 & 0xfffffdff | 4;\n  }" else (compound_statement "{\n    piVar3[0xc] = param_2 & 0xfffffdff | 4;\n  }" { (expression_statement "piVar3[0xc] = param_2 & 0xfffffdff | 4;" (assignment_expression "piVar3[0xc] = param_2 & 0xfffffdff | 4" (subscript_expression "piVar3[0xc]" identifier [ number_literal ]) = (binary_expression "param_2 & 0xfffffdff | 4" (binary_expression "param_2 & 0xfffffdff" identifier & number_literal) | number_literal)) ;) }))) (expression_statement "iVar10 = *param_1;" (assignment_expression "iVar10 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "piVar3[8] = -100;" (assignment_expression "piVar3[8] = -100" (subscript_expression "piVar3[8]" identifier [ number_literal ]) = number_literal) ;) (if_statement "if (iVar10 == 0) {\n    uVar12 = 0x1000;\n  }\n  else {\n    uVar12 = 0;\n    piVar13 = param_1;\n    do {\n      piVar13 = piVar13 + 1;\n      uVar4 = (*(code *)PTR_strlen_00043564)();\n      if (uVar12 < uVar4) {\n        uVar12 = uVar4;\n      }\n    } while (*piVar13 != 0);\n    uVar12 = uVar12 + 1;\n    if (uVar12 < 0x1000) {\n      uVar12 = 0x1000;\n    }\n  }" if (parenthesized_expression "(iVar10 == 0)" ( (binary_expression "iVar10 == 0" identifier == number_literal) )) (compound_statement "{\n    uVar12 = 0x1000;\n  }" { (expression_statement "uVar12 = 0x1000;" (assignment_expression "uVar12 = 0x1000" identifier = number_literal) ;) }) (else_clause "else {\n    uVar12 = 0;\n    piVar13 = param_1;\n    do {\n      piVar13 = piVar13 + 1;\n      uVar4 = (*(code *)PTR_strlen_00043564)();\n      if (uVar12 < uVar4) {\n        uVar12 = uVar4;\n      }\n    } while (*piVar13 != 0);\n    uVar12 = uVar12 + 1;\n    if (uVar12 < 0x1000) {\n      uVar12 = 0x1000;\n    }\n  }" else (compound_statement "{\n    uVar12 = 0;\n    piVar13 = param_1;\n    do {\n      piVar13 = piVar13 + 1;\n      uVar4 = (*(code *)PTR_strlen_00043564)();\n      if (uVar12 < uVar4) {\n        uVar12 = uVar4;\n      }\n    } while (*piVar13 != 0);\n    uVar12 = uVar12 + 1;\n    if (uVar12 < 0x1000) {\n      uVar12 = 0x1000;\n    }\n  }" { (expression_statement "uVar12 = 0;" (assignment_expression "uVar12 = 0" identifier = number_literal) ;) (expression_statement "piVar13 = param_1;" (assignment_expression "piVar13 = param_1" identifier = identifier) ;) (do_statement "do {\n      piVar13 = piVar13 + 1;\n      uVar4 = (*(code *)PTR_strlen_00043564)();\n      if (uVar12 < uVar4) {\n        uVar12 = uVar4;\n      }\n    } while (*piVar13 != 0);" do (compound_statement "{\n      piVar13 = piVar13 + 1;\n      uVar4 = (*(code *)PTR_strlen_00043564)();\n      if (uVar12 < uVar4) {\n        uVar12 = uVar4;\n      }\n    }" { (expression_statement "piVar13 = piVar13 + 1;" (assignment_expression "piVar13 = piVar13 + 1" identifier = (binary_expression "piVar13 + 1" identifier + number_literal)) ;) (expression_statement "uVar4 = (*(code *)PTR_strlen_00043564)();" (assignment_expression "uVar4 = (*(code *)PTR_strlen_00043564)()" identifier = (call_expression "(*(code *)PTR_strlen_00043564)()" (parenthesized_expression "(*(code *)PTR_strlen_00043564)" ( (pointer_expression "*(code *)PTR_strlen_00043564" * (cast_expression "(code *)PTR_strlen_00043564" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( )))) ;) (if_statement "if (uVar12 < uVar4) {\n        uVar12 = uVar4;\n      }" if (parenthesized_expression "(uVar12 < uVar4)" ( (binary_expression "uVar12 < uVar4" identifier < identifier) )) (compound_statement "{\n        uVar12 = uVar4;\n      }" { (expression_statement "uVar12 = uVar4;" (assignment_expression "uVar12 = uVar4" identifier = identifier) ;) })) }) while (parenthesized_expression "(*piVar13 != 0)" ( (binary_expression "*piVar13 != 0" (pointer_expression "*piVar13" * identifier) != number_literal) )) ;) (expression_statement "uVar12 = uVar12 + 1;" (assignment_expression "uVar12 = uVar12 + 1" identifier = (binary_expression "uVar12 + 1" identifier + number_literal)) ;) (if_statement "if (uVar12 < 0x1000) {\n      uVar12 = 0x1000;\n    }" if (parenthesized_expression "(uVar12 < 0x1000)" ( (binary_expression "uVar12 < 0x1000" identifier < number_literal) )) (compound_statement "{\n      uVar12 = 0x1000;\n    }" { (expression_statement "uVar12 = 0x1000;" (assignment_expression "uVar12 = 0x1000" identifier = number_literal) ;) })) }))) (expression_statement "iVar10 = FUN_000284b8(piVar3 + 6,piVar3 + 9,uVar12);" (assignment_expression "iVar10 = FUN_000284b8(piVar3 + 6,piVar3 + 9,uVar12)" identifier = (call_expression "FUN_000284b8(piVar3 + 6,piVar3 + 9,uVar12)" identifier (argument_list "(piVar3 + 6,piVar3 + 9,uVar12)" ( (binary_expression "piVar3 + 6" identifier + number_literal) , (binary_expression "piVar3 + 9" identifier + number_literal) , identifier )))) ;) (expression_statement "puVar2 = PTR_LAB_0004326c;" (assignment_expression "puVar2 = PTR_LAB_0004326c" identifier = identifier) ;) (expression_statement "puVar1 = PTR_s_ore_than_one_of__i___f___n__only_00043128;" (assignment_expression "puVar1 = PTR_s_ore_than_one_of__i___f___n__only_00043128" identifier = identifier) ;) (if_statement "if (iVar10 == 0) goto LAB_00029ae0;" if (parenthesized_expression "(iVar10 == 0)" ( (binary_expression "iVar10 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00029ae0;" goto statement_identifier ;)) (if_statement "if (*param_1 == 0) {\n    iVar10 = 0;\nLAB_00029b78:\n    iVar9 = 0;\nLAB_000299c0:\n    local_3c = (code *)(puVar2 + 0x7d20);\n    iVar14 = (*local_3c)(piVar3,puVar1 + 0x44c,0);\n    *piVar3 = iVar14;\n    if (iVar14 != 0) {\n      *(int *)(iVar14 + 8) = iVar9;\n      *(undefined4 *)(iVar14 + 0x30) = 1;\n      iVar11 = piVar3[0xc];\n      *(undefined2 *)(iVar14 + 0x3c) = 9;\n      iVar14 = FUN_0002857c(iVar11,piVar3 + 0xe);\n      if (iVar14 != 0) {\n        if ((piVar3[0xc] & 0x204U) == 0) {\n          iVar10 = FUN_00028630(piVar3[8],piVar3[0xc],\n                                PTR_s_ore_than_one_of__i___f___n__only_00043128 + 0xc4c);\n          piVar3[7] = iVar10;\n          if (iVar10 < 0) {\n            piVar3[0xc] = piVar3[0xc] | 4;\n          }\n        }\n        i_ring_init(piVar3 + 0xf,0xffffffff);\n        return piVar3;\n      }\n    }\nLAB_00029aac:\n    FUN_00027ddc(iVar9);\n    (*(code *)PTR_free_0004363c)(iVar10);\n  }\n  else {\n    pcVar15 = (code *)(PTR_LAB_0004326c + 0x7d20);\n    iVar10 = FUN_00027d20(piVar3,PTR_s_ore_than_one_of__i___f___n__only_00043128 + 0x44c,0);\n    if (iVar10 != 0) {\n      iVar14 = *param_1;\n      *(undefined4 *)(iVar10 + 0x30) = 0xffffffff;\n      *(undefined4 *)(iVar10 + 0x38) = 0xffffffff;\n      if (param_3 == 0) {\n        uVar12 = 1;\n      }\n      else {\n        uVar12 = (uint)(piVar3[0xc] << 0x15) >> 0x1f;\n      }\n      if (iVar14 == 0) goto LAB_00029b78;\n      local_30 = 0;\n      uVar4 = 0;\n      pcVar5 = (code *)(PTR_s_ore_than_one_of__i___f___n__only_00043128 + -0x7d80);\n      iVar11 = 0;\n      do {\n        uVar6 = (*(code *)PTR_strlen_00043564)(iVar14);\n        if ((((param_2 & 0x1000) == 0) && (2 < uVar6)) &&\n           (iVar9 = iVar14 + uVar6, *(char *)(iVar9 + -1) == '/')) {\n          do {\n            if (*(char *)(iVar9 + -2) != '/') break;\n            uVar6 = uVar6 - 1;\n            iVar9 = iVar14 + uVar6;\n          } while (uVar6 != 1);\n        }\n        iVar14 = (*pcVar15)(piVar3,iVar14,uVar6);\n        iVar9 = iVar11;\n        if (iVar14 == 0) goto LAB_00029aac;\n        *(undefined4 *)(iVar14 + 0x30) = 0;\n        *(int *)(iVar14 + 4) = iVar10;\n        *(int *)(iVar14 + 0x18) = iVar14 + 0xe8;\n        iVar9 = iVar14;\n        if (uVar12 == 0) {\n          uVar8 = (*pcVar5)(piVar3[8],piVar3 + 0xc,iVar14,0);\n          *(undefined2 *)(iVar14 + 0x3c) = uVar8;\n          if (param_3 != 0) goto LAB_00029978;\n          *(undefined4 *)(iVar14 + 8) = 0;\n          if (iVar11 != 0) goto LAB_00029b5c;\n        }\n        else if (iVar11 == 0) {\n          uVar8 = (*pcVar5)(piVar3[8],piVar3 + 0xc,iVar14,0);\n          *(undefined2 *)(iVar14 + 0x3c) = uVar8;\n          if (param_3 != 0) goto LAB_00029978;\n          *(undefined4 *)(iVar14 + 8) = 0;\n        }\n        else {\n          *(undefined4 *)(iVar14 + 0x84) = 2;\n          *(undefined4 *)(iVar14 + 0x80) = 0;\n          *(undefined2 *)(iVar14 + 0x3c) = 0xb;\n          if (param_3 == 0) {\n            *(undefined4 *)(iVar14 + 8) = 0;\nLAB_00029b5c:\n            *(int *)(local_30 + 8) = iVar14;\n            iVar9 = iVar11;\n          }\n          else {\nLAB_00029978:\n            *(int *)(iVar14 + 8) = iVar11;\n            iVar14 = local_30;\n          }\n        }\n        local_30 = iVar14;\n        param_1 = param_1 + 1;\n        iVar14 = *param_1;\n        uVar4 = uVar4 + 1;\n        iVar11 = iVar9;\n      } while (iVar14 != 0);\n      if ((param_3 != 0) && (1 < uVar4)) {\n        iVar9 = FUN_00027be4(piVar3,iVar9,uVar4);\n      }\n      goto LAB_000299c0;\n    }\n  }" if (parenthesized_expression "(*param_1 == 0)" ( (binary_expression "*param_1 == 0" (pointer_expression "*param_1" * identifier) == number_literal) )) (compound_statement "{\n    iVar10 = 0;\nLAB_00029b78:\n    iVar9 = 0;\nLAB_000299c0:\n    local_3c = (code *)(puVar2 + 0x7d20);\n    iVar14 = (*local_3c)(piVar3,puVar1 + 0x44c,0);\n    *piVar3 = iVar14;\n    if (iVar14 != 0) {\n      *(int *)(iVar14 + 8) = iVar9;\n      *(undefined4 *)(iVar14 + 0x30) = 1;\n      iVar11 = piVar3[0xc];\n      *(undefined2 *)(iVar14 + 0x3c) = 9;\n      iVar14 = FUN_0002857c(iVar11,piVar3 + 0xe);\n      if (iVar14 != 0) {\n        if ((piVar3[0xc] & 0x204U) == 0) {\n          iVar10 = FUN_00028630(piVar3[8],piVar3[0xc],\n                                PTR_s_ore_than_one_of__i___f___n__only_00043128 + 0xc4c);\n          piVar3[7] = iVar10;\n          if (iVar10 < 0) {\n            piVar3[0xc] = piVar3[0xc] | 4;\n          }\n        }\n        i_ring_init(piVar3 + 0xf,0xffffffff);\n        return piVar3;\n      }\n    }\nLAB_00029aac:\n    FUN_00027ddc(iVar9);\n    (*(code *)PTR_free_0004363c)(iVar10);\n  }" { (expression_statement "iVar10 = 0;" (assignment_expression "iVar10 = 0" identifier = number_literal) ;) (labeled_statement "LAB_00029b78:\n    iVar9 = 0;" statement_identifier : (expression_statement "iVar9 = 0;" (assignment_expression "iVar9 = 0" identifier = number_literal) ;)) (labeled_statement "LAB_000299c0:\n    local_3c = (code *)(puVar2 + 0x7d20);" statement_identifier : (expression_statement "local_3c = (code *)(puVar2 + 0x7d20);" (assignment_expression "local_3c = (code *)(puVar2 + 0x7d20)" identifier = (cast_expression "(code *)(puVar2 + 0x7d20)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 0x7d20)" ( (binary_expression "puVar2 + 0x7d20" identifier + number_literal) )))) ;)) (expression_statement "iVar14 = (*local_3c)(piVar3,puVar1 + 0x44c,0);" (assignment_expression "iVar14 = (*local_3c)(piVar3,puVar1 + 0x44c,0)" identifier = (call_expression "(*local_3c)(piVar3,puVar1 + 0x44c,0)" (parenthesized_expression "(*local_3c)" ( (pointer_expression "*local_3c" * identifier) )) (argument_list "(piVar3,puVar1 + 0x44c,0)" ( identifier , (binary_expression "puVar1 + 0x44c" identifier + number_literal) , number_literal )))) ;) (expression_statement "*piVar3 = iVar14;" (assignment_expression "*piVar3 = iVar14" (pointer_expression "*piVar3" * identifier) = identifier) ;) (if_statement "if (iVar14 != 0) {\n      *(int *)(iVar14 + 8) = iVar9;\n      *(undefined4 *)(iVar14 + 0x30) = 1;\n      iVar11 = piVar3[0xc];\n      *(undefined2 *)(iVar14 + 0x3c) = 9;\n      iVar14 = FUN_0002857c(iVar11,piVar3 + 0xe);\n      if (iVar14 != 0) {\n        if ((piVar3[0xc] & 0x204U) == 0) {\n          iVar10 = FUN_00028630(piVar3[8],piVar3[0xc],\n                                PTR_s_ore_than_one_of__i___f___n__only_00043128 + 0xc4c);\n          piVar3[7] = iVar10;\n          if (iVar10 < 0) {\n            piVar3[0xc] = piVar3[0xc] | 4;\n          }\n        }\n        i_ring_init(piVar3 + 0xf,0xffffffff);\n        return piVar3;\n      }\n    }" if (parenthesized_expression "(iVar14 != 0)" ( (binary_expression "iVar14 != 0" identifier != number_literal) )) (compound_statement "{\n      *(int *)(iVar14 + 8) = iVar9;\n      *(undefined4 *)(iVar14 + 0x30) = 1;\n      iVar11 = piVar3[0xc];\n      *(undefined2 *)(iVar14 + 0x3c) = 9;\n      iVar14 = FUN_0002857c(iVar11,piVar3 + 0xe);\n      if (iVar14 != 0) {\n        if ((piVar3[0xc] & 0x204U) == 0) {\n          iVar10 = FUN_00028630(piVar3[8],piVar3[0xc],\n                                PTR_s_ore_than_one_of__i___f___n__only_00043128 + 0xc4c);\n          piVar3[7] = iVar10;\n          if (iVar10 < 0) {\n            piVar3[0xc] = piVar3[0xc] | 4;\n          }\n        }\n        i_ring_init(piVar3 + 0xf,0xffffffff);\n        return piVar3;\n      }\n    }" { (expression_statement "*(int *)(iVar14 + 8) = iVar9;" (assignment_expression "*(int *)(iVar14 + 8) = iVar9" (pointer_expression "*(int *)(iVar14 + 8)" * (cast_expression "(int *)(iVar14 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar14 + 8)" ( (binary_expression "iVar14 + 8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(iVar14 + 0x30) = 1;" (assignment_expression "*(undefined4 *)(iVar14 + 0x30) = 1" (pointer_expression "*(undefined4 *)(iVar14 + 0x30)" * (cast_expression "(undefined4 *)(iVar14 + 0x30)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar14 + 0x30)" ( (binary_expression "iVar14 + 0x30" identifier + number_literal) )))) = number_literal) ;) (expression_statement "iVar11 = piVar3[0xc];" (assignment_expression "iVar11 = piVar3[0xc]" identifier = (subscript_expression "piVar3[0xc]" identifier [ number_literal ])) ;) (expression_statement "*(undefined2 *)(iVar14 + 0x3c) = 9;" (assignment_expression "*(undefined2 *)(iVar14 + 0x3c) = 9" (pointer_expression "*(undefined2 *)(iVar14 + 0x3c)" * (cast_expression "(undefined2 *)(iVar14 + 0x3c)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar14 + 0x3c)" ( (binary_expression "iVar14 + 0x3c" identifier + number_literal) )))) = number_literal) ;) (expression_statement "iVar14 = FUN_0002857c(iVar11,piVar3 + 0xe);" (assignment_expression "iVar14 = FUN_0002857c(iVar11,piVar3 + 0xe)" identifier = (call_expression "FUN_0002857c(iVar11,piVar3 + 0xe)" identifier (argument_list "(iVar11,piVar3 + 0xe)" ( identifier , (binary_expression "piVar3 + 0xe" identifier + number_literal) )))) ;) (if_statement "if (iVar14 != 0) {\n        if ((piVar3[0xc] & 0x204U) == 0) {\n          iVar10 = FUN_00028630(piVar3[8],piVar3[0xc],\n                                PTR_s_ore_than_one_of__i___f___n__only_00043128 + 0xc4c);\n          piVar3[7] = iVar10;\n          if (iVar10 < 0) {\n            piVar3[0xc] = piVar3[0xc] | 4;\n          }\n        }\n        i_ring_init(piVar3 + 0xf,0xffffffff);\n        return piVar3;\n      }" if (parenthesized_expression "(iVar14 != 0)" ( (binary_expression "iVar14 != 0" identifier != number_literal) )) (compound_statement "{\n        if ((piVar3[0xc] & 0x204U) == 0) {\n          iVar10 = FUN_00028630(piVar3[8],piVar3[0xc],\n                                PTR_s_ore_than_one_of__i___f___n__only_00043128 + 0xc4c);\n          piVar3[7] = iVar10;\n          if (iVar10 < 0) {\n            piVar3[0xc] = piVar3[0xc] | 4;\n          }\n        }\n        i_ring_init(piVar3 + 0xf,0xffffffff);\n        return piVar3;\n      }" { (if_statement "if ((piVar3[0xc] & 0x204U) == 0) {\n          iVar10 = FUN_00028630(piVar3[8],piVar3[0xc],\n                                PTR_s_ore_than_one_of__i___f___n__only_00043128 + 0xc4c);\n          piVar3[7] = iVar10;\n          if (iVar10 < 0) {\n            piVar3[0xc] = piVar3[0xc] | 4;\n          }\n        }" if (parenthesized_expression "((piVar3[0xc] & 0x204U) == 0)" ( (binary_expression "(piVar3[0xc] & 0x204U) == 0" (parenthesized_expression "(piVar3[0xc] & 0x204U)" ( (binary_expression "piVar3[0xc] & 0x204U" (subscript_expression "piVar3[0xc]" identifier [ number_literal ]) & number_literal) )) == number_literal) )) (compound_statement "{\n          iVar10 = FUN_00028630(piVar3[8],piVar3[0xc],\n                                PTR_s_ore_than_one_of__i___f___n__only_00043128 + 0xc4c);\n          piVar3[7] = iVar10;\n          if (iVar10 < 0) {\n            piVar3[0xc] = piVar3[0xc] | 4;\n          }\n        }" { (expression_statement "iVar10 = FUN_00028630(piVar3[8],piVar3[0xc],\n                                PTR_s_ore_than_one_of__i___f___n__only_00043128 + 0xc4c);" (assignment_expression "iVar10 = FUN_00028630(piVar3[8],piVar3[0xc],\n                                PTR_s_ore_than_one_of__i___f___n__only_00043128 + 0xc4c)" identifier = (call_expression "FUN_00028630(piVar3[8],piVar3[0xc],\n                                PTR_s_ore_than_one_of__i___f___n__only_00043128 + 0xc4c)" identifier (argument_list "(piVar3[8],piVar3[0xc],\n                                PTR_s_ore_than_one_of__i___f___n__only_00043128 + 0xc4c)" ( (subscript_expression "piVar3[8]" identifier [ number_literal ]) , (subscript_expression "piVar3[0xc]" identifier [ number_literal ]) , (binary_expression "PTR_s_ore_than_one_of__i___f___n__only_00043128 + 0xc4c" identifier + number_literal) )))) ;) (expression_statement "piVar3[7] = iVar10;" (assignment_expression "piVar3[7] = iVar10" (subscript_expression "piVar3[7]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (iVar10 < 0) {\n            piVar3[0xc] = piVar3[0xc] | 4;\n          }" if (parenthesized_expression "(iVar10 < 0)" ( (binary_expression "iVar10 < 0" identifier < number_literal) )) (compound_statement "{\n            piVar3[0xc] = piVar3[0xc] | 4;\n          }" { (expression_statement "piVar3[0xc] = piVar3[0xc] | 4;" (assignment_expression "piVar3[0xc] = piVar3[0xc] | 4" (subscript_expression "piVar3[0xc]" identifier [ number_literal ]) = (binary_expression "piVar3[0xc] | 4" (subscript_expression "piVar3[0xc]" identifier [ number_literal ]) | number_literal)) ;) })) })) (expression_statement "i_ring_init(piVar3 + 0xf,0xffffffff);" (call_expression "i_ring_init(piVar3 + 0xf,0xffffffff)" identifier (argument_list "(piVar3 + 0xf,0xffffffff)" ( (binary_expression "piVar3 + 0xf" identifier + number_literal) , number_literal ))) ;) (return_statement "return piVar3;" return identifier ;) })) })) (labeled_statement "LAB_00029aac:\n    FUN_00027ddc(iVar9);" statement_identifier : (expression_statement "FUN_00027ddc(iVar9);" (call_expression "FUN_00027ddc(iVar9)" identifier (argument_list "(iVar9)" ( identifier ))) ;)) (expression_statement "(*(code *)PTR_free_0004363c)(iVar10);" (call_expression "(*(code *)PTR_free_0004363c)(iVar10)" (parenthesized_expression "(*(code *)PTR_free_0004363c)" ( (pointer_expression "*(code *)PTR_free_0004363c" * (cast_expression "(code *)PTR_free_0004363c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(iVar10)" ( identifier ))) ;) }) (else_clause "else {\n    pcVar15 = (code *)(PTR_LAB_0004326c + 0x7d20);\n    iVar10 = FUN_00027d20(piVar3,PTR_s_ore_than_one_of__i___f___n__only_00043128 + 0x44c,0);\n    if (iVar10 != 0) {\n      iVar14 = *param_1;\n      *(undefined4 *)(iVar10 + 0x30) = 0xffffffff;\n      *(undefined4 *)(iVar10 + 0x38) = 0xffffffff;\n      if (param_3 == 0) {\n        uVar12 = 1;\n      }\n      else {\n        uVar12 = (uint)(piVar3[0xc] << 0x15) >> 0x1f;\n      }\n      if (iVar14 == 0) goto LAB_00029b78;\n      local_30 = 0;\n      uVar4 = 0;\n      pcVar5 = (code *)(PTR_s_ore_than_one_of__i___f___n__only_00043128 + -0x7d80);\n      iVar11 = 0;\n      do {\n        uVar6 = (*(code *)PTR_strlen_00043564)(iVar14);\n        if ((((param_2 & 0x1000) == 0) && (2 < uVar6)) &&\n           (iVar9 = iVar14 + uVar6, *(char *)(iVar9 + -1) == '/')) {\n          do {\n            if (*(char *)(iVar9 + -2) != '/') break;\n            uVar6 = uVar6 - 1;\n            iVar9 = iVar14 + uVar6;\n          } while (uVar6 != 1);\n        }\n        iVar14 = (*pcVar15)(piVar3,iVar14,uVar6);\n        iVar9 = iVar11;\n        if (iVar14 == 0) goto LAB_00029aac;\n        *(undefined4 *)(iVar14 + 0x30) = 0;\n        *(int *)(iVar14 + 4) = iVar10;\n        *(int *)(iVar14 + 0x18) = iVar14 + 0xe8;\n        iVar9 = iVar14;\n        if (uVar12 == 0) {\n          uVar8 = (*pcVar5)(piVar3[8],piVar3 + 0xc,iVar14,0);\n          *(undefined2 *)(iVar14 + 0x3c) = uVar8;\n          if (param_3 != 0) goto LAB_00029978;\n          *(undefined4 *)(iVar14 + 8) = 0;\n          if (iVar11 != 0) goto LAB_00029b5c;\n        }\n        else if (iVar11 == 0) {\n          uVar8 = (*pcVar5)(piVar3[8],piVar3 + 0xc,iVar14,0);\n          *(undefined2 *)(iVar14 + 0x3c) = uVar8;\n          if (param_3 != 0) goto LAB_00029978;\n          *(undefined4 *)(iVar14 + 8) = 0;\n        }\n        else {\n          *(undefined4 *)(iVar14 + 0x84) = 2;\n          *(undefined4 *)(iVar14 + 0x80) = 0;\n          *(undefined2 *)(iVar14 + 0x3c) = 0xb;\n          if (param_3 == 0) {\n            *(undefined4 *)(iVar14 + 8) = 0;\nLAB_00029b5c:\n            *(int *)(local_30 + 8) = iVar14;\n            iVar9 = iVar11;\n          }\n          else {\nLAB_00029978:\n            *(int *)(iVar14 + 8) = iVar11;\n            iVar14 = local_30;\n          }\n        }\n        local_30 = iVar14;\n        param_1 = param_1 + 1;\n        iVar14 = *param_1;\n        uVar4 = uVar4 + 1;\n        iVar11 = iVar9;\n      } while (iVar14 != 0);\n      if ((param_3 != 0) && (1 < uVar4)) {\n        iVar9 = FUN_00027be4(piVar3,iVar9,uVar4);\n      }\n      goto LAB_000299c0;\n    }\n  }" else (compound_statement "{\n    pcVar15 = (code *)(PTR_LAB_0004326c + 0x7d20);\n    iVar10 = FUN_00027d20(piVar3,PTR_s_ore_than_one_of__i___f___n__only_00043128 + 0x44c,0);\n    if (iVar10 != 0) {\n      iVar14 = *param_1;\n      *(undefined4 *)(iVar10 + 0x30) = 0xffffffff;\n      *(undefined4 *)(iVar10 + 0x38) = 0xffffffff;\n      if (param_3 == 0) {\n        uVar12 = 1;\n      }\n      else {\n        uVar12 = (uint)(piVar3[0xc] << 0x15) >> 0x1f;\n      }\n      if (iVar14 == 0) goto LAB_00029b78;\n      local_30 = 0;\n      uVar4 = 0;\n      pcVar5 = (code *)(PTR_s_ore_than_one_of__i___f___n__only_00043128 + -0x7d80);\n      iVar11 = 0;\n      do {\n        uVar6 = (*(code *)PTR_strlen_00043564)(iVar14);\n        if ((((param_2 & 0x1000) == 0) && (2 < uVar6)) &&\n           (iVar9 = iVar14 + uVar6, *(char *)(iVar9 + -1) == '/')) {\n          do {\n            if (*(char *)(iVar9 + -2) != '/') break;\n            uVar6 = uVar6 - 1;\n            iVar9 = iVar14 + uVar6;\n          } while (uVar6 != 1);\n        }\n        iVar14 = (*pcVar15)(piVar3,iVar14,uVar6);\n        iVar9 = iVar11;\n        if (iVar14 == 0) goto LAB_00029aac;\n        *(undefined4 *)(iVar14 + 0x30) = 0;\n        *(int *)(iVar14 + 4) = iVar10;\n        *(int *)(iVar14 + 0x18) = iVar14 + 0xe8;\n        iVar9 = iVar14;\n        if (uVar12 == 0) {\n          uVar8 = (*pcVar5)(piVar3[8],piVar3 + 0xc,iVar14,0);\n          *(undefined2 *)(iVar14 + 0x3c) = uVar8;\n          if (param_3 != 0) goto LAB_00029978;\n          *(undefined4 *)(iVar14 + 8) = 0;\n          if (iVar11 != 0) goto LAB_00029b5c;\n        }\n        else if (iVar11 == 0) {\n          uVar8 = (*pcVar5)(piVar3[8],piVar3 + 0xc,iVar14,0);\n          *(undefined2 *)(iVar14 + 0x3c) = uVar8;\n          if (param_3 != 0) goto LAB_00029978;\n          *(undefined4 *)(iVar14 + 8) = 0;\n        }\n        else {\n          *(undefined4 *)(iVar14 + 0x84) = 2;\n          *(undefined4 *)(iVar14 + 0x80) = 0;\n          *(undefined2 *)(iVar14 + 0x3c) = 0xb;\n          if (param_3 == 0) {\n            *(undefined4 *)(iVar14 + 8) = 0;\nLAB_00029b5c:\n            *(int *)(local_30 + 8) = iVar14;\n            iVar9 = iVar11;\n          }\n          else {\nLAB_00029978:\n            *(int *)(iVar14 + 8) = iVar11;\n            iVar14 = local_30;\n          }\n        }\n        local_30 = iVar14;\n        param_1 = param_1 + 1;\n        iVar14 = *param_1;\n        uVar4 = uVar4 + 1;\n        iVar11 = iVar9;\n      } while (iVar14 != 0);\n      if ((param_3 != 0) && (1 < uVar4)) {\n        iVar9 = FUN_00027be4(piVar3,iVar9,uVar4);\n      }\n      goto LAB_000299c0;\n    }\n  }" { (expression_statement "pcVar15 = (code *)(PTR_LAB_0004326c + 0x7d20);" (assignment_expression "pcVar15 = (code *)(PTR_LAB_0004326c + 0x7d20)" identifier = (cast_expression "(code *)(PTR_LAB_0004326c + 0x7d20)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_0004326c + 0x7d20)" ( (binary_expression "PTR_LAB_0004326c + 0x7d20" identifier + number_literal) )))) ;) (expression_statement "iVar10 = FUN_00027d20(piVar3,PTR_s_ore_than_one_of__i___f___n__only_00043128 + 0x44c,0);" (assignment_expression "iVar10 = FUN_00027d20(piVar3,PTR_s_ore_than_one_of__i___f___n__only_00043128 + 0x44c,0)" identifier = (call_expression "FUN_00027d20(piVar3,PTR_s_ore_than_one_of__i___f___n__only_00043128 + 0x44c,0)" identifier (argument_list "(piVar3,PTR_s_ore_than_one_of__i___f___n__only_00043128 + 0x44c,0)" ( identifier , (binary_expression "PTR_s_ore_than_one_of__i___f___n__only_00043128 + 0x44c" identifier + number_literal) , number_literal )))) ;) (if_statement "if (iVar10 != 0) {\n      iVar14 = *param_1;\n      *(undefined4 *)(iVar10 + 0x30) = 0xffffffff;\n      *(undefined4 *)(iVar10 + 0x38) = 0xffffffff;\n      if (param_3 == 0) {\n        uVar12 = 1;\n      }\n      else {\n        uVar12 = (uint)(piVar3[0xc] << 0x15) >> 0x1f;\n      }\n      if (iVar14 == 0) goto LAB_00029b78;\n      local_30 = 0;\n      uVar4 = 0;\n      pcVar5 = (code *)(PTR_s_ore_than_one_of__i___f___n__only_00043128 + -0x7d80);\n      iVar11 = 0;\n      do {\n        uVar6 = (*(code *)PTR_strlen_00043564)(iVar14);\n        if ((((param_2 & 0x1000) == 0) && (2 < uVar6)) &&\n           (iVar9 = iVar14 + uVar6, *(char *)(iVar9 + -1) == '/')) {\n          do {\n            if (*(char *)(iVar9 + -2) != '/') break;\n            uVar6 = uVar6 - 1;\n            iVar9 = iVar14 + uVar6;\n          } while (uVar6 != 1);\n        }\n        iVar14 = (*pcVar15)(piVar3,iVar14,uVar6);\n        iVar9 = iVar11;\n        if (iVar14 == 0) goto LAB_00029aac;\n        *(undefined4 *)(iVar14 + 0x30) = 0;\n        *(int *)(iVar14 + 4) = iVar10;\n        *(int *)(iVar14 + 0x18) = iVar14 + 0xe8;\n        iVar9 = iVar14;\n        if (uVar12 == 0) {\n          uVar8 = (*pcVar5)(piVar3[8],piVar3 + 0xc,iVar14,0);\n          *(undefined2 *)(iVar14 + 0x3c) = uVar8;\n          if (param_3 != 0) goto LAB_00029978;\n          *(undefined4 *)(iVar14 + 8) = 0;\n          if (iVar11 != 0) goto LAB_00029b5c;\n        }\n        else if (iVar11 == 0) {\n          uVar8 = (*pcVar5)(piVar3[8],piVar3 + 0xc,iVar14,0);\n          *(undefined2 *)(iVar14 + 0x3c) = uVar8;\n          if (param_3 != 0) goto LAB_00029978;\n          *(undefined4 *)(iVar14 + 8) = 0;\n        }\n        else {\n          *(undefined4 *)(iVar14 + 0x84) = 2;\n          *(undefined4 *)(iVar14 + 0x80) = 0;\n          *(undefined2 *)(iVar14 + 0x3c) = 0xb;\n          if (param_3 == 0) {\n            *(undefined4 *)(iVar14 + 8) = 0;\nLAB_00029b5c:\n            *(int *)(local_30 + 8) = iVar14;\n            iVar9 = iVar11;\n          }\n          else {\nLAB_00029978:\n            *(int *)(iVar14 + 8) = iVar11;\n            iVar14 = local_30;\n          }\n        }\n        local_30 = iVar14;\n        param_1 = param_1 + 1;\n        iVar14 = *param_1;\n        uVar4 = uVar4 + 1;\n        iVar11 = iVar9;\n      } while (iVar14 != 0);\n      if ((param_3 != 0) && (1 < uVar4)) {\n        iVar9 = FUN_00027be4(piVar3,iVar9,uVar4);\n      }\n      goto LAB_000299c0;\n    }" if (parenthesized_expression "(iVar10 != 0)" ( (binary_expression "iVar10 != 0" identifier != number_literal) )) (compound_statement "{\n      iVar14 = *param_1;\n      *(undefined4 *)(iVar10 + 0x30) = 0xffffffff;\n      *(undefined4 *)(iVar10 + 0x38) = 0xffffffff;\n      if (param_3 == 0) {\n        uVar12 = 1;\n      }\n      else {\n        uVar12 = (uint)(piVar3[0xc] << 0x15) >> 0x1f;\n      }\n      if (iVar14 == 0) goto LAB_00029b78;\n      local_30 = 0;\n      uVar4 = 0;\n      pcVar5 = (code *)(PTR_s_ore_than_one_of__i___f___n__only_00043128 + -0x7d80);\n      iVar11 = 0;\n      do {\n        uVar6 = (*(code *)PTR_strlen_00043564)(iVar14);\n        if ((((param_2 & 0x1000) == 0) && (2 < uVar6)) &&\n           (iVar9 = iVar14 + uVar6, *(char *)(iVar9 + -1) == '/')) {\n          do {\n            if (*(char *)(iVar9 + -2) != '/') break;\n            uVar6 = uVar6 - 1;\n            iVar9 = iVar14 + uVar6;\n          } while (uVar6 != 1);\n        }\n        iVar14 = (*pcVar15)(piVar3,iVar14,uVar6);\n        iVar9 = iVar11;\n        if (iVar14 == 0) goto LAB_00029aac;\n        *(undefined4 *)(iVar14 + 0x30) = 0;\n        *(int *)(iVar14 + 4) = iVar10;\n        *(int *)(iVar14 + 0x18) = iVar14 + 0xe8;\n        iVar9 = iVar14;\n        if (uVar12 == 0) {\n          uVar8 = (*pcVar5)(piVar3[8],piVar3 + 0xc,iVar14,0);\n          *(undefined2 *)(iVar14 + 0x3c) = uVar8;\n          if (param_3 != 0) goto LAB_00029978;\n          *(undefined4 *)(iVar14 + 8) = 0;\n          if (iVar11 != 0) goto LAB_00029b5c;\n        }\n        else if (iVar11 == 0) {\n          uVar8 = (*pcVar5)(piVar3[8],piVar3 + 0xc,iVar14,0);\n          *(undefined2 *)(iVar14 + 0x3c) = uVar8;\n          if (param_3 != 0) goto LAB_00029978;\n          *(undefined4 *)(iVar14 + 8) = 0;\n        }\n        else {\n          *(undefined4 *)(iVar14 + 0x84) = 2;\n          *(undefined4 *)(iVar14 + 0x80) = 0;\n          *(undefined2 *)(iVar14 + 0x3c) = 0xb;\n          if (param_3 == 0) {\n            *(undefined4 *)(iVar14 + 8) = 0;\nLAB_00029b5c:\n            *(int *)(local_30 + 8) = iVar14;\n            iVar9 = iVar11;\n          }\n          else {\nLAB_00029978:\n            *(int *)(iVar14 + 8) = iVar11;\n            iVar14 = local_30;\n          }\n        }\n        local_30 = iVar14;\n        param_1 = param_1 + 1;\n        iVar14 = *param_1;\n        uVar4 = uVar4 + 1;\n        iVar11 = iVar9;\n      } while (iVar14 != 0);\n      if ((param_3 != 0) && (1 < uVar4)) {\n        iVar9 = FUN_00027be4(piVar3,iVar9,uVar4);\n      }\n      goto LAB_000299c0;\n    }" { (expression_statement "iVar14 = *param_1;" (assignment_expression "iVar14 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "*(undefined4 *)(iVar10 + 0x30) = 0xffffffff;" (assignment_expression "*(undefined4 *)(iVar10 + 0x30) = 0xffffffff" (pointer_expression "*(undefined4 *)(iVar10 + 0x30)" * (cast_expression "(undefined4 *)(iVar10 + 0x30)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar10 + 0x30)" ( (binary_expression "iVar10 + 0x30" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(iVar10 + 0x38) = 0xffffffff;" (assignment_expression "*(undefined4 *)(iVar10 + 0x38) = 0xffffffff" (pointer_expression "*(undefined4 *)(iVar10 + 0x38)" * (cast_expression "(undefined4 *)(iVar10 + 0x38)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar10 + 0x38)" ( (binary_expression "iVar10 + 0x38" identifier + number_literal) )))) = number_literal) ;) (if_statement "if (param_3 == 0) {\n        uVar12 = 1;\n      }\n      else {\n        uVar12 = (uint)(piVar3[0xc] << 0x15) >> 0x1f;\n      }" if (parenthesized_expression "(param_3 == 0)" ( (binary_expression "param_3 == 0" identifier == number_literal) )) (compound_statement "{\n        uVar12 = 1;\n      }" { (expression_statement "uVar12 = 1;" (assignment_expression "uVar12 = 1" identifier = number_literal) ;) }) (else_clause "else {\n        uVar12 = (uint)(piVar3[0xc] << 0x15) >> 0x1f;\n      }" else (compound_statement "{\n        uVar12 = (uint)(piVar3[0xc] << 0x15) >> 0x1f;\n      }" { (expression_statement "uVar12 = (uint)(piVar3[0xc] << 0x15) >> 0x1f;" (assignment_expression "uVar12 = (uint)(piVar3[0xc] << 0x15) >> 0x1f" identifier = (binary_expression "(uint)(piVar3[0xc] << 0x15) >> 0x1f" (call_expression "(uint)(piVar3[0xc] << 0x15)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(piVar3[0xc] << 0x15)" ( (binary_expression "piVar3[0xc] << 0x15" (subscript_expression "piVar3[0xc]" identifier [ number_literal ]) << number_literal) ))) >> number_literal)) ;) }))) (if_statement "if (iVar14 == 0) goto LAB_00029b78;" if (parenthesized_expression "(iVar14 == 0)" ( (binary_expression "iVar14 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00029b78;" goto statement_identifier ;)) (expression_statement "local_30 = 0;" (assignment_expression "local_30 = 0" identifier = number_literal) ;) (expression_statement "uVar4 = 0;" (assignment_expression "uVar4 = 0" identifier = number_literal) ;) (expression_statement "pcVar5 = (code *)(PTR_s_ore_than_one_of__i___f___n__only_00043128 + -0x7d80);" (assignment_expression "pcVar5 = (code *)(PTR_s_ore_than_one_of__i___f___n__only_00043128 + -0x7d80)" identifier = (cast_expression "(code *)(PTR_s_ore_than_one_of__i___f___n__only_00043128 + -0x7d80)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_s_ore_than_one_of__i___f___n__only_00043128 + -0x7d80)" ( (binary_expression "PTR_s_ore_than_one_of__i___f___n__only_00043128 + -0x7d80" identifier + number_literal) )))) ;) (expression_statement "iVar11 = 0;" (assignment_expression "iVar11 = 0" identifier = number_literal) ;) (do_statement "do {\n        uVar6 = (*(code *)PTR_strlen_00043564)(iVar14);\n        if ((((param_2 & 0x1000) == 0) && (2 < uVar6)) &&\n           (iVar9 = iVar14 + uVar6, *(char *)(iVar9 + -1) == '/')) {\n          do {\n            if (*(char *)(iVar9 + -2) != '/') break;\n            uVar6 = uVar6 - 1;\n            iVar9 = iVar14 + uVar6;\n          } while (uVar6 != 1);\n        }\n        iVar14 = (*pcVar15)(piVar3,iVar14,uVar6);\n        iVar9 = iVar11;\n        if (iVar14 == 0) goto LAB_00029aac;\n        *(undefined4 *)(iVar14 + 0x30) = 0;\n        *(int *)(iVar14 + 4) = iVar10;\n        *(int *)(iVar14 + 0x18) = iVar14 + 0xe8;\n        iVar9 = iVar14;\n        if (uVar12 == 0) {\n          uVar8 = (*pcVar5)(piVar3[8],piVar3 + 0xc,iVar14,0);\n          *(undefined2 *)(iVar14 + 0x3c) = uVar8;\n          if (param_3 != 0) goto LAB_00029978;\n          *(undefined4 *)(iVar14 + 8) = 0;\n          if (iVar11 != 0) goto LAB_00029b5c;\n        }\n        else if (iVar11 == 0) {\n          uVar8 = (*pcVar5)(piVar3[8],piVar3 + 0xc,iVar14,0);\n          *(undefined2 *)(iVar14 + 0x3c) = uVar8;\n          if (param_3 != 0) goto LAB_00029978;\n          *(undefined4 *)(iVar14 + 8) = 0;\n        }\n        else {\n          *(undefined4 *)(iVar14 + 0x84) = 2;\n          *(undefined4 *)(iVar14 + 0x80) = 0;\n          *(undefined2 *)(iVar14 + 0x3c) = 0xb;\n          if (param_3 == 0) {\n            *(undefined4 *)(iVar14 + 8) = 0;\nLAB_00029b5c:\n            *(int *)(local_30 + 8) = iVar14;\n            iVar9 = iVar11;\n          }\n          else {\nLAB_00029978:\n            *(int *)(iVar14 + 8) = iVar11;\n            iVar14 = local_30;\n          }\n        }\n        local_30 = iVar14;\n        param_1 = param_1 + 1;\n        iVar14 = *param_1;\n        uVar4 = uVar4 + 1;\n        iVar11 = iVar9;\n      } while (iVar14 != 0);" do (compound_statement "{\n        uVar6 = (*(code *)PTR_strlen_00043564)(iVar14);\n        if ((((param_2 & 0x1000) == 0) && (2 < uVar6)) &&\n           (iVar9 = iVar14 + uVar6, *(char *)(iVar9 + -1) == '/')) {\n          do {\n            if (*(char *)(iVar9 + -2) != '/') break;\n            uVar6 = uVar6 - 1;\n            iVar9 = iVar14 + uVar6;\n          } while (uVar6 != 1);\n        }\n        iVar14 = (*pcVar15)(piVar3,iVar14,uVar6);\n        iVar9 = iVar11;\n        if (iVar14 == 0) goto LAB_00029aac;\n        *(undefined4 *)(iVar14 + 0x30) = 0;\n        *(int *)(iVar14 + 4) = iVar10;\n        *(int *)(iVar14 + 0x18) = iVar14 + 0xe8;\n        iVar9 = iVar14;\n        if (uVar12 == 0) {\n          uVar8 = (*pcVar5)(piVar3[8],piVar3 + 0xc,iVar14,0);\n          *(undefined2 *)(iVar14 + 0x3c) = uVar8;\n          if (param_3 != 0) goto LAB_00029978;\n          *(undefined4 *)(iVar14 + 8) = 0;\n          if (iVar11 != 0) goto LAB_00029b5c;\n        }\n        else if (iVar11 == 0) {\n          uVar8 = (*pcVar5)(piVar3[8],piVar3 + 0xc,iVar14,0);\n          *(undefined2 *)(iVar14 + 0x3c) = uVar8;\n          if (param_3 != 0) goto LAB_00029978;\n          *(undefined4 *)(iVar14 + 8) = 0;\n        }\n        else {\n          *(undefined4 *)(iVar14 + 0x84) = 2;\n          *(undefined4 *)(iVar14 + 0x80) = 0;\n          *(undefined2 *)(iVar14 + 0x3c) = 0xb;\n          if (param_3 == 0) {\n            *(undefined4 *)(iVar14 + 8) = 0;\nLAB_00029b5c:\n            *(int *)(local_30 + 8) = iVar14;\n            iVar9 = iVar11;\n          }\n          else {\nLAB_00029978:\n            *(int *)(iVar14 + 8) = iVar11;\n            iVar14 = local_30;\n          }\n        }\n        local_30 = iVar14;\n        param_1 = param_1 + 1;\n        iVar14 = *param_1;\n        uVar4 = uVar4 + 1;\n        iVar11 = iVar9;\n      }" { (expression_statement "uVar6 = (*(code *)PTR_strlen_00043564)(iVar14);" (assignment_expression "uVar6 = (*(code *)PTR_strlen_00043564)(iVar14)" identifier = (call_expression "(*(code *)PTR_strlen_00043564)(iVar14)" (parenthesized_expression "(*(code *)PTR_strlen_00043564)" ( (pointer_expression "*(code *)PTR_strlen_00043564" * (cast_expression "(code *)PTR_strlen_00043564" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(iVar14)" ( identifier )))) ;) (if_statement "if ((((param_2 & 0x1000) == 0) && (2 < uVar6)) &&\n           (iVar9 = iVar14 + uVar6, *(char *)(iVar9 + -1) == '/')) {\n          do {\n            if (*(char *)(iVar9 + -2) != '/') break;\n            uVar6 = uVar6 - 1;\n            iVar9 = iVar14 + uVar6;\n          } while (uVar6 != 1);\n        }" if (parenthesized_expression "((((param_2 & 0x1000) == 0) && (2 < uVar6)) &&\n           (iVar9 = iVar14 + uVar6, *(char *)(iVar9 + -1) == '/'))" ( (binary_expression "(((param_2 & 0x1000) == 0) && (2 < uVar6)) &&\n           (iVar9 = iVar14 + uVar6, *(char *)(iVar9 + -1) == '/')" (parenthesized_expression "(((param_2 & 0x1000) == 0) && (2 < uVar6))" ( (binary_expression "((param_2 & 0x1000) == 0) && (2 < uVar6)" (parenthesized_expression "((param_2 & 0x1000) == 0)" ( (binary_expression "(param_2 & 0x1000) == 0" (parenthesized_expression "(param_2 & 0x1000)" ( (binary_expression "param_2 & 0x1000" identifier & number_literal) )) == number_literal) )) && (parenthesized_expression "(2 < uVar6)" ( (binary_expression "2 < uVar6" number_literal < identifier) ))) )) && (parenthesized_expression "(iVar9 = iVar14 + uVar6, *(char *)(iVar9 + -1) == '/')" ( (comma_expression "iVar9 = iVar14 + uVar6, *(char *)(iVar9 + -1) == '/'" (assignment_expression "iVar9 = iVar14 + uVar6" identifier = (binary_expression "iVar14 + uVar6" identifier + identifier)) , (binary_expression "*(char *)(iVar9 + -1) == '/'" (pointer_expression "*(char *)(iVar9 + -1)" * (cast_expression "(char *)(iVar9 + -1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + -1)" ( (binary_expression "iVar9 + -1" identifier + number_literal) )))) == (char_literal "'/'" ' character '))) ))) )) (compound_statement "{\n          do {\n            if (*(char *)(iVar9 + -2) != '/') break;\n            uVar6 = uVar6 - 1;\n            iVar9 = iVar14 + uVar6;\n          } while (uVar6 != 1);\n        }" { (do_statement "do {\n            if (*(char *)(iVar9 + -2) != '/') break;\n            uVar6 = uVar6 - 1;\n            iVar9 = iVar14 + uVar6;\n          } while (uVar6 != 1);" do (compound_statement "{\n            if (*(char *)(iVar9 + -2) != '/') break;\n            uVar6 = uVar6 - 1;\n            iVar9 = iVar14 + uVar6;\n          }" { (if_statement "if (*(char *)(iVar9 + -2) != '/') break;" if (parenthesized_expression "(*(char *)(iVar9 + -2) != '/')" ( (binary_expression "*(char *)(iVar9 + -2) != '/'" (pointer_expression "*(char *)(iVar9 + -2)" * (cast_expression "(char *)(iVar9 + -2)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + -2)" ( (binary_expression "iVar9 + -2" identifier + number_literal) )))) != (char_literal "'/'" ' character ')) )) (break_statement "break;" break ;)) (expression_statement "uVar6 = uVar6 - 1;" (assignment_expression "uVar6 = uVar6 - 1" identifier = (binary_expression "uVar6 - 1" identifier - number_literal)) ;) (expression_statement "iVar9 = iVar14 + uVar6;" (assignment_expression "iVar9 = iVar14 + uVar6" identifier = (binary_expression "iVar14 + uVar6" identifier + identifier)) ;) }) while (parenthesized_expression "(uVar6 != 1)" ( (binary_expression "uVar6 != 1" identifier != number_literal) )) ;) })) (expression_statement "iVar14 = (*pcVar15)(piVar3,iVar14,uVar6);" (assignment_expression "iVar14 = (*pcVar15)(piVar3,iVar14,uVar6)" identifier = (call_expression "(*pcVar15)(piVar3,iVar14,uVar6)" (parenthesized_expression "(*pcVar15)" ( (pointer_expression "*pcVar15" * identifier) )) (argument_list "(piVar3,iVar14,uVar6)" ( identifier , identifier , identifier )))) ;) (expression_statement "iVar9 = iVar11;" (assignment_expression "iVar9 = iVar11" identifier = identifier) ;) (if_statement "if (iVar14 == 0) goto LAB_00029aac;" if (parenthesized_expression "(iVar14 == 0)" ( (binary_expression "iVar14 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00029aac;" goto statement_identifier ;)) (expression_statement "*(undefined4 *)(iVar14 + 0x30) = 0;" (assignment_expression "*(undefined4 *)(iVar14 + 0x30) = 0" (pointer_expression "*(undefined4 *)(iVar14 + 0x30)" * (cast_expression "(undefined4 *)(iVar14 + 0x30)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar14 + 0x30)" ( (binary_expression "iVar14 + 0x30" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(int *)(iVar14 + 4) = iVar10;" (assignment_expression "*(int *)(iVar14 + 4) = iVar10" (pointer_expression "*(int *)(iVar14 + 4)" * (cast_expression "(int *)(iVar14 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar14 + 4)" ( (binary_expression "iVar14 + 4" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(iVar14 + 0x18) = iVar14 + 0xe8;" (assignment_expression "*(int *)(iVar14 + 0x18) = iVar14 + 0xe8" (pointer_expression "*(int *)(iVar14 + 0x18)" * (cast_expression "(int *)(iVar14 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar14 + 0x18)" ( (binary_expression "iVar14 + 0x18" identifier + number_literal) )))) = (binary_expression "iVar14 + 0xe8" identifier + number_literal)) ;) (expression_statement "iVar9 = iVar14;" (assignment_expression "iVar9 = iVar14" identifier = identifier) ;) (if_statement "if (uVar12 == 0) {\n          uVar8 = (*pcVar5)(piVar3[8],piVar3 + 0xc,iVar14,0);\n          *(undefined2 *)(iVar14 + 0x3c) = uVar8;\n          if (param_3 != 0) goto LAB_00029978;\n          *(undefined4 *)(iVar14 + 8) = 0;\n          if (iVar11 != 0) goto LAB_00029b5c;\n        }\n        else if (iVar11 == 0) {\n          uVar8 = (*pcVar5)(piVar3[8],piVar3 + 0xc,iVar14,0);\n          *(undefined2 *)(iVar14 + 0x3c) = uVar8;\n          if (param_3 != 0) goto LAB_00029978;\n          *(undefined4 *)(iVar14 + 8) = 0;\n        }\n        else {\n          *(undefined4 *)(iVar14 + 0x84) = 2;\n          *(undefined4 *)(iVar14 + 0x80) = 0;\n          *(undefined2 *)(iVar14 + 0x3c) = 0xb;\n          if (param_3 == 0) {\n            *(undefined4 *)(iVar14 + 8) = 0;\nLAB_00029b5c:\n            *(int *)(local_30 + 8) = iVar14;\n            iVar9 = iVar11;\n          }\n          else {\nLAB_00029978:\n            *(int *)(iVar14 + 8) = iVar11;\n            iVar14 = local_30;\n          }\n        }" if (parenthesized_expression "(uVar12 == 0)" ( (binary_expression "uVar12 == 0" identifier == number_literal) )) (compound_statement "{\n          uVar8 = (*pcVar5)(piVar3[8],piVar3 + 0xc,iVar14,0);\n          *(undefined2 *)(iVar14 + 0x3c) = uVar8;\n          if (param_3 != 0) goto LAB_00029978;\n          *(undefined4 *)(iVar14 + 8) = 0;\n          if (iVar11 != 0) goto LAB_00029b5c;\n        }" { (expression_statement "uVar8 = (*pcVar5)(piVar3[8],piVar3 + 0xc,iVar14,0);" (assignment_expression "uVar8 = (*pcVar5)(piVar3[8],piVar3 + 0xc,iVar14,0)" identifier = (call_expression "(*pcVar5)(piVar3[8],piVar3 + 0xc,iVar14,0)" (parenthesized_expression "(*pcVar5)" ( (pointer_expression "*pcVar5" * identifier) )) (argument_list "(piVar3[8],piVar3 + 0xc,iVar14,0)" ( (subscript_expression "piVar3[8]" identifier [ number_literal ]) , (binary_expression "piVar3 + 0xc" identifier + number_literal) , identifier , number_literal )))) ;) (expression_statement "*(undefined2 *)(iVar14 + 0x3c) = uVar8;" (assignment_expression "*(undefined2 *)(iVar14 + 0x3c) = uVar8" (pointer_expression "*(undefined2 *)(iVar14 + 0x3c)" * (cast_expression "(undefined2 *)(iVar14 + 0x3c)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar14 + 0x3c)" ( (binary_expression "iVar14 + 0x3c" identifier + number_literal) )))) = identifier) ;) (if_statement "if (param_3 != 0) goto LAB_00029978;" if (parenthesized_expression "(param_3 != 0)" ( (binary_expression "param_3 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00029978;" goto statement_identifier ;)) (expression_statement "*(undefined4 *)(iVar14 + 8) = 0;" (assignment_expression "*(undefined4 *)(iVar14 + 8) = 0" (pointer_expression "*(undefined4 *)(iVar14 + 8)" * (cast_expression "(undefined4 *)(iVar14 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar14 + 8)" ( (binary_expression "iVar14 + 8" identifier + number_literal) )))) = number_literal) ;) (if_statement "if (iVar11 != 0) goto LAB_00029b5c;" if (parenthesized_expression "(iVar11 != 0)" ( (binary_expression "iVar11 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00029b5c;" goto statement_identifier ;)) }) (else_clause "else if (iVar11 == 0) {\n          uVar8 = (*pcVar5)(piVar3[8],piVar3 + 0xc,iVar14,0);\n          *(undefined2 *)(iVar14 + 0x3c) = uVar8;\n          if (param_3 != 0) goto LAB_00029978;\n          *(undefined4 *)(iVar14 + 8) = 0;\n        }\n        else {\n          *(undefined4 *)(iVar14 + 0x84) = 2;\n          *(undefined4 *)(iVar14 + 0x80) = 0;\n          *(undefined2 *)(iVar14 + 0x3c) = 0xb;\n          if (param_3 == 0) {\n            *(undefined4 *)(iVar14 + 8) = 0;\nLAB_00029b5c:\n            *(int *)(local_30 + 8) = iVar14;\n            iVar9 = iVar11;\n          }\n          else {\nLAB_00029978:\n            *(int *)(iVar14 + 8) = iVar11;\n            iVar14 = local_30;\n          }\n        }" else (if_statement "if (iVar11 == 0) {\n          uVar8 = (*pcVar5)(piVar3[8],piVar3 + 0xc,iVar14,0);\n          *(undefined2 *)(iVar14 + 0x3c) = uVar8;\n          if (param_3 != 0) goto LAB_00029978;\n          *(undefined4 *)(iVar14 + 8) = 0;\n        }\n        else {\n          *(undefined4 *)(iVar14 + 0x84) = 2;\n          *(undefined4 *)(iVar14 + 0x80) = 0;\n          *(undefined2 *)(iVar14 + 0x3c) = 0xb;\n          if (param_3 == 0) {\n            *(undefined4 *)(iVar14 + 8) = 0;\nLAB_00029b5c:\n            *(int *)(local_30 + 8) = iVar14;\n            iVar9 = iVar11;\n          }\n          else {\nLAB_00029978:\n            *(int *)(iVar14 + 8) = iVar11;\n            iVar14 = local_30;\n          }\n        }" if (parenthesized_expression "(iVar11 == 0)" ( (binary_expression "iVar11 == 0" identifier == number_literal) )) (compound_statement "{\n          uVar8 = (*pcVar5)(piVar3[8],piVar3 + 0xc,iVar14,0);\n          *(undefined2 *)(iVar14 + 0x3c) = uVar8;\n          if (param_3 != 0) goto LAB_00029978;\n          *(undefined4 *)(iVar14 + 8) = 0;\n        }" { (expression_statement "uVar8 = (*pcVar5)(piVar3[8],piVar3 + 0xc,iVar14,0);" (assignment_expression "uVar8 = (*pcVar5)(piVar3[8],piVar3 + 0xc,iVar14,0)" identifier = (call_expression "(*pcVar5)(piVar3[8],piVar3 + 0xc,iVar14,0)" (parenthesized_expression "(*pcVar5)" ( (pointer_expression "*pcVar5" * identifier) )) (argument_list "(piVar3[8],piVar3 + 0xc,iVar14,0)" ( (subscript_expression "piVar3[8]" identifier [ number_literal ]) , (binary_expression "piVar3 + 0xc" identifier + number_literal) , identifier , number_literal )))) ;) (expression_statement "*(undefined2 *)(iVar14 + 0x3c) = uVar8;" (assignment_expression "*(undefined2 *)(iVar14 + 0x3c) = uVar8" (pointer_expression "*(undefined2 *)(iVar14 + 0x3c)" * (cast_expression "(undefined2 *)(iVar14 + 0x3c)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar14 + 0x3c)" ( (binary_expression "iVar14 + 0x3c" identifier + number_literal) )))) = identifier) ;) (if_statement "if (param_3 != 0) goto LAB_00029978;" if (parenthesized_expression "(param_3 != 0)" ( (binary_expression "param_3 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00029978;" goto statement_identifier ;)) (expression_statement "*(undefined4 *)(iVar14 + 8) = 0;" (assignment_expression "*(undefined4 *)(iVar14 + 8) = 0" (pointer_expression "*(undefined4 *)(iVar14 + 8)" * (cast_expression "(undefined4 *)(iVar14 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar14 + 8)" ( (binary_expression "iVar14 + 8" identifier + number_literal) )))) = number_literal) ;) }) (else_clause "else {\n          *(undefined4 *)(iVar14 + 0x84) = 2;\n          *(undefined4 *)(iVar14 + 0x80) = 0;\n          *(undefined2 *)(iVar14 + 0x3c) = 0xb;\n          if (param_3 == 0) {\n            *(undefined4 *)(iVar14 + 8) = 0;\nLAB_00029b5c:\n            *(int *)(local_30 + 8) = iVar14;\n            iVar9 = iVar11;\n          }\n          else {\nLAB_00029978:\n            *(int *)(iVar14 + 8) = iVar11;\n            iVar14 = local_30;\n          }\n        }" else (compound_statement "{\n          *(undefined4 *)(iVar14 + 0x84) = 2;\n          *(undefined4 *)(iVar14 + 0x80) = 0;\n          *(undefined2 *)(iVar14 + 0x3c) = 0xb;\n          if (param_3 == 0) {\n            *(undefined4 *)(iVar14 + 8) = 0;\nLAB_00029b5c:\n            *(int *)(local_30 + 8) = iVar14;\n            iVar9 = iVar11;\n          }\n          else {\nLAB_00029978:\n            *(int *)(iVar14 + 8) = iVar11;\n            iVar14 = local_30;\n          }\n        }" { (expression_statement "*(undefined4 *)(iVar14 + 0x84) = 2;" (assignment_expression "*(undefined4 *)(iVar14 + 0x84) = 2" (pointer_expression "*(undefined4 *)(iVar14 + 0x84)" * (cast_expression "(undefined4 *)(iVar14 + 0x84)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar14 + 0x84)" ( (binary_expression "iVar14 + 0x84" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(iVar14 + 0x80) = 0;" (assignment_expression "*(undefined4 *)(iVar14 + 0x80) = 0" (pointer_expression "*(undefined4 *)(iVar14 + 0x80)" * (cast_expression "(undefined4 *)(iVar14 + 0x80)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar14 + 0x80)" ( (binary_expression "iVar14 + 0x80" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined2 *)(iVar14 + 0x3c) = 0xb;" (assignment_expression "*(undefined2 *)(iVar14 + 0x3c) = 0xb" (pointer_expression "*(undefined2 *)(iVar14 + 0x3c)" * (cast_expression "(undefined2 *)(iVar14 + 0x3c)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar14 + 0x3c)" ( (binary_expression "iVar14 + 0x3c" identifier + number_literal) )))) = number_literal) ;) (if_statement "if (param_3 == 0) {\n            *(undefined4 *)(iVar14 + 8) = 0;\nLAB_00029b5c:\n            *(int *)(local_30 + 8) = iVar14;\n            iVar9 = iVar11;\n          }\n          else {\nLAB_00029978:\n            *(int *)(iVar14 + 8) = iVar11;\n            iVar14 = local_30;\n          }" if (parenthesized_expression "(param_3 == 0)" ( (binary_expression "param_3 == 0" identifier == number_literal) )) (compound_statement "{\n            *(undefined4 *)(iVar14 + 8) = 0;\nLAB_00029b5c:\n            *(int *)(local_30 + 8) = iVar14;\n            iVar9 = iVar11;\n          }" { (expression_statement "*(undefined4 *)(iVar14 + 8) = 0;" (assignment_expression "*(undefined4 *)(iVar14 + 8) = 0" (pointer_expression "*(undefined4 *)(iVar14 + 8)" * (cast_expression "(undefined4 *)(iVar14 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar14 + 8)" ( (binary_expression "iVar14 + 8" identifier + number_literal) )))) = number_literal) ;) (labeled_statement "LAB_00029b5c:\n            *(int *)(local_30 + 8) = iVar14;" statement_identifier : (expression_statement "*(int *)(local_30 + 8) = iVar14;" (assignment_expression "*(int *)(local_30 + 8) = iVar14" (pointer_expression "*(int *)(local_30 + 8)" * (cast_expression "(int *)(local_30 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_30 + 8)" ( (binary_expression "local_30 + 8" identifier + number_literal) )))) = identifier) ;)) (expression_statement "iVar9 = iVar11;" (assignment_expression "iVar9 = iVar11" identifier = identifier) ;) }) (else_clause "else {\nLAB_00029978:\n            *(int *)(iVar14 + 8) = iVar11;\n            iVar14 = local_30;\n          }" else (compound_statement "{\nLAB_00029978:\n            *(int *)(iVar14 + 8) = iVar11;\n            iVar14 = local_30;\n          }" { (labeled_statement "LAB_00029978:\n            *(int *)(iVar14 + 8) = iVar11;" statement_identifier : (expression_statement "*(int *)(iVar14 + 8) = iVar11;" (assignment_expression "*(int *)(iVar14 + 8) = iVar11" (pointer_expression "*(int *)(iVar14 + 8)" * (cast_expression "(int *)(iVar14 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar14 + 8)" ( (binary_expression "iVar14 + 8" identifier + number_literal) )))) = identifier) ;)) (expression_statement "iVar14 = local_30;" (assignment_expression "iVar14 = local_30" identifier = identifier) ;) }))) }))))) (expression_statement "local_30 = iVar14;" (assignment_expression "local_30 = iVar14" identifier = identifier) ;) (expression_statement "param_1 = param_1 + 1;" (assignment_expression "param_1 = param_1 + 1" identifier = (binary_expression "param_1 + 1" identifier + number_literal)) ;) (expression_statement "iVar14 = *param_1;" (assignment_expression "iVar14 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "uVar4 = uVar4 + 1;" (assignment_expression "uVar4 = uVar4 + 1" identifier = (binary_expression "uVar4 + 1" identifier + number_literal)) ;) (expression_statement "iVar11 = iVar9;" (assignment_expression "iVar11 = iVar9" identifier = identifier) ;) }) while (parenthesized_expression "(iVar14 != 0)" ( (binary_expression "iVar14 != 0" identifier != number_literal) )) ;) (if_statement "if ((param_3 != 0) && (1 < uVar4)) {\n        iVar9 = FUN_00027be4(piVar3,iVar9,uVar4);\n      }" if (parenthesized_expression "((param_3 != 0) && (1 < uVar4))" ( (binary_expression "(param_3 != 0) && (1 < uVar4)" (parenthesized_expression "(param_3 != 0)" ( (binary_expression "param_3 != 0" identifier != number_literal) )) && (parenthesized_expression "(1 < uVar4)" ( (binary_expression "1 < uVar4" number_literal < identifier) ))) )) (compound_statement "{\n        iVar9 = FUN_00027be4(piVar3,iVar9,uVar4);\n      }" { (expression_statement "iVar9 = FUN_00027be4(piVar3,iVar9,uVar4);" (assignment_expression "iVar9 = FUN_00027be4(piVar3,iVar9,uVar4)" identifier = (call_expression "FUN_00027be4(piVar3,iVar9,uVar4)" identifier (argument_list "(piVar3,iVar9,uVar4)" ( identifier , identifier , identifier )))) ;) })) (goto_statement "goto LAB_000299c0;" goto statement_identifier ;) })) }))) (expression_statement "(*(code *)PTR_free_0004363c)(piVar3[6]);" (call_expression "(*(code *)PTR_free_0004363c)(piVar3[6])" (parenthesized_expression "(*(code *)PTR_free_0004363c)" ( (pointer_expression "*(code *)PTR_free_0004363c" * (cast_expression "(code *)PTR_free_0004363c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(piVar3[6])" ( (subscript_expression "piVar3[6]" identifier [ number_literal ]) ))) ;) (labeled_statement "LAB_00029ae0:\n  (*(code *)PTR_free_0004363c)(piVar3);" statement_identifier : (expression_statement "(*(code *)PTR_free_0004363c)(piVar3);" (call_expression "(*(code *)PTR_free_0004363c)(piVar3)" (parenthesized_expression "(*(code *)PTR_free_0004363c)" ( (pointer_expression "*(code *)PTR_free_0004363c" * (cast_expression "(code *)PTR_free_0004363c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(piVar3)" ( identifier ))) ;)) (return_statement "return (int *)0x0;" return (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) ;) })))
(translation_unit (function_definition TYPE (pointer_declarator * (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) )))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) || (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) ))) )) || (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( ))))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (return_statement return (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( LIT , LIT ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (return_statement return (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT) ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (binary_expression IDENT & LIT) | LIT)) ;) }))) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) }) while (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) != LIT) )) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) })) }))) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , (binary_expression IDENT + LIT) , IDENT )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;)) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT , (binary_expression IDENT + LIT) , LIT )))) ;) (expression_statement (assignment_expression (pointer_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 (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 ])) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (binary_expression IDENT + LIT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) & LIT) )) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (subscript_expression IDENT [ LIT ]) , (subscript_expression IDENT [ LIT ]) , (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (subscript_expression IDENT [ LIT ]) | LIT)) ;) })) })) (expression_statement (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , LIT ))) ;) (return_statement return IDENT ;) })) })) (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;)) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT ))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (binary_expression IDENT + LIT) , LIT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (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) )))) = 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 == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (subscript_expression IDENT [ LIT ]) << LIT) ))) >> LIT)) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) && (parenthesized_expression ( (binary_expression LIT < IDENT) ))) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (binary_expression IDENT + IDENT)) , (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == (char_literal ' character '))) ))) )) (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) )))) != (char_literal ' character ')) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != LIT) )) ;) })) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT , IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( (subscript_expression IDENT [ LIT ]) , (binary_expression IDENT + LIT) , 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 IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( (subscript_expression IDENT [ LIT ]) , (binary_expression IDENT + LIT) , 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 IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = 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) )))) = 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) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (labeled_statement statement_identifier : (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) ;) }) (else_clause else (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) )))) = IDENT) ;)) (expression_statement (assignment_expression IDENT = IDENT) ;) }))) }))))) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression IDENT != LIT) )) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != LIT) )) && (parenthesized_expression ( (binary_expression LIT < IDENT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT )))) ;) })) (goto_statement goto statement_identifier ;) })) }))) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( (subscript_expression IDENT [ LIT ]) ))) ;) (labeled_statement statement_identifier : (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT ))) ;)) (return_statement return (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT) ;) })))
(function_definition "int * fts_open(int *param_1,uint param_2,int param_3)\n\n{\n  undefined *puVar1;\n  undefined *puVar2;\n  int *piVar3;\n  uint uVar4;\n  code *pcVar5;\n  uint uVar6;\n  undefined4 *puVar7;\n  undefined2 uVar8;\n  int iVar9;\n  int iVar10;\n  int iVar11;\n  uint uVar12;\n  int *piVar13;\n  int iVar14;\n  code *pcVar15;\n  code *local_3c;\n  int local_30;\n  \n  if ((((param_2 & 0xffffe000) != 0) || ((param_2 & 0x204) == 0x204)) || ((param_2 & 0x12) == 0)) {\n    puVar7 = (undefined4 *)(*(code *)PTR___errno_location_00043520)();\n    *puVar7 = 0x16;\n    return (int *)0x0;\n  }\n  piVar3 = (int *)(*(code *)PTR_calloc_0004341c)(0x60,1);\n  if (piVar3 == (int *)0x0) {\n    return (int *)0x0;\n  }\n  piVar3[0xb] = param_3;\n  if ((param_2 & 2) == 0) {\n    piVar3[0xc] = param_2;\n  }\n  else {\n    piVar3[0xc] = param_2 & 0xfffffdff | 4;\n  }\n  iVar10 = *param_1;\n  piVar3[8] = -100;\n  if (iVar10 == 0) {\n    uVar12 = 0x1000;\n  }\n  else {\n    uVar12 = 0;\n    piVar13 = param_1;\n    do {\n      piVar13 = piVar13 + 1;\n      uVar4 = (*(code *)PTR_strlen_00043564)();\n      if (uVar12 < uVar4) {\n        uVar12 = uVar4;\n      }\n    } while (*piVar13 != 0);\n    uVar12 = uVar12 + 1;\n    if (uVar12 < 0x1000) {\n      uVar12 = 0x1000;\n    }\n  }\n  iVar10 = FUN_000284b8(piVar3 + 6,piVar3 + 9,uVar12);\n  puVar2 = PTR_LAB_0004326c;\n  puVar1 = PTR_s_ore_than_one_of__i___f___n__only_00043128;\n  if (iVar10 == 0) goto LAB_00029ae0;\n  if (*param_1 == 0) {\n    iVar10 = 0;\nLAB_00029b78:\n    iVar9 = 0;\nLAB_000299c0:\n    local_3c = (code *)(puVar2 + 0x7d20);\n    iVar14 = (*local_3c)(piVar3,puVar1 + 0x44c,0);\n    *piVar3 = iVar14;\n    if (iVar14 != 0) {\n      *(int *)(iVar14 + 8) = iVar9;\n      *(undefined4 *)(iVar14 + 0x30) = 1;\n      iVar11 = piVar3[0xc];\n      *(undefined2 *)(iVar14 + 0x3c) = 9;\n      iVar14 = FUN_0002857c(iVar11,piVar3 + 0xe);\n      if (iVar14 != 0) {\n        if ((piVar3[0xc] & 0x204U) == 0) {\n          iVar10 = FUN_00028630(piVar3[8],piVar3[0xc],\n                                PTR_s_ore_than_one_of__i___f___n__only_00043128 + 0xc4c);\n          piVar3[7] = iVar10;\n          if (iVar10 < 0) {\n            piVar3[0xc] = piVar3[0xc] | 4;\n          }\n        }\n        i_ring_init(piVar3 + 0xf,0xffffffff);\n        return piVar3;\n      }\n    }\nLAB_00029aac:\n    FUN_00027ddc(iVar9);\n    (*(code *)PTR_free_0004363c)(iVar10);\n  }\n  else {\n    pcVar15 = (code *)(PTR_LAB_0004326c + 0x7d20);\n    iVar10 = FUN_00027d20(piVar3,PTR_s_ore_than_one_of__i___f___n__only_00043128 + 0x44c,0);\n    if (iVar10 != 0) {\n      iVar14 = *param_1;\n      *(undefined4 *)(iVar10 + 0x30) = 0xffffffff;\n      *(undefined4 *)(iVar10 + 0x38) = 0xffffffff;\n      if (param_3 == 0) {\n        uVar12 = 1;\n      }\n      else {\n        uVar12 = (uint)(piVar3[0xc] << 0x15) >> 0x1f;\n      }\n      if (iVar14 == 0) goto LAB_00029b78;\n      local_30 = 0;\n      uVar4 = 0;\n      pcVar5 = (code *)(PTR_s_ore_than_one_of__i___f___n__only_00043128 + -0x7d80);\n      iVar11 = 0;\n      do {\n        uVar6 = (*(code *)PTR_strlen_00043564)(iVar14);\n        if ((((param_2 & 0x1000) == 0) && (2 < uVar6)) &&\n           (iVar9 = iVar14 + uVar6, *(char *)(iVar9 + -1) == '/')) {\n          do {\n            if (*(char *)(iVar9 + -2) != '/') break;\n            uVar6 = uVar6 - 1;\n            iVar9 = iVar14 + uVar6;\n          } while (uVar6 != 1);\n        }\n        iVar14 = (*pcVar15)(piVar3,iVar14,uVar6);\n        iVar9 = iVar11;\n        if (iVar14 == 0) goto LAB_00029aac;\n        *(undefined4 *)(iVar14 + 0x30) = 0;\n        *(int *)(iVar14 + 4) = iVar10;\n        *(int *)(iVar14 + 0x18) = iVar14 + 0xe8;\n        iVar9 = iVar14;\n        if (uVar12 == 0) {\n          uVar8 = (*pcVar5)(piVar3[8],piVar3 + 0xc,iVar14,0);\n          *(undefined2 *)(iVar14 + 0x3c) = uVar8;\n          if (param_3 != 0) goto LAB_00029978;\n          *(undefined4 *)(iVar14 + 8) = 0;\n          if (iVar11 != 0) goto LAB_00029b5c;\n        }\n        else if (iVar11 == 0) {\n          uVar8 = (*pcVar5)(piVar3[8],piVar3 + 0xc,iVar14,0);\n          *(undefined2 *)(iVar14 + 0x3c) = uVar8;\n          if (param_3 != 0) goto LAB_00029978;\n          *(undefined4 *)(iVar14 + 8) = 0;\n        }\n        else {\n          *(undefined4 *)(iVar14 + 0x84) = 2;\n          *(undefined4 *)(iVar14 + 0x80) = 0;\n          *(undefined2 *)(iVar14 + 0x3c) = 0xb;\n          if (param_3 == 0) {\n            *(undefined4 *)(iVar14 + 8) = 0;\nLAB_00029b5c:\n            *(int *)(local_30 + 8) = iVar14;\n            iVar9 = iVar11;\n          }\n          else {\nLAB_00029978:\n            *(int *)(iVar14 + 8) = iVar11;\n            iVar14 = local_30;\n          }\n        }\n        local_30 = iVar14;\n        param_1 = param_1 + 1;\n        iVar14 = *param_1;\n        uVar4 = uVar4 + 1;\n        iVar11 = iVar9;\n      } while (iVar14 != 0);\n      if ((param_3 != 0) && (1 < uVar4)) {\n        iVar9 = FUN_00027be4(piVar3,iVar9,uVar4);\n      }\n      goto LAB_000299c0;\n    }\n  }\n  (*(code *)PTR_free_0004363c)(piVar3[6]);\nLAB_00029ae0:\n  (*(code *)PTR_free_0004363c)(piVar3);\n  return (int *)0x0;\n}" (primitive_type "int") (pointer_declarator "* fts_open(int *param_1,uint param_2,int param_3)" (* "*") (function_declarator "fts_open(int *param_1,uint param_2,int param_3)" (identifier "fts_open") (parameter_list "(int *param_1,uint param_2,int param_3)" (( "(") (parameter_declaration "int *param_1" (primitive_type "int") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "uint param_2" (type_identifier "uint") (identifier "param_2")) (, ",") (parameter_declaration "int param_3" (primitive_type "int") (identifier "param_3")) () ")")))) (compound_statement "{\n  undefined *puVar1;\n  undefined *puVar2;\n  int *piVar3;\n  uint uVar4;\n  code *pcVar5;\n  uint uVar6;\n  undefined4 *puVar7;\n  undefined2 uVar8;\n  int iVar9;\n  int iVar10;\n  int iVar11;\n  uint uVar12;\n  int *piVar13;\n  int iVar14;\n  code *pcVar15;\n  code *local_3c;\n  int local_30;\n  \n  if ((((param_2 & 0xffffe000) != 0) || ((param_2 & 0x204) == 0x204)) || ((param_2 & 0x12) == 0)) {\n    puVar7 = (undefined4 *)(*(code *)PTR___errno_location_00043520)();\n    *puVar7 = 0x16;\n    return (int *)0x0;\n  }\n  piVar3 = (int *)(*(code *)PTR_calloc_0004341c)(0x60,1);\n  if (piVar3 == (int *)0x0) {\n    return (int *)0x0;\n  }\n  piVar3[0xb] = param_3;\n  if ((param_2 & 2) == 0) {\n    piVar3[0xc] = param_2;\n  }\n  else {\n    piVar3[0xc] = param_2 & 0xfffffdff | 4;\n  }\n  iVar10 = *param_1;\n  piVar3[8] = -100;\n  if (iVar10 == 0) {\n    uVar12 = 0x1000;\n  }\n  else {\n    uVar12 = 0;\n    piVar13 = param_1;\n    do {\n      piVar13 = piVar13 + 1;\n      uVar4 = (*(code *)PTR_strlen_00043564)();\n      if (uVar12 < uVar4) {\n        uVar12 = uVar4;\n      }\n    } while (*piVar13 != 0);\n    uVar12 = uVar12 + 1;\n    if (uVar12 < 0x1000) {\n      uVar12 = 0x1000;\n    }\n  }\n  iVar10 = FUN_000284b8(piVar3 + 6,piVar3 + 9,uVar12);\n  puVar2 = PTR_LAB_0004326c;\n  puVar1 = PTR_s_ore_than_one_of__i___f___n__only_00043128;\n  if (iVar10 == 0) goto LAB_00029ae0;\n  if (*param_1 == 0) {\n    iVar10 = 0;\nLAB_00029b78:\n    iVar9 = 0;\nLAB_000299c0:\n    local_3c = (code *)(puVar2 + 0x7d20);\n    iVar14 = (*local_3c)(piVar3,puVar1 + 0x44c,0);\n    *piVar3 = iVar14;\n    if (iVar14 != 0) {\n      *(int *)(iVar14 + 8) = iVar9;\n      *(undefined4 *)(iVar14 + 0x30) = 1;\n      iVar11 = piVar3[0xc];\n      *(undefined2 *)(iVar14 + 0x3c) = 9;\n      iVar14 = FUN_0002857c(iVar11,piVar3 + 0xe);\n      if (iVar14 != 0) {\n        if ((piVar3[0xc] & 0x204U) == 0) {\n          iVar10 = FUN_00028630(piVar3[8],piVar3[0xc],\n                                PTR_s_ore_than_one_of__i___f___n__only_00043128 + 0xc4c);\n          piVar3[7] = iVar10;\n          if (iVar10 < 0) {\n            piVar3[0xc] = piVar3[0xc] | 4;\n          }\n        }\n        i_ring_init(piVar3 + 0xf,0xffffffff);\n        return piVar3;\n      }\n    }\nLAB_00029aac:\n    FUN_00027ddc(iVar9);\n    (*(code *)PTR_free_0004363c)(iVar10);\n  }\n  else {\n    pcVar15 = (code *)(PTR_LAB_0004326c + 0x7d20);\n    iVar10 = FUN_00027d20(piVar3,PTR_s_ore_than_one_of__i___f___n__only_00043128 + 0x44c,0);\n    if (iVar10 != 0) {\n      iVar14 = *param_1;\n      *(undefined4 *)(iVar10 + 0x30) = 0xffffffff;\n      *(undefined4 *)(iVar10 + 0x38) = 0xffffffff;\n      if (param_3 == 0) {\n        uVar12 = 1;\n      }\n      else {\n        uVar12 = (uint)(piVar3[0xc] << 0x15) >> 0x1f;\n      }\n      if (iVar14 == 0) goto LAB_00029b78;\n      local_30 = 0;\n      uVar4 = 0;\n      pcVar5 = (code *)(PTR_s_ore_than_one_of__i___f___n__only_00043128 + -0x7d80);\n      iVar11 = 0;\n      do {\n        uVar6 = (*(code *)PTR_strlen_00043564)(iVar14);\n        if ((((param_2 & 0x1000) == 0) && (2 < uVar6)) &&\n           (iVar9 = iVar14 + uVar6, *(char *)(iVar9 + -1) == '/')) {\n          do {\n            if (*(char *)(iVar9 + -2) != '/') break;\n            uVar6 = uVar6 - 1;\n            iVar9 = iVar14 + uVar6;\n          } while (uVar6 != 1);\n        }\n        iVar14 = (*pcVar15)(piVar3,iVar14,uVar6);\n        iVar9 = iVar11;\n        if (iVar14 == 0) goto LAB_00029aac;\n        *(undefined4 *)(iVar14 + 0x30) = 0;\n        *(int *)(iVar14 + 4) = iVar10;\n        *(int *)(iVar14 + 0x18) = iVar14 + 0xe8;\n        iVar9 = iVar14;\n        if (uVar12 == 0) {\n          uVar8 = (*pcVar5)(piVar3[8],piVar3 + 0xc,iVar14,0);\n          *(undefined2 *)(iVar14 + 0x3c) = uVar8;\n          if (param_3 != 0) goto LAB_00029978;\n          *(undefined4 *)(iVar14 + 8) = 0;\n          if (iVar11 != 0) goto LAB_00029b5c;\n        }\n        else if (iVar11 == 0) {\n          uVar8 = (*pcVar5)(piVar3[8],piVar3 + 0xc,iVar14,0);\n          *(undefined2 *)(iVar14 + 0x3c) = uVar8;\n          if (param_3 != 0) goto LAB_00029978;\n          *(undefined4 *)(iVar14 + 8) = 0;\n        }\n        else {\n          *(undefined4 *)(iVar14 + 0x84) = 2;\n          *(undefined4 *)(iVar14 + 0x80) = 0;\n          *(undefined2 *)(iVar14 + 0x3c) = 0xb;\n          if (param_3 == 0) {\n            *(undefined4 *)(iVar14 + 8) = 0;\nLAB_00029b5c:\n            *(int *)(local_30 + 8) = iVar14;\n            iVar9 = iVar11;\n          }\n          else {\nLAB_00029978:\n            *(int *)(iVar14 + 8) = iVar11;\n            iVar14 = local_30;\n          }\n        }\n        local_30 = iVar14;\n        param_1 = param_1 + 1;\n        iVar14 = *param_1;\n        uVar4 = uVar4 + 1;\n        iVar11 = iVar9;\n      } while (iVar14 != 0);\n      if ((param_3 != 0) && (1 < uVar4)) {\n        iVar9 = FUN_00027be4(piVar3,iVar9,uVar4);\n      }\n      goto LAB_000299c0;\n    }\n  }\n  (*(code *)PTR_free_0004363c)(piVar3[6]);\nLAB_00029ae0:\n  (*(code *)PTR_free_0004363c)(piVar3);\n  return (int *)0x0;\n}" ({ "{") (declaration "undefined *puVar1;" (type_identifier "undefined") (pointer_declarator "*puVar1" (* "*") (identifier "puVar1")) (; ";")) (declaration "undefined *puVar2;" (type_identifier "undefined") (pointer_declarator "*puVar2" (* "*") (identifier "puVar2")) (; ";")) (declaration "int *piVar3;" (primitive_type "int") (pointer_declarator "*piVar3" (* "*") (identifier "piVar3")) (; ";")) (declaration "uint uVar4;" (type_identifier "uint") (identifier "uVar4") (; ";")) (declaration "code *pcVar5;" (type_identifier "code") (pointer_declarator "*pcVar5" (* "*") (identifier "pcVar5")) (; ";")) (declaration "uint uVar6;" (type_identifier "uint") (identifier "uVar6") (; ";")) (declaration "undefined4 *puVar7;" (type_identifier "undefined4") (pointer_declarator "*puVar7" (* "*") (identifier "puVar7")) (; ";")) (declaration "undefined2 uVar8;" (type_identifier "undefined2") (identifier "uVar8") (; ";")) (declaration "int iVar9;" (primitive_type "int") (identifier "iVar9") (; ";")) (declaration "int iVar10;" (primitive_type "int") (identifier "iVar10") (; ";")) (declaration "int iVar11;" (primitive_type "int") (identifier "iVar11") (; ";")) (declaration "uint uVar12;" (type_identifier "uint") (identifier "uVar12") (; ";")) (declaration "int *piVar13;" (primitive_type "int") (pointer_declarator "*piVar13" (* "*") (identifier "piVar13")) (; ";")) (declaration "int iVar14;" (primitive_type "int") (identifier "iVar14") (; ";")) (declaration "code *pcVar15;" (type_identifier "code") (pointer_declarator "*pcVar15" (* "*") (identifier "pcVar15")) (; ";")) (declaration "code *local_3c;" (type_identifier "code") (pointer_declarator "*local_3c" (* "*") (identifier "local_3c")) (; ";")) (declaration "int local_30;" (primitive_type "int") (identifier "local_30") (; ";")) (if_statement "if ((((param_2 & 0xffffe000) != 0) || ((param_2 & 0x204) == 0x204)) || ((param_2 & 0x12) == 0)) {\n    puVar7 = (undefined4 *)(*(code *)PTR___errno_location_00043520)();\n    *puVar7 = 0x16;\n    return (int *)0x0;\n  }" (if "if") (parenthesized_expression "((((param_2 & 0xffffe000) != 0) || ((param_2 & 0x204) == 0x204)) || ((param_2 & 0x12) == 0))" (( "(") (binary_expression "(((param_2 & 0xffffe000) != 0) || ((param_2 & 0x204) == 0x204)) || ((param_2 & 0x12) == 0)" (parenthesized_expression "(((param_2 & 0xffffe000) != 0) || ((param_2 & 0x204) == 0x204))" (( "(") (binary_expression "((param_2 & 0xffffe000) != 0) || ((param_2 & 0x204) == 0x204)" (parenthesized_expression "((param_2 & 0xffffe000) != 0)" (( "(") (binary_expression "(param_2 & 0xffffe000) != 0" (parenthesized_expression "(param_2 & 0xffffe000)" (( "(") (binary_expression "param_2 & 0xffffe000" (identifier "param_2") (& "&") (number_literal "0xffffe000")) () ")")) (!= "!=") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "((param_2 & 0x204) == 0x204)" (( "(") (binary_expression "(param_2 & 0x204) == 0x204" (parenthesized_expression "(param_2 & 0x204)" (( "(") (binary_expression "param_2 & 0x204" (identifier "param_2") (& "&") (number_literal "0x204")) () ")")) (== "==") (number_literal "0x204")) () ")"))) () ")")) (|| "||") (parenthesized_expression "((param_2 & 0x12) == 0)" (( "(") (binary_expression "(param_2 & 0x12) == 0" (parenthesized_expression "(param_2 & 0x12)" (( "(") (binary_expression "param_2 & 0x12" (identifier "param_2") (& "&") (number_literal "0x12")) () ")")) (== "==") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n    puVar7 = (undefined4 *)(*(code *)PTR___errno_location_00043520)();\n    *puVar7 = 0x16;\n    return (int *)0x0;\n  }" ({ "{") (expression_statement "puVar7 = (undefined4 *)(*(code *)PTR___errno_location_00043520)();" (assignment_expression "puVar7 = (undefined4 *)(*(code *)PTR___errno_location_00043520)()" (identifier "puVar7") (= "=") (cast_expression "(undefined4 *)(*(code *)PTR___errno_location_00043520)()" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(*(code *)PTR___errno_location_00043520)()" (parenthesized_expression "(*(code *)PTR___errno_location_00043520)" (( "(") (pointer_expression "*(code *)PTR___errno_location_00043520" (* "*") (cast_expression "(code *)PTR___errno_location_00043520" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___errno_location_00043520"))) () ")")) (argument_list "()" (( "(") () ")"))))) (; ";")) (expression_statement "*puVar7 = 0x16;" (assignment_expression "*puVar7 = 0x16" (pointer_expression "*puVar7" (* "*") (identifier "puVar7")) (= "=") (number_literal "0x16")) (; ";")) (return_statement "return (int *)0x0;" (return "return") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")) (; ";")) (} "}"))) (expression_statement "piVar3 = (int *)(*(code *)PTR_calloc_0004341c)(0x60,1);" (assignment_expression "piVar3 = (int *)(*(code *)PTR_calloc_0004341c)(0x60,1)" (identifier "piVar3") (= "=") (cast_expression "(int *)(*(code *)PTR_calloc_0004341c)(0x60,1)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(*(code *)PTR_calloc_0004341c)(0x60,1)" (parenthesized_expression "(*(code *)PTR_calloc_0004341c)" (( "(") (pointer_expression "*(code *)PTR_calloc_0004341c" (* "*") (cast_expression "(code *)PTR_calloc_0004341c" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_calloc_0004341c"))) () ")")) (argument_list "(0x60,1)" (( "(") (number_literal "0x60") (, ",") (number_literal "1") () ")"))))) (; ";")) (if_statement "if (piVar3 == (int *)0x0) {\n    return (int *)0x0;\n  }" (if "if") (parenthesized_expression "(piVar3 == (int *)0x0)" (( "(") (binary_expression "piVar3 == (int *)0x0" (identifier "piVar3") (== "==") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    return (int *)0x0;\n  }" ({ "{") (return_statement "return (int *)0x0;" (return "return") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")) (; ";")) (} "}"))) (expression_statement "piVar3[0xb] = param_3;" (assignment_expression "piVar3[0xb] = param_3" (subscript_expression "piVar3[0xb]" (identifier "piVar3") ([ "[") (number_literal "0xb") (] "]")) (= "=") (identifier "param_3")) (; ";")) (if_statement "if ((param_2 & 2) == 0) {\n    piVar3[0xc] = param_2;\n  }\n  else {\n    piVar3[0xc] = param_2 & 0xfffffdff | 4;\n  }" (if "if") (parenthesized_expression "((param_2 & 2) == 0)" (( "(") (binary_expression "(param_2 & 2) == 0" (parenthesized_expression "(param_2 & 2)" (( "(") (binary_expression "param_2 & 2" (identifier "param_2") (& "&") (number_literal "2")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    piVar3[0xc] = param_2;\n  }" ({ "{") (expression_statement "piVar3[0xc] = param_2;" (assignment_expression "piVar3[0xc] = param_2" (subscript_expression "piVar3[0xc]" (identifier "piVar3") ([ "[") (number_literal "0xc") (] "]")) (= "=") (identifier "param_2")) (; ";")) (} "}")) (else_clause "else {\n    piVar3[0xc] = param_2 & 0xfffffdff | 4;\n  }" (else "else") (compound_statement "{\n    piVar3[0xc] = param_2 & 0xfffffdff | 4;\n  }" ({ "{") (expression_statement "piVar3[0xc] = param_2 & 0xfffffdff | 4;" (assignment_expression "piVar3[0xc] = param_2 & 0xfffffdff | 4" (subscript_expression "piVar3[0xc]" (identifier "piVar3") ([ "[") (number_literal "0xc") (] "]")) (= "=") (binary_expression "param_2 & 0xfffffdff | 4" (binary_expression "param_2 & 0xfffffdff" (identifier "param_2") (& "&") (number_literal "0xfffffdff")) (| "|") (number_literal "4"))) (; ";")) (} "}")))) (expression_statement "iVar10 = *param_1;" (assignment_expression "iVar10 = *param_1" (identifier "iVar10") (= "=") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (; ";")) (expression_statement "piVar3[8] = -100;" (assignment_expression "piVar3[8] = -100" (subscript_expression "piVar3[8]" (identifier "piVar3") ([ "[") (number_literal "8") (] "]")) (= "=") (number_literal "-100")) (; ";")) (if_statement "if (iVar10 == 0) {\n    uVar12 = 0x1000;\n  }\n  else {\n    uVar12 = 0;\n    piVar13 = param_1;\n    do {\n      piVar13 = piVar13 + 1;\n      uVar4 = (*(code *)PTR_strlen_00043564)();\n      if (uVar12 < uVar4) {\n        uVar12 = uVar4;\n      }\n    } while (*piVar13 != 0);\n    uVar12 = uVar12 + 1;\n    if (uVar12 < 0x1000) {\n      uVar12 = 0x1000;\n    }\n  }" (if "if") (parenthesized_expression "(iVar10 == 0)" (( "(") (binary_expression "iVar10 == 0" (identifier "iVar10") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    uVar12 = 0x1000;\n  }" ({ "{") (expression_statement "uVar12 = 0x1000;" (assignment_expression "uVar12 = 0x1000" (identifier "uVar12") (= "=") (number_literal "0x1000")) (; ";")) (} "}")) (else_clause "else {\n    uVar12 = 0;\n    piVar13 = param_1;\n    do {\n      piVar13 = piVar13 + 1;\n      uVar4 = (*(code *)PTR_strlen_00043564)();\n      if (uVar12 < uVar4) {\n        uVar12 = uVar4;\n      }\n    } while (*piVar13 != 0);\n    uVar12 = uVar12 + 1;\n    if (uVar12 < 0x1000) {\n      uVar12 = 0x1000;\n    }\n  }" (else "else") (compound_statement "{\n    uVar12 = 0;\n    piVar13 = param_1;\n    do {\n      piVar13 = piVar13 + 1;\n      uVar4 = (*(code *)PTR_strlen_00043564)();\n      if (uVar12 < uVar4) {\n        uVar12 = uVar4;\n      }\n    } while (*piVar13 != 0);\n    uVar12 = uVar12 + 1;\n    if (uVar12 < 0x1000) {\n      uVar12 = 0x1000;\n    }\n  }" ({ "{") (expression_statement "uVar12 = 0;" (assignment_expression "uVar12 = 0" (identifier "uVar12") (= "=") (number_literal "0")) (; ";")) (expression_statement "piVar13 = param_1;" (assignment_expression "piVar13 = param_1" (identifier "piVar13") (= "=") (identifier "param_1")) (; ";")) (do_statement "do {\n      piVar13 = piVar13 + 1;\n      uVar4 = (*(code *)PTR_strlen_00043564)();\n      if (uVar12 < uVar4) {\n        uVar12 = uVar4;\n      }\n    } while (*piVar13 != 0);" (do "do") (compound_statement "{\n      piVar13 = piVar13 + 1;\n      uVar4 = (*(code *)PTR_strlen_00043564)();\n      if (uVar12 < uVar4) {\n        uVar12 = uVar4;\n      }\n    }" ({ "{") (expression_statement "piVar13 = piVar13 + 1;" (assignment_expression "piVar13 = piVar13 + 1" (identifier "piVar13") (= "=") (binary_expression "piVar13 + 1" (identifier "piVar13") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "uVar4 = (*(code *)PTR_strlen_00043564)();" (assignment_expression "uVar4 = (*(code *)PTR_strlen_00043564)()" (identifier "uVar4") (= "=") (call_expression "(*(code *)PTR_strlen_00043564)()" (parenthesized_expression "(*(code *)PTR_strlen_00043564)" (( "(") (pointer_expression "*(code *)PTR_strlen_00043564" (* "*") (cast_expression "(code *)PTR_strlen_00043564" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_strlen_00043564"))) () ")")) (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if (uVar12 < uVar4) {\n        uVar12 = uVar4;\n      }" (if "if") (parenthesized_expression "(uVar12 < uVar4)" (( "(") (binary_expression "uVar12 < uVar4" (identifier "uVar12") (< "<") (identifier "uVar4")) () ")")) (compound_statement "{\n        uVar12 = uVar4;\n      }" ({ "{") (expression_statement "uVar12 = uVar4;" (assignment_expression "uVar12 = uVar4" (identifier "uVar12") (= "=") (identifier "uVar4")) (; ";")) (} "}"))) (} "}")) (while "while") (parenthesized_expression "(*piVar13 != 0)" (( "(") (binary_expression "*piVar13 != 0" (pointer_expression "*piVar13" (* "*") (identifier "piVar13")) (!= "!=") (number_literal "0")) () ")")) (; ";")) (expression_statement "uVar12 = uVar12 + 1;" (assignment_expression "uVar12 = uVar12 + 1" (identifier "uVar12") (= "=") (binary_expression "uVar12 + 1" (identifier "uVar12") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (uVar12 < 0x1000) {\n      uVar12 = 0x1000;\n    }" (if "if") (parenthesized_expression "(uVar12 < 0x1000)" (( "(") (binary_expression "uVar12 < 0x1000" (identifier "uVar12") (< "<") (number_literal "0x1000")) () ")")) (compound_statement "{\n      uVar12 = 0x1000;\n    }" ({ "{") (expression_statement "uVar12 = 0x1000;" (assignment_expression "uVar12 = 0x1000" (identifier "uVar12") (= "=") (number_literal "0x1000")) (; ";")) (} "}"))) (} "}")))) (expression_statement "iVar10 = FUN_000284b8(piVar3 + 6,piVar3 + 9,uVar12);" (assignment_expression "iVar10 = FUN_000284b8(piVar3 + 6,piVar3 + 9,uVar12)" (identifier "iVar10") (= "=") (call_expression "FUN_000284b8(piVar3 + 6,piVar3 + 9,uVar12)" (identifier "FUN_000284b8") (argument_list "(piVar3 + 6,piVar3 + 9,uVar12)" (( "(") (binary_expression "piVar3 + 6" (identifier "piVar3") (+ "+") (number_literal "6")) (, ",") (binary_expression "piVar3 + 9" (identifier "piVar3") (+ "+") (number_literal "9")) (, ",") (identifier "uVar12") () ")")))) (; ";")) (expression_statement "puVar2 = PTR_LAB_0004326c;" (assignment_expression "puVar2 = PTR_LAB_0004326c" (identifier "puVar2") (= "=") (identifier "PTR_LAB_0004326c")) (; ";")) (expression_statement "puVar1 = PTR_s_ore_than_one_of__i___f___n__only_00043128;" (assignment_expression "puVar1 = PTR_s_ore_than_one_of__i___f___n__only_00043128" (identifier "puVar1") (= "=") (identifier "PTR_s_ore_than_one_of__i___f___n__only_00043128")) (; ";")) (if_statement "if (iVar10 == 0) goto LAB_00029ae0;" (if "if") (parenthesized_expression "(iVar10 == 0)" (( "(") (binary_expression "iVar10 == 0" (identifier "iVar10") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_00029ae0;" (goto "goto") (statement_identifier "LAB_00029ae0") (; ";"))) (if_statement "if (*param_1 == 0) {\n    iVar10 = 0;\nLAB_00029b78:\n    iVar9 = 0;\nLAB_000299c0:\n    local_3c = (code *)(puVar2 + 0x7d20);\n    iVar14 = (*local_3c)(piVar3,puVar1 + 0x44c,0);\n    *piVar3 = iVar14;\n    if (iVar14 != 0) {\n      *(int *)(iVar14 + 8) = iVar9;\n      *(undefined4 *)(iVar14 + 0x30) = 1;\n      iVar11 = piVar3[0xc];\n      *(undefined2 *)(iVar14 + 0x3c) = 9;\n      iVar14 = FUN_0002857c(iVar11,piVar3 + 0xe);\n      if (iVar14 != 0) {\n        if ((piVar3[0xc] & 0x204U) == 0) {\n          iVar10 = FUN_00028630(piVar3[8],piVar3[0xc],\n                                PTR_s_ore_than_one_of__i___f___n__only_00043128 + 0xc4c);\n          piVar3[7] = iVar10;\n          if (iVar10 < 0) {\n            piVar3[0xc] = piVar3[0xc] | 4;\n          }\n        }\n        i_ring_init(piVar3 + 0xf,0xffffffff);\n        return piVar3;\n      }\n    }\nLAB_00029aac:\n    FUN_00027ddc(iVar9);\n    (*(code *)PTR_free_0004363c)(iVar10);\n  }\n  else {\n    pcVar15 = (code *)(PTR_LAB_0004326c + 0x7d20);\n    iVar10 = FUN_00027d20(piVar3,PTR_s_ore_than_one_of__i___f___n__only_00043128 + 0x44c,0);\n    if (iVar10 != 0) {\n      iVar14 = *param_1;\n      *(undefined4 *)(iVar10 + 0x30) = 0xffffffff;\n      *(undefined4 *)(iVar10 + 0x38) = 0xffffffff;\n      if (param_3 == 0) {\n        uVar12 = 1;\n      }\n      else {\n        uVar12 = (uint)(piVar3[0xc] << 0x15) >> 0x1f;\n      }\n      if (iVar14 == 0) goto LAB_00029b78;\n      local_30 = 0;\n      uVar4 = 0;\n      pcVar5 = (code *)(PTR_s_ore_than_one_of__i___f___n__only_00043128 + -0x7d80);\n      iVar11 = 0;\n      do {\n        uVar6 = (*(code *)PTR_strlen_00043564)(iVar14);\n        if ((((param_2 & 0x1000) == 0) && (2 < uVar6)) &&\n           (iVar9 = iVar14 + uVar6, *(char *)(iVar9 + -1) == '/')) {\n          do {\n            if (*(char *)(iVar9 + -2) != '/') break;\n            uVar6 = uVar6 - 1;\n            iVar9 = iVar14 + uVar6;\n          } while (uVar6 != 1);\n        }\n        iVar14 = (*pcVar15)(piVar3,iVar14,uVar6);\n        iVar9 = iVar11;\n        if (iVar14 == 0) goto LAB_00029aac;\n        *(undefined4 *)(iVar14 + 0x30) = 0;\n        *(int *)(iVar14 + 4) = iVar10;\n        *(int *)(iVar14 + 0x18) = iVar14 + 0xe8;\n        iVar9 = iVar14;\n        if (uVar12 == 0) {\n          uVar8 = (*pcVar5)(piVar3[8],piVar3 + 0xc,iVar14,0);\n          *(undefined2 *)(iVar14 + 0x3c) = uVar8;\n          if (param_3 != 0) goto LAB_00029978;\n          *(undefined4 *)(iVar14 + 8) = 0;\n          if (iVar11 != 0) goto LAB_00029b5c;\n        }\n        else if (iVar11 == 0) {\n          uVar8 = (*pcVar5)(piVar3[8],piVar3 + 0xc,iVar14,0);\n          *(undefined2 *)(iVar14 + 0x3c) = uVar8;\n          if (param_3 != 0) goto LAB_00029978;\n          *(undefined4 *)(iVar14 + 8) = 0;\n        }\n        else {\n          *(undefined4 *)(iVar14 + 0x84) = 2;\n          *(undefined4 *)(iVar14 + 0x80) = 0;\n          *(undefined2 *)(iVar14 + 0x3c) = 0xb;\n          if (param_3 == 0) {\n            *(undefined4 *)(iVar14 + 8) = 0;\nLAB_00029b5c:\n            *(int *)(local_30 + 8) = iVar14;\n            iVar9 = iVar11;\n          }\n          else {\nLAB_00029978:\n            *(int *)(iVar14 + 8) = iVar11;\n            iVar14 = local_30;\n          }\n        }\n        local_30 = iVar14;\n        param_1 = param_1 + 1;\n        iVar14 = *param_1;\n        uVar4 = uVar4 + 1;\n        iVar11 = iVar9;\n      } while (iVar14 != 0);\n      if ((param_3 != 0) && (1 < uVar4)) {\n        iVar9 = FUN_00027be4(piVar3,iVar9,uVar4);\n      }\n      goto LAB_000299c0;\n    }\n  }" (if "if") (parenthesized_expression "(*param_1 == 0)" (( "(") (binary_expression "*param_1 == 0" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    iVar10 = 0;\nLAB_00029b78:\n    iVar9 = 0;\nLAB_000299c0:\n    local_3c = (code *)(puVar2 + 0x7d20);\n    iVar14 = (*local_3c)(piVar3,puVar1 + 0x44c,0);\n    *piVar3 = iVar14;\n    if (iVar14 != 0) {\n      *(int *)(iVar14 + 8) = iVar9;\n      *(undefined4 *)(iVar14 + 0x30) = 1;\n      iVar11 = piVar3[0xc];\n      *(undefined2 *)(iVar14 + 0x3c) = 9;\n      iVar14 = FUN_0002857c(iVar11,piVar3 + 0xe);\n      if (iVar14 != 0) {\n        if ((piVar3[0xc] & 0x204U) == 0) {\n          iVar10 = FUN_00028630(piVar3[8],piVar3[0xc],\n                                PTR_s_ore_than_one_of__i___f___n__only_00043128 + 0xc4c);\n          piVar3[7] = iVar10;\n          if (iVar10 < 0) {\n            piVar3[0xc] = piVar3[0xc] | 4;\n          }\n        }\n        i_ring_init(piVar3 + 0xf,0xffffffff);\n        return piVar3;\n      }\n    }\nLAB_00029aac:\n    FUN_00027ddc(iVar9);\n    (*(code *)PTR_free_0004363c)(iVar10);\n  }" ({ "{") (expression_statement "iVar10 = 0;" (assignment_expression "iVar10 = 0" (identifier "iVar10") (= "=") (number_literal "0")) (; ";")) (labeled_statement "LAB_00029b78:\n    iVar9 = 0;" (statement_identifier "LAB_00029b78") (: ":") (expression_statement "iVar9 = 0;" (assignment_expression "iVar9 = 0" (identifier "iVar9") (= "=") (number_literal "0")) (; ";"))) (labeled_statement "LAB_000299c0:\n    local_3c = (code *)(puVar2 + 0x7d20);" (statement_identifier "LAB_000299c0") (: ":") (expression_statement "local_3c = (code *)(puVar2 + 0x7d20);" (assignment_expression "local_3c = (code *)(puVar2 + 0x7d20)" (identifier "local_3c") (= "=") (cast_expression "(code *)(puVar2 + 0x7d20)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar2 + 0x7d20)" (( "(") (binary_expression "puVar2 + 0x7d20" (identifier "puVar2") (+ "+") (number_literal "0x7d20")) () ")")))) (; ";"))) (expression_statement "iVar14 = (*local_3c)(piVar3,puVar1 + 0x44c,0);" (assignment_expression "iVar14 = (*local_3c)(piVar3,puVar1 + 0x44c,0)" (identifier "iVar14") (= "=") (call_expression "(*local_3c)(piVar3,puVar1 + 0x44c,0)" (parenthesized_expression "(*local_3c)" (( "(") (pointer_expression "*local_3c" (* "*") (identifier "local_3c")) () ")")) (argument_list "(piVar3,puVar1 + 0x44c,0)" (( "(") (identifier "piVar3") (, ",") (binary_expression "puVar1 + 0x44c" (identifier "puVar1") (+ "+") (number_literal "0x44c")) (, ",") (number_literal "0") () ")")))) (; ";")) (expression_statement "*piVar3 = iVar14;" (assignment_expression "*piVar3 = iVar14" (pointer_expression "*piVar3" (* "*") (identifier "piVar3")) (= "=") (identifier "iVar14")) (; ";")) (if_statement "if (iVar14 != 0) {\n      *(int *)(iVar14 + 8) = iVar9;\n      *(undefined4 *)(iVar14 + 0x30) = 1;\n      iVar11 = piVar3[0xc];\n      *(undefined2 *)(iVar14 + 0x3c) = 9;\n      iVar14 = FUN_0002857c(iVar11,piVar3 + 0xe);\n      if (iVar14 != 0) {\n        if ((piVar3[0xc] & 0x204U) == 0) {\n          iVar10 = FUN_00028630(piVar3[8],piVar3[0xc],\n                                PTR_s_ore_than_one_of__i___f___n__only_00043128 + 0xc4c);\n          piVar3[7] = iVar10;\n          if (iVar10 < 0) {\n            piVar3[0xc] = piVar3[0xc] | 4;\n          }\n        }\n        i_ring_init(piVar3 + 0xf,0xffffffff);\n        return piVar3;\n      }\n    }" (if "if") (parenthesized_expression "(iVar14 != 0)" (( "(") (binary_expression "iVar14 != 0" (identifier "iVar14") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      *(int *)(iVar14 + 8) = iVar9;\n      *(undefined4 *)(iVar14 + 0x30) = 1;\n      iVar11 = piVar3[0xc];\n      *(undefined2 *)(iVar14 + 0x3c) = 9;\n      iVar14 = FUN_0002857c(iVar11,piVar3 + 0xe);\n      if (iVar14 != 0) {\n        if ((piVar3[0xc] & 0x204U) == 0) {\n          iVar10 = FUN_00028630(piVar3[8],piVar3[0xc],\n                                PTR_s_ore_than_one_of__i___f___n__only_00043128 + 0xc4c);\n          piVar3[7] = iVar10;\n          if (iVar10 < 0) {\n            piVar3[0xc] = piVar3[0xc] | 4;\n          }\n        }\n        i_ring_init(piVar3 + 0xf,0xffffffff);\n        return piVar3;\n      }\n    }" ({ "{") (expression_statement "*(int *)(iVar14 + 8) = iVar9;" (assignment_expression "*(int *)(iVar14 + 8) = iVar9" (pointer_expression "*(int *)(iVar14 + 8)" (* "*") (cast_expression "(int *)(iVar14 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar14 + 8)" (( "(") (binary_expression "iVar14 + 8" (identifier "iVar14") (+ "+") (number_literal "8")) () ")")))) (= "=") (identifier "iVar9")) (; ";")) (expression_statement "*(undefined4 *)(iVar14 + 0x30) = 1;" (assignment_expression "*(undefined4 *)(iVar14 + 0x30) = 1" (pointer_expression "*(undefined4 *)(iVar14 + 0x30)" (* "*") (cast_expression "(undefined4 *)(iVar14 + 0x30)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar14 + 0x30)" (( "(") (binary_expression "iVar14 + 0x30" (identifier "iVar14") (+ "+") (number_literal "0x30")) () ")")))) (= "=") (number_literal "1")) (; ";")) (expression_statement "iVar11 = piVar3[0xc];" (assignment_expression "iVar11 = piVar3[0xc]" (identifier "iVar11") (= "=") (subscript_expression "piVar3[0xc]" (identifier "piVar3") ([ "[") (number_literal "0xc") (] "]"))) (; ";")) (expression_statement "*(undefined2 *)(iVar14 + 0x3c) = 9;" (assignment_expression "*(undefined2 *)(iVar14 + 0x3c) = 9" (pointer_expression "*(undefined2 *)(iVar14 + 0x3c)" (* "*") (cast_expression "(undefined2 *)(iVar14 + 0x3c)" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar14 + 0x3c)" (( "(") (binary_expression "iVar14 + 0x3c" (identifier "iVar14") (+ "+") (number_literal "0x3c")) () ")")))) (= "=") (number_literal "9")) (; ";")) (expression_statement "iVar14 = FUN_0002857c(iVar11,piVar3 + 0xe);" (assignment_expression "iVar14 = FUN_0002857c(iVar11,piVar3 + 0xe)" (identifier "iVar14") (= "=") (call_expression "FUN_0002857c(iVar11,piVar3 + 0xe)" (identifier "FUN_0002857c") (argument_list "(iVar11,piVar3 + 0xe)" (( "(") (identifier "iVar11") (, ",") (binary_expression "piVar3 + 0xe" (identifier "piVar3") (+ "+") (number_literal "0xe")) () ")")))) (; ";")) (if_statement "if (iVar14 != 0) {\n        if ((piVar3[0xc] & 0x204U) == 0) {\n          iVar10 = FUN_00028630(piVar3[8],piVar3[0xc],\n                                PTR_s_ore_than_one_of__i___f___n__only_00043128 + 0xc4c);\n          piVar3[7] = iVar10;\n          if (iVar10 < 0) {\n            piVar3[0xc] = piVar3[0xc] | 4;\n          }\n        }\n        i_ring_init(piVar3 + 0xf,0xffffffff);\n        return piVar3;\n      }" (if "if") (parenthesized_expression "(iVar14 != 0)" (( "(") (binary_expression "iVar14 != 0" (identifier "iVar14") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        if ((piVar3[0xc] & 0x204U) == 0) {\n          iVar10 = FUN_00028630(piVar3[8],piVar3[0xc],\n                                PTR_s_ore_than_one_of__i___f___n__only_00043128 + 0xc4c);\n          piVar3[7] = iVar10;\n          if (iVar10 < 0) {\n            piVar3[0xc] = piVar3[0xc] | 4;\n          }\n        }\n        i_ring_init(piVar3 + 0xf,0xffffffff);\n        return piVar3;\n      }" ({ "{") (if_statement "if ((piVar3[0xc] & 0x204U) == 0) {\n          iVar10 = FUN_00028630(piVar3[8],piVar3[0xc],\n                                PTR_s_ore_than_one_of__i___f___n__only_00043128 + 0xc4c);\n          piVar3[7] = iVar10;\n          if (iVar10 < 0) {\n            piVar3[0xc] = piVar3[0xc] | 4;\n          }\n        }" (if "if") (parenthesized_expression "((piVar3[0xc] & 0x204U) == 0)" (( "(") (binary_expression "(piVar3[0xc] & 0x204U) == 0" (parenthesized_expression "(piVar3[0xc] & 0x204U)" (( "(") (binary_expression "piVar3[0xc] & 0x204U" (subscript_expression "piVar3[0xc]" (identifier "piVar3") ([ "[") (number_literal "0xc") (] "]")) (& "&") (number_literal "0x204U")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          iVar10 = FUN_00028630(piVar3[8],piVar3[0xc],\n                                PTR_s_ore_than_one_of__i___f___n__only_00043128 + 0xc4c);\n          piVar3[7] = iVar10;\n          if (iVar10 < 0) {\n            piVar3[0xc] = piVar3[0xc] | 4;\n          }\n        }" ({ "{") (expression_statement "iVar10 = FUN_00028630(piVar3[8],piVar3[0xc],\n                                PTR_s_ore_than_one_of__i___f___n__only_00043128 + 0xc4c);" (assignment_expression "iVar10 = FUN_00028630(piVar3[8],piVar3[0xc],\n                                PTR_s_ore_than_one_of__i___f___n__only_00043128 + 0xc4c)" (identifier "iVar10") (= "=") (call_expression "FUN_00028630(piVar3[8],piVar3[0xc],\n                                PTR_s_ore_than_one_of__i___f___n__only_00043128 + 0xc4c)" (identifier "FUN_00028630") (argument_list "(piVar3[8],piVar3[0xc],\n                                PTR_s_ore_than_one_of__i___f___n__only_00043128 + 0xc4c)" (( "(") (subscript_expression "piVar3[8]" (identifier "piVar3") ([ "[") (number_literal "8") (] "]")) (, ",") (subscript_expression "piVar3[0xc]" (identifier "piVar3") ([ "[") (number_literal "0xc") (] "]")) (, ",") (binary_expression "PTR_s_ore_than_one_of__i___f___n__only_00043128 + 0xc4c" (identifier "PTR_s_ore_than_one_of__i___f___n__only_00043128") (+ "+") (number_literal "0xc4c")) () ")")))) (; ";")) (expression_statement "piVar3[7] = iVar10;" (assignment_expression "piVar3[7] = iVar10" (subscript_expression "piVar3[7]" (identifier "piVar3") ([ "[") (number_literal "7") (] "]")) (= "=") (identifier "iVar10")) (; ";")) (if_statement "if (iVar10 < 0) {\n            piVar3[0xc] = piVar3[0xc] | 4;\n          }" (if "if") (parenthesized_expression "(iVar10 < 0)" (( "(") (binary_expression "iVar10 < 0" (identifier "iVar10") (< "<") (number_literal "0")) () ")")) (compound_statement "{\n            piVar3[0xc] = piVar3[0xc] | 4;\n          }" ({ "{") (expression_statement "piVar3[0xc] = piVar3[0xc] | 4;" (assignment_expression "piVar3[0xc] = piVar3[0xc] | 4" (subscript_expression "piVar3[0xc]" (identifier "piVar3") ([ "[") (number_literal "0xc") (] "]")) (= "=") (binary_expression "piVar3[0xc] | 4" (subscript_expression "piVar3[0xc]" (identifier "piVar3") ([ "[") (number_literal "0xc") (] "]")) (| "|") (number_literal "4"))) (; ";")) (} "}"))) (} "}"))) (expression_statement "i_ring_init(piVar3 + 0xf,0xffffffff);" (call_expression "i_ring_init(piVar3 + 0xf,0xffffffff)" (identifier "i_ring_init") (argument_list "(piVar3 + 0xf,0xffffffff)" (( "(") (binary_expression "piVar3 + 0xf" (identifier "piVar3") (+ "+") (number_literal "0xf")) (, ",") (number_literal "0xffffffff") () ")"))) (; ";")) (return_statement "return piVar3;" (return "return") (identifier "piVar3") (; ";")) (} "}"))) (} "}"))) (labeled_statement "LAB_00029aac:\n    FUN_00027ddc(iVar9);" (statement_identifier "LAB_00029aac") (: ":") (expression_statement "FUN_00027ddc(iVar9);" (call_expression "FUN_00027ddc(iVar9)" (identifier "FUN_00027ddc") (argument_list "(iVar9)" (( "(") (identifier "iVar9") () ")"))) (; ";"))) (expression_statement "(*(code *)PTR_free_0004363c)(iVar10);" (call_expression "(*(code *)PTR_free_0004363c)(iVar10)" (parenthesized_expression "(*(code *)PTR_free_0004363c)" (( "(") (pointer_expression "*(code *)PTR_free_0004363c" (* "*") (cast_expression "(code *)PTR_free_0004363c" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_free_0004363c"))) () ")")) (argument_list "(iVar10)" (( "(") (identifier "iVar10") () ")"))) (; ";")) (} "}")) (else_clause "else {\n    pcVar15 = (code *)(PTR_LAB_0004326c + 0x7d20);\n    iVar10 = FUN_00027d20(piVar3,PTR_s_ore_than_one_of__i___f___n__only_00043128 + 0x44c,0);\n    if (iVar10 != 0) {\n      iVar14 = *param_1;\n      *(undefined4 *)(iVar10 + 0x30) = 0xffffffff;\n      *(undefined4 *)(iVar10 + 0x38) = 0xffffffff;\n      if (param_3 == 0) {\n        uVar12 = 1;\n      }\n      else {\n        uVar12 = (uint)(piVar3[0xc] << 0x15) >> 0x1f;\n      }\n      if (iVar14 == 0) goto LAB_00029b78;\n      local_30 = 0;\n      uVar4 = 0;\n      pcVar5 = (code *)(PTR_s_ore_than_one_of__i___f___n__only_00043128 + -0x7d80);\n      iVar11 = 0;\n      do {\n        uVar6 = (*(code *)PTR_strlen_00043564)(iVar14);\n        if ((((param_2 & 0x1000) == 0) && (2 < uVar6)) &&\n           (iVar9 = iVar14 + uVar6, *(char *)(iVar9 + -1) == '/')) {\n          do {\n            if (*(char *)(iVar9 + -2) != '/') break;\n            uVar6 = uVar6 - 1;\n            iVar9 = iVar14 + uVar6;\n          } while (uVar6 != 1);\n        }\n        iVar14 = (*pcVar15)(piVar3,iVar14,uVar6);\n        iVar9 = iVar11;\n        if (iVar14 == 0) goto LAB_00029aac;\n        *(undefined4 *)(iVar14 + 0x30) = 0;\n        *(int *)(iVar14 + 4) = iVar10;\n        *(int *)(iVar14 + 0x18) = iVar14 + 0xe8;\n        iVar9 = iVar14;\n        if (uVar12 == 0) {\n          uVar8 = (*pcVar5)(piVar3[8],piVar3 + 0xc,iVar14,0);\n          *(undefined2 *)(iVar14 + 0x3c) = uVar8;\n          if (param_3 != 0) goto LAB_00029978;\n          *(undefined4 *)(iVar14 + 8) = 0;\n          if (iVar11 != 0) goto LAB_00029b5c;\n        }\n        else if (iVar11 == 0) {\n          uVar8 = (*pcVar5)(piVar3[8],piVar3 + 0xc,iVar14,0);\n          *(undefined2 *)(iVar14 + 0x3c) = uVar8;\n          if (param_3 != 0) goto LAB_00029978;\n          *(undefined4 *)(iVar14 + 8) = 0;\n        }\n        else {\n          *(undefined4 *)(iVar14 + 0x84) = 2;\n          *(undefined4 *)(iVar14 + 0x80) = 0;\n          *(undefined2 *)(iVar14 + 0x3c) = 0xb;\n          if (param_3 == 0) {\n            *(undefined4 *)(iVar14 + 8) = 0;\nLAB_00029b5c:\n            *(int *)(local_30 + 8) = iVar14;\n            iVar9 = iVar11;\n          }\n          else {\nLAB_00029978:\n            *(int *)(iVar14 + 8) = iVar11;\n            iVar14 = local_30;\n          }\n        }\n        local_30 = iVar14;\n        param_1 = param_1 + 1;\n        iVar14 = *param_1;\n        uVar4 = uVar4 + 1;\n        iVar11 = iVar9;\n      } while (iVar14 != 0);\n      if ((param_3 != 0) && (1 < uVar4)) {\n        iVar9 = FUN_00027be4(piVar3,iVar9,uVar4);\n      }\n      goto LAB_000299c0;\n    }\n  }" (else "else") (compound_statement "{\n    pcVar15 = (code *)(PTR_LAB_0004326c + 0x7d20);\n    iVar10 = FUN_00027d20(piVar3,PTR_s_ore_than_one_of__i___f___n__only_00043128 + 0x44c,0);\n    if (iVar10 != 0) {\n      iVar14 = *param_1;\n      *(undefined4 *)(iVar10 + 0x30) = 0xffffffff;\n      *(undefined4 *)(iVar10 + 0x38) = 0xffffffff;\n      if (param_3 == 0) {\n        uVar12 = 1;\n      }\n      else {\n        uVar12 = (uint)(piVar3[0xc] << 0x15) >> 0x1f;\n      }\n      if (iVar14 == 0) goto LAB_00029b78;\n      local_30 = 0;\n      uVar4 = 0;\n      pcVar5 = (code *)(PTR_s_ore_than_one_of__i___f___n__only_00043128 + -0x7d80);\n      iVar11 = 0;\n      do {\n        uVar6 = (*(code *)PTR_strlen_00043564)(iVar14);\n        if ((((param_2 & 0x1000) == 0) && (2 < uVar6)) &&\n           (iVar9 = iVar14 + uVar6, *(char *)(iVar9 + -1) == '/')) {\n          do {\n            if (*(char *)(iVar9 + -2) != '/') break;\n            uVar6 = uVar6 - 1;\n            iVar9 = iVar14 + uVar6;\n          } while (uVar6 != 1);\n        }\n        iVar14 = (*pcVar15)(piVar3,iVar14,uVar6);\n        iVar9 = iVar11;\n        if (iVar14 == 0) goto LAB_00029aac;\n        *(undefined4 *)(iVar14 + 0x30) = 0;\n        *(int *)(iVar14 + 4) = iVar10;\n        *(int *)(iVar14 + 0x18) = iVar14 + 0xe8;\n        iVar9 = iVar14;\n        if (uVar12 == 0) {\n          uVar8 = (*pcVar5)(piVar3[8],piVar3 + 0xc,iVar14,0);\n          *(undefined2 *)(iVar14 + 0x3c) = uVar8;\n          if (param_3 != 0) goto LAB_00029978;\n          *(undefined4 *)(iVar14 + 8) = 0;\n          if (iVar11 != 0) goto LAB_00029b5c;\n        }\n        else if (iVar11 == 0) {\n          uVar8 = (*pcVar5)(piVar3[8],piVar3 + 0xc,iVar14,0);\n          *(undefined2 *)(iVar14 + 0x3c) = uVar8;\n          if (param_3 != 0) goto LAB_00029978;\n          *(undefined4 *)(iVar14 + 8) = 0;\n        }\n        else {\n          *(undefined4 *)(iVar14 + 0x84) = 2;\n          *(undefined4 *)(iVar14 + 0x80) = 0;\n          *(undefined2 *)(iVar14 + 0x3c) = 0xb;\n          if (param_3 == 0) {\n            *(undefined4 *)(iVar14 + 8) = 0;\nLAB_00029b5c:\n            *(int *)(local_30 + 8) = iVar14;\n            iVar9 = iVar11;\n          }\n          else {\nLAB_00029978:\n            *(int *)(iVar14 + 8) = iVar11;\n            iVar14 = local_30;\n          }\n        }\n        local_30 = iVar14;\n        param_1 = param_1 + 1;\n        iVar14 = *param_1;\n        uVar4 = uVar4 + 1;\n        iVar11 = iVar9;\n      } while (iVar14 != 0);\n      if ((param_3 != 0) && (1 < uVar4)) {\n        iVar9 = FUN_00027be4(piVar3,iVar9,uVar4);\n      }\n      goto LAB_000299c0;\n    }\n  }" ({ "{") (expression_statement "pcVar15 = (code *)(PTR_LAB_0004326c + 0x7d20);" (assignment_expression "pcVar15 = (code *)(PTR_LAB_0004326c + 0x7d20)" (identifier "pcVar15") (= "=") (cast_expression "(code *)(PTR_LAB_0004326c + 0x7d20)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_LAB_0004326c + 0x7d20)" (( "(") (binary_expression "PTR_LAB_0004326c + 0x7d20" (identifier "PTR_LAB_0004326c") (+ "+") (number_literal "0x7d20")) () ")")))) (; ";")) (expression_statement "iVar10 = FUN_00027d20(piVar3,PTR_s_ore_than_one_of__i___f___n__only_00043128 + 0x44c,0);" (assignment_expression "iVar10 = FUN_00027d20(piVar3,PTR_s_ore_than_one_of__i___f___n__only_00043128 + 0x44c,0)" (identifier "iVar10") (= "=") (call_expression "FUN_00027d20(piVar3,PTR_s_ore_than_one_of__i___f___n__only_00043128 + 0x44c,0)" (identifier "FUN_00027d20") (argument_list "(piVar3,PTR_s_ore_than_one_of__i___f___n__only_00043128 + 0x44c,0)" (( "(") (identifier "piVar3") (, ",") (binary_expression "PTR_s_ore_than_one_of__i___f___n__only_00043128 + 0x44c" (identifier "PTR_s_ore_than_one_of__i___f___n__only_00043128") (+ "+") (number_literal "0x44c")) (, ",") (number_literal "0") () ")")))) (; ";")) (if_statement "if (iVar10 != 0) {\n      iVar14 = *param_1;\n      *(undefined4 *)(iVar10 + 0x30) = 0xffffffff;\n      *(undefined4 *)(iVar10 + 0x38) = 0xffffffff;\n      if (param_3 == 0) {\n        uVar12 = 1;\n      }\n      else {\n        uVar12 = (uint)(piVar3[0xc] << 0x15) >> 0x1f;\n      }\n      if (iVar14 == 0) goto LAB_00029b78;\n      local_30 = 0;\n      uVar4 = 0;\n      pcVar5 = (code *)(PTR_s_ore_than_one_of__i___f___n__only_00043128 + -0x7d80);\n      iVar11 = 0;\n      do {\n        uVar6 = (*(code *)PTR_strlen_00043564)(iVar14);\n        if ((((param_2 & 0x1000) == 0) && (2 < uVar6)) &&\n           (iVar9 = iVar14 + uVar6, *(char *)(iVar9 + -1) == '/')) {\n          do {\n            if (*(char *)(iVar9 + -2) != '/') break;\n            uVar6 = uVar6 - 1;\n            iVar9 = iVar14 + uVar6;\n          } while (uVar6 != 1);\n        }\n        iVar14 = (*pcVar15)(piVar3,iVar14,uVar6);\n        iVar9 = iVar11;\n        if (iVar14 == 0) goto LAB_00029aac;\n        *(undefined4 *)(iVar14 + 0x30) = 0;\n        *(int *)(iVar14 + 4) = iVar10;\n        *(int *)(iVar14 + 0x18) = iVar14 + 0xe8;\n        iVar9 = iVar14;\n        if (uVar12 == 0) {\n          uVar8 = (*pcVar5)(piVar3[8],piVar3 + 0xc,iVar14,0);\n          *(undefined2 *)(iVar14 + 0x3c) = uVar8;\n          if (param_3 != 0) goto LAB_00029978;\n          *(undefined4 *)(iVar14 + 8) = 0;\n          if (iVar11 != 0) goto LAB_00029b5c;\n        }\n        else if (iVar11 == 0) {\n          uVar8 = (*pcVar5)(piVar3[8],piVar3 + 0xc,iVar14,0);\n          *(undefined2 *)(iVar14 + 0x3c) = uVar8;\n          if (param_3 != 0) goto LAB_00029978;\n          *(undefined4 *)(iVar14 + 8) = 0;\n        }\n        else {\n          *(undefined4 *)(iVar14 + 0x84) = 2;\n          *(undefined4 *)(iVar14 + 0x80) = 0;\n          *(undefined2 *)(iVar14 + 0x3c) = 0xb;\n          if (param_3 == 0) {\n            *(undefined4 *)(iVar14 + 8) = 0;\nLAB_00029b5c:\n            *(int *)(local_30 + 8) = iVar14;\n            iVar9 = iVar11;\n          }\n          else {\nLAB_00029978:\n            *(int *)(iVar14 + 8) = iVar11;\n            iVar14 = local_30;\n          }\n        }\n        local_30 = iVar14;\n        param_1 = param_1 + 1;\n        iVar14 = *param_1;\n        uVar4 = uVar4 + 1;\n        iVar11 = iVar9;\n      } while (iVar14 != 0);\n      if ((param_3 != 0) && (1 < uVar4)) {\n        iVar9 = FUN_00027be4(piVar3,iVar9,uVar4);\n      }\n      goto LAB_000299c0;\n    }" (if "if") (parenthesized_expression "(iVar10 != 0)" (( "(") (binary_expression "iVar10 != 0" (identifier "iVar10") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      iVar14 = *param_1;\n      *(undefined4 *)(iVar10 + 0x30) = 0xffffffff;\n      *(undefined4 *)(iVar10 + 0x38) = 0xffffffff;\n      if (param_3 == 0) {\n        uVar12 = 1;\n      }\n      else {\n        uVar12 = (uint)(piVar3[0xc] << 0x15) >> 0x1f;\n      }\n      if (iVar14 == 0) goto LAB_00029b78;\n      local_30 = 0;\n      uVar4 = 0;\n      pcVar5 = (code *)(PTR_s_ore_than_one_of__i___f___n__only_00043128 + -0x7d80);\n      iVar11 = 0;\n      do {\n        uVar6 = (*(code *)PTR_strlen_00043564)(iVar14);\n        if ((((param_2 & 0x1000) == 0) && (2 < uVar6)) &&\n           (iVar9 = iVar14 + uVar6, *(char *)(iVar9 + -1) == '/')) {\n          do {\n            if (*(char *)(iVar9 + -2) != '/') break;\n            uVar6 = uVar6 - 1;\n            iVar9 = iVar14 + uVar6;\n          } while (uVar6 != 1);\n        }\n        iVar14 = (*pcVar15)(piVar3,iVar14,uVar6);\n        iVar9 = iVar11;\n        if (iVar14 == 0) goto LAB_00029aac;\n        *(undefined4 *)(iVar14 + 0x30) = 0;\n        *(int *)(iVar14 + 4) = iVar10;\n        *(int *)(iVar14 + 0x18) = iVar14 + 0xe8;\n        iVar9 = iVar14;\n        if (uVar12 == 0) {\n          uVar8 = (*pcVar5)(piVar3[8],piVar3 + 0xc,iVar14,0);\n          *(undefined2 *)(iVar14 + 0x3c) = uVar8;\n          if (param_3 != 0) goto LAB_00029978;\n          *(undefined4 *)(iVar14 + 8) = 0;\n          if (iVar11 != 0) goto LAB_00029b5c;\n        }\n        else if (iVar11 == 0) {\n          uVar8 = (*pcVar5)(piVar3[8],piVar3 + 0xc,iVar14,0);\n          *(undefined2 *)(iVar14 + 0x3c) = uVar8;\n          if (param_3 != 0) goto LAB_00029978;\n          *(undefined4 *)(iVar14 + 8) = 0;\n        }\n        else {\n          *(undefined4 *)(iVar14 + 0x84) = 2;\n          *(undefined4 *)(iVar14 + 0x80) = 0;\n          *(undefined2 *)(iVar14 + 0x3c) = 0xb;\n          if (param_3 == 0) {\n            *(undefined4 *)(iVar14 + 8) = 0;\nLAB_00029b5c:\n            *(int *)(local_30 + 8) = iVar14;\n            iVar9 = iVar11;\n          }\n          else {\nLAB_00029978:\n            *(int *)(iVar14 + 8) = iVar11;\n            iVar14 = local_30;\n          }\n        }\n        local_30 = iVar14;\n        param_1 = param_1 + 1;\n        iVar14 = *param_1;\n        uVar4 = uVar4 + 1;\n        iVar11 = iVar9;\n      } while (iVar14 != 0);\n      if ((param_3 != 0) && (1 < uVar4)) {\n        iVar9 = FUN_00027be4(piVar3,iVar9,uVar4);\n      }\n      goto LAB_000299c0;\n    }" ({ "{") (expression_statement "iVar14 = *param_1;" (assignment_expression "iVar14 = *param_1" (identifier "iVar14") (= "=") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (; ";")) (expression_statement "*(undefined4 *)(iVar10 + 0x30) = 0xffffffff;" (assignment_expression "*(undefined4 *)(iVar10 + 0x30) = 0xffffffff" (pointer_expression "*(undefined4 *)(iVar10 + 0x30)" (* "*") (cast_expression "(undefined4 *)(iVar10 + 0x30)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar10 + 0x30)" (( "(") (binary_expression "iVar10 + 0x30" (identifier "iVar10") (+ "+") (number_literal "0x30")) () ")")))) (= "=") (number_literal "0xffffffff")) (; ";")) (expression_statement "*(undefined4 *)(iVar10 + 0x38) = 0xffffffff;" (assignment_expression "*(undefined4 *)(iVar10 + 0x38) = 0xffffffff" (pointer_expression "*(undefined4 *)(iVar10 + 0x38)" (* "*") (cast_expression "(undefined4 *)(iVar10 + 0x38)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar10 + 0x38)" (( "(") (binary_expression "iVar10 + 0x38" (identifier "iVar10") (+ "+") (number_literal "0x38")) () ")")))) (= "=") (number_literal "0xffffffff")) (; ";")) (if_statement "if (param_3 == 0) {\n        uVar12 = 1;\n      }\n      else {\n        uVar12 = (uint)(piVar3[0xc] << 0x15) >> 0x1f;\n      }" (if "if") (parenthesized_expression "(param_3 == 0)" (( "(") (binary_expression "param_3 == 0" (identifier "param_3") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        uVar12 = 1;\n      }" ({ "{") (expression_statement "uVar12 = 1;" (assignment_expression "uVar12 = 1" (identifier "uVar12") (= "=") (number_literal "1")) (; ";")) (} "}")) (else_clause "else {\n        uVar12 = (uint)(piVar3[0xc] << 0x15) >> 0x1f;\n      }" (else "else") (compound_statement "{\n        uVar12 = (uint)(piVar3[0xc] << 0x15) >> 0x1f;\n      }" ({ "{") (expression_statement "uVar12 = (uint)(piVar3[0xc] << 0x15) >> 0x1f;" (assignment_expression "uVar12 = (uint)(piVar3[0xc] << 0x15) >> 0x1f" (identifier "uVar12") (= "=") (binary_expression "(uint)(piVar3[0xc] << 0x15) >> 0x1f" (call_expression "(uint)(piVar3[0xc] << 0x15)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(piVar3[0xc] << 0x15)" (( "(") (binary_expression "piVar3[0xc] << 0x15" (subscript_expression "piVar3[0xc]" (identifier "piVar3") ([ "[") (number_literal "0xc") (] "]")) (<< "<<") (number_literal "0x15")) () ")"))) (>> ">>") (number_literal "0x1f"))) (; ";")) (} "}")))) (if_statement "if (iVar14 == 0) goto LAB_00029b78;" (if "if") (parenthesized_expression "(iVar14 == 0)" (( "(") (binary_expression "iVar14 == 0" (identifier "iVar14") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_00029b78;" (goto "goto") (statement_identifier "LAB_00029b78") (; ";"))) (expression_statement "local_30 = 0;" (assignment_expression "local_30 = 0" (identifier "local_30") (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar4 = 0;" (assignment_expression "uVar4 = 0" (identifier "uVar4") (= "=") (number_literal "0")) (; ";")) (expression_statement "pcVar5 = (code *)(PTR_s_ore_than_one_of__i___f___n__only_00043128 + -0x7d80);" (assignment_expression "pcVar5 = (code *)(PTR_s_ore_than_one_of__i___f___n__only_00043128 + -0x7d80)" (identifier "pcVar5") (= "=") (cast_expression "(code *)(PTR_s_ore_than_one_of__i___f___n__only_00043128 + -0x7d80)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_s_ore_than_one_of__i___f___n__only_00043128 + -0x7d80)" (( "(") (binary_expression "PTR_s_ore_than_one_of__i___f___n__only_00043128 + -0x7d80" (identifier "PTR_s_ore_than_one_of__i___f___n__only_00043128") (+ "+") (number_literal "-0x7d80")) () ")")))) (; ";")) (expression_statement "iVar11 = 0;" (assignment_expression "iVar11 = 0" (identifier "iVar11") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n        uVar6 = (*(code *)PTR_strlen_00043564)(iVar14);\n        if ((((param_2 & 0x1000) == 0) && (2 < uVar6)) &&\n           (iVar9 = iVar14 + uVar6, *(char *)(iVar9 + -1) == '/')) {\n          do {\n            if (*(char *)(iVar9 + -2) != '/') break;\n            uVar6 = uVar6 - 1;\n            iVar9 = iVar14 + uVar6;\n          } while (uVar6 != 1);\n        }\n        iVar14 = (*pcVar15)(piVar3,iVar14,uVar6);\n        iVar9 = iVar11;\n        if (iVar14 == 0) goto LAB_00029aac;\n        *(undefined4 *)(iVar14 + 0x30) = 0;\n        *(int *)(iVar14 + 4) = iVar10;\n        *(int *)(iVar14 + 0x18) = iVar14 + 0xe8;\n        iVar9 = iVar14;\n        if (uVar12 == 0) {\n          uVar8 = (*pcVar5)(piVar3[8],piVar3 + 0xc,iVar14,0);\n          *(undefined2 *)(iVar14 + 0x3c) = uVar8;\n          if (param_3 != 0) goto LAB_00029978;\n          *(undefined4 *)(iVar14 + 8) = 0;\n          if (iVar11 != 0) goto LAB_00029b5c;\n        }\n        else if (iVar11 == 0) {\n          uVar8 = (*pcVar5)(piVar3[8],piVar3 + 0xc,iVar14,0);\n          *(undefined2 *)(iVar14 + 0x3c) = uVar8;\n          if (param_3 != 0) goto LAB_00029978;\n          *(undefined4 *)(iVar14 + 8) = 0;\n        }\n        else {\n          *(undefined4 *)(iVar14 + 0x84) = 2;\n          *(undefined4 *)(iVar14 + 0x80) = 0;\n          *(undefined2 *)(iVar14 + 0x3c) = 0xb;\n          if (param_3 == 0) {\n            *(undefined4 *)(iVar14 + 8) = 0;\nLAB_00029b5c:\n            *(int *)(local_30 + 8) = iVar14;\n            iVar9 = iVar11;\n          }\n          else {\nLAB_00029978:\n            *(int *)(iVar14 + 8) = iVar11;\n            iVar14 = local_30;\n          }\n        }\n        local_30 = iVar14;\n        param_1 = param_1 + 1;\n        iVar14 = *param_1;\n        uVar4 = uVar4 + 1;\n        iVar11 = iVar9;\n      } while (iVar14 != 0);" (do "do") (compound_statement "{\n        uVar6 = (*(code *)PTR_strlen_00043564)(iVar14);\n        if ((((param_2 & 0x1000) == 0) && (2 < uVar6)) &&\n           (iVar9 = iVar14 + uVar6, *(char *)(iVar9 + -1) == '/')) {\n          do {\n            if (*(char *)(iVar9 + -2) != '/') break;\n            uVar6 = uVar6 - 1;\n            iVar9 = iVar14 + uVar6;\n          } while (uVar6 != 1);\n        }\n        iVar14 = (*pcVar15)(piVar3,iVar14,uVar6);\n        iVar9 = iVar11;\n        if (iVar14 == 0) goto LAB_00029aac;\n        *(undefined4 *)(iVar14 + 0x30) = 0;\n        *(int *)(iVar14 + 4) = iVar10;\n        *(int *)(iVar14 + 0x18) = iVar14 + 0xe8;\n        iVar9 = iVar14;\n        if (uVar12 == 0) {\n          uVar8 = (*pcVar5)(piVar3[8],piVar3 + 0xc,iVar14,0);\n          *(undefined2 *)(iVar14 + 0x3c) = uVar8;\n          if (param_3 != 0) goto LAB_00029978;\n          *(undefined4 *)(iVar14 + 8) = 0;\n          if (iVar11 != 0) goto LAB_00029b5c;\n        }\n        else if (iVar11 == 0) {\n          uVar8 = (*pcVar5)(piVar3[8],piVar3 + 0xc,iVar14,0);\n          *(undefined2 *)(iVar14 + 0x3c) = uVar8;\n          if (param_3 != 0) goto LAB_00029978;\n          *(undefined4 *)(iVar14 + 8) = 0;\n        }\n        else {\n          *(undefined4 *)(iVar14 + 0x84) = 2;\n          *(undefined4 *)(iVar14 + 0x80) = 0;\n          *(undefined2 *)(iVar14 + 0x3c) = 0xb;\n          if (param_3 == 0) {\n            *(undefined4 *)(iVar14 + 8) = 0;\nLAB_00029b5c:\n            *(int *)(local_30 + 8) = iVar14;\n            iVar9 = iVar11;\n          }\n          else {\nLAB_00029978:\n            *(int *)(iVar14 + 8) = iVar11;\n            iVar14 = local_30;\n          }\n        }\n        local_30 = iVar14;\n        param_1 = param_1 + 1;\n        iVar14 = *param_1;\n        uVar4 = uVar4 + 1;\n        iVar11 = iVar9;\n      }" ({ "{") (expression_statement "uVar6 = (*(code *)PTR_strlen_00043564)(iVar14);" (assignment_expression "uVar6 = (*(code *)PTR_strlen_00043564)(iVar14)" (identifier "uVar6") (= "=") (call_expression "(*(code *)PTR_strlen_00043564)(iVar14)" (parenthesized_expression "(*(code *)PTR_strlen_00043564)" (( "(") (pointer_expression "*(code *)PTR_strlen_00043564" (* "*") (cast_expression "(code *)PTR_strlen_00043564" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_strlen_00043564"))) () ")")) (argument_list "(iVar14)" (( "(") (identifier "iVar14") () ")")))) (; ";")) (if_statement "if ((((param_2 & 0x1000) == 0) && (2 < uVar6)) &&\n           (iVar9 = iVar14 + uVar6, *(char *)(iVar9 + -1) == '/')) {\n          do {\n            if (*(char *)(iVar9 + -2) != '/') break;\n            uVar6 = uVar6 - 1;\n            iVar9 = iVar14 + uVar6;\n          } while (uVar6 != 1);\n        }" (if "if") (parenthesized_expression "((((param_2 & 0x1000) == 0) && (2 < uVar6)) &&\n           (iVar9 = iVar14 + uVar6, *(char *)(iVar9 + -1) == '/'))" (( "(") (binary_expression "(((param_2 & 0x1000) == 0) && (2 < uVar6)) &&\n           (iVar9 = iVar14 + uVar6, *(char *)(iVar9 + -1) == '/')" (parenthesized_expression "(((param_2 & 0x1000) == 0) && (2 < uVar6))" (( "(") (binary_expression "((param_2 & 0x1000) == 0) && (2 < uVar6)" (parenthesized_expression "((param_2 & 0x1000) == 0)" (( "(") (binary_expression "(param_2 & 0x1000) == 0" (parenthesized_expression "(param_2 & 0x1000)" (( "(") (binary_expression "param_2 & 0x1000" (identifier "param_2") (& "&") (number_literal "0x1000")) () ")")) (== "==") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(2 < uVar6)" (( "(") (binary_expression "2 < uVar6" (number_literal "2") (< "<") (identifier "uVar6")) () ")"))) () ")")) (&& "&&") (parenthesized_expression "(iVar9 = iVar14 + uVar6, *(char *)(iVar9 + -1) == '/')" (( "(") (comma_expression "iVar9 = iVar14 + uVar6, *(char *)(iVar9 + -1) == '/'" (assignment_expression "iVar9 = iVar14 + uVar6" (identifier "iVar9") (= "=") (binary_expression "iVar14 + uVar6" (identifier "iVar14") (+ "+") (identifier "uVar6"))) (, ",") (binary_expression "*(char *)(iVar9 + -1) == '/'" (pointer_expression "*(char *)(iVar9 + -1)" (* "*") (cast_expression "(char *)(iVar9 + -1)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar9 + -1)" (( "(") (binary_expression "iVar9 + -1" (identifier "iVar9") (+ "+") (number_literal "-1")) () ")")))) (== "==") (char_literal "'/'" (' "'") (character "/") (' "'")))) () ")"))) () ")")) (compound_statement "{\n          do {\n            if (*(char *)(iVar9 + -2) != '/') break;\n            uVar6 = uVar6 - 1;\n            iVar9 = iVar14 + uVar6;\n          } while (uVar6 != 1);\n        }" ({ "{") (do_statement "do {\n            if (*(char *)(iVar9 + -2) != '/') break;\n            uVar6 = uVar6 - 1;\n            iVar9 = iVar14 + uVar6;\n          } while (uVar6 != 1);" (do "do") (compound_statement "{\n            if (*(char *)(iVar9 + -2) != '/') break;\n            uVar6 = uVar6 - 1;\n            iVar9 = iVar14 + uVar6;\n          }" ({ "{") (if_statement "if (*(char *)(iVar9 + -2) != '/') break;" (if "if") (parenthesized_expression "(*(char *)(iVar9 + -2) != '/')" (( "(") (binary_expression "*(char *)(iVar9 + -2) != '/'" (pointer_expression "*(char *)(iVar9 + -2)" (* "*") (cast_expression "(char *)(iVar9 + -2)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar9 + -2)" (( "(") (binary_expression "iVar9 + -2" (identifier "iVar9") (+ "+") (number_literal "-2")) () ")")))) (!= "!=") (char_literal "'/'" (' "'") (character "/") (' "'"))) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "uVar6 = uVar6 - 1;" (assignment_expression "uVar6 = uVar6 - 1" (identifier "uVar6") (= "=") (binary_expression "uVar6 - 1" (identifier "uVar6") (- "-") (number_literal "1"))) (; ";")) (expression_statement "iVar9 = iVar14 + uVar6;" (assignment_expression "iVar9 = iVar14 + uVar6" (identifier "iVar9") (= "=") (binary_expression "iVar14 + uVar6" (identifier "iVar14") (+ "+") (identifier "uVar6"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar6 != 1)" (( "(") (binary_expression "uVar6 != 1" (identifier "uVar6") (!= "!=") (number_literal "1")) () ")")) (; ";")) (} "}"))) (expression_statement "iVar14 = (*pcVar15)(piVar3,iVar14,uVar6);" (assignment_expression "iVar14 = (*pcVar15)(piVar3,iVar14,uVar6)" (identifier "iVar14") (= "=") (call_expression "(*pcVar15)(piVar3,iVar14,uVar6)" (parenthesized_expression "(*pcVar15)" (( "(") (pointer_expression "*pcVar15" (* "*") (identifier "pcVar15")) () ")")) (argument_list "(piVar3,iVar14,uVar6)" (( "(") (identifier "piVar3") (, ",") (identifier "iVar14") (, ",") (identifier "uVar6") () ")")))) (; ";")) (expression_statement "iVar9 = iVar11;" (assignment_expression "iVar9 = iVar11" (identifier "iVar9") (= "=") (identifier "iVar11")) (; ";")) (if_statement "if (iVar14 == 0) goto LAB_00029aac;" (if "if") (parenthesized_expression "(iVar14 == 0)" (( "(") (binary_expression "iVar14 == 0" (identifier "iVar14") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_00029aac;" (goto "goto") (statement_identifier "LAB_00029aac") (; ";"))) (expression_statement "*(undefined4 *)(iVar14 + 0x30) = 0;" (assignment_expression "*(undefined4 *)(iVar14 + 0x30) = 0" (pointer_expression "*(undefined4 *)(iVar14 + 0x30)" (* "*") (cast_expression "(undefined4 *)(iVar14 + 0x30)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar14 + 0x30)" (( "(") (binary_expression "iVar14 + 0x30" (identifier "iVar14") (+ "+") (number_literal "0x30")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(int *)(iVar14 + 4) = iVar10;" (assignment_expression "*(int *)(iVar14 + 4) = iVar10" (pointer_expression "*(int *)(iVar14 + 4)" (* "*") (cast_expression "(int *)(iVar14 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar14 + 4)" (( "(") (binary_expression "iVar14 + 4" (identifier "iVar14") (+ "+") (number_literal "4")) () ")")))) (= "=") (identifier "iVar10")) (; ";")) (expression_statement "*(int *)(iVar14 + 0x18) = iVar14 + 0xe8;" (assignment_expression "*(int *)(iVar14 + 0x18) = iVar14 + 0xe8" (pointer_expression "*(int *)(iVar14 + 0x18)" (* "*") (cast_expression "(int *)(iVar14 + 0x18)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar14 + 0x18)" (( "(") (binary_expression "iVar14 + 0x18" (identifier "iVar14") (+ "+") (number_literal "0x18")) () ")")))) (= "=") (binary_expression "iVar14 + 0xe8" (identifier "iVar14") (+ "+") (number_literal "0xe8"))) (; ";")) (expression_statement "iVar9 = iVar14;" (assignment_expression "iVar9 = iVar14" (identifier "iVar9") (= "=") (identifier "iVar14")) (; ";")) (if_statement "if (uVar12 == 0) {\n          uVar8 = (*pcVar5)(piVar3[8],piVar3 + 0xc,iVar14,0);\n          *(undefined2 *)(iVar14 + 0x3c) = uVar8;\n          if (param_3 != 0) goto LAB_00029978;\n          *(undefined4 *)(iVar14 + 8) = 0;\n          if (iVar11 != 0) goto LAB_00029b5c;\n        }\n        else if (iVar11 == 0) {\n          uVar8 = (*pcVar5)(piVar3[8],piVar3 + 0xc,iVar14,0);\n          *(undefined2 *)(iVar14 + 0x3c) = uVar8;\n          if (param_3 != 0) goto LAB_00029978;\n          *(undefined4 *)(iVar14 + 8) = 0;\n        }\n        else {\n          *(undefined4 *)(iVar14 + 0x84) = 2;\n          *(undefined4 *)(iVar14 + 0x80) = 0;\n          *(undefined2 *)(iVar14 + 0x3c) = 0xb;\n          if (param_3 == 0) {\n            *(undefined4 *)(iVar14 + 8) = 0;\nLAB_00029b5c:\n            *(int *)(local_30 + 8) = iVar14;\n            iVar9 = iVar11;\n          }\n          else {\nLAB_00029978:\n            *(int *)(iVar14 + 8) = iVar11;\n            iVar14 = local_30;\n          }\n        }" (if "if") (parenthesized_expression "(uVar12 == 0)" (( "(") (binary_expression "uVar12 == 0" (identifier "uVar12") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          uVar8 = (*pcVar5)(piVar3[8],piVar3 + 0xc,iVar14,0);\n          *(undefined2 *)(iVar14 + 0x3c) = uVar8;\n          if (param_3 != 0) goto LAB_00029978;\n          *(undefined4 *)(iVar14 + 8) = 0;\n          if (iVar11 != 0) goto LAB_00029b5c;\n        }" ({ "{") (expression_statement "uVar8 = (*pcVar5)(piVar3[8],piVar3 + 0xc,iVar14,0);" (assignment_expression "uVar8 = (*pcVar5)(piVar3[8],piVar3 + 0xc,iVar14,0)" (identifier "uVar8") (= "=") (call_expression "(*pcVar5)(piVar3[8],piVar3 + 0xc,iVar14,0)" (parenthesized_expression "(*pcVar5)" (( "(") (pointer_expression "*pcVar5" (* "*") (identifier "pcVar5")) () ")")) (argument_list "(piVar3[8],piVar3 + 0xc,iVar14,0)" (( "(") (subscript_expression "piVar3[8]" (identifier "piVar3") ([ "[") (number_literal "8") (] "]")) (, ",") (binary_expression "piVar3 + 0xc" (identifier "piVar3") (+ "+") (number_literal "0xc")) (, ",") (identifier "iVar14") (, ",") (number_literal "0") () ")")))) (; ";")) (expression_statement "*(undefined2 *)(iVar14 + 0x3c) = uVar8;" (assignment_expression "*(undefined2 *)(iVar14 + 0x3c) = uVar8" (pointer_expression "*(undefined2 *)(iVar14 + 0x3c)" (* "*") (cast_expression "(undefined2 *)(iVar14 + 0x3c)" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar14 + 0x3c)" (( "(") (binary_expression "iVar14 + 0x3c" (identifier "iVar14") (+ "+") (number_literal "0x3c")) () ")")))) (= "=") (identifier "uVar8")) (; ";")) (if_statement "if (param_3 != 0) goto LAB_00029978;" (if "if") (parenthesized_expression "(param_3 != 0)" (( "(") (binary_expression "param_3 != 0" (identifier "param_3") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_00029978;" (goto "goto") (statement_identifier "LAB_00029978") (; ";"))) (expression_statement "*(undefined4 *)(iVar14 + 8) = 0;" (assignment_expression "*(undefined4 *)(iVar14 + 8) = 0" (pointer_expression "*(undefined4 *)(iVar14 + 8)" (* "*") (cast_expression "(undefined4 *)(iVar14 + 8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar14 + 8)" (( "(") (binary_expression "iVar14 + 8" (identifier "iVar14") (+ "+") (number_literal "8")) () ")")))) (= "=") (number_literal "0")) (; ";")) (if_statement "if (iVar11 != 0) goto LAB_00029b5c;" (if "if") (parenthesized_expression "(iVar11 != 0)" (( "(") (binary_expression "iVar11 != 0" (identifier "iVar11") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_00029b5c;" (goto "goto") (statement_identifier "LAB_00029b5c") (; ";"))) (} "}")) (else_clause "else if (iVar11 == 0) {\n          uVar8 = (*pcVar5)(piVar3[8],piVar3 + 0xc,iVar14,0);\n          *(undefined2 *)(iVar14 + 0x3c) = uVar8;\n          if (param_3 != 0) goto LAB_00029978;\n          *(undefined4 *)(iVar14 + 8) = 0;\n        }\n        else {\n          *(undefined4 *)(iVar14 + 0x84) = 2;\n          *(undefined4 *)(iVar14 + 0x80) = 0;\n          *(undefined2 *)(iVar14 + 0x3c) = 0xb;\n          if (param_3 == 0) {\n            *(undefined4 *)(iVar14 + 8) = 0;\nLAB_00029b5c:\n            *(int *)(local_30 + 8) = iVar14;\n            iVar9 = iVar11;\n          }\n          else {\nLAB_00029978:\n            *(int *)(iVar14 + 8) = iVar11;\n            iVar14 = local_30;\n          }\n        }" (else "else") (if_statement "if (iVar11 == 0) {\n          uVar8 = (*pcVar5)(piVar3[8],piVar3 + 0xc,iVar14,0);\n          *(undefined2 *)(iVar14 + 0x3c) = uVar8;\n          if (param_3 != 0) goto LAB_00029978;\n          *(undefined4 *)(iVar14 + 8) = 0;\n        }\n        else {\n          *(undefined4 *)(iVar14 + 0x84) = 2;\n          *(undefined4 *)(iVar14 + 0x80) = 0;\n          *(undefined2 *)(iVar14 + 0x3c) = 0xb;\n          if (param_3 == 0) {\n            *(undefined4 *)(iVar14 + 8) = 0;\nLAB_00029b5c:\n            *(int *)(local_30 + 8) = iVar14;\n            iVar9 = iVar11;\n          }\n          else {\nLAB_00029978:\n            *(int *)(iVar14 + 8) = iVar11;\n            iVar14 = local_30;\n          }\n        }" (if "if") (parenthesized_expression "(iVar11 == 0)" (( "(") (binary_expression "iVar11 == 0" (identifier "iVar11") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          uVar8 = (*pcVar5)(piVar3[8],piVar3 + 0xc,iVar14,0);\n          *(undefined2 *)(iVar14 + 0x3c) = uVar8;\n          if (param_3 != 0) goto LAB_00029978;\n          *(undefined4 *)(iVar14 + 8) = 0;\n        }" ({ "{") (expression_statement "uVar8 = (*pcVar5)(piVar3[8],piVar3 + 0xc,iVar14,0);" (assignment_expression "uVar8 = (*pcVar5)(piVar3[8],piVar3 + 0xc,iVar14,0)" (identifier "uVar8") (= "=") (call_expression "(*pcVar5)(piVar3[8],piVar3 + 0xc,iVar14,0)" (parenthesized_expression "(*pcVar5)" (( "(") (pointer_expression "*pcVar5" (* "*") (identifier "pcVar5")) () ")")) (argument_list "(piVar3[8],piVar3 + 0xc,iVar14,0)" (( "(") (subscript_expression "piVar3[8]" (identifier "piVar3") ([ "[") (number_literal "8") (] "]")) (, ",") (binary_expression "piVar3 + 0xc" (identifier "piVar3") (+ "+") (number_literal "0xc")) (, ",") (identifier "iVar14") (, ",") (number_literal "0") () ")")))) (; ";")) (expression_statement "*(undefined2 *)(iVar14 + 0x3c) = uVar8;" (assignment_expression "*(undefined2 *)(iVar14 + 0x3c) = uVar8" (pointer_expression "*(undefined2 *)(iVar14 + 0x3c)" (* "*") (cast_expression "(undefined2 *)(iVar14 + 0x3c)" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar14 + 0x3c)" (( "(") (binary_expression "iVar14 + 0x3c" (identifier "iVar14") (+ "+") (number_literal "0x3c")) () ")")))) (= "=") (identifier "uVar8")) (; ";")) (if_statement "if (param_3 != 0) goto LAB_00029978;" (if "if") (parenthesized_expression "(param_3 != 0)" (( "(") (binary_expression "param_3 != 0" (identifier "param_3") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_00029978;" (goto "goto") (statement_identifier "LAB_00029978") (; ";"))) (expression_statement "*(undefined4 *)(iVar14 + 8) = 0;" (assignment_expression "*(undefined4 *)(iVar14 + 8) = 0" (pointer_expression "*(undefined4 *)(iVar14 + 8)" (* "*") (cast_expression "(undefined4 *)(iVar14 + 8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar14 + 8)" (( "(") (binary_expression "iVar14 + 8" (identifier "iVar14") (+ "+") (number_literal "8")) () ")")))) (= "=") (number_literal "0")) (; ";")) (} "}")) (else_clause "else {\n          *(undefined4 *)(iVar14 + 0x84) = 2;\n          *(undefined4 *)(iVar14 + 0x80) = 0;\n          *(undefined2 *)(iVar14 + 0x3c) = 0xb;\n          if (param_3 == 0) {\n            *(undefined4 *)(iVar14 + 8) = 0;\nLAB_00029b5c:\n            *(int *)(local_30 + 8) = iVar14;\n            iVar9 = iVar11;\n          }\n          else {\nLAB_00029978:\n            *(int *)(iVar14 + 8) = iVar11;\n            iVar14 = local_30;\n          }\n        }" (else "else") (compound_statement "{\n          *(undefined4 *)(iVar14 + 0x84) = 2;\n          *(undefined4 *)(iVar14 + 0x80) = 0;\n          *(undefined2 *)(iVar14 + 0x3c) = 0xb;\n          if (param_3 == 0) {\n            *(undefined4 *)(iVar14 + 8) = 0;\nLAB_00029b5c:\n            *(int *)(local_30 + 8) = iVar14;\n            iVar9 = iVar11;\n          }\n          else {\nLAB_00029978:\n            *(int *)(iVar14 + 8) = iVar11;\n            iVar14 = local_30;\n          }\n        }" ({ "{") (expression_statement "*(undefined4 *)(iVar14 + 0x84) = 2;" (assignment_expression "*(undefined4 *)(iVar14 + 0x84) = 2" (pointer_expression "*(undefined4 *)(iVar14 + 0x84)" (* "*") (cast_expression "(undefined4 *)(iVar14 + 0x84)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar14 + 0x84)" (( "(") (binary_expression "iVar14 + 0x84" (identifier "iVar14") (+ "+") (number_literal "0x84")) () ")")))) (= "=") (number_literal "2")) (; ";")) (expression_statement "*(undefined4 *)(iVar14 + 0x80) = 0;" (assignment_expression "*(undefined4 *)(iVar14 + 0x80) = 0" (pointer_expression "*(undefined4 *)(iVar14 + 0x80)" (* "*") (cast_expression "(undefined4 *)(iVar14 + 0x80)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar14 + 0x80)" (( "(") (binary_expression "iVar14 + 0x80" (identifier "iVar14") (+ "+") (number_literal "0x80")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined2 *)(iVar14 + 0x3c) = 0xb;" (assignment_expression "*(undefined2 *)(iVar14 + 0x3c) = 0xb" (pointer_expression "*(undefined2 *)(iVar14 + 0x3c)" (* "*") (cast_expression "(undefined2 *)(iVar14 + 0x3c)" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar14 + 0x3c)" (( "(") (binary_expression "iVar14 + 0x3c" (identifier "iVar14") (+ "+") (number_literal "0x3c")) () ")")))) (= "=") (number_literal "0xb")) (; ";")) (if_statement "if (param_3 == 0) {\n            *(undefined4 *)(iVar14 + 8) = 0;\nLAB_00029b5c:\n            *(int *)(local_30 + 8) = iVar14;\n            iVar9 = iVar11;\n          }\n          else {\nLAB_00029978:\n            *(int *)(iVar14 + 8) = iVar11;\n            iVar14 = local_30;\n          }" (if "if") (parenthesized_expression "(param_3 == 0)" (( "(") (binary_expression "param_3 == 0" (identifier "param_3") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n            *(undefined4 *)(iVar14 + 8) = 0;\nLAB_00029b5c:\n            *(int *)(local_30 + 8) = iVar14;\n            iVar9 = iVar11;\n          }" ({ "{") (expression_statement "*(undefined4 *)(iVar14 + 8) = 0;" (assignment_expression "*(undefined4 *)(iVar14 + 8) = 0" (pointer_expression "*(undefined4 *)(iVar14 + 8)" (* "*") (cast_expression "(undefined4 *)(iVar14 + 8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar14 + 8)" (( "(") (binary_expression "iVar14 + 8" (identifier "iVar14") (+ "+") (number_literal "8")) () ")")))) (= "=") (number_literal "0")) (; ";")) (labeled_statement "LAB_00029b5c:\n            *(int *)(local_30 + 8) = iVar14;" (statement_identifier "LAB_00029b5c") (: ":") (expression_statement "*(int *)(local_30 + 8) = iVar14;" (assignment_expression "*(int *)(local_30 + 8) = iVar14" (pointer_expression "*(int *)(local_30 + 8)" (* "*") (cast_expression "(int *)(local_30 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_30 + 8)" (( "(") (binary_expression "local_30 + 8" (identifier "local_30") (+ "+") (number_literal "8")) () ")")))) (= "=") (identifier "iVar14")) (; ";"))) (expression_statement "iVar9 = iVar11;" (assignment_expression "iVar9 = iVar11" (identifier "iVar9") (= "=") (identifier "iVar11")) (; ";")) (} "}")) (else_clause "else {\nLAB_00029978:\n            *(int *)(iVar14 + 8) = iVar11;\n            iVar14 = local_30;\n          }" (else "else") (compound_statement "{\nLAB_00029978:\n            *(int *)(iVar14 + 8) = iVar11;\n            iVar14 = local_30;\n          }" ({ "{") (labeled_statement "LAB_00029978:\n            *(int *)(iVar14 + 8) = iVar11;" (statement_identifier "LAB_00029978") (: ":") (expression_statement "*(int *)(iVar14 + 8) = iVar11;" (assignment_expression "*(int *)(iVar14 + 8) = iVar11" (pointer_expression "*(int *)(iVar14 + 8)" (* "*") (cast_expression "(int *)(iVar14 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar14 + 8)" (( "(") (binary_expression "iVar14 + 8" (identifier "iVar14") (+ "+") (number_literal "8")) () ")")))) (= "=") (identifier "iVar11")) (; ";"))) (expression_statement "iVar14 = local_30;" (assignment_expression "iVar14 = local_30" (identifier "iVar14") (= "=") (identifier "local_30")) (; ";")) (} "}")))) (} "}")))))) (expression_statement "local_30 = iVar14;" (assignment_expression "local_30 = iVar14" (identifier "local_30") (= "=") (identifier "iVar14")) (; ";")) (expression_statement "param_1 = param_1 + 1;" (assignment_expression "param_1 = param_1 + 1" (identifier "param_1") (= "=") (binary_expression "param_1 + 1" (identifier "param_1") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "iVar14 = *param_1;" (assignment_expression "iVar14 = *param_1" (identifier "iVar14") (= "=") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (; ";")) (expression_statement "uVar4 = uVar4 + 1;" (assignment_expression "uVar4 = uVar4 + 1" (identifier "uVar4") (= "=") (binary_expression "uVar4 + 1" (identifier "uVar4") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "iVar11 = iVar9;" (assignment_expression "iVar11 = iVar9" (identifier "iVar11") (= "=") (identifier "iVar9")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar14 != 0)" (( "(") (binary_expression "iVar14 != 0" (identifier "iVar14") (!= "!=") (number_literal "0")) () ")")) (; ";")) (if_statement "if ((param_3 != 0) && (1 < uVar4)) {\n        iVar9 = FUN_00027be4(piVar3,iVar9,uVar4);\n      }" (if "if") (parenthesized_expression "((param_3 != 0) && (1 < uVar4))" (( "(") (binary_expression "(param_3 != 0) && (1 < uVar4)" (parenthesized_expression "(param_3 != 0)" (( "(") (binary_expression "param_3 != 0" (identifier "param_3") (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(1 < uVar4)" (( "(") (binary_expression "1 < uVar4" (number_literal "1") (< "<") (identifier "uVar4")) () ")"))) () ")")) (compound_statement "{\n        iVar9 = FUN_00027be4(piVar3,iVar9,uVar4);\n      }" ({ "{") (expression_statement "iVar9 = FUN_00027be4(piVar3,iVar9,uVar4);" (assignment_expression "iVar9 = FUN_00027be4(piVar3,iVar9,uVar4)" (identifier "iVar9") (= "=") (call_expression "FUN_00027be4(piVar3,iVar9,uVar4)" (identifier "FUN_00027be4") (argument_list "(piVar3,iVar9,uVar4)" (( "(") (identifier "piVar3") (, ",") (identifier "iVar9") (, ",") (identifier "uVar4") () ")")))) (; ";")) (} "}"))) (goto_statement "goto LAB_000299c0;" (goto "goto") (statement_identifier "LAB_000299c0") (; ";")) (} "}"))) (} "}")))) (expression_statement "(*(code *)PTR_free_0004363c)(piVar3[6]);" (call_expression "(*(code *)PTR_free_0004363c)(piVar3[6])" (parenthesized_expression "(*(code *)PTR_free_0004363c)" (( "(") (pointer_expression "*(code *)PTR_free_0004363c" (* "*") (cast_expression "(code *)PTR_free_0004363c" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_free_0004363c"))) () ")")) (argument_list "(piVar3[6])" (( "(") (subscript_expression "piVar3[6]" (identifier "piVar3") ([ "[") (number_literal "6") (] "]")) () ")"))) (; ";")) (labeled_statement "LAB_00029ae0:\n  (*(code *)PTR_free_0004363c)(piVar3);" (statement_identifier "LAB_00029ae0") (: ":") (expression_statement "(*(code *)PTR_free_0004363c)(piVar3);" (call_expression "(*(code *)PTR_free_0004363c)(piVar3)" (parenthesized_expression "(*(code *)PTR_free_0004363c)" (( "(") (pointer_expression "*(code *)PTR_free_0004363c" (* "*") (cast_expression "(code *)PTR_free_0004363c" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_free_0004363c"))) () ")")) (argument_list "(piVar3)" (( "(") (identifier "piVar3") () ")"))) (; ";"))) (return_statement "return (int *)0x0;" (return "return") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")) (; ";")) (} "}")))

type_1 * function_1(char **var_26,int var_1,type_2 *var_22)

{
  type_3 *var_11;
  type_3 *var_10;
  type_4 extraout_var;
  type_4 extraout_var_00;
  type_1 *var_2;
  type_5 var_6;
  type_6 _Var13;
  type_7 *var_21;
  type_8 *pcVar5;
  type_5 var_23;
  type_7 *var_24;
  type_7 *pFVar8;
  type_9 *var_12;
  type_10 *puVar10;
  type_11 uVar12;
  int var_16;
  char *pcVar14;
  char *var_3;
  type_1 *var_7;
  type_5 var_5;
  type_7 *var_25;
  char **var_4;
  type_8 *pcVar20;
  type_8 *local_3c;
  type_7 *local_30;
  
  if ((((var_1 & 0xffffe000U) != 0) || ((var_1 & 0x204U) == 0x204)) || ((var_1 & 0x12U) == 0))
  {
    puVar10 = (type_10 *)(*(type_8 *)PTR___errno_location_00043520)();
    *puVar10 = 0x16;
    return (type_1 *)0x0;
  }
  var_2 = (type_1 *)(*(type_8 *)PTR_calloc_0004341c)(0x60,1);
  if (var_2 == (type_1 *)0x0) {
    return (type_1 *)0x0;
  }
  var_2->fts_compar = (type_12 *)var_22;
  if ((var_1 & 2U) == 0) {
    var_2->fts_options = var_1;
  }
  else {
    var_2->fts_options = var_1 & 0xfffffdffU | 4;
  }
  var_3 = *var_26;
  var_2->fts_cwd_fd = -100;
  if (var_3 == (char *)0x0) {
    var_7 = (type_1 *)0x1000;
  }
  else {
    var_5 = 0;
    var_4 = var_26;
    do {
      var_4 = var_4 + 1;
      var_6 = (*(type_8 *)PTR_strlen_00043564)();
      if (var_5 < var_6) {
        var_5 = var_6;
      }
    } while (*var_4 != (char *)0x0);
    var_7 = (type_1 *)(var_5 + 1);
    if (var_7 < (type_1 *)0x1000) {
      var_7 = (type_1 *)0x1000;
    }
  }
  _Var13 = var_8((type_1 *)&var_2->fts_path,(size_t)&var_2->fts_pathlen,var_7);
  var_10 = var_19;
  var_11 = var_15;
  if (var_9(extraout_var,_Var13) == 0) goto LAB_00029ae0;
  if (*var_26 == (char *)0x0) {
    var_21 = (type_7 *)0x0;
LAB_00029b78:
    pFVar8 = (type_9 *)0x0;
LAB_000299c0:
    local_3c = (type_8 *)(var_10 + 0x7d20);
    var_12 = (type_9 *)(*local_3c)(var_2,var_11 + 0x44c,0);
    var_2->fts_cur = var_12;
    if (var_12 != (type_9 *)0x0) {
      var_12->fts_link = pFVar8;
      var_12->fts_level = 1;
      var_7 = (type_1 *)var_2->fts_options;
      var_12->fts_info = 9;
      _Var13 = var_13(var_7,(type_1 *)&var_2->fts_cycle);
      if (var_9(extraout_var_00,_Var13) != 0) {
        if (((type_5)var_2->fts_options & 0x204) == 0) {
          var_16 = var_14((type_1 *)var_2->fts_cwd_fd,(char *)var_2->fts_options,
                           (type_1 *)(var_15 + 0xc4c));
          var_2->fts_rfd = var_16;
          if (var_16 < 0) {
            var_2->fts_options = var_2->fts_options | 4;
          }
        }
        var_17(&var_2->fts_fd_ring,-1);
        return var_2;
      }
    }
LAB_00029aac:
    var_18(pFVar8);
    (*(type_8 *)PTR_free_0004363c)(var_21);
  }
  else {
    pcVar20 = (type_8 *)(var_19 + 0x7d20);
    var_21 = var_20(var_2,var_15 + 0x44c,0);
    if (var_21 != (type_7 *)0x0) {
      var_3 = *var_26;
      var_21->fts_level = -1;
      var_21->fts_n_dirs_remaining = 0xffffffff;
      if (var_22 == (type_2 *)0x0) {
        var_5 = 1;
      }
      else {
        var_5 = (type_5)(var_2->fts_options << 0x15) >> 0x1f;
      }
      if (var_3 == (char *)0x0) goto LAB_00029b78;
      local_30 = (type_7 *)0x0;
      var_6 = 0;
      pcVar5 = (type_8 *)(var_15 + -0x7d80);
      var_25 = (type_7 *)0x0;
      do {
        var_23 = (*(type_8 *)PTR_strlen_00043564)(var_3);
        if ((((var_1 & 0x1000U) == 0) && (2 < var_23)) &&
           (pcVar14 = var_3 + var_23, pcVar14[-1] == '/')) {
          do {
            if (pcVar14[-2] != '/') break;
            var_23 = var_23 - 1;
            pcVar14 = var_3 + var_23;
          } while (var_23 != 1);
        }
        var_24 = (type_7 *)(*pcVar20)(var_2,var_3,var_23);
        pFVar8 = var_25;
        if (var_24 == (type_7 *)0x0) goto LAB_00029aac;
        var_24->fts_level = 0;
        var_24->fts_parent = var_21;
        var_24->fts_accpath = (char *)(var_24 + 1);
        pFVar8 = var_24;
        if (var_5 == 0) {
          uVar12 = (*pcVar5)(var_2->fts_cwd_fd,&var_2->fts_options,var_24,0);
          var_24->fts_info = uVar12;
          if (var_22 != (type_2 *)0x0) goto LAB_00029978;
          var_24->fts_link = (type_9 *)0x0;
          if (var_25 != (type_7 *)0x0) goto LAB_00029b5c;
        }
        else if (var_25 == (type_7 *)0x0) {
          uVar12 = (*pcVar5)(var_2->fts_cwd_fd,&var_2->fts_options,var_24,0);
          var_24->fts_info = uVar12;
          if (var_22 != (type_2 *)0x0) goto LAB_00029978;
          var_24->fts_link = (type_9 *)0x0;
        }
        else {
          *(type_10 *)((int)&var_24->fts_statp[0].st_size + 4) = 2;
          *(type_10 *)&var_24->fts_statp[0].st_size = 0;
          var_24->fts_info = 0xb;
          if (var_22 == (type_2 *)0x0) {
            var_24->fts_link = (type_9 *)0x0;
LAB_00029b5c:
            local_30->fts_link = var_24;
            pFVar8 = var_25;
          }
          else {
LAB_00029978:
            var_24->fts_link = var_25;
            var_24 = local_30;
          }
        }
        local_30 = var_24;
        var_26 = var_26 + 1;
        var_3 = *var_26;
        var_6 = var_6 + 1;
        var_25 = pFVar8;
      } while (var_3 != (char *)0x0);
      if ((var_22 != (type_2 *)0x0) && (1 < var_6)) {
        pFVar8 = var_27(var_2,pFVar8,var_6);
      }
      goto LAB_000299c0;
    }
  }
  (*(type_8 *)PTR_free_0004363c)(var_2->fts_path);
LAB_00029ae0:
  (*(type_8 *)PTR_free_0004363c)(var_2);
  return (type_1 *)0x0;
}


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

int * MASKED(int *param_1,uint param_2,int param_3)

{
  undefined *puVar1;
  undefined *puVar2;
  int *piVar3;
  uint uVar4;
  code *pcVar5;
  uint uVar6;
  undefined4 *puVar7;
  undefined2 uVar8;
  int iVar9;
  int iVar10;
  int iVar11;
  uint uVar12;
  int *piVar13;
  int iVar14;
  code *pcVar15;
  code *local_3c;
  int local_30;
  
  if ((((param_2 & 0xffffe000) != 0) || ((param_2 & 0x204) == 0x204)) || ((param_2 & 0x12) == 0)) {
    puVar7 = (undefined4 *)(*(code *)PTR___errno_location_00043520)();
    *puVar7 = 0x16;
    return (int *)0x0;
  }
  piVar3 = (int *)(*(code *)PTR_calloc_0004341c)(0x60,1);
  if (piVar3 == (int *)0x0) {
    return (int *)0x0;
  }
  piVar3[0xb] = param_3;
  if ((param_2 & 2) == 0) {
    piVar3[0xc] = param_2;
  }
  else {
    piVar3[0xc] = param_2 & 0xfffffdff | 4;
  }
  iVar10 = *param_1;
  piVar3[8] = -100;
  if (iVar10 == 0) {
    uVar12 = 0x1000;
  }
  else {
    uVar12 = 0;
    piVar13 = param_1;
    do {
      piVar13 = piVar13 + 1;
      uVar4 = (*(code *)PTR_strlen_00043564)();
      if (uVar12 < uVar4) {
        uVar12 = uVar4;
      }
    } while (*piVar13 != 0);
    uVar12 = uVar12 + 1;
    if (uVar12 < 0x1000) {
      uVar12 = 0x1000;
    }
  }
  iVar10 = FUN_000284b8(piVar3 + 6,piVar3 + 9,uVar12);
  puVar2 = PTR_LAB_0004326c;
  puVar1 = PTR_s_ore_than_one_of__i___f___n__only_00043128;
  if (iVar10 == 0) goto LAB_00029ae0;
  if (*param_1 == 0) {
    iVar10 = 0;
LAB_00029b78:
    iVar9 = 0;
LAB_000299c0:
    local_3c = (code *)(puVar2 + 0x7d20);
    iVar14 = (*local_3c)(piVar3,puVar1 + 0x44c,0);
    *piVar3 = iVar14;
    if (iVar14 != 0) {
      *(int *)(iVar14 + 8) = iVar9;
      *(undefined4 *)(iVar14 + 0x30) = 1;
      iVar11 = piVar3[0xc];
      *(undefined2 *)(iVar14 + 0x3c) = 9;
      iVar14 = FUN_0002857c(iVar11,piVar3 + 0xe);
      if (iVar14 != 0) {
        if ((piVar3[0xc] & 0x204U) == 0) {
          iVar10 = FUN_00028630(piVar3[8],piVar3[0xc],
                                PTR_s_ore_than_one_of__i___f___n__only_00043128 + 0xc4c);
          piVar3[7] = iVar10;
          if (iVar10 < 0) {
            piVar3[0xc] = piVar3[0xc] | 4;
          }
        }
        i_ring_init(piVar3 + 0xf,0xffffffff);
        return piVar3;
      }
    }
LAB_00029aac:
    FUN_00027ddc(iVar9);
    (*(code *)PTR_free_0004363c)(iVar10);
  }
  else {
    pcVar15 = (code *)(PTR_LAB_0004326c + 0x7d20);
    iVar10 = FUN_00027d20(piVar3,PTR_s_ore_than_one_of__i___f___n__only_00043128 + 0x44c,0);
    if (iVar10 != 0) {
      iVar14 = *param_1;
      *(undefined4 *)(iVar10 + 0x30) = 0xffffffff;
      *(undefined4 *)(iVar10 + 0x38) = 0xffffffff;
      if (param_3 == 0) {
        uVar12 = 1;
      }
      else {
        uVar12 = (uint)(piVar3[0xc] << 0x15) >> 0x1f;
      }
      if (iVar14 == 0) goto LAB_00029b78;
      local_30 = 0;
      uVar4 = 0;
      pcVar5 = (code *)(PTR_s_ore_than_one_of__i___f___n__only_00043128 + -0x7d80);
      iVar11 = 0;
      do {
        uVar6 = (*(code *)PTR_strlen_00043564)(iVar14);
        if ((((param_2 & 0x1000) == 0) && (2 < uVar6)) &&
           (iVar9 = iVar14 + uVar6, *(char *)(iVar9 + -1) == '/')) {
          do {
            if (*(char *)(iVar9 + -2) != '/') break;
            uVar6 = uVar6 - 1;
            iVar9 = iVar14 + uVar6;
          } while (uVar6 != 1);
        }
        iVar14 = (*pcVar15)(piVar3,iVar14,uVar6);
        iVar9 = iVar11;
        if (iVar14 == 0) goto LAB_00029aac;
        *(undefined4 *)(iVar14 + 0x30) = 0;
        *(int *)(iVar14 + 4) = iVar10;
        *(int *)(iVar14 + 0x18) = iVar14 + 0xe8;
        iVar9 = iVar14;
        if (uVar12 == 0) {
          uVar8 = (*pcVar5)(piVar3[8],piVar3 + 0xc,iVar14,0);
          *(undefined2 *)(iVar14 + 0x3c) = uVar8;
          if (param_3 != 0) goto LAB_00029978;
          *(undefined4 *)(iVar14 + 8) = 0;
          if (iVar11 != 0) goto LAB_00029b5c;
        }
        else if (iVar11 == 0) {
          uVar8 = (*pcVar5)(piVar3[8],piVar3 + 0xc,iVar14,0);
          *(undefined2 *)(iVar14 + 0x3c) = uVar8;
          if (param_3 != 0) goto LAB_00029978;
          *(undefined4 *)(iVar14 + 8) = 0;
        }
        else {
          *(undefined4 *)(iVar14 + 0x84) = 2;
          *(undefined4 *)(iVar14 + 0x80) = 0;
          *(undefined2 *)(iVar14 + 0x3c) = 0xb;
          if (param_3 == 0) {
            *(undefined4 *)(iVar14 + 8) = 0;
LAB_00029b5c:
            *(int *)(local_30 + 8) = iVar14;
            iVar9 = iVar11;
          }
          else {
LAB_00029978:
            *(int *)(iVar14 + 8) = iVar11;
            iVar14 = local_30;
          }
        }
        local_30 = iVar14;
        param_1 = param_1 + 1;
        iVar14 = *param_1;
        uVar4 = uVar4 + 1;
        iVar11 = iVar9;
      } while (iVar14 != 0);
      if ((param_3 != 0) && (1 < uVar4)) {
        iVar9 = FUN_00027be4(piVar3,iVar9,uVar4);
      }
      goto LAB_000299c0;
    }
  }
  (*(code *)PTR_free_0004363c)(piVar3[6]);
LAB_00029ae0:
  (*(code *)PTR_free_0004363c)(piVar3);
  return (int *)0x0;
}

