
/* WARNING: Enum "savedir_option": Some values do not have unique names */

char * streamsavedir(DIR *dirp,savedir_option option)

{
  char cVar1;
  undefined *puVar2;
  int *piVar3;
  int iVar4;
  size_t sVar5;
  uint uVar6;
  size_t n;
  uint uVar7;
  undefined4 *puVar8;
  undefined4 *puVar9;
  char *p;
  uint uVar10;
  undefined4 *p_00;
  int iVar11;
  char *pcVar12;
  uint local_44;
  uint local_40;
  uint local_3c;
  
  iVar11 = *(int *)(PTR_DAT_00036388 + option * 4 + 0x5fe8);
  if (dirp == (DIR *)0x0) {
    pcVar12 = (char *)0x0;
  }
  else {
    local_3c = 0;
    piVar3 = (int *)(*(code *)PTR___errno_location_00036604)();
    p_00 = (undefined4 *)0x0;
    local_40 = 0;
    local_44 = 0;
    p = (char *)0x0;
    uVar10 = 0;
LAB_0001f5d8:
    puVar2 = PTR_readdir64_000365c0;
    *piVar3 = 0;
    iVar4 = (*(code *)puVar2)(dirp);
    if (iVar4 != 0) {
      while( true ) {
        cVar1 = *(char *)(iVar4 + 0x13);
        pcVar12 = (char *)(iVar4 + 0x13);
        if ((cVar1 == '.') && (cVar1 = *(char *)(iVar4 + 0x14), cVar1 == '.')) {
          cVar1 = *(char *)(iVar4 + 0x15);
        }
        if (cVar1 == '\0') goto LAB_0001f5d8;
        iVar4 = (*(code *)PTR_strlen_00036638)(pcVar12);
        uVar7 = iVar4 + 1;
        if (iVar11 == 0) break;
        if (local_3c == local_40) {
          if (p_00 == (undefined4 *)0x0) {
            if (local_40 == 0) {
              local_40 = 0x10;
              sVar5 = 0;
              local_3c = 1;
              n = 0x40;
            }
            else {
              sVar5 = local_40 << 2;
              if (((int)sVar5 < 0) || (local_3c = local_40 + 1, n = sVar5, local_40 >> 0x1e != 0))
              goto LAB_0001f920;
            }
          }
          else {
            uVar6 = local_40 + 1;
            if (0x15555554 < local_40) goto LAB_0001f920;
            sVar5 = local_3c << 2;
            local_40 = uVar6 + (local_40 >> 1);
            n = local_40 * 4;
            local_3c = uVar6;
          }
          p_00 = (undefined4 *)xrealloc(p_00,n);
        }
        else {
          sVar5 = local_3c << 2;
          local_3c = local_3c + 1;
        }
        uVar10 = uVar10 + uVar7;
        pcVar12 = xstrdup(pcVar12);
        puVar2 = PTR_readdir64_000365c0;
        *(char **)((int)p_00 + sVar5) = pcVar12;
        *piVar3 = 0;
        iVar4 = (*(code *)puVar2)(dirp);
        if (iVar4 == 0) goto LAB_0001f67c;
      }
      uVar6 = uVar10 + uVar7;
      if (local_44 - uVar10 <= uVar7) {
        if (uVar6 < uVar10) {
LAB_0001f920:
                    /* WARNING: Subroutine does not return */
          xalloc_die();
        }
        if (p == (char *)0x0) {
          if (uVar6 == 0) {
            local_44 = 0x40;
          }
          else {
            local_44 = uVar6;
            if ((int)uVar6 < 0) goto LAB_0001f920;
          }
        }
        else {
          if (0x55555553 < uVar6) goto LAB_0001f920;
          local_44 = uVar6 + 1 + (uVar6 >> 1);
        }
        p = (char *)xrealloc(p,local_44);
      }
      (*(code *)PTR_memcpy_00036698)(p + uVar10,pcVar12,uVar7);
      uVar10 = uVar6;
      goto LAB_0001f5d8;
    }
LAB_0001f67c:
    iVar4 = *piVar3;
    if (iVar4 == 0) {
      if (iVar11 == 0) {
        if (local_44 == uVar10) {
          p = (char *)xrealloc(p,local_44 + 1);
          pcVar12 = p + local_44;
        }
        else {
          pcVar12 = p + uVar10;
        }
      }
      else {
        if (local_3c == 0) {
          p = (char *)xmalloc(uVar10 + 1);
          pcVar12 = p;
        }
        else {
          (*(code *)PTR_qsort_000365bc)(p_00,local_3c,4,iVar11);
          iVar11 = 0;
          p = (char *)xmalloc(uVar10 + 1);
          puVar8 = p_00;
          do {
            puVar9 = puVar8 + 1;
            iVar4 = (*(code *)PTR_stpcpy_00036680)(p + iVar11,*puVar8);
            iVar11 = iVar11 + (iVar4 - (int)(p + iVar11)) + 1;
            (*(code *)PTR_free_000366a0)(*puVar8);
            puVar8 = puVar9;
          } while (p_00 + local_3c != puVar9);
          pcVar12 = p + iVar11;
        }
        (*(code *)PTR_free_000366a0)(p_00);
      }
      *pcVar12 = '\0';
      pcVar12 = p;
    }
    else {
      (*(code *)PTR_free_000366a0)(p_00);
      pcVar12 = (char *)0x0;
      (*(code *)PTR_free_000366a0)(p);
      *piVar3 = iVar4;
    }
  }
  return pcVar12;
}



undefined1 * streamsavedir(int param_1,int param_2)

{
  char cVar1;
  undefined *puVar2;
  int *piVar3;
  int iVar4;
  undefined4 uVar5;
  int iVar6;
  uint uVar7;
  uint uVar8;
  undefined4 *puVar9;
  undefined4 *puVar10;
  undefined1 *puVar11;
  uint uVar12;
  undefined1 *puVar13;
  undefined4 *puVar14;
  int iVar15;
  int iVar16;
  uint local_44;
  uint local_40;
  uint local_3c;
  
  iVar15 = *(int *)(PTR_DAT_00036388 + param_2 * 4 + 0x5fe8);
  if (param_1 == 0) {
    puVar13 = (undefined1 *)0x0;
  }
  else {
    local_3c = 0;
    piVar3 = (int *)(*(code *)PTR___errno_location_00036604)();
    puVar14 = (undefined4 *)0x0;
    local_40 = 0;
    local_44 = 0;
    puVar11 = (undefined1 *)0x0;
    uVar12 = 0;
LAB_0001f5d8:
    puVar2 = PTR_readdir64_000365c0;
    *piVar3 = 0;
    iVar4 = (*(code *)puVar2)(param_1);
    if (iVar4 != 0) {
      while( true ) {
        cVar1 = *(char *)(iVar4 + 0x13);
        iVar16 = iVar4 + 0x13;
        if ((cVar1 == '.') && (cVar1 = *(char *)(iVar4 + 0x14), cVar1 == '.')) {
          cVar1 = *(char *)(iVar4 + 0x15);
        }
        if (cVar1 == '\0') goto LAB_0001f5d8;
        iVar4 = (*(code *)PTR_strlen_00036638)(iVar16);
        uVar8 = iVar4 + 1;
        if (iVar15 == 0) break;
        if (local_3c == local_40) {
          if (puVar14 == (undefined4 *)0x0) {
            if (local_40 == 0) {
              local_40 = 0x10;
              iVar6 = 0;
              local_3c = 1;
              iVar4 = 0x40;
            }
            else {
              iVar6 = local_40 << 2;
              if ((iVar6 < 0) || (local_3c = local_40 + 1, iVar4 = iVar6, local_40 >> 0x1e != 0))
              goto LAB_0001f920;
            }
          }
          else {
            uVar7 = local_40 + 1;
            if (0x15555554 < local_40) goto LAB_0001f920;
            iVar6 = local_3c << 2;
            local_40 = uVar7 + (local_40 >> 1);
            iVar4 = local_40 * 4;
            local_3c = uVar7;
          }
          puVar14 = (undefined4 *)xrealloc(puVar14,iVar4);
        }
        else {
          iVar6 = local_3c << 2;
          local_3c = local_3c + 1;
        }
        uVar12 = uVar12 + uVar8;
        uVar5 = xstrdup(iVar16);
        puVar2 = PTR_readdir64_000365c0;
        *(undefined4 *)((int)puVar14 + iVar6) = uVar5;
        *piVar3 = 0;
        iVar4 = (*(code *)puVar2)(param_1);
        if (iVar4 == 0) goto LAB_0001f67c;
      }
      uVar7 = uVar12 + uVar8;
      if (local_44 - uVar12 <= uVar8) {
        if (uVar7 < uVar12) {
LAB_0001f920:
                    /* WARNING: Subroutine does not return */
          xalloc_die();
        }
        if (puVar11 == (undefined1 *)0x0) {
          if (uVar7 == 0) {
            local_44 = 0x40;
          }
          else {
            local_44 = uVar7;
            if ((int)uVar7 < 0) goto LAB_0001f920;
          }
        }
        else {
          if (0x55555553 < uVar7) goto LAB_0001f920;
          local_44 = uVar7 + 1 + (uVar7 >> 1);
        }
        puVar11 = (undefined1 *)xrealloc(puVar11,local_44);
      }
      (*(code *)PTR_memcpy_00036698)(puVar11 + uVar12,iVar16,uVar8);
      uVar12 = uVar7;
      goto LAB_0001f5d8;
    }
LAB_0001f67c:
    iVar4 = *piVar3;
    if (iVar4 == 0) {
      if (iVar15 == 0) {
        if (local_44 == uVar12) {
          puVar11 = (undefined1 *)xrealloc(puVar11,local_44 + 1);
          puVar13 = puVar11 + local_44;
        }
        else {
          puVar13 = puVar11 + uVar12;
        }
      }
      else {
        if (local_3c == 0) {
          puVar11 = (undefined1 *)xmalloc(uVar12 + 1);
          puVar13 = puVar11;
        }
        else {
          (*(code *)PTR_qsort_000365bc)(puVar14,local_3c,4,iVar15);
          iVar15 = 0;
          puVar11 = (undefined1 *)xmalloc(uVar12 + 1);
          puVar9 = puVar14;
          do {
            puVar10 = puVar9 + 1;
            iVar4 = (*(code *)PTR_stpcpy_00036680)(puVar11 + iVar15,*puVar9);
            iVar15 = iVar15 + (iVar4 - (int)(puVar11 + iVar15)) + 1;
            (*(code *)PTR_free_000366a0)(*puVar9);
            puVar9 = puVar10;
          } while (puVar14 + local_3c != puVar10);
          puVar13 = puVar11 + iVar15;
        }
        (*(code *)PTR_free_000366a0)(puVar14);
      }
      *puVar13 = 0;
      puVar13 = puVar11;
    }
    else {
      (*(code *)PTR_free_000366a0)(puVar14);
      puVar13 = (undefined1 *)0x0;
      (*(code *)PTR_free_000366a0)(puVar11);
      *piVar3 = iVar4;
    }
  }
  return puVar13;
}


lui gp,0x2
addiu gp,gp,-0x11cc
addu gp,gp,t9
lw v0,-0x7fd8(gp)
sll a1,a1,0x2
addiu sp,sp,-0x60
addiu v0,v0,0x5fe8
sw gp,0x10(sp)
addu a1,a1,v0
sw s7,0x54(sp)
sw ra,0x5c(sp)
sw s8,0x58(sp)
sw s6,0x50(sp)
sw s5,0x4c(sp)
sw s4,0x48(sp)
sw s3,0x44(sp)
sw s2,0x40(sp)
sw s1,0x3c(sp)
sw s0,0x38(sp)
beq a0,zero,0x0001f8ac
_lw s7,0x0(a1)
lw t9,-0x7d5c(gp)
or s1,a0,zero
or s5,zero,zero
jalr t9
_or s3,zero,zero
lui v1,0x5555
lw gp,0x10(sp)
or s6,zero,zero
addiu v1,v1,0x5554
sw zero,0x20(sp)
sw zero,0x1c(sp)
or s4,zero,zero
sw v1,0x2c(sp)
lui v1,0x1555
li s0,0x2e
addiu v1,v1,0x5555
or s2,v0,zero
b 0x0001f5d4
_sw v1,0x30(sp)
bne v1,zero,0x0001f614
_lw t9,-0x7d28(gp)
lw t9,-0x7da0(gp)
or a0,s1,zero
jalr t9
_sw zero,0x0(s2)
beq v0,zero,0x0001f67c
_lw gp,0x10(sp)
lb v1,0x13(v0)
bne v1,s0,0x0001f5cc
_addiu s8,v0,0x13
lb v1,0x14(v0)
bne v1,s0,0x0001f5cc
_nop
lb v1,0x15(v0)
beq v1,zero,0x0001f5d8
_lw t9,-0x7da0(gp)
lw t9,-0x7d28(gp)
jalr t9
_or a0,s8,zero
lw gp,0x10(sp)
beq s7,zero,0x0001f778
_addiu a2,v0,0x1
lw v0,0x20(sp)
beq s3,v0,0x0001f814
_addiu v0,s3,0x1
sll v1,s3,0x2
sw v0,0x24(sp)
lw t9,-0x7f50(gp)
addu v1,s6,v1
or a0,s8,zero
sw v1,0x28(sp)
bal 0x0002089c
_addu s5,s5,a2
or a0,s1,zero
lw gp,0x10(sp)
lw v1,0x28(sp)
lw s3,0x24(sp)
lw t9,-0x7da0(gp)
sw v0,0x0(v1)
jalr t9
_sw zero,0x0(s2)
bne v0,zero,0x0001f5ec
_lw gp,0x10(sp)
lw s0,0x0(s2)
bne s0,zero,0x0001f888
_lw t9,-0x7cc0(gp)
beq s7,zero,0x0001f804
_lw v0,0x1c(sp)
bne s3,zero,0x0001f6b4
_addiu s5,s5,0x1
lw t9,-0x7e48(gp)
bal 0x000204d0
_or a0,s5,zero
lw gp,0x10(sp)
or s4,v0,zero
b 0x0001f734
_or s5,v0,zero
lw t9,-0x7da4(gp)
li a2,0x4
or a1,s3,zero
or a0,s6,zero
jalr t9
_or a3,s7,zero
or a0,s5,zero
lw gp,0x10(sp)
sll s3,s3,0x2
or s5,zero,zero
addu s3,s3,s6
lw t9,-0x7e48(gp)
bal 0x000204d0
_or s1,s6,zero
lw gp,0x10(sp)
or s4,v0,zero
lw a1,0x0(s1)
addu s0,s4,s5
lw t9,-0x7ce0(gp)
addiu s1,s1,0x4
jalr t9
_or a0,s0,zero
lw gp,0x10(sp)
subu v0,v0,s0
lw a0,-0x4(s1)
addiu v0,v0,0x1
lw t9,-0x7cc0(gp)
jalr t9
_addu s5,s5,v0
bne s3,s1,0x0001f6f4
_lw gp,0x10(sp)
addu s5,s4,s5
lw t9,-0x7cc0(gp)
jalr t9
_or a0,s6,zero
sb zero,0x0(s5)
lw ra,0x5c(sp)
or v0,s4,zero
lw s8,0x58(sp)
lw s7,0x54(sp)
lw s6,0x50(sp)
lw s5,0x4c(sp)
lw s4,0x48(sp)
lw s3,0x44(sp)
lw s2,0x40(sp)
lw s1,0x3c(sp)
lw s0,0x38(sp)
jr ra
_addiu sp,sp,0x60
lw v0,0x1c(sp)
subu v0,v0,s5
sltu v0,a2,v0
bne v0,zero,0x0001f7e0
_addu v1,s5,a2
sltu v0,v1,s5
bne v0,zero,0x0001f920
_lw t9,-0x7e78(gp)
beq s4,zero,0x0001f8b4
_lw v0,0x2c(sp)
sltu v0,v1,v0
beq v0,zero,0x0001f920
_addiu v0,v1,0x1
srl a0,v1,0x1
addu v0,v0,a0
sw v0,0x1c(sp)
lw t9,-0x7e44(gp)
or a0,s4,zero
lw a1,0x1c(sp)
sw v1,0x28(sp)
bal 0x0002058c
_sw a2,0x24(sp)
lw gp,0x10(sp)
or s4,v0,zero
lw v1,0x28(sp)
lw a2,0x24(sp)
lw t9,-0x7cc8(gp)
addu a0,s4,s5
sw v1,0x24(sp)
jalr t9
_or a1,s8,zero
lw v1,0x24(sp)
lw gp,0x10(sp)
b 0x0001f5d4
_or s5,v1,zero
beq v0,s5,0x0001f86c
_lw s0,0x1c(sp)
b 0x0001f740
_addu s5,s4,s5
beq s6,zero,0x0001f8d4
_lw v1,0x20(sp)
lw v0,0x30(sp)
sltu v0,v1,v0
beq v0,zero,0x0001f91c
_addiu a0,v1,0x1
srl v0,v1,0x1
sll v1,s3,0x2
sw a0,0x24(sp)
addu v0,a0,v0
sll a1,v0,0x2
sw v0,0x20(sp)
lw t9,-0x7e44(gp)
or a0,s6,zero
sw v1,0x34(sp)
bal 0x0002058c
_sw a2,0x28(sp)
lw gp,0x10(sp)
or s6,v0,zero
lw v1,0x34(sp)
b 0x0001f63c
_lw a2,0x28(sp)
or a0,s4,zero
lw t9,-0x7e44(gp)
bal 0x0002058c
_addiu a1,s0,0x1
or s4,v0,zero
b 0x0001f740
_addu s5,v0,s0
jalr t9
_or a0,s6,zero
or a0,s4,zero
lw gp,0x10(sp)
lw t9,-0x7cc0(gp)
jalr t9
_or s4,zero,zero
b 0x0001f744
_sw s0,0x0(s2)
b 0x0001f744
_or s4,zero,zero
beq v1,zero,0x0001f8cc
_li v0,0x40
bltz v1,0x0001f920
_lw t9,-0x7e78(gp)
b 0x0001f7b8
_sw v1,0x1c(sp)
b 0x0001f7b8
_sw v0,0x1c(sp)
lw a0,0x20(sp)
beq a0,zero,0x0001f904
_li a1,0x40
srl v0,a0,0x1e
sll v1,a0,0x2
bltz v1,0x0001f91c
_sltu v0,zero,v0
bne v0,zero,0x0001f91c
_addiu v0,a0,0x1
or a1,v1,zero
b 0x0001f844
_sw v0,0x24(sp)
li v0,0x10
sw v0,0x20(sp)
li v0,0x1
or v1,zero,zero
b 0x0001f844
_sw v0,0x24(sp)
lw t9,-0x7e78(gp)
bal 0x0001e170
_nop
(translation_unit "undefined1 * streamsavedir(int param_1,int param_2)\n\n{\n  char cVar1;\n  undefined *puVar2;\n  int *piVar3;\n  int iVar4;\n  undefined4 uVar5;\n  int iVar6;\n  uint uVar7;\n  uint uVar8;\n  undefined4 *puVar9;\n  undefined4 *puVar10;\n  undefined1 *puVar11;\n  uint uVar12;\n  undefined1 *puVar13;\n  undefined4 *puVar14;\n  int iVar15;\n  int iVar16;\n  uint local_44;\n  uint local_40;\n  uint local_3c;\n  \n  iVar15 = *(int *)(PTR_DAT_00036388 + param_2 * 4 + 0x5fe8);\n  if (param_1 == 0) {\n    puVar13 = (undefined1 *)0x0;\n  }\n  else {\n    local_3c = 0;\n    piVar3 = (int *)(*(code *)PTR___errno_location_00036604)();\n    puVar14 = (undefined4 *)0x0;\n    local_40 = 0;\n    local_44 = 0;\n    puVar11 = (undefined1 *)0x0;\n    uVar12 = 0;\nLAB_0001f5d8:\n    puVar2 = PTR_readdir64_000365c0;\n    *piVar3 = 0;\n    iVar4 = (*(code *)puVar2)(param_1);\n    if (iVar4 != 0) {\n      while( true ) {\n        cVar1 = *(char *)(iVar4 + 0x13);\n        iVar16 = iVar4 + 0x13;\n        if ((cVar1 == '.') && (cVar1 = *(char *)(iVar4 + 0x14), cVar1 == '.')) {\n          cVar1 = *(char *)(iVar4 + 0x15);\n        }\n        if (cVar1 == '\0') goto LAB_0001f5d8;\n        iVar4 = (*(code *)PTR_strlen_00036638)(iVar16);\n        uVar8 = iVar4 + 1;\n        if (iVar15 == 0) break;\n        if (local_3c == local_40) {\n          if (puVar14 == (undefined4 *)0x0) {\n            if (local_40 == 0) {\n              local_40 = 0x10;\n              iVar6 = 0;\n              local_3c = 1;\n              iVar4 = 0x40;\n            }\n            else {\n              iVar6 = local_40 << 2;\n              if ((iVar6 < 0) || (local_3c = local_40 + 1, iVar4 = iVar6, local_40 >> 0x1e != 0))\n              goto LAB_0001f920;\n            }\n          }\n          else {\n            uVar7 = local_40 + 1;\n            if (0x15555554 < local_40) goto LAB_0001f920;\n            iVar6 = local_3c << 2;\n            local_40 = uVar7 + (local_40 >> 1);\n            iVar4 = local_40 * 4;\n            local_3c = uVar7;\n          }\n          puVar14 = (undefined4 *)xrealloc(puVar14,iVar4);\n        }\n        else {\n          iVar6 = local_3c << 2;\n          local_3c = local_3c + 1;\n        }\n        uVar12 = uVar12 + uVar8;\n        uVar5 = xstrdup(iVar16);\n        puVar2 = PTR_readdir64_000365c0;\n        *(undefined4 *)((int)puVar14 + iVar6) = uVar5;\n        *piVar3 = 0;\n        iVar4 = (*(code *)puVar2)(param_1);\n        if (iVar4 == 0) goto LAB_0001f67c;\n      }\n      uVar7 = uVar12 + uVar8;\n      if (local_44 - uVar12 <= uVar8) {\n        if (uVar7 < uVar12) {\nLAB_0001f920:\n                    /* WARNING: Subroutine does not return */\n          xalloc_die();\n        }\n        if (puVar11 == (undefined1 *)0x0) {\n          if (uVar7 == 0) {\n            local_44 = 0x40;\n          }\n          else {\n            local_44 = uVar7;\n            if ((int)uVar7 < 0) goto LAB_0001f920;\n          }\n        }\n        else {\n          if (0x55555553 < uVar7) goto LAB_0001f920;\n          local_44 = uVar7 + 1 + (uVar7 >> 1);\n        }\n        puVar11 = (undefined1 *)xrealloc(puVar11,local_44);\n      }\n      (*(code *)PTR_memcpy_00036698)(puVar11 + uVar12,iVar16,uVar8);\n      uVar12 = uVar7;\n      goto LAB_0001f5d8;\n    }\nLAB_0001f67c:\n    iVar4 = *piVar3;\n    if (iVar4 == 0) {\n      if (iVar15 == 0) {\n        if (local_44 == uVar12) {\n          puVar11 = (undefined1 *)xrealloc(puVar11,local_44 + 1);\n          puVar13 = puVar11 + local_44;\n        }\n        else {\n          puVar13 = puVar11 + uVar12;\n        }\n      }\n      else {\n        if (local_3c == 0) {\n          puVar11 = (undefined1 *)xmalloc(uVar12 + 1);\n          puVar13 = puVar11;\n        }\n        else {\n          (*(code *)PTR_qsort_000365bc)(puVar14,local_3c,4,iVar15);\n          iVar15 = 0;\n          puVar11 = (undefined1 *)xmalloc(uVar12 + 1);\n          puVar9 = puVar14;\n          do {\n            puVar10 = puVar9 + 1;\n            iVar4 = (*(code *)PTR_stpcpy_00036680)(puVar11 + iVar15,*puVar9);\n            iVar15 = iVar15 + (iVar4 - (int)(puVar11 + iVar15)) + 1;\n            (*(code *)PTR_free_000366a0)(*puVar9);\n            puVar9 = puVar10;\n          } while (puVar14 + local_3c != puVar10);\n          puVar13 = puVar11 + iVar15;\n        }\n        (*(code *)PTR_free_000366a0)(puVar14);\n      }\n      *puVar13 = 0;\n      puVar13 = puVar11;\n    }\n    else {\n      (*(code *)PTR_free_000366a0)(puVar14);\n      puVar13 = (undefined1 *)0x0;\n      (*(code *)PTR_free_000366a0)(puVar11);\n      *piVar3 = iVar4;\n    }\n  }\n  return puVar13;\n}\n\n" (function_definition "undefined1 * streamsavedir(int param_1,int param_2)\n\n{\n  char cVar1;\n  undefined *puVar2;\n  int *piVar3;\n  int iVar4;\n  undefined4 uVar5;\n  int iVar6;\n  uint uVar7;\n  uint uVar8;\n  undefined4 *puVar9;\n  undefined4 *puVar10;\n  undefined1 *puVar11;\n  uint uVar12;\n  undefined1 *puVar13;\n  undefined4 *puVar14;\n  int iVar15;\n  int iVar16;\n  uint local_44;\n  uint local_40;\n  uint local_3c;\n  \n  iVar15 = *(int *)(PTR_DAT_00036388 + param_2 * 4 + 0x5fe8);\n  if (param_1 == 0) {\n    puVar13 = (undefined1 *)0x0;\n  }\n  else {\n    local_3c = 0;\n    piVar3 = (int *)(*(code *)PTR___errno_location_00036604)();\n    puVar14 = (undefined4 *)0x0;\n    local_40 = 0;\n    local_44 = 0;\n    puVar11 = (undefined1 *)0x0;\n    uVar12 = 0;\nLAB_0001f5d8:\n    puVar2 = PTR_readdir64_000365c0;\n    *piVar3 = 0;\n    iVar4 = (*(code *)puVar2)(param_1);\n    if (iVar4 != 0) {\n      while( true ) {\n        cVar1 = *(char *)(iVar4 + 0x13);\n        iVar16 = iVar4 + 0x13;\n        if ((cVar1 == '.') && (cVar1 = *(char *)(iVar4 + 0x14), cVar1 == '.')) {\n          cVar1 = *(char *)(iVar4 + 0x15);\n        }\n        if (cVar1 == '\0') goto LAB_0001f5d8;\n        iVar4 = (*(code *)PTR_strlen_00036638)(iVar16);\n        uVar8 = iVar4 + 1;\n        if (iVar15 == 0) break;\n        if (local_3c == local_40) {\n          if (puVar14 == (undefined4 *)0x0) {\n            if (local_40 == 0) {\n              local_40 = 0x10;\n              iVar6 = 0;\n              local_3c = 1;\n              iVar4 = 0x40;\n            }\n            else {\n              iVar6 = local_40 << 2;\n              if ((iVar6 < 0) || (local_3c = local_40 + 1, iVar4 = iVar6, local_40 >> 0x1e != 0))\n              goto LAB_0001f920;\n            }\n          }\n          else {\n            uVar7 = local_40 + 1;\n            if (0x15555554 < local_40) goto LAB_0001f920;\n            iVar6 = local_3c << 2;\n            local_40 = uVar7 + (local_40 >> 1);\n            iVar4 = local_40 * 4;\n            local_3c = uVar7;\n          }\n          puVar14 = (undefined4 *)xrealloc(puVar14,iVar4);\n        }\n        else {\n          iVar6 = local_3c << 2;\n          local_3c = local_3c + 1;\n        }\n        uVar12 = uVar12 + uVar8;\n        uVar5 = xstrdup(iVar16);\n        puVar2 = PTR_readdir64_000365c0;\n        *(undefined4 *)((int)puVar14 + iVar6) = uVar5;\n        *piVar3 = 0;\n        iVar4 = (*(code *)puVar2)(param_1);\n        if (iVar4 == 0) goto LAB_0001f67c;\n      }\n      uVar7 = uVar12 + uVar8;\n      if (local_44 - uVar12 <= uVar8) {\n        if (uVar7 < uVar12) {\nLAB_0001f920:\n                    /* WARNING: Subroutine does not return */\n          xalloc_die();\n        }\n        if (puVar11 == (undefined1 *)0x0) {\n          if (uVar7 == 0) {\n            local_44 = 0x40;\n          }\n          else {\n            local_44 = uVar7;\n            if ((int)uVar7 < 0) goto LAB_0001f920;\n          }\n        }\n        else {\n          if (0x55555553 < uVar7) goto LAB_0001f920;\n          local_44 = uVar7 + 1 + (uVar7 >> 1);\n        }\n        puVar11 = (undefined1 *)xrealloc(puVar11,local_44);\n      }\n      (*(code *)PTR_memcpy_00036698)(puVar11 + uVar12,iVar16,uVar8);\n      uVar12 = uVar7;\n      goto LAB_0001f5d8;\n    }\nLAB_0001f67c:\n    iVar4 = *piVar3;\n    if (iVar4 == 0) {\n      if (iVar15 == 0) {\n        if (local_44 == uVar12) {\n          puVar11 = (undefined1 *)xrealloc(puVar11,local_44 + 1);\n          puVar13 = puVar11 + local_44;\n        }\n        else {\n          puVar13 = puVar11 + uVar12;\n        }\n      }\n      else {\n        if (local_3c == 0) {\n          puVar11 = (undefined1 *)xmalloc(uVar12 + 1);\n          puVar13 = puVar11;\n        }\n        else {\n          (*(code *)PTR_qsort_000365bc)(puVar14,local_3c,4,iVar15);\n          iVar15 = 0;\n          puVar11 = (undefined1 *)xmalloc(uVar12 + 1);\n          puVar9 = puVar14;\n          do {\n            puVar10 = puVar9 + 1;\n            iVar4 = (*(code *)PTR_stpcpy_00036680)(puVar11 + iVar15,*puVar9);\n            iVar15 = iVar15 + (iVar4 - (int)(puVar11 + iVar15)) + 1;\n            (*(code *)PTR_free_000366a0)(*puVar9);\n            puVar9 = puVar10;\n          } while (puVar14 + local_3c != puVar10);\n          puVar13 = puVar11 + iVar15;\n        }\n        (*(code *)PTR_free_000366a0)(puVar14);\n      }\n      *puVar13 = 0;\n      puVar13 = puVar11;\n    }\n    else {\n      (*(code *)PTR_free_000366a0)(puVar14);\n      puVar13 = (undefined1 *)0x0;\n      (*(code *)PTR_free_000366a0)(puVar11);\n      *piVar3 = iVar4;\n    }\n  }\n  return puVar13;\n}" type_identifier (pointer_declarator "* streamsavedir(int param_1,int param_2)" * (function_declarator "streamsavedir(int param_1,int param_2)" identifier (parameter_list "(int param_1,int param_2)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "int param_2" primitive_type identifier) )))) (compound_statement "{\n  char cVar1;\n  undefined *puVar2;\n  int *piVar3;\n  int iVar4;\n  undefined4 uVar5;\n  int iVar6;\n  uint uVar7;\n  uint uVar8;\n  undefined4 *puVar9;\n  undefined4 *puVar10;\n  undefined1 *puVar11;\n  uint uVar12;\n  undefined1 *puVar13;\n  undefined4 *puVar14;\n  int iVar15;\n  int iVar16;\n  uint local_44;\n  uint local_40;\n  uint local_3c;\n  \n  iVar15 = *(int *)(PTR_DAT_00036388 + param_2 * 4 + 0x5fe8);\n  if (param_1 == 0) {\n    puVar13 = (undefined1 *)0x0;\n  }\n  else {\n    local_3c = 0;\n    piVar3 = (int *)(*(code *)PTR___errno_location_00036604)();\n    puVar14 = (undefined4 *)0x0;\n    local_40 = 0;\n    local_44 = 0;\n    puVar11 = (undefined1 *)0x0;\n    uVar12 = 0;\nLAB_0001f5d8:\n    puVar2 = PTR_readdir64_000365c0;\n    *piVar3 = 0;\n    iVar4 = (*(code *)puVar2)(param_1);\n    if (iVar4 != 0) {\n      while( true ) {\n        cVar1 = *(char *)(iVar4 + 0x13);\n        iVar16 = iVar4 + 0x13;\n        if ((cVar1 == '.') && (cVar1 = *(char *)(iVar4 + 0x14), cVar1 == '.')) {\n          cVar1 = *(char *)(iVar4 + 0x15);\n        }\n        if (cVar1 == '\0') goto LAB_0001f5d8;\n        iVar4 = (*(code *)PTR_strlen_00036638)(iVar16);\n        uVar8 = iVar4 + 1;\n        if (iVar15 == 0) break;\n        if (local_3c == local_40) {\n          if (puVar14 == (undefined4 *)0x0) {\n            if (local_40 == 0) {\n              local_40 = 0x10;\n              iVar6 = 0;\n              local_3c = 1;\n              iVar4 = 0x40;\n            }\n            else {\n              iVar6 = local_40 << 2;\n              if ((iVar6 < 0) || (local_3c = local_40 + 1, iVar4 = iVar6, local_40 >> 0x1e != 0))\n              goto LAB_0001f920;\n            }\n          }\n          else {\n            uVar7 = local_40 + 1;\n            if (0x15555554 < local_40) goto LAB_0001f920;\n            iVar6 = local_3c << 2;\n            local_40 = uVar7 + (local_40 >> 1);\n            iVar4 = local_40 * 4;\n            local_3c = uVar7;\n          }\n          puVar14 = (undefined4 *)xrealloc(puVar14,iVar4);\n        }\n        else {\n          iVar6 = local_3c << 2;\n          local_3c = local_3c + 1;\n        }\n        uVar12 = uVar12 + uVar8;\n        uVar5 = xstrdup(iVar16);\n        puVar2 = PTR_readdir64_000365c0;\n        *(undefined4 *)((int)puVar14 + iVar6) = uVar5;\n        *piVar3 = 0;\n        iVar4 = (*(code *)puVar2)(param_1);\n        if (iVar4 == 0) goto LAB_0001f67c;\n      }\n      uVar7 = uVar12 + uVar8;\n      if (local_44 - uVar12 <= uVar8) {\n        if (uVar7 < uVar12) {\nLAB_0001f920:\n                    /* WARNING: Subroutine does not return */\n          xalloc_die();\n        }\n        if (puVar11 == (undefined1 *)0x0) {\n          if (uVar7 == 0) {\n            local_44 = 0x40;\n          }\n          else {\n            local_44 = uVar7;\n            if ((int)uVar7 < 0) goto LAB_0001f920;\n          }\n        }\n        else {\n          if (0x55555553 < uVar7) goto LAB_0001f920;\n          local_44 = uVar7 + 1 + (uVar7 >> 1);\n        }\n        puVar11 = (undefined1 *)xrealloc(puVar11,local_44);\n      }\n      (*(code *)PTR_memcpy_00036698)(puVar11 + uVar12,iVar16,uVar8);\n      uVar12 = uVar7;\n      goto LAB_0001f5d8;\n    }\nLAB_0001f67c:\n    iVar4 = *piVar3;\n    if (iVar4 == 0) {\n      if (iVar15 == 0) {\n        if (local_44 == uVar12) {\n          puVar11 = (undefined1 *)xrealloc(puVar11,local_44 + 1);\n          puVar13 = puVar11 + local_44;\n        }\n        else {\n          puVar13 = puVar11 + uVar12;\n        }\n      }\n      else {\n        if (local_3c == 0) {\n          puVar11 = (undefined1 *)xmalloc(uVar12 + 1);\n          puVar13 = puVar11;\n        }\n        else {\n          (*(code *)PTR_qsort_000365bc)(puVar14,local_3c,4,iVar15);\n          iVar15 = 0;\n          puVar11 = (undefined1 *)xmalloc(uVar12 + 1);\n          puVar9 = puVar14;\n          do {\n            puVar10 = puVar9 + 1;\n            iVar4 = (*(code *)PTR_stpcpy_00036680)(puVar11 + iVar15,*puVar9);\n            iVar15 = iVar15 + (iVar4 - (int)(puVar11 + iVar15)) + 1;\n            (*(code *)PTR_free_000366a0)(*puVar9);\n            puVar9 = puVar10;\n          } while (puVar14 + local_3c != puVar10);\n          puVar13 = puVar11 + iVar15;\n        }\n        (*(code *)PTR_free_000366a0)(puVar14);\n      }\n      *puVar13 = 0;\n      puVar13 = puVar11;\n    }\n    else {\n      (*(code *)PTR_free_000366a0)(puVar14);\n      puVar13 = (undefined1 *)0x0;\n      (*(code *)PTR_free_000366a0)(puVar11);\n      *piVar3 = iVar4;\n    }\n  }\n  return puVar13;\n}" { (declaration "char cVar1;" primitive_type identifier ;) (declaration "undefined *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "int *piVar3;" primitive_type (pointer_declarator "*piVar3" * identifier) ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "undefined4 uVar5;" type_identifier identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "undefined4 *puVar9;" type_identifier (pointer_declarator "*puVar9" * identifier) ;) (declaration "undefined4 *puVar10;" type_identifier (pointer_declarator "*puVar10" * identifier) ;) (declaration "undefined1 *puVar11;" type_identifier (pointer_declarator "*puVar11" * identifier) ;) (declaration "uint uVar12;" type_identifier identifier ;) (declaration "undefined1 *puVar13;" type_identifier (pointer_declarator "*puVar13" * identifier) ;) (declaration "undefined4 *puVar14;" type_identifier (pointer_declarator "*puVar14" * identifier) ;) (declaration "int iVar15;" primitive_type identifier ;) (declaration "int iVar16;" primitive_type identifier ;) (declaration "uint local_44;" type_identifier identifier ;) (declaration "uint local_40;" type_identifier identifier ;) (declaration "uint local_3c;" type_identifier identifier ;) (expression_statement "iVar15 = *(int *)(PTR_DAT_00036388 + param_2 * 4 + 0x5fe8);" (assignment_expression "iVar15 = *(int *)(PTR_DAT_00036388 + param_2 * 4 + 0x5fe8)" identifier = (pointer_expression "*(int *)(PTR_DAT_00036388 + param_2 * 4 + 0x5fe8)" * (cast_expression "(int *)(PTR_DAT_00036388 + param_2 * 4 + 0x5fe8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_00036388 + param_2 * 4 + 0x5fe8)" ( (binary_expression "PTR_DAT_00036388 + param_2 * 4 + 0x5fe8" (binary_expression "PTR_DAT_00036388 + param_2 * 4" identifier + (binary_expression "param_2 * 4" identifier * number_literal)) + number_literal) ))))) ;) (if_statement "if (param_1 == 0) {\n    puVar13 = (undefined1 *)0x0;\n  }\n  else {\n    local_3c = 0;\n    piVar3 = (int *)(*(code *)PTR___errno_location_00036604)();\n    puVar14 = (undefined4 *)0x0;\n    local_40 = 0;\n    local_44 = 0;\n    puVar11 = (undefined1 *)0x0;\n    uVar12 = 0;\nLAB_0001f5d8:\n    puVar2 = PTR_readdir64_000365c0;\n    *piVar3 = 0;\n    iVar4 = (*(code *)puVar2)(param_1);\n    if (iVar4 != 0) {\n      while( true ) {\n        cVar1 = *(char *)(iVar4 + 0x13);\n        iVar16 = iVar4 + 0x13;\n        if ((cVar1 == '.') && (cVar1 = *(char *)(iVar4 + 0x14), cVar1 == '.')) {\n          cVar1 = *(char *)(iVar4 + 0x15);\n        }\n        if (cVar1 == '\0') goto LAB_0001f5d8;\n        iVar4 = (*(code *)PTR_strlen_00036638)(iVar16);\n        uVar8 = iVar4 + 1;\n        if (iVar15 == 0) break;\n        if (local_3c == local_40) {\n          if (puVar14 == (undefined4 *)0x0) {\n            if (local_40 == 0) {\n              local_40 = 0x10;\n              iVar6 = 0;\n              local_3c = 1;\n              iVar4 = 0x40;\n            }\n            else {\n              iVar6 = local_40 << 2;\n              if ((iVar6 < 0) || (local_3c = local_40 + 1, iVar4 = iVar6, local_40 >> 0x1e != 0))\n              goto LAB_0001f920;\n            }\n          }\n          else {\n            uVar7 = local_40 + 1;\n            if (0x15555554 < local_40) goto LAB_0001f920;\n            iVar6 = local_3c << 2;\n            local_40 = uVar7 + (local_40 >> 1);\n            iVar4 = local_40 * 4;\n            local_3c = uVar7;\n          }\n          puVar14 = (undefined4 *)xrealloc(puVar14,iVar4);\n        }\n        else {\n          iVar6 = local_3c << 2;\n          local_3c = local_3c + 1;\n        }\n        uVar12 = uVar12 + uVar8;\n        uVar5 = xstrdup(iVar16);\n        puVar2 = PTR_readdir64_000365c0;\n        *(undefined4 *)((int)puVar14 + iVar6) = uVar5;\n        *piVar3 = 0;\n        iVar4 = (*(code *)puVar2)(param_1);\n        if (iVar4 == 0) goto LAB_0001f67c;\n      }\n      uVar7 = uVar12 + uVar8;\n      if (local_44 - uVar12 <= uVar8) {\n        if (uVar7 < uVar12) {\nLAB_0001f920:\n                    /* WARNING: Subroutine does not return */\n          xalloc_die();\n        }\n        if (puVar11 == (undefined1 *)0x0) {\n          if (uVar7 == 0) {\n            local_44 = 0x40;\n          }\n          else {\n            local_44 = uVar7;\n            if ((int)uVar7 < 0) goto LAB_0001f920;\n          }\n        }\n        else {\n          if (0x55555553 < uVar7) goto LAB_0001f920;\n          local_44 = uVar7 + 1 + (uVar7 >> 1);\n        }\n        puVar11 = (undefined1 *)xrealloc(puVar11,local_44);\n      }\n      (*(code *)PTR_memcpy_00036698)(puVar11 + uVar12,iVar16,uVar8);\n      uVar12 = uVar7;\n      goto LAB_0001f5d8;\n    }\nLAB_0001f67c:\n    iVar4 = *piVar3;\n    if (iVar4 == 0) {\n      if (iVar15 == 0) {\n        if (local_44 == uVar12) {\n          puVar11 = (undefined1 *)xrealloc(puVar11,local_44 + 1);\n          puVar13 = puVar11 + local_44;\n        }\n        else {\n          puVar13 = puVar11 + uVar12;\n        }\n      }\n      else {\n        if (local_3c == 0) {\n          puVar11 = (undefined1 *)xmalloc(uVar12 + 1);\n          puVar13 = puVar11;\n        }\n        else {\n          (*(code *)PTR_qsort_000365bc)(puVar14,local_3c,4,iVar15);\n          iVar15 = 0;\n          puVar11 = (undefined1 *)xmalloc(uVar12 + 1);\n          puVar9 = puVar14;\n          do {\n            puVar10 = puVar9 + 1;\n            iVar4 = (*(code *)PTR_stpcpy_00036680)(puVar11 + iVar15,*puVar9);\n            iVar15 = iVar15 + (iVar4 - (int)(puVar11 + iVar15)) + 1;\n            (*(code *)PTR_free_000366a0)(*puVar9);\n            puVar9 = puVar10;\n          } while (puVar14 + local_3c != puVar10);\n          puVar13 = puVar11 + iVar15;\n        }\n        (*(code *)PTR_free_000366a0)(puVar14);\n      }\n      *puVar13 = 0;\n      puVar13 = puVar11;\n    }\n    else {\n      (*(code *)PTR_free_000366a0)(puVar14);\n      puVar13 = (undefined1 *)0x0;\n      (*(code *)PTR_free_000366a0)(puVar11);\n      *piVar3 = iVar4;\n    }\n  }" if (parenthesized_expression "(param_1 == 0)" ( (binary_expression "param_1 == 0" identifier == number_literal) )) (compound_statement "{\n    puVar13 = (undefined1 *)0x0;\n  }" { (expression_statement "puVar13 = (undefined1 *)0x0;" (assignment_expression "puVar13 = (undefined1 *)0x0" identifier = (cast_expression "(undefined1 *)0x0" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }) (else_clause "else {\n    local_3c = 0;\n    piVar3 = (int *)(*(code *)PTR___errno_location_00036604)();\n    puVar14 = (undefined4 *)0x0;\n    local_40 = 0;\n    local_44 = 0;\n    puVar11 = (undefined1 *)0x0;\n    uVar12 = 0;\nLAB_0001f5d8:\n    puVar2 = PTR_readdir64_000365c0;\n    *piVar3 = 0;\n    iVar4 = (*(code *)puVar2)(param_1);\n    if (iVar4 != 0) {\n      while( true ) {\n        cVar1 = *(char *)(iVar4 + 0x13);\n        iVar16 = iVar4 + 0x13;\n        if ((cVar1 == '.') && (cVar1 = *(char *)(iVar4 + 0x14), cVar1 == '.')) {\n          cVar1 = *(char *)(iVar4 + 0x15);\n        }\n        if (cVar1 == '\0') goto LAB_0001f5d8;\n        iVar4 = (*(code *)PTR_strlen_00036638)(iVar16);\n        uVar8 = iVar4 + 1;\n        if (iVar15 == 0) break;\n        if (local_3c == local_40) {\n          if (puVar14 == (undefined4 *)0x0) {\n            if (local_40 == 0) {\n              local_40 = 0x10;\n              iVar6 = 0;\n              local_3c = 1;\n              iVar4 = 0x40;\n            }\n            else {\n              iVar6 = local_40 << 2;\n              if ((iVar6 < 0) || (local_3c = local_40 + 1, iVar4 = iVar6, local_40 >> 0x1e != 0))\n              goto LAB_0001f920;\n            }\n          }\n          else {\n            uVar7 = local_40 + 1;\n            if (0x15555554 < local_40) goto LAB_0001f920;\n            iVar6 = local_3c << 2;\n            local_40 = uVar7 + (local_40 >> 1);\n            iVar4 = local_40 * 4;\n            local_3c = uVar7;\n          }\n          puVar14 = (undefined4 *)xrealloc(puVar14,iVar4);\n        }\n        else {\n          iVar6 = local_3c << 2;\n          local_3c = local_3c + 1;\n        }\n        uVar12 = uVar12 + uVar8;\n        uVar5 = xstrdup(iVar16);\n        puVar2 = PTR_readdir64_000365c0;\n        *(undefined4 *)((int)puVar14 + iVar6) = uVar5;\n        *piVar3 = 0;\n        iVar4 = (*(code *)puVar2)(param_1);\n        if (iVar4 == 0) goto LAB_0001f67c;\n      }\n      uVar7 = uVar12 + uVar8;\n      if (local_44 - uVar12 <= uVar8) {\n        if (uVar7 < uVar12) {\nLAB_0001f920:\n                    /* WARNING: Subroutine does not return */\n          xalloc_die();\n        }\n        if (puVar11 == (undefined1 *)0x0) {\n          if (uVar7 == 0) {\n            local_44 = 0x40;\n          }\n          else {\n            local_44 = uVar7;\n            if ((int)uVar7 < 0) goto LAB_0001f920;\n          }\n        }\n        else {\n          if (0x55555553 < uVar7) goto LAB_0001f920;\n          local_44 = uVar7 + 1 + (uVar7 >> 1);\n        }\n        puVar11 = (undefined1 *)xrealloc(puVar11,local_44);\n      }\n      (*(code *)PTR_memcpy_00036698)(puVar11 + uVar12,iVar16,uVar8);\n      uVar12 = uVar7;\n      goto LAB_0001f5d8;\n    }\nLAB_0001f67c:\n    iVar4 = *piVar3;\n    if (iVar4 == 0) {\n      if (iVar15 == 0) {\n        if (local_44 == uVar12) {\n          puVar11 = (undefined1 *)xrealloc(puVar11,local_44 + 1);\n          puVar13 = puVar11 + local_44;\n        }\n        else {\n          puVar13 = puVar11 + uVar12;\n        }\n      }\n      else {\n        if (local_3c == 0) {\n          puVar11 = (undefined1 *)xmalloc(uVar12 + 1);\n          puVar13 = puVar11;\n        }\n        else {\n          (*(code *)PTR_qsort_000365bc)(puVar14,local_3c,4,iVar15);\n          iVar15 = 0;\n          puVar11 = (undefined1 *)xmalloc(uVar12 + 1);\n          puVar9 = puVar14;\n          do {\n            puVar10 = puVar9 + 1;\n            iVar4 = (*(code *)PTR_stpcpy_00036680)(puVar11 + iVar15,*puVar9);\n            iVar15 = iVar15 + (iVar4 - (int)(puVar11 + iVar15)) + 1;\n            (*(code *)PTR_free_000366a0)(*puVar9);\n            puVar9 = puVar10;\n          } while (puVar14 + local_3c != puVar10);\n          puVar13 = puVar11 + iVar15;\n        }\n        (*(code *)PTR_free_000366a0)(puVar14);\n      }\n      *puVar13 = 0;\n      puVar13 = puVar11;\n    }\n    else {\n      (*(code *)PTR_free_000366a0)(puVar14);\n      puVar13 = (undefined1 *)0x0;\n      (*(code *)PTR_free_000366a0)(puVar11);\n      *piVar3 = iVar4;\n    }\n  }" else (compound_statement "{\n    local_3c = 0;\n    piVar3 = (int *)(*(code *)PTR___errno_location_00036604)();\n    puVar14 = (undefined4 *)0x0;\n    local_40 = 0;\n    local_44 = 0;\n    puVar11 = (undefined1 *)0x0;\n    uVar12 = 0;\nLAB_0001f5d8:\n    puVar2 = PTR_readdir64_000365c0;\n    *piVar3 = 0;\n    iVar4 = (*(code *)puVar2)(param_1);\n    if (iVar4 != 0) {\n      while( true ) {\n        cVar1 = *(char *)(iVar4 + 0x13);\n        iVar16 = iVar4 + 0x13;\n        if ((cVar1 == '.') && (cVar1 = *(char *)(iVar4 + 0x14), cVar1 == '.')) {\n          cVar1 = *(char *)(iVar4 + 0x15);\n        }\n        if (cVar1 == '\0') goto LAB_0001f5d8;\n        iVar4 = (*(code *)PTR_strlen_00036638)(iVar16);\n        uVar8 = iVar4 + 1;\n        if (iVar15 == 0) break;\n        if (local_3c == local_40) {\n          if (puVar14 == (undefined4 *)0x0) {\n            if (local_40 == 0) {\n              local_40 = 0x10;\n              iVar6 = 0;\n              local_3c = 1;\n              iVar4 = 0x40;\n            }\n            else {\n              iVar6 = local_40 << 2;\n              if ((iVar6 < 0) || (local_3c = local_40 + 1, iVar4 = iVar6, local_40 >> 0x1e != 0))\n              goto LAB_0001f920;\n            }\n          }\n          else {\n            uVar7 = local_40 + 1;\n            if (0x15555554 < local_40) goto LAB_0001f920;\n            iVar6 = local_3c << 2;\n            local_40 = uVar7 + (local_40 >> 1);\n            iVar4 = local_40 * 4;\n            local_3c = uVar7;\n          }\n          puVar14 = (undefined4 *)xrealloc(puVar14,iVar4);\n        }\n        else {\n          iVar6 = local_3c << 2;\n          local_3c = local_3c + 1;\n        }\n        uVar12 = uVar12 + uVar8;\n        uVar5 = xstrdup(iVar16);\n        puVar2 = PTR_readdir64_000365c0;\n        *(undefined4 *)((int)puVar14 + iVar6) = uVar5;\n        *piVar3 = 0;\n        iVar4 = (*(code *)puVar2)(param_1);\n        if (iVar4 == 0) goto LAB_0001f67c;\n      }\n      uVar7 = uVar12 + uVar8;\n      if (local_44 - uVar12 <= uVar8) {\n        if (uVar7 < uVar12) {\nLAB_0001f920:\n                    /* WARNING: Subroutine does not return */\n          xalloc_die();\n        }\n        if (puVar11 == (undefined1 *)0x0) {\n          if (uVar7 == 0) {\n            local_44 = 0x40;\n          }\n          else {\n            local_44 = uVar7;\n            if ((int)uVar7 < 0) goto LAB_0001f920;\n          }\n        }\n        else {\n          if (0x55555553 < uVar7) goto LAB_0001f920;\n          local_44 = uVar7 + 1 + (uVar7 >> 1);\n        }\n        puVar11 = (undefined1 *)xrealloc(puVar11,local_44);\n      }\n      (*(code *)PTR_memcpy_00036698)(puVar11 + uVar12,iVar16,uVar8);\n      uVar12 = uVar7;\n      goto LAB_0001f5d8;\n    }\nLAB_0001f67c:\n    iVar4 = *piVar3;\n    if (iVar4 == 0) {\n      if (iVar15 == 0) {\n        if (local_44 == uVar12) {\n          puVar11 = (undefined1 *)xrealloc(puVar11,local_44 + 1);\n          puVar13 = puVar11 + local_44;\n        }\n        else {\n          puVar13 = puVar11 + uVar12;\n        }\n      }\n      else {\n        if (local_3c == 0) {\n          puVar11 = (undefined1 *)xmalloc(uVar12 + 1);\n          puVar13 = puVar11;\n        }\n        else {\n          (*(code *)PTR_qsort_000365bc)(puVar14,local_3c,4,iVar15);\n          iVar15 = 0;\n          puVar11 = (undefined1 *)xmalloc(uVar12 + 1);\n          puVar9 = puVar14;\n          do {\n            puVar10 = puVar9 + 1;\n            iVar4 = (*(code *)PTR_stpcpy_00036680)(puVar11 + iVar15,*puVar9);\n            iVar15 = iVar15 + (iVar4 - (int)(puVar11 + iVar15)) + 1;\n            (*(code *)PTR_free_000366a0)(*puVar9);\n            puVar9 = puVar10;\n          } while (puVar14 + local_3c != puVar10);\n          puVar13 = puVar11 + iVar15;\n        }\n        (*(code *)PTR_free_000366a0)(puVar14);\n      }\n      *puVar13 = 0;\n      puVar13 = puVar11;\n    }\n    else {\n      (*(code *)PTR_free_000366a0)(puVar14);\n      puVar13 = (undefined1 *)0x0;\n      (*(code *)PTR_free_000366a0)(puVar11);\n      *piVar3 = iVar4;\n    }\n  }" { (expression_statement "local_3c = 0;" (assignment_expression "local_3c = 0" identifier = number_literal) ;) (expression_statement "piVar3 = (int *)(*(code *)PTR___errno_location_00036604)();" (assignment_expression "piVar3 = (int *)(*(code *)PTR___errno_location_00036604)()" identifier = (cast_expression "(int *)(*(code *)PTR___errno_location_00036604)()" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR___errno_location_00036604)()" (parenthesized_expression "(*(code *)PTR___errno_location_00036604)" ( (pointer_expression "*(code *)PTR___errno_location_00036604" * (cast_expression "(code *)PTR___errno_location_00036604" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))))) ;) (expression_statement "puVar14 = (undefined4 *)0x0;" (assignment_expression "puVar14 = (undefined4 *)0x0" identifier = (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_40 = 0;" (assignment_expression "local_40 = 0" identifier = number_literal) ;) (expression_statement "local_44 = 0;" (assignment_expression "local_44 = 0" identifier = number_literal) ;) (expression_statement "puVar11 = (undefined1 *)0x0;" (assignment_expression "puVar11 = (undefined1 *)0x0" identifier = (cast_expression "(undefined1 *)0x0" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "uVar12 = 0;" (assignment_expression "uVar12 = 0" identifier = number_literal) ;) (labeled_statement "LAB_0001f5d8:\n    puVar2 = PTR_readdir64_000365c0;" statement_identifier : (expression_statement "puVar2 = PTR_readdir64_000365c0;" (assignment_expression "puVar2 = PTR_readdir64_000365c0" identifier = identifier) ;)) (expression_statement "*piVar3 = 0;" (assignment_expression "*piVar3 = 0" (pointer_expression "*piVar3" * identifier) = number_literal) ;) (expression_statement "iVar4 = (*(code *)puVar2)(param_1);" (assignment_expression "iVar4 = (*(code *)puVar2)(param_1)" identifier = (call_expression "(*(code *)puVar2)(param_1)" (parenthesized_expression "(*(code *)puVar2)" ( (pointer_expression "*(code *)puVar2" * (cast_expression "(code *)puVar2" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_1)" ( identifier )))) ;) (if_statement "if (iVar4 != 0) {\n      while( true ) {\n        cVar1 = *(char *)(iVar4 + 0x13);\n        iVar16 = iVar4 + 0x13;\n        if ((cVar1 == '.') && (cVar1 = *(char *)(iVar4 + 0x14), cVar1 == '.')) {\n          cVar1 = *(char *)(iVar4 + 0x15);\n        }\n        if (cVar1 == '\0') goto LAB_0001f5d8;\n        iVar4 = (*(code *)PTR_strlen_00036638)(iVar16);\n        uVar8 = iVar4 + 1;\n        if (iVar15 == 0) break;\n        if (local_3c == local_40) {\n          if (puVar14 == (undefined4 *)0x0) {\n            if (local_40 == 0) {\n              local_40 = 0x10;\n              iVar6 = 0;\n              local_3c = 1;\n              iVar4 = 0x40;\n            }\n            else {\n              iVar6 = local_40 << 2;\n              if ((iVar6 < 0) || (local_3c = local_40 + 1, iVar4 = iVar6, local_40 >> 0x1e != 0))\n              goto LAB_0001f920;\n            }\n          }\n          else {\n            uVar7 = local_40 + 1;\n            if (0x15555554 < local_40) goto LAB_0001f920;\n            iVar6 = local_3c << 2;\n            local_40 = uVar7 + (local_40 >> 1);\n            iVar4 = local_40 * 4;\n            local_3c = uVar7;\n          }\n          puVar14 = (undefined4 *)xrealloc(puVar14,iVar4);\n        }\n        else {\n          iVar6 = local_3c << 2;\n          local_3c = local_3c + 1;\n        }\n        uVar12 = uVar12 + uVar8;\n        uVar5 = xstrdup(iVar16);\n        puVar2 = PTR_readdir64_000365c0;\n        *(undefined4 *)((int)puVar14 + iVar6) = uVar5;\n        *piVar3 = 0;\n        iVar4 = (*(code *)puVar2)(param_1);\n        if (iVar4 == 0) goto LAB_0001f67c;\n      }\n      uVar7 = uVar12 + uVar8;\n      if (local_44 - uVar12 <= uVar8) {\n        if (uVar7 < uVar12) {\nLAB_0001f920:\n                    /* WARNING: Subroutine does not return */\n          xalloc_die();\n        }\n        if (puVar11 == (undefined1 *)0x0) {\n          if (uVar7 == 0) {\n            local_44 = 0x40;\n          }\n          else {\n            local_44 = uVar7;\n            if ((int)uVar7 < 0) goto LAB_0001f920;\n          }\n        }\n        else {\n          if (0x55555553 < uVar7) goto LAB_0001f920;\n          local_44 = uVar7 + 1 + (uVar7 >> 1);\n        }\n        puVar11 = (undefined1 *)xrealloc(puVar11,local_44);\n      }\n      (*(code *)PTR_memcpy_00036698)(puVar11 + uVar12,iVar16,uVar8);\n      uVar12 = uVar7;\n      goto LAB_0001f5d8;\n    }" if (parenthesized_expression "(iVar4 != 0)" ( (binary_expression "iVar4 != 0" identifier != number_literal) )) (compound_statement "{\n      while( true ) {\n        cVar1 = *(char *)(iVar4 + 0x13);\n        iVar16 = iVar4 + 0x13;\n        if ((cVar1 == '.') && (cVar1 = *(char *)(iVar4 + 0x14), cVar1 == '.')) {\n          cVar1 = *(char *)(iVar4 + 0x15);\n        }\n        if (cVar1 == '\0') goto LAB_0001f5d8;\n        iVar4 = (*(code *)PTR_strlen_00036638)(iVar16);\n        uVar8 = iVar4 + 1;\n        if (iVar15 == 0) break;\n        if (local_3c == local_40) {\n          if (puVar14 == (undefined4 *)0x0) {\n            if (local_40 == 0) {\n              local_40 = 0x10;\n              iVar6 = 0;\n              local_3c = 1;\n              iVar4 = 0x40;\n            }\n            else {\n              iVar6 = local_40 << 2;\n              if ((iVar6 < 0) || (local_3c = local_40 + 1, iVar4 = iVar6, local_40 >> 0x1e != 0))\n              goto LAB_0001f920;\n            }\n          }\n          else {\n            uVar7 = local_40 + 1;\n            if (0x15555554 < local_40) goto LAB_0001f920;\n            iVar6 = local_3c << 2;\n            local_40 = uVar7 + (local_40 >> 1);\n            iVar4 = local_40 * 4;\n            local_3c = uVar7;\n          }\n          puVar14 = (undefined4 *)xrealloc(puVar14,iVar4);\n        }\n        else {\n          iVar6 = local_3c << 2;\n          local_3c = local_3c + 1;\n        }\n        uVar12 = uVar12 + uVar8;\n        uVar5 = xstrdup(iVar16);\n        puVar2 = PTR_readdir64_000365c0;\n        *(undefined4 *)((int)puVar14 + iVar6) = uVar5;\n        *piVar3 = 0;\n        iVar4 = (*(code *)puVar2)(param_1);\n        if (iVar4 == 0) goto LAB_0001f67c;\n      }\n      uVar7 = uVar12 + uVar8;\n      if (local_44 - uVar12 <= uVar8) {\n        if (uVar7 < uVar12) {\nLAB_0001f920:\n                    /* WARNING: Subroutine does not return */\n          xalloc_die();\n        }\n        if (puVar11 == (undefined1 *)0x0) {\n          if (uVar7 == 0) {\n            local_44 = 0x40;\n          }\n          else {\n            local_44 = uVar7;\n            if ((int)uVar7 < 0) goto LAB_0001f920;\n          }\n        }\n        else {\n          if (0x55555553 < uVar7) goto LAB_0001f920;\n          local_44 = uVar7 + 1 + (uVar7 >> 1);\n        }\n        puVar11 = (undefined1 *)xrealloc(puVar11,local_44);\n      }\n      (*(code *)PTR_memcpy_00036698)(puVar11 + uVar12,iVar16,uVar8);\n      uVar12 = uVar7;\n      goto LAB_0001f5d8;\n    }" { (while_statement "while( true ) {\n        cVar1 = *(char *)(iVar4 + 0x13);\n        iVar16 = iVar4 + 0x13;\n        if ((cVar1 == '.') && (cVar1 = *(char *)(iVar4 + 0x14), cVar1 == '.')) {\n          cVar1 = *(char *)(iVar4 + 0x15);\n        }\n        if (cVar1 == '\0') goto LAB_0001f5d8;\n        iVar4 = (*(code *)PTR_strlen_00036638)(iVar16);\n        uVar8 = iVar4 + 1;\n        if (iVar15 == 0) break;\n        if (local_3c == local_40) {\n          if (puVar14 == (undefined4 *)0x0) {\n            if (local_40 == 0) {\n              local_40 = 0x10;\n              iVar6 = 0;\n              local_3c = 1;\n              iVar4 = 0x40;\n            }\n            else {\n              iVar6 = local_40 << 2;\n              if ((iVar6 < 0) || (local_3c = local_40 + 1, iVar4 = iVar6, local_40 >> 0x1e != 0))\n              goto LAB_0001f920;\n            }\n          }\n          else {\n            uVar7 = local_40 + 1;\n            if (0x15555554 < local_40) goto LAB_0001f920;\n            iVar6 = local_3c << 2;\n            local_40 = uVar7 + (local_40 >> 1);\n            iVar4 = local_40 * 4;\n            local_3c = uVar7;\n          }\n          puVar14 = (undefined4 *)xrealloc(puVar14,iVar4);\n        }\n        else {\n          iVar6 = local_3c << 2;\n          local_3c = local_3c + 1;\n        }\n        uVar12 = uVar12 + uVar8;\n        uVar5 = xstrdup(iVar16);\n        puVar2 = PTR_readdir64_000365c0;\n        *(undefined4 *)((int)puVar14 + iVar6) = uVar5;\n        *piVar3 = 0;\n        iVar4 = (*(code *)puVar2)(param_1);\n        if (iVar4 == 0) goto LAB_0001f67c;\n      }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n        cVar1 = *(char *)(iVar4 + 0x13);\n        iVar16 = iVar4 + 0x13;\n        if ((cVar1 == '.') && (cVar1 = *(char *)(iVar4 + 0x14), cVar1 == '.')) {\n          cVar1 = *(char *)(iVar4 + 0x15);\n        }\n        if (cVar1 == '\0') goto LAB_0001f5d8;\n        iVar4 = (*(code *)PTR_strlen_00036638)(iVar16);\n        uVar8 = iVar4 + 1;\n        if (iVar15 == 0) break;\n        if (local_3c == local_40) {\n          if (puVar14 == (undefined4 *)0x0) {\n            if (local_40 == 0) {\n              local_40 = 0x10;\n              iVar6 = 0;\n              local_3c = 1;\n              iVar4 = 0x40;\n            }\n            else {\n              iVar6 = local_40 << 2;\n              if ((iVar6 < 0) || (local_3c = local_40 + 1, iVar4 = iVar6, local_40 >> 0x1e != 0))\n              goto LAB_0001f920;\n            }\n          }\n          else {\n            uVar7 = local_40 + 1;\n            if (0x15555554 < local_40) goto LAB_0001f920;\n            iVar6 = local_3c << 2;\n            local_40 = uVar7 + (local_40 >> 1);\n            iVar4 = local_40 * 4;\n            local_3c = uVar7;\n          }\n          puVar14 = (undefined4 *)xrealloc(puVar14,iVar4);\n        }\n        else {\n          iVar6 = local_3c << 2;\n          local_3c = local_3c + 1;\n        }\n        uVar12 = uVar12 + uVar8;\n        uVar5 = xstrdup(iVar16);\n        puVar2 = PTR_readdir64_000365c0;\n        *(undefined4 *)((int)puVar14 + iVar6) = uVar5;\n        *piVar3 = 0;\n        iVar4 = (*(code *)puVar2)(param_1);\n        if (iVar4 == 0) goto LAB_0001f67c;\n      }" { (expression_statement "cVar1 = *(char *)(iVar4 + 0x13);" (assignment_expression "cVar1 = *(char *)(iVar4 + 0x13)" identifier = (pointer_expression "*(char *)(iVar4 + 0x13)" * (cast_expression "(char *)(iVar4 + 0x13)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x13)" ( (binary_expression "iVar4 + 0x13" identifier + number_literal) ))))) ;) (expression_statement "iVar16 = iVar4 + 0x13;" (assignment_expression "iVar16 = iVar4 + 0x13" identifier = (binary_expression "iVar4 + 0x13" identifier + number_literal)) ;) (if_statement "if ((cVar1 == '.') && (cVar1 = *(char *)(iVar4 + 0x14), cVar1 == '.')) {\n          cVar1 = *(char *)(iVar4 + 0x15);\n        }" if (parenthesized_expression "((cVar1 == '.') && (cVar1 = *(char *)(iVar4 + 0x14), cVar1 == '.'))" ( (binary_expression "(cVar1 == '.') && (cVar1 = *(char *)(iVar4 + 0x14), cVar1 == '.')" (parenthesized_expression "(cVar1 == '.')" ( (binary_expression "cVar1 == '.'" identifier == (char_literal "'.'" ' character ')) )) && (parenthesized_expression "(cVar1 = *(char *)(iVar4 + 0x14), cVar1 == '.')" ( (comma_expression "cVar1 = *(char *)(iVar4 + 0x14), cVar1 == '.'" (assignment_expression "cVar1 = *(char *)(iVar4 + 0x14)" identifier = (pointer_expression "*(char *)(iVar4 + 0x14)" * (cast_expression "(char *)(iVar4 + 0x14)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x14)" ( (binary_expression "iVar4 + 0x14" identifier + number_literal) ))))) , (binary_expression "cVar1 == '.'" identifier == (char_literal "'.'" ' character '))) ))) )) (compound_statement "{\n          cVar1 = *(char *)(iVar4 + 0x15);\n        }" { (expression_statement "cVar1 = *(char *)(iVar4 + 0x15);" (assignment_expression "cVar1 = *(char *)(iVar4 + 0x15)" identifier = (pointer_expression "*(char *)(iVar4 + 0x15)" * (cast_expression "(char *)(iVar4 + 0x15)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x15)" ( (binary_expression "iVar4 + 0x15" identifier + number_literal) ))))) ;) })) (if_statement "if (cVar1 == '\0') goto LAB_0001f5d8;" if (parenthesized_expression "(cVar1 == '\0')" ( (binary_expression "cVar1 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_0001f5d8;" goto statement_identifier ;)) (expression_statement "iVar4 = (*(code *)PTR_strlen_00036638)(iVar16);" (assignment_expression "iVar4 = (*(code *)PTR_strlen_00036638)(iVar16)" identifier = (call_expression "(*(code *)PTR_strlen_00036638)(iVar16)" (parenthesized_expression "(*(code *)PTR_strlen_00036638)" ( (pointer_expression "*(code *)PTR_strlen_00036638" * (cast_expression "(code *)PTR_strlen_00036638" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(iVar16)" ( identifier )))) ;) (expression_statement "uVar8 = iVar4 + 1;" (assignment_expression "uVar8 = iVar4 + 1" identifier = (binary_expression "iVar4 + 1" identifier + number_literal)) ;) (if_statement "if (iVar15 == 0) break;" if (parenthesized_expression "(iVar15 == 0)" ( (binary_expression "iVar15 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (if_statement "if (local_3c == local_40) {\n          if (puVar14 == (undefined4 *)0x0) {\n            if (local_40 == 0) {\n              local_40 = 0x10;\n              iVar6 = 0;\n              local_3c = 1;\n              iVar4 = 0x40;\n            }\n            else {\n              iVar6 = local_40 << 2;\n              if ((iVar6 < 0) || (local_3c = local_40 + 1, iVar4 = iVar6, local_40 >> 0x1e != 0))\n              goto LAB_0001f920;\n            }\n          }\n          else {\n            uVar7 = local_40 + 1;\n            if (0x15555554 < local_40) goto LAB_0001f920;\n            iVar6 = local_3c << 2;\n            local_40 = uVar7 + (local_40 >> 1);\n            iVar4 = local_40 * 4;\n            local_3c = uVar7;\n          }\n          puVar14 = (undefined4 *)xrealloc(puVar14,iVar4);\n        }\n        else {\n          iVar6 = local_3c << 2;\n          local_3c = local_3c + 1;\n        }" if (parenthesized_expression "(local_3c == local_40)" ( (binary_expression "local_3c == local_40" identifier == identifier) )) (compound_statement "{\n          if (puVar14 == (undefined4 *)0x0) {\n            if (local_40 == 0) {\n              local_40 = 0x10;\n              iVar6 = 0;\n              local_3c = 1;\n              iVar4 = 0x40;\n            }\n            else {\n              iVar6 = local_40 << 2;\n              if ((iVar6 < 0) || (local_3c = local_40 + 1, iVar4 = iVar6, local_40 >> 0x1e != 0))\n              goto LAB_0001f920;\n            }\n          }\n          else {\n            uVar7 = local_40 + 1;\n            if (0x15555554 < local_40) goto LAB_0001f920;\n            iVar6 = local_3c << 2;\n            local_40 = uVar7 + (local_40 >> 1);\n            iVar4 = local_40 * 4;\n            local_3c = uVar7;\n          }\n          puVar14 = (undefined4 *)xrealloc(puVar14,iVar4);\n        }" { (if_statement "if (puVar14 == (undefined4 *)0x0) {\n            if (local_40 == 0) {\n              local_40 = 0x10;\n              iVar6 = 0;\n              local_3c = 1;\n              iVar4 = 0x40;\n            }\n            else {\n              iVar6 = local_40 << 2;\n              if ((iVar6 < 0) || (local_3c = local_40 + 1, iVar4 = iVar6, local_40 >> 0x1e != 0))\n              goto LAB_0001f920;\n            }\n          }\n          else {\n            uVar7 = local_40 + 1;\n            if (0x15555554 < local_40) goto LAB_0001f920;\n            iVar6 = local_3c << 2;\n            local_40 = uVar7 + (local_40 >> 1);\n            iVar4 = local_40 * 4;\n            local_3c = uVar7;\n          }" if (parenthesized_expression "(puVar14 == (undefined4 *)0x0)" ( (binary_expression "puVar14 == (undefined4 *)0x0" identifier == (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            if (local_40 == 0) {\n              local_40 = 0x10;\n              iVar6 = 0;\n              local_3c = 1;\n              iVar4 = 0x40;\n            }\n            else {\n              iVar6 = local_40 << 2;\n              if ((iVar6 < 0) || (local_3c = local_40 + 1, iVar4 = iVar6, local_40 >> 0x1e != 0))\n              goto LAB_0001f920;\n            }\n          }" { (if_statement "if (local_40 == 0) {\n              local_40 = 0x10;\n              iVar6 = 0;\n              local_3c = 1;\n              iVar4 = 0x40;\n            }\n            else {\n              iVar6 = local_40 << 2;\n              if ((iVar6 < 0) || (local_3c = local_40 + 1, iVar4 = iVar6, local_40 >> 0x1e != 0))\n              goto LAB_0001f920;\n            }" if (parenthesized_expression "(local_40 == 0)" ( (binary_expression "local_40 == 0" identifier == number_literal) )) (compound_statement "{\n              local_40 = 0x10;\n              iVar6 = 0;\n              local_3c = 1;\n              iVar4 = 0x40;\n            }" { (expression_statement "local_40 = 0x10;" (assignment_expression "local_40 = 0x10" identifier = number_literal) ;) (expression_statement "iVar6 = 0;" (assignment_expression "iVar6 = 0" identifier = number_literal) ;) (expression_statement "local_3c = 1;" (assignment_expression "local_3c = 1" identifier = number_literal) ;) (expression_statement "iVar4 = 0x40;" (assignment_expression "iVar4 = 0x40" identifier = number_literal) ;) }) (else_clause "else {\n              iVar6 = local_40 << 2;\n              if ((iVar6 < 0) || (local_3c = local_40 + 1, iVar4 = iVar6, local_40 >> 0x1e != 0))\n              goto LAB_0001f920;\n            }" else (compound_statement "{\n              iVar6 = local_40 << 2;\n              if ((iVar6 < 0) || (local_3c = local_40 + 1, iVar4 = iVar6, local_40 >> 0x1e != 0))\n              goto LAB_0001f920;\n            }" { (expression_statement "iVar6 = local_40 << 2;" (assignment_expression "iVar6 = local_40 << 2" identifier = (binary_expression "local_40 << 2" identifier << number_literal)) ;) (if_statement "if ((iVar6 < 0) || (local_3c = local_40 + 1, iVar4 = iVar6, local_40 >> 0x1e != 0))\n              goto LAB_0001f920;" if (parenthesized_expression "((iVar6 < 0) || (local_3c = local_40 + 1, iVar4 = iVar6, local_40 >> 0x1e != 0))" ( (binary_expression "(iVar6 < 0) || (local_3c = local_40 + 1, iVar4 = iVar6, local_40 >> 0x1e != 0)" (parenthesized_expression "(iVar6 < 0)" ( (binary_expression "iVar6 < 0" identifier < number_literal) )) || (parenthesized_expression "(local_3c = local_40 + 1, iVar4 = iVar6, local_40 >> 0x1e != 0)" ( (comma_expression "local_3c = local_40 + 1, iVar4 = iVar6, local_40 >> 0x1e != 0" (assignment_expression "local_3c = local_40 + 1" identifier = (binary_expression "local_40 + 1" identifier + number_literal)) , (comma_expression "iVar4 = iVar6, local_40 >> 0x1e != 0" (assignment_expression "iVar4 = iVar6" identifier = identifier) , (binary_expression "local_40 >> 0x1e != 0" (binary_expression "local_40 >> 0x1e" identifier >> number_literal) != number_literal))) ))) )) (goto_statement "goto LAB_0001f920;" goto statement_identifier ;)) }))) }) (else_clause "else {\n            uVar7 = local_40 + 1;\n            if (0x15555554 < local_40) goto LAB_0001f920;\n            iVar6 = local_3c << 2;\n            local_40 = uVar7 + (local_40 >> 1);\n            iVar4 = local_40 * 4;\n            local_3c = uVar7;\n          }" else (compound_statement "{\n            uVar7 = local_40 + 1;\n            if (0x15555554 < local_40) goto LAB_0001f920;\n            iVar6 = local_3c << 2;\n            local_40 = uVar7 + (local_40 >> 1);\n            iVar4 = local_40 * 4;\n            local_3c = uVar7;\n          }" { (expression_statement "uVar7 = local_40 + 1;" (assignment_expression "uVar7 = local_40 + 1" identifier = (binary_expression "local_40 + 1" identifier + number_literal)) ;) (if_statement "if (0x15555554 < local_40) goto LAB_0001f920;" if (parenthesized_expression "(0x15555554 < local_40)" ( (binary_expression "0x15555554 < local_40" number_literal < identifier) )) (goto_statement "goto LAB_0001f920;" goto statement_identifier ;)) (expression_statement "iVar6 = local_3c << 2;" (assignment_expression "iVar6 = local_3c << 2" identifier = (binary_expression "local_3c << 2" identifier << number_literal)) ;) (expression_statement "local_40 = uVar7 + (local_40 >> 1);" (assignment_expression "local_40 = uVar7 + (local_40 >> 1)" identifier = (binary_expression "uVar7 + (local_40 >> 1)" identifier + (parenthesized_expression "(local_40 >> 1)" ( (binary_expression "local_40 >> 1" identifier >> number_literal) )))) ;) (expression_statement "iVar4 = local_40 * 4;" (assignment_expression "iVar4 = local_40 * 4" identifier = (binary_expression "local_40 * 4" identifier * number_literal)) ;) (expression_statement "local_3c = uVar7;" (assignment_expression "local_3c = uVar7" identifier = identifier) ;) }))) (expression_statement "puVar14 = (undefined4 *)xrealloc(puVar14,iVar4);" (assignment_expression "puVar14 = (undefined4 *)xrealloc(puVar14,iVar4)" identifier = (cast_expression "(undefined4 *)xrealloc(puVar14,iVar4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "xrealloc(puVar14,iVar4)" identifier (argument_list "(puVar14,iVar4)" ( identifier , identifier ))))) ;) }) (else_clause "else {\n          iVar6 = local_3c << 2;\n          local_3c = local_3c + 1;\n        }" else (compound_statement "{\n          iVar6 = local_3c << 2;\n          local_3c = local_3c + 1;\n        }" { (expression_statement "iVar6 = local_3c << 2;" (assignment_expression "iVar6 = local_3c << 2" identifier = (binary_expression "local_3c << 2" identifier << number_literal)) ;) (expression_statement "local_3c = local_3c + 1;" (assignment_expression "local_3c = local_3c + 1" identifier = (binary_expression "local_3c + 1" identifier + number_literal)) ;) }))) (expression_statement "uVar12 = uVar12 + uVar8;" (assignment_expression "uVar12 = uVar12 + uVar8" identifier = (binary_expression "uVar12 + uVar8" identifier + identifier)) ;) (expression_statement "uVar5 = xstrdup(iVar16);" (assignment_expression "uVar5 = xstrdup(iVar16)" identifier = (call_expression "xstrdup(iVar16)" identifier (argument_list "(iVar16)" ( identifier )))) ;) (expression_statement "puVar2 = PTR_readdir64_000365c0;" (assignment_expression "puVar2 = PTR_readdir64_000365c0" identifier = identifier) ;) (expression_statement "*(undefined4 *)((int)puVar14 + iVar6) = uVar5;" (assignment_expression "*(undefined4 *)((int)puVar14 + iVar6) = uVar5" (pointer_expression "*(undefined4 *)((int)puVar14 + iVar6)" * (cast_expression "(undefined4 *)((int)puVar14 + iVar6)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar14 + iVar6)" ( (binary_expression "(int)puVar14 + iVar6" (cast_expression "(int)puVar14" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) = identifier) ;) (expression_statement "*piVar3 = 0;" (assignment_expression "*piVar3 = 0" (pointer_expression "*piVar3" * identifier) = number_literal) ;) (expression_statement "iVar4 = (*(code *)puVar2)(param_1);" (assignment_expression "iVar4 = (*(code *)puVar2)(param_1)" identifier = (call_expression "(*(code *)puVar2)(param_1)" (parenthesized_expression "(*(code *)puVar2)" ( (pointer_expression "*(code *)puVar2" * (cast_expression "(code *)puVar2" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_1)" ( identifier )))) ;) (if_statement "if (iVar4 == 0) goto LAB_0001f67c;" if (parenthesized_expression "(iVar4 == 0)" ( (binary_expression "iVar4 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0001f67c;" goto statement_identifier ;)) })) (expression_statement "uVar7 = uVar12 + uVar8;" (assignment_expression "uVar7 = uVar12 + uVar8" identifier = (binary_expression "uVar12 + uVar8" identifier + identifier)) ;) (if_statement "if (local_44 - uVar12 <= uVar8) {\n        if (uVar7 < uVar12) {\nLAB_0001f920:\n                    /* WARNING: Subroutine does not return */\n          xalloc_die();\n        }\n        if (puVar11 == (undefined1 *)0x0) {\n          if (uVar7 == 0) {\n            local_44 = 0x40;\n          }\n          else {\n            local_44 = uVar7;\n            if ((int)uVar7 < 0) goto LAB_0001f920;\n          }\n        }\n        else {\n          if (0x55555553 < uVar7) goto LAB_0001f920;\n          local_44 = uVar7 + 1 + (uVar7 >> 1);\n        }\n        puVar11 = (undefined1 *)xrealloc(puVar11,local_44);\n      }" if (parenthesized_expression "(local_44 - uVar12 <= uVar8)" ( (binary_expression "local_44 - uVar12 <= uVar8" (binary_expression "local_44 - uVar12" identifier - identifier) <= identifier) )) (compound_statement "{\n        if (uVar7 < uVar12) {\nLAB_0001f920:\n                    /* WARNING: Subroutine does not return */\n          xalloc_die();\n        }\n        if (puVar11 == (undefined1 *)0x0) {\n          if (uVar7 == 0) {\n            local_44 = 0x40;\n          }\n          else {\n            local_44 = uVar7;\n            if ((int)uVar7 < 0) goto LAB_0001f920;\n          }\n        }\n        else {\n          if (0x55555553 < uVar7) goto LAB_0001f920;\n          local_44 = uVar7 + 1 + (uVar7 >> 1);\n        }\n        puVar11 = (undefined1 *)xrealloc(puVar11,local_44);\n      }" { (if_statement "if (uVar7 < uVar12) {\nLAB_0001f920:\n                    /* WARNING: Subroutine does not return */\n          xalloc_die();\n        }" if (parenthesized_expression "(uVar7 < uVar12)" ( (binary_expression "uVar7 < uVar12" identifier < identifier) )) (compound_statement "{\nLAB_0001f920:\n                    /* WARNING: Subroutine does not return */\n          xalloc_die();\n        }" { (labeled_statement "LAB_0001f920:\n                    /* WARNING: Subroutine does not return */\n          xalloc_die();" statement_identifier : comment (expression_statement "xalloc_die();" (call_expression "xalloc_die()" identifier (argument_list "()" ( ))) ;)) })) (if_statement "if (puVar11 == (undefined1 *)0x0) {\n          if (uVar7 == 0) {\n            local_44 = 0x40;\n          }\n          else {\n            local_44 = uVar7;\n            if ((int)uVar7 < 0) goto LAB_0001f920;\n          }\n        }\n        else {\n          if (0x55555553 < uVar7) goto LAB_0001f920;\n          local_44 = uVar7 + 1 + (uVar7 >> 1);\n        }" if (parenthesized_expression "(puVar11 == (undefined1 *)0x0)" ( (binary_expression "puVar11 == (undefined1 *)0x0" identifier == (cast_expression "(undefined1 *)0x0" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          if (uVar7 == 0) {\n            local_44 = 0x40;\n          }\n          else {\n            local_44 = uVar7;\n            if ((int)uVar7 < 0) goto LAB_0001f920;\n          }\n        }" { (if_statement "if (uVar7 == 0) {\n            local_44 = 0x40;\n          }\n          else {\n            local_44 = uVar7;\n            if ((int)uVar7 < 0) goto LAB_0001f920;\n          }" if (parenthesized_expression "(uVar7 == 0)" ( (binary_expression "uVar7 == 0" identifier == number_literal) )) (compound_statement "{\n            local_44 = 0x40;\n          }" { (expression_statement "local_44 = 0x40;" (assignment_expression "local_44 = 0x40" identifier = number_literal) ;) }) (else_clause "else {\n            local_44 = uVar7;\n            if ((int)uVar7 < 0) goto LAB_0001f920;\n          }" else (compound_statement "{\n            local_44 = uVar7;\n            if ((int)uVar7 < 0) goto LAB_0001f920;\n          }" { (expression_statement "local_44 = uVar7;" (assignment_expression "local_44 = uVar7" identifier = identifier) ;) (if_statement "if ((int)uVar7 < 0) goto LAB_0001f920;" if (parenthesized_expression "((int)uVar7 < 0)" ( (binary_expression "(int)uVar7 < 0" (cast_expression "(int)uVar7" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (goto_statement "goto LAB_0001f920;" goto statement_identifier ;)) }))) }) (else_clause "else {\n          if (0x55555553 < uVar7) goto LAB_0001f920;\n          local_44 = uVar7 + 1 + (uVar7 >> 1);\n        }" else (compound_statement "{\n          if (0x55555553 < uVar7) goto LAB_0001f920;\n          local_44 = uVar7 + 1 + (uVar7 >> 1);\n        }" { (if_statement "if (0x55555553 < uVar7) goto LAB_0001f920;" if (parenthesized_expression "(0x55555553 < uVar7)" ( (binary_expression "0x55555553 < uVar7" number_literal < identifier) )) (goto_statement "goto LAB_0001f920;" goto statement_identifier ;)) (expression_statement "local_44 = uVar7 + 1 + (uVar7 >> 1);" (assignment_expression "local_44 = uVar7 + 1 + (uVar7 >> 1)" identifier = (binary_expression "uVar7 + 1 + (uVar7 >> 1)" (binary_expression "uVar7 + 1" identifier + number_literal) + (parenthesized_expression "(uVar7 >> 1)" ( (binary_expression "uVar7 >> 1" identifier >> number_literal) )))) ;) }))) (expression_statement "puVar11 = (undefined1 *)xrealloc(puVar11,local_44);" (assignment_expression "puVar11 = (undefined1 *)xrealloc(puVar11,local_44)" identifier = (cast_expression "(undefined1 *)xrealloc(puVar11,local_44)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "xrealloc(puVar11,local_44)" identifier (argument_list "(puVar11,local_44)" ( identifier , identifier ))))) ;) })) (expression_statement "(*(code *)PTR_memcpy_00036698)(puVar11 + uVar12,iVar16,uVar8);" (call_expression "(*(code *)PTR_memcpy_00036698)(puVar11 + uVar12,iVar16,uVar8)" (parenthesized_expression "(*(code *)PTR_memcpy_00036698)" ( (pointer_expression "*(code *)PTR_memcpy_00036698" * (cast_expression "(code *)PTR_memcpy_00036698" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(puVar11 + uVar12,iVar16,uVar8)" ( (binary_expression "puVar11 + uVar12" identifier + identifier) , identifier , identifier ))) ;) (expression_statement "uVar12 = uVar7;" (assignment_expression "uVar12 = uVar7" identifier = identifier) ;) (goto_statement "goto LAB_0001f5d8;" goto statement_identifier ;) })) (labeled_statement "LAB_0001f67c:\n    iVar4 = *piVar3;" statement_identifier : (expression_statement "iVar4 = *piVar3;" (assignment_expression "iVar4 = *piVar3" identifier = (pointer_expression "*piVar3" * identifier)) ;)) (if_statement "if (iVar4 == 0) {\n      if (iVar15 == 0) {\n        if (local_44 == uVar12) {\n          puVar11 = (undefined1 *)xrealloc(puVar11,local_44 + 1);\n          puVar13 = puVar11 + local_44;\n        }\n        else {\n          puVar13 = puVar11 + uVar12;\n        }\n      }\n      else {\n        if (local_3c == 0) {\n          puVar11 = (undefined1 *)xmalloc(uVar12 + 1);\n          puVar13 = puVar11;\n        }\n        else {\n          (*(code *)PTR_qsort_000365bc)(puVar14,local_3c,4,iVar15);\n          iVar15 = 0;\n          puVar11 = (undefined1 *)xmalloc(uVar12 + 1);\n          puVar9 = puVar14;\n          do {\n            puVar10 = puVar9 + 1;\n            iVar4 = (*(code *)PTR_stpcpy_00036680)(puVar11 + iVar15,*puVar9);\n            iVar15 = iVar15 + (iVar4 - (int)(puVar11 + iVar15)) + 1;\n            (*(code *)PTR_free_000366a0)(*puVar9);\n            puVar9 = puVar10;\n          } while (puVar14 + local_3c != puVar10);\n          puVar13 = puVar11 + iVar15;\n        }\n        (*(code *)PTR_free_000366a0)(puVar14);\n      }\n      *puVar13 = 0;\n      puVar13 = puVar11;\n    }\n    else {\n      (*(code *)PTR_free_000366a0)(puVar14);\n      puVar13 = (undefined1 *)0x0;\n      (*(code *)PTR_free_000366a0)(puVar11);\n      *piVar3 = iVar4;\n    }" if (parenthesized_expression "(iVar4 == 0)" ( (binary_expression "iVar4 == 0" identifier == number_literal) )) (compound_statement "{\n      if (iVar15 == 0) {\n        if (local_44 == uVar12) {\n          puVar11 = (undefined1 *)xrealloc(puVar11,local_44 + 1);\n          puVar13 = puVar11 + local_44;\n        }\n        else {\n          puVar13 = puVar11 + uVar12;\n        }\n      }\n      else {\n        if (local_3c == 0) {\n          puVar11 = (undefined1 *)xmalloc(uVar12 + 1);\n          puVar13 = puVar11;\n        }\n        else {\n          (*(code *)PTR_qsort_000365bc)(puVar14,local_3c,4,iVar15);\n          iVar15 = 0;\n          puVar11 = (undefined1 *)xmalloc(uVar12 + 1);\n          puVar9 = puVar14;\n          do {\n            puVar10 = puVar9 + 1;\n            iVar4 = (*(code *)PTR_stpcpy_00036680)(puVar11 + iVar15,*puVar9);\n            iVar15 = iVar15 + (iVar4 - (int)(puVar11 + iVar15)) + 1;\n            (*(code *)PTR_free_000366a0)(*puVar9);\n            puVar9 = puVar10;\n          } while (puVar14 + local_3c != puVar10);\n          puVar13 = puVar11 + iVar15;\n        }\n        (*(code *)PTR_free_000366a0)(puVar14);\n      }\n      *puVar13 = 0;\n      puVar13 = puVar11;\n    }" { (if_statement "if (iVar15 == 0) {\n        if (local_44 == uVar12) {\n          puVar11 = (undefined1 *)xrealloc(puVar11,local_44 + 1);\n          puVar13 = puVar11 + local_44;\n        }\n        else {\n          puVar13 = puVar11 + uVar12;\n        }\n      }\n      else {\n        if (local_3c == 0) {\n          puVar11 = (undefined1 *)xmalloc(uVar12 + 1);\n          puVar13 = puVar11;\n        }\n        else {\n          (*(code *)PTR_qsort_000365bc)(puVar14,local_3c,4,iVar15);\n          iVar15 = 0;\n          puVar11 = (undefined1 *)xmalloc(uVar12 + 1);\n          puVar9 = puVar14;\n          do {\n            puVar10 = puVar9 + 1;\n            iVar4 = (*(code *)PTR_stpcpy_00036680)(puVar11 + iVar15,*puVar9);\n            iVar15 = iVar15 + (iVar4 - (int)(puVar11 + iVar15)) + 1;\n            (*(code *)PTR_free_000366a0)(*puVar9);\n            puVar9 = puVar10;\n          } while (puVar14 + local_3c != puVar10);\n          puVar13 = puVar11 + iVar15;\n        }\n        (*(code *)PTR_free_000366a0)(puVar14);\n      }" if (parenthesized_expression "(iVar15 == 0)" ( (binary_expression "iVar15 == 0" identifier == number_literal) )) (compound_statement "{\n        if (local_44 == uVar12) {\n          puVar11 = (undefined1 *)xrealloc(puVar11,local_44 + 1);\n          puVar13 = puVar11 + local_44;\n        }\n        else {\n          puVar13 = puVar11 + uVar12;\n        }\n      }" { (if_statement "if (local_44 == uVar12) {\n          puVar11 = (undefined1 *)xrealloc(puVar11,local_44 + 1);\n          puVar13 = puVar11 + local_44;\n        }\n        else {\n          puVar13 = puVar11 + uVar12;\n        }" if (parenthesized_expression "(local_44 == uVar12)" ( (binary_expression "local_44 == uVar12" identifier == identifier) )) (compound_statement "{\n          puVar11 = (undefined1 *)xrealloc(puVar11,local_44 + 1);\n          puVar13 = puVar11 + local_44;\n        }" { (expression_statement "puVar11 = (undefined1 *)xrealloc(puVar11,local_44 + 1);" (assignment_expression "puVar11 = (undefined1 *)xrealloc(puVar11,local_44 + 1)" identifier = (cast_expression "(undefined1 *)xrealloc(puVar11,local_44 + 1)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "xrealloc(puVar11,local_44 + 1)" identifier (argument_list "(puVar11,local_44 + 1)" ( identifier , (binary_expression "local_44 + 1" identifier + number_literal) ))))) ;) (expression_statement "puVar13 = puVar11 + local_44;" (assignment_expression "puVar13 = puVar11 + local_44" identifier = (binary_expression "puVar11 + local_44" identifier + identifier)) ;) }) (else_clause "else {\n          puVar13 = puVar11 + uVar12;\n        }" else (compound_statement "{\n          puVar13 = puVar11 + uVar12;\n        }" { (expression_statement "puVar13 = puVar11 + uVar12;" (assignment_expression "puVar13 = puVar11 + uVar12" identifier = (binary_expression "puVar11 + uVar12" identifier + identifier)) ;) }))) }) (else_clause "else {\n        if (local_3c == 0) {\n          puVar11 = (undefined1 *)xmalloc(uVar12 + 1);\n          puVar13 = puVar11;\n        }\n        else {\n          (*(code *)PTR_qsort_000365bc)(puVar14,local_3c,4,iVar15);\n          iVar15 = 0;\n          puVar11 = (undefined1 *)xmalloc(uVar12 + 1);\n          puVar9 = puVar14;\n          do {\n            puVar10 = puVar9 + 1;\n            iVar4 = (*(code *)PTR_stpcpy_00036680)(puVar11 + iVar15,*puVar9);\n            iVar15 = iVar15 + (iVar4 - (int)(puVar11 + iVar15)) + 1;\n            (*(code *)PTR_free_000366a0)(*puVar9);\n            puVar9 = puVar10;\n          } while (puVar14 + local_3c != puVar10);\n          puVar13 = puVar11 + iVar15;\n        }\n        (*(code *)PTR_free_000366a0)(puVar14);\n      }" else (compound_statement "{\n        if (local_3c == 0) {\n          puVar11 = (undefined1 *)xmalloc(uVar12 + 1);\n          puVar13 = puVar11;\n        }\n        else {\n          (*(code *)PTR_qsort_000365bc)(puVar14,local_3c,4,iVar15);\n          iVar15 = 0;\n          puVar11 = (undefined1 *)xmalloc(uVar12 + 1);\n          puVar9 = puVar14;\n          do {\n            puVar10 = puVar9 + 1;\n            iVar4 = (*(code *)PTR_stpcpy_00036680)(puVar11 + iVar15,*puVar9);\n            iVar15 = iVar15 + (iVar4 - (int)(puVar11 + iVar15)) + 1;\n            (*(code *)PTR_free_000366a0)(*puVar9);\n            puVar9 = puVar10;\n          } while (puVar14 + local_3c != puVar10);\n          puVar13 = puVar11 + iVar15;\n        }\n        (*(code *)PTR_free_000366a0)(puVar14);\n      }" { (if_statement "if (local_3c == 0) {\n          puVar11 = (undefined1 *)xmalloc(uVar12 + 1);\n          puVar13 = puVar11;\n        }\n        else {\n          (*(code *)PTR_qsort_000365bc)(puVar14,local_3c,4,iVar15);\n          iVar15 = 0;\n          puVar11 = (undefined1 *)xmalloc(uVar12 + 1);\n          puVar9 = puVar14;\n          do {\n            puVar10 = puVar9 + 1;\n            iVar4 = (*(code *)PTR_stpcpy_00036680)(puVar11 + iVar15,*puVar9);\n            iVar15 = iVar15 + (iVar4 - (int)(puVar11 + iVar15)) + 1;\n            (*(code *)PTR_free_000366a0)(*puVar9);\n            puVar9 = puVar10;\n          } while (puVar14 + local_3c != puVar10);\n          puVar13 = puVar11 + iVar15;\n        }" if (parenthesized_expression "(local_3c == 0)" ( (binary_expression "local_3c == 0" identifier == number_literal) )) (compound_statement "{\n          puVar11 = (undefined1 *)xmalloc(uVar12 + 1);\n          puVar13 = puVar11;\n        }" { (expression_statement "puVar11 = (undefined1 *)xmalloc(uVar12 + 1);" (assignment_expression "puVar11 = (undefined1 *)xmalloc(uVar12 + 1)" identifier = (cast_expression "(undefined1 *)xmalloc(uVar12 + 1)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(uVar12 + 1)" identifier (argument_list "(uVar12 + 1)" ( (binary_expression "uVar12 + 1" identifier + number_literal) ))))) ;) (expression_statement "puVar13 = puVar11;" (assignment_expression "puVar13 = puVar11" identifier = identifier) ;) }) (else_clause "else {\n          (*(code *)PTR_qsort_000365bc)(puVar14,local_3c,4,iVar15);\n          iVar15 = 0;\n          puVar11 = (undefined1 *)xmalloc(uVar12 + 1);\n          puVar9 = puVar14;\n          do {\n            puVar10 = puVar9 + 1;\n            iVar4 = (*(code *)PTR_stpcpy_00036680)(puVar11 + iVar15,*puVar9);\n            iVar15 = iVar15 + (iVar4 - (int)(puVar11 + iVar15)) + 1;\n            (*(code *)PTR_free_000366a0)(*puVar9);\n            puVar9 = puVar10;\n          } while (puVar14 + local_3c != puVar10);\n          puVar13 = puVar11 + iVar15;\n        }" else (compound_statement "{\n          (*(code *)PTR_qsort_000365bc)(puVar14,local_3c,4,iVar15);\n          iVar15 = 0;\n          puVar11 = (undefined1 *)xmalloc(uVar12 + 1);\n          puVar9 = puVar14;\n          do {\n            puVar10 = puVar9 + 1;\n            iVar4 = (*(code *)PTR_stpcpy_00036680)(puVar11 + iVar15,*puVar9);\n            iVar15 = iVar15 + (iVar4 - (int)(puVar11 + iVar15)) + 1;\n            (*(code *)PTR_free_000366a0)(*puVar9);\n            puVar9 = puVar10;\n          } while (puVar14 + local_3c != puVar10);\n          puVar13 = puVar11 + iVar15;\n        }" { (expression_statement "(*(code *)PTR_qsort_000365bc)(puVar14,local_3c,4,iVar15);" (call_expression "(*(code *)PTR_qsort_000365bc)(puVar14,local_3c,4,iVar15)" (parenthesized_expression "(*(code *)PTR_qsort_000365bc)" ( (pointer_expression "*(code *)PTR_qsort_000365bc" * (cast_expression "(code *)PTR_qsort_000365bc" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(puVar14,local_3c,4,iVar15)" ( identifier , identifier , number_literal , identifier ))) ;) (expression_statement "iVar15 = 0;" (assignment_expression "iVar15 = 0" identifier = number_literal) ;) (expression_statement "puVar11 = (undefined1 *)xmalloc(uVar12 + 1);" (assignment_expression "puVar11 = (undefined1 *)xmalloc(uVar12 + 1)" identifier = (cast_expression "(undefined1 *)xmalloc(uVar12 + 1)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(uVar12 + 1)" identifier (argument_list "(uVar12 + 1)" ( (binary_expression "uVar12 + 1" identifier + number_literal) ))))) ;) (expression_statement "puVar9 = puVar14;" (assignment_expression "puVar9 = puVar14" identifier = identifier) ;) (do_statement "do {\n            puVar10 = puVar9 + 1;\n            iVar4 = (*(code *)PTR_stpcpy_00036680)(puVar11 + iVar15,*puVar9);\n            iVar15 = iVar15 + (iVar4 - (int)(puVar11 + iVar15)) + 1;\n            (*(code *)PTR_free_000366a0)(*puVar9);\n            puVar9 = puVar10;\n          } while (puVar14 + local_3c != puVar10);" do (compound_statement "{\n            puVar10 = puVar9 + 1;\n            iVar4 = (*(code *)PTR_stpcpy_00036680)(puVar11 + iVar15,*puVar9);\n            iVar15 = iVar15 + (iVar4 - (int)(puVar11 + iVar15)) + 1;\n            (*(code *)PTR_free_000366a0)(*puVar9);\n            puVar9 = puVar10;\n          }" { (expression_statement "puVar10 = puVar9 + 1;" (assignment_expression "puVar10 = puVar9 + 1" identifier = (binary_expression "puVar9 + 1" identifier + number_literal)) ;) (expression_statement "iVar4 = (*(code *)PTR_stpcpy_00036680)(puVar11 + iVar15,*puVar9);" (assignment_expression "iVar4 = (*(code *)PTR_stpcpy_00036680)(puVar11 + iVar15,*puVar9)" identifier = (call_expression "(*(code *)PTR_stpcpy_00036680)(puVar11 + iVar15,*puVar9)" (parenthesized_expression "(*(code *)PTR_stpcpy_00036680)" ( (pointer_expression "*(code *)PTR_stpcpy_00036680" * (cast_expression "(code *)PTR_stpcpy_00036680" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(puVar11 + iVar15,*puVar9)" ( (binary_expression "puVar11 + iVar15" identifier + identifier) , (pointer_expression "*puVar9" * identifier) )))) ;) (expression_statement "iVar15 = iVar15 + (iVar4 - (int)(puVar11 + iVar15)) + 1;" (assignment_expression "iVar15 = iVar15 + (iVar4 - (int)(puVar11 + iVar15)) + 1" identifier = (binary_expression "iVar15 + (iVar4 - (int)(puVar11 + iVar15)) + 1" (binary_expression "iVar15 + (iVar4 - (int)(puVar11 + iVar15))" identifier + (parenthesized_expression "(iVar4 - (int)(puVar11 + iVar15))" ( (binary_expression "iVar4 - (int)(puVar11 + iVar15)" identifier - (cast_expression "(int)(puVar11 + iVar15)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(puVar11 + iVar15)" ( (binary_expression "puVar11 + iVar15" identifier + identifier) )))) ))) + number_literal)) ;) (expression_statement "(*(code *)PTR_free_000366a0)(*puVar9);" (call_expression "(*(code *)PTR_free_000366a0)(*puVar9)" (parenthesized_expression "(*(code *)PTR_free_000366a0)" ( (pointer_expression "*(code *)PTR_free_000366a0" * (cast_expression "(code *)PTR_free_000366a0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(*puVar9)" ( (pointer_expression "*puVar9" * identifier) ))) ;) (expression_statement "puVar9 = puVar10;" (assignment_expression "puVar9 = puVar10" identifier = identifier) ;) }) while (parenthesized_expression "(puVar14 + local_3c != puVar10)" ( (binary_expression "puVar14 + local_3c != puVar10" (binary_expression "puVar14 + local_3c" identifier + identifier) != identifier) )) ;) (expression_statement "puVar13 = puVar11 + iVar15;" (assignment_expression "puVar13 = puVar11 + iVar15" identifier = (binary_expression "puVar11 + iVar15" identifier + identifier)) ;) }))) (expression_statement "(*(code *)PTR_free_000366a0)(puVar14);" (call_expression "(*(code *)PTR_free_000366a0)(puVar14)" (parenthesized_expression "(*(code *)PTR_free_000366a0)" ( (pointer_expression "*(code *)PTR_free_000366a0" * (cast_expression "(code *)PTR_free_000366a0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(puVar14)" ( identifier ))) ;) }))) (expression_statement "*puVar13 = 0;" (assignment_expression "*puVar13 = 0" (pointer_expression "*puVar13" * identifier) = number_literal) ;) (expression_statement "puVar13 = puVar11;" (assignment_expression "puVar13 = puVar11" identifier = identifier) ;) }) (else_clause "else {\n      (*(code *)PTR_free_000366a0)(puVar14);\n      puVar13 = (undefined1 *)0x0;\n      (*(code *)PTR_free_000366a0)(puVar11);\n      *piVar3 = iVar4;\n    }" else (compound_statement "{\n      (*(code *)PTR_free_000366a0)(puVar14);\n      puVar13 = (undefined1 *)0x0;\n      (*(code *)PTR_free_000366a0)(puVar11);\n      *piVar3 = iVar4;\n    }" { (expression_statement "(*(code *)PTR_free_000366a0)(puVar14);" (call_expression "(*(code *)PTR_free_000366a0)(puVar14)" (parenthesized_expression "(*(code *)PTR_free_000366a0)" ( (pointer_expression "*(code *)PTR_free_000366a0" * (cast_expression "(code *)PTR_free_000366a0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(puVar14)" ( identifier ))) ;) (expression_statement "puVar13 = (undefined1 *)0x0;" (assignment_expression "puVar13 = (undefined1 *)0x0" identifier = (cast_expression "(undefined1 *)0x0" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "(*(code *)PTR_free_000366a0)(puVar11);" (call_expression "(*(code *)PTR_free_000366a0)(puVar11)" (parenthesized_expression "(*(code *)PTR_free_000366a0)" ( (pointer_expression "*(code *)PTR_free_000366a0" * (cast_expression "(code *)PTR_free_000366a0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(puVar11)" ( identifier ))) ;) (expression_statement "*piVar3 = iVar4;" (assignment_expression "*piVar3 = iVar4" (pointer_expression "*piVar3" * identifier) = identifier) ;) }))) }))) (return_statement "return puVar13;" return identifier ;) })))
(translation_unit "/* WARNING: Enum "savedir_option": Some values do not have unique names */\n\nchar * streamsavedir(DIR *dirp,savedir_option option)\n\n{\n  char cVar1;\n  undefined *puVar2;\n  int *piVar3;\n  int iVar4;\n  size_t sVar5;\n  uint uVar6;\n  size_t n;\n  uint uVar7;\n  undefined4 *puVar8;\n  undefined4 *puVar9;\n  char *p;\n  uint uVar10;\n  undefined4 *p_00;\n  int iVar11;\n  char *pcVar12;\n  uint local_44;\n  uint local_40;\n  uint local_3c;\n  \n  iVar11 = *(int *)(PTR_DAT_00036388 + option * 4 + 0x5fe8);\n  if (dirp == (DIR *)0x0) {\n    pcVar12 = (char *)0x0;\n  }\n  else {\n    local_3c = 0;\n    piVar3 = (int *)(*(code *)PTR___errno_location_00036604)();\n    p_00 = (undefined4 *)0x0;\n    local_40 = 0;\n    local_44 = 0;\n    p = (char *)0x0;\n    uVar10 = 0;\nLAB_0001f5d8:\n    puVar2 = PTR_readdir64_000365c0;\n    *piVar3 = 0;\n    iVar4 = (*(code *)puVar2)(dirp);\n    if (iVar4 != 0) {\n      while( true ) {\n        cVar1 = *(char *)(iVar4 + 0x13);\n        pcVar12 = (char *)(iVar4 + 0x13);\n        if ((cVar1 == '.') && (cVar1 = *(char *)(iVar4 + 0x14), cVar1 == '.')) {\n          cVar1 = *(char *)(iVar4 + 0x15);\n        }\n        if (cVar1 == '\0') goto LAB_0001f5d8;\n        iVar4 = (*(code *)PTR_strlen_00036638)(pcVar12);\n        uVar7 = iVar4 + 1;\n        if (iVar11 == 0) break;\n        if (local_3c == local_40) {\n          if (p_00 == (undefined4 *)0x0) {\n            if (local_40 == 0) {\n              local_40 = 0x10;\n              sVar5 = 0;\n              local_3c = 1;\n              n = 0x40;\n            }\n            else {\n              sVar5 = local_40 << 2;\n              if (((int)sVar5 < 0) || (local_3c = local_40 + 1, n = sVar5, local_40 >> 0x1e != 0))\n              goto LAB_0001f920;\n            }\n          }\n          else {\n            uVar6 = local_40 + 1;\n            if (0x15555554 < local_40) goto LAB_0001f920;\n            sVar5 = local_3c << 2;\n            local_40 = uVar6 + (local_40 >> 1);\n            n = local_40 * 4;\n            local_3c = uVar6;\n          }\n          p_00 = (undefined4 *)xrealloc(p_00,n);\n        }\n        else {\n          sVar5 = local_3c << 2;\n          local_3c = local_3c + 1;\n        }\n        uVar10 = uVar10 + uVar7;\n        pcVar12 = xstrdup(pcVar12);\n        puVar2 = PTR_readdir64_000365c0;\n        *(char **)((int)p_00 + sVar5) = pcVar12;\n        *piVar3 = 0;\n        iVar4 = (*(code *)puVar2)(dirp);\n        if (iVar4 == 0) goto LAB_0001f67c;\n      }\n      uVar6 = uVar10 + uVar7;\n      if (local_44 - uVar10 <= uVar7) {\n        if (uVar6 < uVar10) {\nLAB_0001f920:\n                    /* WARNING: Subroutine does not return */\n          xalloc_die();\n        }\n        if (p == (char *)0x0) {\n          if (uVar6 == 0) {\n            local_44 = 0x40;\n          }\n          else {\n            local_44 = uVar6;\n            if ((int)uVar6 < 0) goto LAB_0001f920;\n          }\n        }\n        else {\n          if (0x55555553 < uVar6) goto LAB_0001f920;\n          local_44 = uVar6 + 1 + (uVar6 >> 1);\n        }\n        p = (char *)xrealloc(p,local_44);\n      }\n      (*(code *)PTR_memcpy_00036698)(p + uVar10,pcVar12,uVar7);\n      uVar10 = uVar6;\n      goto LAB_0001f5d8;\n    }\nLAB_0001f67c:\n    iVar4 = *piVar3;\n    if (iVar4 == 0) {\n      if (iVar11 == 0) {\n        if (local_44 == uVar10) {\n          p = (char *)xrealloc(p,local_44 + 1);\n          pcVar12 = p + local_44;\n        }\n        else {\n          pcVar12 = p + uVar10;\n        }\n      }\n      else {\n        if (local_3c == 0) {\n          p = (char *)xmalloc(uVar10 + 1);\n          pcVar12 = p;\n        }\n        else {\n          (*(code *)PTR_qsort_000365bc)(p_00,local_3c,4,iVar11);\n          iVar11 = 0;\n          p = (char *)xmalloc(uVar10 + 1);\n          puVar8 = p_00;\n          do {\n            puVar9 = puVar8 + 1;\n            iVar4 = (*(code *)PTR_stpcpy_00036680)(p + iVar11,*puVar8);\n            iVar11 = iVar11 + (iVar4 - (int)(p + iVar11)) + 1;\n            (*(code *)PTR_free_000366a0)(*puVar8);\n            puVar8 = puVar9;\n          } while (p_00 + local_3c != puVar9);\n          pcVar12 = p + iVar11;\n        }\n        (*(code *)PTR_free_000366a0)(p_00);\n      }\n      *pcVar12 = '\0';\n      pcVar12 = p;\n    }\n    else {\n      (*(code *)PTR_free_000366a0)(p_00);\n      pcVar12 = (char *)0x0;\n      (*(code *)PTR_free_000366a0)(p);\n      *piVar3 = iVar4;\n    }\n  }\n  return pcVar12;\n}\n\n" comment (function_definition "char * streamsavedir(DIR *dirp,savedir_option option)\n\n{\n  char cVar1;\n  undefined *puVar2;\n  int *piVar3;\n  int iVar4;\n  size_t sVar5;\n  uint uVar6;\n  size_t n;\n  uint uVar7;\n  undefined4 *puVar8;\n  undefined4 *puVar9;\n  char *p;\n  uint uVar10;\n  undefined4 *p_00;\n  int iVar11;\n  char *pcVar12;\n  uint local_44;\n  uint local_40;\n  uint local_3c;\n  \n  iVar11 = *(int *)(PTR_DAT_00036388 + option * 4 + 0x5fe8);\n  if (dirp == (DIR *)0x0) {\n    pcVar12 = (char *)0x0;\n  }\n  else {\n    local_3c = 0;\n    piVar3 = (int *)(*(code *)PTR___errno_location_00036604)();\n    p_00 = (undefined4 *)0x0;\n    local_40 = 0;\n    local_44 = 0;\n    p = (char *)0x0;\n    uVar10 = 0;\nLAB_0001f5d8:\n    puVar2 = PTR_readdir64_000365c0;\n    *piVar3 = 0;\n    iVar4 = (*(code *)puVar2)(dirp);\n    if (iVar4 != 0) {\n      while( true ) {\n        cVar1 = *(char *)(iVar4 + 0x13);\n        pcVar12 = (char *)(iVar4 + 0x13);\n        if ((cVar1 == '.') && (cVar1 = *(char *)(iVar4 + 0x14), cVar1 == '.')) {\n          cVar1 = *(char *)(iVar4 + 0x15);\n        }\n        if (cVar1 == '\0') goto LAB_0001f5d8;\n        iVar4 = (*(code *)PTR_strlen_00036638)(pcVar12);\n        uVar7 = iVar4 + 1;\n        if (iVar11 == 0) break;\n        if (local_3c == local_40) {\n          if (p_00 == (undefined4 *)0x0) {\n            if (local_40 == 0) {\n              local_40 = 0x10;\n              sVar5 = 0;\n              local_3c = 1;\n              n = 0x40;\n            }\n            else {\n              sVar5 = local_40 << 2;\n              if (((int)sVar5 < 0) || (local_3c = local_40 + 1, n = sVar5, local_40 >> 0x1e != 0))\n              goto LAB_0001f920;\n            }\n          }\n          else {\n            uVar6 = local_40 + 1;\n            if (0x15555554 < local_40) goto LAB_0001f920;\n            sVar5 = local_3c << 2;\n            local_40 = uVar6 + (local_40 >> 1);\n            n = local_40 * 4;\n            local_3c = uVar6;\n          }\n          p_00 = (undefined4 *)xrealloc(p_00,n);\n        }\n        else {\n          sVar5 = local_3c << 2;\n          local_3c = local_3c + 1;\n        }\n        uVar10 = uVar10 + uVar7;\n        pcVar12 = xstrdup(pcVar12);\n        puVar2 = PTR_readdir64_000365c0;\n        *(char **)((int)p_00 + sVar5) = pcVar12;\n        *piVar3 = 0;\n        iVar4 = (*(code *)puVar2)(dirp);\n        if (iVar4 == 0) goto LAB_0001f67c;\n      }\n      uVar6 = uVar10 + uVar7;\n      if (local_44 - uVar10 <= uVar7) {\n        if (uVar6 < uVar10) {\nLAB_0001f920:\n                    /* WARNING: Subroutine does not return */\n          xalloc_die();\n        }\n        if (p == (char *)0x0) {\n          if (uVar6 == 0) {\n            local_44 = 0x40;\n          }\n          else {\n            local_44 = uVar6;\n            if ((int)uVar6 < 0) goto LAB_0001f920;\n          }\n        }\n        else {\n          if (0x55555553 < uVar6) goto LAB_0001f920;\n          local_44 = uVar6 + 1 + (uVar6 >> 1);\n        }\n        p = (char *)xrealloc(p,local_44);\n      }\n      (*(code *)PTR_memcpy_00036698)(p + uVar10,pcVar12,uVar7);\n      uVar10 = uVar6;\n      goto LAB_0001f5d8;\n    }\nLAB_0001f67c:\n    iVar4 = *piVar3;\n    if (iVar4 == 0) {\n      if (iVar11 == 0) {\n        if (local_44 == uVar10) {\n          p = (char *)xrealloc(p,local_44 + 1);\n          pcVar12 = p + local_44;\n        }\n        else {\n          pcVar12 = p + uVar10;\n        }\n      }\n      else {\n        if (local_3c == 0) {\n          p = (char *)xmalloc(uVar10 + 1);\n          pcVar12 = p;\n        }\n        else {\n          (*(code *)PTR_qsort_000365bc)(p_00,local_3c,4,iVar11);\n          iVar11 = 0;\n          p = (char *)xmalloc(uVar10 + 1);\n          puVar8 = p_00;\n          do {\n            puVar9 = puVar8 + 1;\n            iVar4 = (*(code *)PTR_stpcpy_00036680)(p + iVar11,*puVar8);\n            iVar11 = iVar11 + (iVar4 - (int)(p + iVar11)) + 1;\n            (*(code *)PTR_free_000366a0)(*puVar8);\n            puVar8 = puVar9;\n          } while (p_00 + local_3c != puVar9);\n          pcVar12 = p + iVar11;\n        }\n        (*(code *)PTR_free_000366a0)(p_00);\n      }\n      *pcVar12 = '\0';\n      pcVar12 = p;\n    }\n    else {\n      (*(code *)PTR_free_000366a0)(p_00);\n      pcVar12 = (char *)0x0;\n      (*(code *)PTR_free_000366a0)(p);\n      *piVar3 = iVar4;\n    }\n  }\n  return pcVar12;\n}" primitive_type (pointer_declarator "* streamsavedir(DIR *dirp,savedir_option option)" * (function_declarator "streamsavedir(DIR *dirp,savedir_option option)" identifier (parameter_list "(DIR *dirp,savedir_option option)" ( (parameter_declaration "DIR *dirp" type_identifier (pointer_declarator "*dirp" * identifier)) , (parameter_declaration "savedir_option option" type_identifier identifier) )))) (compound_statement "{\n  char cVar1;\n  undefined *puVar2;\n  int *piVar3;\n  int iVar4;\n  size_t sVar5;\n  uint uVar6;\n  size_t n;\n  uint uVar7;\n  undefined4 *puVar8;\n  undefined4 *puVar9;\n  char *p;\n  uint uVar10;\n  undefined4 *p_00;\n  int iVar11;\n  char *pcVar12;\n  uint local_44;\n  uint local_40;\n  uint local_3c;\n  \n  iVar11 = *(int *)(PTR_DAT_00036388 + option * 4 + 0x5fe8);\n  if (dirp == (DIR *)0x0) {\n    pcVar12 = (char *)0x0;\n  }\n  else {\n    local_3c = 0;\n    piVar3 = (int *)(*(code *)PTR___errno_location_00036604)();\n    p_00 = (undefined4 *)0x0;\n    local_40 = 0;\n    local_44 = 0;\n    p = (char *)0x0;\n    uVar10 = 0;\nLAB_0001f5d8:\n    puVar2 = PTR_readdir64_000365c0;\n    *piVar3 = 0;\n    iVar4 = (*(code *)puVar2)(dirp);\n    if (iVar4 != 0) {\n      while( true ) {\n        cVar1 = *(char *)(iVar4 + 0x13);\n        pcVar12 = (char *)(iVar4 + 0x13);\n        if ((cVar1 == '.') && (cVar1 = *(char *)(iVar4 + 0x14), cVar1 == '.')) {\n          cVar1 = *(char *)(iVar4 + 0x15);\n        }\n        if (cVar1 == '\0') goto LAB_0001f5d8;\n        iVar4 = (*(code *)PTR_strlen_00036638)(pcVar12);\n        uVar7 = iVar4 + 1;\n        if (iVar11 == 0) break;\n        if (local_3c == local_40) {\n          if (p_00 == (undefined4 *)0x0) {\n            if (local_40 == 0) {\n              local_40 = 0x10;\n              sVar5 = 0;\n              local_3c = 1;\n              n = 0x40;\n            }\n            else {\n              sVar5 = local_40 << 2;\n              if (((int)sVar5 < 0) || (local_3c = local_40 + 1, n = sVar5, local_40 >> 0x1e != 0))\n              goto LAB_0001f920;\n            }\n          }\n          else {\n            uVar6 = local_40 + 1;\n            if (0x15555554 < local_40) goto LAB_0001f920;\n            sVar5 = local_3c << 2;\n            local_40 = uVar6 + (local_40 >> 1);\n            n = local_40 * 4;\n            local_3c = uVar6;\n          }\n          p_00 = (undefined4 *)xrealloc(p_00,n);\n        }\n        else {\n          sVar5 = local_3c << 2;\n          local_3c = local_3c + 1;\n        }\n        uVar10 = uVar10 + uVar7;\n        pcVar12 = xstrdup(pcVar12);\n        puVar2 = PTR_readdir64_000365c0;\n        *(char **)((int)p_00 + sVar5) = pcVar12;\n        *piVar3 = 0;\n        iVar4 = (*(code *)puVar2)(dirp);\n        if (iVar4 == 0) goto LAB_0001f67c;\n      }\n      uVar6 = uVar10 + uVar7;\n      if (local_44 - uVar10 <= uVar7) {\n        if (uVar6 < uVar10) {\nLAB_0001f920:\n                    /* WARNING: Subroutine does not return */\n          xalloc_die();\n        }\n        if (p == (char *)0x0) {\n          if (uVar6 == 0) {\n            local_44 = 0x40;\n          }\n          else {\n            local_44 = uVar6;\n            if ((int)uVar6 < 0) goto LAB_0001f920;\n          }\n        }\n        else {\n          if (0x55555553 < uVar6) goto LAB_0001f920;\n          local_44 = uVar6 + 1 + (uVar6 >> 1);\n        }\n        p = (char *)xrealloc(p,local_44);\n      }\n      (*(code *)PTR_memcpy_00036698)(p + uVar10,pcVar12,uVar7);\n      uVar10 = uVar6;\n      goto LAB_0001f5d8;\n    }\nLAB_0001f67c:\n    iVar4 = *piVar3;\n    if (iVar4 == 0) {\n      if (iVar11 == 0) {\n        if (local_44 == uVar10) {\n          p = (char *)xrealloc(p,local_44 + 1);\n          pcVar12 = p + local_44;\n        }\n        else {\n          pcVar12 = p + uVar10;\n        }\n      }\n      else {\n        if (local_3c == 0) {\n          p = (char *)xmalloc(uVar10 + 1);\n          pcVar12 = p;\n        }\n        else {\n          (*(code *)PTR_qsort_000365bc)(p_00,local_3c,4,iVar11);\n          iVar11 = 0;\n          p = (char *)xmalloc(uVar10 + 1);\n          puVar8 = p_00;\n          do {\n            puVar9 = puVar8 + 1;\n            iVar4 = (*(code *)PTR_stpcpy_00036680)(p + iVar11,*puVar8);\n            iVar11 = iVar11 + (iVar4 - (int)(p + iVar11)) + 1;\n            (*(code *)PTR_free_000366a0)(*puVar8);\n            puVar8 = puVar9;\n          } while (p_00 + local_3c != puVar9);\n          pcVar12 = p + iVar11;\n        }\n        (*(code *)PTR_free_000366a0)(p_00);\n      }\n      *pcVar12 = '\0';\n      pcVar12 = p;\n    }\n    else {\n      (*(code *)PTR_free_000366a0)(p_00);\n      pcVar12 = (char *)0x0;\n      (*(code *)PTR_free_000366a0)(p);\n      *piVar3 = iVar4;\n    }\n  }\n  return pcVar12;\n}" { (declaration "char cVar1;" primitive_type identifier ;) (declaration "undefined *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "int *piVar3;" primitive_type (pointer_declarator "*piVar3" * identifier) ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "size_t sVar5;" primitive_type identifier ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "size_t n;" primitive_type identifier ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "undefined4 *puVar8;" type_identifier (pointer_declarator "*puVar8" * identifier) ;) (declaration "undefined4 *puVar9;" type_identifier (pointer_declarator "*puVar9" * identifier) ;) (declaration "char *p;" primitive_type (pointer_declarator "*p" * identifier) ;) (declaration "uint uVar10;" type_identifier identifier ;) (declaration "undefined4 *p_00;" type_identifier (pointer_declarator "*p_00" * identifier) ;) (declaration "int iVar11;" primitive_type identifier ;) (declaration "char *pcVar12;" primitive_type (pointer_declarator "*pcVar12" * identifier) ;) (declaration "uint local_44;" type_identifier identifier ;) (declaration "uint local_40;" type_identifier identifier ;) (declaration "uint local_3c;" type_identifier identifier ;) (expression_statement "iVar11 = *(int *)(PTR_DAT_00036388 + option * 4 + 0x5fe8);" (assignment_expression "iVar11 = *(int *)(PTR_DAT_00036388 + option * 4 + 0x5fe8)" identifier = (pointer_expression "*(int *)(PTR_DAT_00036388 + option * 4 + 0x5fe8)" * (cast_expression "(int *)(PTR_DAT_00036388 + option * 4 + 0x5fe8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_00036388 + option * 4 + 0x5fe8)" ( (binary_expression "PTR_DAT_00036388 + option * 4 + 0x5fe8" (binary_expression "PTR_DAT_00036388 + option * 4" identifier + (binary_expression "option * 4" identifier * number_literal)) + number_literal) ))))) ;) (if_statement "if (dirp == (DIR *)0x0) {\n    pcVar12 = (char *)0x0;\n  }\n  else {\n    local_3c = 0;\n    piVar3 = (int *)(*(code *)PTR___errno_location_00036604)();\n    p_00 = (undefined4 *)0x0;\n    local_40 = 0;\n    local_44 = 0;\n    p = (char *)0x0;\n    uVar10 = 0;\nLAB_0001f5d8:\n    puVar2 = PTR_readdir64_000365c0;\n    *piVar3 = 0;\n    iVar4 = (*(code *)puVar2)(dirp);\n    if (iVar4 != 0) {\n      while( true ) {\n        cVar1 = *(char *)(iVar4 + 0x13);\n        pcVar12 = (char *)(iVar4 + 0x13);\n        if ((cVar1 == '.') && (cVar1 = *(char *)(iVar4 + 0x14), cVar1 == '.')) {\n          cVar1 = *(char *)(iVar4 + 0x15);\n        }\n        if (cVar1 == '\0') goto LAB_0001f5d8;\n        iVar4 = (*(code *)PTR_strlen_00036638)(pcVar12);\n        uVar7 = iVar4 + 1;\n        if (iVar11 == 0) break;\n        if (local_3c == local_40) {\n          if (p_00 == (undefined4 *)0x0) {\n            if (local_40 == 0) {\n              local_40 = 0x10;\n              sVar5 = 0;\n              local_3c = 1;\n              n = 0x40;\n            }\n            else {\n              sVar5 = local_40 << 2;\n              if (((int)sVar5 < 0) || (local_3c = local_40 + 1, n = sVar5, local_40 >> 0x1e != 0))\n              goto LAB_0001f920;\n            }\n          }\n          else {\n            uVar6 = local_40 + 1;\n            if (0x15555554 < local_40) goto LAB_0001f920;\n            sVar5 = local_3c << 2;\n            local_40 = uVar6 + (local_40 >> 1);\n            n = local_40 * 4;\n            local_3c = uVar6;\n          }\n          p_00 = (undefined4 *)xrealloc(p_00,n);\n        }\n        else {\n          sVar5 = local_3c << 2;\n          local_3c = local_3c + 1;\n        }\n        uVar10 = uVar10 + uVar7;\n        pcVar12 = xstrdup(pcVar12);\n        puVar2 = PTR_readdir64_000365c0;\n        *(char **)((int)p_00 + sVar5) = pcVar12;\n        *piVar3 = 0;\n        iVar4 = (*(code *)puVar2)(dirp);\n        if (iVar4 == 0) goto LAB_0001f67c;\n      }\n      uVar6 = uVar10 + uVar7;\n      if (local_44 - uVar10 <= uVar7) {\n        if (uVar6 < uVar10) {\nLAB_0001f920:\n                    /* WARNING: Subroutine does not return */\n          xalloc_die();\n        }\n        if (p == (char *)0x0) {\n          if (uVar6 == 0) {\n            local_44 = 0x40;\n          }\n          else {\n            local_44 = uVar6;\n            if ((int)uVar6 < 0) goto LAB_0001f920;\n          }\n        }\n        else {\n          if (0x55555553 < uVar6) goto LAB_0001f920;\n          local_44 = uVar6 + 1 + (uVar6 >> 1);\n        }\n        p = (char *)xrealloc(p,local_44);\n      }\n      (*(code *)PTR_memcpy_00036698)(p + uVar10,pcVar12,uVar7);\n      uVar10 = uVar6;\n      goto LAB_0001f5d8;\n    }\nLAB_0001f67c:\n    iVar4 = *piVar3;\n    if (iVar4 == 0) {\n      if (iVar11 == 0) {\n        if (local_44 == uVar10) {\n          p = (char *)xrealloc(p,local_44 + 1);\n          pcVar12 = p + local_44;\n        }\n        else {\n          pcVar12 = p + uVar10;\n        }\n      }\n      else {\n        if (local_3c == 0) {\n          p = (char *)xmalloc(uVar10 + 1);\n          pcVar12 = p;\n        }\n        else {\n          (*(code *)PTR_qsort_000365bc)(p_00,local_3c,4,iVar11);\n          iVar11 = 0;\n          p = (char *)xmalloc(uVar10 + 1);\n          puVar8 = p_00;\n          do {\n            puVar9 = puVar8 + 1;\n            iVar4 = (*(code *)PTR_stpcpy_00036680)(p + iVar11,*puVar8);\n            iVar11 = iVar11 + (iVar4 - (int)(p + iVar11)) + 1;\n            (*(code *)PTR_free_000366a0)(*puVar8);\n            puVar8 = puVar9;\n          } while (p_00 + local_3c != puVar9);\n          pcVar12 = p + iVar11;\n        }\n        (*(code *)PTR_free_000366a0)(p_00);\n      }\n      *pcVar12 = '\0';\n      pcVar12 = p;\n    }\n    else {\n      (*(code *)PTR_free_000366a0)(p_00);\n      pcVar12 = (char *)0x0;\n      (*(code *)PTR_free_000366a0)(p);\n      *piVar3 = iVar4;\n    }\n  }" if (parenthesized_expression "(dirp == (DIR *)0x0)" ( (binary_expression "dirp == (DIR *)0x0" identifier == (cast_expression "(DIR *)0x0" ( (type_descriptor "DIR *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    pcVar12 = (char *)0x0;\n  }" { (expression_statement "pcVar12 = (char *)0x0;" (assignment_expression "pcVar12 = (char *)0x0" identifier = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }) (else_clause "else {\n    local_3c = 0;\n    piVar3 = (int *)(*(code *)PTR___errno_location_00036604)();\n    p_00 = (undefined4 *)0x0;\n    local_40 = 0;\n    local_44 = 0;\n    p = (char *)0x0;\n    uVar10 = 0;\nLAB_0001f5d8:\n    puVar2 = PTR_readdir64_000365c0;\n    *piVar3 = 0;\n    iVar4 = (*(code *)puVar2)(dirp);\n    if (iVar4 != 0) {\n      while( true ) {\n        cVar1 = *(char *)(iVar4 + 0x13);\n        pcVar12 = (char *)(iVar4 + 0x13);\n        if ((cVar1 == '.') && (cVar1 = *(char *)(iVar4 + 0x14), cVar1 == '.')) {\n          cVar1 = *(char *)(iVar4 + 0x15);\n        }\n        if (cVar1 == '\0') goto LAB_0001f5d8;\n        iVar4 = (*(code *)PTR_strlen_00036638)(pcVar12);\n        uVar7 = iVar4 + 1;\n        if (iVar11 == 0) break;\n        if (local_3c == local_40) {\n          if (p_00 == (undefined4 *)0x0) {\n            if (local_40 == 0) {\n              local_40 = 0x10;\n              sVar5 = 0;\n              local_3c = 1;\n              n = 0x40;\n            }\n            else {\n              sVar5 = local_40 << 2;\n              if (((int)sVar5 < 0) || (local_3c = local_40 + 1, n = sVar5, local_40 >> 0x1e != 0))\n              goto LAB_0001f920;\n            }\n          }\n          else {\n            uVar6 = local_40 + 1;\n            if (0x15555554 < local_40) goto LAB_0001f920;\n            sVar5 = local_3c << 2;\n            local_40 = uVar6 + (local_40 >> 1);\n            n = local_40 * 4;\n            local_3c = uVar6;\n          }\n          p_00 = (undefined4 *)xrealloc(p_00,n);\n        }\n        else {\n          sVar5 = local_3c << 2;\n          local_3c = local_3c + 1;\n        }\n        uVar10 = uVar10 + uVar7;\n        pcVar12 = xstrdup(pcVar12);\n        puVar2 = PTR_readdir64_000365c0;\n        *(char **)((int)p_00 + sVar5) = pcVar12;\n        *piVar3 = 0;\n        iVar4 = (*(code *)puVar2)(dirp);\n        if (iVar4 == 0) goto LAB_0001f67c;\n      }\n      uVar6 = uVar10 + uVar7;\n      if (local_44 - uVar10 <= uVar7) {\n        if (uVar6 < uVar10) {\nLAB_0001f920:\n                    /* WARNING: Subroutine does not return */\n          xalloc_die();\n        }\n        if (p == (char *)0x0) {\n          if (uVar6 == 0) {\n            local_44 = 0x40;\n          }\n          else {\n            local_44 = uVar6;\n            if ((int)uVar6 < 0) goto LAB_0001f920;\n          }\n        }\n        else {\n          if (0x55555553 < uVar6) goto LAB_0001f920;\n          local_44 = uVar6 + 1 + (uVar6 >> 1);\n        }\n        p = (char *)xrealloc(p,local_44);\n      }\n      (*(code *)PTR_memcpy_00036698)(p + uVar10,pcVar12,uVar7);\n      uVar10 = uVar6;\n      goto LAB_0001f5d8;\n    }\nLAB_0001f67c:\n    iVar4 = *piVar3;\n    if (iVar4 == 0) {\n      if (iVar11 == 0) {\n        if (local_44 == uVar10) {\n          p = (char *)xrealloc(p,local_44 + 1);\n          pcVar12 = p + local_44;\n        }\n        else {\n          pcVar12 = p + uVar10;\n        }\n      }\n      else {\n        if (local_3c == 0) {\n          p = (char *)xmalloc(uVar10 + 1);\n          pcVar12 = p;\n        }\n        else {\n          (*(code *)PTR_qsort_000365bc)(p_00,local_3c,4,iVar11);\n          iVar11 = 0;\n          p = (char *)xmalloc(uVar10 + 1);\n          puVar8 = p_00;\n          do {\n            puVar9 = puVar8 + 1;\n            iVar4 = (*(code *)PTR_stpcpy_00036680)(p + iVar11,*puVar8);\n            iVar11 = iVar11 + (iVar4 - (int)(p + iVar11)) + 1;\n            (*(code *)PTR_free_000366a0)(*puVar8);\n            puVar8 = puVar9;\n          } while (p_00 + local_3c != puVar9);\n          pcVar12 = p + iVar11;\n        }\n        (*(code *)PTR_free_000366a0)(p_00);\n      }\n      *pcVar12 = '\0';\n      pcVar12 = p;\n    }\n    else {\n      (*(code *)PTR_free_000366a0)(p_00);\n      pcVar12 = (char *)0x0;\n      (*(code *)PTR_free_000366a0)(p);\n      *piVar3 = iVar4;\n    }\n  }" else (compound_statement "{\n    local_3c = 0;\n    piVar3 = (int *)(*(code *)PTR___errno_location_00036604)();\n    p_00 = (undefined4 *)0x0;\n    local_40 = 0;\n    local_44 = 0;\n    p = (char *)0x0;\n    uVar10 = 0;\nLAB_0001f5d8:\n    puVar2 = PTR_readdir64_000365c0;\n    *piVar3 = 0;\n    iVar4 = (*(code *)puVar2)(dirp);\n    if (iVar4 != 0) {\n      while( true ) {\n        cVar1 = *(char *)(iVar4 + 0x13);\n        pcVar12 = (char *)(iVar4 + 0x13);\n        if ((cVar1 == '.') && (cVar1 = *(char *)(iVar4 + 0x14), cVar1 == '.')) {\n          cVar1 = *(char *)(iVar4 + 0x15);\n        }\n        if (cVar1 == '\0') goto LAB_0001f5d8;\n        iVar4 = (*(code *)PTR_strlen_00036638)(pcVar12);\n        uVar7 = iVar4 + 1;\n        if (iVar11 == 0) break;\n        if (local_3c == local_40) {\n          if (p_00 == (undefined4 *)0x0) {\n            if (local_40 == 0) {\n              local_40 = 0x10;\n              sVar5 = 0;\n              local_3c = 1;\n              n = 0x40;\n            }\n            else {\n              sVar5 = local_40 << 2;\n              if (((int)sVar5 < 0) || (local_3c = local_40 + 1, n = sVar5, local_40 >> 0x1e != 0))\n              goto LAB_0001f920;\n            }\n          }\n          else {\n            uVar6 = local_40 + 1;\n            if (0x15555554 < local_40) goto LAB_0001f920;\n            sVar5 = local_3c << 2;\n            local_40 = uVar6 + (local_40 >> 1);\n            n = local_40 * 4;\n            local_3c = uVar6;\n          }\n          p_00 = (undefined4 *)xrealloc(p_00,n);\n        }\n        else {\n          sVar5 = local_3c << 2;\n          local_3c = local_3c + 1;\n        }\n        uVar10 = uVar10 + uVar7;\n        pcVar12 = xstrdup(pcVar12);\n        puVar2 = PTR_readdir64_000365c0;\n        *(char **)((int)p_00 + sVar5) = pcVar12;\n        *piVar3 = 0;\n        iVar4 = (*(code *)puVar2)(dirp);\n        if (iVar4 == 0) goto LAB_0001f67c;\n      }\n      uVar6 = uVar10 + uVar7;\n      if (local_44 - uVar10 <= uVar7) {\n        if (uVar6 < uVar10) {\nLAB_0001f920:\n                    /* WARNING: Subroutine does not return */\n          xalloc_die();\n        }\n        if (p == (char *)0x0) {\n          if (uVar6 == 0) {\n            local_44 = 0x40;\n          }\n          else {\n            local_44 = uVar6;\n            if ((int)uVar6 < 0) goto LAB_0001f920;\n          }\n        }\n        else {\n          if (0x55555553 < uVar6) goto LAB_0001f920;\n          local_44 = uVar6 + 1 + (uVar6 >> 1);\n        }\n        p = (char *)xrealloc(p,local_44);\n      }\n      (*(code *)PTR_memcpy_00036698)(p + uVar10,pcVar12,uVar7);\n      uVar10 = uVar6;\n      goto LAB_0001f5d8;\n    }\nLAB_0001f67c:\n    iVar4 = *piVar3;\n    if (iVar4 == 0) {\n      if (iVar11 == 0) {\n        if (local_44 == uVar10) {\n          p = (char *)xrealloc(p,local_44 + 1);\n          pcVar12 = p + local_44;\n        }\n        else {\n          pcVar12 = p + uVar10;\n        }\n      }\n      else {\n        if (local_3c == 0) {\n          p = (char *)xmalloc(uVar10 + 1);\n          pcVar12 = p;\n        }\n        else {\n          (*(code *)PTR_qsort_000365bc)(p_00,local_3c,4,iVar11);\n          iVar11 = 0;\n          p = (char *)xmalloc(uVar10 + 1);\n          puVar8 = p_00;\n          do {\n            puVar9 = puVar8 + 1;\n            iVar4 = (*(code *)PTR_stpcpy_00036680)(p + iVar11,*puVar8);\n            iVar11 = iVar11 + (iVar4 - (int)(p + iVar11)) + 1;\n            (*(code *)PTR_free_000366a0)(*puVar8);\n            puVar8 = puVar9;\n          } while (p_00 + local_3c != puVar9);\n          pcVar12 = p + iVar11;\n        }\n        (*(code *)PTR_free_000366a0)(p_00);\n      }\n      *pcVar12 = '\0';\n      pcVar12 = p;\n    }\n    else {\n      (*(code *)PTR_free_000366a0)(p_00);\n      pcVar12 = (char *)0x0;\n      (*(code *)PTR_free_000366a0)(p);\n      *piVar3 = iVar4;\n    }\n  }" { (expression_statement "local_3c = 0;" (assignment_expression "local_3c = 0" identifier = number_literal) ;) (expression_statement "piVar3 = (int *)(*(code *)PTR___errno_location_00036604)();" (assignment_expression "piVar3 = (int *)(*(code *)PTR___errno_location_00036604)()" identifier = (cast_expression "(int *)(*(code *)PTR___errno_location_00036604)()" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR___errno_location_00036604)()" (parenthesized_expression "(*(code *)PTR___errno_location_00036604)" ( (pointer_expression "*(code *)PTR___errno_location_00036604" * (cast_expression "(code *)PTR___errno_location_00036604" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))))) ;) (expression_statement "p_00 = (undefined4 *)0x0;" (assignment_expression "p_00 = (undefined4 *)0x0" identifier = (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_40 = 0;" (assignment_expression "local_40 = 0" identifier = number_literal) ;) (expression_statement "local_44 = 0;" (assignment_expression "local_44 = 0" identifier = number_literal) ;) (expression_statement "p = (char *)0x0;" (assignment_expression "p = (char *)0x0" identifier = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "uVar10 = 0;" (assignment_expression "uVar10 = 0" identifier = number_literal) ;) (labeled_statement "LAB_0001f5d8:\n    puVar2 = PTR_readdir64_000365c0;" statement_identifier : (expression_statement "puVar2 = PTR_readdir64_000365c0;" (assignment_expression "puVar2 = PTR_readdir64_000365c0" identifier = identifier) ;)) (expression_statement "*piVar3 = 0;" (assignment_expression "*piVar3 = 0" (pointer_expression "*piVar3" * identifier) = number_literal) ;) (expression_statement "iVar4 = (*(code *)puVar2)(dirp);" (assignment_expression "iVar4 = (*(code *)puVar2)(dirp)" identifier = (call_expression "(*(code *)puVar2)(dirp)" (parenthesized_expression "(*(code *)puVar2)" ( (pointer_expression "*(code *)puVar2" * (cast_expression "(code *)puVar2" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(dirp)" ( identifier )))) ;) (if_statement "if (iVar4 != 0) {\n      while( true ) {\n        cVar1 = *(char *)(iVar4 + 0x13);\n        pcVar12 = (char *)(iVar4 + 0x13);\n        if ((cVar1 == '.') && (cVar1 = *(char *)(iVar4 + 0x14), cVar1 == '.')) {\n          cVar1 = *(char *)(iVar4 + 0x15);\n        }\n        if (cVar1 == '\0') goto LAB_0001f5d8;\n        iVar4 = (*(code *)PTR_strlen_00036638)(pcVar12);\n        uVar7 = iVar4 + 1;\n        if (iVar11 == 0) break;\n        if (local_3c == local_40) {\n          if (p_00 == (undefined4 *)0x0) {\n            if (local_40 == 0) {\n              local_40 = 0x10;\n              sVar5 = 0;\n              local_3c = 1;\n              n = 0x40;\n            }\n            else {\n              sVar5 = local_40 << 2;\n              if (((int)sVar5 < 0) || (local_3c = local_40 + 1, n = sVar5, local_40 >> 0x1e != 0))\n              goto LAB_0001f920;\n            }\n          }\n          else {\n            uVar6 = local_40 + 1;\n            if (0x15555554 < local_40) goto LAB_0001f920;\n            sVar5 = local_3c << 2;\n            local_40 = uVar6 + (local_40 >> 1);\n            n = local_40 * 4;\n            local_3c = uVar6;\n          }\n          p_00 = (undefined4 *)xrealloc(p_00,n);\n        }\n        else {\n          sVar5 = local_3c << 2;\n          local_3c = local_3c + 1;\n        }\n        uVar10 = uVar10 + uVar7;\n        pcVar12 = xstrdup(pcVar12);\n        puVar2 = PTR_readdir64_000365c0;\n        *(char **)((int)p_00 + sVar5) = pcVar12;\n        *piVar3 = 0;\n        iVar4 = (*(code *)puVar2)(dirp);\n        if (iVar4 == 0) goto LAB_0001f67c;\n      }\n      uVar6 = uVar10 + uVar7;\n      if (local_44 - uVar10 <= uVar7) {\n        if (uVar6 < uVar10) {\nLAB_0001f920:\n                    /* WARNING: Subroutine does not return */\n          xalloc_die();\n        }\n        if (p == (char *)0x0) {\n          if (uVar6 == 0) {\n            local_44 = 0x40;\n          }\n          else {\n            local_44 = uVar6;\n            if ((int)uVar6 < 0) goto LAB_0001f920;\n          }\n        }\n        else {\n          if (0x55555553 < uVar6) goto LAB_0001f920;\n          local_44 = uVar6 + 1 + (uVar6 >> 1);\n        }\n        p = (char *)xrealloc(p,local_44);\n      }\n      (*(code *)PTR_memcpy_00036698)(p + uVar10,pcVar12,uVar7);\n      uVar10 = uVar6;\n      goto LAB_0001f5d8;\n    }" if (parenthesized_expression "(iVar4 != 0)" ( (binary_expression "iVar4 != 0" identifier != number_literal) )) (compound_statement "{\n      while( true ) {\n        cVar1 = *(char *)(iVar4 + 0x13);\n        pcVar12 = (char *)(iVar4 + 0x13);\n        if ((cVar1 == '.') && (cVar1 = *(char *)(iVar4 + 0x14), cVar1 == '.')) {\n          cVar1 = *(char *)(iVar4 + 0x15);\n        }\n        if (cVar1 == '\0') goto LAB_0001f5d8;\n        iVar4 = (*(code *)PTR_strlen_00036638)(pcVar12);\n        uVar7 = iVar4 + 1;\n        if (iVar11 == 0) break;\n        if (local_3c == local_40) {\n          if (p_00 == (undefined4 *)0x0) {\n            if (local_40 == 0) {\n              local_40 = 0x10;\n              sVar5 = 0;\n              local_3c = 1;\n              n = 0x40;\n            }\n            else {\n              sVar5 = local_40 << 2;\n              if (((int)sVar5 < 0) || (local_3c = local_40 + 1, n = sVar5, local_40 >> 0x1e != 0))\n              goto LAB_0001f920;\n            }\n          }\n          else {\n            uVar6 = local_40 + 1;\n            if (0x15555554 < local_40) goto LAB_0001f920;\n            sVar5 = local_3c << 2;\n            local_40 = uVar6 + (local_40 >> 1);\n            n = local_40 * 4;\n            local_3c = uVar6;\n          }\n          p_00 = (undefined4 *)xrealloc(p_00,n);\n        }\n        else {\n          sVar5 = local_3c << 2;\n          local_3c = local_3c + 1;\n        }\n        uVar10 = uVar10 + uVar7;\n        pcVar12 = xstrdup(pcVar12);\n        puVar2 = PTR_readdir64_000365c0;\n        *(char **)((int)p_00 + sVar5) = pcVar12;\n        *piVar3 = 0;\n        iVar4 = (*(code *)puVar2)(dirp);\n        if (iVar4 == 0) goto LAB_0001f67c;\n      }\n      uVar6 = uVar10 + uVar7;\n      if (local_44 - uVar10 <= uVar7) {\n        if (uVar6 < uVar10) {\nLAB_0001f920:\n                    /* WARNING: Subroutine does not return */\n          xalloc_die();\n        }\n        if (p == (char *)0x0) {\n          if (uVar6 == 0) {\n            local_44 = 0x40;\n          }\n          else {\n            local_44 = uVar6;\n            if ((int)uVar6 < 0) goto LAB_0001f920;\n          }\n        }\n        else {\n          if (0x55555553 < uVar6) goto LAB_0001f920;\n          local_44 = uVar6 + 1 + (uVar6 >> 1);\n        }\n        p = (char *)xrealloc(p,local_44);\n      }\n      (*(code *)PTR_memcpy_00036698)(p + uVar10,pcVar12,uVar7);\n      uVar10 = uVar6;\n      goto LAB_0001f5d8;\n    }" { (while_statement "while( true ) {\n        cVar1 = *(char *)(iVar4 + 0x13);\n        pcVar12 = (char *)(iVar4 + 0x13);\n        if ((cVar1 == '.') && (cVar1 = *(char *)(iVar4 + 0x14), cVar1 == '.')) {\n          cVar1 = *(char *)(iVar4 + 0x15);\n        }\n        if (cVar1 == '\0') goto LAB_0001f5d8;\n        iVar4 = (*(code *)PTR_strlen_00036638)(pcVar12);\n        uVar7 = iVar4 + 1;\n        if (iVar11 == 0) break;\n        if (local_3c == local_40) {\n          if (p_00 == (undefined4 *)0x0) {\n            if (local_40 == 0) {\n              local_40 = 0x10;\n              sVar5 = 0;\n              local_3c = 1;\n              n = 0x40;\n            }\n            else {\n              sVar5 = local_40 << 2;\n              if (((int)sVar5 < 0) || (local_3c = local_40 + 1, n = sVar5, local_40 >> 0x1e != 0))\n              goto LAB_0001f920;\n            }\n          }\n          else {\n            uVar6 = local_40 + 1;\n            if (0x15555554 < local_40) goto LAB_0001f920;\n            sVar5 = local_3c << 2;\n            local_40 = uVar6 + (local_40 >> 1);\n            n = local_40 * 4;\n            local_3c = uVar6;\n          }\n          p_00 = (undefined4 *)xrealloc(p_00,n);\n        }\n        else {\n          sVar5 = local_3c << 2;\n          local_3c = local_3c + 1;\n        }\n        uVar10 = uVar10 + uVar7;\n        pcVar12 = xstrdup(pcVar12);\n        puVar2 = PTR_readdir64_000365c0;\n        *(char **)((int)p_00 + sVar5) = pcVar12;\n        *piVar3 = 0;\n        iVar4 = (*(code *)puVar2)(dirp);\n        if (iVar4 == 0) goto LAB_0001f67c;\n      }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n        cVar1 = *(char *)(iVar4 + 0x13);\n        pcVar12 = (char *)(iVar4 + 0x13);\n        if ((cVar1 == '.') && (cVar1 = *(char *)(iVar4 + 0x14), cVar1 == '.')) {\n          cVar1 = *(char *)(iVar4 + 0x15);\n        }\n        if (cVar1 == '\0') goto LAB_0001f5d8;\n        iVar4 = (*(code *)PTR_strlen_00036638)(pcVar12);\n        uVar7 = iVar4 + 1;\n        if (iVar11 == 0) break;\n        if (local_3c == local_40) {\n          if (p_00 == (undefined4 *)0x0) {\n            if (local_40 == 0) {\n              local_40 = 0x10;\n              sVar5 = 0;\n              local_3c = 1;\n              n = 0x40;\n            }\n            else {\n              sVar5 = local_40 << 2;\n              if (((int)sVar5 < 0) || (local_3c = local_40 + 1, n = sVar5, local_40 >> 0x1e != 0))\n              goto LAB_0001f920;\n            }\n          }\n          else {\n            uVar6 = local_40 + 1;\n            if (0x15555554 < local_40) goto LAB_0001f920;\n            sVar5 = local_3c << 2;\n            local_40 = uVar6 + (local_40 >> 1);\n            n = local_40 * 4;\n            local_3c = uVar6;\n          }\n          p_00 = (undefined4 *)xrealloc(p_00,n);\n        }\n        else {\n          sVar5 = local_3c << 2;\n          local_3c = local_3c + 1;\n        }\n        uVar10 = uVar10 + uVar7;\n        pcVar12 = xstrdup(pcVar12);\n        puVar2 = PTR_readdir64_000365c0;\n        *(char **)((int)p_00 + sVar5) = pcVar12;\n        *piVar3 = 0;\n        iVar4 = (*(code *)puVar2)(dirp);\n        if (iVar4 == 0) goto LAB_0001f67c;\n      }" { (expression_statement "cVar1 = *(char *)(iVar4 + 0x13);" (assignment_expression "cVar1 = *(char *)(iVar4 + 0x13)" identifier = (pointer_expression "*(char *)(iVar4 + 0x13)" * (cast_expression "(char *)(iVar4 + 0x13)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x13)" ( (binary_expression "iVar4 + 0x13" identifier + number_literal) ))))) ;) (expression_statement "pcVar12 = (char *)(iVar4 + 0x13);" (assignment_expression "pcVar12 = (char *)(iVar4 + 0x13)" identifier = (cast_expression "(char *)(iVar4 + 0x13)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x13)" ( (binary_expression "iVar4 + 0x13" identifier + number_literal) )))) ;) (if_statement "if ((cVar1 == '.') && (cVar1 = *(char *)(iVar4 + 0x14), cVar1 == '.')) {\n          cVar1 = *(char *)(iVar4 + 0x15);\n        }" if (parenthesized_expression "((cVar1 == '.') && (cVar1 = *(char *)(iVar4 + 0x14), cVar1 == '.'))" ( (binary_expression "(cVar1 == '.') && (cVar1 = *(char *)(iVar4 + 0x14), cVar1 == '.')" (parenthesized_expression "(cVar1 == '.')" ( (binary_expression "cVar1 == '.'" identifier == (char_literal "'.'" ' character ')) )) && (parenthesized_expression "(cVar1 = *(char *)(iVar4 + 0x14), cVar1 == '.')" ( (comma_expression "cVar1 = *(char *)(iVar4 + 0x14), cVar1 == '.'" (assignment_expression "cVar1 = *(char *)(iVar4 + 0x14)" identifier = (pointer_expression "*(char *)(iVar4 + 0x14)" * (cast_expression "(char *)(iVar4 + 0x14)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x14)" ( (binary_expression "iVar4 + 0x14" identifier + number_literal) ))))) , (binary_expression "cVar1 == '.'" identifier == (char_literal "'.'" ' character '))) ))) )) (compound_statement "{\n          cVar1 = *(char *)(iVar4 + 0x15);\n        }" { (expression_statement "cVar1 = *(char *)(iVar4 + 0x15);" (assignment_expression "cVar1 = *(char *)(iVar4 + 0x15)" identifier = (pointer_expression "*(char *)(iVar4 + 0x15)" * (cast_expression "(char *)(iVar4 + 0x15)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x15)" ( (binary_expression "iVar4 + 0x15" identifier + number_literal) ))))) ;) })) (if_statement "if (cVar1 == '\0') goto LAB_0001f5d8;" if (parenthesized_expression "(cVar1 == '\0')" ( (binary_expression "cVar1 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_0001f5d8;" goto statement_identifier ;)) (expression_statement "iVar4 = (*(code *)PTR_strlen_00036638)(pcVar12);" (assignment_expression "iVar4 = (*(code *)PTR_strlen_00036638)(pcVar12)" identifier = (call_expression "(*(code *)PTR_strlen_00036638)(pcVar12)" (parenthesized_expression "(*(code *)PTR_strlen_00036638)" ( (pointer_expression "*(code *)PTR_strlen_00036638" * (cast_expression "(code *)PTR_strlen_00036638" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(pcVar12)" ( identifier )))) ;) (expression_statement "uVar7 = iVar4 + 1;" (assignment_expression "uVar7 = iVar4 + 1" identifier = (binary_expression "iVar4 + 1" identifier + number_literal)) ;) (if_statement "if (iVar11 == 0) break;" if (parenthesized_expression "(iVar11 == 0)" ( (binary_expression "iVar11 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (if_statement "if (local_3c == local_40) {\n          if (p_00 == (undefined4 *)0x0) {\n            if (local_40 == 0) {\n              local_40 = 0x10;\n              sVar5 = 0;\n              local_3c = 1;\n              n = 0x40;\n            }\n            else {\n              sVar5 = local_40 << 2;\n              if (((int)sVar5 < 0) || (local_3c = local_40 + 1, n = sVar5, local_40 >> 0x1e != 0))\n              goto LAB_0001f920;\n            }\n          }\n          else {\n            uVar6 = local_40 + 1;\n            if (0x15555554 < local_40) goto LAB_0001f920;\n            sVar5 = local_3c << 2;\n            local_40 = uVar6 + (local_40 >> 1);\n            n = local_40 * 4;\n            local_3c = uVar6;\n          }\n          p_00 = (undefined4 *)xrealloc(p_00,n);\n        }\n        else {\n          sVar5 = local_3c << 2;\n          local_3c = local_3c + 1;\n        }" if (parenthesized_expression "(local_3c == local_40)" ( (binary_expression "local_3c == local_40" identifier == identifier) )) (compound_statement "{\n          if (p_00 == (undefined4 *)0x0) {\n            if (local_40 == 0) {\n              local_40 = 0x10;\n              sVar5 = 0;\n              local_3c = 1;\n              n = 0x40;\n            }\n            else {\n              sVar5 = local_40 << 2;\n              if (((int)sVar5 < 0) || (local_3c = local_40 + 1, n = sVar5, local_40 >> 0x1e != 0))\n              goto LAB_0001f920;\n            }\n          }\n          else {\n            uVar6 = local_40 + 1;\n            if (0x15555554 < local_40) goto LAB_0001f920;\n            sVar5 = local_3c << 2;\n            local_40 = uVar6 + (local_40 >> 1);\n            n = local_40 * 4;\n            local_3c = uVar6;\n          }\n          p_00 = (undefined4 *)xrealloc(p_00,n);\n        }" { (if_statement "if (p_00 == (undefined4 *)0x0) {\n            if (local_40 == 0) {\n              local_40 = 0x10;\n              sVar5 = 0;\n              local_3c = 1;\n              n = 0x40;\n            }\n            else {\n              sVar5 = local_40 << 2;\n              if (((int)sVar5 < 0) || (local_3c = local_40 + 1, n = sVar5, local_40 >> 0x1e != 0))\n              goto LAB_0001f920;\n            }\n          }\n          else {\n            uVar6 = local_40 + 1;\n            if (0x15555554 < local_40) goto LAB_0001f920;\n            sVar5 = local_3c << 2;\n            local_40 = uVar6 + (local_40 >> 1);\n            n = local_40 * 4;\n            local_3c = uVar6;\n          }" if (parenthesized_expression "(p_00 == (undefined4 *)0x0)" ( (binary_expression "p_00 == (undefined4 *)0x0" identifier == (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            if (local_40 == 0) {\n              local_40 = 0x10;\n              sVar5 = 0;\n              local_3c = 1;\n              n = 0x40;\n            }\n            else {\n              sVar5 = local_40 << 2;\n              if (((int)sVar5 < 0) || (local_3c = local_40 + 1, n = sVar5, local_40 >> 0x1e != 0))\n              goto LAB_0001f920;\n            }\n          }" { (if_statement "if (local_40 == 0) {\n              local_40 = 0x10;\n              sVar5 = 0;\n              local_3c = 1;\n              n = 0x40;\n            }\n            else {\n              sVar5 = local_40 << 2;\n              if (((int)sVar5 < 0) || (local_3c = local_40 + 1, n = sVar5, local_40 >> 0x1e != 0))\n              goto LAB_0001f920;\n            }" if (parenthesized_expression "(local_40 == 0)" ( (binary_expression "local_40 == 0" identifier == number_literal) )) (compound_statement "{\n              local_40 = 0x10;\n              sVar5 = 0;\n              local_3c = 1;\n              n = 0x40;\n            }" { (expression_statement "local_40 = 0x10;" (assignment_expression "local_40 = 0x10" identifier = number_literal) ;) (expression_statement "sVar5 = 0;" (assignment_expression "sVar5 = 0" identifier = number_literal) ;) (expression_statement "local_3c = 1;" (assignment_expression "local_3c = 1" identifier = number_literal) ;) (expression_statement "n = 0x40;" (assignment_expression "n = 0x40" identifier = number_literal) ;) }) (else_clause "else {\n              sVar5 = local_40 << 2;\n              if (((int)sVar5 < 0) || (local_3c = local_40 + 1, n = sVar5, local_40 >> 0x1e != 0))\n              goto LAB_0001f920;\n            }" else (compound_statement "{\n              sVar5 = local_40 << 2;\n              if (((int)sVar5 < 0) || (local_3c = local_40 + 1, n = sVar5, local_40 >> 0x1e != 0))\n              goto LAB_0001f920;\n            }" { (expression_statement "sVar5 = local_40 << 2;" (assignment_expression "sVar5 = local_40 << 2" identifier = (binary_expression "local_40 << 2" identifier << number_literal)) ;) (if_statement "if (((int)sVar5 < 0) || (local_3c = local_40 + 1, n = sVar5, local_40 >> 0x1e != 0))\n              goto LAB_0001f920;" if (parenthesized_expression "(((int)sVar5 < 0) || (local_3c = local_40 + 1, n = sVar5, local_40 >> 0x1e != 0))" ( (binary_expression "((int)sVar5 < 0) || (local_3c = local_40 + 1, n = sVar5, local_40 >> 0x1e != 0)" (parenthesized_expression "((int)sVar5 < 0)" ( (binary_expression "(int)sVar5 < 0" (cast_expression "(int)sVar5" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) || (parenthesized_expression "(local_3c = local_40 + 1, n = sVar5, local_40 >> 0x1e != 0)" ( (comma_expression "local_3c = local_40 + 1, n = sVar5, local_40 >> 0x1e != 0" (assignment_expression "local_3c = local_40 + 1" identifier = (binary_expression "local_40 + 1" identifier + number_literal)) , (comma_expression "n = sVar5, local_40 >> 0x1e != 0" (assignment_expression "n = sVar5" identifier = identifier) , (binary_expression "local_40 >> 0x1e != 0" (binary_expression "local_40 >> 0x1e" identifier >> number_literal) != number_literal))) ))) )) (goto_statement "goto LAB_0001f920;" goto statement_identifier ;)) }))) }) (else_clause "else {\n            uVar6 = local_40 + 1;\n            if (0x15555554 < local_40) goto LAB_0001f920;\n            sVar5 = local_3c << 2;\n            local_40 = uVar6 + (local_40 >> 1);\n            n = local_40 * 4;\n            local_3c = uVar6;\n          }" else (compound_statement "{\n            uVar6 = local_40 + 1;\n            if (0x15555554 < local_40) goto LAB_0001f920;\n            sVar5 = local_3c << 2;\n            local_40 = uVar6 + (local_40 >> 1);\n            n = local_40 * 4;\n            local_3c = uVar6;\n          }" { (expression_statement "uVar6 = local_40 + 1;" (assignment_expression "uVar6 = local_40 + 1" identifier = (binary_expression "local_40 + 1" identifier + number_literal)) ;) (if_statement "if (0x15555554 < local_40) goto LAB_0001f920;" if (parenthesized_expression "(0x15555554 < local_40)" ( (binary_expression "0x15555554 < local_40" number_literal < identifier) )) (goto_statement "goto LAB_0001f920;" goto statement_identifier ;)) (expression_statement "sVar5 = local_3c << 2;" (assignment_expression "sVar5 = local_3c << 2" identifier = (binary_expression "local_3c << 2" identifier << number_literal)) ;) (expression_statement "local_40 = uVar6 + (local_40 >> 1);" (assignment_expression "local_40 = uVar6 + (local_40 >> 1)" identifier = (binary_expression "uVar6 + (local_40 >> 1)" identifier + (parenthesized_expression "(local_40 >> 1)" ( (binary_expression "local_40 >> 1" identifier >> number_literal) )))) ;) (expression_statement "n = local_40 * 4;" (assignment_expression "n = local_40 * 4" identifier = (binary_expression "local_40 * 4" identifier * number_literal)) ;) (expression_statement "local_3c = uVar6;" (assignment_expression "local_3c = uVar6" identifier = identifier) ;) }))) (expression_statement "p_00 = (undefined4 *)xrealloc(p_00,n);" (assignment_expression "p_00 = (undefined4 *)xrealloc(p_00,n)" identifier = (cast_expression "(undefined4 *)xrealloc(p_00,n)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "xrealloc(p_00,n)" identifier (argument_list "(p_00,n)" ( identifier , identifier ))))) ;) }) (else_clause "else {\n          sVar5 = local_3c << 2;\n          local_3c = local_3c + 1;\n        }" else (compound_statement "{\n          sVar5 = local_3c << 2;\n          local_3c = local_3c + 1;\n        }" { (expression_statement "sVar5 = local_3c << 2;" (assignment_expression "sVar5 = local_3c << 2" identifier = (binary_expression "local_3c << 2" identifier << number_literal)) ;) (expression_statement "local_3c = local_3c + 1;" (assignment_expression "local_3c = local_3c + 1" identifier = (binary_expression "local_3c + 1" identifier + number_literal)) ;) }))) (expression_statement "uVar10 = uVar10 + uVar7;" (assignment_expression "uVar10 = uVar10 + uVar7" identifier = (binary_expression "uVar10 + uVar7" identifier + identifier)) ;) (expression_statement "pcVar12 = xstrdup(pcVar12);" (assignment_expression "pcVar12 = xstrdup(pcVar12)" identifier = (call_expression "xstrdup(pcVar12)" identifier (argument_list "(pcVar12)" ( identifier )))) ;) (expression_statement "puVar2 = PTR_readdir64_000365c0;" (assignment_expression "puVar2 = PTR_readdir64_000365c0" identifier = identifier) ;) (expression_statement "*(char **)((int)p_00 + sVar5) = pcVar12;" (assignment_expression "*(char **)((int)p_00 + sVar5) = pcVar12" (pointer_expression "*(char **)((int)p_00 + sVar5)" * (cast_expression "(char **)((int)p_00 + sVar5)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)p_00 + sVar5)" ( (binary_expression "(int)p_00 + sVar5" (cast_expression "(int)p_00" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) = identifier) ;) (expression_statement "*piVar3 = 0;" (assignment_expression "*piVar3 = 0" (pointer_expression "*piVar3" * identifier) = number_literal) ;) (expression_statement "iVar4 = (*(code *)puVar2)(dirp);" (assignment_expression "iVar4 = (*(code *)puVar2)(dirp)" identifier = (call_expression "(*(code *)puVar2)(dirp)" (parenthesized_expression "(*(code *)puVar2)" ( (pointer_expression "*(code *)puVar2" * (cast_expression "(code *)puVar2" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(dirp)" ( identifier )))) ;) (if_statement "if (iVar4 == 0) goto LAB_0001f67c;" if (parenthesized_expression "(iVar4 == 0)" ( (binary_expression "iVar4 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0001f67c;" goto statement_identifier ;)) })) (expression_statement "uVar6 = uVar10 + uVar7;" (assignment_expression "uVar6 = uVar10 + uVar7" identifier = (binary_expression "uVar10 + uVar7" identifier + identifier)) ;) (if_statement "if (local_44 - uVar10 <= uVar7) {\n        if (uVar6 < uVar10) {\nLAB_0001f920:\n                    /* WARNING: Subroutine does not return */\n          xalloc_die();\n        }\n        if (p == (char *)0x0) {\n          if (uVar6 == 0) {\n            local_44 = 0x40;\n          }\n          else {\n            local_44 = uVar6;\n            if ((int)uVar6 < 0) goto LAB_0001f920;\n          }\n        }\n        else {\n          if (0x55555553 < uVar6) goto LAB_0001f920;\n          local_44 = uVar6 + 1 + (uVar6 >> 1);\n        }\n        p = (char *)xrealloc(p,local_44);\n      }" if (parenthesized_expression "(local_44 - uVar10 <= uVar7)" ( (binary_expression "local_44 - uVar10 <= uVar7" (binary_expression "local_44 - uVar10" identifier - identifier) <= identifier) )) (compound_statement "{\n        if (uVar6 < uVar10) {\nLAB_0001f920:\n                    /* WARNING: Subroutine does not return */\n          xalloc_die();\n        }\n        if (p == (char *)0x0) {\n          if (uVar6 == 0) {\n            local_44 = 0x40;\n          }\n          else {\n            local_44 = uVar6;\n            if ((int)uVar6 < 0) goto LAB_0001f920;\n          }\n        }\n        else {\n          if (0x55555553 < uVar6) goto LAB_0001f920;\n          local_44 = uVar6 + 1 + (uVar6 >> 1);\n        }\n        p = (char *)xrealloc(p,local_44);\n      }" { (if_statement "if (uVar6 < uVar10) {\nLAB_0001f920:\n                    /* WARNING: Subroutine does not return */\n          xalloc_die();\n        }" if (parenthesized_expression "(uVar6 < uVar10)" ( (binary_expression "uVar6 < uVar10" identifier < identifier) )) (compound_statement "{\nLAB_0001f920:\n                    /* WARNING: Subroutine does not return */\n          xalloc_die();\n        }" { (labeled_statement "LAB_0001f920:\n                    /* WARNING: Subroutine does not return */\n          xalloc_die();" statement_identifier : comment (expression_statement "xalloc_die();" (call_expression "xalloc_die()" identifier (argument_list "()" ( ))) ;)) })) (if_statement "if (p == (char *)0x0) {\n          if (uVar6 == 0) {\n            local_44 = 0x40;\n          }\n          else {\n            local_44 = uVar6;\n            if ((int)uVar6 < 0) goto LAB_0001f920;\n          }\n        }\n        else {\n          if (0x55555553 < uVar6) goto LAB_0001f920;\n          local_44 = uVar6 + 1 + (uVar6 >> 1);\n        }" if (parenthesized_expression "(p == (char *)0x0)" ( (binary_expression "p == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          if (uVar6 == 0) {\n            local_44 = 0x40;\n          }\n          else {\n            local_44 = uVar6;\n            if ((int)uVar6 < 0) goto LAB_0001f920;\n          }\n        }" { (if_statement "if (uVar6 == 0) {\n            local_44 = 0x40;\n          }\n          else {\n            local_44 = uVar6;\n            if ((int)uVar6 < 0) goto LAB_0001f920;\n          }" if (parenthesized_expression "(uVar6 == 0)" ( (binary_expression "uVar6 == 0" identifier == number_literal) )) (compound_statement "{\n            local_44 = 0x40;\n          }" { (expression_statement "local_44 = 0x40;" (assignment_expression "local_44 = 0x40" identifier = number_literal) ;) }) (else_clause "else {\n            local_44 = uVar6;\n            if ((int)uVar6 < 0) goto LAB_0001f920;\n          }" else (compound_statement "{\n            local_44 = uVar6;\n            if ((int)uVar6 < 0) goto LAB_0001f920;\n          }" { (expression_statement "local_44 = uVar6;" (assignment_expression "local_44 = uVar6" identifier = identifier) ;) (if_statement "if ((int)uVar6 < 0) goto LAB_0001f920;" if (parenthesized_expression "((int)uVar6 < 0)" ( (binary_expression "(int)uVar6 < 0" (cast_expression "(int)uVar6" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (goto_statement "goto LAB_0001f920;" goto statement_identifier ;)) }))) }) (else_clause "else {\n          if (0x55555553 < uVar6) goto LAB_0001f920;\n          local_44 = uVar6 + 1 + (uVar6 >> 1);\n        }" else (compound_statement "{\n          if (0x55555553 < uVar6) goto LAB_0001f920;\n          local_44 = uVar6 + 1 + (uVar6 >> 1);\n        }" { (if_statement "if (0x55555553 < uVar6) goto LAB_0001f920;" if (parenthesized_expression "(0x55555553 < uVar6)" ( (binary_expression "0x55555553 < uVar6" number_literal < identifier) )) (goto_statement "goto LAB_0001f920;" goto statement_identifier ;)) (expression_statement "local_44 = uVar6 + 1 + (uVar6 >> 1);" (assignment_expression "local_44 = uVar6 + 1 + (uVar6 >> 1)" identifier = (binary_expression "uVar6 + 1 + (uVar6 >> 1)" (binary_expression "uVar6 + 1" identifier + number_literal) + (parenthesized_expression "(uVar6 >> 1)" ( (binary_expression "uVar6 >> 1" identifier >> number_literal) )))) ;) }))) (expression_statement "p = (char *)xrealloc(p,local_44);" (assignment_expression "p = (char *)xrealloc(p,local_44)" identifier = (cast_expression "(char *)xrealloc(p,local_44)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xrealloc(p,local_44)" identifier (argument_list "(p,local_44)" ( identifier , identifier ))))) ;) })) (expression_statement "(*(code *)PTR_memcpy_00036698)(p + uVar10,pcVar12,uVar7);" (call_expression "(*(code *)PTR_memcpy_00036698)(p + uVar10,pcVar12,uVar7)" (parenthesized_expression "(*(code *)PTR_memcpy_00036698)" ( (pointer_expression "*(code *)PTR_memcpy_00036698" * (cast_expression "(code *)PTR_memcpy_00036698" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(p + uVar10,pcVar12,uVar7)" ( (binary_expression "p + uVar10" identifier + identifier) , identifier , identifier ))) ;) (expression_statement "uVar10 = uVar6;" (assignment_expression "uVar10 = uVar6" identifier = identifier) ;) (goto_statement "goto LAB_0001f5d8;" goto statement_identifier ;) })) (labeled_statement "LAB_0001f67c:\n    iVar4 = *piVar3;" statement_identifier : (expression_statement "iVar4 = *piVar3;" (assignment_expression "iVar4 = *piVar3" identifier = (pointer_expression "*piVar3" * identifier)) ;)) (if_statement "if (iVar4 == 0) {\n      if (iVar11 == 0) {\n        if (local_44 == uVar10) {\n          p = (char *)xrealloc(p,local_44 + 1);\n          pcVar12 = p + local_44;\n        }\n        else {\n          pcVar12 = p + uVar10;\n        }\n      }\n      else {\n        if (local_3c == 0) {\n          p = (char *)xmalloc(uVar10 + 1);\n          pcVar12 = p;\n        }\n        else {\n          (*(code *)PTR_qsort_000365bc)(p_00,local_3c,4,iVar11);\n          iVar11 = 0;\n          p = (char *)xmalloc(uVar10 + 1);\n          puVar8 = p_00;\n          do {\n            puVar9 = puVar8 + 1;\n            iVar4 = (*(code *)PTR_stpcpy_00036680)(p + iVar11,*puVar8);\n            iVar11 = iVar11 + (iVar4 - (int)(p + iVar11)) + 1;\n            (*(code *)PTR_free_000366a0)(*puVar8);\n            puVar8 = puVar9;\n          } while (p_00 + local_3c != puVar9);\n          pcVar12 = p + iVar11;\n        }\n        (*(code *)PTR_free_000366a0)(p_00);\n      }\n      *pcVar12 = '\0';\n      pcVar12 = p;\n    }\n    else {\n      (*(code *)PTR_free_000366a0)(p_00);\n      pcVar12 = (char *)0x0;\n      (*(code *)PTR_free_000366a0)(p);\n      *piVar3 = iVar4;\n    }" if (parenthesized_expression "(iVar4 == 0)" ( (binary_expression "iVar4 == 0" identifier == number_literal) )) (compound_statement "{\n      if (iVar11 == 0) {\n        if (local_44 == uVar10) {\n          p = (char *)xrealloc(p,local_44 + 1);\n          pcVar12 = p + local_44;\n        }\n        else {\n          pcVar12 = p + uVar10;\n        }\n      }\n      else {\n        if (local_3c == 0) {\n          p = (char *)xmalloc(uVar10 + 1);\n          pcVar12 = p;\n        }\n        else {\n          (*(code *)PTR_qsort_000365bc)(p_00,local_3c,4,iVar11);\n          iVar11 = 0;\n          p = (char *)xmalloc(uVar10 + 1);\n          puVar8 = p_00;\n          do {\n            puVar9 = puVar8 + 1;\n            iVar4 = (*(code *)PTR_stpcpy_00036680)(p + iVar11,*puVar8);\n            iVar11 = iVar11 + (iVar4 - (int)(p + iVar11)) + 1;\n            (*(code *)PTR_free_000366a0)(*puVar8);\n            puVar8 = puVar9;\n          } while (p_00 + local_3c != puVar9);\n          pcVar12 = p + iVar11;\n        }\n        (*(code *)PTR_free_000366a0)(p_00);\n      }\n      *pcVar12 = '\0';\n      pcVar12 = p;\n    }" { (if_statement "if (iVar11 == 0) {\n        if (local_44 == uVar10) {\n          p = (char *)xrealloc(p,local_44 + 1);\n          pcVar12 = p + local_44;\n        }\n        else {\n          pcVar12 = p + uVar10;\n        }\n      }\n      else {\n        if (local_3c == 0) {\n          p = (char *)xmalloc(uVar10 + 1);\n          pcVar12 = p;\n        }\n        else {\n          (*(code *)PTR_qsort_000365bc)(p_00,local_3c,4,iVar11);\n          iVar11 = 0;\n          p = (char *)xmalloc(uVar10 + 1);\n          puVar8 = p_00;\n          do {\n            puVar9 = puVar8 + 1;\n            iVar4 = (*(code *)PTR_stpcpy_00036680)(p + iVar11,*puVar8);\n            iVar11 = iVar11 + (iVar4 - (int)(p + iVar11)) + 1;\n            (*(code *)PTR_free_000366a0)(*puVar8);\n            puVar8 = puVar9;\n          } while (p_00 + local_3c != puVar9);\n          pcVar12 = p + iVar11;\n        }\n        (*(code *)PTR_free_000366a0)(p_00);\n      }" if (parenthesized_expression "(iVar11 == 0)" ( (binary_expression "iVar11 == 0" identifier == number_literal) )) (compound_statement "{\n        if (local_44 == uVar10) {\n          p = (char *)xrealloc(p,local_44 + 1);\n          pcVar12 = p + local_44;\n        }\n        else {\n          pcVar12 = p + uVar10;\n        }\n      }" { (if_statement "if (local_44 == uVar10) {\n          p = (char *)xrealloc(p,local_44 + 1);\n          pcVar12 = p + local_44;\n        }\n        else {\n          pcVar12 = p + uVar10;\n        }" if (parenthesized_expression "(local_44 == uVar10)" ( (binary_expression "local_44 == uVar10" identifier == identifier) )) (compound_statement "{\n          p = (char *)xrealloc(p,local_44 + 1);\n          pcVar12 = p + local_44;\n        }" { (expression_statement "p = (char *)xrealloc(p,local_44 + 1);" (assignment_expression "p = (char *)xrealloc(p,local_44 + 1)" identifier = (cast_expression "(char *)xrealloc(p,local_44 + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xrealloc(p,local_44 + 1)" identifier (argument_list "(p,local_44 + 1)" ( identifier , (binary_expression "local_44 + 1" identifier + number_literal) ))))) ;) (expression_statement "pcVar12 = p + local_44;" (assignment_expression "pcVar12 = p + local_44" identifier = (binary_expression "p + local_44" identifier + identifier)) ;) }) (else_clause "else {\n          pcVar12 = p + uVar10;\n        }" else (compound_statement "{\n          pcVar12 = p + uVar10;\n        }" { (expression_statement "pcVar12 = p + uVar10;" (assignment_expression "pcVar12 = p + uVar10" identifier = (binary_expression "p + uVar10" identifier + identifier)) ;) }))) }) (else_clause "else {\n        if (local_3c == 0) {\n          p = (char *)xmalloc(uVar10 + 1);\n          pcVar12 = p;\n        }\n        else {\n          (*(code *)PTR_qsort_000365bc)(p_00,local_3c,4,iVar11);\n          iVar11 = 0;\n          p = (char *)xmalloc(uVar10 + 1);\n          puVar8 = p_00;\n          do {\n            puVar9 = puVar8 + 1;\n            iVar4 = (*(code *)PTR_stpcpy_00036680)(p + iVar11,*puVar8);\n            iVar11 = iVar11 + (iVar4 - (int)(p + iVar11)) + 1;\n            (*(code *)PTR_free_000366a0)(*puVar8);\n            puVar8 = puVar9;\n          } while (p_00 + local_3c != puVar9);\n          pcVar12 = p + iVar11;\n        }\n        (*(code *)PTR_free_000366a0)(p_00);\n      }" else (compound_statement "{\n        if (local_3c == 0) {\n          p = (char *)xmalloc(uVar10 + 1);\n          pcVar12 = p;\n        }\n        else {\n          (*(code *)PTR_qsort_000365bc)(p_00,local_3c,4,iVar11);\n          iVar11 = 0;\n          p = (char *)xmalloc(uVar10 + 1);\n          puVar8 = p_00;\n          do {\n            puVar9 = puVar8 + 1;\n            iVar4 = (*(code *)PTR_stpcpy_00036680)(p + iVar11,*puVar8);\n            iVar11 = iVar11 + (iVar4 - (int)(p + iVar11)) + 1;\n            (*(code *)PTR_free_000366a0)(*puVar8);\n            puVar8 = puVar9;\n          } while (p_00 + local_3c != puVar9);\n          pcVar12 = p + iVar11;\n        }\n        (*(code *)PTR_free_000366a0)(p_00);\n      }" { (if_statement "if (local_3c == 0) {\n          p = (char *)xmalloc(uVar10 + 1);\n          pcVar12 = p;\n        }\n        else {\n          (*(code *)PTR_qsort_000365bc)(p_00,local_3c,4,iVar11);\n          iVar11 = 0;\n          p = (char *)xmalloc(uVar10 + 1);\n          puVar8 = p_00;\n          do {\n            puVar9 = puVar8 + 1;\n            iVar4 = (*(code *)PTR_stpcpy_00036680)(p + iVar11,*puVar8);\n            iVar11 = iVar11 + (iVar4 - (int)(p + iVar11)) + 1;\n            (*(code *)PTR_free_000366a0)(*puVar8);\n            puVar8 = puVar9;\n          } while (p_00 + local_3c != puVar9);\n          pcVar12 = p + iVar11;\n        }" if (parenthesized_expression "(local_3c == 0)" ( (binary_expression "local_3c == 0" identifier == number_literal) )) (compound_statement "{\n          p = (char *)xmalloc(uVar10 + 1);\n          pcVar12 = p;\n        }" { (expression_statement "p = (char *)xmalloc(uVar10 + 1);" (assignment_expression "p = (char *)xmalloc(uVar10 + 1)" identifier = (cast_expression "(char *)xmalloc(uVar10 + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(uVar10 + 1)" identifier (argument_list "(uVar10 + 1)" ( (binary_expression "uVar10 + 1" identifier + number_literal) ))))) ;) (expression_statement "pcVar12 = p;" (assignment_expression "pcVar12 = p" identifier = identifier) ;) }) (else_clause "else {\n          (*(code *)PTR_qsort_000365bc)(p_00,local_3c,4,iVar11);\n          iVar11 = 0;\n          p = (char *)xmalloc(uVar10 + 1);\n          puVar8 = p_00;\n          do {\n            puVar9 = puVar8 + 1;\n            iVar4 = (*(code *)PTR_stpcpy_00036680)(p + iVar11,*puVar8);\n            iVar11 = iVar11 + (iVar4 - (int)(p + iVar11)) + 1;\n            (*(code *)PTR_free_000366a0)(*puVar8);\n            puVar8 = puVar9;\n          } while (p_00 + local_3c != puVar9);\n          pcVar12 = p + iVar11;\n        }" else (compound_statement "{\n          (*(code *)PTR_qsort_000365bc)(p_00,local_3c,4,iVar11);\n          iVar11 = 0;\n          p = (char *)xmalloc(uVar10 + 1);\n          puVar8 = p_00;\n          do {\n            puVar9 = puVar8 + 1;\n            iVar4 = (*(code *)PTR_stpcpy_00036680)(p + iVar11,*puVar8);\n            iVar11 = iVar11 + (iVar4 - (int)(p + iVar11)) + 1;\n            (*(code *)PTR_free_000366a0)(*puVar8);\n            puVar8 = puVar9;\n          } while (p_00 + local_3c != puVar9);\n          pcVar12 = p + iVar11;\n        }" { (expression_statement "(*(code *)PTR_qsort_000365bc)(p_00,local_3c,4,iVar11);" (call_expression "(*(code *)PTR_qsort_000365bc)(p_00,local_3c,4,iVar11)" (parenthesized_expression "(*(code *)PTR_qsort_000365bc)" ( (pointer_expression "*(code *)PTR_qsort_000365bc" * (cast_expression "(code *)PTR_qsort_000365bc" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(p_00,local_3c,4,iVar11)" ( identifier , identifier , number_literal , identifier ))) ;) (expression_statement "iVar11 = 0;" (assignment_expression "iVar11 = 0" identifier = number_literal) ;) (expression_statement "p = (char *)xmalloc(uVar10 + 1);" (assignment_expression "p = (char *)xmalloc(uVar10 + 1)" identifier = (cast_expression "(char *)xmalloc(uVar10 + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(uVar10 + 1)" identifier (argument_list "(uVar10 + 1)" ( (binary_expression "uVar10 + 1" identifier + number_literal) ))))) ;) (expression_statement "puVar8 = p_00;" (assignment_expression "puVar8 = p_00" identifier = identifier) ;) (do_statement "do {\n            puVar9 = puVar8 + 1;\n            iVar4 = (*(code *)PTR_stpcpy_00036680)(p + iVar11,*puVar8);\n            iVar11 = iVar11 + (iVar4 - (int)(p + iVar11)) + 1;\n            (*(code *)PTR_free_000366a0)(*puVar8);\n            puVar8 = puVar9;\n          } while (p_00 + local_3c != puVar9);" do (compound_statement "{\n            puVar9 = puVar8 + 1;\n            iVar4 = (*(code *)PTR_stpcpy_00036680)(p + iVar11,*puVar8);\n            iVar11 = iVar11 + (iVar4 - (int)(p + iVar11)) + 1;\n            (*(code *)PTR_free_000366a0)(*puVar8);\n            puVar8 = puVar9;\n          }" { (expression_statement "puVar9 = puVar8 + 1;" (assignment_expression "puVar9 = puVar8 + 1" identifier = (binary_expression "puVar8 + 1" identifier + number_literal)) ;) (expression_statement "iVar4 = (*(code *)PTR_stpcpy_00036680)(p + iVar11,*puVar8);" (assignment_expression "iVar4 = (*(code *)PTR_stpcpy_00036680)(p + iVar11,*puVar8)" identifier = (call_expression "(*(code *)PTR_stpcpy_00036680)(p + iVar11,*puVar8)" (parenthesized_expression "(*(code *)PTR_stpcpy_00036680)" ( (pointer_expression "*(code *)PTR_stpcpy_00036680" * (cast_expression "(code *)PTR_stpcpy_00036680" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(p + iVar11,*puVar8)" ( (binary_expression "p + iVar11" identifier + identifier) , (pointer_expression "*puVar8" * identifier) )))) ;) (expression_statement "iVar11 = iVar11 + (iVar4 - (int)(p + iVar11)) + 1;" (assignment_expression "iVar11 = iVar11 + (iVar4 - (int)(p + iVar11)) + 1" identifier = (binary_expression "iVar11 + (iVar4 - (int)(p + iVar11)) + 1" (binary_expression "iVar11 + (iVar4 - (int)(p + iVar11))" identifier + (parenthesized_expression "(iVar4 - (int)(p + iVar11))" ( (binary_expression "iVar4 - (int)(p + iVar11)" identifier - (cast_expression "(int)(p + iVar11)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(p + iVar11)" ( (binary_expression "p + iVar11" identifier + identifier) )))) ))) + number_literal)) ;) (expression_statement "(*(code *)PTR_free_000366a0)(*puVar8);" (call_expression "(*(code *)PTR_free_000366a0)(*puVar8)" (parenthesized_expression "(*(code *)PTR_free_000366a0)" ( (pointer_expression "*(code *)PTR_free_000366a0" * (cast_expression "(code *)PTR_free_000366a0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(*puVar8)" ( (pointer_expression "*puVar8" * identifier) ))) ;) (expression_statement "puVar8 = puVar9;" (assignment_expression "puVar8 = puVar9" identifier = identifier) ;) }) while (parenthesized_expression "(p_00 + local_3c != puVar9)" ( (binary_expression "p_00 + local_3c != puVar9" (binary_expression "p_00 + local_3c" identifier + identifier) != identifier) )) ;) (expression_statement "pcVar12 = p + iVar11;" (assignment_expression "pcVar12 = p + iVar11" identifier = (binary_expression "p + iVar11" identifier + identifier)) ;) }))) (expression_statement "(*(code *)PTR_free_000366a0)(p_00);" (call_expression "(*(code *)PTR_free_000366a0)(p_00)" (parenthesized_expression "(*(code *)PTR_free_000366a0)" ( (pointer_expression "*(code *)PTR_free_000366a0" * (cast_expression "(code *)PTR_free_000366a0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(p_00)" ( identifier ))) ;) }))) (expression_statement "*pcVar12 = '\0';" (assignment_expression "*pcVar12 = '\0'" (pointer_expression "*pcVar12" * identifier) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "pcVar12 = p;" (assignment_expression "pcVar12 = p" identifier = identifier) ;) }) (else_clause "else {\n      (*(code *)PTR_free_000366a0)(p_00);\n      pcVar12 = (char *)0x0;\n      (*(code *)PTR_free_000366a0)(p);\n      *piVar3 = iVar4;\n    }" else (compound_statement "{\n      (*(code *)PTR_free_000366a0)(p_00);\n      pcVar12 = (char *)0x0;\n      (*(code *)PTR_free_000366a0)(p);\n      *piVar3 = iVar4;\n    }" { (expression_statement "(*(code *)PTR_free_000366a0)(p_00);" (call_expression "(*(code *)PTR_free_000366a0)(p_00)" (parenthesized_expression "(*(code *)PTR_free_000366a0)" ( (pointer_expression "*(code *)PTR_free_000366a0" * (cast_expression "(code *)PTR_free_000366a0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(p_00)" ( identifier ))) ;) (expression_statement "pcVar12 = (char *)0x0;" (assignment_expression "pcVar12 = (char *)0x0" identifier = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "(*(code *)PTR_free_000366a0)(p);" (call_expression "(*(code *)PTR_free_000366a0)(p)" (parenthesized_expression "(*(code *)PTR_free_000366a0)" ( (pointer_expression "*(code *)PTR_free_000366a0" * (cast_expression "(code *)PTR_free_000366a0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(p)" ( identifier ))) ;) (expression_statement "*piVar3 = iVar4;" (assignment_expression "*piVar3 = iVar4" (pointer_expression "*piVar3" * identifier) = identifier) ;) }))) }))) (return_statement "return pcVar12;" return identifier ;) })))
(translation_unit "undefined1 * streamsavedir(int param_1,int param_2)\n\n{\n  char cVar1;\n  undefined *puVar2;\n  int *piVar3;\n  int iVar4;\n  undefined4 uVar5;\n  int iVar6;\n  uint uVar7;\n  uint uVar8;\n  undefined4 *puVar9;\n  undefined4 *puVar10;\n  undefined1 *puVar11;\n  uint uVar12;\n  undefined1 *puVar13;\n  undefined4 *puVar14;\n  int iVar15;\n  int iVar16;\n  uint local_44;\n  uint local_40;\n  uint local_3c;\n  \n  iVar15 = *(int *)(PTR_DAT_00036388 + param_2 * 4 + 0x5fe8);\n  if (param_1 == 0) {\n    puVar13 = (undefined1 *)0x0;\n  }\n  else {\n    local_3c = 0;\n    piVar3 = (int *)(*(code *)PTR___errno_location_00036604)();\n    puVar14 = (undefined4 *)0x0;\n    local_40 = 0;\n    local_44 = 0;\n    puVar11 = (undefined1 *)0x0;\n    uVar12 = 0;\nLAB_0001f5d8:\n    puVar2 = PTR_readdir64_000365c0;\n    *piVar3 = 0;\n    iVar4 = (*(code *)puVar2)(param_1);\n    if (iVar4 != 0) {\n      while( true ) {\n        cVar1 = *(char *)(iVar4 + 0x13);\n        iVar16 = iVar4 + 0x13;\n        if ((cVar1 == '.') && (cVar1 = *(char *)(iVar4 + 0x14), cVar1 == '.')) {\n          cVar1 = *(char *)(iVar4 + 0x15);\n        }\n        if (cVar1 == '\0') goto LAB_0001f5d8;\n        iVar4 = (*(code *)PTR_strlen_00036638)(iVar16);\n        uVar8 = iVar4 + 1;\n        if (iVar15 == 0) break;\n        if (local_3c == local_40) {\n          if (puVar14 == (undefined4 *)0x0) {\n            if (local_40 == 0) {\n              local_40 = 0x10;\n              iVar6 = 0;\n              local_3c = 1;\n              iVar4 = 0x40;\n            }\n            else {\n              iVar6 = local_40 << 2;\n              if ((iVar6 < 0) || (local_3c = local_40 + 1, iVar4 = iVar6, local_40 >> 0x1e != 0))\n              goto LAB_0001f920;\n            }\n          }\n          else {\n            uVar7 = local_40 + 1;\n            if (0x15555554 < local_40) goto LAB_0001f920;\n            iVar6 = local_3c << 2;\n            local_40 = uVar7 + (local_40 >> 1);\n            iVar4 = local_40 * 4;\n            local_3c = uVar7;\n          }\n          puVar14 = (undefined4 *)xrealloc(puVar14,iVar4);\n        }\n        else {\n          iVar6 = local_3c << 2;\n          local_3c = local_3c + 1;\n        }\n        uVar12 = uVar12 + uVar8;\n        uVar5 = xstrdup(iVar16);\n        puVar2 = PTR_readdir64_000365c0;\n        *(undefined4 *)((int)puVar14 + iVar6) = uVar5;\n        *piVar3 = 0;\n        iVar4 = (*(code *)puVar2)(param_1);\n        if (iVar4 == 0) goto LAB_0001f67c;\n      }\n      uVar7 = uVar12 + uVar8;\n      if (local_44 - uVar12 <= uVar8) {\n        if (uVar7 < uVar12) {\nLAB_0001f920:\n                    \n          xalloc_die();\n        }\n        if (puVar11 == (undefined1 *)0x0) {\n          if (uVar7 == 0) {\n            local_44 = 0x40;\n          }\n          else {\n            local_44 = uVar7;\n            if ((int)uVar7 < 0) goto LAB_0001f920;\n          }\n        }\n        else {\n          if (0x55555553 < uVar7) goto LAB_0001f920;\n          local_44 = uVar7 + 1 + (uVar7 >> 1);\n        }\n        puVar11 = (undefined1 *)xrealloc(puVar11,local_44);\n      }\n      (*(code *)PTR_memcpy_00036698)(puVar11 + uVar12,iVar16,uVar8);\n      uVar12 = uVar7;\n      goto LAB_0001f5d8;\n    }\nLAB_0001f67c:\n    iVar4 = *piVar3;\n    if (iVar4 == 0) {\n      if (iVar15 == 0) {\n        if (local_44 == uVar12) {\n          puVar11 = (undefined1 *)xrealloc(puVar11,local_44 + 1);\n          puVar13 = puVar11 + local_44;\n        }\n        else {\n          puVar13 = puVar11 + uVar12;\n        }\n      }\n      else {\n        if (local_3c == 0) {\n          puVar11 = (undefined1 *)xmalloc(uVar12 + 1);\n          puVar13 = puVar11;\n        }\n        else {\n          (*(code *)PTR_qsort_000365bc)(puVar14,local_3c,4,iVar15);\n          iVar15 = 0;\n          puVar11 = (undefined1 *)xmalloc(uVar12 + 1);\n          puVar9 = puVar14;\n          do {\n            puVar10 = puVar9 + 1;\n            iVar4 = (*(code *)PTR_stpcpy_00036680)(puVar11 + iVar15,*puVar9);\n            iVar15 = iVar15 + (iVar4 - (int)(puVar11 + iVar15)) + 1;\n            (*(code *)PTR_free_000366a0)(*puVar9);\n            puVar9 = puVar10;\n          } while (puVar14 + local_3c != puVar10);\n          puVar13 = puVar11 + iVar15;\n        }\n        (*(code *)PTR_free_000366a0)(puVar14);\n      }\n      *puVar13 = 0;\n      puVar13 = puVar11;\n    }\n    else {\n      (*(code *)PTR_free_000366a0)(puVar14);\n      puVar13 = (undefined1 *)0x0;\n      (*(code *)PTR_free_000366a0)(puVar11);\n      *piVar3 = iVar4;\n    }\n  }\n  return puVar13;\n}\n\n" (function_definition "undefined1 * streamsavedir(int param_1,int param_2)\n\n{\n  char cVar1;\n  undefined *puVar2;\n  int *piVar3;\n  int iVar4;\n  undefined4 uVar5;\n  int iVar6;\n  uint uVar7;\n  uint uVar8;\n  undefined4 *puVar9;\n  undefined4 *puVar10;\n  undefined1 *puVar11;\n  uint uVar12;\n  undefined1 *puVar13;\n  undefined4 *puVar14;\n  int iVar15;\n  int iVar16;\n  uint local_44;\n  uint local_40;\n  uint local_3c;\n  \n  iVar15 = *(int *)(PTR_DAT_00036388 + param_2 * 4 + 0x5fe8);\n  if (param_1 == 0) {\n    puVar13 = (undefined1 *)0x0;\n  }\n  else {\n    local_3c = 0;\n    piVar3 = (int *)(*(code *)PTR___errno_location_00036604)();\n    puVar14 = (undefined4 *)0x0;\n    local_40 = 0;\n    local_44 = 0;\n    puVar11 = (undefined1 *)0x0;\n    uVar12 = 0;\nLAB_0001f5d8:\n    puVar2 = PTR_readdir64_000365c0;\n    *piVar3 = 0;\n    iVar4 = (*(code *)puVar2)(param_1);\n    if (iVar4 != 0) {\n      while( true ) {\n        cVar1 = *(char *)(iVar4 + 0x13);\n        iVar16 = iVar4 + 0x13;\n        if ((cVar1 == '.') && (cVar1 = *(char *)(iVar4 + 0x14), cVar1 == '.')) {\n          cVar1 = *(char *)(iVar4 + 0x15);\n        }\n        if (cVar1 == '\0') goto LAB_0001f5d8;\n        iVar4 = (*(code *)PTR_strlen_00036638)(iVar16);\n        uVar8 = iVar4 + 1;\n        if (iVar15 == 0) break;\n        if (local_3c == local_40) {\n          if (puVar14 == (undefined4 *)0x0) {\n            if (local_40 == 0) {\n              local_40 = 0x10;\n              iVar6 = 0;\n              local_3c = 1;\n              iVar4 = 0x40;\n            }\n            else {\n              iVar6 = local_40 << 2;\n              if ((iVar6 < 0) || (local_3c = local_40 + 1, iVar4 = iVar6, local_40 >> 0x1e != 0))\n              goto LAB_0001f920;\n            }\n          }\n          else {\n            uVar7 = local_40 + 1;\n            if (0x15555554 < local_40) goto LAB_0001f920;\n            iVar6 = local_3c << 2;\n            local_40 = uVar7 + (local_40 >> 1);\n            iVar4 = local_40 * 4;\n            local_3c = uVar7;\n          }\n          puVar14 = (undefined4 *)xrealloc(puVar14,iVar4);\n        }\n        else {\n          iVar6 = local_3c << 2;\n          local_3c = local_3c + 1;\n        }\n        uVar12 = uVar12 + uVar8;\n        uVar5 = xstrdup(iVar16);\n        puVar2 = PTR_readdir64_000365c0;\n        *(undefined4 *)((int)puVar14 + iVar6) = uVar5;\n        *piVar3 = 0;\n        iVar4 = (*(code *)puVar2)(param_1);\n        if (iVar4 == 0) goto LAB_0001f67c;\n      }\n      uVar7 = uVar12 + uVar8;\n      if (local_44 - uVar12 <= uVar8) {\n        if (uVar7 < uVar12) {\nLAB_0001f920:\n                    \n          xalloc_die();\n        }\n        if (puVar11 == (undefined1 *)0x0) {\n          if (uVar7 == 0) {\n            local_44 = 0x40;\n          }\n          else {\n            local_44 = uVar7;\n            if ((int)uVar7 < 0) goto LAB_0001f920;\n          }\n        }\n        else {\n          if (0x55555553 < uVar7) goto LAB_0001f920;\n          local_44 = uVar7 + 1 + (uVar7 >> 1);\n        }\n        puVar11 = (undefined1 *)xrealloc(puVar11,local_44);\n      }\n      (*(code *)PTR_memcpy_00036698)(puVar11 + uVar12,iVar16,uVar8);\n      uVar12 = uVar7;\n      goto LAB_0001f5d8;\n    }\nLAB_0001f67c:\n    iVar4 = *piVar3;\n    if (iVar4 == 0) {\n      if (iVar15 == 0) {\n        if (local_44 == uVar12) {\n          puVar11 = (undefined1 *)xrealloc(puVar11,local_44 + 1);\n          puVar13 = puVar11 + local_44;\n        }\n        else {\n          puVar13 = puVar11 + uVar12;\n        }\n      }\n      else {\n        if (local_3c == 0) {\n          puVar11 = (undefined1 *)xmalloc(uVar12 + 1);\n          puVar13 = puVar11;\n        }\n        else {\n          (*(code *)PTR_qsort_000365bc)(puVar14,local_3c,4,iVar15);\n          iVar15 = 0;\n          puVar11 = (undefined1 *)xmalloc(uVar12 + 1);\n          puVar9 = puVar14;\n          do {\n            puVar10 = puVar9 + 1;\n            iVar4 = (*(code *)PTR_stpcpy_00036680)(puVar11 + iVar15,*puVar9);\n            iVar15 = iVar15 + (iVar4 - (int)(puVar11 + iVar15)) + 1;\n            (*(code *)PTR_free_000366a0)(*puVar9);\n            puVar9 = puVar10;\n          } while (puVar14 + local_3c != puVar10);\n          puVar13 = puVar11 + iVar15;\n        }\n        (*(code *)PTR_free_000366a0)(puVar14);\n      }\n      *puVar13 = 0;\n      puVar13 = puVar11;\n    }\n    else {\n      (*(code *)PTR_free_000366a0)(puVar14);\n      puVar13 = (undefined1 *)0x0;\n      (*(code *)PTR_free_000366a0)(puVar11);\n      *piVar3 = iVar4;\n    }\n  }\n  return puVar13;\n}" type_identifier (pointer_declarator "* streamsavedir(int param_1,int param_2)" * (function_declarator "streamsavedir(int param_1,int param_2)" identifier (parameter_list "(int param_1,int param_2)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "int param_2" primitive_type identifier) )))) (compound_statement "{\n  char cVar1;\n  undefined *puVar2;\n  int *piVar3;\n  int iVar4;\n  undefined4 uVar5;\n  int iVar6;\n  uint uVar7;\n  uint uVar8;\n  undefined4 *puVar9;\n  undefined4 *puVar10;\n  undefined1 *puVar11;\n  uint uVar12;\n  undefined1 *puVar13;\n  undefined4 *puVar14;\n  int iVar15;\n  int iVar16;\n  uint local_44;\n  uint local_40;\n  uint local_3c;\n  \n  iVar15 = *(int *)(PTR_DAT_00036388 + param_2 * 4 + 0x5fe8);\n  if (param_1 == 0) {\n    puVar13 = (undefined1 *)0x0;\n  }\n  else {\n    local_3c = 0;\n    piVar3 = (int *)(*(code *)PTR___errno_location_00036604)();\n    puVar14 = (undefined4 *)0x0;\n    local_40 = 0;\n    local_44 = 0;\n    puVar11 = (undefined1 *)0x0;\n    uVar12 = 0;\nLAB_0001f5d8:\n    puVar2 = PTR_readdir64_000365c0;\n    *piVar3 = 0;\n    iVar4 = (*(code *)puVar2)(param_1);\n    if (iVar4 != 0) {\n      while( true ) {\n        cVar1 = *(char *)(iVar4 + 0x13);\n        iVar16 = iVar4 + 0x13;\n        if ((cVar1 == '.') && (cVar1 = *(char *)(iVar4 + 0x14), cVar1 == '.')) {\n          cVar1 = *(char *)(iVar4 + 0x15);\n        }\n        if (cVar1 == '\0') goto LAB_0001f5d8;\n        iVar4 = (*(code *)PTR_strlen_00036638)(iVar16);\n        uVar8 = iVar4 + 1;\n        if (iVar15 == 0) break;\n        if (local_3c == local_40) {\n          if (puVar14 == (undefined4 *)0x0) {\n            if (local_40 == 0) {\n              local_40 = 0x10;\n              iVar6 = 0;\n              local_3c = 1;\n              iVar4 = 0x40;\n            }\n            else {\n              iVar6 = local_40 << 2;\n              if ((iVar6 < 0) || (local_3c = local_40 + 1, iVar4 = iVar6, local_40 >> 0x1e != 0))\n              goto LAB_0001f920;\n            }\n          }\n          else {\n            uVar7 = local_40 + 1;\n            if (0x15555554 < local_40) goto LAB_0001f920;\n            iVar6 = local_3c << 2;\n            local_40 = uVar7 + (local_40 >> 1);\n            iVar4 = local_40 * 4;\n            local_3c = uVar7;\n          }\n          puVar14 = (undefined4 *)xrealloc(puVar14,iVar4);\n        }\n        else {\n          iVar6 = local_3c << 2;\n          local_3c = local_3c + 1;\n        }\n        uVar12 = uVar12 + uVar8;\n        uVar5 = xstrdup(iVar16);\n        puVar2 = PTR_readdir64_000365c0;\n        *(undefined4 *)((int)puVar14 + iVar6) = uVar5;\n        *piVar3 = 0;\n        iVar4 = (*(code *)puVar2)(param_1);\n        if (iVar4 == 0) goto LAB_0001f67c;\n      }\n      uVar7 = uVar12 + uVar8;\n      if (local_44 - uVar12 <= uVar8) {\n        if (uVar7 < uVar12) {\nLAB_0001f920:\n                    \n          xalloc_die();\n        }\n        if (puVar11 == (undefined1 *)0x0) {\n          if (uVar7 == 0) {\n            local_44 = 0x40;\n          }\n          else {\n            local_44 = uVar7;\n            if ((int)uVar7 < 0) goto LAB_0001f920;\n          }\n        }\n        else {\n          if (0x55555553 < uVar7) goto LAB_0001f920;\n          local_44 = uVar7 + 1 + (uVar7 >> 1);\n        }\n        puVar11 = (undefined1 *)xrealloc(puVar11,local_44);\n      }\n      (*(code *)PTR_memcpy_00036698)(puVar11 + uVar12,iVar16,uVar8);\n      uVar12 = uVar7;\n      goto LAB_0001f5d8;\n    }\nLAB_0001f67c:\n    iVar4 = *piVar3;\n    if (iVar4 == 0) {\n      if (iVar15 == 0) {\n        if (local_44 == uVar12) {\n          puVar11 = (undefined1 *)xrealloc(puVar11,local_44 + 1);\n          puVar13 = puVar11 + local_44;\n        }\n        else {\n          puVar13 = puVar11 + uVar12;\n        }\n      }\n      else {\n        if (local_3c == 0) {\n          puVar11 = (undefined1 *)xmalloc(uVar12 + 1);\n          puVar13 = puVar11;\n        }\n        else {\n          (*(code *)PTR_qsort_000365bc)(puVar14,local_3c,4,iVar15);\n          iVar15 = 0;\n          puVar11 = (undefined1 *)xmalloc(uVar12 + 1);\n          puVar9 = puVar14;\n          do {\n            puVar10 = puVar9 + 1;\n            iVar4 = (*(code *)PTR_stpcpy_00036680)(puVar11 + iVar15,*puVar9);\n            iVar15 = iVar15 + (iVar4 - (int)(puVar11 + iVar15)) + 1;\n            (*(code *)PTR_free_000366a0)(*puVar9);\n            puVar9 = puVar10;\n          } while (puVar14 + local_3c != puVar10);\n          puVar13 = puVar11 + iVar15;\n        }\n        (*(code *)PTR_free_000366a0)(puVar14);\n      }\n      *puVar13 = 0;\n      puVar13 = puVar11;\n    }\n    else {\n      (*(code *)PTR_free_000366a0)(puVar14);\n      puVar13 = (undefined1 *)0x0;\n      (*(code *)PTR_free_000366a0)(puVar11);\n      *piVar3 = iVar4;\n    }\n  }\n  return puVar13;\n}" { (declaration "char cVar1;" primitive_type identifier ;) (declaration "undefined *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "int *piVar3;" primitive_type (pointer_declarator "*piVar3" * identifier) ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "undefined4 uVar5;" type_identifier identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "undefined4 *puVar9;" type_identifier (pointer_declarator "*puVar9" * identifier) ;) (declaration "undefined4 *puVar10;" type_identifier (pointer_declarator "*puVar10" * identifier) ;) (declaration "undefined1 *puVar11;" type_identifier (pointer_declarator "*puVar11" * identifier) ;) (declaration "uint uVar12;" type_identifier identifier ;) (declaration "undefined1 *puVar13;" type_identifier (pointer_declarator "*puVar13" * identifier) ;) (declaration "undefined4 *puVar14;" type_identifier (pointer_declarator "*puVar14" * identifier) ;) (declaration "int iVar15;" primitive_type identifier ;) (declaration "int iVar16;" primitive_type identifier ;) (declaration "uint local_44;" type_identifier identifier ;) (declaration "uint local_40;" type_identifier identifier ;) (declaration "uint local_3c;" type_identifier identifier ;) (expression_statement "iVar15 = *(int *)(PTR_DAT_00036388 + param_2 * 4 + 0x5fe8);" (assignment_expression "iVar15 = *(int *)(PTR_DAT_00036388 + param_2 * 4 + 0x5fe8)" identifier = (pointer_expression "*(int *)(PTR_DAT_00036388 + param_2 * 4 + 0x5fe8)" * (cast_expression "(int *)(PTR_DAT_00036388 + param_2 * 4 + 0x5fe8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_00036388 + param_2 * 4 + 0x5fe8)" ( (binary_expression "PTR_DAT_00036388 + param_2 * 4 + 0x5fe8" (binary_expression "PTR_DAT_00036388 + param_2 * 4" identifier + (binary_expression "param_2 * 4" identifier * number_literal)) + number_literal) ))))) ;) (if_statement "if (param_1 == 0) {\n    puVar13 = (undefined1 *)0x0;\n  }\n  else {\n    local_3c = 0;\n    piVar3 = (int *)(*(code *)PTR___errno_location_00036604)();\n    puVar14 = (undefined4 *)0x0;\n    local_40 = 0;\n    local_44 = 0;\n    puVar11 = (undefined1 *)0x0;\n    uVar12 = 0;\nLAB_0001f5d8:\n    puVar2 = PTR_readdir64_000365c0;\n    *piVar3 = 0;\n    iVar4 = (*(code *)puVar2)(param_1);\n    if (iVar4 != 0) {\n      while( true ) {\n        cVar1 = *(char *)(iVar4 + 0x13);\n        iVar16 = iVar4 + 0x13;\n        if ((cVar1 == '.') && (cVar1 = *(char *)(iVar4 + 0x14), cVar1 == '.')) {\n          cVar1 = *(char *)(iVar4 + 0x15);\n        }\n        if (cVar1 == '\0') goto LAB_0001f5d8;\n        iVar4 = (*(code *)PTR_strlen_00036638)(iVar16);\n        uVar8 = iVar4 + 1;\n        if (iVar15 == 0) break;\n        if (local_3c == local_40) {\n          if (puVar14 == (undefined4 *)0x0) {\n            if (local_40 == 0) {\n              local_40 = 0x10;\n              iVar6 = 0;\n              local_3c = 1;\n              iVar4 = 0x40;\n            }\n            else {\n              iVar6 = local_40 << 2;\n              if ((iVar6 < 0) || (local_3c = local_40 + 1, iVar4 = iVar6, local_40 >> 0x1e != 0))\n              goto LAB_0001f920;\n            }\n          }\n          else {\n            uVar7 = local_40 + 1;\n            if (0x15555554 < local_40) goto LAB_0001f920;\n            iVar6 = local_3c << 2;\n            local_40 = uVar7 + (local_40 >> 1);\n            iVar4 = local_40 * 4;\n            local_3c = uVar7;\n          }\n          puVar14 = (undefined4 *)xrealloc(puVar14,iVar4);\n        }\n        else {\n          iVar6 = local_3c << 2;\n          local_3c = local_3c + 1;\n        }\n        uVar12 = uVar12 + uVar8;\n        uVar5 = xstrdup(iVar16);\n        puVar2 = PTR_readdir64_000365c0;\n        *(undefined4 *)((int)puVar14 + iVar6) = uVar5;\n        *piVar3 = 0;\n        iVar4 = (*(code *)puVar2)(param_1);\n        if (iVar4 == 0) goto LAB_0001f67c;\n      }\n      uVar7 = uVar12 + uVar8;\n      if (local_44 - uVar12 <= uVar8) {\n        if (uVar7 < uVar12) {\nLAB_0001f920:\n                    \n          xalloc_die();\n        }\n        if (puVar11 == (undefined1 *)0x0) {\n          if (uVar7 == 0) {\n            local_44 = 0x40;\n          }\n          else {\n            local_44 = uVar7;\n            if ((int)uVar7 < 0) goto LAB_0001f920;\n          }\n        }\n        else {\n          if (0x55555553 < uVar7) goto LAB_0001f920;\n          local_44 = uVar7 + 1 + (uVar7 >> 1);\n        }\n        puVar11 = (undefined1 *)xrealloc(puVar11,local_44);\n      }\n      (*(code *)PTR_memcpy_00036698)(puVar11 + uVar12,iVar16,uVar8);\n      uVar12 = uVar7;\n      goto LAB_0001f5d8;\n    }\nLAB_0001f67c:\n    iVar4 = *piVar3;\n    if (iVar4 == 0) {\n      if (iVar15 == 0) {\n        if (local_44 == uVar12) {\n          puVar11 = (undefined1 *)xrealloc(puVar11,local_44 + 1);\n          puVar13 = puVar11 + local_44;\n        }\n        else {\n          puVar13 = puVar11 + uVar12;\n        }\n      }\n      else {\n        if (local_3c == 0) {\n          puVar11 = (undefined1 *)xmalloc(uVar12 + 1);\n          puVar13 = puVar11;\n        }\n        else {\n          (*(code *)PTR_qsort_000365bc)(puVar14,local_3c,4,iVar15);\n          iVar15 = 0;\n          puVar11 = (undefined1 *)xmalloc(uVar12 + 1);\n          puVar9 = puVar14;\n          do {\n            puVar10 = puVar9 + 1;\n            iVar4 = (*(code *)PTR_stpcpy_00036680)(puVar11 + iVar15,*puVar9);\n            iVar15 = iVar15 + (iVar4 - (int)(puVar11 + iVar15)) + 1;\n            (*(code *)PTR_free_000366a0)(*puVar9);\n            puVar9 = puVar10;\n          } while (puVar14 + local_3c != puVar10);\n          puVar13 = puVar11 + iVar15;\n        }\n        (*(code *)PTR_free_000366a0)(puVar14);\n      }\n      *puVar13 = 0;\n      puVar13 = puVar11;\n    }\n    else {\n      (*(code *)PTR_free_000366a0)(puVar14);\n      puVar13 = (undefined1 *)0x0;\n      (*(code *)PTR_free_000366a0)(puVar11);\n      *piVar3 = iVar4;\n    }\n  }" if (parenthesized_expression "(param_1 == 0)" ( (binary_expression "param_1 == 0" identifier == number_literal) )) (compound_statement "{\n    puVar13 = (undefined1 *)0x0;\n  }" { (expression_statement "puVar13 = (undefined1 *)0x0;" (assignment_expression "puVar13 = (undefined1 *)0x0" identifier = (cast_expression "(undefined1 *)0x0" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }) (else_clause "else {\n    local_3c = 0;\n    piVar3 = (int *)(*(code *)PTR___errno_location_00036604)();\n    puVar14 = (undefined4 *)0x0;\n    local_40 = 0;\n    local_44 = 0;\n    puVar11 = (undefined1 *)0x0;\n    uVar12 = 0;\nLAB_0001f5d8:\n    puVar2 = PTR_readdir64_000365c0;\n    *piVar3 = 0;\n    iVar4 = (*(code *)puVar2)(param_1);\n    if (iVar4 != 0) {\n      while( true ) {\n        cVar1 = *(char *)(iVar4 + 0x13);\n        iVar16 = iVar4 + 0x13;\n        if ((cVar1 == '.') && (cVar1 = *(char *)(iVar4 + 0x14), cVar1 == '.')) {\n          cVar1 = *(char *)(iVar4 + 0x15);\n        }\n        if (cVar1 == '\0') goto LAB_0001f5d8;\n        iVar4 = (*(code *)PTR_strlen_00036638)(iVar16);\n        uVar8 = iVar4 + 1;\n        if (iVar15 == 0) break;\n        if (local_3c == local_40) {\n          if (puVar14 == (undefined4 *)0x0) {\n            if (local_40 == 0) {\n              local_40 = 0x10;\n              iVar6 = 0;\n              local_3c = 1;\n              iVar4 = 0x40;\n            }\n            else {\n              iVar6 = local_40 << 2;\n              if ((iVar6 < 0) || (local_3c = local_40 + 1, iVar4 = iVar6, local_40 >> 0x1e != 0))\n              goto LAB_0001f920;\n            }\n          }\n          else {\n            uVar7 = local_40 + 1;\n            if (0x15555554 < local_40) goto LAB_0001f920;\n            iVar6 = local_3c << 2;\n            local_40 = uVar7 + (local_40 >> 1);\n            iVar4 = local_40 * 4;\n            local_3c = uVar7;\n          }\n          puVar14 = (undefined4 *)xrealloc(puVar14,iVar4);\n        }\n        else {\n          iVar6 = local_3c << 2;\n          local_3c = local_3c + 1;\n        }\n        uVar12 = uVar12 + uVar8;\n        uVar5 = xstrdup(iVar16);\n        puVar2 = PTR_readdir64_000365c0;\n        *(undefined4 *)((int)puVar14 + iVar6) = uVar5;\n        *piVar3 = 0;\n        iVar4 = (*(code *)puVar2)(param_1);\n        if (iVar4 == 0) goto LAB_0001f67c;\n      }\n      uVar7 = uVar12 + uVar8;\n      if (local_44 - uVar12 <= uVar8) {\n        if (uVar7 < uVar12) {\nLAB_0001f920:\n                    \n          xalloc_die();\n        }\n        if (puVar11 == (undefined1 *)0x0) {\n          if (uVar7 == 0) {\n            local_44 = 0x40;\n          }\n          else {\n            local_44 = uVar7;\n            if ((int)uVar7 < 0) goto LAB_0001f920;\n          }\n        }\n        else {\n          if (0x55555553 < uVar7) goto LAB_0001f920;\n          local_44 = uVar7 + 1 + (uVar7 >> 1);\n        }\n        puVar11 = (undefined1 *)xrealloc(puVar11,local_44);\n      }\n      (*(code *)PTR_memcpy_00036698)(puVar11 + uVar12,iVar16,uVar8);\n      uVar12 = uVar7;\n      goto LAB_0001f5d8;\n    }\nLAB_0001f67c:\n    iVar4 = *piVar3;\n    if (iVar4 == 0) {\n      if (iVar15 == 0) {\n        if (local_44 == uVar12) {\n          puVar11 = (undefined1 *)xrealloc(puVar11,local_44 + 1);\n          puVar13 = puVar11 + local_44;\n        }\n        else {\n          puVar13 = puVar11 + uVar12;\n        }\n      }\n      else {\n        if (local_3c == 0) {\n          puVar11 = (undefined1 *)xmalloc(uVar12 + 1);\n          puVar13 = puVar11;\n        }\n        else {\n          (*(code *)PTR_qsort_000365bc)(puVar14,local_3c,4,iVar15);\n          iVar15 = 0;\n          puVar11 = (undefined1 *)xmalloc(uVar12 + 1);\n          puVar9 = puVar14;\n          do {\n            puVar10 = puVar9 + 1;\n            iVar4 = (*(code *)PTR_stpcpy_00036680)(puVar11 + iVar15,*puVar9);\n            iVar15 = iVar15 + (iVar4 - (int)(puVar11 + iVar15)) + 1;\n            (*(code *)PTR_free_000366a0)(*puVar9);\n            puVar9 = puVar10;\n          } while (puVar14 + local_3c != puVar10);\n          puVar13 = puVar11 + iVar15;\n        }\n        (*(code *)PTR_free_000366a0)(puVar14);\n      }\n      *puVar13 = 0;\n      puVar13 = puVar11;\n    }\n    else {\n      (*(code *)PTR_free_000366a0)(puVar14);\n      puVar13 = (undefined1 *)0x0;\n      (*(code *)PTR_free_000366a0)(puVar11);\n      *piVar3 = iVar4;\n    }\n  }" else (compound_statement "{\n    local_3c = 0;\n    piVar3 = (int *)(*(code *)PTR___errno_location_00036604)();\n    puVar14 = (undefined4 *)0x0;\n    local_40 = 0;\n    local_44 = 0;\n    puVar11 = (undefined1 *)0x0;\n    uVar12 = 0;\nLAB_0001f5d8:\n    puVar2 = PTR_readdir64_000365c0;\n    *piVar3 = 0;\n    iVar4 = (*(code *)puVar2)(param_1);\n    if (iVar4 != 0) {\n      while( true ) {\n        cVar1 = *(char *)(iVar4 + 0x13);\n        iVar16 = iVar4 + 0x13;\n        if ((cVar1 == '.') && (cVar1 = *(char *)(iVar4 + 0x14), cVar1 == '.')) {\n          cVar1 = *(char *)(iVar4 + 0x15);\n        }\n        if (cVar1 == '\0') goto LAB_0001f5d8;\n        iVar4 = (*(code *)PTR_strlen_00036638)(iVar16);\n        uVar8 = iVar4 + 1;\n        if (iVar15 == 0) break;\n        if (local_3c == local_40) {\n          if (puVar14 == (undefined4 *)0x0) {\n            if (local_40 == 0) {\n              local_40 = 0x10;\n              iVar6 = 0;\n              local_3c = 1;\n              iVar4 = 0x40;\n            }\n            else {\n              iVar6 = local_40 << 2;\n              if ((iVar6 < 0) || (local_3c = local_40 + 1, iVar4 = iVar6, local_40 >> 0x1e != 0))\n              goto LAB_0001f920;\n            }\n          }\n          else {\n            uVar7 = local_40 + 1;\n            if (0x15555554 < local_40) goto LAB_0001f920;\n            iVar6 = local_3c << 2;\n            local_40 = uVar7 + (local_40 >> 1);\n            iVar4 = local_40 * 4;\n            local_3c = uVar7;\n          }\n          puVar14 = (undefined4 *)xrealloc(puVar14,iVar4);\n        }\n        else {\n          iVar6 = local_3c << 2;\n          local_3c = local_3c + 1;\n        }\n        uVar12 = uVar12 + uVar8;\n        uVar5 = xstrdup(iVar16);\n        puVar2 = PTR_readdir64_000365c0;\n        *(undefined4 *)((int)puVar14 + iVar6) = uVar5;\n        *piVar3 = 0;\n        iVar4 = (*(code *)puVar2)(param_1);\n        if (iVar4 == 0) goto LAB_0001f67c;\n      }\n      uVar7 = uVar12 + uVar8;\n      if (local_44 - uVar12 <= uVar8) {\n        if (uVar7 < uVar12) {\nLAB_0001f920:\n                    \n          xalloc_die();\n        }\n        if (puVar11 == (undefined1 *)0x0) {\n          if (uVar7 == 0) {\n            local_44 = 0x40;\n          }\n          else {\n            local_44 = uVar7;\n            if ((int)uVar7 < 0) goto LAB_0001f920;\n          }\n        }\n        else {\n          if (0x55555553 < uVar7) goto LAB_0001f920;\n          local_44 = uVar7 + 1 + (uVar7 >> 1);\n        }\n        puVar11 = (undefined1 *)xrealloc(puVar11,local_44);\n      }\n      (*(code *)PTR_memcpy_00036698)(puVar11 + uVar12,iVar16,uVar8);\n      uVar12 = uVar7;\n      goto LAB_0001f5d8;\n    }\nLAB_0001f67c:\n    iVar4 = *piVar3;\n    if (iVar4 == 0) {\n      if (iVar15 == 0) {\n        if (local_44 == uVar12) {\n          puVar11 = (undefined1 *)xrealloc(puVar11,local_44 + 1);\n          puVar13 = puVar11 + local_44;\n        }\n        else {\n          puVar13 = puVar11 + uVar12;\n        }\n      }\n      else {\n        if (local_3c == 0) {\n          puVar11 = (undefined1 *)xmalloc(uVar12 + 1);\n          puVar13 = puVar11;\n        }\n        else {\n          (*(code *)PTR_qsort_000365bc)(puVar14,local_3c,4,iVar15);\n          iVar15 = 0;\n          puVar11 = (undefined1 *)xmalloc(uVar12 + 1);\n          puVar9 = puVar14;\n          do {\n            puVar10 = puVar9 + 1;\n            iVar4 = (*(code *)PTR_stpcpy_00036680)(puVar11 + iVar15,*puVar9);\n            iVar15 = iVar15 + (iVar4 - (int)(puVar11 + iVar15)) + 1;\n            (*(code *)PTR_free_000366a0)(*puVar9);\n            puVar9 = puVar10;\n          } while (puVar14 + local_3c != puVar10);\n          puVar13 = puVar11 + iVar15;\n        }\n        (*(code *)PTR_free_000366a0)(puVar14);\n      }\n      *puVar13 = 0;\n      puVar13 = puVar11;\n    }\n    else {\n      (*(code *)PTR_free_000366a0)(puVar14);\n      puVar13 = (undefined1 *)0x0;\n      (*(code *)PTR_free_000366a0)(puVar11);\n      *piVar3 = iVar4;\n    }\n  }" { (expression_statement "local_3c = 0;" (assignment_expression "local_3c = 0" identifier = number_literal) ;) (expression_statement "piVar3 = (int *)(*(code *)PTR___errno_location_00036604)();" (assignment_expression "piVar3 = (int *)(*(code *)PTR___errno_location_00036604)()" identifier = (cast_expression "(int *)(*(code *)PTR___errno_location_00036604)()" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR___errno_location_00036604)()" (parenthesized_expression "(*(code *)PTR___errno_location_00036604)" ( (pointer_expression "*(code *)PTR___errno_location_00036604" * (cast_expression "(code *)PTR___errno_location_00036604" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))))) ;) (expression_statement "puVar14 = (undefined4 *)0x0;" (assignment_expression "puVar14 = (undefined4 *)0x0" identifier = (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_40 = 0;" (assignment_expression "local_40 = 0" identifier = number_literal) ;) (expression_statement "local_44 = 0;" (assignment_expression "local_44 = 0" identifier = number_literal) ;) (expression_statement "puVar11 = (undefined1 *)0x0;" (assignment_expression "puVar11 = (undefined1 *)0x0" identifier = (cast_expression "(undefined1 *)0x0" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "uVar12 = 0;" (assignment_expression "uVar12 = 0" identifier = number_literal) ;) (labeled_statement "LAB_0001f5d8:\n    puVar2 = PTR_readdir64_000365c0;" statement_identifier : (expression_statement "puVar2 = PTR_readdir64_000365c0;" (assignment_expression "puVar2 = PTR_readdir64_000365c0" identifier = identifier) ;)) (expression_statement "*piVar3 = 0;" (assignment_expression "*piVar3 = 0" (pointer_expression "*piVar3" * identifier) = number_literal) ;) (expression_statement "iVar4 = (*(code *)puVar2)(param_1);" (assignment_expression "iVar4 = (*(code *)puVar2)(param_1)" identifier = (call_expression "(*(code *)puVar2)(param_1)" (parenthesized_expression "(*(code *)puVar2)" ( (pointer_expression "*(code *)puVar2" * (cast_expression "(code *)puVar2" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_1)" ( identifier )))) ;) (if_statement "if (iVar4 != 0) {\n      while( true ) {\n        cVar1 = *(char *)(iVar4 + 0x13);\n        iVar16 = iVar4 + 0x13;\n        if ((cVar1 == '.') && (cVar1 = *(char *)(iVar4 + 0x14), cVar1 == '.')) {\n          cVar1 = *(char *)(iVar4 + 0x15);\n        }\n        if (cVar1 == '\0') goto LAB_0001f5d8;\n        iVar4 = (*(code *)PTR_strlen_00036638)(iVar16);\n        uVar8 = iVar4 + 1;\n        if (iVar15 == 0) break;\n        if (local_3c == local_40) {\n          if (puVar14 == (undefined4 *)0x0) {\n            if (local_40 == 0) {\n              local_40 = 0x10;\n              iVar6 = 0;\n              local_3c = 1;\n              iVar4 = 0x40;\n            }\n            else {\n              iVar6 = local_40 << 2;\n              if ((iVar6 < 0) || (local_3c = local_40 + 1, iVar4 = iVar6, local_40 >> 0x1e != 0))\n              goto LAB_0001f920;\n            }\n          }\n          else {\n            uVar7 = local_40 + 1;\n            if (0x15555554 < local_40) goto LAB_0001f920;\n            iVar6 = local_3c << 2;\n            local_40 = uVar7 + (local_40 >> 1);\n            iVar4 = local_40 * 4;\n            local_3c = uVar7;\n          }\n          puVar14 = (undefined4 *)xrealloc(puVar14,iVar4);\n        }\n        else {\n          iVar6 = local_3c << 2;\n          local_3c = local_3c + 1;\n        }\n        uVar12 = uVar12 + uVar8;\n        uVar5 = xstrdup(iVar16);\n        puVar2 = PTR_readdir64_000365c0;\n        *(undefined4 *)((int)puVar14 + iVar6) = uVar5;\n        *piVar3 = 0;\n        iVar4 = (*(code *)puVar2)(param_1);\n        if (iVar4 == 0) goto LAB_0001f67c;\n      }\n      uVar7 = uVar12 + uVar8;\n      if (local_44 - uVar12 <= uVar8) {\n        if (uVar7 < uVar12) {\nLAB_0001f920:\n                    \n          xalloc_die();\n        }\n        if (puVar11 == (undefined1 *)0x0) {\n          if (uVar7 == 0) {\n            local_44 = 0x40;\n          }\n          else {\n            local_44 = uVar7;\n            if ((int)uVar7 < 0) goto LAB_0001f920;\n          }\n        }\n        else {\n          if (0x55555553 < uVar7) goto LAB_0001f920;\n          local_44 = uVar7 + 1 + (uVar7 >> 1);\n        }\n        puVar11 = (undefined1 *)xrealloc(puVar11,local_44);\n      }\n      (*(code *)PTR_memcpy_00036698)(puVar11 + uVar12,iVar16,uVar8);\n      uVar12 = uVar7;\n      goto LAB_0001f5d8;\n    }" if (parenthesized_expression "(iVar4 != 0)" ( (binary_expression "iVar4 != 0" identifier != number_literal) )) (compound_statement "{\n      while( true ) {\n        cVar1 = *(char *)(iVar4 + 0x13);\n        iVar16 = iVar4 + 0x13;\n        if ((cVar1 == '.') && (cVar1 = *(char *)(iVar4 + 0x14), cVar1 == '.')) {\n          cVar1 = *(char *)(iVar4 + 0x15);\n        }\n        if (cVar1 == '\0') goto LAB_0001f5d8;\n        iVar4 = (*(code *)PTR_strlen_00036638)(iVar16);\n        uVar8 = iVar4 + 1;\n        if (iVar15 == 0) break;\n        if (local_3c == local_40) {\n          if (puVar14 == (undefined4 *)0x0) {\n            if (local_40 == 0) {\n              local_40 = 0x10;\n              iVar6 = 0;\n              local_3c = 1;\n              iVar4 = 0x40;\n            }\n            else {\n              iVar6 = local_40 << 2;\n              if ((iVar6 < 0) || (local_3c = local_40 + 1, iVar4 = iVar6, local_40 >> 0x1e != 0))\n              goto LAB_0001f920;\n            }\n          }\n          else {\n            uVar7 = local_40 + 1;\n            if (0x15555554 < local_40) goto LAB_0001f920;\n            iVar6 = local_3c << 2;\n            local_40 = uVar7 + (local_40 >> 1);\n            iVar4 = local_40 * 4;\n            local_3c = uVar7;\n          }\n          puVar14 = (undefined4 *)xrealloc(puVar14,iVar4);\n        }\n        else {\n          iVar6 = local_3c << 2;\n          local_3c = local_3c + 1;\n        }\n        uVar12 = uVar12 + uVar8;\n        uVar5 = xstrdup(iVar16);\n        puVar2 = PTR_readdir64_000365c0;\n        *(undefined4 *)((int)puVar14 + iVar6) = uVar5;\n        *piVar3 = 0;\n        iVar4 = (*(code *)puVar2)(param_1);\n        if (iVar4 == 0) goto LAB_0001f67c;\n      }\n      uVar7 = uVar12 + uVar8;\n      if (local_44 - uVar12 <= uVar8) {\n        if (uVar7 < uVar12) {\nLAB_0001f920:\n                    \n          xalloc_die();\n        }\n        if (puVar11 == (undefined1 *)0x0) {\n          if (uVar7 == 0) {\n            local_44 = 0x40;\n          }\n          else {\n            local_44 = uVar7;\n            if ((int)uVar7 < 0) goto LAB_0001f920;\n          }\n        }\n        else {\n          if (0x55555553 < uVar7) goto LAB_0001f920;\n          local_44 = uVar7 + 1 + (uVar7 >> 1);\n        }\n        puVar11 = (undefined1 *)xrealloc(puVar11,local_44);\n      }\n      (*(code *)PTR_memcpy_00036698)(puVar11 + uVar12,iVar16,uVar8);\n      uVar12 = uVar7;\n      goto LAB_0001f5d8;\n    }" { (while_statement "while( true ) {\n        cVar1 = *(char *)(iVar4 + 0x13);\n        iVar16 = iVar4 + 0x13;\n        if ((cVar1 == '.') && (cVar1 = *(char *)(iVar4 + 0x14), cVar1 == '.')) {\n          cVar1 = *(char *)(iVar4 + 0x15);\n        }\n        if (cVar1 == '\0') goto LAB_0001f5d8;\n        iVar4 = (*(code *)PTR_strlen_00036638)(iVar16);\n        uVar8 = iVar4 + 1;\n        if (iVar15 == 0) break;\n        if (local_3c == local_40) {\n          if (puVar14 == (undefined4 *)0x0) {\n            if (local_40 == 0) {\n              local_40 = 0x10;\n              iVar6 = 0;\n              local_3c = 1;\n              iVar4 = 0x40;\n            }\n            else {\n              iVar6 = local_40 << 2;\n              if ((iVar6 < 0) || (local_3c = local_40 + 1, iVar4 = iVar6, local_40 >> 0x1e != 0))\n              goto LAB_0001f920;\n            }\n          }\n          else {\n            uVar7 = local_40 + 1;\n            if (0x15555554 < local_40) goto LAB_0001f920;\n            iVar6 = local_3c << 2;\n            local_40 = uVar7 + (local_40 >> 1);\n            iVar4 = local_40 * 4;\n            local_3c = uVar7;\n          }\n          puVar14 = (undefined4 *)xrealloc(puVar14,iVar4);\n        }\n        else {\n          iVar6 = local_3c << 2;\n          local_3c = local_3c + 1;\n        }\n        uVar12 = uVar12 + uVar8;\n        uVar5 = xstrdup(iVar16);\n        puVar2 = PTR_readdir64_000365c0;\n        *(undefined4 *)((int)puVar14 + iVar6) = uVar5;\n        *piVar3 = 0;\n        iVar4 = (*(code *)puVar2)(param_1);\n        if (iVar4 == 0) goto LAB_0001f67c;\n      }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n        cVar1 = *(char *)(iVar4 + 0x13);\n        iVar16 = iVar4 + 0x13;\n        if ((cVar1 == '.') && (cVar1 = *(char *)(iVar4 + 0x14), cVar1 == '.')) {\n          cVar1 = *(char *)(iVar4 + 0x15);\n        }\n        if (cVar1 == '\0') goto LAB_0001f5d8;\n        iVar4 = (*(code *)PTR_strlen_00036638)(iVar16);\n        uVar8 = iVar4 + 1;\n        if (iVar15 == 0) break;\n        if (local_3c == local_40) {\n          if (puVar14 == (undefined4 *)0x0) {\n            if (local_40 == 0) {\n              local_40 = 0x10;\n              iVar6 = 0;\n              local_3c = 1;\n              iVar4 = 0x40;\n            }\n            else {\n              iVar6 = local_40 << 2;\n              if ((iVar6 < 0) || (local_3c = local_40 + 1, iVar4 = iVar6, local_40 >> 0x1e != 0))\n              goto LAB_0001f920;\n            }\n          }\n          else {\n            uVar7 = local_40 + 1;\n            if (0x15555554 < local_40) goto LAB_0001f920;\n            iVar6 = local_3c << 2;\n            local_40 = uVar7 + (local_40 >> 1);\n            iVar4 = local_40 * 4;\n            local_3c = uVar7;\n          }\n          puVar14 = (undefined4 *)xrealloc(puVar14,iVar4);\n        }\n        else {\n          iVar6 = local_3c << 2;\n          local_3c = local_3c + 1;\n        }\n        uVar12 = uVar12 + uVar8;\n        uVar5 = xstrdup(iVar16);\n        puVar2 = PTR_readdir64_000365c0;\n        *(undefined4 *)((int)puVar14 + iVar6) = uVar5;\n        *piVar3 = 0;\n        iVar4 = (*(code *)puVar2)(param_1);\n        if (iVar4 == 0) goto LAB_0001f67c;\n      }" { (expression_statement "cVar1 = *(char *)(iVar4 + 0x13);" (assignment_expression "cVar1 = *(char *)(iVar4 + 0x13)" identifier = (pointer_expression "*(char *)(iVar4 + 0x13)" * (cast_expression "(char *)(iVar4 + 0x13)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x13)" ( (binary_expression "iVar4 + 0x13" identifier + number_literal) ))))) ;) (expression_statement "iVar16 = iVar4 + 0x13;" (assignment_expression "iVar16 = iVar4 + 0x13" identifier = (binary_expression "iVar4 + 0x13" identifier + number_literal)) ;) (if_statement "if ((cVar1 == '.') && (cVar1 = *(char *)(iVar4 + 0x14), cVar1 == '.')) {\n          cVar1 = *(char *)(iVar4 + 0x15);\n        }" if (parenthesized_expression "((cVar1 == '.') && (cVar1 = *(char *)(iVar4 + 0x14), cVar1 == '.'))" ( (binary_expression "(cVar1 == '.') && (cVar1 = *(char *)(iVar4 + 0x14), cVar1 == '.')" (parenthesized_expression "(cVar1 == '.')" ( (binary_expression "cVar1 == '.'" identifier == (char_literal "'.'" ' character ')) )) && (parenthesized_expression "(cVar1 = *(char *)(iVar4 + 0x14), cVar1 == '.')" ( (comma_expression "cVar1 = *(char *)(iVar4 + 0x14), cVar1 == '.'" (assignment_expression "cVar1 = *(char *)(iVar4 + 0x14)" identifier = (pointer_expression "*(char *)(iVar4 + 0x14)" * (cast_expression "(char *)(iVar4 + 0x14)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x14)" ( (binary_expression "iVar4 + 0x14" identifier + number_literal) ))))) , (binary_expression "cVar1 == '.'" identifier == (char_literal "'.'" ' character '))) ))) )) (compound_statement "{\n          cVar1 = *(char *)(iVar4 + 0x15);\n        }" { (expression_statement "cVar1 = *(char *)(iVar4 + 0x15);" (assignment_expression "cVar1 = *(char *)(iVar4 + 0x15)" identifier = (pointer_expression "*(char *)(iVar4 + 0x15)" * (cast_expression "(char *)(iVar4 + 0x15)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x15)" ( (binary_expression "iVar4 + 0x15" identifier + number_literal) ))))) ;) })) (if_statement "if (cVar1 == '\0') goto LAB_0001f5d8;" if (parenthesized_expression "(cVar1 == '\0')" ( (binary_expression "cVar1 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_0001f5d8;" goto statement_identifier ;)) (expression_statement "iVar4 = (*(code *)PTR_strlen_00036638)(iVar16);" (assignment_expression "iVar4 = (*(code *)PTR_strlen_00036638)(iVar16)" identifier = (call_expression "(*(code *)PTR_strlen_00036638)(iVar16)" (parenthesized_expression "(*(code *)PTR_strlen_00036638)" ( (pointer_expression "*(code *)PTR_strlen_00036638" * (cast_expression "(code *)PTR_strlen_00036638" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(iVar16)" ( identifier )))) ;) (expression_statement "uVar8 = iVar4 + 1;" (assignment_expression "uVar8 = iVar4 + 1" identifier = (binary_expression "iVar4 + 1" identifier + number_literal)) ;) (if_statement "if (iVar15 == 0) break;" if (parenthesized_expression "(iVar15 == 0)" ( (binary_expression "iVar15 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (if_statement "if (local_3c == local_40) {\n          if (puVar14 == (undefined4 *)0x0) {\n            if (local_40 == 0) {\n              local_40 = 0x10;\n              iVar6 = 0;\n              local_3c = 1;\n              iVar4 = 0x40;\n            }\n            else {\n              iVar6 = local_40 << 2;\n              if ((iVar6 < 0) || (local_3c = local_40 + 1, iVar4 = iVar6, local_40 >> 0x1e != 0))\n              goto LAB_0001f920;\n            }\n          }\n          else {\n            uVar7 = local_40 + 1;\n            if (0x15555554 < local_40) goto LAB_0001f920;\n            iVar6 = local_3c << 2;\n            local_40 = uVar7 + (local_40 >> 1);\n            iVar4 = local_40 * 4;\n            local_3c = uVar7;\n          }\n          puVar14 = (undefined4 *)xrealloc(puVar14,iVar4);\n        }\n        else {\n          iVar6 = local_3c << 2;\n          local_3c = local_3c + 1;\n        }" if (parenthesized_expression "(local_3c == local_40)" ( (binary_expression "local_3c == local_40" identifier == identifier) )) (compound_statement "{\n          if (puVar14 == (undefined4 *)0x0) {\n            if (local_40 == 0) {\n              local_40 = 0x10;\n              iVar6 = 0;\n              local_3c = 1;\n              iVar4 = 0x40;\n            }\n            else {\n              iVar6 = local_40 << 2;\n              if ((iVar6 < 0) || (local_3c = local_40 + 1, iVar4 = iVar6, local_40 >> 0x1e != 0))\n              goto LAB_0001f920;\n            }\n          }\n          else {\n            uVar7 = local_40 + 1;\n            if (0x15555554 < local_40) goto LAB_0001f920;\n            iVar6 = local_3c << 2;\n            local_40 = uVar7 + (local_40 >> 1);\n            iVar4 = local_40 * 4;\n            local_3c = uVar7;\n          }\n          puVar14 = (undefined4 *)xrealloc(puVar14,iVar4);\n        }" { (if_statement "if (puVar14 == (undefined4 *)0x0) {\n            if (local_40 == 0) {\n              local_40 = 0x10;\n              iVar6 = 0;\n              local_3c = 1;\n              iVar4 = 0x40;\n            }\n            else {\n              iVar6 = local_40 << 2;\n              if ((iVar6 < 0) || (local_3c = local_40 + 1, iVar4 = iVar6, local_40 >> 0x1e != 0))\n              goto LAB_0001f920;\n            }\n          }\n          else {\n            uVar7 = local_40 + 1;\n            if (0x15555554 < local_40) goto LAB_0001f920;\n            iVar6 = local_3c << 2;\n            local_40 = uVar7 + (local_40 >> 1);\n            iVar4 = local_40 * 4;\n            local_3c = uVar7;\n          }" if (parenthesized_expression "(puVar14 == (undefined4 *)0x0)" ( (binary_expression "puVar14 == (undefined4 *)0x0" identifier == (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            if (local_40 == 0) {\n              local_40 = 0x10;\n              iVar6 = 0;\n              local_3c = 1;\n              iVar4 = 0x40;\n            }\n            else {\n              iVar6 = local_40 << 2;\n              if ((iVar6 < 0) || (local_3c = local_40 + 1, iVar4 = iVar6, local_40 >> 0x1e != 0))\n              goto LAB_0001f920;\n            }\n          }" { (if_statement "if (local_40 == 0) {\n              local_40 = 0x10;\n              iVar6 = 0;\n              local_3c = 1;\n              iVar4 = 0x40;\n            }\n            else {\n              iVar6 = local_40 << 2;\n              if ((iVar6 < 0) || (local_3c = local_40 + 1, iVar4 = iVar6, local_40 >> 0x1e != 0))\n              goto LAB_0001f920;\n            }" if (parenthesized_expression "(local_40 == 0)" ( (binary_expression "local_40 == 0" identifier == number_literal) )) (compound_statement "{\n              local_40 = 0x10;\n              iVar6 = 0;\n              local_3c = 1;\n              iVar4 = 0x40;\n            }" { (expression_statement "local_40 = 0x10;" (assignment_expression "local_40 = 0x10" identifier = number_literal) ;) (expression_statement "iVar6 = 0;" (assignment_expression "iVar6 = 0" identifier = number_literal) ;) (expression_statement "local_3c = 1;" (assignment_expression "local_3c = 1" identifier = number_literal) ;) (expression_statement "iVar4 = 0x40;" (assignment_expression "iVar4 = 0x40" identifier = number_literal) ;) }) (else_clause "else {\n              iVar6 = local_40 << 2;\n              if ((iVar6 < 0) || (local_3c = local_40 + 1, iVar4 = iVar6, local_40 >> 0x1e != 0))\n              goto LAB_0001f920;\n            }" else (compound_statement "{\n              iVar6 = local_40 << 2;\n              if ((iVar6 < 0) || (local_3c = local_40 + 1, iVar4 = iVar6, local_40 >> 0x1e != 0))\n              goto LAB_0001f920;\n            }" { (expression_statement "iVar6 = local_40 << 2;" (assignment_expression "iVar6 = local_40 << 2" identifier = (binary_expression "local_40 << 2" identifier << number_literal)) ;) (if_statement "if ((iVar6 < 0) || (local_3c = local_40 + 1, iVar4 = iVar6, local_40 >> 0x1e != 0))\n              goto LAB_0001f920;" if (parenthesized_expression "((iVar6 < 0) || (local_3c = local_40 + 1, iVar4 = iVar6, local_40 >> 0x1e != 0))" ( (binary_expression "(iVar6 < 0) || (local_3c = local_40 + 1, iVar4 = iVar6, local_40 >> 0x1e != 0)" (parenthesized_expression "(iVar6 < 0)" ( (binary_expression "iVar6 < 0" identifier < number_literal) )) || (parenthesized_expression "(local_3c = local_40 + 1, iVar4 = iVar6, local_40 >> 0x1e != 0)" ( (comma_expression "local_3c = local_40 + 1, iVar4 = iVar6, local_40 >> 0x1e != 0" (assignment_expression "local_3c = local_40 + 1" identifier = (binary_expression "local_40 + 1" identifier + number_literal)) , (comma_expression "iVar4 = iVar6, local_40 >> 0x1e != 0" (assignment_expression "iVar4 = iVar6" identifier = identifier) , (binary_expression "local_40 >> 0x1e != 0" (binary_expression "local_40 >> 0x1e" identifier >> number_literal) != number_literal))) ))) )) (goto_statement "goto LAB_0001f920;" goto statement_identifier ;)) }))) }) (else_clause "else {\n            uVar7 = local_40 + 1;\n            if (0x15555554 < local_40) goto LAB_0001f920;\n            iVar6 = local_3c << 2;\n            local_40 = uVar7 + (local_40 >> 1);\n            iVar4 = local_40 * 4;\n            local_3c = uVar7;\n          }" else (compound_statement "{\n            uVar7 = local_40 + 1;\n            if (0x15555554 < local_40) goto LAB_0001f920;\n            iVar6 = local_3c << 2;\n            local_40 = uVar7 + (local_40 >> 1);\n            iVar4 = local_40 * 4;\n            local_3c = uVar7;\n          }" { (expression_statement "uVar7 = local_40 + 1;" (assignment_expression "uVar7 = local_40 + 1" identifier = (binary_expression "local_40 + 1" identifier + number_literal)) ;) (if_statement "if (0x15555554 < local_40) goto LAB_0001f920;" if (parenthesized_expression "(0x15555554 < local_40)" ( (binary_expression "0x15555554 < local_40" number_literal < identifier) )) (goto_statement "goto LAB_0001f920;" goto statement_identifier ;)) (expression_statement "iVar6 = local_3c << 2;" (assignment_expression "iVar6 = local_3c << 2" identifier = (binary_expression "local_3c << 2" identifier << number_literal)) ;) (expression_statement "local_40 = uVar7 + (local_40 >> 1);" (assignment_expression "local_40 = uVar7 + (local_40 >> 1)" identifier = (binary_expression "uVar7 + (local_40 >> 1)" identifier + (parenthesized_expression "(local_40 >> 1)" ( (binary_expression "local_40 >> 1" identifier >> number_literal) )))) ;) (expression_statement "iVar4 = local_40 * 4;" (assignment_expression "iVar4 = local_40 * 4" identifier = (binary_expression "local_40 * 4" identifier * number_literal)) ;) (expression_statement "local_3c = uVar7;" (assignment_expression "local_3c = uVar7" identifier = identifier) ;) }))) (expression_statement "puVar14 = (undefined4 *)xrealloc(puVar14,iVar4);" (assignment_expression "puVar14 = (undefined4 *)xrealloc(puVar14,iVar4)" identifier = (cast_expression "(undefined4 *)xrealloc(puVar14,iVar4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "xrealloc(puVar14,iVar4)" identifier (argument_list "(puVar14,iVar4)" ( identifier , identifier ))))) ;) }) (else_clause "else {\n          iVar6 = local_3c << 2;\n          local_3c = local_3c + 1;\n        }" else (compound_statement "{\n          iVar6 = local_3c << 2;\n          local_3c = local_3c + 1;\n        }" { (expression_statement "iVar6 = local_3c << 2;" (assignment_expression "iVar6 = local_3c << 2" identifier = (binary_expression "local_3c << 2" identifier << number_literal)) ;) (expression_statement "local_3c = local_3c + 1;" (assignment_expression "local_3c = local_3c + 1" identifier = (binary_expression "local_3c + 1" identifier + number_literal)) ;) }))) (expression_statement "uVar12 = uVar12 + uVar8;" (assignment_expression "uVar12 = uVar12 + uVar8" identifier = (binary_expression "uVar12 + uVar8" identifier + identifier)) ;) (expression_statement "uVar5 = xstrdup(iVar16);" (assignment_expression "uVar5 = xstrdup(iVar16)" identifier = (call_expression "xstrdup(iVar16)" identifier (argument_list "(iVar16)" ( identifier )))) ;) (expression_statement "puVar2 = PTR_readdir64_000365c0;" (assignment_expression "puVar2 = PTR_readdir64_000365c0" identifier = identifier) ;) (expression_statement "*(undefined4 *)((int)puVar14 + iVar6) = uVar5;" (assignment_expression "*(undefined4 *)((int)puVar14 + iVar6) = uVar5" (pointer_expression "*(undefined4 *)((int)puVar14 + iVar6)" * (cast_expression "(undefined4 *)((int)puVar14 + iVar6)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar14 + iVar6)" ( (binary_expression "(int)puVar14 + iVar6" (cast_expression "(int)puVar14" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) = identifier) ;) (expression_statement "*piVar3 = 0;" (assignment_expression "*piVar3 = 0" (pointer_expression "*piVar3" * identifier) = number_literal) ;) (expression_statement "iVar4 = (*(code *)puVar2)(param_1);" (assignment_expression "iVar4 = (*(code *)puVar2)(param_1)" identifier = (call_expression "(*(code *)puVar2)(param_1)" (parenthesized_expression "(*(code *)puVar2)" ( (pointer_expression "*(code *)puVar2" * (cast_expression "(code *)puVar2" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_1)" ( identifier )))) ;) (if_statement "if (iVar4 == 0) goto LAB_0001f67c;" if (parenthesized_expression "(iVar4 == 0)" ( (binary_expression "iVar4 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0001f67c;" goto statement_identifier ;)) })) (expression_statement "uVar7 = uVar12 + uVar8;" (assignment_expression "uVar7 = uVar12 + uVar8" identifier = (binary_expression "uVar12 + uVar8" identifier + identifier)) ;) (if_statement "if (local_44 - uVar12 <= uVar8) {\n        if (uVar7 < uVar12) {\nLAB_0001f920:\n                    \n          xalloc_die();\n        }\n        if (puVar11 == (undefined1 *)0x0) {\n          if (uVar7 == 0) {\n            local_44 = 0x40;\n          }\n          else {\n            local_44 = uVar7;\n            if ((int)uVar7 < 0) goto LAB_0001f920;\n          }\n        }\n        else {\n          if (0x55555553 < uVar7) goto LAB_0001f920;\n          local_44 = uVar7 + 1 + (uVar7 >> 1);\n        }\n        puVar11 = (undefined1 *)xrealloc(puVar11,local_44);\n      }" if (parenthesized_expression "(local_44 - uVar12 <= uVar8)" ( (binary_expression "local_44 - uVar12 <= uVar8" (binary_expression "local_44 - uVar12" identifier - identifier) <= identifier) )) (compound_statement "{\n        if (uVar7 < uVar12) {\nLAB_0001f920:\n                    \n          xalloc_die();\n        }\n        if (puVar11 == (undefined1 *)0x0) {\n          if (uVar7 == 0) {\n            local_44 = 0x40;\n          }\n          else {\n            local_44 = uVar7;\n            if ((int)uVar7 < 0) goto LAB_0001f920;\n          }\n        }\n        else {\n          if (0x55555553 < uVar7) goto LAB_0001f920;\n          local_44 = uVar7 + 1 + (uVar7 >> 1);\n        }\n        puVar11 = (undefined1 *)xrealloc(puVar11,local_44);\n      }" { (if_statement "if (uVar7 < uVar12) {\nLAB_0001f920:\n                    \n          xalloc_die();\n        }" if (parenthesized_expression "(uVar7 < uVar12)" ( (binary_expression "uVar7 < uVar12" identifier < identifier) )) (compound_statement "{\nLAB_0001f920:\n                    \n          xalloc_die();\n        }" { (labeled_statement "LAB_0001f920:\n                    \n          xalloc_die();" statement_identifier : (expression_statement "xalloc_die();" (call_expression "xalloc_die()" identifier (argument_list "()" ( ))) ;)) })) (if_statement "if (puVar11 == (undefined1 *)0x0) {\n          if (uVar7 == 0) {\n            local_44 = 0x40;\n          }\n          else {\n            local_44 = uVar7;\n            if ((int)uVar7 < 0) goto LAB_0001f920;\n          }\n        }\n        else {\n          if (0x55555553 < uVar7) goto LAB_0001f920;\n          local_44 = uVar7 + 1 + (uVar7 >> 1);\n        }" if (parenthesized_expression "(puVar11 == (undefined1 *)0x0)" ( (binary_expression "puVar11 == (undefined1 *)0x0" identifier == (cast_expression "(undefined1 *)0x0" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          if (uVar7 == 0) {\n            local_44 = 0x40;\n          }\n          else {\n            local_44 = uVar7;\n            if ((int)uVar7 < 0) goto LAB_0001f920;\n          }\n        }" { (if_statement "if (uVar7 == 0) {\n            local_44 = 0x40;\n          }\n          else {\n            local_44 = uVar7;\n            if ((int)uVar7 < 0) goto LAB_0001f920;\n          }" if (parenthesized_expression "(uVar7 == 0)" ( (binary_expression "uVar7 == 0" identifier == number_literal) )) (compound_statement "{\n            local_44 = 0x40;\n          }" { (expression_statement "local_44 = 0x40;" (assignment_expression "local_44 = 0x40" identifier = number_literal) ;) }) (else_clause "else {\n            local_44 = uVar7;\n            if ((int)uVar7 < 0) goto LAB_0001f920;\n          }" else (compound_statement "{\n            local_44 = uVar7;\n            if ((int)uVar7 < 0) goto LAB_0001f920;\n          }" { (expression_statement "local_44 = uVar7;" (assignment_expression "local_44 = uVar7" identifier = identifier) ;) (if_statement "if ((int)uVar7 < 0) goto LAB_0001f920;" if (parenthesized_expression "((int)uVar7 < 0)" ( (binary_expression "(int)uVar7 < 0" (cast_expression "(int)uVar7" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (goto_statement "goto LAB_0001f920;" goto statement_identifier ;)) }))) }) (else_clause "else {\n          if (0x55555553 < uVar7) goto LAB_0001f920;\n          local_44 = uVar7 + 1 + (uVar7 >> 1);\n        }" else (compound_statement "{\n          if (0x55555553 < uVar7) goto LAB_0001f920;\n          local_44 = uVar7 + 1 + (uVar7 >> 1);\n        }" { (if_statement "if (0x55555553 < uVar7) goto LAB_0001f920;" if (parenthesized_expression "(0x55555553 < uVar7)" ( (binary_expression "0x55555553 < uVar7" number_literal < identifier) )) (goto_statement "goto LAB_0001f920;" goto statement_identifier ;)) (expression_statement "local_44 = uVar7 + 1 + (uVar7 >> 1);" (assignment_expression "local_44 = uVar7 + 1 + (uVar7 >> 1)" identifier = (binary_expression "uVar7 + 1 + (uVar7 >> 1)" (binary_expression "uVar7 + 1" identifier + number_literal) + (parenthesized_expression "(uVar7 >> 1)" ( (binary_expression "uVar7 >> 1" identifier >> number_literal) )))) ;) }))) (expression_statement "puVar11 = (undefined1 *)xrealloc(puVar11,local_44);" (assignment_expression "puVar11 = (undefined1 *)xrealloc(puVar11,local_44)" identifier = (cast_expression "(undefined1 *)xrealloc(puVar11,local_44)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "xrealloc(puVar11,local_44)" identifier (argument_list "(puVar11,local_44)" ( identifier , identifier ))))) ;) })) (expression_statement "(*(code *)PTR_memcpy_00036698)(puVar11 + uVar12,iVar16,uVar8);" (call_expression "(*(code *)PTR_memcpy_00036698)(puVar11 + uVar12,iVar16,uVar8)" (parenthesized_expression "(*(code *)PTR_memcpy_00036698)" ( (pointer_expression "*(code *)PTR_memcpy_00036698" * (cast_expression "(code *)PTR_memcpy_00036698" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(puVar11 + uVar12,iVar16,uVar8)" ( (binary_expression "puVar11 + uVar12" identifier + identifier) , identifier , identifier ))) ;) (expression_statement "uVar12 = uVar7;" (assignment_expression "uVar12 = uVar7" identifier = identifier) ;) (goto_statement "goto LAB_0001f5d8;" goto statement_identifier ;) })) (labeled_statement "LAB_0001f67c:\n    iVar4 = *piVar3;" statement_identifier : (expression_statement "iVar4 = *piVar3;" (assignment_expression "iVar4 = *piVar3" identifier = (pointer_expression "*piVar3" * identifier)) ;)) (if_statement "if (iVar4 == 0) {\n      if (iVar15 == 0) {\n        if (local_44 == uVar12) {\n          puVar11 = (undefined1 *)xrealloc(puVar11,local_44 + 1);\n          puVar13 = puVar11 + local_44;\n        }\n        else {\n          puVar13 = puVar11 + uVar12;\n        }\n      }\n      else {\n        if (local_3c == 0) {\n          puVar11 = (undefined1 *)xmalloc(uVar12 + 1);\n          puVar13 = puVar11;\n        }\n        else {\n          (*(code *)PTR_qsort_000365bc)(puVar14,local_3c,4,iVar15);\n          iVar15 = 0;\n          puVar11 = (undefined1 *)xmalloc(uVar12 + 1);\n          puVar9 = puVar14;\n          do {\n            puVar10 = puVar9 + 1;\n            iVar4 = (*(code *)PTR_stpcpy_00036680)(puVar11 + iVar15,*puVar9);\n            iVar15 = iVar15 + (iVar4 - (int)(puVar11 + iVar15)) + 1;\n            (*(code *)PTR_free_000366a0)(*puVar9);\n            puVar9 = puVar10;\n          } while (puVar14 + local_3c != puVar10);\n          puVar13 = puVar11 + iVar15;\n        }\n        (*(code *)PTR_free_000366a0)(puVar14);\n      }\n      *puVar13 = 0;\n      puVar13 = puVar11;\n    }\n    else {\n      (*(code *)PTR_free_000366a0)(puVar14);\n      puVar13 = (undefined1 *)0x0;\n      (*(code *)PTR_free_000366a0)(puVar11);\n      *piVar3 = iVar4;\n    }" if (parenthesized_expression "(iVar4 == 0)" ( (binary_expression "iVar4 == 0" identifier == number_literal) )) (compound_statement "{\n      if (iVar15 == 0) {\n        if (local_44 == uVar12) {\n          puVar11 = (undefined1 *)xrealloc(puVar11,local_44 + 1);\n          puVar13 = puVar11 + local_44;\n        }\n        else {\n          puVar13 = puVar11 + uVar12;\n        }\n      }\n      else {\n        if (local_3c == 0) {\n          puVar11 = (undefined1 *)xmalloc(uVar12 + 1);\n          puVar13 = puVar11;\n        }\n        else {\n          (*(code *)PTR_qsort_000365bc)(puVar14,local_3c,4,iVar15);\n          iVar15 = 0;\n          puVar11 = (undefined1 *)xmalloc(uVar12 + 1);\n          puVar9 = puVar14;\n          do {\n            puVar10 = puVar9 + 1;\n            iVar4 = (*(code *)PTR_stpcpy_00036680)(puVar11 + iVar15,*puVar9);\n            iVar15 = iVar15 + (iVar4 - (int)(puVar11 + iVar15)) + 1;\n            (*(code *)PTR_free_000366a0)(*puVar9);\n            puVar9 = puVar10;\n          } while (puVar14 + local_3c != puVar10);\n          puVar13 = puVar11 + iVar15;\n        }\n        (*(code *)PTR_free_000366a0)(puVar14);\n      }\n      *puVar13 = 0;\n      puVar13 = puVar11;\n    }" { (if_statement "if (iVar15 == 0) {\n        if (local_44 == uVar12) {\n          puVar11 = (undefined1 *)xrealloc(puVar11,local_44 + 1);\n          puVar13 = puVar11 + local_44;\n        }\n        else {\n          puVar13 = puVar11 + uVar12;\n        }\n      }\n      else {\n        if (local_3c == 0) {\n          puVar11 = (undefined1 *)xmalloc(uVar12 + 1);\n          puVar13 = puVar11;\n        }\n        else {\n          (*(code *)PTR_qsort_000365bc)(puVar14,local_3c,4,iVar15);\n          iVar15 = 0;\n          puVar11 = (undefined1 *)xmalloc(uVar12 + 1);\n          puVar9 = puVar14;\n          do {\n            puVar10 = puVar9 + 1;\n            iVar4 = (*(code *)PTR_stpcpy_00036680)(puVar11 + iVar15,*puVar9);\n            iVar15 = iVar15 + (iVar4 - (int)(puVar11 + iVar15)) + 1;\n            (*(code *)PTR_free_000366a0)(*puVar9);\n            puVar9 = puVar10;\n          } while (puVar14 + local_3c != puVar10);\n          puVar13 = puVar11 + iVar15;\n        }\n        (*(code *)PTR_free_000366a0)(puVar14);\n      }" if (parenthesized_expression "(iVar15 == 0)" ( (binary_expression "iVar15 == 0" identifier == number_literal) )) (compound_statement "{\n        if (local_44 == uVar12) {\n          puVar11 = (undefined1 *)xrealloc(puVar11,local_44 + 1);\n          puVar13 = puVar11 + local_44;\n        }\n        else {\n          puVar13 = puVar11 + uVar12;\n        }\n      }" { (if_statement "if (local_44 == uVar12) {\n          puVar11 = (undefined1 *)xrealloc(puVar11,local_44 + 1);\n          puVar13 = puVar11 + local_44;\n        }\n        else {\n          puVar13 = puVar11 + uVar12;\n        }" if (parenthesized_expression "(local_44 == uVar12)" ( (binary_expression "local_44 == uVar12" identifier == identifier) )) (compound_statement "{\n          puVar11 = (undefined1 *)xrealloc(puVar11,local_44 + 1);\n          puVar13 = puVar11 + local_44;\n        }" { (expression_statement "puVar11 = (undefined1 *)xrealloc(puVar11,local_44 + 1);" (assignment_expression "puVar11 = (undefined1 *)xrealloc(puVar11,local_44 + 1)" identifier = (cast_expression "(undefined1 *)xrealloc(puVar11,local_44 + 1)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "xrealloc(puVar11,local_44 + 1)" identifier (argument_list "(puVar11,local_44 + 1)" ( identifier , (binary_expression "local_44 + 1" identifier + number_literal) ))))) ;) (expression_statement "puVar13 = puVar11 + local_44;" (assignment_expression "puVar13 = puVar11 + local_44" identifier = (binary_expression "puVar11 + local_44" identifier + identifier)) ;) }) (else_clause "else {\n          puVar13 = puVar11 + uVar12;\n        }" else (compound_statement "{\n          puVar13 = puVar11 + uVar12;\n        }" { (expression_statement "puVar13 = puVar11 + uVar12;" (assignment_expression "puVar13 = puVar11 + uVar12" identifier = (binary_expression "puVar11 + uVar12" identifier + identifier)) ;) }))) }) (else_clause "else {\n        if (local_3c == 0) {\n          puVar11 = (undefined1 *)xmalloc(uVar12 + 1);\n          puVar13 = puVar11;\n        }\n        else {\n          (*(code *)PTR_qsort_000365bc)(puVar14,local_3c,4,iVar15);\n          iVar15 = 0;\n          puVar11 = (undefined1 *)xmalloc(uVar12 + 1);\n          puVar9 = puVar14;\n          do {\n            puVar10 = puVar9 + 1;\n            iVar4 = (*(code *)PTR_stpcpy_00036680)(puVar11 + iVar15,*puVar9);\n            iVar15 = iVar15 + (iVar4 - (int)(puVar11 + iVar15)) + 1;\n            (*(code *)PTR_free_000366a0)(*puVar9);\n            puVar9 = puVar10;\n          } while (puVar14 + local_3c != puVar10);\n          puVar13 = puVar11 + iVar15;\n        }\n        (*(code *)PTR_free_000366a0)(puVar14);\n      }" else (compound_statement "{\n        if (local_3c == 0) {\n          puVar11 = (undefined1 *)xmalloc(uVar12 + 1);\n          puVar13 = puVar11;\n        }\n        else {\n          (*(code *)PTR_qsort_000365bc)(puVar14,local_3c,4,iVar15);\n          iVar15 = 0;\n          puVar11 = (undefined1 *)xmalloc(uVar12 + 1);\n          puVar9 = puVar14;\n          do {\n            puVar10 = puVar9 + 1;\n            iVar4 = (*(code *)PTR_stpcpy_00036680)(puVar11 + iVar15,*puVar9);\n            iVar15 = iVar15 + (iVar4 - (int)(puVar11 + iVar15)) + 1;\n            (*(code *)PTR_free_000366a0)(*puVar9);\n            puVar9 = puVar10;\n          } while (puVar14 + local_3c != puVar10);\n          puVar13 = puVar11 + iVar15;\n        }\n        (*(code *)PTR_free_000366a0)(puVar14);\n      }" { (if_statement "if (local_3c == 0) {\n          puVar11 = (undefined1 *)xmalloc(uVar12 + 1);\n          puVar13 = puVar11;\n        }\n        else {\n          (*(code *)PTR_qsort_000365bc)(puVar14,local_3c,4,iVar15);\n          iVar15 = 0;\n          puVar11 = (undefined1 *)xmalloc(uVar12 + 1);\n          puVar9 = puVar14;\n          do {\n            puVar10 = puVar9 + 1;\n            iVar4 = (*(code *)PTR_stpcpy_00036680)(puVar11 + iVar15,*puVar9);\n            iVar15 = iVar15 + (iVar4 - (int)(puVar11 + iVar15)) + 1;\n            (*(code *)PTR_free_000366a0)(*puVar9);\n            puVar9 = puVar10;\n          } while (puVar14 + local_3c != puVar10);\n          puVar13 = puVar11 + iVar15;\n        }" if (parenthesized_expression "(local_3c == 0)" ( (binary_expression "local_3c == 0" identifier == number_literal) )) (compound_statement "{\n          puVar11 = (undefined1 *)xmalloc(uVar12 + 1);\n          puVar13 = puVar11;\n        }" { (expression_statement "puVar11 = (undefined1 *)xmalloc(uVar12 + 1);" (assignment_expression "puVar11 = (undefined1 *)xmalloc(uVar12 + 1)" identifier = (cast_expression "(undefined1 *)xmalloc(uVar12 + 1)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(uVar12 + 1)" identifier (argument_list "(uVar12 + 1)" ( (binary_expression "uVar12 + 1" identifier + number_literal) ))))) ;) (expression_statement "puVar13 = puVar11;" (assignment_expression "puVar13 = puVar11" identifier = identifier) ;) }) (else_clause "else {\n          (*(code *)PTR_qsort_000365bc)(puVar14,local_3c,4,iVar15);\n          iVar15 = 0;\n          puVar11 = (undefined1 *)xmalloc(uVar12 + 1);\n          puVar9 = puVar14;\n          do {\n            puVar10 = puVar9 + 1;\n            iVar4 = (*(code *)PTR_stpcpy_00036680)(puVar11 + iVar15,*puVar9);\n            iVar15 = iVar15 + (iVar4 - (int)(puVar11 + iVar15)) + 1;\n            (*(code *)PTR_free_000366a0)(*puVar9);\n            puVar9 = puVar10;\n          } while (puVar14 + local_3c != puVar10);\n          puVar13 = puVar11 + iVar15;\n        }" else (compound_statement "{\n          (*(code *)PTR_qsort_000365bc)(puVar14,local_3c,4,iVar15);\n          iVar15 = 0;\n          puVar11 = (undefined1 *)xmalloc(uVar12 + 1);\n          puVar9 = puVar14;\n          do {\n            puVar10 = puVar9 + 1;\n            iVar4 = (*(code *)PTR_stpcpy_00036680)(puVar11 + iVar15,*puVar9);\n            iVar15 = iVar15 + (iVar4 - (int)(puVar11 + iVar15)) + 1;\n            (*(code *)PTR_free_000366a0)(*puVar9);\n            puVar9 = puVar10;\n          } while (puVar14 + local_3c != puVar10);\n          puVar13 = puVar11 + iVar15;\n        }" { (expression_statement "(*(code *)PTR_qsort_000365bc)(puVar14,local_3c,4,iVar15);" (call_expression "(*(code *)PTR_qsort_000365bc)(puVar14,local_3c,4,iVar15)" (parenthesized_expression "(*(code *)PTR_qsort_000365bc)" ( (pointer_expression "*(code *)PTR_qsort_000365bc" * (cast_expression "(code *)PTR_qsort_000365bc" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(puVar14,local_3c,4,iVar15)" ( identifier , identifier , number_literal , identifier ))) ;) (expression_statement "iVar15 = 0;" (assignment_expression "iVar15 = 0" identifier = number_literal) ;) (expression_statement "puVar11 = (undefined1 *)xmalloc(uVar12 + 1);" (assignment_expression "puVar11 = (undefined1 *)xmalloc(uVar12 + 1)" identifier = (cast_expression "(undefined1 *)xmalloc(uVar12 + 1)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(uVar12 + 1)" identifier (argument_list "(uVar12 + 1)" ( (binary_expression "uVar12 + 1" identifier + number_literal) ))))) ;) (expression_statement "puVar9 = puVar14;" (assignment_expression "puVar9 = puVar14" identifier = identifier) ;) (do_statement "do {\n            puVar10 = puVar9 + 1;\n            iVar4 = (*(code *)PTR_stpcpy_00036680)(puVar11 + iVar15,*puVar9);\n            iVar15 = iVar15 + (iVar4 - (int)(puVar11 + iVar15)) + 1;\n            (*(code *)PTR_free_000366a0)(*puVar9);\n            puVar9 = puVar10;\n          } while (puVar14 + local_3c != puVar10);" do (compound_statement "{\n            puVar10 = puVar9 + 1;\n            iVar4 = (*(code *)PTR_stpcpy_00036680)(puVar11 + iVar15,*puVar9);\n            iVar15 = iVar15 + (iVar4 - (int)(puVar11 + iVar15)) + 1;\n            (*(code *)PTR_free_000366a0)(*puVar9);\n            puVar9 = puVar10;\n          }" { (expression_statement "puVar10 = puVar9 + 1;" (assignment_expression "puVar10 = puVar9 + 1" identifier = (binary_expression "puVar9 + 1" identifier + number_literal)) ;) (expression_statement "iVar4 = (*(code *)PTR_stpcpy_00036680)(puVar11 + iVar15,*puVar9);" (assignment_expression "iVar4 = (*(code *)PTR_stpcpy_00036680)(puVar11 + iVar15,*puVar9)" identifier = (call_expression "(*(code *)PTR_stpcpy_00036680)(puVar11 + iVar15,*puVar9)" (parenthesized_expression "(*(code *)PTR_stpcpy_00036680)" ( (pointer_expression "*(code *)PTR_stpcpy_00036680" * (cast_expression "(code *)PTR_stpcpy_00036680" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(puVar11 + iVar15,*puVar9)" ( (binary_expression "puVar11 + iVar15" identifier + identifier) , (pointer_expression "*puVar9" * identifier) )))) ;) (expression_statement "iVar15 = iVar15 + (iVar4 - (int)(puVar11 + iVar15)) + 1;" (assignment_expression "iVar15 = iVar15 + (iVar4 - (int)(puVar11 + iVar15)) + 1" identifier = (binary_expression "iVar15 + (iVar4 - (int)(puVar11 + iVar15)) + 1" (binary_expression "iVar15 + (iVar4 - (int)(puVar11 + iVar15))" identifier + (parenthesized_expression "(iVar4 - (int)(puVar11 + iVar15))" ( (binary_expression "iVar4 - (int)(puVar11 + iVar15)" identifier - (cast_expression "(int)(puVar11 + iVar15)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(puVar11 + iVar15)" ( (binary_expression "puVar11 + iVar15" identifier + identifier) )))) ))) + number_literal)) ;) (expression_statement "(*(code *)PTR_free_000366a0)(*puVar9);" (call_expression "(*(code *)PTR_free_000366a0)(*puVar9)" (parenthesized_expression "(*(code *)PTR_free_000366a0)" ( (pointer_expression "*(code *)PTR_free_000366a0" * (cast_expression "(code *)PTR_free_000366a0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(*puVar9)" ( (pointer_expression "*puVar9" * identifier) ))) ;) (expression_statement "puVar9 = puVar10;" (assignment_expression "puVar9 = puVar10" identifier = identifier) ;) }) while (parenthesized_expression "(puVar14 + local_3c != puVar10)" ( (binary_expression "puVar14 + local_3c != puVar10" (binary_expression "puVar14 + local_3c" identifier + identifier) != identifier) )) ;) (expression_statement "puVar13 = puVar11 + iVar15;" (assignment_expression "puVar13 = puVar11 + iVar15" identifier = (binary_expression "puVar11 + iVar15" identifier + identifier)) ;) }))) (expression_statement "(*(code *)PTR_free_000366a0)(puVar14);" (call_expression "(*(code *)PTR_free_000366a0)(puVar14)" (parenthesized_expression "(*(code *)PTR_free_000366a0)" ( (pointer_expression "*(code *)PTR_free_000366a0" * (cast_expression "(code *)PTR_free_000366a0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(puVar14)" ( identifier ))) ;) }))) (expression_statement "*puVar13 = 0;" (assignment_expression "*puVar13 = 0" (pointer_expression "*puVar13" * identifier) = number_literal) ;) (expression_statement "puVar13 = puVar11;" (assignment_expression "puVar13 = puVar11" identifier = identifier) ;) }) (else_clause "else {\n      (*(code *)PTR_free_000366a0)(puVar14);\n      puVar13 = (undefined1 *)0x0;\n      (*(code *)PTR_free_000366a0)(puVar11);\n      *piVar3 = iVar4;\n    }" else (compound_statement "{\n      (*(code *)PTR_free_000366a0)(puVar14);\n      puVar13 = (undefined1 *)0x0;\n      (*(code *)PTR_free_000366a0)(puVar11);\n      *piVar3 = iVar4;\n    }" { (expression_statement "(*(code *)PTR_free_000366a0)(puVar14);" (call_expression "(*(code *)PTR_free_000366a0)(puVar14)" (parenthesized_expression "(*(code *)PTR_free_000366a0)" ( (pointer_expression "*(code *)PTR_free_000366a0" * (cast_expression "(code *)PTR_free_000366a0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(puVar14)" ( identifier ))) ;) (expression_statement "puVar13 = (undefined1 *)0x0;" (assignment_expression "puVar13 = (undefined1 *)0x0" identifier = (cast_expression "(undefined1 *)0x0" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "(*(code *)PTR_free_000366a0)(puVar11);" (call_expression "(*(code *)PTR_free_000366a0)(puVar11)" (parenthesized_expression "(*(code *)PTR_free_000366a0)" ( (pointer_expression "*(code *)PTR_free_000366a0" * (cast_expression "(code *)PTR_free_000366a0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(puVar11)" ( identifier ))) ;) (expression_statement "*piVar3 = iVar4;" (assignment_expression "*piVar3 = iVar4" (pointer_expression "*piVar3" * identifier) = identifier) ;) }))) }))) (return_statement "return puVar13;" return identifier ;) })))
(translation_unit (function_definition TYPE (pointer_declarator * (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) )))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + (binary_expression IDENT * LIT)) + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = 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 ( ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = IDENT) ;)) (expression_statement (assignment_expression (pointer_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 ( IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == (char_literal ' character ')) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) , (binary_expression IDENT == (char_literal ' character '))) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (char_literal ' escape_sequence ')) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT << LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT < LIT) )) || (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (binary_expression IDENT + LIT)) , (comma_expression (assignment_expression IDENT = IDENT) , (binary_expression (binary_expression IDENT >> LIT) != LIT))) ))) )) (goto_statement goto statement_identifier ;)) }))) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT << LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (parenthesized_expression ( (binary_expression IDENT >> LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT * LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }))) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT , IDENT ))))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT << LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }))) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + IDENT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_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 ( IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT - IDENT) <= IDENT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( ))) ;)) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT) )) (goto_statement goto statement_identifier ;)) }))) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + LIT) + (parenthesized_expression ( (binary_expression IDENT >> LIT) )))) ;) }))) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT , IDENT ))))) ;) })) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( (binary_expression IDENT + IDENT) , IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (goto_statement goto statement_identifier ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT , (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) }))) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) (else_clause else (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , IDENT , LIT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( (binary_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 ( (binary_expression IDENT + IDENT) , (pointer_expression * IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (parenthesized_expression ( (binary_expression IDENT - (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) )))) ))) + LIT)) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( (pointer_expression * IDENT) ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression (binary_expression IDENT + IDENT) != IDENT) )) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) }))) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT ))) ;) }))) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) (else_clause else (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) }))) }))) (return_statement return IDENT ;) })))
(function_definition "undefined1 * streamsavedir(int param_1,int param_2)\n\n{\n  char cVar1;\n  undefined *puVar2;\n  int *piVar3;\n  int iVar4;\n  undefined4 uVar5;\n  int iVar6;\n  uint uVar7;\n  uint uVar8;\n  undefined4 *puVar9;\n  undefined4 *puVar10;\n  undefined1 *puVar11;\n  uint uVar12;\n  undefined1 *puVar13;\n  undefined4 *puVar14;\n  int iVar15;\n  int iVar16;\n  uint local_44;\n  uint local_40;\n  uint local_3c;\n  \n  iVar15 = *(int *)(PTR_DAT_00036388 + param_2 * 4 + 0x5fe8);\n  if (param_1 == 0) {\n    puVar13 = (undefined1 *)0x0;\n  }\n  else {\n    local_3c = 0;\n    piVar3 = (int *)(*(code *)PTR___errno_location_00036604)();\n    puVar14 = (undefined4 *)0x0;\n    local_40 = 0;\n    local_44 = 0;\n    puVar11 = (undefined1 *)0x0;\n    uVar12 = 0;\nLAB_0001f5d8:\n    puVar2 = PTR_readdir64_000365c0;\n    *piVar3 = 0;\n    iVar4 = (*(code *)puVar2)(param_1);\n    if (iVar4 != 0) {\n      while( true ) {\n        cVar1 = *(char *)(iVar4 + 0x13);\n        iVar16 = iVar4 + 0x13;\n        if ((cVar1 == '.') && (cVar1 = *(char *)(iVar4 + 0x14), cVar1 == '.')) {\n          cVar1 = *(char *)(iVar4 + 0x15);\n        }\n        if (cVar1 == '\0') goto LAB_0001f5d8;\n        iVar4 = (*(code *)PTR_strlen_00036638)(iVar16);\n        uVar8 = iVar4 + 1;\n        if (iVar15 == 0) break;\n        if (local_3c == local_40) {\n          if (puVar14 == (undefined4 *)0x0) {\n            if (local_40 == 0) {\n              local_40 = 0x10;\n              iVar6 = 0;\n              local_3c = 1;\n              iVar4 = 0x40;\n            }\n            else {\n              iVar6 = local_40 << 2;\n              if ((iVar6 < 0) || (local_3c = local_40 + 1, iVar4 = iVar6, local_40 >> 0x1e != 0))\n              goto LAB_0001f920;\n            }\n          }\n          else {\n            uVar7 = local_40 + 1;\n            if (0x15555554 < local_40) goto LAB_0001f920;\n            iVar6 = local_3c << 2;\n            local_40 = uVar7 + (local_40 >> 1);\n            iVar4 = local_40 * 4;\n            local_3c = uVar7;\n          }\n          puVar14 = (undefined4 *)xrealloc(puVar14,iVar4);\n        }\n        else {\n          iVar6 = local_3c << 2;\n          local_3c = local_3c + 1;\n        }\n        uVar12 = uVar12 + uVar8;\n        uVar5 = xstrdup(iVar16);\n        puVar2 = PTR_readdir64_000365c0;\n        *(undefined4 *)((int)puVar14 + iVar6) = uVar5;\n        *piVar3 = 0;\n        iVar4 = (*(code *)puVar2)(param_1);\n        if (iVar4 == 0) goto LAB_0001f67c;\n      }\n      uVar7 = uVar12 + uVar8;\n      if (local_44 - uVar12 <= uVar8) {\n        if (uVar7 < uVar12) {\nLAB_0001f920:\n                    \n          xalloc_die();\n        }\n        if (puVar11 == (undefined1 *)0x0) {\n          if (uVar7 == 0) {\n            local_44 = 0x40;\n          }\n          else {\n            local_44 = uVar7;\n            if ((int)uVar7 < 0) goto LAB_0001f920;\n          }\n        }\n        else {\n          if (0x55555553 < uVar7) goto LAB_0001f920;\n          local_44 = uVar7 + 1 + (uVar7 >> 1);\n        }\n        puVar11 = (undefined1 *)xrealloc(puVar11,local_44);\n      }\n      (*(code *)PTR_memcpy_00036698)(puVar11 + uVar12,iVar16,uVar8);\n      uVar12 = uVar7;\n      goto LAB_0001f5d8;\n    }\nLAB_0001f67c:\n    iVar4 = *piVar3;\n    if (iVar4 == 0) {\n      if (iVar15 == 0) {\n        if (local_44 == uVar12) {\n          puVar11 = (undefined1 *)xrealloc(puVar11,local_44 + 1);\n          puVar13 = puVar11 + local_44;\n        }\n        else {\n          puVar13 = puVar11 + uVar12;\n        }\n      }\n      else {\n        if (local_3c == 0) {\n          puVar11 = (undefined1 *)xmalloc(uVar12 + 1);\n          puVar13 = puVar11;\n        }\n        else {\n          (*(code *)PTR_qsort_000365bc)(puVar14,local_3c,4,iVar15);\n          iVar15 = 0;\n          puVar11 = (undefined1 *)xmalloc(uVar12 + 1);\n          puVar9 = puVar14;\n          do {\n            puVar10 = puVar9 + 1;\n            iVar4 = (*(code *)PTR_stpcpy_00036680)(puVar11 + iVar15,*puVar9);\n            iVar15 = iVar15 + (iVar4 - (int)(puVar11 + iVar15)) + 1;\n            (*(code *)PTR_free_000366a0)(*puVar9);\n            puVar9 = puVar10;\n          } while (puVar14 + local_3c != puVar10);\n          puVar13 = puVar11 + iVar15;\n        }\n        (*(code *)PTR_free_000366a0)(puVar14);\n      }\n      *puVar13 = 0;\n      puVar13 = puVar11;\n    }\n    else {\n      (*(code *)PTR_free_000366a0)(puVar14);\n      puVar13 = (undefined1 *)0x0;\n      (*(code *)PTR_free_000366a0)(puVar11);\n      *piVar3 = iVar4;\n    }\n  }\n  return puVar13;\n}" (type_identifier "undefined1") (pointer_declarator "* streamsavedir(int param_1,int param_2)" (* "*") (function_declarator "streamsavedir(int param_1,int param_2)" (identifier "streamsavedir") (parameter_list "(int param_1,int param_2)" (( "(") (parameter_declaration "int param_1" (primitive_type "int") (identifier "param_1")) (, ",") (parameter_declaration "int param_2" (primitive_type "int") (identifier "param_2")) () ")")))) (compound_statement "{\n  char cVar1;\n  undefined *puVar2;\n  int *piVar3;\n  int iVar4;\n  undefined4 uVar5;\n  int iVar6;\n  uint uVar7;\n  uint uVar8;\n  undefined4 *puVar9;\n  undefined4 *puVar10;\n  undefined1 *puVar11;\n  uint uVar12;\n  undefined1 *puVar13;\n  undefined4 *puVar14;\n  int iVar15;\n  int iVar16;\n  uint local_44;\n  uint local_40;\n  uint local_3c;\n  \n  iVar15 = *(int *)(PTR_DAT_00036388 + param_2 * 4 + 0x5fe8);\n  if (param_1 == 0) {\n    puVar13 = (undefined1 *)0x0;\n  }\n  else {\n    local_3c = 0;\n    piVar3 = (int *)(*(code *)PTR___errno_location_00036604)();\n    puVar14 = (undefined4 *)0x0;\n    local_40 = 0;\n    local_44 = 0;\n    puVar11 = (undefined1 *)0x0;\n    uVar12 = 0;\nLAB_0001f5d8:\n    puVar2 = PTR_readdir64_000365c0;\n    *piVar3 = 0;\n    iVar4 = (*(code *)puVar2)(param_1);\n    if (iVar4 != 0) {\n      while( true ) {\n        cVar1 = *(char *)(iVar4 + 0x13);\n        iVar16 = iVar4 + 0x13;\n        if ((cVar1 == '.') && (cVar1 = *(char *)(iVar4 + 0x14), cVar1 == '.')) {\n          cVar1 = *(char *)(iVar4 + 0x15);\n        }\n        if (cVar1 == '\0') goto LAB_0001f5d8;\n        iVar4 = (*(code *)PTR_strlen_00036638)(iVar16);\n        uVar8 = iVar4 + 1;\n        if (iVar15 == 0) break;\n        if (local_3c == local_40) {\n          if (puVar14 == (undefined4 *)0x0) {\n            if (local_40 == 0) {\n              local_40 = 0x10;\n              iVar6 = 0;\n              local_3c = 1;\n              iVar4 = 0x40;\n            }\n            else {\n              iVar6 = local_40 << 2;\n              if ((iVar6 < 0) || (local_3c = local_40 + 1, iVar4 = iVar6, local_40 >> 0x1e != 0))\n              goto LAB_0001f920;\n            }\n          }\n          else {\n            uVar7 = local_40 + 1;\n            if (0x15555554 < local_40) goto LAB_0001f920;\n            iVar6 = local_3c << 2;\n            local_40 = uVar7 + (local_40 >> 1);\n            iVar4 = local_40 * 4;\n            local_3c = uVar7;\n          }\n          puVar14 = (undefined4 *)xrealloc(puVar14,iVar4);\n        }\n        else {\n          iVar6 = local_3c << 2;\n          local_3c = local_3c + 1;\n        }\n        uVar12 = uVar12 + uVar8;\n        uVar5 = xstrdup(iVar16);\n        puVar2 = PTR_readdir64_000365c0;\n        *(undefined4 *)((int)puVar14 + iVar6) = uVar5;\n        *piVar3 = 0;\n        iVar4 = (*(code *)puVar2)(param_1);\n        if (iVar4 == 0) goto LAB_0001f67c;\n      }\n      uVar7 = uVar12 + uVar8;\n      if (local_44 - uVar12 <= uVar8) {\n        if (uVar7 < uVar12) {\nLAB_0001f920:\n                    \n          xalloc_die();\n        }\n        if (puVar11 == (undefined1 *)0x0) {\n          if (uVar7 == 0) {\n            local_44 = 0x40;\n          }\n          else {\n            local_44 = uVar7;\n            if ((int)uVar7 < 0) goto LAB_0001f920;\n          }\n        }\n        else {\n          if (0x55555553 < uVar7) goto LAB_0001f920;\n          local_44 = uVar7 + 1 + (uVar7 >> 1);\n        }\n        puVar11 = (undefined1 *)xrealloc(puVar11,local_44);\n      }\n      (*(code *)PTR_memcpy_00036698)(puVar11 + uVar12,iVar16,uVar8);\n      uVar12 = uVar7;\n      goto LAB_0001f5d8;\n    }\nLAB_0001f67c:\n    iVar4 = *piVar3;\n    if (iVar4 == 0) {\n      if (iVar15 == 0) {\n        if (local_44 == uVar12) {\n          puVar11 = (undefined1 *)xrealloc(puVar11,local_44 + 1);\n          puVar13 = puVar11 + local_44;\n        }\n        else {\n          puVar13 = puVar11 + uVar12;\n        }\n      }\n      else {\n        if (local_3c == 0) {\n          puVar11 = (undefined1 *)xmalloc(uVar12 + 1);\n          puVar13 = puVar11;\n        }\n        else {\n          (*(code *)PTR_qsort_000365bc)(puVar14,local_3c,4,iVar15);\n          iVar15 = 0;\n          puVar11 = (undefined1 *)xmalloc(uVar12 + 1);\n          puVar9 = puVar14;\n          do {\n            puVar10 = puVar9 + 1;\n            iVar4 = (*(code *)PTR_stpcpy_00036680)(puVar11 + iVar15,*puVar9);\n            iVar15 = iVar15 + (iVar4 - (int)(puVar11 + iVar15)) + 1;\n            (*(code *)PTR_free_000366a0)(*puVar9);\n            puVar9 = puVar10;\n          } while (puVar14 + local_3c != puVar10);\n          puVar13 = puVar11 + iVar15;\n        }\n        (*(code *)PTR_free_000366a0)(puVar14);\n      }\n      *puVar13 = 0;\n      puVar13 = puVar11;\n    }\n    else {\n      (*(code *)PTR_free_000366a0)(puVar14);\n      puVar13 = (undefined1 *)0x0;\n      (*(code *)PTR_free_000366a0)(puVar11);\n      *piVar3 = iVar4;\n    }\n  }\n  return puVar13;\n}" ({ "{") (declaration "char cVar1;" (primitive_type "char") (identifier "cVar1") (; ";")) (declaration "undefined *puVar2;" (type_identifier "undefined") (pointer_declarator "*puVar2" (* "*") (identifier "puVar2")) (; ";")) (declaration "int *piVar3;" (primitive_type "int") (pointer_declarator "*piVar3" (* "*") (identifier "piVar3")) (; ";")) (declaration "int iVar4;" (primitive_type "int") (identifier "iVar4") (; ";")) (declaration "undefined4 uVar5;" (type_identifier "undefined4") (identifier "uVar5") (; ";")) (declaration "int iVar6;" (primitive_type "int") (identifier "iVar6") (; ";")) (declaration "uint uVar7;" (type_identifier "uint") (identifier "uVar7") (; ";")) (declaration "uint uVar8;" (type_identifier "uint") (identifier "uVar8") (; ";")) (declaration "undefined4 *puVar9;" (type_identifier "undefined4") (pointer_declarator "*puVar9" (* "*") (identifier "puVar9")) (; ";")) (declaration "undefined4 *puVar10;" (type_identifier "undefined4") (pointer_declarator "*puVar10" (* "*") (identifier "puVar10")) (; ";")) (declaration "undefined1 *puVar11;" (type_identifier "undefined1") (pointer_declarator "*puVar11" (* "*") (identifier "puVar11")) (; ";")) (declaration "uint uVar12;" (type_identifier "uint") (identifier "uVar12") (; ";")) (declaration "undefined1 *puVar13;" (type_identifier "undefined1") (pointer_declarator "*puVar13" (* "*") (identifier "puVar13")) (; ";")) (declaration "undefined4 *puVar14;" (type_identifier "undefined4") (pointer_declarator "*puVar14" (* "*") (identifier "puVar14")) (; ";")) (declaration "int iVar15;" (primitive_type "int") (identifier "iVar15") (; ";")) (declaration "int iVar16;" (primitive_type "int") (identifier "iVar16") (; ";")) (declaration "uint local_44;" (type_identifier "uint") (identifier "local_44") (; ";")) (declaration "uint local_40;" (type_identifier "uint") (identifier "local_40") (; ";")) (declaration "uint local_3c;" (type_identifier "uint") (identifier "local_3c") (; ";")) (expression_statement "iVar15 = *(int *)(PTR_DAT_00036388 + param_2 * 4 + 0x5fe8);" (assignment_expression "iVar15 = *(int *)(PTR_DAT_00036388 + param_2 * 4 + 0x5fe8)" (identifier "iVar15") (= "=") (pointer_expression "*(int *)(PTR_DAT_00036388 + param_2 * 4 + 0x5fe8)" (* "*") (cast_expression "(int *)(PTR_DAT_00036388 + param_2 * 4 + 0x5fe8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_DAT_00036388 + param_2 * 4 + 0x5fe8)" (( "(") (binary_expression "PTR_DAT_00036388 + param_2 * 4 + 0x5fe8" (binary_expression "PTR_DAT_00036388 + param_2 * 4" (identifier "PTR_DAT_00036388") (+ "+") (binary_expression "param_2 * 4" (identifier "param_2") (* "*") (number_literal "4"))) (+ "+") (number_literal "0x5fe8")) () ")"))))) (; ";")) (if_statement "if (param_1 == 0) {\n    puVar13 = (undefined1 *)0x0;\n  }\n  else {\n    local_3c = 0;\n    piVar3 = (int *)(*(code *)PTR___errno_location_00036604)();\n    puVar14 = (undefined4 *)0x0;\n    local_40 = 0;\n    local_44 = 0;\n    puVar11 = (undefined1 *)0x0;\n    uVar12 = 0;\nLAB_0001f5d8:\n    puVar2 = PTR_readdir64_000365c0;\n    *piVar3 = 0;\n    iVar4 = (*(code *)puVar2)(param_1);\n    if (iVar4 != 0) {\n      while( true ) {\n        cVar1 = *(char *)(iVar4 + 0x13);\n        iVar16 = iVar4 + 0x13;\n        if ((cVar1 == '.') && (cVar1 = *(char *)(iVar4 + 0x14), cVar1 == '.')) {\n          cVar1 = *(char *)(iVar4 + 0x15);\n        }\n        if (cVar1 == '\0') goto LAB_0001f5d8;\n        iVar4 = (*(code *)PTR_strlen_00036638)(iVar16);\n        uVar8 = iVar4 + 1;\n        if (iVar15 == 0) break;\n        if (local_3c == local_40) {\n          if (puVar14 == (undefined4 *)0x0) {\n            if (local_40 == 0) {\n              local_40 = 0x10;\n              iVar6 = 0;\n              local_3c = 1;\n              iVar4 = 0x40;\n            }\n            else {\n              iVar6 = local_40 << 2;\n              if ((iVar6 < 0) || (local_3c = local_40 + 1, iVar4 = iVar6, local_40 >> 0x1e != 0))\n              goto LAB_0001f920;\n            }\n          }\n          else {\n            uVar7 = local_40 + 1;\n            if (0x15555554 < local_40) goto LAB_0001f920;\n            iVar6 = local_3c << 2;\n            local_40 = uVar7 + (local_40 >> 1);\n            iVar4 = local_40 * 4;\n            local_3c = uVar7;\n          }\n          puVar14 = (undefined4 *)xrealloc(puVar14,iVar4);\n        }\n        else {\n          iVar6 = local_3c << 2;\n          local_3c = local_3c + 1;\n        }\n        uVar12 = uVar12 + uVar8;\n        uVar5 = xstrdup(iVar16);\n        puVar2 = PTR_readdir64_000365c0;\n        *(undefined4 *)((int)puVar14 + iVar6) = uVar5;\n        *piVar3 = 0;\n        iVar4 = (*(code *)puVar2)(param_1);\n        if (iVar4 == 0) goto LAB_0001f67c;\n      }\n      uVar7 = uVar12 + uVar8;\n      if (local_44 - uVar12 <= uVar8) {\n        if (uVar7 < uVar12) {\nLAB_0001f920:\n                    \n          xalloc_die();\n        }\n        if (puVar11 == (undefined1 *)0x0) {\n          if (uVar7 == 0) {\n            local_44 = 0x40;\n          }\n          else {\n            local_44 = uVar7;\n            if ((int)uVar7 < 0) goto LAB_0001f920;\n          }\n        }\n        else {\n          if (0x55555553 < uVar7) goto LAB_0001f920;\n          local_44 = uVar7 + 1 + (uVar7 >> 1);\n        }\n        puVar11 = (undefined1 *)xrealloc(puVar11,local_44);\n      }\n      (*(code *)PTR_memcpy_00036698)(puVar11 + uVar12,iVar16,uVar8);\n      uVar12 = uVar7;\n      goto LAB_0001f5d8;\n    }\nLAB_0001f67c:\n    iVar4 = *piVar3;\n    if (iVar4 == 0) {\n      if (iVar15 == 0) {\n        if (local_44 == uVar12) {\n          puVar11 = (undefined1 *)xrealloc(puVar11,local_44 + 1);\n          puVar13 = puVar11 + local_44;\n        }\n        else {\n          puVar13 = puVar11 + uVar12;\n        }\n      }\n      else {\n        if (local_3c == 0) {\n          puVar11 = (undefined1 *)xmalloc(uVar12 + 1);\n          puVar13 = puVar11;\n        }\n        else {\n          (*(code *)PTR_qsort_000365bc)(puVar14,local_3c,4,iVar15);\n          iVar15 = 0;\n          puVar11 = (undefined1 *)xmalloc(uVar12 + 1);\n          puVar9 = puVar14;\n          do {\n            puVar10 = puVar9 + 1;\n            iVar4 = (*(code *)PTR_stpcpy_00036680)(puVar11 + iVar15,*puVar9);\n            iVar15 = iVar15 + (iVar4 - (int)(puVar11 + iVar15)) + 1;\n            (*(code *)PTR_free_000366a0)(*puVar9);\n            puVar9 = puVar10;\n          } while (puVar14 + local_3c != puVar10);\n          puVar13 = puVar11 + iVar15;\n        }\n        (*(code *)PTR_free_000366a0)(puVar14);\n      }\n      *puVar13 = 0;\n      puVar13 = puVar11;\n    }\n    else {\n      (*(code *)PTR_free_000366a0)(puVar14);\n      puVar13 = (undefined1 *)0x0;\n      (*(code *)PTR_free_000366a0)(puVar11);\n      *piVar3 = iVar4;\n    }\n  }" (if "if") (parenthesized_expression "(param_1 == 0)" (( "(") (binary_expression "param_1 == 0" (identifier "param_1") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    puVar13 = (undefined1 *)0x0;\n  }" ({ "{") (expression_statement "puVar13 = (undefined1 *)0x0;" (assignment_expression "puVar13 = (undefined1 *)0x0" (identifier "puVar13") (= "=") (cast_expression "(undefined1 *)0x0" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (} "}")) (else_clause "else {\n    local_3c = 0;\n    piVar3 = (int *)(*(code *)PTR___errno_location_00036604)();\n    puVar14 = (undefined4 *)0x0;\n    local_40 = 0;\n    local_44 = 0;\n    puVar11 = (undefined1 *)0x0;\n    uVar12 = 0;\nLAB_0001f5d8:\n    puVar2 = PTR_readdir64_000365c0;\n    *piVar3 = 0;\n    iVar4 = (*(code *)puVar2)(param_1);\n    if (iVar4 != 0) {\n      while( true ) {\n        cVar1 = *(char *)(iVar4 + 0x13);\n        iVar16 = iVar4 + 0x13;\n        if ((cVar1 == '.') && (cVar1 = *(char *)(iVar4 + 0x14), cVar1 == '.')) {\n          cVar1 = *(char *)(iVar4 + 0x15);\n        }\n        if (cVar1 == '\0') goto LAB_0001f5d8;\n        iVar4 = (*(code *)PTR_strlen_00036638)(iVar16);\n        uVar8 = iVar4 + 1;\n        if (iVar15 == 0) break;\n        if (local_3c == local_40) {\n          if (puVar14 == (undefined4 *)0x0) {\n            if (local_40 == 0) {\n              local_40 = 0x10;\n              iVar6 = 0;\n              local_3c = 1;\n              iVar4 = 0x40;\n            }\n            else {\n              iVar6 = local_40 << 2;\n              if ((iVar6 < 0) || (local_3c = local_40 + 1, iVar4 = iVar6, local_40 >> 0x1e != 0))\n              goto LAB_0001f920;\n            }\n          }\n          else {\n            uVar7 = local_40 + 1;\n            if (0x15555554 < local_40) goto LAB_0001f920;\n            iVar6 = local_3c << 2;\n            local_40 = uVar7 + (local_40 >> 1);\n            iVar4 = local_40 * 4;\n            local_3c = uVar7;\n          }\n          puVar14 = (undefined4 *)xrealloc(puVar14,iVar4);\n        }\n        else {\n          iVar6 = local_3c << 2;\n          local_3c = local_3c + 1;\n        }\n        uVar12 = uVar12 + uVar8;\n        uVar5 = xstrdup(iVar16);\n        puVar2 = PTR_readdir64_000365c0;\n        *(undefined4 *)((int)puVar14 + iVar6) = uVar5;\n        *piVar3 = 0;\n        iVar4 = (*(code *)puVar2)(param_1);\n        if (iVar4 == 0) goto LAB_0001f67c;\n      }\n      uVar7 = uVar12 + uVar8;\n      if (local_44 - uVar12 <= uVar8) {\n        if (uVar7 < uVar12) {\nLAB_0001f920:\n                    \n          xalloc_die();\n        }\n        if (puVar11 == (undefined1 *)0x0) {\n          if (uVar7 == 0) {\n            local_44 = 0x40;\n          }\n          else {\n            local_44 = uVar7;\n            if ((int)uVar7 < 0) goto LAB_0001f920;\n          }\n        }\n        else {\n          if (0x55555553 < uVar7) goto LAB_0001f920;\n          local_44 = uVar7 + 1 + (uVar7 >> 1);\n        }\n        puVar11 = (undefined1 *)xrealloc(puVar11,local_44);\n      }\n      (*(code *)PTR_memcpy_00036698)(puVar11 + uVar12,iVar16,uVar8);\n      uVar12 = uVar7;\n      goto LAB_0001f5d8;\n    }\nLAB_0001f67c:\n    iVar4 = *piVar3;\n    if (iVar4 == 0) {\n      if (iVar15 == 0) {\n        if (local_44 == uVar12) {\n          puVar11 = (undefined1 *)xrealloc(puVar11,local_44 + 1);\n          puVar13 = puVar11 + local_44;\n        }\n        else {\n          puVar13 = puVar11 + uVar12;\n        }\n      }\n      else {\n        if (local_3c == 0) {\n          puVar11 = (undefined1 *)xmalloc(uVar12 + 1);\n          puVar13 = puVar11;\n        }\n        else {\n          (*(code *)PTR_qsort_000365bc)(puVar14,local_3c,4,iVar15);\n          iVar15 = 0;\n          puVar11 = (undefined1 *)xmalloc(uVar12 + 1);\n          puVar9 = puVar14;\n          do {\n            puVar10 = puVar9 + 1;\n            iVar4 = (*(code *)PTR_stpcpy_00036680)(puVar11 + iVar15,*puVar9);\n            iVar15 = iVar15 + (iVar4 - (int)(puVar11 + iVar15)) + 1;\n            (*(code *)PTR_free_000366a0)(*puVar9);\n            puVar9 = puVar10;\n          } while (puVar14 + local_3c != puVar10);\n          puVar13 = puVar11 + iVar15;\n        }\n        (*(code *)PTR_free_000366a0)(puVar14);\n      }\n      *puVar13 = 0;\n      puVar13 = puVar11;\n    }\n    else {\n      (*(code *)PTR_free_000366a0)(puVar14);\n      puVar13 = (undefined1 *)0x0;\n      (*(code *)PTR_free_000366a0)(puVar11);\n      *piVar3 = iVar4;\n    }\n  }" (else "else") (compound_statement "{\n    local_3c = 0;\n    piVar3 = (int *)(*(code *)PTR___errno_location_00036604)();\n    puVar14 = (undefined4 *)0x0;\n    local_40 = 0;\n    local_44 = 0;\n    puVar11 = (undefined1 *)0x0;\n    uVar12 = 0;\nLAB_0001f5d8:\n    puVar2 = PTR_readdir64_000365c0;\n    *piVar3 = 0;\n    iVar4 = (*(code *)puVar2)(param_1);\n    if (iVar4 != 0) {\n      while( true ) {\n        cVar1 = *(char *)(iVar4 + 0x13);\n        iVar16 = iVar4 + 0x13;\n        if ((cVar1 == '.') && (cVar1 = *(char *)(iVar4 + 0x14), cVar1 == '.')) {\n          cVar1 = *(char *)(iVar4 + 0x15);\n        }\n        if (cVar1 == '\0') goto LAB_0001f5d8;\n        iVar4 = (*(code *)PTR_strlen_00036638)(iVar16);\n        uVar8 = iVar4 + 1;\n        if (iVar15 == 0) break;\n        if (local_3c == local_40) {\n          if (puVar14 == (undefined4 *)0x0) {\n            if (local_40 == 0) {\n              local_40 = 0x10;\n              iVar6 = 0;\n              local_3c = 1;\n              iVar4 = 0x40;\n            }\n            else {\n              iVar6 = local_40 << 2;\n              if ((iVar6 < 0) || (local_3c = local_40 + 1, iVar4 = iVar6, local_40 >> 0x1e != 0))\n              goto LAB_0001f920;\n            }\n          }\n          else {\n            uVar7 = local_40 + 1;\n            if (0x15555554 < local_40) goto LAB_0001f920;\n            iVar6 = local_3c << 2;\n            local_40 = uVar7 + (local_40 >> 1);\n            iVar4 = local_40 * 4;\n            local_3c = uVar7;\n          }\n          puVar14 = (undefined4 *)xrealloc(puVar14,iVar4);\n        }\n        else {\n          iVar6 = local_3c << 2;\n          local_3c = local_3c + 1;\n        }\n        uVar12 = uVar12 + uVar8;\n        uVar5 = xstrdup(iVar16);\n        puVar2 = PTR_readdir64_000365c0;\n        *(undefined4 *)((int)puVar14 + iVar6) = uVar5;\n        *piVar3 = 0;\n        iVar4 = (*(code *)puVar2)(param_1);\n        if (iVar4 == 0) goto LAB_0001f67c;\n      }\n      uVar7 = uVar12 + uVar8;\n      if (local_44 - uVar12 <= uVar8) {\n        if (uVar7 < uVar12) {\nLAB_0001f920:\n                    \n          xalloc_die();\n        }\n        if (puVar11 == (undefined1 *)0x0) {\n          if (uVar7 == 0) {\n            local_44 = 0x40;\n          }\n          else {\n            local_44 = uVar7;\n            if ((int)uVar7 < 0) goto LAB_0001f920;\n          }\n        }\n        else {\n          if (0x55555553 < uVar7) goto LAB_0001f920;\n          local_44 = uVar7 + 1 + (uVar7 >> 1);\n        }\n        puVar11 = (undefined1 *)xrealloc(puVar11,local_44);\n      }\n      (*(code *)PTR_memcpy_00036698)(puVar11 + uVar12,iVar16,uVar8);\n      uVar12 = uVar7;\n      goto LAB_0001f5d8;\n    }\nLAB_0001f67c:\n    iVar4 = *piVar3;\n    if (iVar4 == 0) {\n      if (iVar15 == 0) {\n        if (local_44 == uVar12) {\n          puVar11 = (undefined1 *)xrealloc(puVar11,local_44 + 1);\n          puVar13 = puVar11 + local_44;\n        }\n        else {\n          puVar13 = puVar11 + uVar12;\n        }\n      }\n      else {\n        if (local_3c == 0) {\n          puVar11 = (undefined1 *)xmalloc(uVar12 + 1);\n          puVar13 = puVar11;\n        }\n        else {\n          (*(code *)PTR_qsort_000365bc)(puVar14,local_3c,4,iVar15);\n          iVar15 = 0;\n          puVar11 = (undefined1 *)xmalloc(uVar12 + 1);\n          puVar9 = puVar14;\n          do {\n            puVar10 = puVar9 + 1;\n            iVar4 = (*(code *)PTR_stpcpy_00036680)(puVar11 + iVar15,*puVar9);\n            iVar15 = iVar15 + (iVar4 - (int)(puVar11 + iVar15)) + 1;\n            (*(code *)PTR_free_000366a0)(*puVar9);\n            puVar9 = puVar10;\n          } while (puVar14 + local_3c != puVar10);\n          puVar13 = puVar11 + iVar15;\n        }\n        (*(code *)PTR_free_000366a0)(puVar14);\n      }\n      *puVar13 = 0;\n      puVar13 = puVar11;\n    }\n    else {\n      (*(code *)PTR_free_000366a0)(puVar14);\n      puVar13 = (undefined1 *)0x0;\n      (*(code *)PTR_free_000366a0)(puVar11);\n      *piVar3 = iVar4;\n    }\n  }" ({ "{") (expression_statement "local_3c = 0;" (assignment_expression "local_3c = 0" (identifier "local_3c") (= "=") (number_literal "0")) (; ";")) (expression_statement "piVar3 = (int *)(*(code *)PTR___errno_location_00036604)();" (assignment_expression "piVar3 = (int *)(*(code *)PTR___errno_location_00036604)()" (identifier "piVar3") (= "=") (cast_expression "(int *)(*(code *)PTR___errno_location_00036604)()" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(*(code *)PTR___errno_location_00036604)()" (parenthesized_expression "(*(code *)PTR___errno_location_00036604)" (( "(") (pointer_expression "*(code *)PTR___errno_location_00036604" (* "*") (cast_expression "(code *)PTR___errno_location_00036604" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___errno_location_00036604"))) () ")")) (argument_list "()" (( "(") () ")"))))) (; ";")) (expression_statement "puVar14 = (undefined4 *)0x0;" (assignment_expression "puVar14 = (undefined4 *)0x0" (identifier "puVar14") (= "=") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "local_40 = 0;" (assignment_expression "local_40 = 0" (identifier "local_40") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_44 = 0;" (assignment_expression "local_44 = 0" (identifier "local_44") (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar11 = (undefined1 *)0x0;" (assignment_expression "puVar11 = (undefined1 *)0x0" (identifier "puVar11") (= "=") (cast_expression "(undefined1 *)0x0" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "uVar12 = 0;" (assignment_expression "uVar12 = 0" (identifier "uVar12") (= "=") (number_literal "0")) (; ";")) (labeled_statement "LAB_0001f5d8:\n    puVar2 = PTR_readdir64_000365c0;" (statement_identifier "LAB_0001f5d8") (: ":") (expression_statement "puVar2 = PTR_readdir64_000365c0;" (assignment_expression "puVar2 = PTR_readdir64_000365c0" (identifier "puVar2") (= "=") (identifier "PTR_readdir64_000365c0")) (; ";"))) (expression_statement "*piVar3 = 0;" (assignment_expression "*piVar3 = 0" (pointer_expression "*piVar3" (* "*") (identifier "piVar3")) (= "=") (number_literal "0")) (; ";")) (expression_statement "iVar4 = (*(code *)puVar2)(param_1);" (assignment_expression "iVar4 = (*(code *)puVar2)(param_1)" (identifier "iVar4") (= "=") (call_expression "(*(code *)puVar2)(param_1)" (parenthesized_expression "(*(code *)puVar2)" (( "(") (pointer_expression "*(code *)puVar2" (* "*") (cast_expression "(code *)puVar2" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar2"))) () ")")) (argument_list "(param_1)" (( "(") (identifier "param_1") () ")")))) (; ";")) (if_statement "if (iVar4 != 0) {\n      while( true ) {\n        cVar1 = *(char *)(iVar4 + 0x13);\n        iVar16 = iVar4 + 0x13;\n        if ((cVar1 == '.') && (cVar1 = *(char *)(iVar4 + 0x14), cVar1 == '.')) {\n          cVar1 = *(char *)(iVar4 + 0x15);\n        }\n        if (cVar1 == '\0') goto LAB_0001f5d8;\n        iVar4 = (*(code *)PTR_strlen_00036638)(iVar16);\n        uVar8 = iVar4 + 1;\n        if (iVar15 == 0) break;\n        if (local_3c == local_40) {\n          if (puVar14 == (undefined4 *)0x0) {\n            if (local_40 == 0) {\n              local_40 = 0x10;\n              iVar6 = 0;\n              local_3c = 1;\n              iVar4 = 0x40;\n            }\n            else {\n              iVar6 = local_40 << 2;\n              if ((iVar6 < 0) || (local_3c = local_40 + 1, iVar4 = iVar6, local_40 >> 0x1e != 0))\n              goto LAB_0001f920;\n            }\n          }\n          else {\n            uVar7 = local_40 + 1;\n            if (0x15555554 < local_40) goto LAB_0001f920;\n            iVar6 = local_3c << 2;\n            local_40 = uVar7 + (local_40 >> 1);\n            iVar4 = local_40 * 4;\n            local_3c = uVar7;\n          }\n          puVar14 = (undefined4 *)xrealloc(puVar14,iVar4);\n        }\n        else {\n          iVar6 = local_3c << 2;\n          local_3c = local_3c + 1;\n        }\n        uVar12 = uVar12 + uVar8;\n        uVar5 = xstrdup(iVar16);\n        puVar2 = PTR_readdir64_000365c0;\n        *(undefined4 *)((int)puVar14 + iVar6) = uVar5;\n        *piVar3 = 0;\n        iVar4 = (*(code *)puVar2)(param_1);\n        if (iVar4 == 0) goto LAB_0001f67c;\n      }\n      uVar7 = uVar12 + uVar8;\n      if (local_44 - uVar12 <= uVar8) {\n        if (uVar7 < uVar12) {\nLAB_0001f920:\n                    \n          xalloc_die();\n        }\n        if (puVar11 == (undefined1 *)0x0) {\n          if (uVar7 == 0) {\n            local_44 = 0x40;\n          }\n          else {\n            local_44 = uVar7;\n            if ((int)uVar7 < 0) goto LAB_0001f920;\n          }\n        }\n        else {\n          if (0x55555553 < uVar7) goto LAB_0001f920;\n          local_44 = uVar7 + 1 + (uVar7 >> 1);\n        }\n        puVar11 = (undefined1 *)xrealloc(puVar11,local_44);\n      }\n      (*(code *)PTR_memcpy_00036698)(puVar11 + uVar12,iVar16,uVar8);\n      uVar12 = uVar7;\n      goto LAB_0001f5d8;\n    }" (if "if") (parenthesized_expression "(iVar4 != 0)" (( "(") (binary_expression "iVar4 != 0" (identifier "iVar4") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      while( true ) {\n        cVar1 = *(char *)(iVar4 + 0x13);\n        iVar16 = iVar4 + 0x13;\n        if ((cVar1 == '.') && (cVar1 = *(char *)(iVar4 + 0x14), cVar1 == '.')) {\n          cVar1 = *(char *)(iVar4 + 0x15);\n        }\n        if (cVar1 == '\0') goto LAB_0001f5d8;\n        iVar4 = (*(code *)PTR_strlen_00036638)(iVar16);\n        uVar8 = iVar4 + 1;\n        if (iVar15 == 0) break;\n        if (local_3c == local_40) {\n          if (puVar14 == (undefined4 *)0x0) {\n            if (local_40 == 0) {\n              local_40 = 0x10;\n              iVar6 = 0;\n              local_3c = 1;\n              iVar4 = 0x40;\n            }\n            else {\n              iVar6 = local_40 << 2;\n              if ((iVar6 < 0) || (local_3c = local_40 + 1, iVar4 = iVar6, local_40 >> 0x1e != 0))\n              goto LAB_0001f920;\n            }\n          }\n          else {\n            uVar7 = local_40 + 1;\n            if (0x15555554 < local_40) goto LAB_0001f920;\n            iVar6 = local_3c << 2;\n            local_40 = uVar7 + (local_40 >> 1);\n            iVar4 = local_40 * 4;\n            local_3c = uVar7;\n          }\n          puVar14 = (undefined4 *)xrealloc(puVar14,iVar4);\n        }\n        else {\n          iVar6 = local_3c << 2;\n          local_3c = local_3c + 1;\n        }\n        uVar12 = uVar12 + uVar8;\n        uVar5 = xstrdup(iVar16);\n        puVar2 = PTR_readdir64_000365c0;\n        *(undefined4 *)((int)puVar14 + iVar6) = uVar5;\n        *piVar3 = 0;\n        iVar4 = (*(code *)puVar2)(param_1);\n        if (iVar4 == 0) goto LAB_0001f67c;\n      }\n      uVar7 = uVar12 + uVar8;\n      if (local_44 - uVar12 <= uVar8) {\n        if (uVar7 < uVar12) {\nLAB_0001f920:\n                    \n          xalloc_die();\n        }\n        if (puVar11 == (undefined1 *)0x0) {\n          if (uVar7 == 0) {\n            local_44 = 0x40;\n          }\n          else {\n            local_44 = uVar7;\n            if ((int)uVar7 < 0) goto LAB_0001f920;\n          }\n        }\n        else {\n          if (0x55555553 < uVar7) goto LAB_0001f920;\n          local_44 = uVar7 + 1 + (uVar7 >> 1);\n        }\n        puVar11 = (undefined1 *)xrealloc(puVar11,local_44);\n      }\n      (*(code *)PTR_memcpy_00036698)(puVar11 + uVar12,iVar16,uVar8);\n      uVar12 = uVar7;\n      goto LAB_0001f5d8;\n    }" ({ "{") (while_statement "while( true ) {\n        cVar1 = *(char *)(iVar4 + 0x13);\n        iVar16 = iVar4 + 0x13;\n        if ((cVar1 == '.') && (cVar1 = *(char *)(iVar4 + 0x14), cVar1 == '.')) {\n          cVar1 = *(char *)(iVar4 + 0x15);\n        }\n        if (cVar1 == '\0') goto LAB_0001f5d8;\n        iVar4 = (*(code *)PTR_strlen_00036638)(iVar16);\n        uVar8 = iVar4 + 1;\n        if (iVar15 == 0) break;\n        if (local_3c == local_40) {\n          if (puVar14 == (undefined4 *)0x0) {\n            if (local_40 == 0) {\n              local_40 = 0x10;\n              iVar6 = 0;\n              local_3c = 1;\n              iVar4 = 0x40;\n            }\n            else {\n              iVar6 = local_40 << 2;\n              if ((iVar6 < 0) || (local_3c = local_40 + 1, iVar4 = iVar6, local_40 >> 0x1e != 0))\n              goto LAB_0001f920;\n            }\n          }\n          else {\n            uVar7 = local_40 + 1;\n            if (0x15555554 < local_40) goto LAB_0001f920;\n            iVar6 = local_3c << 2;\n            local_40 = uVar7 + (local_40 >> 1);\n            iVar4 = local_40 * 4;\n            local_3c = uVar7;\n          }\n          puVar14 = (undefined4 *)xrealloc(puVar14,iVar4);\n        }\n        else {\n          iVar6 = local_3c << 2;\n          local_3c = local_3c + 1;\n        }\n        uVar12 = uVar12 + uVar8;\n        uVar5 = xstrdup(iVar16);\n        puVar2 = PTR_readdir64_000365c0;\n        *(undefined4 *)((int)puVar14 + iVar6) = uVar5;\n        *piVar3 = 0;\n        iVar4 = (*(code *)puVar2)(param_1);\n        if (iVar4 == 0) goto LAB_0001f67c;\n      }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n        cVar1 = *(char *)(iVar4 + 0x13);\n        iVar16 = iVar4 + 0x13;\n        if ((cVar1 == '.') && (cVar1 = *(char *)(iVar4 + 0x14), cVar1 == '.')) {\n          cVar1 = *(char *)(iVar4 + 0x15);\n        }\n        if (cVar1 == '\0') goto LAB_0001f5d8;\n        iVar4 = (*(code *)PTR_strlen_00036638)(iVar16);\n        uVar8 = iVar4 + 1;\n        if (iVar15 == 0) break;\n        if (local_3c == local_40) {\n          if (puVar14 == (undefined4 *)0x0) {\n            if (local_40 == 0) {\n              local_40 = 0x10;\n              iVar6 = 0;\n              local_3c = 1;\n              iVar4 = 0x40;\n            }\n            else {\n              iVar6 = local_40 << 2;\n              if ((iVar6 < 0) || (local_3c = local_40 + 1, iVar4 = iVar6, local_40 >> 0x1e != 0))\n              goto LAB_0001f920;\n            }\n          }\n          else {\n            uVar7 = local_40 + 1;\n            if (0x15555554 < local_40) goto LAB_0001f920;\n            iVar6 = local_3c << 2;\n            local_40 = uVar7 + (local_40 >> 1);\n            iVar4 = local_40 * 4;\n            local_3c = uVar7;\n          }\n          puVar14 = (undefined4 *)xrealloc(puVar14,iVar4);\n        }\n        else {\n          iVar6 = local_3c << 2;\n          local_3c = local_3c + 1;\n        }\n        uVar12 = uVar12 + uVar8;\n        uVar5 = xstrdup(iVar16);\n        puVar2 = PTR_readdir64_000365c0;\n        *(undefined4 *)((int)puVar14 + iVar6) = uVar5;\n        *piVar3 = 0;\n        iVar4 = (*(code *)puVar2)(param_1);\n        if (iVar4 == 0) goto LAB_0001f67c;\n      }" ({ "{") (expression_statement "cVar1 = *(char *)(iVar4 + 0x13);" (assignment_expression "cVar1 = *(char *)(iVar4 + 0x13)" (identifier "cVar1") (= "=") (pointer_expression "*(char *)(iVar4 + 0x13)" (* "*") (cast_expression "(char *)(iVar4 + 0x13)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 0x13)" (( "(") (binary_expression "iVar4 + 0x13" (identifier "iVar4") (+ "+") (number_literal "0x13")) () ")"))))) (; ";")) (expression_statement "iVar16 = iVar4 + 0x13;" (assignment_expression "iVar16 = iVar4 + 0x13" (identifier "iVar16") (= "=") (binary_expression "iVar4 + 0x13" (identifier "iVar4") (+ "+") (number_literal "0x13"))) (; ";")) (if_statement "if ((cVar1 == '.') && (cVar1 = *(char *)(iVar4 + 0x14), cVar1 == '.')) {\n          cVar1 = *(char *)(iVar4 + 0x15);\n        }" (if "if") (parenthesized_expression "((cVar1 == '.') && (cVar1 = *(char *)(iVar4 + 0x14), cVar1 == '.'))" (( "(") (binary_expression "(cVar1 == '.') && (cVar1 = *(char *)(iVar4 + 0x14), cVar1 == '.')" (parenthesized_expression "(cVar1 == '.')" (( "(") (binary_expression "cVar1 == '.'" (identifier "cVar1") (== "==") (char_literal "'.'" (' "'") (character ".") (' "'"))) () ")")) (&& "&&") (parenthesized_expression "(cVar1 = *(char *)(iVar4 + 0x14), cVar1 == '.')" (( "(") (comma_expression "cVar1 = *(char *)(iVar4 + 0x14), cVar1 == '.'" (assignment_expression "cVar1 = *(char *)(iVar4 + 0x14)" (identifier "cVar1") (= "=") (pointer_expression "*(char *)(iVar4 + 0x14)" (* "*") (cast_expression "(char *)(iVar4 + 0x14)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 0x14)" (( "(") (binary_expression "iVar4 + 0x14" (identifier "iVar4") (+ "+") (number_literal "0x14")) () ")"))))) (, ",") (binary_expression "cVar1 == '.'" (identifier "cVar1") (== "==") (char_literal "'.'" (' "'") (character ".") (' "'")))) () ")"))) () ")")) (compound_statement "{\n          cVar1 = *(char *)(iVar4 + 0x15);\n        }" ({ "{") (expression_statement "cVar1 = *(char *)(iVar4 + 0x15);" (assignment_expression "cVar1 = *(char *)(iVar4 + 0x15)" (identifier "cVar1") (= "=") (pointer_expression "*(char *)(iVar4 + 0x15)" (* "*") (cast_expression "(char *)(iVar4 + 0x15)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 0x15)" (( "(") (binary_expression "iVar4 + 0x15" (identifier "iVar4") (+ "+") (number_literal "0x15")) () ")"))))) (; ";")) (} "}"))) (if_statement "if (cVar1 == '\0') goto LAB_0001f5d8;" (if "if") (parenthesized_expression "(cVar1 == '\0')" (( "(") (binary_expression "cVar1 == '\0'" (identifier "cVar1") (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (goto_statement "goto LAB_0001f5d8;" (goto "goto") (statement_identifier "LAB_0001f5d8") (; ";"))) (expression_statement "iVar4 = (*(code *)PTR_strlen_00036638)(iVar16);" (assignment_expression "iVar4 = (*(code *)PTR_strlen_00036638)(iVar16)" (identifier "iVar4") (= "=") (call_expression "(*(code *)PTR_strlen_00036638)(iVar16)" (parenthesized_expression "(*(code *)PTR_strlen_00036638)" (( "(") (pointer_expression "*(code *)PTR_strlen_00036638" (* "*") (cast_expression "(code *)PTR_strlen_00036638" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_strlen_00036638"))) () ")")) (argument_list "(iVar16)" (( "(") (identifier "iVar16") () ")")))) (; ";")) (expression_statement "uVar8 = iVar4 + 1;" (assignment_expression "uVar8 = iVar4 + 1" (identifier "uVar8") (= "=") (binary_expression "iVar4 + 1" (identifier "iVar4") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (iVar15 == 0) break;" (if "if") (parenthesized_expression "(iVar15 == 0)" (( "(") (binary_expression "iVar15 == 0" (identifier "iVar15") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (if_statement "if (local_3c == local_40) {\n          if (puVar14 == (undefined4 *)0x0) {\n            if (local_40 == 0) {\n              local_40 = 0x10;\n              iVar6 = 0;\n              local_3c = 1;\n              iVar4 = 0x40;\n            }\n            else {\n              iVar6 = local_40 << 2;\n              if ((iVar6 < 0) || (local_3c = local_40 + 1, iVar4 = iVar6, local_40 >> 0x1e != 0))\n              goto LAB_0001f920;\n            }\n          }\n          else {\n            uVar7 = local_40 + 1;\n            if (0x15555554 < local_40) goto LAB_0001f920;\n            iVar6 = local_3c << 2;\n            local_40 = uVar7 + (local_40 >> 1);\n            iVar4 = local_40 * 4;\n            local_3c = uVar7;\n          }\n          puVar14 = (undefined4 *)xrealloc(puVar14,iVar4);\n        }\n        else {\n          iVar6 = local_3c << 2;\n          local_3c = local_3c + 1;\n        }" (if "if") (parenthesized_expression "(local_3c == local_40)" (( "(") (binary_expression "local_3c == local_40" (identifier "local_3c") (== "==") (identifier "local_40")) () ")")) (compound_statement "{\n          if (puVar14 == (undefined4 *)0x0) {\n            if (local_40 == 0) {\n              local_40 = 0x10;\n              iVar6 = 0;\n              local_3c = 1;\n              iVar4 = 0x40;\n            }\n            else {\n              iVar6 = local_40 << 2;\n              if ((iVar6 < 0) || (local_3c = local_40 + 1, iVar4 = iVar6, local_40 >> 0x1e != 0))\n              goto LAB_0001f920;\n            }\n          }\n          else {\n            uVar7 = local_40 + 1;\n            if (0x15555554 < local_40) goto LAB_0001f920;\n            iVar6 = local_3c << 2;\n            local_40 = uVar7 + (local_40 >> 1);\n            iVar4 = local_40 * 4;\n            local_3c = uVar7;\n          }\n          puVar14 = (undefined4 *)xrealloc(puVar14,iVar4);\n        }" ({ "{") (if_statement "if (puVar14 == (undefined4 *)0x0) {\n            if (local_40 == 0) {\n              local_40 = 0x10;\n              iVar6 = 0;\n              local_3c = 1;\n              iVar4 = 0x40;\n            }\n            else {\n              iVar6 = local_40 << 2;\n              if ((iVar6 < 0) || (local_3c = local_40 + 1, iVar4 = iVar6, local_40 >> 0x1e != 0))\n              goto LAB_0001f920;\n            }\n          }\n          else {\n            uVar7 = local_40 + 1;\n            if (0x15555554 < local_40) goto LAB_0001f920;\n            iVar6 = local_3c << 2;\n            local_40 = uVar7 + (local_40 >> 1);\n            iVar4 = local_40 * 4;\n            local_3c = uVar7;\n          }" (if "if") (parenthesized_expression "(puVar14 == (undefined4 *)0x0)" (( "(") (binary_expression "puVar14 == (undefined4 *)0x0" (identifier "puVar14") (== "==") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n            if (local_40 == 0) {\n              local_40 = 0x10;\n              iVar6 = 0;\n              local_3c = 1;\n              iVar4 = 0x40;\n            }\n            else {\n              iVar6 = local_40 << 2;\n              if ((iVar6 < 0) || (local_3c = local_40 + 1, iVar4 = iVar6, local_40 >> 0x1e != 0))\n              goto LAB_0001f920;\n            }\n          }" ({ "{") (if_statement "if (local_40 == 0) {\n              local_40 = 0x10;\n              iVar6 = 0;\n              local_3c = 1;\n              iVar4 = 0x40;\n            }\n            else {\n              iVar6 = local_40 << 2;\n              if ((iVar6 < 0) || (local_3c = local_40 + 1, iVar4 = iVar6, local_40 >> 0x1e != 0))\n              goto LAB_0001f920;\n            }" (if "if") (parenthesized_expression "(local_40 == 0)" (( "(") (binary_expression "local_40 == 0" (identifier "local_40") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n              local_40 = 0x10;\n              iVar6 = 0;\n              local_3c = 1;\n              iVar4 = 0x40;\n            }" ({ "{") (expression_statement "local_40 = 0x10;" (assignment_expression "local_40 = 0x10" (identifier "local_40") (= "=") (number_literal "0x10")) (; ";")) (expression_statement "iVar6 = 0;" (assignment_expression "iVar6 = 0" (identifier "iVar6") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_3c = 1;" (assignment_expression "local_3c = 1" (identifier "local_3c") (= "=") (number_literal "1")) (; ";")) (expression_statement "iVar4 = 0x40;" (assignment_expression "iVar4 = 0x40" (identifier "iVar4") (= "=") (number_literal "0x40")) (; ";")) (} "}")) (else_clause "else {\n              iVar6 = local_40 << 2;\n              if ((iVar6 < 0) || (local_3c = local_40 + 1, iVar4 = iVar6, local_40 >> 0x1e != 0))\n              goto LAB_0001f920;\n            }" (else "else") (compound_statement "{\n              iVar6 = local_40 << 2;\n              if ((iVar6 < 0) || (local_3c = local_40 + 1, iVar4 = iVar6, local_40 >> 0x1e != 0))\n              goto LAB_0001f920;\n            }" ({ "{") (expression_statement "iVar6 = local_40 << 2;" (assignment_expression "iVar6 = local_40 << 2" (identifier "iVar6") (= "=") (binary_expression "local_40 << 2" (identifier "local_40") (<< "<<") (number_literal "2"))) (; ";")) (if_statement "if ((iVar6 < 0) || (local_3c = local_40 + 1, iVar4 = iVar6, local_40 >> 0x1e != 0))\n              goto LAB_0001f920;" (if "if") (parenthesized_expression "((iVar6 < 0) || (local_3c = local_40 + 1, iVar4 = iVar6, local_40 >> 0x1e != 0))" (( "(") (binary_expression "(iVar6 < 0) || (local_3c = local_40 + 1, iVar4 = iVar6, local_40 >> 0x1e != 0)" (parenthesized_expression "(iVar6 < 0)" (( "(") (binary_expression "iVar6 < 0" (identifier "iVar6") (< "<") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(local_3c = local_40 + 1, iVar4 = iVar6, local_40 >> 0x1e != 0)" (( "(") (comma_expression "local_3c = local_40 + 1, iVar4 = iVar6, local_40 >> 0x1e != 0" (assignment_expression "local_3c = local_40 + 1" (identifier "local_3c") (= "=") (binary_expression "local_40 + 1" (identifier "local_40") (+ "+") (number_literal "1"))) (, ",") (comma_expression "iVar4 = iVar6, local_40 >> 0x1e != 0" (assignment_expression "iVar4 = iVar6" (identifier "iVar4") (= "=") (identifier "iVar6")) (, ",") (binary_expression "local_40 >> 0x1e != 0" (binary_expression "local_40 >> 0x1e" (identifier "local_40") (>> ">>") (number_literal "0x1e")) (!= "!=") (number_literal "0")))) () ")"))) () ")")) (goto_statement "goto LAB_0001f920;" (goto "goto") (statement_identifier "LAB_0001f920") (; ";"))) (} "}")))) (} "}")) (else_clause "else {\n            uVar7 = local_40 + 1;\n            if (0x15555554 < local_40) goto LAB_0001f920;\n            iVar6 = local_3c << 2;\n            local_40 = uVar7 + (local_40 >> 1);\n            iVar4 = local_40 * 4;\n            local_3c = uVar7;\n          }" (else "else") (compound_statement "{\n            uVar7 = local_40 + 1;\n            if (0x15555554 < local_40) goto LAB_0001f920;\n            iVar6 = local_3c << 2;\n            local_40 = uVar7 + (local_40 >> 1);\n            iVar4 = local_40 * 4;\n            local_3c = uVar7;\n          }" ({ "{") (expression_statement "uVar7 = local_40 + 1;" (assignment_expression "uVar7 = local_40 + 1" (identifier "uVar7") (= "=") (binary_expression "local_40 + 1" (identifier "local_40") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (0x15555554 < local_40) goto LAB_0001f920;" (if "if") (parenthesized_expression "(0x15555554 < local_40)" (( "(") (binary_expression "0x15555554 < local_40" (number_literal "0x15555554") (< "<") (identifier "local_40")) () ")")) (goto_statement "goto LAB_0001f920;" (goto "goto") (statement_identifier "LAB_0001f920") (; ";"))) (expression_statement "iVar6 = local_3c << 2;" (assignment_expression "iVar6 = local_3c << 2" (identifier "iVar6") (= "=") (binary_expression "local_3c << 2" (identifier "local_3c") (<< "<<") (number_literal "2"))) (; ";")) (expression_statement "local_40 = uVar7 + (local_40 >> 1);" (assignment_expression "local_40 = uVar7 + (local_40 >> 1)" (identifier "local_40") (= "=") (binary_expression "uVar7 + (local_40 >> 1)" (identifier "uVar7") (+ "+") (parenthesized_expression "(local_40 >> 1)" (( "(") (binary_expression "local_40 >> 1" (identifier "local_40") (>> ">>") (number_literal "1")) () ")")))) (; ";")) (expression_statement "iVar4 = local_40 * 4;" (assignment_expression "iVar4 = local_40 * 4" (identifier "iVar4") (= "=") (binary_expression "local_40 * 4" (identifier "local_40") (* "*") (number_literal "4"))) (; ";")) (expression_statement "local_3c = uVar7;" (assignment_expression "local_3c = uVar7" (identifier "local_3c") (= "=") (identifier "uVar7")) (; ";")) (} "}")))) (expression_statement "puVar14 = (undefined4 *)xrealloc(puVar14,iVar4);" (assignment_expression "puVar14 = (undefined4 *)xrealloc(puVar14,iVar4)" (identifier "puVar14") (= "=") (cast_expression "(undefined4 *)xrealloc(puVar14,iVar4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "xrealloc(puVar14,iVar4)" (identifier "xrealloc") (argument_list "(puVar14,iVar4)" (( "(") (identifier "puVar14") (, ",") (identifier "iVar4") () ")"))))) (; ";")) (} "}")) (else_clause "else {\n          iVar6 = local_3c << 2;\n          local_3c = local_3c + 1;\n        }" (else "else") (compound_statement "{\n          iVar6 = local_3c << 2;\n          local_3c = local_3c + 1;\n        }" ({ "{") (expression_statement "iVar6 = local_3c << 2;" (assignment_expression "iVar6 = local_3c << 2" (identifier "iVar6") (= "=") (binary_expression "local_3c << 2" (identifier "local_3c") (<< "<<") (number_literal "2"))) (; ";")) (expression_statement "local_3c = local_3c + 1;" (assignment_expression "local_3c = local_3c + 1" (identifier "local_3c") (= "=") (binary_expression "local_3c + 1" (identifier "local_3c") (+ "+") (number_literal "1"))) (; ";")) (} "}")))) (expression_statement "uVar12 = uVar12 + uVar8;" (assignment_expression "uVar12 = uVar12 + uVar8" (identifier "uVar12") (= "=") (binary_expression "uVar12 + uVar8" (identifier "uVar12") (+ "+") (identifier "uVar8"))) (; ";")) (expression_statement "uVar5 = xstrdup(iVar16);" (assignment_expression "uVar5 = xstrdup(iVar16)" (identifier "uVar5") (= "=") (call_expression "xstrdup(iVar16)" (identifier "xstrdup") (argument_list "(iVar16)" (( "(") (identifier "iVar16") () ")")))) (; ";")) (expression_statement "puVar2 = PTR_readdir64_000365c0;" (assignment_expression "puVar2 = PTR_readdir64_000365c0" (identifier "puVar2") (= "=") (identifier "PTR_readdir64_000365c0")) (; ";")) (expression_statement "*(undefined4 *)((int)puVar14 + iVar6) = uVar5;" (assignment_expression "*(undefined4 *)((int)puVar14 + iVar6) = uVar5" (pointer_expression "*(undefined4 *)((int)puVar14 + iVar6)" (* "*") (cast_expression "(undefined4 *)((int)puVar14 + iVar6)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar14 + iVar6)" (( "(") (binary_expression "(int)puVar14 + iVar6" (cast_expression "(int)puVar14" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar14")) (+ "+") (identifier "iVar6")) () ")")))) (= "=") (identifier "uVar5")) (; ";")) (expression_statement "*piVar3 = 0;" (assignment_expression "*piVar3 = 0" (pointer_expression "*piVar3" (* "*") (identifier "piVar3")) (= "=") (number_literal "0")) (; ";")) (expression_statement "iVar4 = (*(code *)puVar2)(param_1);" (assignment_expression "iVar4 = (*(code *)puVar2)(param_1)" (identifier "iVar4") (= "=") (call_expression "(*(code *)puVar2)(param_1)" (parenthesized_expression "(*(code *)puVar2)" (( "(") (pointer_expression "*(code *)puVar2" (* "*") (cast_expression "(code *)puVar2" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar2"))) () ")")) (argument_list "(param_1)" (( "(") (identifier "param_1") () ")")))) (; ";")) (if_statement "if (iVar4 == 0) goto LAB_0001f67c;" (if "if") (parenthesized_expression "(iVar4 == 0)" (( "(") (binary_expression "iVar4 == 0" (identifier "iVar4") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_0001f67c;" (goto "goto") (statement_identifier "LAB_0001f67c") (; ";"))) (} "}"))) (expression_statement "uVar7 = uVar12 + uVar8;" (assignment_expression "uVar7 = uVar12 + uVar8" (identifier "uVar7") (= "=") (binary_expression "uVar12 + uVar8" (identifier "uVar12") (+ "+") (identifier "uVar8"))) (; ";")) (if_statement "if (local_44 - uVar12 <= uVar8) {\n        if (uVar7 < uVar12) {\nLAB_0001f920:\n                    \n          xalloc_die();\n        }\n        if (puVar11 == (undefined1 *)0x0) {\n          if (uVar7 == 0) {\n            local_44 = 0x40;\n          }\n          else {\n            local_44 = uVar7;\n            if ((int)uVar7 < 0) goto LAB_0001f920;\n          }\n        }\n        else {\n          if (0x55555553 < uVar7) goto LAB_0001f920;\n          local_44 = uVar7 + 1 + (uVar7 >> 1);\n        }\n        puVar11 = (undefined1 *)xrealloc(puVar11,local_44);\n      }" (if "if") (parenthesized_expression "(local_44 - uVar12 <= uVar8)" (( "(") (binary_expression "local_44 - uVar12 <= uVar8" (binary_expression "local_44 - uVar12" (identifier "local_44") (- "-") (identifier "uVar12")) (<= "<=") (identifier "uVar8")) () ")")) (compound_statement "{\n        if (uVar7 < uVar12) {\nLAB_0001f920:\n                    \n          xalloc_die();\n        }\n        if (puVar11 == (undefined1 *)0x0) {\n          if (uVar7 == 0) {\n            local_44 = 0x40;\n          }\n          else {\n            local_44 = uVar7;\n            if ((int)uVar7 < 0) goto LAB_0001f920;\n          }\n        }\n        else {\n          if (0x55555553 < uVar7) goto LAB_0001f920;\n          local_44 = uVar7 + 1 + (uVar7 >> 1);\n        }\n        puVar11 = (undefined1 *)xrealloc(puVar11,local_44);\n      }" ({ "{") (if_statement "if (uVar7 < uVar12) {\nLAB_0001f920:\n                    \n          xalloc_die();\n        }" (if "if") (parenthesized_expression "(uVar7 < uVar12)" (( "(") (binary_expression "uVar7 < uVar12" (identifier "uVar7") (< "<") (identifier "uVar12")) () ")")) (compound_statement "{\nLAB_0001f920:\n                    \n          xalloc_die();\n        }" ({ "{") (labeled_statement "LAB_0001f920:\n                    \n          xalloc_die();" (statement_identifier "LAB_0001f920") (: ":") (expression_statement "xalloc_die();" (call_expression "xalloc_die()" (identifier "xalloc_die") (argument_list "()" (( "(") () ")"))) (; ";"))) (} "}"))) (if_statement "if (puVar11 == (undefined1 *)0x0) {\n          if (uVar7 == 0) {\n            local_44 = 0x40;\n          }\n          else {\n            local_44 = uVar7;\n            if ((int)uVar7 < 0) goto LAB_0001f920;\n          }\n        }\n        else {\n          if (0x55555553 < uVar7) goto LAB_0001f920;\n          local_44 = uVar7 + 1 + (uVar7 >> 1);\n        }" (if "if") (parenthesized_expression "(puVar11 == (undefined1 *)0x0)" (( "(") (binary_expression "puVar11 == (undefined1 *)0x0" (identifier "puVar11") (== "==") (cast_expression "(undefined1 *)0x0" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n          if (uVar7 == 0) {\n            local_44 = 0x40;\n          }\n          else {\n            local_44 = uVar7;\n            if ((int)uVar7 < 0) goto LAB_0001f920;\n          }\n        }" ({ "{") (if_statement "if (uVar7 == 0) {\n            local_44 = 0x40;\n          }\n          else {\n            local_44 = uVar7;\n            if ((int)uVar7 < 0) goto LAB_0001f920;\n          }" (if "if") (parenthesized_expression "(uVar7 == 0)" (( "(") (binary_expression "uVar7 == 0" (identifier "uVar7") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n            local_44 = 0x40;\n          }" ({ "{") (expression_statement "local_44 = 0x40;" (assignment_expression "local_44 = 0x40" (identifier "local_44") (= "=") (number_literal "0x40")) (; ";")) (} "}")) (else_clause "else {\n            local_44 = uVar7;\n            if ((int)uVar7 < 0) goto LAB_0001f920;\n          }" (else "else") (compound_statement "{\n            local_44 = uVar7;\n            if ((int)uVar7 < 0) goto LAB_0001f920;\n          }" ({ "{") (expression_statement "local_44 = uVar7;" (assignment_expression "local_44 = uVar7" (identifier "local_44") (= "=") (identifier "uVar7")) (; ";")) (if_statement "if ((int)uVar7 < 0) goto LAB_0001f920;" (if "if") (parenthesized_expression "((int)uVar7 < 0)" (( "(") (binary_expression "(int)uVar7 < 0" (cast_expression "(int)uVar7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar7")) (< "<") (number_literal "0")) () ")")) (goto_statement "goto LAB_0001f920;" (goto "goto") (statement_identifier "LAB_0001f920") (; ";"))) (} "}")))) (} "}")) (else_clause "else {\n          if (0x55555553 < uVar7) goto LAB_0001f920;\n          local_44 = uVar7 + 1 + (uVar7 >> 1);\n        }" (else "else") (compound_statement "{\n          if (0x55555553 < uVar7) goto LAB_0001f920;\n          local_44 = uVar7 + 1 + (uVar7 >> 1);\n        }" ({ "{") (if_statement "if (0x55555553 < uVar7) goto LAB_0001f920;" (if "if") (parenthesized_expression "(0x55555553 < uVar7)" (( "(") (binary_expression "0x55555553 < uVar7" (number_literal "0x55555553") (< "<") (identifier "uVar7")) () ")")) (goto_statement "goto LAB_0001f920;" (goto "goto") (statement_identifier "LAB_0001f920") (; ";"))) (expression_statement "local_44 = uVar7 + 1 + (uVar7 >> 1);" (assignment_expression "local_44 = uVar7 + 1 + (uVar7 >> 1)" (identifier "local_44") (= "=") (binary_expression "uVar7 + 1 + (uVar7 >> 1)" (binary_expression "uVar7 + 1" (identifier "uVar7") (+ "+") (number_literal "1")) (+ "+") (parenthesized_expression "(uVar7 >> 1)" (( "(") (binary_expression "uVar7 >> 1" (identifier "uVar7") (>> ">>") (number_literal "1")) () ")")))) (; ";")) (} "}")))) (expression_statement "puVar11 = (undefined1 *)xrealloc(puVar11,local_44);" (assignment_expression "puVar11 = (undefined1 *)xrealloc(puVar11,local_44)" (identifier "puVar11") (= "=") (cast_expression "(undefined1 *)xrealloc(puVar11,local_44)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "xrealloc(puVar11,local_44)" (identifier "xrealloc") (argument_list "(puVar11,local_44)" (( "(") (identifier "puVar11") (, ",") (identifier "local_44") () ")"))))) (; ";")) (} "}"))) (expression_statement "(*(code *)PTR_memcpy_00036698)(puVar11 + uVar12,iVar16,uVar8);" (call_expression "(*(code *)PTR_memcpy_00036698)(puVar11 + uVar12,iVar16,uVar8)" (parenthesized_expression "(*(code *)PTR_memcpy_00036698)" (( "(") (pointer_expression "*(code *)PTR_memcpy_00036698" (* "*") (cast_expression "(code *)PTR_memcpy_00036698" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_memcpy_00036698"))) () ")")) (argument_list "(puVar11 + uVar12,iVar16,uVar8)" (( "(") (binary_expression "puVar11 + uVar12" (identifier "puVar11") (+ "+") (identifier "uVar12")) (, ",") (identifier "iVar16") (, ",") (identifier "uVar8") () ")"))) (; ";")) (expression_statement "uVar12 = uVar7;" (assignment_expression "uVar12 = uVar7" (identifier "uVar12") (= "=") (identifier "uVar7")) (; ";")) (goto_statement "goto LAB_0001f5d8;" (goto "goto") (statement_identifier "LAB_0001f5d8") (; ";")) (} "}"))) (labeled_statement "LAB_0001f67c:\n    iVar4 = *piVar3;" (statement_identifier "LAB_0001f67c") (: ":") (expression_statement "iVar4 = *piVar3;" (assignment_expression "iVar4 = *piVar3" (identifier "iVar4") (= "=") (pointer_expression "*piVar3" (* "*") (identifier "piVar3"))) (; ";"))) (if_statement "if (iVar4 == 0) {\n      if (iVar15 == 0) {\n        if (local_44 == uVar12) {\n          puVar11 = (undefined1 *)xrealloc(puVar11,local_44 + 1);\n          puVar13 = puVar11 + local_44;\n        }\n        else {\n          puVar13 = puVar11 + uVar12;\n        }\n      }\n      else {\n        if (local_3c == 0) {\n          puVar11 = (undefined1 *)xmalloc(uVar12 + 1);\n          puVar13 = puVar11;\n        }\n        else {\n          (*(code *)PTR_qsort_000365bc)(puVar14,local_3c,4,iVar15);\n          iVar15 = 0;\n          puVar11 = (undefined1 *)xmalloc(uVar12 + 1);\n          puVar9 = puVar14;\n          do {\n            puVar10 = puVar9 + 1;\n            iVar4 = (*(code *)PTR_stpcpy_00036680)(puVar11 + iVar15,*puVar9);\n            iVar15 = iVar15 + (iVar4 - (int)(puVar11 + iVar15)) + 1;\n            (*(code *)PTR_free_000366a0)(*puVar9);\n            puVar9 = puVar10;\n          } while (puVar14 + local_3c != puVar10);\n          puVar13 = puVar11 + iVar15;\n        }\n        (*(code *)PTR_free_000366a0)(puVar14);\n      }\n      *puVar13 = 0;\n      puVar13 = puVar11;\n    }\n    else {\n      (*(code *)PTR_free_000366a0)(puVar14);\n      puVar13 = (undefined1 *)0x0;\n      (*(code *)PTR_free_000366a0)(puVar11);\n      *piVar3 = iVar4;\n    }" (if "if") (parenthesized_expression "(iVar4 == 0)" (( "(") (binary_expression "iVar4 == 0" (identifier "iVar4") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      if (iVar15 == 0) {\n        if (local_44 == uVar12) {\n          puVar11 = (undefined1 *)xrealloc(puVar11,local_44 + 1);\n          puVar13 = puVar11 + local_44;\n        }\n        else {\n          puVar13 = puVar11 + uVar12;\n        }\n      }\n      else {\n        if (local_3c == 0) {\n          puVar11 = (undefined1 *)xmalloc(uVar12 + 1);\n          puVar13 = puVar11;\n        }\n        else {\n          (*(code *)PTR_qsort_000365bc)(puVar14,local_3c,4,iVar15);\n          iVar15 = 0;\n          puVar11 = (undefined1 *)xmalloc(uVar12 + 1);\n          puVar9 = puVar14;\n          do {\n            puVar10 = puVar9 + 1;\n            iVar4 = (*(code *)PTR_stpcpy_00036680)(puVar11 + iVar15,*puVar9);\n            iVar15 = iVar15 + (iVar4 - (int)(puVar11 + iVar15)) + 1;\n            (*(code *)PTR_free_000366a0)(*puVar9);\n            puVar9 = puVar10;\n          } while (puVar14 + local_3c != puVar10);\n          puVar13 = puVar11 + iVar15;\n        }\n        (*(code *)PTR_free_000366a0)(puVar14);\n      }\n      *puVar13 = 0;\n      puVar13 = puVar11;\n    }" ({ "{") (if_statement "if (iVar15 == 0) {\n        if (local_44 == uVar12) {\n          puVar11 = (undefined1 *)xrealloc(puVar11,local_44 + 1);\n          puVar13 = puVar11 + local_44;\n        }\n        else {\n          puVar13 = puVar11 + uVar12;\n        }\n      }\n      else {\n        if (local_3c == 0) {\n          puVar11 = (undefined1 *)xmalloc(uVar12 + 1);\n          puVar13 = puVar11;\n        }\n        else {\n          (*(code *)PTR_qsort_000365bc)(puVar14,local_3c,4,iVar15);\n          iVar15 = 0;\n          puVar11 = (undefined1 *)xmalloc(uVar12 + 1);\n          puVar9 = puVar14;\n          do {\n            puVar10 = puVar9 + 1;\n            iVar4 = (*(code *)PTR_stpcpy_00036680)(puVar11 + iVar15,*puVar9);\n            iVar15 = iVar15 + (iVar4 - (int)(puVar11 + iVar15)) + 1;\n            (*(code *)PTR_free_000366a0)(*puVar9);\n            puVar9 = puVar10;\n          } while (puVar14 + local_3c != puVar10);\n          puVar13 = puVar11 + iVar15;\n        }\n        (*(code *)PTR_free_000366a0)(puVar14);\n      }" (if "if") (parenthesized_expression "(iVar15 == 0)" (( "(") (binary_expression "iVar15 == 0" (identifier "iVar15") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        if (local_44 == uVar12) {\n          puVar11 = (undefined1 *)xrealloc(puVar11,local_44 + 1);\n          puVar13 = puVar11 + local_44;\n        }\n        else {\n          puVar13 = puVar11 + uVar12;\n        }\n      }" ({ "{") (if_statement "if (local_44 == uVar12) {\n          puVar11 = (undefined1 *)xrealloc(puVar11,local_44 + 1);\n          puVar13 = puVar11 + local_44;\n        }\n        else {\n          puVar13 = puVar11 + uVar12;\n        }" (if "if") (parenthesized_expression "(local_44 == uVar12)" (( "(") (binary_expression "local_44 == uVar12" (identifier "local_44") (== "==") (identifier "uVar12")) () ")")) (compound_statement "{\n          puVar11 = (undefined1 *)xrealloc(puVar11,local_44 + 1);\n          puVar13 = puVar11 + local_44;\n        }" ({ "{") (expression_statement "puVar11 = (undefined1 *)xrealloc(puVar11,local_44 + 1);" (assignment_expression "puVar11 = (undefined1 *)xrealloc(puVar11,local_44 + 1)" (identifier "puVar11") (= "=") (cast_expression "(undefined1 *)xrealloc(puVar11,local_44 + 1)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "xrealloc(puVar11,local_44 + 1)" (identifier "xrealloc") (argument_list "(puVar11,local_44 + 1)" (( "(") (identifier "puVar11") (, ",") (binary_expression "local_44 + 1" (identifier "local_44") (+ "+") (number_literal "1")) () ")"))))) (; ";")) (expression_statement "puVar13 = puVar11 + local_44;" (assignment_expression "puVar13 = puVar11 + local_44" (identifier "puVar13") (= "=") (binary_expression "puVar11 + local_44" (identifier "puVar11") (+ "+") (identifier "local_44"))) (; ";")) (} "}")) (else_clause "else {\n          puVar13 = puVar11 + uVar12;\n        }" (else "else") (compound_statement "{\n          puVar13 = puVar11 + uVar12;\n        }" ({ "{") (expression_statement "puVar13 = puVar11 + uVar12;" (assignment_expression "puVar13 = puVar11 + uVar12" (identifier "puVar13") (= "=") (binary_expression "puVar11 + uVar12" (identifier "puVar11") (+ "+") (identifier "uVar12"))) (; ";")) (} "}")))) (} "}")) (else_clause "else {\n        if (local_3c == 0) {\n          puVar11 = (undefined1 *)xmalloc(uVar12 + 1);\n          puVar13 = puVar11;\n        }\n        else {\n          (*(code *)PTR_qsort_000365bc)(puVar14,local_3c,4,iVar15);\n          iVar15 = 0;\n          puVar11 = (undefined1 *)xmalloc(uVar12 + 1);\n          puVar9 = puVar14;\n          do {\n            puVar10 = puVar9 + 1;\n            iVar4 = (*(code *)PTR_stpcpy_00036680)(puVar11 + iVar15,*puVar9);\n            iVar15 = iVar15 + (iVar4 - (int)(puVar11 + iVar15)) + 1;\n            (*(code *)PTR_free_000366a0)(*puVar9);\n            puVar9 = puVar10;\n          } while (puVar14 + local_3c != puVar10);\n          puVar13 = puVar11 + iVar15;\n        }\n        (*(code *)PTR_free_000366a0)(puVar14);\n      }" (else "else") (compound_statement "{\n        if (local_3c == 0) {\n          puVar11 = (undefined1 *)xmalloc(uVar12 + 1);\n          puVar13 = puVar11;\n        }\n        else {\n          (*(code *)PTR_qsort_000365bc)(puVar14,local_3c,4,iVar15);\n          iVar15 = 0;\n          puVar11 = (undefined1 *)xmalloc(uVar12 + 1);\n          puVar9 = puVar14;\n          do {\n            puVar10 = puVar9 + 1;\n            iVar4 = (*(code *)PTR_stpcpy_00036680)(puVar11 + iVar15,*puVar9);\n            iVar15 = iVar15 + (iVar4 - (int)(puVar11 + iVar15)) + 1;\n            (*(code *)PTR_free_000366a0)(*puVar9);\n            puVar9 = puVar10;\n          } while (puVar14 + local_3c != puVar10);\n          puVar13 = puVar11 + iVar15;\n        }\n        (*(code *)PTR_free_000366a0)(puVar14);\n      }" ({ "{") (if_statement "if (local_3c == 0) {\n          puVar11 = (undefined1 *)xmalloc(uVar12 + 1);\n          puVar13 = puVar11;\n        }\n        else {\n          (*(code *)PTR_qsort_000365bc)(puVar14,local_3c,4,iVar15);\n          iVar15 = 0;\n          puVar11 = (undefined1 *)xmalloc(uVar12 + 1);\n          puVar9 = puVar14;\n          do {\n            puVar10 = puVar9 + 1;\n            iVar4 = (*(code *)PTR_stpcpy_00036680)(puVar11 + iVar15,*puVar9);\n            iVar15 = iVar15 + (iVar4 - (int)(puVar11 + iVar15)) + 1;\n            (*(code *)PTR_free_000366a0)(*puVar9);\n            puVar9 = puVar10;\n          } while (puVar14 + local_3c != puVar10);\n          puVar13 = puVar11 + iVar15;\n        }" (if "if") (parenthesized_expression "(local_3c == 0)" (( "(") (binary_expression "local_3c == 0" (identifier "local_3c") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          puVar11 = (undefined1 *)xmalloc(uVar12 + 1);\n          puVar13 = puVar11;\n        }" ({ "{") (expression_statement "puVar11 = (undefined1 *)xmalloc(uVar12 + 1);" (assignment_expression "puVar11 = (undefined1 *)xmalloc(uVar12 + 1)" (identifier "puVar11") (= "=") (cast_expression "(undefined1 *)xmalloc(uVar12 + 1)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "xmalloc(uVar12 + 1)" (identifier "xmalloc") (argument_list "(uVar12 + 1)" (( "(") (binary_expression "uVar12 + 1" (identifier "uVar12") (+ "+") (number_literal "1")) () ")"))))) (; ";")) (expression_statement "puVar13 = puVar11;" (assignment_expression "puVar13 = puVar11" (identifier "puVar13") (= "=") (identifier "puVar11")) (; ";")) (} "}")) (else_clause "else {\n          (*(code *)PTR_qsort_000365bc)(puVar14,local_3c,4,iVar15);\n          iVar15 = 0;\n          puVar11 = (undefined1 *)xmalloc(uVar12 + 1);\n          puVar9 = puVar14;\n          do {\n            puVar10 = puVar9 + 1;\n            iVar4 = (*(code *)PTR_stpcpy_00036680)(puVar11 + iVar15,*puVar9);\n            iVar15 = iVar15 + (iVar4 - (int)(puVar11 + iVar15)) + 1;\n            (*(code *)PTR_free_000366a0)(*puVar9);\n            puVar9 = puVar10;\n          } while (puVar14 + local_3c != puVar10);\n          puVar13 = puVar11 + iVar15;\n        }" (else "else") (compound_statement "{\n          (*(code *)PTR_qsort_000365bc)(puVar14,local_3c,4,iVar15);\n          iVar15 = 0;\n          puVar11 = (undefined1 *)xmalloc(uVar12 + 1);\n          puVar9 = puVar14;\n          do {\n            puVar10 = puVar9 + 1;\n            iVar4 = (*(code *)PTR_stpcpy_00036680)(puVar11 + iVar15,*puVar9);\n            iVar15 = iVar15 + (iVar4 - (int)(puVar11 + iVar15)) + 1;\n            (*(code *)PTR_free_000366a0)(*puVar9);\n            puVar9 = puVar10;\n          } while (puVar14 + local_3c != puVar10);\n          puVar13 = puVar11 + iVar15;\n        }" ({ "{") (expression_statement "(*(code *)PTR_qsort_000365bc)(puVar14,local_3c,4,iVar15);" (call_expression "(*(code *)PTR_qsort_000365bc)(puVar14,local_3c,4,iVar15)" (parenthesized_expression "(*(code *)PTR_qsort_000365bc)" (( "(") (pointer_expression "*(code *)PTR_qsort_000365bc" (* "*") (cast_expression "(code *)PTR_qsort_000365bc" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_qsort_000365bc"))) () ")")) (argument_list "(puVar14,local_3c,4,iVar15)" (( "(") (identifier "puVar14") (, ",") (identifier "local_3c") (, ",") (number_literal "4") (, ",") (identifier "iVar15") () ")"))) (; ";")) (expression_statement "iVar15 = 0;" (assignment_expression "iVar15 = 0" (identifier "iVar15") (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar11 = (undefined1 *)xmalloc(uVar12 + 1);" (assignment_expression "puVar11 = (undefined1 *)xmalloc(uVar12 + 1)" (identifier "puVar11") (= "=") (cast_expression "(undefined1 *)xmalloc(uVar12 + 1)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "xmalloc(uVar12 + 1)" (identifier "xmalloc") (argument_list "(uVar12 + 1)" (( "(") (binary_expression "uVar12 + 1" (identifier "uVar12") (+ "+") (number_literal "1")) () ")"))))) (; ";")) (expression_statement "puVar9 = puVar14;" (assignment_expression "puVar9 = puVar14" (identifier "puVar9") (= "=") (identifier "puVar14")) (; ";")) (do_statement "do {\n            puVar10 = puVar9 + 1;\n            iVar4 = (*(code *)PTR_stpcpy_00036680)(puVar11 + iVar15,*puVar9);\n            iVar15 = iVar15 + (iVar4 - (int)(puVar11 + iVar15)) + 1;\n            (*(code *)PTR_free_000366a0)(*puVar9);\n            puVar9 = puVar10;\n          } while (puVar14 + local_3c != puVar10);" (do "do") (compound_statement "{\n            puVar10 = puVar9 + 1;\n            iVar4 = (*(code *)PTR_stpcpy_00036680)(puVar11 + iVar15,*puVar9);\n            iVar15 = iVar15 + (iVar4 - (int)(puVar11 + iVar15)) + 1;\n            (*(code *)PTR_free_000366a0)(*puVar9);\n            puVar9 = puVar10;\n          }" ({ "{") (expression_statement "puVar10 = puVar9 + 1;" (assignment_expression "puVar10 = puVar9 + 1" (identifier "puVar10") (= "=") (binary_expression "puVar9 + 1" (identifier "puVar9") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "iVar4 = (*(code *)PTR_stpcpy_00036680)(puVar11 + iVar15,*puVar9);" (assignment_expression "iVar4 = (*(code *)PTR_stpcpy_00036680)(puVar11 + iVar15,*puVar9)" (identifier "iVar4") (= "=") (call_expression "(*(code *)PTR_stpcpy_00036680)(puVar11 + iVar15,*puVar9)" (parenthesized_expression "(*(code *)PTR_stpcpy_00036680)" (( "(") (pointer_expression "*(code *)PTR_stpcpy_00036680" (* "*") (cast_expression "(code *)PTR_stpcpy_00036680" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_stpcpy_00036680"))) () ")")) (argument_list "(puVar11 + iVar15,*puVar9)" (( "(") (binary_expression "puVar11 + iVar15" (identifier "puVar11") (+ "+") (identifier "iVar15")) (, ",") (pointer_expression "*puVar9" (* "*") (identifier "puVar9")) () ")")))) (; ";")) (expression_statement "iVar15 = iVar15 + (iVar4 - (int)(puVar11 + iVar15)) + 1;" (assignment_expression "iVar15 = iVar15 + (iVar4 - (int)(puVar11 + iVar15)) + 1" (identifier "iVar15") (= "=") (binary_expression "iVar15 + (iVar4 - (int)(puVar11 + iVar15)) + 1" (binary_expression "iVar15 + (iVar4 - (int)(puVar11 + iVar15))" (identifier "iVar15") (+ "+") (parenthesized_expression "(iVar4 - (int)(puVar11 + iVar15))" (( "(") (binary_expression "iVar4 - (int)(puVar11 + iVar15)" (identifier "iVar4") (- "-") (cast_expression "(int)(puVar11 + iVar15)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(puVar11 + iVar15)" (( "(") (binary_expression "puVar11 + iVar15" (identifier "puVar11") (+ "+") (identifier "iVar15")) () ")")))) () ")"))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "(*(code *)PTR_free_000366a0)(*puVar9);" (call_expression "(*(code *)PTR_free_000366a0)(*puVar9)" (parenthesized_expression "(*(code *)PTR_free_000366a0)" (( "(") (pointer_expression "*(code *)PTR_free_000366a0" (* "*") (cast_expression "(code *)PTR_free_000366a0" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_free_000366a0"))) () ")")) (argument_list "(*puVar9)" (( "(") (pointer_expression "*puVar9" (* "*") (identifier "puVar9")) () ")"))) (; ";")) (expression_statement "puVar9 = puVar10;" (assignment_expression "puVar9 = puVar10" (identifier "puVar9") (= "=") (identifier "puVar10")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(puVar14 + local_3c != puVar10)" (( "(") (binary_expression "puVar14 + local_3c != puVar10" (binary_expression "puVar14 + local_3c" (identifier "puVar14") (+ "+") (identifier "local_3c")) (!= "!=") (identifier "puVar10")) () ")")) (; ";")) (expression_statement "puVar13 = puVar11 + iVar15;" (assignment_expression "puVar13 = puVar11 + iVar15" (identifier "puVar13") (= "=") (binary_expression "puVar11 + iVar15" (identifier "puVar11") (+ "+") (identifier "iVar15"))) (; ";")) (} "}")))) (expression_statement "(*(code *)PTR_free_000366a0)(puVar14);" (call_expression "(*(code *)PTR_free_000366a0)(puVar14)" (parenthesized_expression "(*(code *)PTR_free_000366a0)" (( "(") (pointer_expression "*(code *)PTR_free_000366a0" (* "*") (cast_expression "(code *)PTR_free_000366a0" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_free_000366a0"))) () ")")) (argument_list "(puVar14)" (( "(") (identifier "puVar14") () ")"))) (; ";")) (} "}")))) (expression_statement "*puVar13 = 0;" (assignment_expression "*puVar13 = 0" (pointer_expression "*puVar13" (* "*") (identifier "puVar13")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar13 = puVar11;" (assignment_expression "puVar13 = puVar11" (identifier "puVar13") (= "=") (identifier "puVar11")) (; ";")) (} "}")) (else_clause "else {\n      (*(code *)PTR_free_000366a0)(puVar14);\n      puVar13 = (undefined1 *)0x0;\n      (*(code *)PTR_free_000366a0)(puVar11);\n      *piVar3 = iVar4;\n    }" (else "else") (compound_statement "{\n      (*(code *)PTR_free_000366a0)(puVar14);\n      puVar13 = (undefined1 *)0x0;\n      (*(code *)PTR_free_000366a0)(puVar11);\n      *piVar3 = iVar4;\n    }" ({ "{") (expression_statement "(*(code *)PTR_free_000366a0)(puVar14);" (call_expression "(*(code *)PTR_free_000366a0)(puVar14)" (parenthesized_expression "(*(code *)PTR_free_000366a0)" (( "(") (pointer_expression "*(code *)PTR_free_000366a0" (* "*") (cast_expression "(code *)PTR_free_000366a0" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_free_000366a0"))) () ")")) (argument_list "(puVar14)" (( "(") (identifier "puVar14") () ")"))) (; ";")) (expression_statement "puVar13 = (undefined1 *)0x0;" (assignment_expression "puVar13 = (undefined1 *)0x0" (identifier "puVar13") (= "=") (cast_expression "(undefined1 *)0x0" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "(*(code *)PTR_free_000366a0)(puVar11);" (call_expression "(*(code *)PTR_free_000366a0)(puVar11)" (parenthesized_expression "(*(code *)PTR_free_000366a0)" (( "(") (pointer_expression "*(code *)PTR_free_000366a0" (* "*") (cast_expression "(code *)PTR_free_000366a0" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_free_000366a0"))) () ")")) (argument_list "(puVar11)" (( "(") (identifier "puVar11") () ")"))) (; ";")) (expression_statement "*piVar3 = iVar4;" (assignment_expression "*piVar3 = iVar4" (pointer_expression "*piVar3" (* "*") (identifier "piVar3")) (= "=") (identifier "iVar4")) (; ";")) (} "}")))) (} "}")))) (return_statement "return puVar13;" (return "return") (identifier "puVar13") (; ";")) (} "}")))
(translation_unit (function_definition type: (type_identifier) declarator: (pointer_declarator declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (primitive_type) declarator: (identifier)) (parameter_declaration type: (primitive_type) declarator: (identifier))))) body: (compound_statement (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (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: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (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))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (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 (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (while_statement condition: (parenthesized_expression (true)) body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (char_literal (character)))) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) right: (binary_expression left: (identifier) right: (char_literal (character))))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (char_literal (escape_sequence)))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (identifier))))) (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: (break_statement)) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal)))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (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 (comma_expression left: (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))) right: (comma_expression left: (assignment_expression left: (identifier) right: (identifier)) right: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal))))))) consequence: (goto_statement label: (statement_identifier))))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier))) consequence: (goto_statement label: (statement_identifier))) (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: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier))))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (identifier))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (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 (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (identifier))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (labeled_statement label: (statement_identifier) (expression_statement (call_expression function: (identifier) arguments: (argument_list)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (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: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))))))) alternative: (else_clause (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (identifier) (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 (binary_expression left: (identifier) right: (identifier)) (identifier) (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (goto_statement label: (statement_identifier)))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) 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: (identifier) arguments: (argument_list (identifier) (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))))))) alternative: (else_clause (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) alternative: (else_clause (compound_statement (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (identifier) (identifier) (number_literal) (identifier)))) (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: (call_expression function: (identifier) arguments: (argument_list (binary_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 (binary_expression left: (identifier) right: (identifier)) (pointer_expression argument: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))))))) right: (number_literal)))) (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 (pointer_expression argument: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier))))))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (identifier))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) alternative: (else_clause (compound_statement (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (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)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier))))))))) (return_statement (identifier)))))

undefined1 * MASKED(int param_1,int param_2)

{
  char cVar1;
  undefined *puVar2;
  int *piVar3;
  int iVar4;
  undefined4 uVar5;
  int iVar6;
  uint uVar7;
  uint uVar8;
  undefined4 *puVar9;
  undefined4 *puVar10;
  undefined1 *puVar11;
  uint uVar12;
  undefined1 *puVar13;
  undefined4 *puVar14;
  int iVar15;
  int iVar16;
  uint local_44;
  uint local_40;
  uint local_3c;
  
  iVar15 = *(int *)(PTR_DAT_00036388 + param_2 * 4 + 0x5fe8);
  if (param_1 == 0) {
    puVar13 = (undefined1 *)0x0;
  }
  else {
    local_3c = 0;
    piVar3 = (int *)(*(code *)PTR___errno_location_00036604)();
    puVar14 = (undefined4 *)0x0;
    local_40 = 0;
    local_44 = 0;
    puVar11 = (undefined1 *)0x0;
    uVar12 = 0;
LAB_0001f5d8:
    puVar2 = PTR_readdir64_000365c0;
    *piVar3 = 0;
    iVar4 = (*(code *)puVar2)(param_1);
    if (iVar4 != 0) {
      while( true ) {
        cVar1 = *(char *)(iVar4 + 0x13);
        iVar16 = iVar4 + 0x13;
        if ((cVar1 == '.') && (cVar1 = *(char *)(iVar4 + 0x14), cVar1 == '.')) {
          cVar1 = *(char *)(iVar4 + 0x15);
        }
        if (cVar1 == '\0') goto LAB_0001f5d8;
        iVar4 = (*(code *)PTR_strlen_00036638)(iVar16);
        uVar8 = iVar4 + 1;
        if (iVar15 == 0) break;
        if (local_3c == local_40) {
          if (puVar14 == (undefined4 *)0x0) {
            if (local_40 == 0) {
              local_40 = 0x10;
              iVar6 = 0;
              local_3c = 1;
              iVar4 = 0x40;
            }
            else {
              iVar6 = local_40 << 2;
              if ((iVar6 < 0) || (local_3c = local_40 + 1, iVar4 = iVar6, local_40 >> 0x1e != 0))
              goto LAB_0001f920;
            }
          }
          else {
            uVar7 = local_40 + 1;
            if (0x15555554 < local_40) goto LAB_0001f920;
            iVar6 = local_3c << 2;
            local_40 = uVar7 + (local_40 >> 1);
            iVar4 = local_40 * 4;
            local_3c = uVar7;
          }
          puVar14 = (undefined4 *)xrealloc(puVar14,iVar4);
        }
        else {
          iVar6 = local_3c << 2;
          local_3c = local_3c + 1;
        }
        uVar12 = uVar12 + uVar8;
        uVar5 = xstrdup(iVar16);
        puVar2 = PTR_readdir64_000365c0;
        *(undefined4 *)((int)puVar14 + iVar6) = uVar5;
        *piVar3 = 0;
        iVar4 = (*(code *)puVar2)(param_1);
        if (iVar4 == 0) goto LAB_0001f67c;
      }
      uVar7 = uVar12 + uVar8;
      if (local_44 - uVar12 <= uVar8) {
        if (uVar7 < uVar12) {
LAB_0001f920:
                    /* WARNING: Subroutine does not return */
          xalloc_die();
        }
        if (puVar11 == (undefined1 *)0x0) {
          if (uVar7 == 0) {
            local_44 = 0x40;
          }
          else {
            local_44 = uVar7;
            if ((int)uVar7 < 0) goto LAB_0001f920;
          }
        }
        else {
          if (0x55555553 < uVar7) goto LAB_0001f920;
          local_44 = uVar7 + 1 + (uVar7 >> 1);
        }
        puVar11 = (undefined1 *)xrealloc(puVar11,local_44);
      }
      (*(code *)PTR_memcpy_00036698)(puVar11 + uVar12,iVar16,uVar8);
      uVar12 = uVar7;
      goto LAB_0001f5d8;
    }
LAB_0001f67c:
    iVar4 = *piVar3;
    if (iVar4 == 0) {
      if (iVar15 == 0) {
        if (local_44 == uVar12) {
          puVar11 = (undefined1 *)xrealloc(puVar11,local_44 + 1);
          puVar13 = puVar11 + local_44;
        }
        else {
          puVar13 = puVar11 + uVar12;
        }
      }
      else {
        if (local_3c == 0) {
          puVar11 = (undefined1 *)xmalloc(uVar12 + 1);
          puVar13 = puVar11;
        }
        else {
          (*(code *)PTR_qsort_000365bc)(puVar14,local_3c,4,iVar15);
          iVar15 = 0;
          puVar11 = (undefined1 *)xmalloc(uVar12 + 1);
          puVar9 = puVar14;
          do {
            puVar10 = puVar9 + 1;
            iVar4 = (*(code *)PTR_stpcpy_00036680)(puVar11 + iVar15,*puVar9);
            iVar15 = iVar15 + (iVar4 - (int)(puVar11 + iVar15)) + 1;
            (*(code *)PTR_free_000366a0)(*puVar9);
            puVar9 = puVar10;
          } while (puVar14 + local_3c != puVar10);
          puVar13 = puVar11 + iVar15;
        }
        (*(code *)PTR_free_000366a0)(puVar14);
      }
      *puVar13 = 0;
      puVar13 = puVar11;
    }
    else {
      (*(code *)PTR_free_000366a0)(puVar14);
      puVar13 = (undefined1 *)0x0;
      (*(code *)PTR_free_000366a0)(puVar11);
      *piVar3 = iVar4;
    }
  }
  return puVar13;
}

