
size_t calculate_columns(_Bool by_columns)

{
  char cVar1;
  uint uVar2;
  void *pvVar3;
  undefined4 *puVar4;
  uint uVar5;
  undefined4 *puVar6;
  char *pcVar7;
  undefined3 in_register_00000010;
  uint uVar8;
  size_t sVar9;
  uint *puVar10;
  undefined1 *puVar11;
  uint uVar12;
  size_t sVar13;
  uint uVar14;
  int iVar15;
  int iVar16;
  int iVar17;
  int iVar18;
  int iVar19;
  size_t sVar20;
  int in_t9;
  uint uVar21;
  
  iVar16 = *(int *)(in_t9 + 0x2fbd4);
  iVar15 = *(int *)(in_t9 + 0x2fbd4);
  uVar14 = *(uint *)(iVar16 + -0x59a8);
  uVar2 = *(uint *)(iVar15 + -0x5af4);
  iVar17 = *(int *)(in_t9 + 0x2fbd4);
  sVar20 = uVar2;
  if (uVar14 <= uVar2) {
    sVar20 = uVar14;
  }
  if (sVar20 <= *(uint *)(iVar17 + -0x6990)) {
LAB_00019798:
    if (sVar20 != 0) {
      iVar15 = 0;
      iVar17 = 3;
      puVar11 = *(undefined1 **)(*(int *)(in_t9 + 0x2fbd4) + -0x5af0);
      do {
        puVar4 = *(undefined4 **)(puVar11 + 8);
        iVar15 = iVar15 + 4;
        *puVar11 = 1;
        *(int *)(puVar11 + 4) = iVar17;
        puVar6 = (undefined4 *)((int)puVar4 + iVar15);
        do {
          *puVar4 = 3;
          puVar4 = puVar4 + 1;
        } while (puVar6 != puVar4);
        puVar11 = puVar11 + 0xc;
        iVar17 = iVar17 + 3;
      } while (iVar15 != sVar20 << 2);
    }
    if (uVar14 != 0) {
      uVar2 = 0;
      iVar17 = *(int *)(in_t9 + 0x2fbd4);
      iVar19 = *(int *)(in_t9 + 0x2fbd4);
      iVar18 = *(int *)(in_t9 + 0x2fbd4);
      iVar15 = *(int *)(iVar17 + -0x59b0);
      do {
        sVar9 = length_of_file_name_and_frills(*(fileinfo **)(iVar15 + uVar2 * 4));
        uVar14 = *(uint *)(iVar16 + -0x59a8);
        if (sVar20 != 0) {
          uVar8 = *(uint *)(iVar19 + -0x5a58);
          pcVar7 = *(char **)(iVar18 + -0x5af0);
          uVar5 = 0;
          do {
            uVar12 = uVar5 + 1;
            if (*pcVar7 != '\0') {
              sVar13 = sVar9;
              if (CONCAT31(in_register_00000010,by_columns) == 0) {
                if (uVar12 == 0) {
                  trap(7);
                }
                uVar21 = uVar2 % uVar12;
                if (uVar21 != uVar5) {
LAB_00019864:
                  sVar13 = sVar9 + 2;
                  goto LAB_00019868;
                }
                iVar15 = *(int *)(pcVar7 + 8);
              }
              else {
                if (uVar12 == 0) {
                  trap(7);
                }
                uVar21 = ((uVar14 + uVar12) - 1) / uVar12;
                if (uVar21 == 0) {
                  trap(7);
                }
                uVar21 = uVar2 / uVar21;
                if (uVar21 != uVar5) goto LAB_00019864;
LAB_00019868:
                iVar15 = *(int *)(pcVar7 + 8);
              }
              puVar10 = (uint *)(iVar15 + uVar21 * 4);
              uVar5 = *puVar10;
              if (uVar5 < sVar13) {
                *(uint *)(pcVar7 + 4) = (*(int *)(pcVar7 + 4) - uVar5) + sVar13;
                *puVar10 = sVar13;
                *pcVar7 = *(uint *)(pcVar7 + 4) < uVar8;
              }
            }
            pcVar7 = pcVar7 + 0xc;
            uVar5 = uVar12;
          } while (sVar20 != uVar12);
        }
        uVar2 = uVar2 + 1;
        iVar15 = *(int *)(iVar17 + -0x59b0);
      } while (uVar2 < uVar14);
    }
    if (1 < sVar20) {
      iVar15 = *(int *)(*(int *)(in_t9 + 0x2fbd4) + -0x5af0) + sVar20 * 0xc;
      cVar1 = *(char *)(iVar15 + -0xc);
      while (cVar1 == '\0') {
        sVar20 = sVar20 - 1;
        if (sVar20 == 1) {
          return 1;
        }
        cVar1 = *(char *)(iVar15 + -0x18);
        iVar15 = iVar15 + -0xc;
      }
    }
    return sVar20;
  }
  iVar18 = *(int *)(in_t9 + 0x2fbd4);
  if (sVar20 < uVar2 >> 1) {
    uVar2 = sVar20 * 2;
    if (((int)(sVar20 * 0x18) < 0) ||
       (sVar20 * 3 >> 0x1d != 0 || (uint)(sVar20 * 3 < uVar2) != (int)sVar20 >> 0x1f))
    goto LAB_000199b4;
    pvVar3 = xrealloc(*(void **)(iVar18 + -0x5af0),sVar20 * 0x18);
    *(void **)(iVar18 + -0x5af0) = pvVar3;
  }
  else {
    if (((int)(uVar2 * 0xc) < 0) ||
       (uVar2 * 3 >> 0x1e != 0 || (uint)(uVar2 * 3 < uVar2 * 2) != (int)uVar2 >> 0x1f))
    goto LAB_000199b4;
    pvVar3 = xrealloc(*(void **)(iVar18 + -0x5af0),uVar2 * 0xc);
    uVar2 = *(uint *)(iVar15 + -0x5af4);
    *(void **)(iVar18 + -0x5af0) = pvVar3;
  }
  uVar14 = uVar2 - *(int *)(iVar17 + -0x6990);
  uVar8 = *(int *)(iVar17 + -0x6990) + 1 + uVar2;
  uVar5 = uVar14 * uVar8;
  if (uVar2 <= uVar8) {
    if (uVar14 == 0) {
      trap(7);
    }
    if (((uVar8 == uVar5 / uVar14) && (sVar9 = (uVar5 >> 1) << 2, -1 < (int)sVar9)) &&
       (-1 < (int)uVar5)) {
      pvVar3 = xmalloc(sVar9);
      uVar14 = *(uint *)(iVar17 + -0x6990);
      if (uVar14 < uVar2) {
        iVar15 = (uVar14 + 1) * 4;
        iVar18 = *(int *)(iVar18 + -0x5af0) + uVar14 * 0xc;
        do {
          *(void **)(iVar18 + 8) = pvVar3;
          pvVar3 = (void *)((int)pvVar3 + iVar15);
          iVar15 = iVar15 + 4;
          iVar18 = iVar18 + 0xc;
        } while ((uVar2 + 1) * 4 != iVar15);
      }
      uVar14 = *(uint *)(iVar16 + -0x59a8);
      *(uint *)(iVar17 + -0x6990) = uVar2;
      goto LAB_00019798;
    }
  }
LAB_000199b4:
                    /* WARNING: Subroutine does not return */
  xalloc_die();
}



uint FUN_00019634(int param_1)

{
  char cVar1;
  undefined *puVar2;
  undefined *puVar3;
  uint uVar4;
  undefined4 uVar5;
  int iVar6;
  undefined4 *puVar7;
  uint uVar8;
  int iVar9;
  undefined4 *puVar10;
  char *pcVar11;
  uint uVar12;
  int iVar13;
  uint *puVar14;
  undefined1 *puVar15;
  uint uVar16;
  uint uVar17;
  uint uVar18;
  uint uVar19;
  uint uVar20;
  uint uVar21;
  
  puVar2 = PTR_DAT_00049208;
  uVar18 = *(uint *)(PTR_DAT_00049208 + -0x59a8);
  uVar4 = *(uint *)(PTR_DAT_00049208 + -0x5af4);
  uVar20 = uVar4;
  if (uVar18 <= uVar4) {
    uVar20 = uVar18;
  }
  if (uVar20 <= *(uint *)(PTR_DAT_00049208 + -0x6990)) {
LAB_00019798:
    if (uVar20 != 0) {
      iVar6 = 0;
      iVar9 = 3;
      puVar15 = *(undefined1 **)(PTR_DAT_00049208 + -0x5af0);
      do {
        puVar7 = *(undefined4 **)(puVar15 + 8);
        iVar6 = iVar6 + 4;
        *puVar15 = 1;
        *(int *)(puVar15 + 4) = iVar9;
        puVar10 = (undefined4 *)((int)puVar7 + iVar6);
        do {
          *puVar7 = 3;
          puVar7 = puVar7 + 1;
        } while (puVar10 != puVar7);
        puVar15 = puVar15 + 0xc;
        iVar9 = iVar9 + 3;
      } while (iVar6 != uVar20 << 2);
    }
    puVar3 = PTR_DAT_00049208;
    if (uVar18 != 0) {
      uVar4 = 0;
      iVar6 = *(int *)(PTR_DAT_00049208 + -0x59b0);
      do {
        uVar18 = FUN_00019404(*(undefined4 *)(iVar6 + uVar4 * 4));
        uVar8 = *(uint *)(puVar2 + -0x59a8);
        if (uVar20 != 0) {
          uVar19 = *(uint *)(puVar3 + -0x5a58);
          pcVar11 = *(char **)(puVar3 + -0x5af0);
          uVar12 = 0;
          do {
            uVar16 = uVar12 + 1;
            if (*pcVar11 != '\0') {
              uVar17 = uVar18;
              if (param_1 == 0) {
                if (uVar16 == 0) {
                  trap(7);
                }
                uVar21 = uVar4 % uVar16;
                if (uVar21 != uVar12) {
LAB_00019864:
                  uVar17 = uVar18 + 2;
                  goto LAB_00019868;
                }
                iVar6 = *(int *)(pcVar11 + 8);
              }
              else {
                if (uVar16 == 0) {
                  trap(7);
                }
                uVar21 = ((uVar8 + uVar16) - 1) / uVar16;
                if (uVar21 == 0) {
                  trap(7);
                }
                uVar21 = uVar4 / uVar21;
                if (uVar21 != uVar12) goto LAB_00019864;
LAB_00019868:
                iVar6 = *(int *)(pcVar11 + 8);
              }
              puVar14 = (uint *)(iVar6 + uVar21 * 4);
              uVar12 = *puVar14;
              if (uVar12 < uVar17) {
                *(uint *)(pcVar11 + 4) = (*(int *)(pcVar11 + 4) - uVar12) + uVar17;
                *puVar14 = uVar17;
                *pcVar11 = *(uint *)(pcVar11 + 4) < uVar19;
              }
            }
            pcVar11 = pcVar11 + 0xc;
            uVar12 = uVar16;
          } while (uVar20 != uVar16);
        }
        uVar4 = uVar4 + 1;
        iVar6 = *(int *)(puVar3 + -0x59b0);
      } while (uVar4 < uVar8);
    }
    if (1 < uVar20) {
      iVar6 = *(int *)(PTR_DAT_00049208 + -0x5af0) + uVar20 * 0xc;
      cVar1 = *(char *)(iVar6 + -0xc);
      while (cVar1 == '\0') {
        uVar20 = uVar20 - 1;
        if (uVar20 == 1) {
          return 1;
        }
        cVar1 = *(char *)(iVar6 + -0x18);
        iVar6 = iVar6 + -0xc;
      }
    }
    return uVar20;
  }
  if (uVar20 < uVar4 >> 1) {
    uVar4 = uVar20 * 2;
    if (((int)(uVar20 * 0x18) < 0) ||
       (uVar20 * 3 >> 0x1d != 0 || (uint)(uVar20 * 3 < uVar4) != (int)uVar20 >> 0x1f))
    goto LAB_000199b4;
    uVar5 = xrealloc(*(undefined4 *)(PTR_DAT_00049208 + -0x5af0));
    *(undefined4 *)(puVar2 + -0x5af0) = uVar5;
  }
  else {
    if (((int)(uVar4 * 0xc) < 0) ||
       (uVar4 * 3 >> 0x1e != 0 || (uint)(uVar4 * 3 < uVar4 * 2) != (int)uVar4 >> 0x1f))
    goto LAB_000199b4;
    uVar5 = xrealloc(*(undefined4 *)(PTR_DAT_00049208 + -0x5af0));
    uVar4 = *(uint *)(puVar2 + -0x5af4);
    *(undefined4 *)(puVar2 + -0x5af0) = uVar5;
  }
  uVar18 = uVar4 - *(int *)(puVar2 + -0x6990);
  uVar12 = *(int *)(puVar2 + -0x6990) + 1 + uVar4;
  uVar8 = uVar18 * uVar12;
  if (uVar4 <= uVar12) {
    if (uVar18 == 0) {
      trap(7);
    }
    if (((uVar12 == uVar8 / uVar18) && (-1 < (int)((uVar8 >> 1) << 2))) && (-1 < (int)uVar8)) {
      iVar6 = xmalloc();
      uVar18 = *(uint *)(puVar2 + -0x6990);
      if (uVar18 < uVar4) {
        iVar9 = (uVar18 + 1) * 4;
        iVar13 = *(int *)(puVar2 + -0x5af0) + uVar18 * 0xc;
        do {
          *(int *)(iVar13 + 8) = iVar6;
          iVar6 = iVar6 + iVar9;
          iVar9 = iVar9 + 4;
          iVar13 = iVar13 + 0xc;
        } while ((uVar4 + 1) * 4 != iVar9);
      }
      uVar18 = *(uint *)(puVar2 + -0x59a8);
      *(uint *)(puVar2 + -0x6990) = uVar4;
      goto LAB_00019798;
    }
  }
LAB_000199b4:
                    /* WARNING: Subroutine does not return */
  xalloc_die();
}


lui gp,0x3
addiu gp,gp,0x7bac
addu gp,gp,t9
addiu sp,sp,-0x40
sw s1,0x20(sp)
sw s0,0x1c(sp)
lw s1,-0x7fd8(gp)
lw s0,-0x7fd8(gp)
sw s2,0x24(sp)
sw s7,0x38(sp)
or s7,a0,zero
sw s5,0x30(sp)
lw t2,-0x59a8(s1)
lw v0,-0x5af4(s0)
lw s2,-0x7fd8(gp)
sw gp,0x10(sp)
sltu s5,v0,t2
sw ra,0x3c(sp)
or a0,v0,zero
sw s6,0x34(sp)
movz a0,t2,s5
sw s4,0x2c(sp)
sw s3,0x28(sp)
lw v1,-0x6990(s2)
sltu v1,v1,a0
beq v1,zero,0x00019798
_or s5,a0,zero
lw s3,-0x7fd8(gp)
srl v1,v0,0x1
sltu v1,a0,v1
bne v1,zero,0x0001996c
_lw a0,-0x5af0(s3)
sll v1,v0,0x1
srl a1,v0,0x1f
addu v0,v1,v0
sltu v1,v0,v1
addu v1,v1,a1
srl a2,v0,0x1e
sll v1,v1,0x2
sll a1,v0,0x2
or v1,a2,v1
bltz a1,0x000199b4
_sltu v1,zero,v1
bne v1,zero,0x000199b4
_lw t9,-0x7f54(gp)
bal 0x0002896c
_nop
lw gp,0x10(sp)
lw s0,-0x5af4(s0)
sw v0,-0x5af0(s3)
lw v0,-0x6990(s2)
addiu a0,v0,0x1
subu v0,s0,v0
addu a0,a0,s0
sltu a1,a0,s0
bne a1,zero,0x000199b4
_mul v1,v0,a0
teq v0,zero
divu v1,v0
mflo v0
bne a0,v0,0x000199b4
_srl a0,v1,0x1
sll a0,a0,0x2
bltz a0,0x000199b4
_srl v1,v1,0x1f
bne v1,zero,0x000199b4
_lw t9,-0x7fb8(gp)
bal 0x000288b0
_nop
lw a1,-0x6990(s2)
sltu v1,a1,s0
beq v1,zero,0x00019790
_lw gp,0x10(sp)
sll a2,a1,0x1
lw a0,-0x5af0(s3)
addiu v1,a1,0x1
addu a2,a2,a1
addiu a1,s0,0x1
sll a2,a2,0x2
sll v1,v1,0x2
addu a0,a0,a2
sll a1,a1,0x2
sw v0,0x8(a0)
addu v0,v0,v1
addiu v1,v1,0x4
bne a1,v1,0x0001977c
_addiu a0,a0,0xc
lw t2,-0x59a8(s1)
sw s0,-0x6990(s2)
beq s5,zero,0x000197e8
_lw v0,-0x7fd8(gp)
sll t1,s5,0x2
or a2,zero,zero
li a3,0x3
li t0,0x1
lw a1,-0x5af0(v0)
li a0,0x3
lw v0,0x8(a1)
addiu a2,a2,0x4
sb t0,0x0(a1)
sw a3,0x4(a1)
addu v1,v0,a2
sw a0,0x0(v0)
addiu v0,v0,0x4
bne v1,v0,0x000197cc
_nop
addiu a1,a1,0xc
bne a2,t1,0x000197b8
_addiu a3,a3,0x3
beq t2,zero,0x000198f4
_sltiu v0,s5,0x2
lw s0,-0x7f60(gp)
or s6,zero,zero
lw s2,-0x7fd8(gp)
lw s4,-0x7fd8(gp)
lw s3,-0x7fd8(gp)
addiu s0,s0,-0x6bfc
lw v0,-0x59b0(s2)
sll v1,s6,0x2
or t9,s0,zero
addu v0,v0,v1
bal 0x00019404
_lw a0,0x0(v0)
lw gp,0x10(sp)
beq s5,zero,0x000198e0
_lw t0,-0x59a8(s1)
or a1,zero,zero
lw t2,-0x5a58(s4)
addiu t1,v0,0x2
b 0x000198b0
_lw v1,-0x5af0(s3)
addiu a0,a0,-0x1
teq a2,zero
divu a0,a2
mflo a0
teq a0,zero
divu s6,a0
mflo a0
beq a0,a1,0x00019868
_or a3,v0,zero
or a3,t1,zero
lw a1,0x8(v1)
sll a0,a0,0x2
addu a0,a1,a0
lw t3,0x0(a0)
sltu a1,t3,a3
beq a1,zero,0x000198a8
_or a1,a2,zero
lw a1,0x4(v1)
subu a1,a1,t3
addu a1,a1,a3
sw a1,0x4(v1)
sw a3,0x0(a0)
lw a0,0x4(v1)
sltu a0,a0,t2
sb a0,0x0(v1)
or a1,a2,zero
beq s5,a2,0x000198e0
_addiu v1,v1,0xc
lbu a0,0x0(v1)
beq a0,zero,0x000198a4
_addiu a2,a1,0x1
bne s7,zero,0x00019840
_addu a0,t0,a2
teq a2,zero
divu s6,a2
mfhi a0
bne a0,a1,0x00019864
_or a3,v0,zero
b 0x0001986c
_lw a1,0x8(v1)
addiu s6,s6,0x1
sltu t0,s6,t0
bne t0,zero,0x0001980c
_lw v0,-0x59b0(s2)
sltiu v0,s5,0x2
bne v0,zero,0x0001993c
_lw v0,-0x7fd8(gp)
sll v1,s5,0x1
addu v1,v1,s5
lw v0,-0x5af0(v0)
sll v1,v1,0x2
addu v0,v0,v1
lbu v1,-0xc(v0)
bne v1,zero,0x00019940
_lw ra,0x3c(sp)
b 0x00019930
_li a0,0x1
lbu v1,-0xc(v0)
bne v1,zero,0x00019940
_lw ra,0x3c(sp)
addiu s5,s5,-0x1
bne s5,a0,0x00019924
_addiu v0,v0,-0xc
lw ra,0x3c(sp)
or v0,s5,zero
lw s7,0x38(sp)
lw s6,0x34(sp)
lw s5,0x30(sp)
lw s4,0x2c(sp)
lw s3,0x28(sp)
lw s2,0x24(sp)
lw s1,0x20(sp)
lw s0,0x1c(sp)
jr ra
_addiu sp,sp,0x40
sll s0,s5,0x1
srl a1,s5,0x1f
addu v1,s0,s5
sltu v0,v1,s0
addu v0,v0,a1
srl a2,v1,0x1d
sll v0,v0,0x3
sll a1,v1,0x3
or v0,a2,v0
bltz a1,0x000199b4
_sltu v0,zero,v0
bne v0,zero,0x000199b4
_lw t9,-0x7f54(gp)
bal 0x0002896c
_nop
lw gp,0x10(sp)
b 0x000196fc
_sw v0,-0x5af0(s3)
lw t9,-0x7fac(gp)
bal 0x00028cd0
_nop
(translation_unit "uint FUN_00019634(int param_1)\n\n{\n  char cVar1;\n  undefined *puVar2;\n  undefined *puVar3;\n  uint uVar4;\n  undefined4 uVar5;\n  int iVar6;\n  undefined4 *puVar7;\n  uint uVar8;\n  int iVar9;\n  undefined4 *puVar10;\n  char *pcVar11;\n  uint uVar12;\n  int iVar13;\n  uint *puVar14;\n  undefined1 *puVar15;\n  uint uVar16;\n  uint uVar17;\n  uint uVar18;\n  uint uVar19;\n  uint uVar20;\n  uint uVar21;\n  \n  puVar2 = PTR_DAT_00049208;\n  uVar18 = *(uint *)(PTR_DAT_00049208 + -0x59a8);\n  uVar4 = *(uint *)(PTR_DAT_00049208 + -0x5af4);\n  uVar20 = uVar4;\n  if (uVar18 <= uVar4) {\n    uVar20 = uVar18;\n  }\n  if (uVar20 <= *(uint *)(PTR_DAT_00049208 + -0x6990)) {\nLAB_00019798:\n    if (uVar20 != 0) {\n      iVar6 = 0;\n      iVar9 = 3;\n      puVar15 = *(undefined1 **)(PTR_DAT_00049208 + -0x5af0);\n      do {\n        puVar7 = *(undefined4 **)(puVar15 + 8);\n        iVar6 = iVar6 + 4;\n        *puVar15 = 1;\n        *(int *)(puVar15 + 4) = iVar9;\n        puVar10 = (undefined4 *)((int)puVar7 + iVar6);\n        do {\n          *puVar7 = 3;\n          puVar7 = puVar7 + 1;\n        } while (puVar10 != puVar7);\n        puVar15 = puVar15 + 0xc;\n        iVar9 = iVar9 + 3;\n      } while (iVar6 != uVar20 << 2);\n    }\n    puVar3 = PTR_DAT_00049208;\n    if (uVar18 != 0) {\n      uVar4 = 0;\n      iVar6 = *(int *)(PTR_DAT_00049208 + -0x59b0);\n      do {\n        uVar18 = FUN_00019404(*(undefined4 *)(iVar6 + uVar4 * 4));\n        uVar8 = *(uint *)(puVar2 + -0x59a8);\n        if (uVar20 != 0) {\n          uVar19 = *(uint *)(puVar3 + -0x5a58);\n          pcVar11 = *(char **)(puVar3 + -0x5af0);\n          uVar12 = 0;\n          do {\n            uVar16 = uVar12 + 1;\n            if (*pcVar11 != '\0') {\n              uVar17 = uVar18;\n              if (param_1 == 0) {\n                if (uVar16 == 0) {\n                  trap(7);\n                }\n                uVar21 = uVar4 % uVar16;\n                if (uVar21 != uVar12) {\nLAB_00019864:\n                  uVar17 = uVar18 + 2;\n                  goto LAB_00019868;\n                }\n                iVar6 = *(int *)(pcVar11 + 8);\n              }\n              else {\n                if (uVar16 == 0) {\n                  trap(7);\n                }\n                uVar21 = ((uVar8 + uVar16) - 1) / uVar16;\n                if (uVar21 == 0) {\n                  trap(7);\n                }\n                uVar21 = uVar4 / uVar21;\n                if (uVar21 != uVar12) goto LAB_00019864;\nLAB_00019868:\n                iVar6 = *(int *)(pcVar11 + 8);\n              }\n              puVar14 = (uint *)(iVar6 + uVar21 * 4);\n              uVar12 = *puVar14;\n              if (uVar12 < uVar17) {\n                *(uint *)(pcVar11 + 4) = (*(int *)(pcVar11 + 4) - uVar12) + uVar17;\n                *puVar14 = uVar17;\n                *pcVar11 = *(uint *)(pcVar11 + 4) < uVar19;\n              }\n            }\n            pcVar11 = pcVar11 + 0xc;\n            uVar12 = uVar16;\n          } while (uVar20 != uVar16);\n        }\n        uVar4 = uVar4 + 1;\n        iVar6 = *(int *)(puVar3 + -0x59b0);\n      } while (uVar4 < uVar8);\n    }\n    if (1 < uVar20) {\n      iVar6 = *(int *)(PTR_DAT_00049208 + -0x5af0) + uVar20 * 0xc;\n      cVar1 = *(char *)(iVar6 + -0xc);\n      while (cVar1 == '\0') {\n        uVar20 = uVar20 - 1;\n        if (uVar20 == 1) {\n          return 1;\n        }\n        cVar1 = *(char *)(iVar6 + -0x18);\n        iVar6 = iVar6 + -0xc;\n      }\n    }\n    return uVar20;\n  }\n  if (uVar20 < uVar4 >> 1) {\n    uVar4 = uVar20 * 2;\n    if (((int)(uVar20 * 0x18) < 0) ||\n       (uVar20 * 3 >> 0x1d != 0 || (uint)(uVar20 * 3 < uVar4) != (int)uVar20 >> 0x1f))\n    goto LAB_000199b4;\n    uVar5 = xrealloc(*(undefined4 *)(PTR_DAT_00049208 + -0x5af0));\n    *(undefined4 *)(puVar2 + -0x5af0) = uVar5;\n  }\n  else {\n    if (((int)(uVar4 * 0xc) < 0) ||\n       (uVar4 * 3 >> 0x1e != 0 || (uint)(uVar4 * 3 < uVar4 * 2) != (int)uVar4 >> 0x1f))\n    goto LAB_000199b4;\n    uVar5 = xrealloc(*(undefined4 *)(PTR_DAT_00049208 + -0x5af0));\n    uVar4 = *(uint *)(puVar2 + -0x5af4);\n    *(undefined4 *)(puVar2 + -0x5af0) = uVar5;\n  }\n  uVar18 = uVar4 - *(int *)(puVar2 + -0x6990);\n  uVar12 = *(int *)(puVar2 + -0x6990) + 1 + uVar4;\n  uVar8 = uVar18 * uVar12;\n  if (uVar4 <= uVar12) {\n    if (uVar18 == 0) {\n      trap(7);\n    }\n    if (((uVar12 == uVar8 / uVar18) && (-1 < (int)((uVar8 >> 1) << 2))) && (-1 < (int)uVar8)) {\n      iVar6 = xmalloc();\n      uVar18 = *(uint *)(puVar2 + -0x6990);\n      if (uVar18 < uVar4) {\n        iVar9 = (uVar18 + 1) * 4;\n        iVar13 = *(int *)(puVar2 + -0x5af0) + uVar18 * 0xc;\n        do {\n          *(int *)(iVar13 + 8) = iVar6;\n          iVar6 = iVar6 + iVar9;\n          iVar9 = iVar9 + 4;\n          iVar13 = iVar13 + 0xc;\n        } while ((uVar4 + 1) * 4 != iVar9);\n      }\n      uVar18 = *(uint *)(puVar2 + -0x59a8);\n      *(uint *)(puVar2 + -0x6990) = uVar4;\n      goto LAB_00019798;\n    }\n  }\nLAB_000199b4:\n                    /* WARNING: Subroutine does not return */\n  xalloc_die();\n}\n\n" (function_definition "uint FUN_00019634(int param_1)\n\n{\n  char cVar1;\n  undefined *puVar2;\n  undefined *puVar3;\n  uint uVar4;\n  undefined4 uVar5;\n  int iVar6;\n  undefined4 *puVar7;\n  uint uVar8;\n  int iVar9;\n  undefined4 *puVar10;\n  char *pcVar11;\n  uint uVar12;\n  int iVar13;\n  uint *puVar14;\n  undefined1 *puVar15;\n  uint uVar16;\n  uint uVar17;\n  uint uVar18;\n  uint uVar19;\n  uint uVar20;\n  uint uVar21;\n  \n  puVar2 = PTR_DAT_00049208;\n  uVar18 = *(uint *)(PTR_DAT_00049208 + -0x59a8);\n  uVar4 = *(uint *)(PTR_DAT_00049208 + -0x5af4);\n  uVar20 = uVar4;\n  if (uVar18 <= uVar4) {\n    uVar20 = uVar18;\n  }\n  if (uVar20 <= *(uint *)(PTR_DAT_00049208 + -0x6990)) {\nLAB_00019798:\n    if (uVar20 != 0) {\n      iVar6 = 0;\n      iVar9 = 3;\n      puVar15 = *(undefined1 **)(PTR_DAT_00049208 + -0x5af0);\n      do {\n        puVar7 = *(undefined4 **)(puVar15 + 8);\n        iVar6 = iVar6 + 4;\n        *puVar15 = 1;\n        *(int *)(puVar15 + 4) = iVar9;\n        puVar10 = (undefined4 *)((int)puVar7 + iVar6);\n        do {\n          *puVar7 = 3;\n          puVar7 = puVar7 + 1;\n        } while (puVar10 != puVar7);\n        puVar15 = puVar15 + 0xc;\n        iVar9 = iVar9 + 3;\n      } while (iVar6 != uVar20 << 2);\n    }\n    puVar3 = PTR_DAT_00049208;\n    if (uVar18 != 0) {\n      uVar4 = 0;\n      iVar6 = *(int *)(PTR_DAT_00049208 + -0x59b0);\n      do {\n        uVar18 = FUN_00019404(*(undefined4 *)(iVar6 + uVar4 * 4));\n        uVar8 = *(uint *)(puVar2 + -0x59a8);\n        if (uVar20 != 0) {\n          uVar19 = *(uint *)(puVar3 + -0x5a58);\n          pcVar11 = *(char **)(puVar3 + -0x5af0);\n          uVar12 = 0;\n          do {\n            uVar16 = uVar12 + 1;\n            if (*pcVar11 != '\0') {\n              uVar17 = uVar18;\n              if (param_1 == 0) {\n                if (uVar16 == 0) {\n                  trap(7);\n                }\n                uVar21 = uVar4 % uVar16;\n                if (uVar21 != uVar12) {\nLAB_00019864:\n                  uVar17 = uVar18 + 2;\n                  goto LAB_00019868;\n                }\n                iVar6 = *(int *)(pcVar11 + 8);\n              }\n              else {\n                if (uVar16 == 0) {\n                  trap(7);\n                }\n                uVar21 = ((uVar8 + uVar16) - 1) / uVar16;\n                if (uVar21 == 0) {\n                  trap(7);\n                }\n                uVar21 = uVar4 / uVar21;\n                if (uVar21 != uVar12) goto LAB_00019864;\nLAB_00019868:\n                iVar6 = *(int *)(pcVar11 + 8);\n              }\n              puVar14 = (uint *)(iVar6 + uVar21 * 4);\n              uVar12 = *puVar14;\n              if (uVar12 < uVar17) {\n                *(uint *)(pcVar11 + 4) = (*(int *)(pcVar11 + 4) - uVar12) + uVar17;\n                *puVar14 = uVar17;\n                *pcVar11 = *(uint *)(pcVar11 + 4) < uVar19;\n              }\n            }\n            pcVar11 = pcVar11 + 0xc;\n            uVar12 = uVar16;\n          } while (uVar20 != uVar16);\n        }\n        uVar4 = uVar4 + 1;\n        iVar6 = *(int *)(puVar3 + -0x59b0);\n      } while (uVar4 < uVar8);\n    }\n    if (1 < uVar20) {\n      iVar6 = *(int *)(PTR_DAT_00049208 + -0x5af0) + uVar20 * 0xc;\n      cVar1 = *(char *)(iVar6 + -0xc);\n      while (cVar1 == '\0') {\n        uVar20 = uVar20 - 1;\n        if (uVar20 == 1) {\n          return 1;\n        }\n        cVar1 = *(char *)(iVar6 + -0x18);\n        iVar6 = iVar6 + -0xc;\n      }\n    }\n    return uVar20;\n  }\n  if (uVar20 < uVar4 >> 1) {\n    uVar4 = uVar20 * 2;\n    if (((int)(uVar20 * 0x18) < 0) ||\n       (uVar20 * 3 >> 0x1d != 0 || (uint)(uVar20 * 3 < uVar4) != (int)uVar20 >> 0x1f))\n    goto LAB_000199b4;\n    uVar5 = xrealloc(*(undefined4 *)(PTR_DAT_00049208 + -0x5af0));\n    *(undefined4 *)(puVar2 + -0x5af0) = uVar5;\n  }\n  else {\n    if (((int)(uVar4 * 0xc) < 0) ||\n       (uVar4 * 3 >> 0x1e != 0 || (uint)(uVar4 * 3 < uVar4 * 2) != (int)uVar4 >> 0x1f))\n    goto LAB_000199b4;\n    uVar5 = xrealloc(*(undefined4 *)(PTR_DAT_00049208 + -0x5af0));\n    uVar4 = *(uint *)(puVar2 + -0x5af4);\n    *(undefined4 *)(puVar2 + -0x5af0) = uVar5;\n  }\n  uVar18 = uVar4 - *(int *)(puVar2 + -0x6990);\n  uVar12 = *(int *)(puVar2 + -0x6990) + 1 + uVar4;\n  uVar8 = uVar18 * uVar12;\n  if (uVar4 <= uVar12) {\n    if (uVar18 == 0) {\n      trap(7);\n    }\n    if (((uVar12 == uVar8 / uVar18) && (-1 < (int)((uVar8 >> 1) << 2))) && (-1 < (int)uVar8)) {\n      iVar6 = xmalloc();\n      uVar18 = *(uint *)(puVar2 + -0x6990);\n      if (uVar18 < uVar4) {\n        iVar9 = (uVar18 + 1) * 4;\n        iVar13 = *(int *)(puVar2 + -0x5af0) + uVar18 * 0xc;\n        do {\n          *(int *)(iVar13 + 8) = iVar6;\n          iVar6 = iVar6 + iVar9;\n          iVar9 = iVar9 + 4;\n          iVar13 = iVar13 + 0xc;\n        } while ((uVar4 + 1) * 4 != iVar9);\n      }\n      uVar18 = *(uint *)(puVar2 + -0x59a8);\n      *(uint *)(puVar2 + -0x6990) = uVar4;\n      goto LAB_00019798;\n    }\n  }\nLAB_000199b4:\n                    /* WARNING: Subroutine does not return */\n  xalloc_die();\n}" type_identifier (function_declarator "FUN_00019634(int param_1)" identifier (parameter_list "(int param_1)" ( (parameter_declaration "int param_1" primitive_type identifier) ))) (compound_statement "{\n  char cVar1;\n  undefined *puVar2;\n  undefined *puVar3;\n  uint uVar4;\n  undefined4 uVar5;\n  int iVar6;\n  undefined4 *puVar7;\n  uint uVar8;\n  int iVar9;\n  undefined4 *puVar10;\n  char *pcVar11;\n  uint uVar12;\n  int iVar13;\n  uint *puVar14;\n  undefined1 *puVar15;\n  uint uVar16;\n  uint uVar17;\n  uint uVar18;\n  uint uVar19;\n  uint uVar20;\n  uint uVar21;\n  \n  puVar2 = PTR_DAT_00049208;\n  uVar18 = *(uint *)(PTR_DAT_00049208 + -0x59a8);\n  uVar4 = *(uint *)(PTR_DAT_00049208 + -0x5af4);\n  uVar20 = uVar4;\n  if (uVar18 <= uVar4) {\n    uVar20 = uVar18;\n  }\n  if (uVar20 <= *(uint *)(PTR_DAT_00049208 + -0x6990)) {\nLAB_00019798:\n    if (uVar20 != 0) {\n      iVar6 = 0;\n      iVar9 = 3;\n      puVar15 = *(undefined1 **)(PTR_DAT_00049208 + -0x5af0);\n      do {\n        puVar7 = *(undefined4 **)(puVar15 + 8);\n        iVar6 = iVar6 + 4;\n        *puVar15 = 1;\n        *(int *)(puVar15 + 4) = iVar9;\n        puVar10 = (undefined4 *)((int)puVar7 + iVar6);\n        do {\n          *puVar7 = 3;\n          puVar7 = puVar7 + 1;\n        } while (puVar10 != puVar7);\n        puVar15 = puVar15 + 0xc;\n        iVar9 = iVar9 + 3;\n      } while (iVar6 != uVar20 << 2);\n    }\n    puVar3 = PTR_DAT_00049208;\n    if (uVar18 != 0) {\n      uVar4 = 0;\n      iVar6 = *(int *)(PTR_DAT_00049208 + -0x59b0);\n      do {\n        uVar18 = FUN_00019404(*(undefined4 *)(iVar6 + uVar4 * 4));\n        uVar8 = *(uint *)(puVar2 + -0x59a8);\n        if (uVar20 != 0) {\n          uVar19 = *(uint *)(puVar3 + -0x5a58);\n          pcVar11 = *(char **)(puVar3 + -0x5af0);\n          uVar12 = 0;\n          do {\n            uVar16 = uVar12 + 1;\n            if (*pcVar11 != '\0') {\n              uVar17 = uVar18;\n              if (param_1 == 0) {\n                if (uVar16 == 0) {\n                  trap(7);\n                }\n                uVar21 = uVar4 % uVar16;\n                if (uVar21 != uVar12) {\nLAB_00019864:\n                  uVar17 = uVar18 + 2;\n                  goto LAB_00019868;\n                }\n                iVar6 = *(int *)(pcVar11 + 8);\n              }\n              else {\n                if (uVar16 == 0) {\n                  trap(7);\n                }\n                uVar21 = ((uVar8 + uVar16) - 1) / uVar16;\n                if (uVar21 == 0) {\n                  trap(7);\n                }\n                uVar21 = uVar4 / uVar21;\n                if (uVar21 != uVar12) goto LAB_00019864;\nLAB_00019868:\n                iVar6 = *(int *)(pcVar11 + 8);\n              }\n              puVar14 = (uint *)(iVar6 + uVar21 * 4);\n              uVar12 = *puVar14;\n              if (uVar12 < uVar17) {\n                *(uint *)(pcVar11 + 4) = (*(int *)(pcVar11 + 4) - uVar12) + uVar17;\n                *puVar14 = uVar17;\n                *pcVar11 = *(uint *)(pcVar11 + 4) < uVar19;\n              }\n            }\n            pcVar11 = pcVar11 + 0xc;\n            uVar12 = uVar16;\n          } while (uVar20 != uVar16);\n        }\n        uVar4 = uVar4 + 1;\n        iVar6 = *(int *)(puVar3 + -0x59b0);\n      } while (uVar4 < uVar8);\n    }\n    if (1 < uVar20) {\n      iVar6 = *(int *)(PTR_DAT_00049208 + -0x5af0) + uVar20 * 0xc;\n      cVar1 = *(char *)(iVar6 + -0xc);\n      while (cVar1 == '\0') {\n        uVar20 = uVar20 - 1;\n        if (uVar20 == 1) {\n          return 1;\n        }\n        cVar1 = *(char *)(iVar6 + -0x18);\n        iVar6 = iVar6 + -0xc;\n      }\n    }\n    return uVar20;\n  }\n  if (uVar20 < uVar4 >> 1) {\n    uVar4 = uVar20 * 2;\n    if (((int)(uVar20 * 0x18) < 0) ||\n       (uVar20 * 3 >> 0x1d != 0 || (uint)(uVar20 * 3 < uVar4) != (int)uVar20 >> 0x1f))\n    goto LAB_000199b4;\n    uVar5 = xrealloc(*(undefined4 *)(PTR_DAT_00049208 + -0x5af0));\n    *(undefined4 *)(puVar2 + -0x5af0) = uVar5;\n  }\n  else {\n    if (((int)(uVar4 * 0xc) < 0) ||\n       (uVar4 * 3 >> 0x1e != 0 || (uint)(uVar4 * 3 < uVar4 * 2) != (int)uVar4 >> 0x1f))\n    goto LAB_000199b4;\n    uVar5 = xrealloc(*(undefined4 *)(PTR_DAT_00049208 + -0x5af0));\n    uVar4 = *(uint *)(puVar2 + -0x5af4);\n    *(undefined4 *)(puVar2 + -0x5af0) = uVar5;\n  }\n  uVar18 = uVar4 - *(int *)(puVar2 + -0x6990);\n  uVar12 = *(int *)(puVar2 + -0x6990) + 1 + uVar4;\n  uVar8 = uVar18 * uVar12;\n  if (uVar4 <= uVar12) {\n    if (uVar18 == 0) {\n      trap(7);\n    }\n    if (((uVar12 == uVar8 / uVar18) && (-1 < (int)((uVar8 >> 1) << 2))) && (-1 < (int)uVar8)) {\n      iVar6 = xmalloc();\n      uVar18 = *(uint *)(puVar2 + -0x6990);\n      if (uVar18 < uVar4) {\n        iVar9 = (uVar18 + 1) * 4;\n        iVar13 = *(int *)(puVar2 + -0x5af0) + uVar18 * 0xc;\n        do {\n          *(int *)(iVar13 + 8) = iVar6;\n          iVar6 = iVar6 + iVar9;\n          iVar9 = iVar9 + 4;\n          iVar13 = iVar13 + 0xc;\n        } while ((uVar4 + 1) * 4 != iVar9);\n      }\n      uVar18 = *(uint *)(puVar2 + -0x59a8);\n      *(uint *)(puVar2 + -0x6990) = uVar4;\n      goto LAB_00019798;\n    }\n  }\nLAB_000199b4:\n                    /* WARNING: Subroutine does not return */\n  xalloc_die();\n}" { (declaration "char cVar1;" primitive_type identifier ;) (declaration "undefined *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "undefined *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "undefined4 uVar5;" type_identifier identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "undefined4 *puVar7;" type_identifier (pointer_declarator "*puVar7" * identifier) ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "int iVar9;" primitive_type identifier ;) (declaration "undefined4 *puVar10;" type_identifier (pointer_declarator "*puVar10" * identifier) ;) (declaration "char *pcVar11;" primitive_type (pointer_declarator "*pcVar11" * identifier) ;) (declaration "uint uVar12;" type_identifier identifier ;) (declaration "int iVar13;" primitive_type identifier ;) (declaration "uint *puVar14;" type_identifier (pointer_declarator "*puVar14" * identifier) ;) (declaration "undefined1 *puVar15;" type_identifier (pointer_declarator "*puVar15" * identifier) ;) (declaration "uint uVar16;" type_identifier identifier ;) (declaration "uint uVar17;" type_identifier identifier ;) (declaration "uint uVar18;" type_identifier identifier ;) (declaration "uint uVar19;" type_identifier identifier ;) (declaration "uint uVar20;" type_identifier identifier ;) (declaration "uint uVar21;" type_identifier identifier ;) (expression_statement "puVar2 = PTR_DAT_00049208;" (assignment_expression "puVar2 = PTR_DAT_00049208" identifier = identifier) ;) (expression_statement "uVar18 = *(uint *)(PTR_DAT_00049208 + -0x59a8);" (assignment_expression "uVar18 = *(uint *)(PTR_DAT_00049208 + -0x59a8)" identifier = (pointer_expression "*(uint *)(PTR_DAT_00049208 + -0x59a8)" * (cast_expression "(uint *)(PTR_DAT_00049208 + -0x59a8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_00049208 + -0x59a8)" ( (binary_expression "PTR_DAT_00049208 + -0x59a8" identifier + number_literal) ))))) ;) (expression_statement "uVar4 = *(uint *)(PTR_DAT_00049208 + -0x5af4);" (assignment_expression "uVar4 = *(uint *)(PTR_DAT_00049208 + -0x5af4)" identifier = (pointer_expression "*(uint *)(PTR_DAT_00049208 + -0x5af4)" * (cast_expression "(uint *)(PTR_DAT_00049208 + -0x5af4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_00049208 + -0x5af4)" ( (binary_expression "PTR_DAT_00049208 + -0x5af4" identifier + number_literal) ))))) ;) (expression_statement "uVar20 = uVar4;" (assignment_expression "uVar20 = uVar4" identifier = identifier) ;) (if_statement "if (uVar18 <= uVar4) {\n    uVar20 = uVar18;\n  }" if (parenthesized_expression "(uVar18 <= uVar4)" ( (binary_expression "uVar18 <= uVar4" identifier <= identifier) )) (compound_statement "{\n    uVar20 = uVar18;\n  }" { (expression_statement "uVar20 = uVar18;" (assignment_expression "uVar20 = uVar18" identifier = identifier) ;) })) (if_statement "if (uVar20 <= *(uint *)(PTR_DAT_00049208 + -0x6990)) {\nLAB_00019798:\n    if (uVar20 != 0) {\n      iVar6 = 0;\n      iVar9 = 3;\n      puVar15 = *(undefined1 **)(PTR_DAT_00049208 + -0x5af0);\n      do {\n        puVar7 = *(undefined4 **)(puVar15 + 8);\n        iVar6 = iVar6 + 4;\n        *puVar15 = 1;\n        *(int *)(puVar15 + 4) = iVar9;\n        puVar10 = (undefined4 *)((int)puVar7 + iVar6);\n        do {\n          *puVar7 = 3;\n          puVar7 = puVar7 + 1;\n        } while (puVar10 != puVar7);\n        puVar15 = puVar15 + 0xc;\n        iVar9 = iVar9 + 3;\n      } while (iVar6 != uVar20 << 2);\n    }\n    puVar3 = PTR_DAT_00049208;\n    if (uVar18 != 0) {\n      uVar4 = 0;\n      iVar6 = *(int *)(PTR_DAT_00049208 + -0x59b0);\n      do {\n        uVar18 = FUN_00019404(*(undefined4 *)(iVar6 + uVar4 * 4));\n        uVar8 = *(uint *)(puVar2 + -0x59a8);\n        if (uVar20 != 0) {\n          uVar19 = *(uint *)(puVar3 + -0x5a58);\n          pcVar11 = *(char **)(puVar3 + -0x5af0);\n          uVar12 = 0;\n          do {\n            uVar16 = uVar12 + 1;\n            if (*pcVar11 != '\0') {\n              uVar17 = uVar18;\n              if (param_1 == 0) {\n                if (uVar16 == 0) {\n                  trap(7);\n                }\n                uVar21 = uVar4 % uVar16;\n                if (uVar21 != uVar12) {\nLAB_00019864:\n                  uVar17 = uVar18 + 2;\n                  goto LAB_00019868;\n                }\n                iVar6 = *(int *)(pcVar11 + 8);\n              }\n              else {\n                if (uVar16 == 0) {\n                  trap(7);\n                }\n                uVar21 = ((uVar8 + uVar16) - 1) / uVar16;\n                if (uVar21 == 0) {\n                  trap(7);\n                }\n                uVar21 = uVar4 / uVar21;\n                if (uVar21 != uVar12) goto LAB_00019864;\nLAB_00019868:\n                iVar6 = *(int *)(pcVar11 + 8);\n              }\n              puVar14 = (uint *)(iVar6 + uVar21 * 4);\n              uVar12 = *puVar14;\n              if (uVar12 < uVar17) {\n                *(uint *)(pcVar11 + 4) = (*(int *)(pcVar11 + 4) - uVar12) + uVar17;\n                *puVar14 = uVar17;\n                *pcVar11 = *(uint *)(pcVar11 + 4) < uVar19;\n              }\n            }\n            pcVar11 = pcVar11 + 0xc;\n            uVar12 = uVar16;\n          } while (uVar20 != uVar16);\n        }\n        uVar4 = uVar4 + 1;\n        iVar6 = *(int *)(puVar3 + -0x59b0);\n      } while (uVar4 < uVar8);\n    }\n    if (1 < uVar20) {\n      iVar6 = *(int *)(PTR_DAT_00049208 + -0x5af0) + uVar20 * 0xc;\n      cVar1 = *(char *)(iVar6 + -0xc);\n      while (cVar1 == '\0') {\n        uVar20 = uVar20 - 1;\n        if (uVar20 == 1) {\n          return 1;\n        }\n        cVar1 = *(char *)(iVar6 + -0x18);\n        iVar6 = iVar6 + -0xc;\n      }\n    }\n    return uVar20;\n  }" if (parenthesized_expression "(uVar20 <= *(uint *)(PTR_DAT_00049208 + -0x6990))" ( (binary_expression "uVar20 <= *(uint *)(PTR_DAT_00049208 + -0x6990)" identifier <= (pointer_expression "*(uint *)(PTR_DAT_00049208 + -0x6990)" * (cast_expression "(uint *)(PTR_DAT_00049208 + -0x6990)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_00049208 + -0x6990)" ( (binary_expression "PTR_DAT_00049208 + -0x6990" identifier + number_literal) ))))) )) (compound_statement "{\nLAB_00019798:\n    if (uVar20 != 0) {\n      iVar6 = 0;\n      iVar9 = 3;\n      puVar15 = *(undefined1 **)(PTR_DAT_00049208 + -0x5af0);\n      do {\n        puVar7 = *(undefined4 **)(puVar15 + 8);\n        iVar6 = iVar6 + 4;\n        *puVar15 = 1;\n        *(int *)(puVar15 + 4) = iVar9;\n        puVar10 = (undefined4 *)((int)puVar7 + iVar6);\n        do {\n          *puVar7 = 3;\n          puVar7 = puVar7 + 1;\n        } while (puVar10 != puVar7);\n        puVar15 = puVar15 + 0xc;\n        iVar9 = iVar9 + 3;\n      } while (iVar6 != uVar20 << 2);\n    }\n    puVar3 = PTR_DAT_00049208;\n    if (uVar18 != 0) {\n      uVar4 = 0;\n      iVar6 = *(int *)(PTR_DAT_00049208 + -0x59b0);\n      do {\n        uVar18 = FUN_00019404(*(undefined4 *)(iVar6 + uVar4 * 4));\n        uVar8 = *(uint *)(puVar2 + -0x59a8);\n        if (uVar20 != 0) {\n          uVar19 = *(uint *)(puVar3 + -0x5a58);\n          pcVar11 = *(char **)(puVar3 + -0x5af0);\n          uVar12 = 0;\n          do {\n            uVar16 = uVar12 + 1;\n            if (*pcVar11 != '\0') {\n              uVar17 = uVar18;\n              if (param_1 == 0) {\n                if (uVar16 == 0) {\n                  trap(7);\n                }\n                uVar21 = uVar4 % uVar16;\n                if (uVar21 != uVar12) {\nLAB_00019864:\n                  uVar17 = uVar18 + 2;\n                  goto LAB_00019868;\n                }\n                iVar6 = *(int *)(pcVar11 + 8);\n              }\n              else {\n                if (uVar16 == 0) {\n                  trap(7);\n                }\n                uVar21 = ((uVar8 + uVar16) - 1) / uVar16;\n                if (uVar21 == 0) {\n                  trap(7);\n                }\n                uVar21 = uVar4 / uVar21;\n                if (uVar21 != uVar12) goto LAB_00019864;\nLAB_00019868:\n                iVar6 = *(int *)(pcVar11 + 8);\n              }\n              puVar14 = (uint *)(iVar6 + uVar21 * 4);\n              uVar12 = *puVar14;\n              if (uVar12 < uVar17) {\n                *(uint *)(pcVar11 + 4) = (*(int *)(pcVar11 + 4) - uVar12) + uVar17;\n                *puVar14 = uVar17;\n                *pcVar11 = *(uint *)(pcVar11 + 4) < uVar19;\n              }\n            }\n            pcVar11 = pcVar11 + 0xc;\n            uVar12 = uVar16;\n          } while (uVar20 != uVar16);\n        }\n        uVar4 = uVar4 + 1;\n        iVar6 = *(int *)(puVar3 + -0x59b0);\n      } while (uVar4 < uVar8);\n    }\n    if (1 < uVar20) {\n      iVar6 = *(int *)(PTR_DAT_00049208 + -0x5af0) + uVar20 * 0xc;\n      cVar1 = *(char *)(iVar6 + -0xc);\n      while (cVar1 == '\0') {\n        uVar20 = uVar20 - 1;\n        if (uVar20 == 1) {\n          return 1;\n        }\n        cVar1 = *(char *)(iVar6 + -0x18);\n        iVar6 = iVar6 + -0xc;\n      }\n    }\n    return uVar20;\n  }" { (labeled_statement "LAB_00019798:\n    if (uVar20 != 0) {\n      iVar6 = 0;\n      iVar9 = 3;\n      puVar15 = *(undefined1 **)(PTR_DAT_00049208 + -0x5af0);\n      do {\n        puVar7 = *(undefined4 **)(puVar15 + 8);\n        iVar6 = iVar6 + 4;\n        *puVar15 = 1;\n        *(int *)(puVar15 + 4) = iVar9;\n        puVar10 = (undefined4 *)((int)puVar7 + iVar6);\n        do {\n          *puVar7 = 3;\n          puVar7 = puVar7 + 1;\n        } while (puVar10 != puVar7);\n        puVar15 = puVar15 + 0xc;\n        iVar9 = iVar9 + 3;\n      } while (iVar6 != uVar20 << 2);\n    }" statement_identifier : (if_statement "if (uVar20 != 0) {\n      iVar6 = 0;\n      iVar9 = 3;\n      puVar15 = *(undefined1 **)(PTR_DAT_00049208 + -0x5af0);\n      do {\n        puVar7 = *(undefined4 **)(puVar15 + 8);\n        iVar6 = iVar6 + 4;\n        *puVar15 = 1;\n        *(int *)(puVar15 + 4) = iVar9;\n        puVar10 = (undefined4 *)((int)puVar7 + iVar6);\n        do {\n          *puVar7 = 3;\n          puVar7 = puVar7 + 1;\n        } while (puVar10 != puVar7);\n        puVar15 = puVar15 + 0xc;\n        iVar9 = iVar9 + 3;\n      } while (iVar6 != uVar20 << 2);\n    }" if (parenthesized_expression "(uVar20 != 0)" ( (binary_expression "uVar20 != 0" identifier != number_literal) )) (compound_statement "{\n      iVar6 = 0;\n      iVar9 = 3;\n      puVar15 = *(undefined1 **)(PTR_DAT_00049208 + -0x5af0);\n      do {\n        puVar7 = *(undefined4 **)(puVar15 + 8);\n        iVar6 = iVar6 + 4;\n        *puVar15 = 1;\n        *(int *)(puVar15 + 4) = iVar9;\n        puVar10 = (undefined4 *)((int)puVar7 + iVar6);\n        do {\n          *puVar7 = 3;\n          puVar7 = puVar7 + 1;\n        } while (puVar10 != puVar7);\n        puVar15 = puVar15 + 0xc;\n        iVar9 = iVar9 + 3;\n      } while (iVar6 != uVar20 << 2);\n    }" { (expression_statement "iVar6 = 0;" (assignment_expression "iVar6 = 0" identifier = number_literal) ;) (expression_statement "iVar9 = 3;" (assignment_expression "iVar9 = 3" identifier = number_literal) ;) (expression_statement "puVar15 = *(undefined1 **)(PTR_DAT_00049208 + -0x5af0);" (assignment_expression "puVar15 = *(undefined1 **)(PTR_DAT_00049208 + -0x5af0)" identifier = (pointer_expression "*(undefined1 **)(PTR_DAT_00049208 + -0x5af0)" * (cast_expression "(undefined1 **)(PTR_DAT_00049208 + -0x5af0)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(PTR_DAT_00049208 + -0x5af0)" ( (binary_expression "PTR_DAT_00049208 + -0x5af0" identifier + number_literal) ))))) ;) (do_statement "do {\n        puVar7 = *(undefined4 **)(puVar15 + 8);\n        iVar6 = iVar6 + 4;\n        *puVar15 = 1;\n        *(int *)(puVar15 + 4) = iVar9;\n        puVar10 = (undefined4 *)((int)puVar7 + iVar6);\n        do {\n          *puVar7 = 3;\n          puVar7 = puVar7 + 1;\n        } while (puVar10 != puVar7);\n        puVar15 = puVar15 + 0xc;\n        iVar9 = iVar9 + 3;\n      } while (iVar6 != uVar20 << 2);" do (compound_statement "{\n        puVar7 = *(undefined4 **)(puVar15 + 8);\n        iVar6 = iVar6 + 4;\n        *puVar15 = 1;\n        *(int *)(puVar15 + 4) = iVar9;\n        puVar10 = (undefined4 *)((int)puVar7 + iVar6);\n        do {\n          *puVar7 = 3;\n          puVar7 = puVar7 + 1;\n        } while (puVar10 != puVar7);\n        puVar15 = puVar15 + 0xc;\n        iVar9 = iVar9 + 3;\n      }" { (expression_statement "puVar7 = *(undefined4 **)(puVar15 + 8);" (assignment_expression "puVar7 = *(undefined4 **)(puVar15 + 8)" identifier = (pointer_expression "*(undefined4 **)(puVar15 + 8)" * (cast_expression "(undefined4 **)(puVar15 + 8)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar15 + 8)" ( (binary_expression "puVar15 + 8" identifier + number_literal) ))))) ;) (expression_statement "iVar6 = iVar6 + 4;" (assignment_expression "iVar6 = iVar6 + 4" identifier = (binary_expression "iVar6 + 4" identifier + number_literal)) ;) (expression_statement "*puVar15 = 1;" (assignment_expression "*puVar15 = 1" (pointer_expression "*puVar15" * identifier) = number_literal) ;) (expression_statement "*(int *)(puVar15 + 4) = iVar9;" (assignment_expression "*(int *)(puVar15 + 4) = iVar9" (pointer_expression "*(int *)(puVar15 + 4)" * (cast_expression "(int *)(puVar15 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar15 + 4)" ( (binary_expression "puVar15 + 4" identifier + number_literal) )))) = identifier) ;) (expression_statement "puVar10 = (undefined4 *)((int)puVar7 + iVar6);" (assignment_expression "puVar10 = (undefined4 *)((int)puVar7 + iVar6)" identifier = (cast_expression "(undefined4 *)((int)puVar7 + iVar6)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar7 + iVar6)" ( (binary_expression "(int)puVar7 + iVar6" (cast_expression "(int)puVar7" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) (do_statement "do {\n          *puVar7 = 3;\n          puVar7 = puVar7 + 1;\n        } while (puVar10 != puVar7);" do (compound_statement "{\n          *puVar7 = 3;\n          puVar7 = puVar7 + 1;\n        }" { (expression_statement "*puVar7 = 3;" (assignment_expression "*puVar7 = 3" (pointer_expression "*puVar7" * identifier) = number_literal) ;) (expression_statement "puVar7 = puVar7 + 1;" (assignment_expression "puVar7 = puVar7 + 1" identifier = (binary_expression "puVar7 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(puVar10 != puVar7)" ( (binary_expression "puVar10 != puVar7" identifier != identifier) )) ;) (expression_statement "puVar15 = puVar15 + 0xc;" (assignment_expression "puVar15 = puVar15 + 0xc" identifier = (binary_expression "puVar15 + 0xc" identifier + number_literal)) ;) (expression_statement "iVar9 = iVar9 + 3;" (assignment_expression "iVar9 = iVar9 + 3" identifier = (binary_expression "iVar9 + 3" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar6 != uVar20 << 2)" ( (binary_expression "iVar6 != uVar20 << 2" identifier != (binary_expression "uVar20 << 2" identifier << number_literal)) )) ;) }))) (expression_statement "puVar3 = PTR_DAT_00049208;" (assignment_expression "puVar3 = PTR_DAT_00049208" identifier = identifier) ;) (if_statement "if (uVar18 != 0) {\n      uVar4 = 0;\n      iVar6 = *(int *)(PTR_DAT_00049208 + -0x59b0);\n      do {\n        uVar18 = FUN_00019404(*(undefined4 *)(iVar6 + uVar4 * 4));\n        uVar8 = *(uint *)(puVar2 + -0x59a8);\n        if (uVar20 != 0) {\n          uVar19 = *(uint *)(puVar3 + -0x5a58);\n          pcVar11 = *(char **)(puVar3 + -0x5af0);\n          uVar12 = 0;\n          do {\n            uVar16 = uVar12 + 1;\n            if (*pcVar11 != '\0') {\n              uVar17 = uVar18;\n              if (param_1 == 0) {\n                if (uVar16 == 0) {\n                  trap(7);\n                }\n                uVar21 = uVar4 % uVar16;\n                if (uVar21 != uVar12) {\nLAB_00019864:\n                  uVar17 = uVar18 + 2;\n                  goto LAB_00019868;\n                }\n                iVar6 = *(int *)(pcVar11 + 8);\n              }\n              else {\n                if (uVar16 == 0) {\n                  trap(7);\n                }\n                uVar21 = ((uVar8 + uVar16) - 1) / uVar16;\n                if (uVar21 == 0) {\n                  trap(7);\n                }\n                uVar21 = uVar4 / uVar21;\n                if (uVar21 != uVar12) goto LAB_00019864;\nLAB_00019868:\n                iVar6 = *(int *)(pcVar11 + 8);\n              }\n              puVar14 = (uint *)(iVar6 + uVar21 * 4);\n              uVar12 = *puVar14;\n              if (uVar12 < uVar17) {\n                *(uint *)(pcVar11 + 4) = (*(int *)(pcVar11 + 4) - uVar12) + uVar17;\n                *puVar14 = uVar17;\n                *pcVar11 = *(uint *)(pcVar11 + 4) < uVar19;\n              }\n            }\n            pcVar11 = pcVar11 + 0xc;\n            uVar12 = uVar16;\n          } while (uVar20 != uVar16);\n        }\n        uVar4 = uVar4 + 1;\n        iVar6 = *(int *)(puVar3 + -0x59b0);\n      } while (uVar4 < uVar8);\n    }" if (parenthesized_expression "(uVar18 != 0)" ( (binary_expression "uVar18 != 0" identifier != number_literal) )) (compound_statement "{\n      uVar4 = 0;\n      iVar6 = *(int *)(PTR_DAT_00049208 + -0x59b0);\n      do {\n        uVar18 = FUN_00019404(*(undefined4 *)(iVar6 + uVar4 * 4));\n        uVar8 = *(uint *)(puVar2 + -0x59a8);\n        if (uVar20 != 0) {\n          uVar19 = *(uint *)(puVar3 + -0x5a58);\n          pcVar11 = *(char **)(puVar3 + -0x5af0);\n          uVar12 = 0;\n          do {\n            uVar16 = uVar12 + 1;\n            if (*pcVar11 != '\0') {\n              uVar17 = uVar18;\n              if (param_1 == 0) {\n                if (uVar16 == 0) {\n                  trap(7);\n                }\n                uVar21 = uVar4 % uVar16;\n                if (uVar21 != uVar12) {\nLAB_00019864:\n                  uVar17 = uVar18 + 2;\n                  goto LAB_00019868;\n                }\n                iVar6 = *(int *)(pcVar11 + 8);\n              }\n              else {\n                if (uVar16 == 0) {\n                  trap(7);\n                }\n                uVar21 = ((uVar8 + uVar16) - 1) / uVar16;\n                if (uVar21 == 0) {\n                  trap(7);\n                }\n                uVar21 = uVar4 / uVar21;\n                if (uVar21 != uVar12) goto LAB_00019864;\nLAB_00019868:\n                iVar6 = *(int *)(pcVar11 + 8);\n              }\n              puVar14 = (uint *)(iVar6 + uVar21 * 4);\n              uVar12 = *puVar14;\n              if (uVar12 < uVar17) {\n                *(uint *)(pcVar11 + 4) = (*(int *)(pcVar11 + 4) - uVar12) + uVar17;\n                *puVar14 = uVar17;\n                *pcVar11 = *(uint *)(pcVar11 + 4) < uVar19;\n              }\n            }\n            pcVar11 = pcVar11 + 0xc;\n            uVar12 = uVar16;\n          } while (uVar20 != uVar16);\n        }\n        uVar4 = uVar4 + 1;\n        iVar6 = *(int *)(puVar3 + -0x59b0);\n      } while (uVar4 < uVar8);\n    }" { (expression_statement "uVar4 = 0;" (assignment_expression "uVar4 = 0" identifier = number_literal) ;) (expression_statement "iVar6 = *(int *)(PTR_DAT_00049208 + -0x59b0);" (assignment_expression "iVar6 = *(int *)(PTR_DAT_00049208 + -0x59b0)" identifier = (pointer_expression "*(int *)(PTR_DAT_00049208 + -0x59b0)" * (cast_expression "(int *)(PTR_DAT_00049208 + -0x59b0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_00049208 + -0x59b0)" ( (binary_expression "PTR_DAT_00049208 + -0x59b0" identifier + number_literal) ))))) ;) (do_statement "do {\n        uVar18 = FUN_00019404(*(undefined4 *)(iVar6 + uVar4 * 4));\n        uVar8 = *(uint *)(puVar2 + -0x59a8);\n        if (uVar20 != 0) {\n          uVar19 = *(uint *)(puVar3 + -0x5a58);\n          pcVar11 = *(char **)(puVar3 + -0x5af0);\n          uVar12 = 0;\n          do {\n            uVar16 = uVar12 + 1;\n            if (*pcVar11 != '\0') {\n              uVar17 = uVar18;\n              if (param_1 == 0) {\n                if (uVar16 == 0) {\n                  trap(7);\n                }\n                uVar21 = uVar4 % uVar16;\n                if (uVar21 != uVar12) {\nLAB_00019864:\n                  uVar17 = uVar18 + 2;\n                  goto LAB_00019868;\n                }\n                iVar6 = *(int *)(pcVar11 + 8);\n              }\n              else {\n                if (uVar16 == 0) {\n                  trap(7);\n                }\n                uVar21 = ((uVar8 + uVar16) - 1) / uVar16;\n                if (uVar21 == 0) {\n                  trap(7);\n                }\n                uVar21 = uVar4 / uVar21;\n                if (uVar21 != uVar12) goto LAB_00019864;\nLAB_00019868:\n                iVar6 = *(int *)(pcVar11 + 8);\n              }\n              puVar14 = (uint *)(iVar6 + uVar21 * 4);\n              uVar12 = *puVar14;\n              if (uVar12 < uVar17) {\n                *(uint *)(pcVar11 + 4) = (*(int *)(pcVar11 + 4) - uVar12) + uVar17;\n                *puVar14 = uVar17;\n                *pcVar11 = *(uint *)(pcVar11 + 4) < uVar19;\n              }\n            }\n            pcVar11 = pcVar11 + 0xc;\n            uVar12 = uVar16;\n          } while (uVar20 != uVar16);\n        }\n        uVar4 = uVar4 + 1;\n        iVar6 = *(int *)(puVar3 + -0x59b0);\n      } while (uVar4 < uVar8);" do (compound_statement "{\n        uVar18 = FUN_00019404(*(undefined4 *)(iVar6 + uVar4 * 4));\n        uVar8 = *(uint *)(puVar2 + -0x59a8);\n        if (uVar20 != 0) {\n          uVar19 = *(uint *)(puVar3 + -0x5a58);\n          pcVar11 = *(char **)(puVar3 + -0x5af0);\n          uVar12 = 0;\n          do {\n            uVar16 = uVar12 + 1;\n            if (*pcVar11 != '\0') {\n              uVar17 = uVar18;\n              if (param_1 == 0) {\n                if (uVar16 == 0) {\n                  trap(7);\n                }\n                uVar21 = uVar4 % uVar16;\n                if (uVar21 != uVar12) {\nLAB_00019864:\n                  uVar17 = uVar18 + 2;\n                  goto LAB_00019868;\n                }\n                iVar6 = *(int *)(pcVar11 + 8);\n              }\n              else {\n                if (uVar16 == 0) {\n                  trap(7);\n                }\n                uVar21 = ((uVar8 + uVar16) - 1) / uVar16;\n                if (uVar21 == 0) {\n                  trap(7);\n                }\n                uVar21 = uVar4 / uVar21;\n                if (uVar21 != uVar12) goto LAB_00019864;\nLAB_00019868:\n                iVar6 = *(int *)(pcVar11 + 8);\n              }\n              puVar14 = (uint *)(iVar6 + uVar21 * 4);\n              uVar12 = *puVar14;\n              if (uVar12 < uVar17) {\n                *(uint *)(pcVar11 + 4) = (*(int *)(pcVar11 + 4) - uVar12) + uVar17;\n                *puVar14 = uVar17;\n                *pcVar11 = *(uint *)(pcVar11 + 4) < uVar19;\n              }\n            }\n            pcVar11 = pcVar11 + 0xc;\n            uVar12 = uVar16;\n          } while (uVar20 != uVar16);\n        }\n        uVar4 = uVar4 + 1;\n        iVar6 = *(int *)(puVar3 + -0x59b0);\n      }" { (expression_statement "uVar18 = FUN_00019404(*(undefined4 *)(iVar6 + uVar4 * 4));" (assignment_expression "uVar18 = FUN_00019404(*(undefined4 *)(iVar6 + uVar4 * 4))" identifier = (call_expression "FUN_00019404(*(undefined4 *)(iVar6 + uVar4 * 4))" identifier (argument_list "(*(undefined4 *)(iVar6 + uVar4 * 4))" ( (pointer_expression "*(undefined4 *)(iVar6 + uVar4 * 4)" * (cast_expression "(undefined4 *)(iVar6 + uVar4 * 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + uVar4 * 4)" ( (binary_expression "iVar6 + uVar4 * 4" identifier + (binary_expression "uVar4 * 4" identifier * number_literal)) )))) )))) ;) (expression_statement "uVar8 = *(uint *)(puVar2 + -0x59a8);" (assignment_expression "uVar8 = *(uint *)(puVar2 + -0x59a8)" identifier = (pointer_expression "*(uint *)(puVar2 + -0x59a8)" * (cast_expression "(uint *)(puVar2 + -0x59a8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + -0x59a8)" ( (binary_expression "puVar2 + -0x59a8" identifier + number_literal) ))))) ;) (if_statement "if (uVar20 != 0) {\n          uVar19 = *(uint *)(puVar3 + -0x5a58);\n          pcVar11 = *(char **)(puVar3 + -0x5af0);\n          uVar12 = 0;\n          do {\n            uVar16 = uVar12 + 1;\n            if (*pcVar11 != '\0') {\n              uVar17 = uVar18;\n              if (param_1 == 0) {\n                if (uVar16 == 0) {\n                  trap(7);\n                }\n                uVar21 = uVar4 % uVar16;\n                if (uVar21 != uVar12) {\nLAB_00019864:\n                  uVar17 = uVar18 + 2;\n                  goto LAB_00019868;\n                }\n                iVar6 = *(int *)(pcVar11 + 8);\n              }\n              else {\n                if (uVar16 == 0) {\n                  trap(7);\n                }\n                uVar21 = ((uVar8 + uVar16) - 1) / uVar16;\n                if (uVar21 == 0) {\n                  trap(7);\n                }\n                uVar21 = uVar4 / uVar21;\n                if (uVar21 != uVar12) goto LAB_00019864;\nLAB_00019868:\n                iVar6 = *(int *)(pcVar11 + 8);\n              }\n              puVar14 = (uint *)(iVar6 + uVar21 * 4);\n              uVar12 = *puVar14;\n              if (uVar12 < uVar17) {\n                *(uint *)(pcVar11 + 4) = (*(int *)(pcVar11 + 4) - uVar12) + uVar17;\n                *puVar14 = uVar17;\n                *pcVar11 = *(uint *)(pcVar11 + 4) < uVar19;\n              }\n            }\n            pcVar11 = pcVar11 + 0xc;\n            uVar12 = uVar16;\n          } while (uVar20 != uVar16);\n        }" if (parenthesized_expression "(uVar20 != 0)" ( (binary_expression "uVar20 != 0" identifier != number_literal) )) (compound_statement "{\n          uVar19 = *(uint *)(puVar3 + -0x5a58);\n          pcVar11 = *(char **)(puVar3 + -0x5af0);\n          uVar12 = 0;\n          do {\n            uVar16 = uVar12 + 1;\n            if (*pcVar11 != '\0') {\n              uVar17 = uVar18;\n              if (param_1 == 0) {\n                if (uVar16 == 0) {\n                  trap(7);\n                }\n                uVar21 = uVar4 % uVar16;\n                if (uVar21 != uVar12) {\nLAB_00019864:\n                  uVar17 = uVar18 + 2;\n                  goto LAB_00019868;\n                }\n                iVar6 = *(int *)(pcVar11 + 8);\n              }\n              else {\n                if (uVar16 == 0) {\n                  trap(7);\n                }\n                uVar21 = ((uVar8 + uVar16) - 1) / uVar16;\n                if (uVar21 == 0) {\n                  trap(7);\n                }\n                uVar21 = uVar4 / uVar21;\n                if (uVar21 != uVar12) goto LAB_00019864;\nLAB_00019868:\n                iVar6 = *(int *)(pcVar11 + 8);\n              }\n              puVar14 = (uint *)(iVar6 + uVar21 * 4);\n              uVar12 = *puVar14;\n              if (uVar12 < uVar17) {\n                *(uint *)(pcVar11 + 4) = (*(int *)(pcVar11 + 4) - uVar12) + uVar17;\n                *puVar14 = uVar17;\n                *pcVar11 = *(uint *)(pcVar11 + 4) < uVar19;\n              }\n            }\n            pcVar11 = pcVar11 + 0xc;\n            uVar12 = uVar16;\n          } while (uVar20 != uVar16);\n        }" { (expression_statement "uVar19 = *(uint *)(puVar3 + -0x5a58);" (assignment_expression "uVar19 = *(uint *)(puVar3 + -0x5a58)" identifier = (pointer_expression "*(uint *)(puVar3 + -0x5a58)" * (cast_expression "(uint *)(puVar3 + -0x5a58)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + -0x5a58)" ( (binary_expression "puVar3 + -0x5a58" identifier + number_literal) ))))) ;) (expression_statement "pcVar11 = *(char **)(puVar3 + -0x5af0);" (assignment_expression "pcVar11 = *(char **)(puVar3 + -0x5af0)" identifier = (pointer_expression "*(char **)(puVar3 + -0x5af0)" * (cast_expression "(char **)(puVar3 + -0x5af0)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar3 + -0x5af0)" ( (binary_expression "puVar3 + -0x5af0" identifier + number_literal) ))))) ;) (expression_statement "uVar12 = 0;" (assignment_expression "uVar12 = 0" identifier = number_literal) ;) (do_statement "do {\n            uVar16 = uVar12 + 1;\n            if (*pcVar11 != '\0') {\n              uVar17 = uVar18;\n              if (param_1 == 0) {\n                if (uVar16 == 0) {\n                  trap(7);\n                }\n                uVar21 = uVar4 % uVar16;\n                if (uVar21 != uVar12) {\nLAB_00019864:\n                  uVar17 = uVar18 + 2;\n                  goto LAB_00019868;\n                }\n                iVar6 = *(int *)(pcVar11 + 8);\n              }\n              else {\n                if (uVar16 == 0) {\n                  trap(7);\n                }\n                uVar21 = ((uVar8 + uVar16) - 1) / uVar16;\n                if (uVar21 == 0) {\n                  trap(7);\n                }\n                uVar21 = uVar4 / uVar21;\n                if (uVar21 != uVar12) goto LAB_00019864;\nLAB_00019868:\n                iVar6 = *(int *)(pcVar11 + 8);\n              }\n              puVar14 = (uint *)(iVar6 + uVar21 * 4);\n              uVar12 = *puVar14;\n              if (uVar12 < uVar17) {\n                *(uint *)(pcVar11 + 4) = (*(int *)(pcVar11 + 4) - uVar12) + uVar17;\n                *puVar14 = uVar17;\n                *pcVar11 = *(uint *)(pcVar11 + 4) < uVar19;\n              }\n            }\n            pcVar11 = pcVar11 + 0xc;\n            uVar12 = uVar16;\n          } while (uVar20 != uVar16);" do (compound_statement "{\n            uVar16 = uVar12 + 1;\n            if (*pcVar11 != '\0') {\n              uVar17 = uVar18;\n              if (param_1 == 0) {\n                if (uVar16 == 0) {\n                  trap(7);\n                }\n                uVar21 = uVar4 % uVar16;\n                if (uVar21 != uVar12) {\nLAB_00019864:\n                  uVar17 = uVar18 + 2;\n                  goto LAB_00019868;\n                }\n                iVar6 = *(int *)(pcVar11 + 8);\n              }\n              else {\n                if (uVar16 == 0) {\n                  trap(7);\n                }\n                uVar21 = ((uVar8 + uVar16) - 1) / uVar16;\n                if (uVar21 == 0) {\n                  trap(7);\n                }\n                uVar21 = uVar4 / uVar21;\n                if (uVar21 != uVar12) goto LAB_00019864;\nLAB_00019868:\n                iVar6 = *(int *)(pcVar11 + 8);\n              }\n              puVar14 = (uint *)(iVar6 + uVar21 * 4);\n              uVar12 = *puVar14;\n              if (uVar12 < uVar17) {\n                *(uint *)(pcVar11 + 4) = (*(int *)(pcVar11 + 4) - uVar12) + uVar17;\n                *puVar14 = uVar17;\n                *pcVar11 = *(uint *)(pcVar11 + 4) < uVar19;\n              }\n            }\n            pcVar11 = pcVar11 + 0xc;\n            uVar12 = uVar16;\n          }" { (expression_statement "uVar16 = uVar12 + 1;" (assignment_expression "uVar16 = uVar12 + 1" identifier = (binary_expression "uVar12 + 1" identifier + number_literal)) ;) (if_statement "if (*pcVar11 != '\0') {\n              uVar17 = uVar18;\n              if (param_1 == 0) {\n                if (uVar16 == 0) {\n                  trap(7);\n                }\n                uVar21 = uVar4 % uVar16;\n                if (uVar21 != uVar12) {\nLAB_00019864:\n                  uVar17 = uVar18 + 2;\n                  goto LAB_00019868;\n                }\n                iVar6 = *(int *)(pcVar11 + 8);\n              }\n              else {\n                if (uVar16 == 0) {\n                  trap(7);\n                }\n                uVar21 = ((uVar8 + uVar16) - 1) / uVar16;\n                if (uVar21 == 0) {\n                  trap(7);\n                }\n                uVar21 = uVar4 / uVar21;\n                if (uVar21 != uVar12) goto LAB_00019864;\nLAB_00019868:\n                iVar6 = *(int *)(pcVar11 + 8);\n              }\n              puVar14 = (uint *)(iVar6 + uVar21 * 4);\n              uVar12 = *puVar14;\n              if (uVar12 < uVar17) {\n                *(uint *)(pcVar11 + 4) = (*(int *)(pcVar11 + 4) - uVar12) + uVar17;\n                *puVar14 = uVar17;\n                *pcVar11 = *(uint *)(pcVar11 + 4) < uVar19;\n              }\n            }" if (parenthesized_expression "(*pcVar11 != '\0')" ( (binary_expression "*pcVar11 != '\0'" (pointer_expression "*pcVar11" * identifier) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n              uVar17 = uVar18;\n              if (param_1 == 0) {\n                if (uVar16 == 0) {\n                  trap(7);\n                }\n                uVar21 = uVar4 % uVar16;\n                if (uVar21 != uVar12) {\nLAB_00019864:\n                  uVar17 = uVar18 + 2;\n                  goto LAB_00019868;\n                }\n                iVar6 = *(int *)(pcVar11 + 8);\n              }\n              else {\n                if (uVar16 == 0) {\n                  trap(7);\n                }\n                uVar21 = ((uVar8 + uVar16) - 1) / uVar16;\n                if (uVar21 == 0) {\n                  trap(7);\n                }\n                uVar21 = uVar4 / uVar21;\n                if (uVar21 != uVar12) goto LAB_00019864;\nLAB_00019868:\n                iVar6 = *(int *)(pcVar11 + 8);\n              }\n              puVar14 = (uint *)(iVar6 + uVar21 * 4);\n              uVar12 = *puVar14;\n              if (uVar12 < uVar17) {\n                *(uint *)(pcVar11 + 4) = (*(int *)(pcVar11 + 4) - uVar12) + uVar17;\n                *puVar14 = uVar17;\n                *pcVar11 = *(uint *)(pcVar11 + 4) < uVar19;\n              }\n            }" { (expression_statement "uVar17 = uVar18;" (assignment_expression "uVar17 = uVar18" identifier = identifier) ;) (if_statement "if (param_1 == 0) {\n                if (uVar16 == 0) {\n                  trap(7);\n                }\n                uVar21 = uVar4 % uVar16;\n                if (uVar21 != uVar12) {\nLAB_00019864:\n                  uVar17 = uVar18 + 2;\n                  goto LAB_00019868;\n                }\n                iVar6 = *(int *)(pcVar11 + 8);\n              }\n              else {\n                if (uVar16 == 0) {\n                  trap(7);\n                }\n                uVar21 = ((uVar8 + uVar16) - 1) / uVar16;\n                if (uVar21 == 0) {\n                  trap(7);\n                }\n                uVar21 = uVar4 / uVar21;\n                if (uVar21 != uVar12) goto LAB_00019864;\nLAB_00019868:\n                iVar6 = *(int *)(pcVar11 + 8);\n              }" if (parenthesized_expression "(param_1 == 0)" ( (binary_expression "param_1 == 0" identifier == number_literal) )) (compound_statement "{\n                if (uVar16 == 0) {\n                  trap(7);\n                }\n                uVar21 = uVar4 % uVar16;\n                if (uVar21 != uVar12) {\nLAB_00019864:\n                  uVar17 = uVar18 + 2;\n                  goto LAB_00019868;\n                }\n                iVar6 = *(int *)(pcVar11 + 8);\n              }" { (if_statement "if (uVar16 == 0) {\n                  trap(7);\n                }" if (parenthesized_expression "(uVar16 == 0)" ( (binary_expression "uVar16 == 0" identifier == number_literal) )) (compound_statement "{\n                  trap(7);\n                }" { (expression_statement "trap(7);" (call_expression "trap(7)" identifier (argument_list "(7)" ( number_literal ))) ;) })) (expression_statement "uVar21 = uVar4 % uVar16;" (assignment_expression "uVar21 = uVar4 % uVar16" identifier = (binary_expression "uVar4 % uVar16" identifier % identifier)) ;) (if_statement "if (uVar21 != uVar12) {\nLAB_00019864:\n                  uVar17 = uVar18 + 2;\n                  goto LAB_00019868;\n                }" if (parenthesized_expression "(uVar21 != uVar12)" ( (binary_expression "uVar21 != uVar12" identifier != identifier) )) (compound_statement "{\nLAB_00019864:\n                  uVar17 = uVar18 + 2;\n                  goto LAB_00019868;\n                }" { (labeled_statement "LAB_00019864:\n                  uVar17 = uVar18 + 2;" statement_identifier : (expression_statement "uVar17 = uVar18 + 2;" (assignment_expression "uVar17 = uVar18 + 2" identifier = (binary_expression "uVar18 + 2" identifier + number_literal)) ;)) (goto_statement "goto LAB_00019868;" goto statement_identifier ;) })) (expression_statement "iVar6 = *(int *)(pcVar11 + 8);" (assignment_expression "iVar6 = *(int *)(pcVar11 + 8)" identifier = (pointer_expression "*(int *)(pcVar11 + 8)" * (cast_expression "(int *)(pcVar11 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar11 + 8)" ( (binary_expression "pcVar11 + 8" identifier + number_literal) ))))) ;) }) (else_clause "else {\n                if (uVar16 == 0) {\n                  trap(7);\n                }\n                uVar21 = ((uVar8 + uVar16) - 1) / uVar16;\n                if (uVar21 == 0) {\n                  trap(7);\n                }\n                uVar21 = uVar4 / uVar21;\n                if (uVar21 != uVar12) goto LAB_00019864;\nLAB_00019868:\n                iVar6 = *(int *)(pcVar11 + 8);\n              }" else (compound_statement "{\n                if (uVar16 == 0) {\n                  trap(7);\n                }\n                uVar21 = ((uVar8 + uVar16) - 1) / uVar16;\n                if (uVar21 == 0) {\n                  trap(7);\n                }\n                uVar21 = uVar4 / uVar21;\n                if (uVar21 != uVar12) goto LAB_00019864;\nLAB_00019868:\n                iVar6 = *(int *)(pcVar11 + 8);\n              }" { (if_statement "if (uVar16 == 0) {\n                  trap(7);\n                }" if (parenthesized_expression "(uVar16 == 0)" ( (binary_expression "uVar16 == 0" identifier == number_literal) )) (compound_statement "{\n                  trap(7);\n                }" { (expression_statement "trap(7);" (call_expression "trap(7)" identifier (argument_list "(7)" ( number_literal ))) ;) })) (expression_statement "uVar21 = ((uVar8 + uVar16) - 1) / uVar16;" (assignment_expression "uVar21 = ((uVar8 + uVar16) - 1) / uVar16" identifier = (binary_expression "((uVar8 + uVar16) - 1) / uVar16" (parenthesized_expression "((uVar8 + uVar16) - 1)" ( (binary_expression "(uVar8 + uVar16) - 1" (parenthesized_expression "(uVar8 + uVar16)" ( (binary_expression "uVar8 + uVar16" identifier + identifier) )) - number_literal) )) / identifier)) ;) (if_statement "if (uVar21 == 0) {\n                  trap(7);\n                }" if (parenthesized_expression "(uVar21 == 0)" ( (binary_expression "uVar21 == 0" identifier == number_literal) )) (compound_statement "{\n                  trap(7);\n                }" { (expression_statement "trap(7);" (call_expression "trap(7)" identifier (argument_list "(7)" ( number_literal ))) ;) })) (expression_statement "uVar21 = uVar4 / uVar21;" (assignment_expression "uVar21 = uVar4 / uVar21" identifier = (binary_expression "uVar4 / uVar21" identifier / identifier)) ;) (if_statement "if (uVar21 != uVar12) goto LAB_00019864;" if (parenthesized_expression "(uVar21 != uVar12)" ( (binary_expression "uVar21 != uVar12" identifier != identifier) )) (goto_statement "goto LAB_00019864;" goto statement_identifier ;)) (labeled_statement "LAB_00019868:\n                iVar6 = *(int *)(pcVar11 + 8);" statement_identifier : (expression_statement "iVar6 = *(int *)(pcVar11 + 8);" (assignment_expression "iVar6 = *(int *)(pcVar11 + 8)" identifier = (pointer_expression "*(int *)(pcVar11 + 8)" * (cast_expression "(int *)(pcVar11 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar11 + 8)" ( (binary_expression "pcVar11 + 8" identifier + number_literal) ))))) ;)) }))) (expression_statement "puVar14 = (uint *)(iVar6 + uVar21 * 4);" (assignment_expression "puVar14 = (uint *)(iVar6 + uVar21 * 4)" identifier = (cast_expression "(uint *)(iVar6 + uVar21 * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + uVar21 * 4)" ( (binary_expression "iVar6 + uVar21 * 4" identifier + (binary_expression "uVar21 * 4" identifier * number_literal)) )))) ;) (expression_statement "uVar12 = *puVar14;" (assignment_expression "uVar12 = *puVar14" identifier = (pointer_expression "*puVar14" * identifier)) ;) (if_statement "if (uVar12 < uVar17) {\n                *(uint *)(pcVar11 + 4) = (*(int *)(pcVar11 + 4) - uVar12) + uVar17;\n                *puVar14 = uVar17;\n                *pcVar11 = *(uint *)(pcVar11 + 4) < uVar19;\n              }" if (parenthesized_expression "(uVar12 < uVar17)" ( (binary_expression "uVar12 < uVar17" identifier < identifier) )) (compound_statement "{\n                *(uint *)(pcVar11 + 4) = (*(int *)(pcVar11 + 4) - uVar12) + uVar17;\n                *puVar14 = uVar17;\n                *pcVar11 = *(uint *)(pcVar11 + 4) < uVar19;\n              }" { (expression_statement "*(uint *)(pcVar11 + 4) = (*(int *)(pcVar11 + 4) - uVar12) + uVar17;" (assignment_expression "*(uint *)(pcVar11 + 4) = (*(int *)(pcVar11 + 4) - uVar12) + uVar17" (pointer_expression "*(uint *)(pcVar11 + 4)" * (cast_expression "(uint *)(pcVar11 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar11 + 4)" ( (binary_expression "pcVar11 + 4" identifier + number_literal) )))) = (binary_expression "(*(int *)(pcVar11 + 4) - uVar12) + uVar17" (parenthesized_expression "(*(int *)(pcVar11 + 4) - uVar12)" ( (binary_expression "*(int *)(pcVar11 + 4) - uVar12" (pointer_expression "*(int *)(pcVar11 + 4)" * (cast_expression "(int *)(pcVar11 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar11 + 4)" ( (binary_expression "pcVar11 + 4" identifier + number_literal) )))) - identifier) )) + identifier)) ;) (expression_statement "*puVar14 = uVar17;" (assignment_expression "*puVar14 = uVar17" (pointer_expression "*puVar14" * identifier) = identifier) ;) (expression_statement "*pcVar11 = *(uint *)(pcVar11 + 4) < uVar19;" (assignment_expression "*pcVar11 = *(uint *)(pcVar11 + 4) < uVar19" (pointer_expression "*pcVar11" * identifier) = (binary_expression "*(uint *)(pcVar11 + 4) < uVar19" (pointer_expression "*(uint *)(pcVar11 + 4)" * (cast_expression "(uint *)(pcVar11 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar11 + 4)" ( (binary_expression "pcVar11 + 4" identifier + number_literal) )))) < identifier)) ;) })) })) (expression_statement "pcVar11 = pcVar11 + 0xc;" (assignment_expression "pcVar11 = pcVar11 + 0xc" identifier = (binary_expression "pcVar11 + 0xc" identifier + number_literal)) ;) (expression_statement "uVar12 = uVar16;" (assignment_expression "uVar12 = uVar16" identifier = identifier) ;) }) while (parenthesized_expression "(uVar20 != uVar16)" ( (binary_expression "uVar20 != uVar16" identifier != identifier) )) ;) })) (expression_statement "uVar4 = uVar4 + 1;" (assignment_expression "uVar4 = uVar4 + 1" identifier = (binary_expression "uVar4 + 1" identifier + number_literal)) ;) (expression_statement "iVar6 = *(int *)(puVar3 + -0x59b0);" (assignment_expression "iVar6 = *(int *)(puVar3 + -0x59b0)" identifier = (pointer_expression "*(int *)(puVar3 + -0x59b0)" * (cast_expression "(int *)(puVar3 + -0x59b0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + -0x59b0)" ( (binary_expression "puVar3 + -0x59b0" identifier + number_literal) ))))) ;) }) while (parenthesized_expression "(uVar4 < uVar8)" ( (binary_expression "uVar4 < uVar8" identifier < identifier) )) ;) })) (if_statement "if (1 < uVar20) {\n      iVar6 = *(int *)(PTR_DAT_00049208 + -0x5af0) + uVar20 * 0xc;\n      cVar1 = *(char *)(iVar6 + -0xc);\n      while (cVar1 == '\0') {\n        uVar20 = uVar20 - 1;\n        if (uVar20 == 1) {\n          return 1;\n        }\n        cVar1 = *(char *)(iVar6 + -0x18);\n        iVar6 = iVar6 + -0xc;\n      }\n    }" if (parenthesized_expression "(1 < uVar20)" ( (binary_expression "1 < uVar20" number_literal < identifier) )) (compound_statement "{\n      iVar6 = *(int *)(PTR_DAT_00049208 + -0x5af0) + uVar20 * 0xc;\n      cVar1 = *(char *)(iVar6 + -0xc);\n      while (cVar1 == '\0') {\n        uVar20 = uVar20 - 1;\n        if (uVar20 == 1) {\n          return 1;\n        }\n        cVar1 = *(char *)(iVar6 + -0x18);\n        iVar6 = iVar6 + -0xc;\n      }\n    }" { (expression_statement "iVar6 = *(int *)(PTR_DAT_00049208 + -0x5af0) + uVar20 * 0xc;" (assignment_expression "iVar6 = *(int *)(PTR_DAT_00049208 + -0x5af0) + uVar20 * 0xc" identifier = (binary_expression "*(int *)(PTR_DAT_00049208 + -0x5af0) + uVar20 * 0xc" (pointer_expression "*(int *)(PTR_DAT_00049208 + -0x5af0)" * (cast_expression "(int *)(PTR_DAT_00049208 + -0x5af0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_00049208 + -0x5af0)" ( (binary_expression "PTR_DAT_00049208 + -0x5af0" identifier + number_literal) )))) + (binary_expression "uVar20 * 0xc" identifier * number_literal))) ;) (expression_statement "cVar1 = *(char *)(iVar6 + -0xc);" (assignment_expression "cVar1 = *(char *)(iVar6 + -0xc)" identifier = (pointer_expression "*(char *)(iVar6 + -0xc)" * (cast_expression "(char *)(iVar6 + -0xc)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + -0xc)" ( (binary_expression "iVar6 + -0xc" identifier + number_literal) ))))) ;) (while_statement "while (cVar1 == '\0') {\n        uVar20 = uVar20 - 1;\n        if (uVar20 == 1) {\n          return 1;\n        }\n        cVar1 = *(char *)(iVar6 + -0x18);\n        iVar6 = iVar6 + -0xc;\n      }" while (parenthesized_expression "(cVar1 == '\0')" ( (binary_expression "cVar1 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n        uVar20 = uVar20 - 1;\n        if (uVar20 == 1) {\n          return 1;\n        }\n        cVar1 = *(char *)(iVar6 + -0x18);\n        iVar6 = iVar6 + -0xc;\n      }" { (expression_statement "uVar20 = uVar20 - 1;" (assignment_expression "uVar20 = uVar20 - 1" identifier = (binary_expression "uVar20 - 1" identifier - number_literal)) ;) (if_statement "if (uVar20 == 1) {\n          return 1;\n        }" if (parenthesized_expression "(uVar20 == 1)" ( (binary_expression "uVar20 == 1" identifier == number_literal) )) (compound_statement "{\n          return 1;\n        }" { (return_statement "return 1;" return number_literal ;) })) (expression_statement "cVar1 = *(char *)(iVar6 + -0x18);" (assignment_expression "cVar1 = *(char *)(iVar6 + -0x18)" identifier = (pointer_expression "*(char *)(iVar6 + -0x18)" * (cast_expression "(char *)(iVar6 + -0x18)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + -0x18)" ( (binary_expression "iVar6 + -0x18" identifier + number_literal) ))))) ;) (expression_statement "iVar6 = iVar6 + -0xc;" (assignment_expression "iVar6 = iVar6 + -0xc" identifier = (binary_expression "iVar6 + -0xc" identifier + number_literal)) ;) })) })) (return_statement "return uVar20;" return identifier ;) })) (if_statement "if (uVar20 < uVar4 >> 1) {\n    uVar4 = uVar20 * 2;\n    if (((int)(uVar20 * 0x18) < 0) ||\n       (uVar20 * 3 >> 0x1d != 0 || (uint)(uVar20 * 3 < uVar4) != (int)uVar20 >> 0x1f))\n    goto LAB_000199b4;\n    uVar5 = xrealloc(*(undefined4 *)(PTR_DAT_00049208 + -0x5af0));\n    *(undefined4 *)(puVar2 + -0x5af0) = uVar5;\n  }\n  else {\n    if (((int)(uVar4 * 0xc) < 0) ||\n       (uVar4 * 3 >> 0x1e != 0 || (uint)(uVar4 * 3 < uVar4 * 2) != (int)uVar4 >> 0x1f))\n    goto LAB_000199b4;\n    uVar5 = xrealloc(*(undefined4 *)(PTR_DAT_00049208 + -0x5af0));\n    uVar4 = *(uint *)(puVar2 + -0x5af4);\n    *(undefined4 *)(puVar2 + -0x5af0) = uVar5;\n  }" if (parenthesized_expression "(uVar20 < uVar4 >> 1)" ( (binary_expression "uVar20 < uVar4 >> 1" identifier < (binary_expression "uVar4 >> 1" identifier >> number_literal)) )) (compound_statement "{\n    uVar4 = uVar20 * 2;\n    if (((int)(uVar20 * 0x18) < 0) ||\n       (uVar20 * 3 >> 0x1d != 0 || (uint)(uVar20 * 3 < uVar4) != (int)uVar20 >> 0x1f))\n    goto LAB_000199b4;\n    uVar5 = xrealloc(*(undefined4 *)(PTR_DAT_00049208 + -0x5af0));\n    *(undefined4 *)(puVar2 + -0x5af0) = uVar5;\n  }" { (expression_statement "uVar4 = uVar20 * 2;" (assignment_expression "uVar4 = uVar20 * 2" identifier = (binary_expression "uVar20 * 2" identifier * number_literal)) ;) (if_statement "if (((int)(uVar20 * 0x18) < 0) ||\n       (uVar20 * 3 >> 0x1d != 0 || (uint)(uVar20 * 3 < uVar4) != (int)uVar20 >> 0x1f))\n    goto LAB_000199b4;" if (parenthesized_expression "(((int)(uVar20 * 0x18) < 0) ||\n       (uVar20 * 3 >> 0x1d != 0 || (uint)(uVar20 * 3 < uVar4) != (int)uVar20 >> 0x1f))" ( (binary_expression "((int)(uVar20 * 0x18) < 0) ||\n       (uVar20 * 3 >> 0x1d != 0 || (uint)(uVar20 * 3 < uVar4) != (int)uVar20 >> 0x1f)" (parenthesized_expression "((int)(uVar20 * 0x18) < 0)" ( (binary_expression "(int)(uVar20 * 0x18) < 0" (cast_expression "(int)(uVar20 * 0x18)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(uVar20 * 0x18)" ( (binary_expression "uVar20 * 0x18" identifier * number_literal) ))) < number_literal) )) || (parenthesized_expression "(uVar20 * 3 >> 0x1d != 0 || (uint)(uVar20 * 3 < uVar4) != (int)uVar20 >> 0x1f)" ( (binary_expression "uVar20 * 3 >> 0x1d != 0 || (uint)(uVar20 * 3 < uVar4) != (int)uVar20 >> 0x1f" (binary_expression "uVar20 * 3 >> 0x1d != 0" (binary_expression "uVar20 * 3 >> 0x1d" (binary_expression "uVar20 * 3" identifier * number_literal) >> number_literal) != number_literal) || (binary_expression "(uint)(uVar20 * 3 < uVar4) != (int)uVar20 >> 0x1f" (call_expression "(uint)(uVar20 * 3 < uVar4)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar20 * 3 < uVar4)" ( (binary_expression "uVar20 * 3 < uVar4" (binary_expression "uVar20 * 3" identifier * number_literal) < identifier) ))) != (binary_expression "(int)uVar20 >> 0x1f" (cast_expression "(int)uVar20" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal))) ))) )) (goto_statement "goto LAB_000199b4;" goto statement_identifier ;)) (expression_statement "uVar5 = xrealloc(*(undefined4 *)(PTR_DAT_00049208 + -0x5af0));" (assignment_expression "uVar5 = xrealloc(*(undefined4 *)(PTR_DAT_00049208 + -0x5af0))" identifier = (call_expression "xrealloc(*(undefined4 *)(PTR_DAT_00049208 + -0x5af0))" identifier (argument_list "(*(undefined4 *)(PTR_DAT_00049208 + -0x5af0))" ( (pointer_expression "*(undefined4 *)(PTR_DAT_00049208 + -0x5af0)" * (cast_expression "(undefined4 *)(PTR_DAT_00049208 + -0x5af0)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_00049208 + -0x5af0)" ( (binary_expression "PTR_DAT_00049208 + -0x5af0" identifier + number_literal) )))) )))) ;) (expression_statement "*(undefined4 *)(puVar2 + -0x5af0) = uVar5;" (assignment_expression "*(undefined4 *)(puVar2 + -0x5af0) = uVar5" (pointer_expression "*(undefined4 *)(puVar2 + -0x5af0)" * (cast_expression "(undefined4 *)(puVar2 + -0x5af0)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + -0x5af0)" ( (binary_expression "puVar2 + -0x5af0" identifier + number_literal) )))) = identifier) ;) }) (else_clause "else {\n    if (((int)(uVar4 * 0xc) < 0) ||\n       (uVar4 * 3 >> 0x1e != 0 || (uint)(uVar4 * 3 < uVar4 * 2) != (int)uVar4 >> 0x1f))\n    goto LAB_000199b4;\n    uVar5 = xrealloc(*(undefined4 *)(PTR_DAT_00049208 + -0x5af0));\n    uVar4 = *(uint *)(puVar2 + -0x5af4);\n    *(undefined4 *)(puVar2 + -0x5af0) = uVar5;\n  }" else (compound_statement "{\n    if (((int)(uVar4 * 0xc) < 0) ||\n       (uVar4 * 3 >> 0x1e != 0 || (uint)(uVar4 * 3 < uVar4 * 2) != (int)uVar4 >> 0x1f))\n    goto LAB_000199b4;\n    uVar5 = xrealloc(*(undefined4 *)(PTR_DAT_00049208 + -0x5af0));\n    uVar4 = *(uint *)(puVar2 + -0x5af4);\n    *(undefined4 *)(puVar2 + -0x5af0) = uVar5;\n  }" { (if_statement "if (((int)(uVar4 * 0xc) < 0) ||\n       (uVar4 * 3 >> 0x1e != 0 || (uint)(uVar4 * 3 < uVar4 * 2) != (int)uVar4 >> 0x1f))\n    goto LAB_000199b4;" if (parenthesized_expression "(((int)(uVar4 * 0xc) < 0) ||\n       (uVar4 * 3 >> 0x1e != 0 || (uint)(uVar4 * 3 < uVar4 * 2) != (int)uVar4 >> 0x1f))" ( (binary_expression "((int)(uVar4 * 0xc) < 0) ||\n       (uVar4 * 3 >> 0x1e != 0 || (uint)(uVar4 * 3 < uVar4 * 2) != (int)uVar4 >> 0x1f)" (parenthesized_expression "((int)(uVar4 * 0xc) < 0)" ( (binary_expression "(int)(uVar4 * 0xc) < 0" (cast_expression "(int)(uVar4 * 0xc)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(uVar4 * 0xc)" ( (binary_expression "uVar4 * 0xc" identifier * number_literal) ))) < number_literal) )) || (parenthesized_expression "(uVar4 * 3 >> 0x1e != 0 || (uint)(uVar4 * 3 < uVar4 * 2) != (int)uVar4 >> 0x1f)" ( (binary_expression "uVar4 * 3 >> 0x1e != 0 || (uint)(uVar4 * 3 < uVar4 * 2) != (int)uVar4 >> 0x1f" (binary_expression "uVar4 * 3 >> 0x1e != 0" (binary_expression "uVar4 * 3 >> 0x1e" (binary_expression "uVar4 * 3" identifier * number_literal) >> number_literal) != number_literal) || (binary_expression "(uint)(uVar4 * 3 < uVar4 * 2) != (int)uVar4 >> 0x1f" (call_expression "(uint)(uVar4 * 3 < uVar4 * 2)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar4 * 3 < uVar4 * 2)" ( (binary_expression "uVar4 * 3 < uVar4 * 2" (binary_expression "uVar4 * 3" identifier * number_literal) < (binary_expression "uVar4 * 2" identifier * number_literal)) ))) != (binary_expression "(int)uVar4 >> 0x1f" (cast_expression "(int)uVar4" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal))) ))) )) (goto_statement "goto LAB_000199b4;" goto statement_identifier ;)) (expression_statement "uVar5 = xrealloc(*(undefined4 *)(PTR_DAT_00049208 + -0x5af0));" (assignment_expression "uVar5 = xrealloc(*(undefined4 *)(PTR_DAT_00049208 + -0x5af0))" identifier = (call_expression "xrealloc(*(undefined4 *)(PTR_DAT_00049208 + -0x5af0))" identifier (argument_list "(*(undefined4 *)(PTR_DAT_00049208 + -0x5af0))" ( (pointer_expression "*(undefined4 *)(PTR_DAT_00049208 + -0x5af0)" * (cast_expression "(undefined4 *)(PTR_DAT_00049208 + -0x5af0)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_00049208 + -0x5af0)" ( (binary_expression "PTR_DAT_00049208 + -0x5af0" identifier + number_literal) )))) )))) ;) (expression_statement "uVar4 = *(uint *)(puVar2 + -0x5af4);" (assignment_expression "uVar4 = *(uint *)(puVar2 + -0x5af4)" identifier = (pointer_expression "*(uint *)(puVar2 + -0x5af4)" * (cast_expression "(uint *)(puVar2 + -0x5af4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + -0x5af4)" ( (binary_expression "puVar2 + -0x5af4" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar2 + -0x5af0) = uVar5;" (assignment_expression "*(undefined4 *)(puVar2 + -0x5af0) = uVar5" (pointer_expression "*(undefined4 *)(puVar2 + -0x5af0)" * (cast_expression "(undefined4 *)(puVar2 + -0x5af0)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + -0x5af0)" ( (binary_expression "puVar2 + -0x5af0" identifier + number_literal) )))) = identifier) ;) }))) (expression_statement "uVar18 = uVar4 - *(int *)(puVar2 + -0x6990);" (assignment_expression "uVar18 = uVar4 - *(int *)(puVar2 + -0x6990)" identifier = (binary_expression "uVar4 - *(int *)(puVar2 + -0x6990)" identifier - (pointer_expression "*(int *)(puVar2 + -0x6990)" * (cast_expression "(int *)(puVar2 + -0x6990)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + -0x6990)" ( (binary_expression "puVar2 + -0x6990" identifier + number_literal) )))))) ;) (expression_statement "uVar12 = *(int *)(puVar2 + -0x6990) + 1 + uVar4;" (assignment_expression "uVar12 = *(int *)(puVar2 + -0x6990) + 1 + uVar4" identifier = (binary_expression "*(int *)(puVar2 + -0x6990) + 1 + uVar4" (binary_expression "*(int *)(puVar2 + -0x6990) + 1" (pointer_expression "*(int *)(puVar2 + -0x6990)" * (cast_expression "(int *)(puVar2 + -0x6990)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + -0x6990)" ( (binary_expression "puVar2 + -0x6990" identifier + number_literal) )))) + number_literal) + identifier)) ;) (expression_statement "uVar8 = uVar18 * uVar12;" (assignment_expression "uVar8 = uVar18 * uVar12" identifier = (binary_expression "uVar18 * uVar12" identifier * identifier)) ;) (if_statement "if (uVar4 <= uVar12) {\n    if (uVar18 == 0) {\n      trap(7);\n    }\n    if (((uVar12 == uVar8 / uVar18) && (-1 < (int)((uVar8 >> 1) << 2))) && (-1 < (int)uVar8)) {\n      iVar6 = xmalloc();\n      uVar18 = *(uint *)(puVar2 + -0x6990);\n      if (uVar18 < uVar4) {\n        iVar9 = (uVar18 + 1) * 4;\n        iVar13 = *(int *)(puVar2 + -0x5af0) + uVar18 * 0xc;\n        do {\n          *(int *)(iVar13 + 8) = iVar6;\n          iVar6 = iVar6 + iVar9;\n          iVar9 = iVar9 + 4;\n          iVar13 = iVar13 + 0xc;\n        } while ((uVar4 + 1) * 4 != iVar9);\n      }\n      uVar18 = *(uint *)(puVar2 + -0x59a8);\n      *(uint *)(puVar2 + -0x6990) = uVar4;\n      goto LAB_00019798;\n    }\n  }" if (parenthesized_expression "(uVar4 <= uVar12)" ( (binary_expression "uVar4 <= uVar12" identifier <= identifier) )) (compound_statement "{\n    if (uVar18 == 0) {\n      trap(7);\n    }\n    if (((uVar12 == uVar8 / uVar18) && (-1 < (int)((uVar8 >> 1) << 2))) && (-1 < (int)uVar8)) {\n      iVar6 = xmalloc();\n      uVar18 = *(uint *)(puVar2 + -0x6990);\n      if (uVar18 < uVar4) {\n        iVar9 = (uVar18 + 1) * 4;\n        iVar13 = *(int *)(puVar2 + -0x5af0) + uVar18 * 0xc;\n        do {\n          *(int *)(iVar13 + 8) = iVar6;\n          iVar6 = iVar6 + iVar9;\n          iVar9 = iVar9 + 4;\n          iVar13 = iVar13 + 0xc;\n        } while ((uVar4 + 1) * 4 != iVar9);\n      }\n      uVar18 = *(uint *)(puVar2 + -0x59a8);\n      *(uint *)(puVar2 + -0x6990) = uVar4;\n      goto LAB_00019798;\n    }\n  }" { (if_statement "if (uVar18 == 0) {\n      trap(7);\n    }" if (parenthesized_expression "(uVar18 == 0)" ( (binary_expression "uVar18 == 0" identifier == number_literal) )) (compound_statement "{\n      trap(7);\n    }" { (expression_statement "trap(7);" (call_expression "trap(7)" identifier (argument_list "(7)" ( number_literal ))) ;) })) (if_statement "if (((uVar12 == uVar8 / uVar18) && (-1 < (int)((uVar8 >> 1) << 2))) && (-1 < (int)uVar8)) {\n      iVar6 = xmalloc();\n      uVar18 = *(uint *)(puVar2 + -0x6990);\n      if (uVar18 < uVar4) {\n        iVar9 = (uVar18 + 1) * 4;\n        iVar13 = *(int *)(puVar2 + -0x5af0) + uVar18 * 0xc;\n        do {\n          *(int *)(iVar13 + 8) = iVar6;\n          iVar6 = iVar6 + iVar9;\n          iVar9 = iVar9 + 4;\n          iVar13 = iVar13 + 0xc;\n        } while ((uVar4 + 1) * 4 != iVar9);\n      }\n      uVar18 = *(uint *)(puVar2 + -0x59a8);\n      *(uint *)(puVar2 + -0x6990) = uVar4;\n      goto LAB_00019798;\n    }" if (parenthesized_expression "(((uVar12 == uVar8 / uVar18) && (-1 < (int)((uVar8 >> 1) << 2))) && (-1 < (int)uVar8))" ( (binary_expression "((uVar12 == uVar8 / uVar18) && (-1 < (int)((uVar8 >> 1) << 2))) && (-1 < (int)uVar8)" (parenthesized_expression "((uVar12 == uVar8 / uVar18) && (-1 < (int)((uVar8 >> 1) << 2)))" ( (binary_expression "(uVar12 == uVar8 / uVar18) && (-1 < (int)((uVar8 >> 1) << 2))" (parenthesized_expression "(uVar12 == uVar8 / uVar18)" ( (binary_expression "uVar12 == uVar8 / uVar18" identifier == (binary_expression "uVar8 / uVar18" identifier / identifier)) )) && (parenthesized_expression "(-1 < (int)((uVar8 >> 1) << 2))" ( (binary_expression "-1 < (int)((uVar8 >> 1) << 2)" number_literal < (cast_expression "(int)((uVar8 >> 1) << 2)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((uVar8 >> 1) << 2)" ( (binary_expression "(uVar8 >> 1) << 2" (parenthesized_expression "(uVar8 >> 1)" ( (binary_expression "uVar8 >> 1" identifier >> number_literal) )) << number_literal) )))) ))) )) && (parenthesized_expression "(-1 < (int)uVar8)" ( (binary_expression "-1 < (int)uVar8" number_literal < (cast_expression "(int)uVar8" ( (type_descriptor "int" primitive_type) ) identifier)) ))) )) (compound_statement "{\n      iVar6 = xmalloc();\n      uVar18 = *(uint *)(puVar2 + -0x6990);\n      if (uVar18 < uVar4) {\n        iVar9 = (uVar18 + 1) * 4;\n        iVar13 = *(int *)(puVar2 + -0x5af0) + uVar18 * 0xc;\n        do {\n          *(int *)(iVar13 + 8) = iVar6;\n          iVar6 = iVar6 + iVar9;\n          iVar9 = iVar9 + 4;\n          iVar13 = iVar13 + 0xc;\n        } while ((uVar4 + 1) * 4 != iVar9);\n      }\n      uVar18 = *(uint *)(puVar2 + -0x59a8);\n      *(uint *)(puVar2 + -0x6990) = uVar4;\n      goto LAB_00019798;\n    }" { (expression_statement "iVar6 = xmalloc();" (assignment_expression "iVar6 = xmalloc()" identifier = (call_expression "xmalloc()" identifier (argument_list "()" ( )))) ;) (expression_statement "uVar18 = *(uint *)(puVar2 + -0x6990);" (assignment_expression "uVar18 = *(uint *)(puVar2 + -0x6990)" identifier = (pointer_expression "*(uint *)(puVar2 + -0x6990)" * (cast_expression "(uint *)(puVar2 + -0x6990)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + -0x6990)" ( (binary_expression "puVar2 + -0x6990" identifier + number_literal) ))))) ;) (if_statement "if (uVar18 < uVar4) {\n        iVar9 = (uVar18 + 1) * 4;\n        iVar13 = *(int *)(puVar2 + -0x5af0) + uVar18 * 0xc;\n        do {\n          *(int *)(iVar13 + 8) = iVar6;\n          iVar6 = iVar6 + iVar9;\n          iVar9 = iVar9 + 4;\n          iVar13 = iVar13 + 0xc;\n        } while ((uVar4 + 1) * 4 != iVar9);\n      }" if (parenthesized_expression "(uVar18 < uVar4)" ( (binary_expression "uVar18 < uVar4" identifier < identifier) )) (compound_statement "{\n        iVar9 = (uVar18 + 1) * 4;\n        iVar13 = *(int *)(puVar2 + -0x5af0) + uVar18 * 0xc;\n        do {\n          *(int *)(iVar13 + 8) = iVar6;\n          iVar6 = iVar6 + iVar9;\n          iVar9 = iVar9 + 4;\n          iVar13 = iVar13 + 0xc;\n        } while ((uVar4 + 1) * 4 != iVar9);\n      }" { (expression_statement "iVar9 = (uVar18 + 1) * 4;" (assignment_expression "iVar9 = (uVar18 + 1) * 4" identifier = (binary_expression "(uVar18 + 1) * 4" (parenthesized_expression "(uVar18 + 1)" ( (binary_expression "uVar18 + 1" identifier + number_literal) )) * number_literal)) ;) (expression_statement "iVar13 = *(int *)(puVar2 + -0x5af0) + uVar18 * 0xc;" (assignment_expression "iVar13 = *(int *)(puVar2 + -0x5af0) + uVar18 * 0xc" identifier = (binary_expression "*(int *)(puVar2 + -0x5af0) + uVar18 * 0xc" (pointer_expression "*(int *)(puVar2 + -0x5af0)" * (cast_expression "(int *)(puVar2 + -0x5af0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + -0x5af0)" ( (binary_expression "puVar2 + -0x5af0" identifier + number_literal) )))) + (binary_expression "uVar18 * 0xc" identifier * number_literal))) ;) (do_statement "do {\n          *(int *)(iVar13 + 8) = iVar6;\n          iVar6 = iVar6 + iVar9;\n          iVar9 = iVar9 + 4;\n          iVar13 = iVar13 + 0xc;\n        } while ((uVar4 + 1) * 4 != iVar9);" do (compound_statement "{\n          *(int *)(iVar13 + 8) = iVar6;\n          iVar6 = iVar6 + iVar9;\n          iVar9 = iVar9 + 4;\n          iVar13 = iVar13 + 0xc;\n        }" { (expression_statement "*(int *)(iVar13 + 8) = iVar6;" (assignment_expression "*(int *)(iVar13 + 8) = iVar6" (pointer_expression "*(int *)(iVar13 + 8)" * (cast_expression "(int *)(iVar13 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar13 + 8)" ( (binary_expression "iVar13 + 8" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar6 = iVar6 + iVar9;" (assignment_expression "iVar6 = iVar6 + iVar9" identifier = (binary_expression "iVar6 + iVar9" identifier + identifier)) ;) (expression_statement "iVar9 = iVar9 + 4;" (assignment_expression "iVar9 = iVar9 + 4" identifier = (binary_expression "iVar9 + 4" identifier + number_literal)) ;) (expression_statement "iVar13 = iVar13 + 0xc;" (assignment_expression "iVar13 = iVar13 + 0xc" identifier = (binary_expression "iVar13 + 0xc" identifier + number_literal)) ;) }) while (parenthesized_expression "((uVar4 + 1) * 4 != iVar9)" ( (binary_expression "(uVar4 + 1) * 4 != iVar9" (binary_expression "(uVar4 + 1) * 4" (parenthesized_expression "(uVar4 + 1)" ( (binary_expression "uVar4 + 1" identifier + number_literal) )) * number_literal) != identifier) )) ;) })) (expression_statement "uVar18 = *(uint *)(puVar2 + -0x59a8);" (assignment_expression "uVar18 = *(uint *)(puVar2 + -0x59a8)" identifier = (pointer_expression "*(uint *)(puVar2 + -0x59a8)" * (cast_expression "(uint *)(puVar2 + -0x59a8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + -0x59a8)" ( (binary_expression "puVar2 + -0x59a8" identifier + number_literal) ))))) ;) (expression_statement "*(uint *)(puVar2 + -0x6990) = uVar4;" (assignment_expression "*(uint *)(puVar2 + -0x6990) = uVar4" (pointer_expression "*(uint *)(puVar2 + -0x6990)" * (cast_expression "(uint *)(puVar2 + -0x6990)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + -0x6990)" ( (binary_expression "puVar2 + -0x6990" identifier + number_literal) )))) = identifier) ;) (goto_statement "goto LAB_00019798;" goto statement_identifier ;) })) })) (labeled_statement "LAB_000199b4:\n                    /* WARNING: Subroutine does not return */\n  xalloc_die();" statement_identifier : comment (expression_statement "xalloc_die();" (call_expression "xalloc_die()" identifier (argument_list "()" ( ))) ;)) })))
(translation_unit "size_t calculate_columns(_Bool by_columns)\n\n{\n  char cVar1;\n  uint uVar2;\n  void *pvVar3;\n  undefined4 *puVar4;\n  uint uVar5;\n  undefined4 *puVar6;\n  char *pcVar7;\n  undefined3 in_register_00000010;\n  uint uVar8;\n  size_t sVar9;\n  uint *puVar10;\n  undefined1 *puVar11;\n  uint uVar12;\n  size_t sVar13;\n  uint uVar14;\n  int iVar15;\n  int iVar16;\n  int iVar17;\n  int iVar18;\n  int iVar19;\n  size_t sVar20;\n  int in_t9;\n  uint uVar21;\n  \n  iVar16 = *(int *)(in_t9 + 0x2fbd4);\n  iVar15 = *(int *)(in_t9 + 0x2fbd4);\n  uVar14 = *(uint *)(iVar16 + -0x59a8);\n  uVar2 = *(uint *)(iVar15 + -0x5af4);\n  iVar17 = *(int *)(in_t9 + 0x2fbd4);\n  sVar20 = uVar2;\n  if (uVar14 <= uVar2) {\n    sVar20 = uVar14;\n  }\n  if (sVar20 <= *(uint *)(iVar17 + -0x6990)) {\nLAB_00019798:\n    if (sVar20 != 0) {\n      iVar15 = 0;\n      iVar17 = 3;\n      puVar11 = *(undefined1 **)(*(int *)(in_t9 + 0x2fbd4) + -0x5af0);\n      do {\n        puVar4 = *(undefined4 **)(puVar11 + 8);\n        iVar15 = iVar15 + 4;\n        *puVar11 = 1;\n        *(int *)(puVar11 + 4) = iVar17;\n        puVar6 = (undefined4 *)((int)puVar4 + iVar15);\n        do {\n          *puVar4 = 3;\n          puVar4 = puVar4 + 1;\n        } while (puVar6 != puVar4);\n        puVar11 = puVar11 + 0xc;\n        iVar17 = iVar17 + 3;\n      } while (iVar15 != sVar20 << 2);\n    }\n    if (uVar14 != 0) {\n      uVar2 = 0;\n      iVar17 = *(int *)(in_t9 + 0x2fbd4);\n      iVar19 = *(int *)(in_t9 + 0x2fbd4);\n      iVar18 = *(int *)(in_t9 + 0x2fbd4);\n      iVar15 = *(int *)(iVar17 + -0x59b0);\n      do {\n        sVar9 = length_of_file_name_and_frills(*(fileinfo **)(iVar15 + uVar2 * 4));\n        uVar14 = *(uint *)(iVar16 + -0x59a8);\n        if (sVar20 != 0) {\n          uVar8 = *(uint *)(iVar19 + -0x5a58);\n          pcVar7 = *(char **)(iVar18 + -0x5af0);\n          uVar5 = 0;\n          do {\n            uVar12 = uVar5 + 1;\n            if (*pcVar7 != '\0') {\n              sVar13 = sVar9;\n              if (CONCAT31(in_register_00000010,by_columns) == 0) {\n                if (uVar12 == 0) {\n                  trap(7);\n                }\n                uVar21 = uVar2 % uVar12;\n                if (uVar21 != uVar5) {\nLAB_00019864:\n                  sVar13 = sVar9 + 2;\n                  goto LAB_00019868;\n                }\n                iVar15 = *(int *)(pcVar7 + 8);\n              }\n              else {\n                if (uVar12 == 0) {\n                  trap(7);\n                }\n                uVar21 = ((uVar14 + uVar12) - 1) / uVar12;\n                if (uVar21 == 0) {\n                  trap(7);\n                }\n                uVar21 = uVar2 / uVar21;\n                if (uVar21 != uVar5) goto LAB_00019864;\nLAB_00019868:\n                iVar15 = *(int *)(pcVar7 + 8);\n              }\n              puVar10 = (uint *)(iVar15 + uVar21 * 4);\n              uVar5 = *puVar10;\n              if (uVar5 < sVar13) {\n                *(uint *)(pcVar7 + 4) = (*(int *)(pcVar7 + 4) - uVar5) + sVar13;\n                *puVar10 = sVar13;\n                *pcVar7 = *(uint *)(pcVar7 + 4) < uVar8;\n              }\n            }\n            pcVar7 = pcVar7 + 0xc;\n            uVar5 = uVar12;\n          } while (sVar20 != uVar12);\n        }\n        uVar2 = uVar2 + 1;\n        iVar15 = *(int *)(iVar17 + -0x59b0);\n      } while (uVar2 < uVar14);\n    }\n    if (1 < sVar20) {\n      iVar15 = *(int *)(*(int *)(in_t9 + 0x2fbd4) + -0x5af0) + sVar20 * 0xc;\n      cVar1 = *(char *)(iVar15 + -0xc);\n      while (cVar1 == '\0') {\n        sVar20 = sVar20 - 1;\n        if (sVar20 == 1) {\n          return 1;\n        }\n        cVar1 = *(char *)(iVar15 + -0x18);\n        iVar15 = iVar15 + -0xc;\n      }\n    }\n    return sVar20;\n  }\n  iVar18 = *(int *)(in_t9 + 0x2fbd4);\n  if (sVar20 < uVar2 >> 1) {\n    uVar2 = sVar20 * 2;\n    if (((int)(sVar20 * 0x18) < 0) ||\n       (sVar20 * 3 >> 0x1d != 0 || (uint)(sVar20 * 3 < uVar2) != (int)sVar20 >> 0x1f))\n    goto LAB_000199b4;\n    pvVar3 = xrealloc(*(void **)(iVar18 + -0x5af0),sVar20 * 0x18);\n    *(void **)(iVar18 + -0x5af0) = pvVar3;\n  }\n  else {\n    if (((int)(uVar2 * 0xc) < 0) ||\n       (uVar2 * 3 >> 0x1e != 0 || (uint)(uVar2 * 3 < uVar2 * 2) != (int)uVar2 >> 0x1f))\n    goto LAB_000199b4;\n    pvVar3 = xrealloc(*(void **)(iVar18 + -0x5af0),uVar2 * 0xc);\n    uVar2 = *(uint *)(iVar15 + -0x5af4);\n    *(void **)(iVar18 + -0x5af0) = pvVar3;\n  }\n  uVar14 = uVar2 - *(int *)(iVar17 + -0x6990);\n  uVar8 = *(int *)(iVar17 + -0x6990) + 1 + uVar2;\n  uVar5 = uVar14 * uVar8;\n  if (uVar2 <= uVar8) {\n    if (uVar14 == 0) {\n      trap(7);\n    }\n    if (((uVar8 == uVar5 / uVar14) && (sVar9 = (uVar5 >> 1) << 2, -1 < (int)sVar9)) &&\n       (-1 < (int)uVar5)) {\n      pvVar3 = xmalloc(sVar9);\n      uVar14 = *(uint *)(iVar17 + -0x6990);\n      if (uVar14 < uVar2) {\n        iVar15 = (uVar14 + 1) * 4;\n        iVar18 = *(int *)(iVar18 + -0x5af0) + uVar14 * 0xc;\n        do {\n          *(void **)(iVar18 + 8) = pvVar3;\n          pvVar3 = (void *)((int)pvVar3 + iVar15);\n          iVar15 = iVar15 + 4;\n          iVar18 = iVar18 + 0xc;\n        } while ((uVar2 + 1) * 4 != iVar15);\n      }\n      uVar14 = *(uint *)(iVar16 + -0x59a8);\n      *(uint *)(iVar17 + -0x6990) = uVar2;\n      goto LAB_00019798;\n    }\n  }\nLAB_000199b4:\n                    /* WARNING: Subroutine does not return */\n  xalloc_die();\n}\n\n" (function_definition "size_t calculate_columns(_Bool by_columns)\n\n{\n  char cVar1;\n  uint uVar2;\n  void *pvVar3;\n  undefined4 *puVar4;\n  uint uVar5;\n  undefined4 *puVar6;\n  char *pcVar7;\n  undefined3 in_register_00000010;\n  uint uVar8;\n  size_t sVar9;\n  uint *puVar10;\n  undefined1 *puVar11;\n  uint uVar12;\n  size_t sVar13;\n  uint uVar14;\n  int iVar15;\n  int iVar16;\n  int iVar17;\n  int iVar18;\n  int iVar19;\n  size_t sVar20;\n  int in_t9;\n  uint uVar21;\n  \n  iVar16 = *(int *)(in_t9 + 0x2fbd4);\n  iVar15 = *(int *)(in_t9 + 0x2fbd4);\n  uVar14 = *(uint *)(iVar16 + -0x59a8);\n  uVar2 = *(uint *)(iVar15 + -0x5af4);\n  iVar17 = *(int *)(in_t9 + 0x2fbd4);\n  sVar20 = uVar2;\n  if (uVar14 <= uVar2) {\n    sVar20 = uVar14;\n  }\n  if (sVar20 <= *(uint *)(iVar17 + -0x6990)) {\nLAB_00019798:\n    if (sVar20 != 0) {\n      iVar15 = 0;\n      iVar17 = 3;\n      puVar11 = *(undefined1 **)(*(int *)(in_t9 + 0x2fbd4) + -0x5af0);\n      do {\n        puVar4 = *(undefined4 **)(puVar11 + 8);\n        iVar15 = iVar15 + 4;\n        *puVar11 = 1;\n        *(int *)(puVar11 + 4) = iVar17;\n        puVar6 = (undefined4 *)((int)puVar4 + iVar15);\n        do {\n          *puVar4 = 3;\n          puVar4 = puVar4 + 1;\n        } while (puVar6 != puVar4);\n        puVar11 = puVar11 + 0xc;\n        iVar17 = iVar17 + 3;\n      } while (iVar15 != sVar20 << 2);\n    }\n    if (uVar14 != 0) {\n      uVar2 = 0;\n      iVar17 = *(int *)(in_t9 + 0x2fbd4);\n      iVar19 = *(int *)(in_t9 + 0x2fbd4);\n      iVar18 = *(int *)(in_t9 + 0x2fbd4);\n      iVar15 = *(int *)(iVar17 + -0x59b0);\n      do {\n        sVar9 = length_of_file_name_and_frills(*(fileinfo **)(iVar15 + uVar2 * 4));\n        uVar14 = *(uint *)(iVar16 + -0x59a8);\n        if (sVar20 != 0) {\n          uVar8 = *(uint *)(iVar19 + -0x5a58);\n          pcVar7 = *(char **)(iVar18 + -0x5af0);\n          uVar5 = 0;\n          do {\n            uVar12 = uVar5 + 1;\n            if (*pcVar7 != '\0') {\n              sVar13 = sVar9;\n              if (CONCAT31(in_register_00000010,by_columns) == 0) {\n                if (uVar12 == 0) {\n                  trap(7);\n                }\n                uVar21 = uVar2 % uVar12;\n                if (uVar21 != uVar5) {\nLAB_00019864:\n                  sVar13 = sVar9 + 2;\n                  goto LAB_00019868;\n                }\n                iVar15 = *(int *)(pcVar7 + 8);\n              }\n              else {\n                if (uVar12 == 0) {\n                  trap(7);\n                }\n                uVar21 = ((uVar14 + uVar12) - 1) / uVar12;\n                if (uVar21 == 0) {\n                  trap(7);\n                }\n                uVar21 = uVar2 / uVar21;\n                if (uVar21 != uVar5) goto LAB_00019864;\nLAB_00019868:\n                iVar15 = *(int *)(pcVar7 + 8);\n              }\n              puVar10 = (uint *)(iVar15 + uVar21 * 4);\n              uVar5 = *puVar10;\n              if (uVar5 < sVar13) {\n                *(uint *)(pcVar7 + 4) = (*(int *)(pcVar7 + 4) - uVar5) + sVar13;\n                *puVar10 = sVar13;\n                *pcVar7 = *(uint *)(pcVar7 + 4) < uVar8;\n              }\n            }\n            pcVar7 = pcVar7 + 0xc;\n            uVar5 = uVar12;\n          } while (sVar20 != uVar12);\n        }\n        uVar2 = uVar2 + 1;\n        iVar15 = *(int *)(iVar17 + -0x59b0);\n      } while (uVar2 < uVar14);\n    }\n    if (1 < sVar20) {\n      iVar15 = *(int *)(*(int *)(in_t9 + 0x2fbd4) + -0x5af0) + sVar20 * 0xc;\n      cVar1 = *(char *)(iVar15 + -0xc);\n      while (cVar1 == '\0') {\n        sVar20 = sVar20 - 1;\n        if (sVar20 == 1) {\n          return 1;\n        }\n        cVar1 = *(char *)(iVar15 + -0x18);\n        iVar15 = iVar15 + -0xc;\n      }\n    }\n    return sVar20;\n  }\n  iVar18 = *(int *)(in_t9 + 0x2fbd4);\n  if (sVar20 < uVar2 >> 1) {\n    uVar2 = sVar20 * 2;\n    if (((int)(sVar20 * 0x18) < 0) ||\n       (sVar20 * 3 >> 0x1d != 0 || (uint)(sVar20 * 3 < uVar2) != (int)sVar20 >> 0x1f))\n    goto LAB_000199b4;\n    pvVar3 = xrealloc(*(void **)(iVar18 + -0x5af0),sVar20 * 0x18);\n    *(void **)(iVar18 + -0x5af0) = pvVar3;\n  }\n  else {\n    if (((int)(uVar2 * 0xc) < 0) ||\n       (uVar2 * 3 >> 0x1e != 0 || (uint)(uVar2 * 3 < uVar2 * 2) != (int)uVar2 >> 0x1f))\n    goto LAB_000199b4;\n    pvVar3 = xrealloc(*(void **)(iVar18 + -0x5af0),uVar2 * 0xc);\n    uVar2 = *(uint *)(iVar15 + -0x5af4);\n    *(void **)(iVar18 + -0x5af0) = pvVar3;\n  }\n  uVar14 = uVar2 - *(int *)(iVar17 + -0x6990);\n  uVar8 = *(int *)(iVar17 + -0x6990) + 1 + uVar2;\n  uVar5 = uVar14 * uVar8;\n  if (uVar2 <= uVar8) {\n    if (uVar14 == 0) {\n      trap(7);\n    }\n    if (((uVar8 == uVar5 / uVar14) && (sVar9 = (uVar5 >> 1) << 2, -1 < (int)sVar9)) &&\n       (-1 < (int)uVar5)) {\n      pvVar3 = xmalloc(sVar9);\n      uVar14 = *(uint *)(iVar17 + -0x6990);\n      if (uVar14 < uVar2) {\n        iVar15 = (uVar14 + 1) * 4;\n        iVar18 = *(int *)(iVar18 + -0x5af0) + uVar14 * 0xc;\n        do {\n          *(void **)(iVar18 + 8) = pvVar3;\n          pvVar3 = (void *)((int)pvVar3 + iVar15);\n          iVar15 = iVar15 + 4;\n          iVar18 = iVar18 + 0xc;\n        } while ((uVar2 + 1) * 4 != iVar15);\n      }\n      uVar14 = *(uint *)(iVar16 + -0x59a8);\n      *(uint *)(iVar17 + -0x6990) = uVar2;\n      goto LAB_00019798;\n    }\n  }\nLAB_000199b4:\n                    /* WARNING: Subroutine does not return */\n  xalloc_die();\n}" primitive_type (function_declarator "calculate_columns(_Bool by_columns)" identifier (parameter_list "(_Bool by_columns)" ( (parameter_declaration "_Bool by_columns" type_identifier identifier) ))) (compound_statement "{\n  char cVar1;\n  uint uVar2;\n  void *pvVar3;\n  undefined4 *puVar4;\n  uint uVar5;\n  undefined4 *puVar6;\n  char *pcVar7;\n  undefined3 in_register_00000010;\n  uint uVar8;\n  size_t sVar9;\n  uint *puVar10;\n  undefined1 *puVar11;\n  uint uVar12;\n  size_t sVar13;\n  uint uVar14;\n  int iVar15;\n  int iVar16;\n  int iVar17;\n  int iVar18;\n  int iVar19;\n  size_t sVar20;\n  int in_t9;\n  uint uVar21;\n  \n  iVar16 = *(int *)(in_t9 + 0x2fbd4);\n  iVar15 = *(int *)(in_t9 + 0x2fbd4);\n  uVar14 = *(uint *)(iVar16 + -0x59a8);\n  uVar2 = *(uint *)(iVar15 + -0x5af4);\n  iVar17 = *(int *)(in_t9 + 0x2fbd4);\n  sVar20 = uVar2;\n  if (uVar14 <= uVar2) {\n    sVar20 = uVar14;\n  }\n  if (sVar20 <= *(uint *)(iVar17 + -0x6990)) {\nLAB_00019798:\n    if (sVar20 != 0) {\n      iVar15 = 0;\n      iVar17 = 3;\n      puVar11 = *(undefined1 **)(*(int *)(in_t9 + 0x2fbd4) + -0x5af0);\n      do {\n        puVar4 = *(undefined4 **)(puVar11 + 8);\n        iVar15 = iVar15 + 4;\n        *puVar11 = 1;\n        *(int *)(puVar11 + 4) = iVar17;\n        puVar6 = (undefined4 *)((int)puVar4 + iVar15);\n        do {\n          *puVar4 = 3;\n          puVar4 = puVar4 + 1;\n        } while (puVar6 != puVar4);\n        puVar11 = puVar11 + 0xc;\n        iVar17 = iVar17 + 3;\n      } while (iVar15 != sVar20 << 2);\n    }\n    if (uVar14 != 0) {\n      uVar2 = 0;\n      iVar17 = *(int *)(in_t9 + 0x2fbd4);\n      iVar19 = *(int *)(in_t9 + 0x2fbd4);\n      iVar18 = *(int *)(in_t9 + 0x2fbd4);\n      iVar15 = *(int *)(iVar17 + -0x59b0);\n      do {\n        sVar9 = length_of_file_name_and_frills(*(fileinfo **)(iVar15 + uVar2 * 4));\n        uVar14 = *(uint *)(iVar16 + -0x59a8);\n        if (sVar20 != 0) {\n          uVar8 = *(uint *)(iVar19 + -0x5a58);\n          pcVar7 = *(char **)(iVar18 + -0x5af0);\n          uVar5 = 0;\n          do {\n            uVar12 = uVar5 + 1;\n            if (*pcVar7 != '\0') {\n              sVar13 = sVar9;\n              if (CONCAT31(in_register_00000010,by_columns) == 0) {\n                if (uVar12 == 0) {\n                  trap(7);\n                }\n                uVar21 = uVar2 % uVar12;\n                if (uVar21 != uVar5) {\nLAB_00019864:\n                  sVar13 = sVar9 + 2;\n                  goto LAB_00019868;\n                }\n                iVar15 = *(int *)(pcVar7 + 8);\n              }\n              else {\n                if (uVar12 == 0) {\n                  trap(7);\n                }\n                uVar21 = ((uVar14 + uVar12) - 1) / uVar12;\n                if (uVar21 == 0) {\n                  trap(7);\n                }\n                uVar21 = uVar2 / uVar21;\n                if (uVar21 != uVar5) goto LAB_00019864;\nLAB_00019868:\n                iVar15 = *(int *)(pcVar7 + 8);\n              }\n              puVar10 = (uint *)(iVar15 + uVar21 * 4);\n              uVar5 = *puVar10;\n              if (uVar5 < sVar13) {\n                *(uint *)(pcVar7 + 4) = (*(int *)(pcVar7 + 4) - uVar5) + sVar13;\n                *puVar10 = sVar13;\n                *pcVar7 = *(uint *)(pcVar7 + 4) < uVar8;\n              }\n            }\n            pcVar7 = pcVar7 + 0xc;\n            uVar5 = uVar12;\n          } while (sVar20 != uVar12);\n        }\n        uVar2 = uVar2 + 1;\n        iVar15 = *(int *)(iVar17 + -0x59b0);\n      } while (uVar2 < uVar14);\n    }\n    if (1 < sVar20) {\n      iVar15 = *(int *)(*(int *)(in_t9 + 0x2fbd4) + -0x5af0) + sVar20 * 0xc;\n      cVar1 = *(char *)(iVar15 + -0xc);\n      while (cVar1 == '\0') {\n        sVar20 = sVar20 - 1;\n        if (sVar20 == 1) {\n          return 1;\n        }\n        cVar1 = *(char *)(iVar15 + -0x18);\n        iVar15 = iVar15 + -0xc;\n      }\n    }\n    return sVar20;\n  }\n  iVar18 = *(int *)(in_t9 + 0x2fbd4);\n  if (sVar20 < uVar2 >> 1) {\n    uVar2 = sVar20 * 2;\n    if (((int)(sVar20 * 0x18) < 0) ||\n       (sVar20 * 3 >> 0x1d != 0 || (uint)(sVar20 * 3 < uVar2) != (int)sVar20 >> 0x1f))\n    goto LAB_000199b4;\n    pvVar3 = xrealloc(*(void **)(iVar18 + -0x5af0),sVar20 * 0x18);\n    *(void **)(iVar18 + -0x5af0) = pvVar3;\n  }\n  else {\n    if (((int)(uVar2 * 0xc) < 0) ||\n       (uVar2 * 3 >> 0x1e != 0 || (uint)(uVar2 * 3 < uVar2 * 2) != (int)uVar2 >> 0x1f))\n    goto LAB_000199b4;\n    pvVar3 = xrealloc(*(void **)(iVar18 + -0x5af0),uVar2 * 0xc);\n    uVar2 = *(uint *)(iVar15 + -0x5af4);\n    *(void **)(iVar18 + -0x5af0) = pvVar3;\n  }\n  uVar14 = uVar2 - *(int *)(iVar17 + -0x6990);\n  uVar8 = *(int *)(iVar17 + -0x6990) + 1 + uVar2;\n  uVar5 = uVar14 * uVar8;\n  if (uVar2 <= uVar8) {\n    if (uVar14 == 0) {\n      trap(7);\n    }\n    if (((uVar8 == uVar5 / uVar14) && (sVar9 = (uVar5 >> 1) << 2, -1 < (int)sVar9)) &&\n       (-1 < (int)uVar5)) {\n      pvVar3 = xmalloc(sVar9);\n      uVar14 = *(uint *)(iVar17 + -0x6990);\n      if (uVar14 < uVar2) {\n        iVar15 = (uVar14 + 1) * 4;\n        iVar18 = *(int *)(iVar18 + -0x5af0) + uVar14 * 0xc;\n        do {\n          *(void **)(iVar18 + 8) = pvVar3;\n          pvVar3 = (void *)((int)pvVar3 + iVar15);\n          iVar15 = iVar15 + 4;\n          iVar18 = iVar18 + 0xc;\n        } while ((uVar2 + 1) * 4 != iVar15);\n      }\n      uVar14 = *(uint *)(iVar16 + -0x59a8);\n      *(uint *)(iVar17 + -0x6990) = uVar2;\n      goto LAB_00019798;\n    }\n  }\nLAB_000199b4:\n                    /* WARNING: Subroutine does not return */\n  xalloc_die();\n}" { (declaration "char cVar1;" primitive_type identifier ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "void *pvVar3;" primitive_type (pointer_declarator "*pvVar3" * identifier) ;) (declaration "undefined4 *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "undefined4 *puVar6;" type_identifier (pointer_declarator "*puVar6" * identifier) ;) (declaration "char *pcVar7;" primitive_type (pointer_declarator "*pcVar7" * identifier) ;) (declaration "undefined3 in_register_00000010;" type_identifier identifier ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "size_t sVar9;" primitive_type identifier ;) (declaration "uint *puVar10;" type_identifier (pointer_declarator "*puVar10" * identifier) ;) (declaration "undefined1 *puVar11;" type_identifier (pointer_declarator "*puVar11" * identifier) ;) (declaration "uint uVar12;" type_identifier identifier ;) (declaration "size_t sVar13;" primitive_type identifier ;) (declaration "uint uVar14;" type_identifier identifier ;) (declaration "int iVar15;" primitive_type identifier ;) (declaration "int iVar16;" primitive_type identifier ;) (declaration "int iVar17;" primitive_type identifier ;) (declaration "int iVar18;" primitive_type identifier ;) (declaration "int iVar19;" primitive_type identifier ;) (declaration "size_t sVar20;" primitive_type identifier ;) (declaration "int in_t9;" primitive_type identifier ;) (declaration "uint uVar21;" type_identifier identifier ;) (expression_statement "iVar16 = *(int *)(in_t9 + 0x2fbd4);" (assignment_expression "iVar16 = *(int *)(in_t9 + 0x2fbd4)" identifier = (pointer_expression "*(int *)(in_t9 + 0x2fbd4)" * (cast_expression "(int *)(in_t9 + 0x2fbd4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_t9 + 0x2fbd4)" ( (binary_expression "in_t9 + 0x2fbd4" identifier + number_literal) ))))) ;) (expression_statement "iVar15 = *(int *)(in_t9 + 0x2fbd4);" (assignment_expression "iVar15 = *(int *)(in_t9 + 0x2fbd4)" identifier = (pointer_expression "*(int *)(in_t9 + 0x2fbd4)" * (cast_expression "(int *)(in_t9 + 0x2fbd4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_t9 + 0x2fbd4)" ( (binary_expression "in_t9 + 0x2fbd4" identifier + number_literal) ))))) ;) (expression_statement "uVar14 = *(uint *)(iVar16 + -0x59a8);" (assignment_expression "uVar14 = *(uint *)(iVar16 + -0x59a8)" identifier = (pointer_expression "*(uint *)(iVar16 + -0x59a8)" * (cast_expression "(uint *)(iVar16 + -0x59a8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar16 + -0x59a8)" ( (binary_expression "iVar16 + -0x59a8" identifier + number_literal) ))))) ;) (expression_statement "uVar2 = *(uint *)(iVar15 + -0x5af4);" (assignment_expression "uVar2 = *(uint *)(iVar15 + -0x5af4)" identifier = (pointer_expression "*(uint *)(iVar15 + -0x5af4)" * (cast_expression "(uint *)(iVar15 + -0x5af4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar15 + -0x5af4)" ( (binary_expression "iVar15 + -0x5af4" identifier + number_literal) ))))) ;) (expression_statement "iVar17 = *(int *)(in_t9 + 0x2fbd4);" (assignment_expression "iVar17 = *(int *)(in_t9 + 0x2fbd4)" identifier = (pointer_expression "*(int *)(in_t9 + 0x2fbd4)" * (cast_expression "(int *)(in_t9 + 0x2fbd4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_t9 + 0x2fbd4)" ( (binary_expression "in_t9 + 0x2fbd4" identifier + number_literal) ))))) ;) (expression_statement "sVar20 = uVar2;" (assignment_expression "sVar20 = uVar2" identifier = identifier) ;) (if_statement "if (uVar14 <= uVar2) {\n    sVar20 = uVar14;\n  }" if (parenthesized_expression "(uVar14 <= uVar2)" ( (binary_expression "uVar14 <= uVar2" identifier <= identifier) )) (compound_statement "{\n    sVar20 = uVar14;\n  }" { (expression_statement "sVar20 = uVar14;" (assignment_expression "sVar20 = uVar14" identifier = identifier) ;) })) (if_statement "if (sVar20 <= *(uint *)(iVar17 + -0x6990)) {\nLAB_00019798:\n    if (sVar20 != 0) {\n      iVar15 = 0;\n      iVar17 = 3;\n      puVar11 = *(undefined1 **)(*(int *)(in_t9 + 0x2fbd4) + -0x5af0);\n      do {\n        puVar4 = *(undefined4 **)(puVar11 + 8);\n        iVar15 = iVar15 + 4;\n        *puVar11 = 1;\n        *(int *)(puVar11 + 4) = iVar17;\n        puVar6 = (undefined4 *)((int)puVar4 + iVar15);\n        do {\n          *puVar4 = 3;\n          puVar4 = puVar4 + 1;\n        } while (puVar6 != puVar4);\n        puVar11 = puVar11 + 0xc;\n        iVar17 = iVar17 + 3;\n      } while (iVar15 != sVar20 << 2);\n    }\n    if (uVar14 != 0) {\n      uVar2 = 0;\n      iVar17 = *(int *)(in_t9 + 0x2fbd4);\n      iVar19 = *(int *)(in_t9 + 0x2fbd4);\n      iVar18 = *(int *)(in_t9 + 0x2fbd4);\n      iVar15 = *(int *)(iVar17 + -0x59b0);\n      do {\n        sVar9 = length_of_file_name_and_frills(*(fileinfo **)(iVar15 + uVar2 * 4));\n        uVar14 = *(uint *)(iVar16 + -0x59a8);\n        if (sVar20 != 0) {\n          uVar8 = *(uint *)(iVar19 + -0x5a58);\n          pcVar7 = *(char **)(iVar18 + -0x5af0);\n          uVar5 = 0;\n          do {\n            uVar12 = uVar5 + 1;\n            if (*pcVar7 != '\0') {\n              sVar13 = sVar9;\n              if (CONCAT31(in_register_00000010,by_columns) == 0) {\n                if (uVar12 == 0) {\n                  trap(7);\n                }\n                uVar21 = uVar2 % uVar12;\n                if (uVar21 != uVar5) {\nLAB_00019864:\n                  sVar13 = sVar9 + 2;\n                  goto LAB_00019868;\n                }\n                iVar15 = *(int *)(pcVar7 + 8);\n              }\n              else {\n                if (uVar12 == 0) {\n                  trap(7);\n                }\n                uVar21 = ((uVar14 + uVar12) - 1) / uVar12;\n                if (uVar21 == 0) {\n                  trap(7);\n                }\n                uVar21 = uVar2 / uVar21;\n                if (uVar21 != uVar5) goto LAB_00019864;\nLAB_00019868:\n                iVar15 = *(int *)(pcVar7 + 8);\n              }\n              puVar10 = (uint *)(iVar15 + uVar21 * 4);\n              uVar5 = *puVar10;\n              if (uVar5 < sVar13) {\n                *(uint *)(pcVar7 + 4) = (*(int *)(pcVar7 + 4) - uVar5) + sVar13;\n                *puVar10 = sVar13;\n                *pcVar7 = *(uint *)(pcVar7 + 4) < uVar8;\n              }\n            }\n            pcVar7 = pcVar7 + 0xc;\n            uVar5 = uVar12;\n          } while (sVar20 != uVar12);\n        }\n        uVar2 = uVar2 + 1;\n        iVar15 = *(int *)(iVar17 + -0x59b0);\n      } while (uVar2 < uVar14);\n    }\n    if (1 < sVar20) {\n      iVar15 = *(int *)(*(int *)(in_t9 + 0x2fbd4) + -0x5af0) + sVar20 * 0xc;\n      cVar1 = *(char *)(iVar15 + -0xc);\n      while (cVar1 == '\0') {\n        sVar20 = sVar20 - 1;\n        if (sVar20 == 1) {\n          return 1;\n        }\n        cVar1 = *(char *)(iVar15 + -0x18);\n        iVar15 = iVar15 + -0xc;\n      }\n    }\n    return sVar20;\n  }" if (parenthesized_expression "(sVar20 <= *(uint *)(iVar17 + -0x6990))" ( (binary_expression "sVar20 <= *(uint *)(iVar17 + -0x6990)" identifier <= (pointer_expression "*(uint *)(iVar17 + -0x6990)" * (cast_expression "(uint *)(iVar17 + -0x6990)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar17 + -0x6990)" ( (binary_expression "iVar17 + -0x6990" identifier + number_literal) ))))) )) (compound_statement "{\nLAB_00019798:\n    if (sVar20 != 0) {\n      iVar15 = 0;\n      iVar17 = 3;\n      puVar11 = *(undefined1 **)(*(int *)(in_t9 + 0x2fbd4) + -0x5af0);\n      do {\n        puVar4 = *(undefined4 **)(puVar11 + 8);\n        iVar15 = iVar15 + 4;\n        *puVar11 = 1;\n        *(int *)(puVar11 + 4) = iVar17;\n        puVar6 = (undefined4 *)((int)puVar4 + iVar15);\n        do {\n          *puVar4 = 3;\n          puVar4 = puVar4 + 1;\n        } while (puVar6 != puVar4);\n        puVar11 = puVar11 + 0xc;\n        iVar17 = iVar17 + 3;\n      } while (iVar15 != sVar20 << 2);\n    }\n    if (uVar14 != 0) {\n      uVar2 = 0;\n      iVar17 = *(int *)(in_t9 + 0x2fbd4);\n      iVar19 = *(int *)(in_t9 + 0x2fbd4);\n      iVar18 = *(int *)(in_t9 + 0x2fbd4);\n      iVar15 = *(int *)(iVar17 + -0x59b0);\n      do {\n        sVar9 = length_of_file_name_and_frills(*(fileinfo **)(iVar15 + uVar2 * 4));\n        uVar14 = *(uint *)(iVar16 + -0x59a8);\n        if (sVar20 != 0) {\n          uVar8 = *(uint *)(iVar19 + -0x5a58);\n          pcVar7 = *(char **)(iVar18 + -0x5af0);\n          uVar5 = 0;\n          do {\n            uVar12 = uVar5 + 1;\n            if (*pcVar7 != '\0') {\n              sVar13 = sVar9;\n              if (CONCAT31(in_register_00000010,by_columns) == 0) {\n                if (uVar12 == 0) {\n                  trap(7);\n                }\n                uVar21 = uVar2 % uVar12;\n                if (uVar21 != uVar5) {\nLAB_00019864:\n                  sVar13 = sVar9 + 2;\n                  goto LAB_00019868;\n                }\n                iVar15 = *(int *)(pcVar7 + 8);\n              }\n              else {\n                if (uVar12 == 0) {\n                  trap(7);\n                }\n                uVar21 = ((uVar14 + uVar12) - 1) / uVar12;\n                if (uVar21 == 0) {\n                  trap(7);\n                }\n                uVar21 = uVar2 / uVar21;\n                if (uVar21 != uVar5) goto LAB_00019864;\nLAB_00019868:\n                iVar15 = *(int *)(pcVar7 + 8);\n              }\n              puVar10 = (uint *)(iVar15 + uVar21 * 4);\n              uVar5 = *puVar10;\n              if (uVar5 < sVar13) {\n                *(uint *)(pcVar7 + 4) = (*(int *)(pcVar7 + 4) - uVar5) + sVar13;\n                *puVar10 = sVar13;\n                *pcVar7 = *(uint *)(pcVar7 + 4) < uVar8;\n              }\n            }\n            pcVar7 = pcVar7 + 0xc;\n            uVar5 = uVar12;\n          } while (sVar20 != uVar12);\n        }\n        uVar2 = uVar2 + 1;\n        iVar15 = *(int *)(iVar17 + -0x59b0);\n      } while (uVar2 < uVar14);\n    }\n    if (1 < sVar20) {\n      iVar15 = *(int *)(*(int *)(in_t9 + 0x2fbd4) + -0x5af0) + sVar20 * 0xc;\n      cVar1 = *(char *)(iVar15 + -0xc);\n      while (cVar1 == '\0') {\n        sVar20 = sVar20 - 1;\n        if (sVar20 == 1) {\n          return 1;\n        }\n        cVar1 = *(char *)(iVar15 + -0x18);\n        iVar15 = iVar15 + -0xc;\n      }\n    }\n    return sVar20;\n  }" { (labeled_statement "LAB_00019798:\n    if (sVar20 != 0) {\n      iVar15 = 0;\n      iVar17 = 3;\n      puVar11 = *(undefined1 **)(*(int *)(in_t9 + 0x2fbd4) + -0x5af0);\n      do {\n        puVar4 = *(undefined4 **)(puVar11 + 8);\n        iVar15 = iVar15 + 4;\n        *puVar11 = 1;\n        *(int *)(puVar11 + 4) = iVar17;\n        puVar6 = (undefined4 *)((int)puVar4 + iVar15);\n        do {\n          *puVar4 = 3;\n          puVar4 = puVar4 + 1;\n        } while (puVar6 != puVar4);\n        puVar11 = puVar11 + 0xc;\n        iVar17 = iVar17 + 3;\n      } while (iVar15 != sVar20 << 2);\n    }" statement_identifier : (if_statement "if (sVar20 != 0) {\n      iVar15 = 0;\n      iVar17 = 3;\n      puVar11 = *(undefined1 **)(*(int *)(in_t9 + 0x2fbd4) + -0x5af0);\n      do {\n        puVar4 = *(undefined4 **)(puVar11 + 8);\n        iVar15 = iVar15 + 4;\n        *puVar11 = 1;\n        *(int *)(puVar11 + 4) = iVar17;\n        puVar6 = (undefined4 *)((int)puVar4 + iVar15);\n        do {\n          *puVar4 = 3;\n          puVar4 = puVar4 + 1;\n        } while (puVar6 != puVar4);\n        puVar11 = puVar11 + 0xc;\n        iVar17 = iVar17 + 3;\n      } while (iVar15 != sVar20 << 2);\n    }" if (parenthesized_expression "(sVar20 != 0)" ( (binary_expression "sVar20 != 0" identifier != number_literal) )) (compound_statement "{\n      iVar15 = 0;\n      iVar17 = 3;\n      puVar11 = *(undefined1 **)(*(int *)(in_t9 + 0x2fbd4) + -0x5af0);\n      do {\n        puVar4 = *(undefined4 **)(puVar11 + 8);\n        iVar15 = iVar15 + 4;\n        *puVar11 = 1;\n        *(int *)(puVar11 + 4) = iVar17;\n        puVar6 = (undefined4 *)((int)puVar4 + iVar15);\n        do {\n          *puVar4 = 3;\n          puVar4 = puVar4 + 1;\n        } while (puVar6 != puVar4);\n        puVar11 = puVar11 + 0xc;\n        iVar17 = iVar17 + 3;\n      } while (iVar15 != sVar20 << 2);\n    }" { (expression_statement "iVar15 = 0;" (assignment_expression "iVar15 = 0" identifier = number_literal) ;) (expression_statement "iVar17 = 3;" (assignment_expression "iVar17 = 3" identifier = number_literal) ;) (expression_statement "puVar11 = *(undefined1 **)(*(int *)(in_t9 + 0x2fbd4) + -0x5af0);" (assignment_expression "puVar11 = *(undefined1 **)(*(int *)(in_t9 + 0x2fbd4) + -0x5af0)" identifier = (pointer_expression "*(undefined1 **)(*(int *)(in_t9 + 0x2fbd4) + -0x5af0)" * (cast_expression "(undefined1 **)(*(int *)(in_t9 + 0x2fbd4) + -0x5af0)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(in_t9 + 0x2fbd4) + -0x5af0)" ( (binary_expression "*(int *)(in_t9 + 0x2fbd4) + -0x5af0" (pointer_expression "*(int *)(in_t9 + 0x2fbd4)" * (cast_expression "(int *)(in_t9 + 0x2fbd4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_t9 + 0x2fbd4)" ( (binary_expression "in_t9 + 0x2fbd4" identifier + number_literal) )))) + number_literal) ))))) ;) (do_statement "do {\n        puVar4 = *(undefined4 **)(puVar11 + 8);\n        iVar15 = iVar15 + 4;\n        *puVar11 = 1;\n        *(int *)(puVar11 + 4) = iVar17;\n        puVar6 = (undefined4 *)((int)puVar4 + iVar15);\n        do {\n          *puVar4 = 3;\n          puVar4 = puVar4 + 1;\n        } while (puVar6 != puVar4);\n        puVar11 = puVar11 + 0xc;\n        iVar17 = iVar17 + 3;\n      } while (iVar15 != sVar20 << 2);" do (compound_statement "{\n        puVar4 = *(undefined4 **)(puVar11 + 8);\n        iVar15 = iVar15 + 4;\n        *puVar11 = 1;\n        *(int *)(puVar11 + 4) = iVar17;\n        puVar6 = (undefined4 *)((int)puVar4 + iVar15);\n        do {\n          *puVar4 = 3;\n          puVar4 = puVar4 + 1;\n        } while (puVar6 != puVar4);\n        puVar11 = puVar11 + 0xc;\n        iVar17 = iVar17 + 3;\n      }" { (expression_statement "puVar4 = *(undefined4 **)(puVar11 + 8);" (assignment_expression "puVar4 = *(undefined4 **)(puVar11 + 8)" identifier = (pointer_expression "*(undefined4 **)(puVar11 + 8)" * (cast_expression "(undefined4 **)(puVar11 + 8)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar11 + 8)" ( (binary_expression "puVar11 + 8" identifier + number_literal) ))))) ;) (expression_statement "iVar15 = iVar15 + 4;" (assignment_expression "iVar15 = iVar15 + 4" identifier = (binary_expression "iVar15 + 4" identifier + number_literal)) ;) (expression_statement "*puVar11 = 1;" (assignment_expression "*puVar11 = 1" (pointer_expression "*puVar11" * identifier) = number_literal) ;) (expression_statement "*(int *)(puVar11 + 4) = iVar17;" (assignment_expression "*(int *)(puVar11 + 4) = iVar17" (pointer_expression "*(int *)(puVar11 + 4)" * (cast_expression "(int *)(puVar11 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar11 + 4)" ( (binary_expression "puVar11 + 4" identifier + number_literal) )))) = identifier) ;) (expression_statement "puVar6 = (undefined4 *)((int)puVar4 + iVar15);" (assignment_expression "puVar6 = (undefined4 *)((int)puVar4 + iVar15)" identifier = (cast_expression "(undefined4 *)((int)puVar4 + iVar15)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar4 + iVar15)" ( (binary_expression "(int)puVar4 + iVar15" (cast_expression "(int)puVar4" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) (do_statement "do {\n          *puVar4 = 3;\n          puVar4 = puVar4 + 1;\n        } while (puVar6 != puVar4);" do (compound_statement "{\n          *puVar4 = 3;\n          puVar4 = puVar4 + 1;\n        }" { (expression_statement "*puVar4 = 3;" (assignment_expression "*puVar4 = 3" (pointer_expression "*puVar4" * identifier) = number_literal) ;) (expression_statement "puVar4 = puVar4 + 1;" (assignment_expression "puVar4 = puVar4 + 1" identifier = (binary_expression "puVar4 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(puVar6 != puVar4)" ( (binary_expression "puVar6 != puVar4" identifier != identifier) )) ;) (expression_statement "puVar11 = puVar11 + 0xc;" (assignment_expression "puVar11 = puVar11 + 0xc" identifier = (binary_expression "puVar11 + 0xc" identifier + number_literal)) ;) (expression_statement "iVar17 = iVar17 + 3;" (assignment_expression "iVar17 = iVar17 + 3" identifier = (binary_expression "iVar17 + 3" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar15 != sVar20 << 2)" ( (binary_expression "iVar15 != sVar20 << 2" identifier != (binary_expression "sVar20 << 2" identifier << number_literal)) )) ;) }))) (if_statement "if (uVar14 != 0) {\n      uVar2 = 0;\n      iVar17 = *(int *)(in_t9 + 0x2fbd4);\n      iVar19 = *(int *)(in_t9 + 0x2fbd4);\n      iVar18 = *(int *)(in_t9 + 0x2fbd4);\n      iVar15 = *(int *)(iVar17 + -0x59b0);\n      do {\n        sVar9 = length_of_file_name_and_frills(*(fileinfo **)(iVar15 + uVar2 * 4));\n        uVar14 = *(uint *)(iVar16 + -0x59a8);\n        if (sVar20 != 0) {\n          uVar8 = *(uint *)(iVar19 + -0x5a58);\n          pcVar7 = *(char **)(iVar18 + -0x5af0);\n          uVar5 = 0;\n          do {\n            uVar12 = uVar5 + 1;\n            if (*pcVar7 != '\0') {\n              sVar13 = sVar9;\n              if (CONCAT31(in_register_00000010,by_columns) == 0) {\n                if (uVar12 == 0) {\n                  trap(7);\n                }\n                uVar21 = uVar2 % uVar12;\n                if (uVar21 != uVar5) {\nLAB_00019864:\n                  sVar13 = sVar9 + 2;\n                  goto LAB_00019868;\n                }\n                iVar15 = *(int *)(pcVar7 + 8);\n              }\n              else {\n                if (uVar12 == 0) {\n                  trap(7);\n                }\n                uVar21 = ((uVar14 + uVar12) - 1) / uVar12;\n                if (uVar21 == 0) {\n                  trap(7);\n                }\n                uVar21 = uVar2 / uVar21;\n                if (uVar21 != uVar5) goto LAB_00019864;\nLAB_00019868:\n                iVar15 = *(int *)(pcVar7 + 8);\n              }\n              puVar10 = (uint *)(iVar15 + uVar21 * 4);\n              uVar5 = *puVar10;\n              if (uVar5 < sVar13) {\n                *(uint *)(pcVar7 + 4) = (*(int *)(pcVar7 + 4) - uVar5) + sVar13;\n                *puVar10 = sVar13;\n                *pcVar7 = *(uint *)(pcVar7 + 4) < uVar8;\n              }\n            }\n            pcVar7 = pcVar7 + 0xc;\n            uVar5 = uVar12;\n          } while (sVar20 != uVar12);\n        }\n        uVar2 = uVar2 + 1;\n        iVar15 = *(int *)(iVar17 + -0x59b0);\n      } while (uVar2 < uVar14);\n    }" if (parenthesized_expression "(uVar14 != 0)" ( (binary_expression "uVar14 != 0" identifier != number_literal) )) (compound_statement "{\n      uVar2 = 0;\n      iVar17 = *(int *)(in_t9 + 0x2fbd4);\n      iVar19 = *(int *)(in_t9 + 0x2fbd4);\n      iVar18 = *(int *)(in_t9 + 0x2fbd4);\n      iVar15 = *(int *)(iVar17 + -0x59b0);\n      do {\n        sVar9 = length_of_file_name_and_frills(*(fileinfo **)(iVar15 + uVar2 * 4));\n        uVar14 = *(uint *)(iVar16 + -0x59a8);\n        if (sVar20 != 0) {\n          uVar8 = *(uint *)(iVar19 + -0x5a58);\n          pcVar7 = *(char **)(iVar18 + -0x5af0);\n          uVar5 = 0;\n          do {\n            uVar12 = uVar5 + 1;\n            if (*pcVar7 != '\0') {\n              sVar13 = sVar9;\n              if (CONCAT31(in_register_00000010,by_columns) == 0) {\n                if (uVar12 == 0) {\n                  trap(7);\n                }\n                uVar21 = uVar2 % uVar12;\n                if (uVar21 != uVar5) {\nLAB_00019864:\n                  sVar13 = sVar9 + 2;\n                  goto LAB_00019868;\n                }\n                iVar15 = *(int *)(pcVar7 + 8);\n              }\n              else {\n                if (uVar12 == 0) {\n                  trap(7);\n                }\n                uVar21 = ((uVar14 + uVar12) - 1) / uVar12;\n                if (uVar21 == 0) {\n                  trap(7);\n                }\n                uVar21 = uVar2 / uVar21;\n                if (uVar21 != uVar5) goto LAB_00019864;\nLAB_00019868:\n                iVar15 = *(int *)(pcVar7 + 8);\n              }\n              puVar10 = (uint *)(iVar15 + uVar21 * 4);\n              uVar5 = *puVar10;\n              if (uVar5 < sVar13) {\n                *(uint *)(pcVar7 + 4) = (*(int *)(pcVar7 + 4) - uVar5) + sVar13;\n                *puVar10 = sVar13;\n                *pcVar7 = *(uint *)(pcVar7 + 4) < uVar8;\n              }\n            }\n            pcVar7 = pcVar7 + 0xc;\n            uVar5 = uVar12;\n          } while (sVar20 != uVar12);\n        }\n        uVar2 = uVar2 + 1;\n        iVar15 = *(int *)(iVar17 + -0x59b0);\n      } while (uVar2 < uVar14);\n    }" { (expression_statement "uVar2 = 0;" (assignment_expression "uVar2 = 0" identifier = number_literal) ;) (expression_statement "iVar17 = *(int *)(in_t9 + 0x2fbd4);" (assignment_expression "iVar17 = *(int *)(in_t9 + 0x2fbd4)" identifier = (pointer_expression "*(int *)(in_t9 + 0x2fbd4)" * (cast_expression "(int *)(in_t9 + 0x2fbd4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_t9 + 0x2fbd4)" ( (binary_expression "in_t9 + 0x2fbd4" identifier + number_literal) ))))) ;) (expression_statement "iVar19 = *(int *)(in_t9 + 0x2fbd4);" (assignment_expression "iVar19 = *(int *)(in_t9 + 0x2fbd4)" identifier = (pointer_expression "*(int *)(in_t9 + 0x2fbd4)" * (cast_expression "(int *)(in_t9 + 0x2fbd4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_t9 + 0x2fbd4)" ( (binary_expression "in_t9 + 0x2fbd4" identifier + number_literal) ))))) ;) (expression_statement "iVar18 = *(int *)(in_t9 + 0x2fbd4);" (assignment_expression "iVar18 = *(int *)(in_t9 + 0x2fbd4)" identifier = (pointer_expression "*(int *)(in_t9 + 0x2fbd4)" * (cast_expression "(int *)(in_t9 + 0x2fbd4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_t9 + 0x2fbd4)" ( (binary_expression "in_t9 + 0x2fbd4" identifier + number_literal) ))))) ;) (expression_statement "iVar15 = *(int *)(iVar17 + -0x59b0);" (assignment_expression "iVar15 = *(int *)(iVar17 + -0x59b0)" identifier = (pointer_expression "*(int *)(iVar17 + -0x59b0)" * (cast_expression "(int *)(iVar17 + -0x59b0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar17 + -0x59b0)" ( (binary_expression "iVar17 + -0x59b0" identifier + number_literal) ))))) ;) (do_statement "do {\n        sVar9 = length_of_file_name_and_frills(*(fileinfo **)(iVar15 + uVar2 * 4));\n        uVar14 = *(uint *)(iVar16 + -0x59a8);\n        if (sVar20 != 0) {\n          uVar8 = *(uint *)(iVar19 + -0x5a58);\n          pcVar7 = *(char **)(iVar18 + -0x5af0);\n          uVar5 = 0;\n          do {\n            uVar12 = uVar5 + 1;\n            if (*pcVar7 != '\0') {\n              sVar13 = sVar9;\n              if (CONCAT31(in_register_00000010,by_columns) == 0) {\n                if (uVar12 == 0) {\n                  trap(7);\n                }\n                uVar21 = uVar2 % uVar12;\n                if (uVar21 != uVar5) {\nLAB_00019864:\n                  sVar13 = sVar9 + 2;\n                  goto LAB_00019868;\n                }\n                iVar15 = *(int *)(pcVar7 + 8);\n              }\n              else {\n                if (uVar12 == 0) {\n                  trap(7);\n                }\n                uVar21 = ((uVar14 + uVar12) - 1) / uVar12;\n                if (uVar21 == 0) {\n                  trap(7);\n                }\n                uVar21 = uVar2 / uVar21;\n                if (uVar21 != uVar5) goto LAB_00019864;\nLAB_00019868:\n                iVar15 = *(int *)(pcVar7 + 8);\n              }\n              puVar10 = (uint *)(iVar15 + uVar21 * 4);\n              uVar5 = *puVar10;\n              if (uVar5 < sVar13) {\n                *(uint *)(pcVar7 + 4) = (*(int *)(pcVar7 + 4) - uVar5) + sVar13;\n                *puVar10 = sVar13;\n                *pcVar7 = *(uint *)(pcVar7 + 4) < uVar8;\n              }\n            }\n            pcVar7 = pcVar7 + 0xc;\n            uVar5 = uVar12;\n          } while (sVar20 != uVar12);\n        }\n        uVar2 = uVar2 + 1;\n        iVar15 = *(int *)(iVar17 + -0x59b0);\n      } while (uVar2 < uVar14);" do (compound_statement "{\n        sVar9 = length_of_file_name_and_frills(*(fileinfo **)(iVar15 + uVar2 * 4));\n        uVar14 = *(uint *)(iVar16 + -0x59a8);\n        if (sVar20 != 0) {\n          uVar8 = *(uint *)(iVar19 + -0x5a58);\n          pcVar7 = *(char **)(iVar18 + -0x5af0);\n          uVar5 = 0;\n          do {\n            uVar12 = uVar5 + 1;\n            if (*pcVar7 != '\0') {\n              sVar13 = sVar9;\n              if (CONCAT31(in_register_00000010,by_columns) == 0) {\n                if (uVar12 == 0) {\n                  trap(7);\n                }\n                uVar21 = uVar2 % uVar12;\n                if (uVar21 != uVar5) {\nLAB_00019864:\n                  sVar13 = sVar9 + 2;\n                  goto LAB_00019868;\n                }\n                iVar15 = *(int *)(pcVar7 + 8);\n              }\n              else {\n                if (uVar12 == 0) {\n                  trap(7);\n                }\n                uVar21 = ((uVar14 + uVar12) - 1) / uVar12;\n                if (uVar21 == 0) {\n                  trap(7);\n                }\n                uVar21 = uVar2 / uVar21;\n                if (uVar21 != uVar5) goto LAB_00019864;\nLAB_00019868:\n                iVar15 = *(int *)(pcVar7 + 8);\n              }\n              puVar10 = (uint *)(iVar15 + uVar21 * 4);\n              uVar5 = *puVar10;\n              if (uVar5 < sVar13) {\n                *(uint *)(pcVar7 + 4) = (*(int *)(pcVar7 + 4) - uVar5) + sVar13;\n                *puVar10 = sVar13;\n                *pcVar7 = *(uint *)(pcVar7 + 4) < uVar8;\n              }\n            }\n            pcVar7 = pcVar7 + 0xc;\n            uVar5 = uVar12;\n          } while (sVar20 != uVar12);\n        }\n        uVar2 = uVar2 + 1;\n        iVar15 = *(int *)(iVar17 + -0x59b0);\n      }" { (expression_statement "sVar9 = length_of_file_name_and_frills(*(fileinfo **)(iVar15 + uVar2 * 4));" (assignment_expression "sVar9 = length_of_file_name_and_frills(*(fileinfo **)(iVar15 + uVar2 * 4))" identifier = (call_expression "length_of_file_name_and_frills(*(fileinfo **)(iVar15 + uVar2 * 4))" identifier (argument_list "(*(fileinfo **)(iVar15 + uVar2 * 4))" ( (pointer_expression "*(fileinfo **)(iVar15 + uVar2 * 4)" * (cast_expression "(fileinfo **)(iVar15 + uVar2 * 4)" ( (type_descriptor "fileinfo **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar15 + uVar2 * 4)" ( (binary_expression "iVar15 + uVar2 * 4" identifier + (binary_expression "uVar2 * 4" identifier * number_literal)) )))) )))) ;) (expression_statement "uVar14 = *(uint *)(iVar16 + -0x59a8);" (assignment_expression "uVar14 = *(uint *)(iVar16 + -0x59a8)" identifier = (pointer_expression "*(uint *)(iVar16 + -0x59a8)" * (cast_expression "(uint *)(iVar16 + -0x59a8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar16 + -0x59a8)" ( (binary_expression "iVar16 + -0x59a8" identifier + number_literal) ))))) ;) (if_statement "if (sVar20 != 0) {\n          uVar8 = *(uint *)(iVar19 + -0x5a58);\n          pcVar7 = *(char **)(iVar18 + -0x5af0);\n          uVar5 = 0;\n          do {\n            uVar12 = uVar5 + 1;\n            if (*pcVar7 != '\0') {\n              sVar13 = sVar9;\n              if (CONCAT31(in_register_00000010,by_columns) == 0) {\n                if (uVar12 == 0) {\n                  trap(7);\n                }\n                uVar21 = uVar2 % uVar12;\n                if (uVar21 != uVar5) {\nLAB_00019864:\n                  sVar13 = sVar9 + 2;\n                  goto LAB_00019868;\n                }\n                iVar15 = *(int *)(pcVar7 + 8);\n              }\n              else {\n                if (uVar12 == 0) {\n                  trap(7);\n                }\n                uVar21 = ((uVar14 + uVar12) - 1) / uVar12;\n                if (uVar21 == 0) {\n                  trap(7);\n                }\n                uVar21 = uVar2 / uVar21;\n                if (uVar21 != uVar5) goto LAB_00019864;\nLAB_00019868:\n                iVar15 = *(int *)(pcVar7 + 8);\n              }\n              puVar10 = (uint *)(iVar15 + uVar21 * 4);\n              uVar5 = *puVar10;\n              if (uVar5 < sVar13) {\n                *(uint *)(pcVar7 + 4) = (*(int *)(pcVar7 + 4) - uVar5) + sVar13;\n                *puVar10 = sVar13;\n                *pcVar7 = *(uint *)(pcVar7 + 4) < uVar8;\n              }\n            }\n            pcVar7 = pcVar7 + 0xc;\n            uVar5 = uVar12;\n          } while (sVar20 != uVar12);\n        }" if (parenthesized_expression "(sVar20 != 0)" ( (binary_expression "sVar20 != 0" identifier != number_literal) )) (compound_statement "{\n          uVar8 = *(uint *)(iVar19 + -0x5a58);\n          pcVar7 = *(char **)(iVar18 + -0x5af0);\n          uVar5 = 0;\n          do {\n            uVar12 = uVar5 + 1;\n            if (*pcVar7 != '\0') {\n              sVar13 = sVar9;\n              if (CONCAT31(in_register_00000010,by_columns) == 0) {\n                if (uVar12 == 0) {\n                  trap(7);\n                }\n                uVar21 = uVar2 % uVar12;\n                if (uVar21 != uVar5) {\nLAB_00019864:\n                  sVar13 = sVar9 + 2;\n                  goto LAB_00019868;\n                }\n                iVar15 = *(int *)(pcVar7 + 8);\n              }\n              else {\n                if (uVar12 == 0) {\n                  trap(7);\n                }\n                uVar21 = ((uVar14 + uVar12) - 1) / uVar12;\n                if (uVar21 == 0) {\n                  trap(7);\n                }\n                uVar21 = uVar2 / uVar21;\n                if (uVar21 != uVar5) goto LAB_00019864;\nLAB_00019868:\n                iVar15 = *(int *)(pcVar7 + 8);\n              }\n              puVar10 = (uint *)(iVar15 + uVar21 * 4);\n              uVar5 = *puVar10;\n              if (uVar5 < sVar13) {\n                *(uint *)(pcVar7 + 4) = (*(int *)(pcVar7 + 4) - uVar5) + sVar13;\n                *puVar10 = sVar13;\n                *pcVar7 = *(uint *)(pcVar7 + 4) < uVar8;\n              }\n            }\n            pcVar7 = pcVar7 + 0xc;\n            uVar5 = uVar12;\n          } while (sVar20 != uVar12);\n        }" { (expression_statement "uVar8 = *(uint *)(iVar19 + -0x5a58);" (assignment_expression "uVar8 = *(uint *)(iVar19 + -0x5a58)" identifier = (pointer_expression "*(uint *)(iVar19 + -0x5a58)" * (cast_expression "(uint *)(iVar19 + -0x5a58)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar19 + -0x5a58)" ( (binary_expression "iVar19 + -0x5a58" identifier + number_literal) ))))) ;) (expression_statement "pcVar7 = *(char **)(iVar18 + -0x5af0);" (assignment_expression "pcVar7 = *(char **)(iVar18 + -0x5af0)" identifier = (pointer_expression "*(char **)(iVar18 + -0x5af0)" * (cast_expression "(char **)(iVar18 + -0x5af0)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar18 + -0x5af0)" ( (binary_expression "iVar18 + -0x5af0" identifier + number_literal) ))))) ;) (expression_statement "uVar5 = 0;" (assignment_expression "uVar5 = 0" identifier = number_literal) ;) (do_statement "do {\n            uVar12 = uVar5 + 1;\n            if (*pcVar7 != '\0') {\n              sVar13 = sVar9;\n              if (CONCAT31(in_register_00000010,by_columns) == 0) {\n                if (uVar12 == 0) {\n                  trap(7);\n                }\n                uVar21 = uVar2 % uVar12;\n                if (uVar21 != uVar5) {\nLAB_00019864:\n                  sVar13 = sVar9 + 2;\n                  goto LAB_00019868;\n                }\n                iVar15 = *(int *)(pcVar7 + 8);\n              }\n              else {\n                if (uVar12 == 0) {\n                  trap(7);\n                }\n                uVar21 = ((uVar14 + uVar12) - 1) / uVar12;\n                if (uVar21 == 0) {\n                  trap(7);\n                }\n                uVar21 = uVar2 / uVar21;\n                if (uVar21 != uVar5) goto LAB_00019864;\nLAB_00019868:\n                iVar15 = *(int *)(pcVar7 + 8);\n              }\n              puVar10 = (uint *)(iVar15 + uVar21 * 4);\n              uVar5 = *puVar10;\n              if (uVar5 < sVar13) {\n                *(uint *)(pcVar7 + 4) = (*(int *)(pcVar7 + 4) - uVar5) + sVar13;\n                *puVar10 = sVar13;\n                *pcVar7 = *(uint *)(pcVar7 + 4) < uVar8;\n              }\n            }\n            pcVar7 = pcVar7 + 0xc;\n            uVar5 = uVar12;\n          } while (sVar20 != uVar12);" do (compound_statement "{\n            uVar12 = uVar5 + 1;\n            if (*pcVar7 != '\0') {\n              sVar13 = sVar9;\n              if (CONCAT31(in_register_00000010,by_columns) == 0) {\n                if (uVar12 == 0) {\n                  trap(7);\n                }\n                uVar21 = uVar2 % uVar12;\n                if (uVar21 != uVar5) {\nLAB_00019864:\n                  sVar13 = sVar9 + 2;\n                  goto LAB_00019868;\n                }\n                iVar15 = *(int *)(pcVar7 + 8);\n              }\n              else {\n                if (uVar12 == 0) {\n                  trap(7);\n                }\n                uVar21 = ((uVar14 + uVar12) - 1) / uVar12;\n                if (uVar21 == 0) {\n                  trap(7);\n                }\n                uVar21 = uVar2 / uVar21;\n                if (uVar21 != uVar5) goto LAB_00019864;\nLAB_00019868:\n                iVar15 = *(int *)(pcVar7 + 8);\n              }\n              puVar10 = (uint *)(iVar15 + uVar21 * 4);\n              uVar5 = *puVar10;\n              if (uVar5 < sVar13) {\n                *(uint *)(pcVar7 + 4) = (*(int *)(pcVar7 + 4) - uVar5) + sVar13;\n                *puVar10 = sVar13;\n                *pcVar7 = *(uint *)(pcVar7 + 4) < uVar8;\n              }\n            }\n            pcVar7 = pcVar7 + 0xc;\n            uVar5 = uVar12;\n          }" { (expression_statement "uVar12 = uVar5 + 1;" (assignment_expression "uVar12 = uVar5 + 1" identifier = (binary_expression "uVar5 + 1" identifier + number_literal)) ;) (if_statement "if (*pcVar7 != '\0') {\n              sVar13 = sVar9;\n              if (CONCAT31(in_register_00000010,by_columns) == 0) {\n                if (uVar12 == 0) {\n                  trap(7);\n                }\n                uVar21 = uVar2 % uVar12;\n                if (uVar21 != uVar5) {\nLAB_00019864:\n                  sVar13 = sVar9 + 2;\n                  goto LAB_00019868;\n                }\n                iVar15 = *(int *)(pcVar7 + 8);\n              }\n              else {\n                if (uVar12 == 0) {\n                  trap(7);\n                }\n                uVar21 = ((uVar14 + uVar12) - 1) / uVar12;\n                if (uVar21 == 0) {\n                  trap(7);\n                }\n                uVar21 = uVar2 / uVar21;\n                if (uVar21 != uVar5) goto LAB_00019864;\nLAB_00019868:\n                iVar15 = *(int *)(pcVar7 + 8);\n              }\n              puVar10 = (uint *)(iVar15 + uVar21 * 4);\n              uVar5 = *puVar10;\n              if (uVar5 < sVar13) {\n                *(uint *)(pcVar7 + 4) = (*(int *)(pcVar7 + 4) - uVar5) + sVar13;\n                *puVar10 = sVar13;\n                *pcVar7 = *(uint *)(pcVar7 + 4) < uVar8;\n              }\n            }" if (parenthesized_expression "(*pcVar7 != '\0')" ( (binary_expression "*pcVar7 != '\0'" (pointer_expression "*pcVar7" * identifier) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n              sVar13 = sVar9;\n              if (CONCAT31(in_register_00000010,by_columns) == 0) {\n                if (uVar12 == 0) {\n                  trap(7);\n                }\n                uVar21 = uVar2 % uVar12;\n                if (uVar21 != uVar5) {\nLAB_00019864:\n                  sVar13 = sVar9 + 2;\n                  goto LAB_00019868;\n                }\n                iVar15 = *(int *)(pcVar7 + 8);\n              }\n              else {\n                if (uVar12 == 0) {\n                  trap(7);\n                }\n                uVar21 = ((uVar14 + uVar12) - 1) / uVar12;\n                if (uVar21 == 0) {\n                  trap(7);\n                }\n                uVar21 = uVar2 / uVar21;\n                if (uVar21 != uVar5) goto LAB_00019864;\nLAB_00019868:\n                iVar15 = *(int *)(pcVar7 + 8);\n              }\n              puVar10 = (uint *)(iVar15 + uVar21 * 4);\n              uVar5 = *puVar10;\n              if (uVar5 < sVar13) {\n                *(uint *)(pcVar7 + 4) = (*(int *)(pcVar7 + 4) - uVar5) + sVar13;\n                *puVar10 = sVar13;\n                *pcVar7 = *(uint *)(pcVar7 + 4) < uVar8;\n              }\n            }" { (expression_statement "sVar13 = sVar9;" (assignment_expression "sVar13 = sVar9" identifier = identifier) ;) (if_statement "if (CONCAT31(in_register_00000010,by_columns) == 0) {\n                if (uVar12 == 0) {\n                  trap(7);\n                }\n                uVar21 = uVar2 % uVar12;\n                if (uVar21 != uVar5) {\nLAB_00019864:\n                  sVar13 = sVar9 + 2;\n                  goto LAB_00019868;\n                }\n                iVar15 = *(int *)(pcVar7 + 8);\n              }\n              else {\n                if (uVar12 == 0) {\n                  trap(7);\n                }\n                uVar21 = ((uVar14 + uVar12) - 1) / uVar12;\n                if (uVar21 == 0) {\n                  trap(7);\n                }\n                uVar21 = uVar2 / uVar21;\n                if (uVar21 != uVar5) goto LAB_00019864;\nLAB_00019868:\n                iVar15 = *(int *)(pcVar7 + 8);\n              }" if (parenthesized_expression "(CONCAT31(in_register_00000010,by_columns) == 0)" ( (binary_expression "CONCAT31(in_register_00000010,by_columns) == 0" (call_expression "CONCAT31(in_register_00000010,by_columns)" identifier (argument_list "(in_register_00000010,by_columns)" ( identifier , identifier ))) == number_literal) )) (compound_statement "{\n                if (uVar12 == 0) {\n                  trap(7);\n                }\n                uVar21 = uVar2 % uVar12;\n                if (uVar21 != uVar5) {\nLAB_00019864:\n                  sVar13 = sVar9 + 2;\n                  goto LAB_00019868;\n                }\n                iVar15 = *(int *)(pcVar7 + 8);\n              }" { (if_statement "if (uVar12 == 0) {\n                  trap(7);\n                }" if (parenthesized_expression "(uVar12 == 0)" ( (binary_expression "uVar12 == 0" identifier == number_literal) )) (compound_statement "{\n                  trap(7);\n                }" { (expression_statement "trap(7);" (call_expression "trap(7)" identifier (argument_list "(7)" ( number_literal ))) ;) })) (expression_statement "uVar21 = uVar2 % uVar12;" (assignment_expression "uVar21 = uVar2 % uVar12" identifier = (binary_expression "uVar2 % uVar12" identifier % identifier)) ;) (if_statement "if (uVar21 != uVar5) {\nLAB_00019864:\n                  sVar13 = sVar9 + 2;\n                  goto LAB_00019868;\n                }" if (parenthesized_expression "(uVar21 != uVar5)" ( (binary_expression "uVar21 != uVar5" identifier != identifier) )) (compound_statement "{\nLAB_00019864:\n                  sVar13 = sVar9 + 2;\n                  goto LAB_00019868;\n                }" { (labeled_statement "LAB_00019864:\n                  sVar13 = sVar9 + 2;" statement_identifier : (expression_statement "sVar13 = sVar9 + 2;" (assignment_expression "sVar13 = sVar9 + 2" identifier = (binary_expression "sVar9 + 2" identifier + number_literal)) ;)) (goto_statement "goto LAB_00019868;" goto statement_identifier ;) })) (expression_statement "iVar15 = *(int *)(pcVar7 + 8);" (assignment_expression "iVar15 = *(int *)(pcVar7 + 8)" identifier = (pointer_expression "*(int *)(pcVar7 + 8)" * (cast_expression "(int *)(pcVar7 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar7 + 8)" ( (binary_expression "pcVar7 + 8" identifier + number_literal) ))))) ;) }) (else_clause "else {\n                if (uVar12 == 0) {\n                  trap(7);\n                }\n                uVar21 = ((uVar14 + uVar12) - 1) / uVar12;\n                if (uVar21 == 0) {\n                  trap(7);\n                }\n                uVar21 = uVar2 / uVar21;\n                if (uVar21 != uVar5) goto LAB_00019864;\nLAB_00019868:\n                iVar15 = *(int *)(pcVar7 + 8);\n              }" else (compound_statement "{\n                if (uVar12 == 0) {\n                  trap(7);\n                }\n                uVar21 = ((uVar14 + uVar12) - 1) / uVar12;\n                if (uVar21 == 0) {\n                  trap(7);\n                }\n                uVar21 = uVar2 / uVar21;\n                if (uVar21 != uVar5) goto LAB_00019864;\nLAB_00019868:\n                iVar15 = *(int *)(pcVar7 + 8);\n              }" { (if_statement "if (uVar12 == 0) {\n                  trap(7);\n                }" if (parenthesized_expression "(uVar12 == 0)" ( (binary_expression "uVar12 == 0" identifier == number_literal) )) (compound_statement "{\n                  trap(7);\n                }" { (expression_statement "trap(7);" (call_expression "trap(7)" identifier (argument_list "(7)" ( number_literal ))) ;) })) (expression_statement "uVar21 = ((uVar14 + uVar12) - 1) / uVar12;" (assignment_expression "uVar21 = ((uVar14 + uVar12) - 1) / uVar12" identifier = (binary_expression "((uVar14 + uVar12) - 1) / uVar12" (parenthesized_expression "((uVar14 + uVar12) - 1)" ( (binary_expression "(uVar14 + uVar12) - 1" (parenthesized_expression "(uVar14 + uVar12)" ( (binary_expression "uVar14 + uVar12" identifier + identifier) )) - number_literal) )) / identifier)) ;) (if_statement "if (uVar21 == 0) {\n                  trap(7);\n                }" if (parenthesized_expression "(uVar21 == 0)" ( (binary_expression "uVar21 == 0" identifier == number_literal) )) (compound_statement "{\n                  trap(7);\n                }" { (expression_statement "trap(7);" (call_expression "trap(7)" identifier (argument_list "(7)" ( number_literal ))) ;) })) (expression_statement "uVar21 = uVar2 / uVar21;" (assignment_expression "uVar21 = uVar2 / uVar21" identifier = (binary_expression "uVar2 / uVar21" identifier / identifier)) ;) (if_statement "if (uVar21 != uVar5) goto LAB_00019864;" if (parenthesized_expression "(uVar21 != uVar5)" ( (binary_expression "uVar21 != uVar5" identifier != identifier) )) (goto_statement "goto LAB_00019864;" goto statement_identifier ;)) (labeled_statement "LAB_00019868:\n                iVar15 = *(int *)(pcVar7 + 8);" statement_identifier : (expression_statement "iVar15 = *(int *)(pcVar7 + 8);" (assignment_expression "iVar15 = *(int *)(pcVar7 + 8)" identifier = (pointer_expression "*(int *)(pcVar7 + 8)" * (cast_expression "(int *)(pcVar7 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar7 + 8)" ( (binary_expression "pcVar7 + 8" identifier + number_literal) ))))) ;)) }))) (expression_statement "puVar10 = (uint *)(iVar15 + uVar21 * 4);" (assignment_expression "puVar10 = (uint *)(iVar15 + uVar21 * 4)" identifier = (cast_expression "(uint *)(iVar15 + uVar21 * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar15 + uVar21 * 4)" ( (binary_expression "iVar15 + uVar21 * 4" identifier + (binary_expression "uVar21 * 4" identifier * number_literal)) )))) ;) (expression_statement "uVar5 = *puVar10;" (assignment_expression "uVar5 = *puVar10" identifier = (pointer_expression "*puVar10" * identifier)) ;) (if_statement "if (uVar5 < sVar13) {\n                *(uint *)(pcVar7 + 4) = (*(int *)(pcVar7 + 4) - uVar5) + sVar13;\n                *puVar10 = sVar13;\n                *pcVar7 = *(uint *)(pcVar7 + 4) < uVar8;\n              }" if (parenthesized_expression "(uVar5 < sVar13)" ( (binary_expression "uVar5 < sVar13" identifier < identifier) )) (compound_statement "{\n                *(uint *)(pcVar7 + 4) = (*(int *)(pcVar7 + 4) - uVar5) + sVar13;\n                *puVar10 = sVar13;\n                *pcVar7 = *(uint *)(pcVar7 + 4) < uVar8;\n              }" { (expression_statement "*(uint *)(pcVar7 + 4) = (*(int *)(pcVar7 + 4) - uVar5) + sVar13;" (assignment_expression "*(uint *)(pcVar7 + 4) = (*(int *)(pcVar7 + 4) - uVar5) + sVar13" (pointer_expression "*(uint *)(pcVar7 + 4)" * (cast_expression "(uint *)(pcVar7 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar7 + 4)" ( (binary_expression "pcVar7 + 4" identifier + number_literal) )))) = (binary_expression "(*(int *)(pcVar7 + 4) - uVar5) + sVar13" (parenthesized_expression "(*(int *)(pcVar7 + 4) - uVar5)" ( (binary_expression "*(int *)(pcVar7 + 4) - uVar5" (pointer_expression "*(int *)(pcVar7 + 4)" * (cast_expression "(int *)(pcVar7 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar7 + 4)" ( (binary_expression "pcVar7 + 4" identifier + number_literal) )))) - identifier) )) + identifier)) ;) (expression_statement "*puVar10 = sVar13;" (assignment_expression "*puVar10 = sVar13" (pointer_expression "*puVar10" * identifier) = identifier) ;) (expression_statement "*pcVar7 = *(uint *)(pcVar7 + 4) < uVar8;" (assignment_expression "*pcVar7 = *(uint *)(pcVar7 + 4) < uVar8" (pointer_expression "*pcVar7" * identifier) = (binary_expression "*(uint *)(pcVar7 + 4) < uVar8" (pointer_expression "*(uint *)(pcVar7 + 4)" * (cast_expression "(uint *)(pcVar7 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar7 + 4)" ( (binary_expression "pcVar7 + 4" identifier + number_literal) )))) < identifier)) ;) })) })) (expression_statement "pcVar7 = pcVar7 + 0xc;" (assignment_expression "pcVar7 = pcVar7 + 0xc" identifier = (binary_expression "pcVar7 + 0xc" identifier + number_literal)) ;) (expression_statement "uVar5 = uVar12;" (assignment_expression "uVar5 = uVar12" identifier = identifier) ;) }) while (parenthesized_expression "(sVar20 != uVar12)" ( (binary_expression "sVar20 != uVar12" identifier != identifier) )) ;) })) (expression_statement "uVar2 = uVar2 + 1;" (assignment_expression "uVar2 = uVar2 + 1" identifier = (binary_expression "uVar2 + 1" identifier + number_literal)) ;) (expression_statement "iVar15 = *(int *)(iVar17 + -0x59b0);" (assignment_expression "iVar15 = *(int *)(iVar17 + -0x59b0)" identifier = (pointer_expression "*(int *)(iVar17 + -0x59b0)" * (cast_expression "(int *)(iVar17 + -0x59b0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar17 + -0x59b0)" ( (binary_expression "iVar17 + -0x59b0" identifier + number_literal) ))))) ;) }) while (parenthesized_expression "(uVar2 < uVar14)" ( (binary_expression "uVar2 < uVar14" identifier < identifier) )) ;) })) (if_statement "if (1 < sVar20) {\n      iVar15 = *(int *)(*(int *)(in_t9 + 0x2fbd4) + -0x5af0) + sVar20 * 0xc;\n      cVar1 = *(char *)(iVar15 + -0xc);\n      while (cVar1 == '\0') {\n        sVar20 = sVar20 - 1;\n        if (sVar20 == 1) {\n          return 1;\n        }\n        cVar1 = *(char *)(iVar15 + -0x18);\n        iVar15 = iVar15 + -0xc;\n      }\n    }" if (parenthesized_expression "(1 < sVar20)" ( (binary_expression "1 < sVar20" number_literal < identifier) )) (compound_statement "{\n      iVar15 = *(int *)(*(int *)(in_t9 + 0x2fbd4) + -0x5af0) + sVar20 * 0xc;\n      cVar1 = *(char *)(iVar15 + -0xc);\n      while (cVar1 == '\0') {\n        sVar20 = sVar20 - 1;\n        if (sVar20 == 1) {\n          return 1;\n        }\n        cVar1 = *(char *)(iVar15 + -0x18);\n        iVar15 = iVar15 + -0xc;\n      }\n    }" { (expression_statement "iVar15 = *(int *)(*(int *)(in_t9 + 0x2fbd4) + -0x5af0) + sVar20 * 0xc;" (assignment_expression "iVar15 = *(int *)(*(int *)(in_t9 + 0x2fbd4) + -0x5af0) + sVar20 * 0xc" identifier = (binary_expression "*(int *)(*(int *)(in_t9 + 0x2fbd4) + -0x5af0) + sVar20 * 0xc" (pointer_expression "*(int *)(*(int *)(in_t9 + 0x2fbd4) + -0x5af0)" * (cast_expression "(int *)(*(int *)(in_t9 + 0x2fbd4) + -0x5af0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(in_t9 + 0x2fbd4) + -0x5af0)" ( (binary_expression "*(int *)(in_t9 + 0x2fbd4) + -0x5af0" (pointer_expression "*(int *)(in_t9 + 0x2fbd4)" * (cast_expression "(int *)(in_t9 + 0x2fbd4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_t9 + 0x2fbd4)" ( (binary_expression "in_t9 + 0x2fbd4" identifier + number_literal) )))) + number_literal) )))) + (binary_expression "sVar20 * 0xc" identifier * number_literal))) ;) (expression_statement "cVar1 = *(char *)(iVar15 + -0xc);" (assignment_expression "cVar1 = *(char *)(iVar15 + -0xc)" identifier = (pointer_expression "*(char *)(iVar15 + -0xc)" * (cast_expression "(char *)(iVar15 + -0xc)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar15 + -0xc)" ( (binary_expression "iVar15 + -0xc" identifier + number_literal) ))))) ;) (while_statement "while (cVar1 == '\0') {\n        sVar20 = sVar20 - 1;\n        if (sVar20 == 1) {\n          return 1;\n        }\n        cVar1 = *(char *)(iVar15 + -0x18);\n        iVar15 = iVar15 + -0xc;\n      }" while (parenthesized_expression "(cVar1 == '\0')" ( (binary_expression "cVar1 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n        sVar20 = sVar20 - 1;\n        if (sVar20 == 1) {\n          return 1;\n        }\n        cVar1 = *(char *)(iVar15 + -0x18);\n        iVar15 = iVar15 + -0xc;\n      }" { (expression_statement "sVar20 = sVar20 - 1;" (assignment_expression "sVar20 = sVar20 - 1" identifier = (binary_expression "sVar20 - 1" identifier - number_literal)) ;) (if_statement "if (sVar20 == 1) {\n          return 1;\n        }" if (parenthesized_expression "(sVar20 == 1)" ( (binary_expression "sVar20 == 1" identifier == number_literal) )) (compound_statement "{\n          return 1;\n        }" { (return_statement "return 1;" return number_literal ;) })) (expression_statement "cVar1 = *(char *)(iVar15 + -0x18);" (assignment_expression "cVar1 = *(char *)(iVar15 + -0x18)" identifier = (pointer_expression "*(char *)(iVar15 + -0x18)" * (cast_expression "(char *)(iVar15 + -0x18)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar15 + -0x18)" ( (binary_expression "iVar15 + -0x18" identifier + number_literal) ))))) ;) (expression_statement "iVar15 = iVar15 + -0xc;" (assignment_expression "iVar15 = iVar15 + -0xc" identifier = (binary_expression "iVar15 + -0xc" identifier + number_literal)) ;) })) })) (return_statement "return sVar20;" return identifier ;) })) (expression_statement "iVar18 = *(int *)(in_t9 + 0x2fbd4);" (assignment_expression "iVar18 = *(int *)(in_t9 + 0x2fbd4)" identifier = (pointer_expression "*(int *)(in_t9 + 0x2fbd4)" * (cast_expression "(int *)(in_t9 + 0x2fbd4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_t9 + 0x2fbd4)" ( (binary_expression "in_t9 + 0x2fbd4" identifier + number_literal) ))))) ;) (if_statement "if (sVar20 < uVar2 >> 1) {\n    uVar2 = sVar20 * 2;\n    if (((int)(sVar20 * 0x18) < 0) ||\n       (sVar20 * 3 >> 0x1d != 0 || (uint)(sVar20 * 3 < uVar2) != (int)sVar20 >> 0x1f))\n    goto LAB_000199b4;\n    pvVar3 = xrealloc(*(void **)(iVar18 + -0x5af0),sVar20 * 0x18);\n    *(void **)(iVar18 + -0x5af0) = pvVar3;\n  }\n  else {\n    if (((int)(uVar2 * 0xc) < 0) ||\n       (uVar2 * 3 >> 0x1e != 0 || (uint)(uVar2 * 3 < uVar2 * 2) != (int)uVar2 >> 0x1f))\n    goto LAB_000199b4;\n    pvVar3 = xrealloc(*(void **)(iVar18 + -0x5af0),uVar2 * 0xc);\n    uVar2 = *(uint *)(iVar15 + -0x5af4);\n    *(void **)(iVar18 + -0x5af0) = pvVar3;\n  }" if (parenthesized_expression "(sVar20 < uVar2 >> 1)" ( (binary_expression "sVar20 < uVar2 >> 1" identifier < (binary_expression "uVar2 >> 1" identifier >> number_literal)) )) (compound_statement "{\n    uVar2 = sVar20 * 2;\n    if (((int)(sVar20 * 0x18) < 0) ||\n       (sVar20 * 3 >> 0x1d != 0 || (uint)(sVar20 * 3 < uVar2) != (int)sVar20 >> 0x1f))\n    goto LAB_000199b4;\n    pvVar3 = xrealloc(*(void **)(iVar18 + -0x5af0),sVar20 * 0x18);\n    *(void **)(iVar18 + -0x5af0) = pvVar3;\n  }" { (expression_statement "uVar2 = sVar20 * 2;" (assignment_expression "uVar2 = sVar20 * 2" identifier = (binary_expression "sVar20 * 2" identifier * number_literal)) ;) (if_statement "if (((int)(sVar20 * 0x18) < 0) ||\n       (sVar20 * 3 >> 0x1d != 0 || (uint)(sVar20 * 3 < uVar2) != (int)sVar20 >> 0x1f))\n    goto LAB_000199b4;" if (parenthesized_expression "(((int)(sVar20 * 0x18) < 0) ||\n       (sVar20 * 3 >> 0x1d != 0 || (uint)(sVar20 * 3 < uVar2) != (int)sVar20 >> 0x1f))" ( (binary_expression "((int)(sVar20 * 0x18) < 0) ||\n       (sVar20 * 3 >> 0x1d != 0 || (uint)(sVar20 * 3 < uVar2) != (int)sVar20 >> 0x1f)" (parenthesized_expression "((int)(sVar20 * 0x18) < 0)" ( (binary_expression "(int)(sVar20 * 0x18) < 0" (cast_expression "(int)(sVar20 * 0x18)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(sVar20 * 0x18)" ( (binary_expression "sVar20 * 0x18" identifier * number_literal) ))) < number_literal) )) || (parenthesized_expression "(sVar20 * 3 >> 0x1d != 0 || (uint)(sVar20 * 3 < uVar2) != (int)sVar20 >> 0x1f)" ( (binary_expression "sVar20 * 3 >> 0x1d != 0 || (uint)(sVar20 * 3 < uVar2) != (int)sVar20 >> 0x1f" (binary_expression "sVar20 * 3 >> 0x1d != 0" (binary_expression "sVar20 * 3 >> 0x1d" (binary_expression "sVar20 * 3" identifier * number_literal) >> number_literal) != number_literal) || (binary_expression "(uint)(sVar20 * 3 < uVar2) != (int)sVar20 >> 0x1f" (call_expression "(uint)(sVar20 * 3 < uVar2)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(sVar20 * 3 < uVar2)" ( (binary_expression "sVar20 * 3 < uVar2" (binary_expression "sVar20 * 3" identifier * number_literal) < identifier) ))) != (binary_expression "(int)sVar20 >> 0x1f" (cast_expression "(int)sVar20" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal))) ))) )) (goto_statement "goto LAB_000199b4;" goto statement_identifier ;)) (expression_statement "pvVar3 = xrealloc(*(void **)(iVar18 + -0x5af0),sVar20 * 0x18);" (assignment_expression "pvVar3 = xrealloc(*(void **)(iVar18 + -0x5af0),sVar20 * 0x18)" identifier = (call_expression "xrealloc(*(void **)(iVar18 + -0x5af0),sVar20 * 0x18)" identifier (argument_list "(*(void **)(iVar18 + -0x5af0),sVar20 * 0x18)" ( (pointer_expression "*(void **)(iVar18 + -0x5af0)" * (cast_expression "(void **)(iVar18 + -0x5af0)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar18 + -0x5af0)" ( (binary_expression "iVar18 + -0x5af0" identifier + number_literal) )))) , (binary_expression "sVar20 * 0x18" identifier * number_literal) )))) ;) (expression_statement "*(void **)(iVar18 + -0x5af0) = pvVar3;" (assignment_expression "*(void **)(iVar18 + -0x5af0) = pvVar3" (pointer_expression "*(void **)(iVar18 + -0x5af0)" * (cast_expression "(void **)(iVar18 + -0x5af0)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar18 + -0x5af0)" ( (binary_expression "iVar18 + -0x5af0" identifier + number_literal) )))) = identifier) ;) }) (else_clause "else {\n    if (((int)(uVar2 * 0xc) < 0) ||\n       (uVar2 * 3 >> 0x1e != 0 || (uint)(uVar2 * 3 < uVar2 * 2) != (int)uVar2 >> 0x1f))\n    goto LAB_000199b4;\n    pvVar3 = xrealloc(*(void **)(iVar18 + -0x5af0),uVar2 * 0xc);\n    uVar2 = *(uint *)(iVar15 + -0x5af4);\n    *(void **)(iVar18 + -0x5af0) = pvVar3;\n  }" else (compound_statement "{\n    if (((int)(uVar2 * 0xc) < 0) ||\n       (uVar2 * 3 >> 0x1e != 0 || (uint)(uVar2 * 3 < uVar2 * 2) != (int)uVar2 >> 0x1f))\n    goto LAB_000199b4;\n    pvVar3 = xrealloc(*(void **)(iVar18 + -0x5af0),uVar2 * 0xc);\n    uVar2 = *(uint *)(iVar15 + -0x5af4);\n    *(void **)(iVar18 + -0x5af0) = pvVar3;\n  }" { (if_statement "if (((int)(uVar2 * 0xc) < 0) ||\n       (uVar2 * 3 >> 0x1e != 0 || (uint)(uVar2 * 3 < uVar2 * 2) != (int)uVar2 >> 0x1f))\n    goto LAB_000199b4;" if (parenthesized_expression "(((int)(uVar2 * 0xc) < 0) ||\n       (uVar2 * 3 >> 0x1e != 0 || (uint)(uVar2 * 3 < uVar2 * 2) != (int)uVar2 >> 0x1f))" ( (binary_expression "((int)(uVar2 * 0xc) < 0) ||\n       (uVar2 * 3 >> 0x1e != 0 || (uint)(uVar2 * 3 < uVar2 * 2) != (int)uVar2 >> 0x1f)" (parenthesized_expression "((int)(uVar2 * 0xc) < 0)" ( (binary_expression "(int)(uVar2 * 0xc) < 0" (cast_expression "(int)(uVar2 * 0xc)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(uVar2 * 0xc)" ( (binary_expression "uVar2 * 0xc" identifier * number_literal) ))) < number_literal) )) || (parenthesized_expression "(uVar2 * 3 >> 0x1e != 0 || (uint)(uVar2 * 3 < uVar2 * 2) != (int)uVar2 >> 0x1f)" ( (binary_expression "uVar2 * 3 >> 0x1e != 0 || (uint)(uVar2 * 3 < uVar2 * 2) != (int)uVar2 >> 0x1f" (binary_expression "uVar2 * 3 >> 0x1e != 0" (binary_expression "uVar2 * 3 >> 0x1e" (binary_expression "uVar2 * 3" identifier * number_literal) >> number_literal) != number_literal) || (binary_expression "(uint)(uVar2 * 3 < uVar2 * 2) != (int)uVar2 >> 0x1f" (call_expression "(uint)(uVar2 * 3 < uVar2 * 2)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar2 * 3 < uVar2 * 2)" ( (binary_expression "uVar2 * 3 < uVar2 * 2" (binary_expression "uVar2 * 3" identifier * number_literal) < (binary_expression "uVar2 * 2" identifier * number_literal)) ))) != (binary_expression "(int)uVar2 >> 0x1f" (cast_expression "(int)uVar2" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal))) ))) )) (goto_statement "goto LAB_000199b4;" goto statement_identifier ;)) (expression_statement "pvVar3 = xrealloc(*(void **)(iVar18 + -0x5af0),uVar2 * 0xc);" (assignment_expression "pvVar3 = xrealloc(*(void **)(iVar18 + -0x5af0),uVar2 * 0xc)" identifier = (call_expression "xrealloc(*(void **)(iVar18 + -0x5af0),uVar2 * 0xc)" identifier (argument_list "(*(void **)(iVar18 + -0x5af0),uVar2 * 0xc)" ( (pointer_expression "*(void **)(iVar18 + -0x5af0)" * (cast_expression "(void **)(iVar18 + -0x5af0)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar18 + -0x5af0)" ( (binary_expression "iVar18 + -0x5af0" identifier + number_literal) )))) , (binary_expression "uVar2 * 0xc" identifier * number_literal) )))) ;) (expression_statement "uVar2 = *(uint *)(iVar15 + -0x5af4);" (assignment_expression "uVar2 = *(uint *)(iVar15 + -0x5af4)" identifier = (pointer_expression "*(uint *)(iVar15 + -0x5af4)" * (cast_expression "(uint *)(iVar15 + -0x5af4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar15 + -0x5af4)" ( (binary_expression "iVar15 + -0x5af4" identifier + number_literal) ))))) ;) (expression_statement "*(void **)(iVar18 + -0x5af0) = pvVar3;" (assignment_expression "*(void **)(iVar18 + -0x5af0) = pvVar3" (pointer_expression "*(void **)(iVar18 + -0x5af0)" * (cast_expression "(void **)(iVar18 + -0x5af0)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar18 + -0x5af0)" ( (binary_expression "iVar18 + -0x5af0" identifier + number_literal) )))) = identifier) ;) }))) (expression_statement "uVar14 = uVar2 - *(int *)(iVar17 + -0x6990);" (assignment_expression "uVar14 = uVar2 - *(int *)(iVar17 + -0x6990)" identifier = (binary_expression "uVar2 - *(int *)(iVar17 + -0x6990)" identifier - (pointer_expression "*(int *)(iVar17 + -0x6990)" * (cast_expression "(int *)(iVar17 + -0x6990)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar17 + -0x6990)" ( (binary_expression "iVar17 + -0x6990" identifier + number_literal) )))))) ;) (expression_statement "uVar8 = *(int *)(iVar17 + -0x6990) + 1 + uVar2;" (assignment_expression "uVar8 = *(int *)(iVar17 + -0x6990) + 1 + uVar2" identifier = (binary_expression "*(int *)(iVar17 + -0x6990) + 1 + uVar2" (binary_expression "*(int *)(iVar17 + -0x6990) + 1" (pointer_expression "*(int *)(iVar17 + -0x6990)" * (cast_expression "(int *)(iVar17 + -0x6990)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar17 + -0x6990)" ( (binary_expression "iVar17 + -0x6990" identifier + number_literal) )))) + number_literal) + identifier)) ;) (expression_statement "uVar5 = uVar14 * uVar8;" (assignment_expression "uVar5 = uVar14 * uVar8" identifier = (binary_expression "uVar14 * uVar8" identifier * identifier)) ;) (if_statement "if (uVar2 <= uVar8) {\n    if (uVar14 == 0) {\n      trap(7);\n    }\n    if (((uVar8 == uVar5 / uVar14) && (sVar9 = (uVar5 >> 1) << 2, -1 < (int)sVar9)) &&\n       (-1 < (int)uVar5)) {\n      pvVar3 = xmalloc(sVar9);\n      uVar14 = *(uint *)(iVar17 + -0x6990);\n      if (uVar14 < uVar2) {\n        iVar15 = (uVar14 + 1) * 4;\n        iVar18 = *(int *)(iVar18 + -0x5af0) + uVar14 * 0xc;\n        do {\n          *(void **)(iVar18 + 8) = pvVar3;\n          pvVar3 = (void *)((int)pvVar3 + iVar15);\n          iVar15 = iVar15 + 4;\n          iVar18 = iVar18 + 0xc;\n        } while ((uVar2 + 1) * 4 != iVar15);\n      }\n      uVar14 = *(uint *)(iVar16 + -0x59a8);\n      *(uint *)(iVar17 + -0x6990) = uVar2;\n      goto LAB_00019798;\n    }\n  }" if (parenthesized_expression "(uVar2 <= uVar8)" ( (binary_expression "uVar2 <= uVar8" identifier <= identifier) )) (compound_statement "{\n    if (uVar14 == 0) {\n      trap(7);\n    }\n    if (((uVar8 == uVar5 / uVar14) && (sVar9 = (uVar5 >> 1) << 2, -1 < (int)sVar9)) &&\n       (-1 < (int)uVar5)) {\n      pvVar3 = xmalloc(sVar9);\n      uVar14 = *(uint *)(iVar17 + -0x6990);\n      if (uVar14 < uVar2) {\n        iVar15 = (uVar14 + 1) * 4;\n        iVar18 = *(int *)(iVar18 + -0x5af0) + uVar14 * 0xc;\n        do {\n          *(void **)(iVar18 + 8) = pvVar3;\n          pvVar3 = (void *)((int)pvVar3 + iVar15);\n          iVar15 = iVar15 + 4;\n          iVar18 = iVar18 + 0xc;\n        } while ((uVar2 + 1) * 4 != iVar15);\n      }\n      uVar14 = *(uint *)(iVar16 + -0x59a8);\n      *(uint *)(iVar17 + -0x6990) = uVar2;\n      goto LAB_00019798;\n    }\n  }" { (if_statement "if (uVar14 == 0) {\n      trap(7);\n    }" if (parenthesized_expression "(uVar14 == 0)" ( (binary_expression "uVar14 == 0" identifier == number_literal) )) (compound_statement "{\n      trap(7);\n    }" { (expression_statement "trap(7);" (call_expression "trap(7)" identifier (argument_list "(7)" ( number_literal ))) ;) })) (if_statement "if (((uVar8 == uVar5 / uVar14) && (sVar9 = (uVar5 >> 1) << 2, -1 < (int)sVar9)) &&\n       (-1 < (int)uVar5)) {\n      pvVar3 = xmalloc(sVar9);\n      uVar14 = *(uint *)(iVar17 + -0x6990);\n      if (uVar14 < uVar2) {\n        iVar15 = (uVar14 + 1) * 4;\n        iVar18 = *(int *)(iVar18 + -0x5af0) + uVar14 * 0xc;\n        do {\n          *(void **)(iVar18 + 8) = pvVar3;\n          pvVar3 = (void *)((int)pvVar3 + iVar15);\n          iVar15 = iVar15 + 4;\n          iVar18 = iVar18 + 0xc;\n        } while ((uVar2 + 1) * 4 != iVar15);\n      }\n      uVar14 = *(uint *)(iVar16 + -0x59a8);\n      *(uint *)(iVar17 + -0x6990) = uVar2;\n      goto LAB_00019798;\n    }" if (parenthesized_expression "(((uVar8 == uVar5 / uVar14) && (sVar9 = (uVar5 >> 1) << 2, -1 < (int)sVar9)) &&\n       (-1 < (int)uVar5))" ( (binary_expression "((uVar8 == uVar5 / uVar14) && (sVar9 = (uVar5 >> 1) << 2, -1 < (int)sVar9)) &&\n       (-1 < (int)uVar5)" (parenthesized_expression "((uVar8 == uVar5 / uVar14) && (sVar9 = (uVar5 >> 1) << 2, -1 < (int)sVar9))" ( (binary_expression "(uVar8 == uVar5 / uVar14) && (sVar9 = (uVar5 >> 1) << 2, -1 < (int)sVar9)" (parenthesized_expression "(uVar8 == uVar5 / uVar14)" ( (binary_expression "uVar8 == uVar5 / uVar14" identifier == (binary_expression "uVar5 / uVar14" identifier / identifier)) )) && (parenthesized_expression "(sVar9 = (uVar5 >> 1) << 2, -1 < (int)sVar9)" ( (comma_expression "sVar9 = (uVar5 >> 1) << 2, -1 < (int)sVar9" (assignment_expression "sVar9 = (uVar5 >> 1) << 2" identifier = (binary_expression "(uVar5 >> 1) << 2" (parenthesized_expression "(uVar5 >> 1)" ( (binary_expression "uVar5 >> 1" identifier >> number_literal) )) << number_literal)) , (binary_expression "-1 < (int)sVar9" number_literal < (cast_expression "(int)sVar9" ( (type_descriptor "int" primitive_type) ) identifier))) ))) )) && (parenthesized_expression "(-1 < (int)uVar5)" ( (binary_expression "-1 < (int)uVar5" number_literal < (cast_expression "(int)uVar5" ( (type_descriptor "int" primitive_type) ) identifier)) ))) )) (compound_statement "{\n      pvVar3 = xmalloc(sVar9);\n      uVar14 = *(uint *)(iVar17 + -0x6990);\n      if (uVar14 < uVar2) {\n        iVar15 = (uVar14 + 1) * 4;\n        iVar18 = *(int *)(iVar18 + -0x5af0) + uVar14 * 0xc;\n        do {\n          *(void **)(iVar18 + 8) = pvVar3;\n          pvVar3 = (void *)((int)pvVar3 + iVar15);\n          iVar15 = iVar15 + 4;\n          iVar18 = iVar18 + 0xc;\n        } while ((uVar2 + 1) * 4 != iVar15);\n      }\n      uVar14 = *(uint *)(iVar16 + -0x59a8);\n      *(uint *)(iVar17 + -0x6990) = uVar2;\n      goto LAB_00019798;\n    }" { (expression_statement "pvVar3 = xmalloc(sVar9);" (assignment_expression "pvVar3 = xmalloc(sVar9)" identifier = (call_expression "xmalloc(sVar9)" identifier (argument_list "(sVar9)" ( identifier )))) ;) (expression_statement "uVar14 = *(uint *)(iVar17 + -0x6990);" (assignment_expression "uVar14 = *(uint *)(iVar17 + -0x6990)" identifier = (pointer_expression "*(uint *)(iVar17 + -0x6990)" * (cast_expression "(uint *)(iVar17 + -0x6990)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar17 + -0x6990)" ( (binary_expression "iVar17 + -0x6990" identifier + number_literal) ))))) ;) (if_statement "if (uVar14 < uVar2) {\n        iVar15 = (uVar14 + 1) * 4;\n        iVar18 = *(int *)(iVar18 + -0x5af0) + uVar14 * 0xc;\n        do {\n          *(void **)(iVar18 + 8) = pvVar3;\n          pvVar3 = (void *)((int)pvVar3 + iVar15);\n          iVar15 = iVar15 + 4;\n          iVar18 = iVar18 + 0xc;\n        } while ((uVar2 + 1) * 4 != iVar15);\n      }" if (parenthesized_expression "(uVar14 < uVar2)" ( (binary_expression "uVar14 < uVar2" identifier < identifier) )) (compound_statement "{\n        iVar15 = (uVar14 + 1) * 4;\n        iVar18 = *(int *)(iVar18 + -0x5af0) + uVar14 * 0xc;\n        do {\n          *(void **)(iVar18 + 8) = pvVar3;\n          pvVar3 = (void *)((int)pvVar3 + iVar15);\n          iVar15 = iVar15 + 4;\n          iVar18 = iVar18 + 0xc;\n        } while ((uVar2 + 1) * 4 != iVar15);\n      }" { (expression_statement "iVar15 = (uVar14 + 1) * 4;" (assignment_expression "iVar15 = (uVar14 + 1) * 4" identifier = (binary_expression "(uVar14 + 1) * 4" (parenthesized_expression "(uVar14 + 1)" ( (binary_expression "uVar14 + 1" identifier + number_literal) )) * number_literal)) ;) (expression_statement "iVar18 = *(int *)(iVar18 + -0x5af0) + uVar14 * 0xc;" (assignment_expression "iVar18 = *(int *)(iVar18 + -0x5af0) + uVar14 * 0xc" identifier = (binary_expression "*(int *)(iVar18 + -0x5af0) + uVar14 * 0xc" (pointer_expression "*(int *)(iVar18 + -0x5af0)" * (cast_expression "(int *)(iVar18 + -0x5af0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar18 + -0x5af0)" ( (binary_expression "iVar18 + -0x5af0" identifier + number_literal) )))) + (binary_expression "uVar14 * 0xc" identifier * number_literal))) ;) (do_statement "do {\n          *(void **)(iVar18 + 8) = pvVar3;\n          pvVar3 = (void *)((int)pvVar3 + iVar15);\n          iVar15 = iVar15 + 4;\n          iVar18 = iVar18 + 0xc;\n        } while ((uVar2 + 1) * 4 != iVar15);" do (compound_statement "{\n          *(void **)(iVar18 + 8) = pvVar3;\n          pvVar3 = (void *)((int)pvVar3 + iVar15);\n          iVar15 = iVar15 + 4;\n          iVar18 = iVar18 + 0xc;\n        }" { (expression_statement "*(void **)(iVar18 + 8) = pvVar3;" (assignment_expression "*(void **)(iVar18 + 8) = pvVar3" (pointer_expression "*(void **)(iVar18 + 8)" * (cast_expression "(void **)(iVar18 + 8)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar18 + 8)" ( (binary_expression "iVar18 + 8" identifier + number_literal) )))) = identifier) ;) (expression_statement "pvVar3 = (void *)((int)pvVar3 + iVar15);" (assignment_expression "pvVar3 = (void *)((int)pvVar3 + iVar15)" identifier = (cast_expression "(void *)((int)pvVar3 + iVar15)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pvVar3 + iVar15)" ( (binary_expression "(int)pvVar3 + iVar15" (cast_expression "(int)pvVar3" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) (expression_statement "iVar15 = iVar15 + 4;" (assignment_expression "iVar15 = iVar15 + 4" identifier = (binary_expression "iVar15 + 4" identifier + number_literal)) ;) (expression_statement "iVar18 = iVar18 + 0xc;" (assignment_expression "iVar18 = iVar18 + 0xc" identifier = (binary_expression "iVar18 + 0xc" identifier + number_literal)) ;) }) while (parenthesized_expression "((uVar2 + 1) * 4 != iVar15)" ( (binary_expression "(uVar2 + 1) * 4 != iVar15" (binary_expression "(uVar2 + 1) * 4" (parenthesized_expression "(uVar2 + 1)" ( (binary_expression "uVar2 + 1" identifier + number_literal) )) * number_literal) != identifier) )) ;) })) (expression_statement "uVar14 = *(uint *)(iVar16 + -0x59a8);" (assignment_expression "uVar14 = *(uint *)(iVar16 + -0x59a8)" identifier = (pointer_expression "*(uint *)(iVar16 + -0x59a8)" * (cast_expression "(uint *)(iVar16 + -0x59a8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar16 + -0x59a8)" ( (binary_expression "iVar16 + -0x59a8" identifier + number_literal) ))))) ;) (expression_statement "*(uint *)(iVar17 + -0x6990) = uVar2;" (assignment_expression "*(uint *)(iVar17 + -0x6990) = uVar2" (pointer_expression "*(uint *)(iVar17 + -0x6990)" * (cast_expression "(uint *)(iVar17 + -0x6990)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar17 + -0x6990)" ( (binary_expression "iVar17 + -0x6990" identifier + number_literal) )))) = identifier) ;) (goto_statement "goto LAB_00019798;" goto statement_identifier ;) })) })) (labeled_statement "LAB_000199b4:\n                    /* WARNING: Subroutine does not return */\n  xalloc_die();" statement_identifier : comment (expression_statement "xalloc_die();" (call_expression "xalloc_die()" identifier (argument_list "()" ( ))) ;)) })))
(translation_unit "uint FUN_00019634(int param_1)\n\n{\n  char cVar1;\n  undefined *puVar2;\n  undefined *puVar3;\n  uint uVar4;\n  undefined4 uVar5;\n  int iVar6;\n  undefined4 *puVar7;\n  uint uVar8;\n  int iVar9;\n  undefined4 *puVar10;\n  char *pcVar11;\n  uint uVar12;\n  int iVar13;\n  uint *puVar14;\n  undefined1 *puVar15;\n  uint uVar16;\n  uint uVar17;\n  uint uVar18;\n  uint uVar19;\n  uint uVar20;\n  uint uVar21;\n  \n  puVar2 = PTR_DAT_00049208;\n  uVar18 = *(uint *)(PTR_DAT_00049208 + -0x59a8);\n  uVar4 = *(uint *)(PTR_DAT_00049208 + -0x5af4);\n  uVar20 = uVar4;\n  if (uVar18 <= uVar4) {\n    uVar20 = uVar18;\n  }\n  if (uVar20 <= *(uint *)(PTR_DAT_00049208 + -0x6990)) {\nLAB_00019798:\n    if (uVar20 != 0) {\n      iVar6 = 0;\n      iVar9 = 3;\n      puVar15 = *(undefined1 **)(PTR_DAT_00049208 + -0x5af0);\n      do {\n        puVar7 = *(undefined4 **)(puVar15 + 8);\n        iVar6 = iVar6 + 4;\n        *puVar15 = 1;\n        *(int *)(puVar15 + 4) = iVar9;\n        puVar10 = (undefined4 *)((int)puVar7 + iVar6);\n        do {\n          *puVar7 = 3;\n          puVar7 = puVar7 + 1;\n        } while (puVar10 != puVar7);\n        puVar15 = puVar15 + 0xc;\n        iVar9 = iVar9 + 3;\n      } while (iVar6 != uVar20 << 2);\n    }\n    puVar3 = PTR_DAT_00049208;\n    if (uVar18 != 0) {\n      uVar4 = 0;\n      iVar6 = *(int *)(PTR_DAT_00049208 + -0x59b0);\n      do {\n        uVar18 = FUN_00019404(*(undefined4 *)(iVar6 + uVar4 * 4));\n        uVar8 = *(uint *)(puVar2 + -0x59a8);\n        if (uVar20 != 0) {\n          uVar19 = *(uint *)(puVar3 + -0x5a58);\n          pcVar11 = *(char **)(puVar3 + -0x5af0);\n          uVar12 = 0;\n          do {\n            uVar16 = uVar12 + 1;\n            if (*pcVar11 != '\0') {\n              uVar17 = uVar18;\n              if (param_1 == 0) {\n                if (uVar16 == 0) {\n                  trap(7);\n                }\n                uVar21 = uVar4 % uVar16;\n                if (uVar21 != uVar12) {\nLAB_00019864:\n                  uVar17 = uVar18 + 2;\n                  goto LAB_00019868;\n                }\n                iVar6 = *(int *)(pcVar11 + 8);\n              }\n              else {\n                if (uVar16 == 0) {\n                  trap(7);\n                }\n                uVar21 = ((uVar8 + uVar16) - 1) / uVar16;\n                if (uVar21 == 0) {\n                  trap(7);\n                }\n                uVar21 = uVar4 / uVar21;\n                if (uVar21 != uVar12) goto LAB_00019864;\nLAB_00019868:\n                iVar6 = *(int *)(pcVar11 + 8);\n              }\n              puVar14 = (uint *)(iVar6 + uVar21 * 4);\n              uVar12 = *puVar14;\n              if (uVar12 < uVar17) {\n                *(uint *)(pcVar11 + 4) = (*(int *)(pcVar11 + 4) - uVar12) + uVar17;\n                *puVar14 = uVar17;\n                *pcVar11 = *(uint *)(pcVar11 + 4) < uVar19;\n              }\n            }\n            pcVar11 = pcVar11 + 0xc;\n            uVar12 = uVar16;\n          } while (uVar20 != uVar16);\n        }\n        uVar4 = uVar4 + 1;\n        iVar6 = *(int *)(puVar3 + -0x59b0);\n      } while (uVar4 < uVar8);\n    }\n    if (1 < uVar20) {\n      iVar6 = *(int *)(PTR_DAT_00049208 + -0x5af0) + uVar20 * 0xc;\n      cVar1 = *(char *)(iVar6 + -0xc);\n      while (cVar1 == '\0') {\n        uVar20 = uVar20 - 1;\n        if (uVar20 == 1) {\n          return 1;\n        }\n        cVar1 = *(char *)(iVar6 + -0x18);\n        iVar6 = iVar6 + -0xc;\n      }\n    }\n    return uVar20;\n  }\n  if (uVar20 < uVar4 >> 1) {\n    uVar4 = uVar20 * 2;\n    if (((int)(uVar20 * 0x18) < 0) ||\n       (uVar20 * 3 >> 0x1d != 0 || (uint)(uVar20 * 3 < uVar4) != (int)uVar20 >> 0x1f))\n    goto LAB_000199b4;\n    uVar5 = xrealloc(*(undefined4 *)(PTR_DAT_00049208 + -0x5af0));\n    *(undefined4 *)(puVar2 + -0x5af0) = uVar5;\n  }\n  else {\n    if (((int)(uVar4 * 0xc) < 0) ||\n       (uVar4 * 3 >> 0x1e != 0 || (uint)(uVar4 * 3 < uVar4 * 2) != (int)uVar4 >> 0x1f))\n    goto LAB_000199b4;\n    uVar5 = xrealloc(*(undefined4 *)(PTR_DAT_00049208 + -0x5af0));\n    uVar4 = *(uint *)(puVar2 + -0x5af4);\n    *(undefined4 *)(puVar2 + -0x5af0) = uVar5;\n  }\n  uVar18 = uVar4 - *(int *)(puVar2 + -0x6990);\n  uVar12 = *(int *)(puVar2 + -0x6990) + 1 + uVar4;\n  uVar8 = uVar18 * uVar12;\n  if (uVar4 <= uVar12) {\n    if (uVar18 == 0) {\n      trap(7);\n    }\n    if (((uVar12 == uVar8 / uVar18) && (-1 < (int)((uVar8 >> 1) << 2))) && (-1 < (int)uVar8)) {\n      iVar6 = xmalloc();\n      uVar18 = *(uint *)(puVar2 + -0x6990);\n      if (uVar18 < uVar4) {\n        iVar9 = (uVar18 + 1) * 4;\n        iVar13 = *(int *)(puVar2 + -0x5af0) + uVar18 * 0xc;\n        do {\n          *(int *)(iVar13 + 8) = iVar6;\n          iVar6 = iVar6 + iVar9;\n          iVar9 = iVar9 + 4;\n          iVar13 = iVar13 + 0xc;\n        } while ((uVar4 + 1) * 4 != iVar9);\n      }\n      uVar18 = *(uint *)(puVar2 + -0x59a8);\n      *(uint *)(puVar2 + -0x6990) = uVar4;\n      goto LAB_00019798;\n    }\n  }\nLAB_000199b4:\n                    \n  xalloc_die();\n}\n\n" (function_definition "uint FUN_00019634(int param_1)\n\n{\n  char cVar1;\n  undefined *puVar2;\n  undefined *puVar3;\n  uint uVar4;\n  undefined4 uVar5;\n  int iVar6;\n  undefined4 *puVar7;\n  uint uVar8;\n  int iVar9;\n  undefined4 *puVar10;\n  char *pcVar11;\n  uint uVar12;\n  int iVar13;\n  uint *puVar14;\n  undefined1 *puVar15;\n  uint uVar16;\n  uint uVar17;\n  uint uVar18;\n  uint uVar19;\n  uint uVar20;\n  uint uVar21;\n  \n  puVar2 = PTR_DAT_00049208;\n  uVar18 = *(uint *)(PTR_DAT_00049208 + -0x59a8);\n  uVar4 = *(uint *)(PTR_DAT_00049208 + -0x5af4);\n  uVar20 = uVar4;\n  if (uVar18 <= uVar4) {\n    uVar20 = uVar18;\n  }\n  if (uVar20 <= *(uint *)(PTR_DAT_00049208 + -0x6990)) {\nLAB_00019798:\n    if (uVar20 != 0) {\n      iVar6 = 0;\n      iVar9 = 3;\n      puVar15 = *(undefined1 **)(PTR_DAT_00049208 + -0x5af0);\n      do {\n        puVar7 = *(undefined4 **)(puVar15 + 8);\n        iVar6 = iVar6 + 4;\n        *puVar15 = 1;\n        *(int *)(puVar15 + 4) = iVar9;\n        puVar10 = (undefined4 *)((int)puVar7 + iVar6);\n        do {\n          *puVar7 = 3;\n          puVar7 = puVar7 + 1;\n        } while (puVar10 != puVar7);\n        puVar15 = puVar15 + 0xc;\n        iVar9 = iVar9 + 3;\n      } while (iVar6 != uVar20 << 2);\n    }\n    puVar3 = PTR_DAT_00049208;\n    if (uVar18 != 0) {\n      uVar4 = 0;\n      iVar6 = *(int *)(PTR_DAT_00049208 + -0x59b0);\n      do {\n        uVar18 = FUN_00019404(*(undefined4 *)(iVar6 + uVar4 * 4));\n        uVar8 = *(uint *)(puVar2 + -0x59a8);\n        if (uVar20 != 0) {\n          uVar19 = *(uint *)(puVar3 + -0x5a58);\n          pcVar11 = *(char **)(puVar3 + -0x5af0);\n          uVar12 = 0;\n          do {\n            uVar16 = uVar12 + 1;\n            if (*pcVar11 != '\0') {\n              uVar17 = uVar18;\n              if (param_1 == 0) {\n                if (uVar16 == 0) {\n                  trap(7);\n                }\n                uVar21 = uVar4 % uVar16;\n                if (uVar21 != uVar12) {\nLAB_00019864:\n                  uVar17 = uVar18 + 2;\n                  goto LAB_00019868;\n                }\n                iVar6 = *(int *)(pcVar11 + 8);\n              }\n              else {\n                if (uVar16 == 0) {\n                  trap(7);\n                }\n                uVar21 = ((uVar8 + uVar16) - 1) / uVar16;\n                if (uVar21 == 0) {\n                  trap(7);\n                }\n                uVar21 = uVar4 / uVar21;\n                if (uVar21 != uVar12) goto LAB_00019864;\nLAB_00019868:\n                iVar6 = *(int *)(pcVar11 + 8);\n              }\n              puVar14 = (uint *)(iVar6 + uVar21 * 4);\n              uVar12 = *puVar14;\n              if (uVar12 < uVar17) {\n                *(uint *)(pcVar11 + 4) = (*(int *)(pcVar11 + 4) - uVar12) + uVar17;\n                *puVar14 = uVar17;\n                *pcVar11 = *(uint *)(pcVar11 + 4) < uVar19;\n              }\n            }\n            pcVar11 = pcVar11 + 0xc;\n            uVar12 = uVar16;\n          } while (uVar20 != uVar16);\n        }\n        uVar4 = uVar4 + 1;\n        iVar6 = *(int *)(puVar3 + -0x59b0);\n      } while (uVar4 < uVar8);\n    }\n    if (1 < uVar20) {\n      iVar6 = *(int *)(PTR_DAT_00049208 + -0x5af0) + uVar20 * 0xc;\n      cVar1 = *(char *)(iVar6 + -0xc);\n      while (cVar1 == '\0') {\n        uVar20 = uVar20 - 1;\n        if (uVar20 == 1) {\n          return 1;\n        }\n        cVar1 = *(char *)(iVar6 + -0x18);\n        iVar6 = iVar6 + -0xc;\n      }\n    }\n    return uVar20;\n  }\n  if (uVar20 < uVar4 >> 1) {\n    uVar4 = uVar20 * 2;\n    if (((int)(uVar20 * 0x18) < 0) ||\n       (uVar20 * 3 >> 0x1d != 0 || (uint)(uVar20 * 3 < uVar4) != (int)uVar20 >> 0x1f))\n    goto LAB_000199b4;\n    uVar5 = xrealloc(*(undefined4 *)(PTR_DAT_00049208 + -0x5af0));\n    *(undefined4 *)(puVar2 + -0x5af0) = uVar5;\n  }\n  else {\n    if (((int)(uVar4 * 0xc) < 0) ||\n       (uVar4 * 3 >> 0x1e != 0 || (uint)(uVar4 * 3 < uVar4 * 2) != (int)uVar4 >> 0x1f))\n    goto LAB_000199b4;\n    uVar5 = xrealloc(*(undefined4 *)(PTR_DAT_00049208 + -0x5af0));\n    uVar4 = *(uint *)(puVar2 + -0x5af4);\n    *(undefined4 *)(puVar2 + -0x5af0) = uVar5;\n  }\n  uVar18 = uVar4 - *(int *)(puVar2 + -0x6990);\n  uVar12 = *(int *)(puVar2 + -0x6990) + 1 + uVar4;\n  uVar8 = uVar18 * uVar12;\n  if (uVar4 <= uVar12) {\n    if (uVar18 == 0) {\n      trap(7);\n    }\n    if (((uVar12 == uVar8 / uVar18) && (-1 < (int)((uVar8 >> 1) << 2))) && (-1 < (int)uVar8)) {\n      iVar6 = xmalloc();\n      uVar18 = *(uint *)(puVar2 + -0x6990);\n      if (uVar18 < uVar4) {\n        iVar9 = (uVar18 + 1) * 4;\n        iVar13 = *(int *)(puVar2 + -0x5af0) + uVar18 * 0xc;\n        do {\n          *(int *)(iVar13 + 8) = iVar6;\n          iVar6 = iVar6 + iVar9;\n          iVar9 = iVar9 + 4;\n          iVar13 = iVar13 + 0xc;\n        } while ((uVar4 + 1) * 4 != iVar9);\n      }\n      uVar18 = *(uint *)(puVar2 + -0x59a8);\n      *(uint *)(puVar2 + -0x6990) = uVar4;\n      goto LAB_00019798;\n    }\n  }\nLAB_000199b4:\n                    \n  xalloc_die();\n}" type_identifier (function_declarator "FUN_00019634(int param_1)" identifier (parameter_list "(int param_1)" ( (parameter_declaration "int param_1" primitive_type identifier) ))) (compound_statement "{\n  char cVar1;\n  undefined *puVar2;\n  undefined *puVar3;\n  uint uVar4;\n  undefined4 uVar5;\n  int iVar6;\n  undefined4 *puVar7;\n  uint uVar8;\n  int iVar9;\n  undefined4 *puVar10;\n  char *pcVar11;\n  uint uVar12;\n  int iVar13;\n  uint *puVar14;\n  undefined1 *puVar15;\n  uint uVar16;\n  uint uVar17;\n  uint uVar18;\n  uint uVar19;\n  uint uVar20;\n  uint uVar21;\n  \n  puVar2 = PTR_DAT_00049208;\n  uVar18 = *(uint *)(PTR_DAT_00049208 + -0x59a8);\n  uVar4 = *(uint *)(PTR_DAT_00049208 + -0x5af4);\n  uVar20 = uVar4;\n  if (uVar18 <= uVar4) {\n    uVar20 = uVar18;\n  }\n  if (uVar20 <= *(uint *)(PTR_DAT_00049208 + -0x6990)) {\nLAB_00019798:\n    if (uVar20 != 0) {\n      iVar6 = 0;\n      iVar9 = 3;\n      puVar15 = *(undefined1 **)(PTR_DAT_00049208 + -0x5af0);\n      do {\n        puVar7 = *(undefined4 **)(puVar15 + 8);\n        iVar6 = iVar6 + 4;\n        *puVar15 = 1;\n        *(int *)(puVar15 + 4) = iVar9;\n        puVar10 = (undefined4 *)((int)puVar7 + iVar6);\n        do {\n          *puVar7 = 3;\n          puVar7 = puVar7 + 1;\n        } while (puVar10 != puVar7);\n        puVar15 = puVar15 + 0xc;\n        iVar9 = iVar9 + 3;\n      } while (iVar6 != uVar20 << 2);\n    }\n    puVar3 = PTR_DAT_00049208;\n    if (uVar18 != 0) {\n      uVar4 = 0;\n      iVar6 = *(int *)(PTR_DAT_00049208 + -0x59b0);\n      do {\n        uVar18 = FUN_00019404(*(undefined4 *)(iVar6 + uVar4 * 4));\n        uVar8 = *(uint *)(puVar2 + -0x59a8);\n        if (uVar20 != 0) {\n          uVar19 = *(uint *)(puVar3 + -0x5a58);\n          pcVar11 = *(char **)(puVar3 + -0x5af0);\n          uVar12 = 0;\n          do {\n            uVar16 = uVar12 + 1;\n            if (*pcVar11 != '\0') {\n              uVar17 = uVar18;\n              if (param_1 == 0) {\n                if (uVar16 == 0) {\n                  trap(7);\n                }\n                uVar21 = uVar4 % uVar16;\n                if (uVar21 != uVar12) {\nLAB_00019864:\n                  uVar17 = uVar18 + 2;\n                  goto LAB_00019868;\n                }\n                iVar6 = *(int *)(pcVar11 + 8);\n              }\n              else {\n                if (uVar16 == 0) {\n                  trap(7);\n                }\n                uVar21 = ((uVar8 + uVar16) - 1) / uVar16;\n                if (uVar21 == 0) {\n                  trap(7);\n                }\n                uVar21 = uVar4 / uVar21;\n                if (uVar21 != uVar12) goto LAB_00019864;\nLAB_00019868:\n                iVar6 = *(int *)(pcVar11 + 8);\n              }\n              puVar14 = (uint *)(iVar6 + uVar21 * 4);\n              uVar12 = *puVar14;\n              if (uVar12 < uVar17) {\n                *(uint *)(pcVar11 + 4) = (*(int *)(pcVar11 + 4) - uVar12) + uVar17;\n                *puVar14 = uVar17;\n                *pcVar11 = *(uint *)(pcVar11 + 4) < uVar19;\n              }\n            }\n            pcVar11 = pcVar11 + 0xc;\n            uVar12 = uVar16;\n          } while (uVar20 != uVar16);\n        }\n        uVar4 = uVar4 + 1;\n        iVar6 = *(int *)(puVar3 + -0x59b0);\n      } while (uVar4 < uVar8);\n    }\n    if (1 < uVar20) {\n      iVar6 = *(int *)(PTR_DAT_00049208 + -0x5af0) + uVar20 * 0xc;\n      cVar1 = *(char *)(iVar6 + -0xc);\n      while (cVar1 == '\0') {\n        uVar20 = uVar20 - 1;\n        if (uVar20 == 1) {\n          return 1;\n        }\n        cVar1 = *(char *)(iVar6 + -0x18);\n        iVar6 = iVar6 + -0xc;\n      }\n    }\n    return uVar20;\n  }\n  if (uVar20 < uVar4 >> 1) {\n    uVar4 = uVar20 * 2;\n    if (((int)(uVar20 * 0x18) < 0) ||\n       (uVar20 * 3 >> 0x1d != 0 || (uint)(uVar20 * 3 < uVar4) != (int)uVar20 >> 0x1f))\n    goto LAB_000199b4;\n    uVar5 = xrealloc(*(undefined4 *)(PTR_DAT_00049208 + -0x5af0));\n    *(undefined4 *)(puVar2 + -0x5af0) = uVar5;\n  }\n  else {\n    if (((int)(uVar4 * 0xc) < 0) ||\n       (uVar4 * 3 >> 0x1e != 0 || (uint)(uVar4 * 3 < uVar4 * 2) != (int)uVar4 >> 0x1f))\n    goto LAB_000199b4;\n    uVar5 = xrealloc(*(undefined4 *)(PTR_DAT_00049208 + -0x5af0));\n    uVar4 = *(uint *)(puVar2 + -0x5af4);\n    *(undefined4 *)(puVar2 + -0x5af0) = uVar5;\n  }\n  uVar18 = uVar4 - *(int *)(puVar2 + -0x6990);\n  uVar12 = *(int *)(puVar2 + -0x6990) + 1 + uVar4;\n  uVar8 = uVar18 * uVar12;\n  if (uVar4 <= uVar12) {\n    if (uVar18 == 0) {\n      trap(7);\n    }\n    if (((uVar12 == uVar8 / uVar18) && (-1 < (int)((uVar8 >> 1) << 2))) && (-1 < (int)uVar8)) {\n      iVar6 = xmalloc();\n      uVar18 = *(uint *)(puVar2 + -0x6990);\n      if (uVar18 < uVar4) {\n        iVar9 = (uVar18 + 1) * 4;\n        iVar13 = *(int *)(puVar2 + -0x5af0) + uVar18 * 0xc;\n        do {\n          *(int *)(iVar13 + 8) = iVar6;\n          iVar6 = iVar6 + iVar9;\n          iVar9 = iVar9 + 4;\n          iVar13 = iVar13 + 0xc;\n        } while ((uVar4 + 1) * 4 != iVar9);\n      }\n      uVar18 = *(uint *)(puVar2 + -0x59a8);\n      *(uint *)(puVar2 + -0x6990) = uVar4;\n      goto LAB_00019798;\n    }\n  }\nLAB_000199b4:\n                    \n  xalloc_die();\n}" { (declaration "char cVar1;" primitive_type identifier ;) (declaration "undefined *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "undefined *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "undefined4 uVar5;" type_identifier identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "undefined4 *puVar7;" type_identifier (pointer_declarator "*puVar7" * identifier) ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "int iVar9;" primitive_type identifier ;) (declaration "undefined4 *puVar10;" type_identifier (pointer_declarator "*puVar10" * identifier) ;) (declaration "char *pcVar11;" primitive_type (pointer_declarator "*pcVar11" * identifier) ;) (declaration "uint uVar12;" type_identifier identifier ;) (declaration "int iVar13;" primitive_type identifier ;) (declaration "uint *puVar14;" type_identifier (pointer_declarator "*puVar14" * identifier) ;) (declaration "undefined1 *puVar15;" type_identifier (pointer_declarator "*puVar15" * identifier) ;) (declaration "uint uVar16;" type_identifier identifier ;) (declaration "uint uVar17;" type_identifier identifier ;) (declaration "uint uVar18;" type_identifier identifier ;) (declaration "uint uVar19;" type_identifier identifier ;) (declaration "uint uVar20;" type_identifier identifier ;) (declaration "uint uVar21;" type_identifier identifier ;) (expression_statement "puVar2 = PTR_DAT_00049208;" (assignment_expression "puVar2 = PTR_DAT_00049208" identifier = identifier) ;) (expression_statement "uVar18 = *(uint *)(PTR_DAT_00049208 + -0x59a8);" (assignment_expression "uVar18 = *(uint *)(PTR_DAT_00049208 + -0x59a8)" identifier = (pointer_expression "*(uint *)(PTR_DAT_00049208 + -0x59a8)" * (cast_expression "(uint *)(PTR_DAT_00049208 + -0x59a8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_00049208 + -0x59a8)" ( (binary_expression "PTR_DAT_00049208 + -0x59a8" identifier + number_literal) ))))) ;) (expression_statement "uVar4 = *(uint *)(PTR_DAT_00049208 + -0x5af4);" (assignment_expression "uVar4 = *(uint *)(PTR_DAT_00049208 + -0x5af4)" identifier = (pointer_expression "*(uint *)(PTR_DAT_00049208 + -0x5af4)" * (cast_expression "(uint *)(PTR_DAT_00049208 + -0x5af4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_00049208 + -0x5af4)" ( (binary_expression "PTR_DAT_00049208 + -0x5af4" identifier + number_literal) ))))) ;) (expression_statement "uVar20 = uVar4;" (assignment_expression "uVar20 = uVar4" identifier = identifier) ;) (if_statement "if (uVar18 <= uVar4) {\n    uVar20 = uVar18;\n  }" if (parenthesized_expression "(uVar18 <= uVar4)" ( (binary_expression "uVar18 <= uVar4" identifier <= identifier) )) (compound_statement "{\n    uVar20 = uVar18;\n  }" { (expression_statement "uVar20 = uVar18;" (assignment_expression "uVar20 = uVar18" identifier = identifier) ;) })) (if_statement "if (uVar20 <= *(uint *)(PTR_DAT_00049208 + -0x6990)) {\nLAB_00019798:\n    if (uVar20 != 0) {\n      iVar6 = 0;\n      iVar9 = 3;\n      puVar15 = *(undefined1 **)(PTR_DAT_00049208 + -0x5af0);\n      do {\n        puVar7 = *(undefined4 **)(puVar15 + 8);\n        iVar6 = iVar6 + 4;\n        *puVar15 = 1;\n        *(int *)(puVar15 + 4) = iVar9;\n        puVar10 = (undefined4 *)((int)puVar7 + iVar6);\n        do {\n          *puVar7 = 3;\n          puVar7 = puVar7 + 1;\n        } while (puVar10 != puVar7);\n        puVar15 = puVar15 + 0xc;\n        iVar9 = iVar9 + 3;\n      } while (iVar6 != uVar20 << 2);\n    }\n    puVar3 = PTR_DAT_00049208;\n    if (uVar18 != 0) {\n      uVar4 = 0;\n      iVar6 = *(int *)(PTR_DAT_00049208 + -0x59b0);\n      do {\n        uVar18 = FUN_00019404(*(undefined4 *)(iVar6 + uVar4 * 4));\n        uVar8 = *(uint *)(puVar2 + -0x59a8);\n        if (uVar20 != 0) {\n          uVar19 = *(uint *)(puVar3 + -0x5a58);\n          pcVar11 = *(char **)(puVar3 + -0x5af0);\n          uVar12 = 0;\n          do {\n            uVar16 = uVar12 + 1;\n            if (*pcVar11 != '\0') {\n              uVar17 = uVar18;\n              if (param_1 == 0) {\n                if (uVar16 == 0) {\n                  trap(7);\n                }\n                uVar21 = uVar4 % uVar16;\n                if (uVar21 != uVar12) {\nLAB_00019864:\n                  uVar17 = uVar18 + 2;\n                  goto LAB_00019868;\n                }\n                iVar6 = *(int *)(pcVar11 + 8);\n              }\n              else {\n                if (uVar16 == 0) {\n                  trap(7);\n                }\n                uVar21 = ((uVar8 + uVar16) - 1) / uVar16;\n                if (uVar21 == 0) {\n                  trap(7);\n                }\n                uVar21 = uVar4 / uVar21;\n                if (uVar21 != uVar12) goto LAB_00019864;\nLAB_00019868:\n                iVar6 = *(int *)(pcVar11 + 8);\n              }\n              puVar14 = (uint *)(iVar6 + uVar21 * 4);\n              uVar12 = *puVar14;\n              if (uVar12 < uVar17) {\n                *(uint *)(pcVar11 + 4) = (*(int *)(pcVar11 + 4) - uVar12) + uVar17;\n                *puVar14 = uVar17;\n                *pcVar11 = *(uint *)(pcVar11 + 4) < uVar19;\n              }\n            }\n            pcVar11 = pcVar11 + 0xc;\n            uVar12 = uVar16;\n          } while (uVar20 != uVar16);\n        }\n        uVar4 = uVar4 + 1;\n        iVar6 = *(int *)(puVar3 + -0x59b0);\n      } while (uVar4 < uVar8);\n    }\n    if (1 < uVar20) {\n      iVar6 = *(int *)(PTR_DAT_00049208 + -0x5af0) + uVar20 * 0xc;\n      cVar1 = *(char *)(iVar6 + -0xc);\n      while (cVar1 == '\0') {\n        uVar20 = uVar20 - 1;\n        if (uVar20 == 1) {\n          return 1;\n        }\n        cVar1 = *(char *)(iVar6 + -0x18);\n        iVar6 = iVar6 + -0xc;\n      }\n    }\n    return uVar20;\n  }" if (parenthesized_expression "(uVar20 <= *(uint *)(PTR_DAT_00049208 + -0x6990))" ( (binary_expression "uVar20 <= *(uint *)(PTR_DAT_00049208 + -0x6990)" identifier <= (pointer_expression "*(uint *)(PTR_DAT_00049208 + -0x6990)" * (cast_expression "(uint *)(PTR_DAT_00049208 + -0x6990)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_00049208 + -0x6990)" ( (binary_expression "PTR_DAT_00049208 + -0x6990" identifier + number_literal) ))))) )) (compound_statement "{\nLAB_00019798:\n    if (uVar20 != 0) {\n      iVar6 = 0;\n      iVar9 = 3;\n      puVar15 = *(undefined1 **)(PTR_DAT_00049208 + -0x5af0);\n      do {\n        puVar7 = *(undefined4 **)(puVar15 + 8);\n        iVar6 = iVar6 + 4;\n        *puVar15 = 1;\n        *(int *)(puVar15 + 4) = iVar9;\n        puVar10 = (undefined4 *)((int)puVar7 + iVar6);\n        do {\n          *puVar7 = 3;\n          puVar7 = puVar7 + 1;\n        } while (puVar10 != puVar7);\n        puVar15 = puVar15 + 0xc;\n        iVar9 = iVar9 + 3;\n      } while (iVar6 != uVar20 << 2);\n    }\n    puVar3 = PTR_DAT_00049208;\n    if (uVar18 != 0) {\n      uVar4 = 0;\n      iVar6 = *(int *)(PTR_DAT_00049208 + -0x59b0);\n      do {\n        uVar18 = FUN_00019404(*(undefined4 *)(iVar6 + uVar4 * 4));\n        uVar8 = *(uint *)(puVar2 + -0x59a8);\n        if (uVar20 != 0) {\n          uVar19 = *(uint *)(puVar3 + -0x5a58);\n          pcVar11 = *(char **)(puVar3 + -0x5af0);\n          uVar12 = 0;\n          do {\n            uVar16 = uVar12 + 1;\n            if (*pcVar11 != '\0') {\n              uVar17 = uVar18;\n              if (param_1 == 0) {\n                if (uVar16 == 0) {\n                  trap(7);\n                }\n                uVar21 = uVar4 % uVar16;\n                if (uVar21 != uVar12) {\nLAB_00019864:\n                  uVar17 = uVar18 + 2;\n                  goto LAB_00019868;\n                }\n                iVar6 = *(int *)(pcVar11 + 8);\n              }\n              else {\n                if (uVar16 == 0) {\n                  trap(7);\n                }\n                uVar21 = ((uVar8 + uVar16) - 1) / uVar16;\n                if (uVar21 == 0) {\n                  trap(7);\n                }\n                uVar21 = uVar4 / uVar21;\n                if (uVar21 != uVar12) goto LAB_00019864;\nLAB_00019868:\n                iVar6 = *(int *)(pcVar11 + 8);\n              }\n              puVar14 = (uint *)(iVar6 + uVar21 * 4);\n              uVar12 = *puVar14;\n              if (uVar12 < uVar17) {\n                *(uint *)(pcVar11 + 4) = (*(int *)(pcVar11 + 4) - uVar12) + uVar17;\n                *puVar14 = uVar17;\n                *pcVar11 = *(uint *)(pcVar11 + 4) < uVar19;\n              }\n            }\n            pcVar11 = pcVar11 + 0xc;\n            uVar12 = uVar16;\n          } while (uVar20 != uVar16);\n        }\n        uVar4 = uVar4 + 1;\n        iVar6 = *(int *)(puVar3 + -0x59b0);\n      } while (uVar4 < uVar8);\n    }\n    if (1 < uVar20) {\n      iVar6 = *(int *)(PTR_DAT_00049208 + -0x5af0) + uVar20 * 0xc;\n      cVar1 = *(char *)(iVar6 + -0xc);\n      while (cVar1 == '\0') {\n        uVar20 = uVar20 - 1;\n        if (uVar20 == 1) {\n          return 1;\n        }\n        cVar1 = *(char *)(iVar6 + -0x18);\n        iVar6 = iVar6 + -0xc;\n      }\n    }\n    return uVar20;\n  }" { (labeled_statement "LAB_00019798:\n    if (uVar20 != 0) {\n      iVar6 = 0;\n      iVar9 = 3;\n      puVar15 = *(undefined1 **)(PTR_DAT_00049208 + -0x5af0);\n      do {\n        puVar7 = *(undefined4 **)(puVar15 + 8);\n        iVar6 = iVar6 + 4;\n        *puVar15 = 1;\n        *(int *)(puVar15 + 4) = iVar9;\n        puVar10 = (undefined4 *)((int)puVar7 + iVar6);\n        do {\n          *puVar7 = 3;\n          puVar7 = puVar7 + 1;\n        } while (puVar10 != puVar7);\n        puVar15 = puVar15 + 0xc;\n        iVar9 = iVar9 + 3;\n      } while (iVar6 != uVar20 << 2);\n    }" statement_identifier : (if_statement "if (uVar20 != 0) {\n      iVar6 = 0;\n      iVar9 = 3;\n      puVar15 = *(undefined1 **)(PTR_DAT_00049208 + -0x5af0);\n      do {\n        puVar7 = *(undefined4 **)(puVar15 + 8);\n        iVar6 = iVar6 + 4;\n        *puVar15 = 1;\n        *(int *)(puVar15 + 4) = iVar9;\n        puVar10 = (undefined4 *)((int)puVar7 + iVar6);\n        do {\n          *puVar7 = 3;\n          puVar7 = puVar7 + 1;\n        } while (puVar10 != puVar7);\n        puVar15 = puVar15 + 0xc;\n        iVar9 = iVar9 + 3;\n      } while (iVar6 != uVar20 << 2);\n    }" if (parenthesized_expression "(uVar20 != 0)" ( (binary_expression "uVar20 != 0" identifier != number_literal) )) (compound_statement "{\n      iVar6 = 0;\n      iVar9 = 3;\n      puVar15 = *(undefined1 **)(PTR_DAT_00049208 + -0x5af0);\n      do {\n        puVar7 = *(undefined4 **)(puVar15 + 8);\n        iVar6 = iVar6 + 4;\n        *puVar15 = 1;\n        *(int *)(puVar15 + 4) = iVar9;\n        puVar10 = (undefined4 *)((int)puVar7 + iVar6);\n        do {\n          *puVar7 = 3;\n          puVar7 = puVar7 + 1;\n        } while (puVar10 != puVar7);\n        puVar15 = puVar15 + 0xc;\n        iVar9 = iVar9 + 3;\n      } while (iVar6 != uVar20 << 2);\n    }" { (expression_statement "iVar6 = 0;" (assignment_expression "iVar6 = 0" identifier = number_literal) ;) (expression_statement "iVar9 = 3;" (assignment_expression "iVar9 = 3" identifier = number_literal) ;) (expression_statement "puVar15 = *(undefined1 **)(PTR_DAT_00049208 + -0x5af0);" (assignment_expression "puVar15 = *(undefined1 **)(PTR_DAT_00049208 + -0x5af0)" identifier = (pointer_expression "*(undefined1 **)(PTR_DAT_00049208 + -0x5af0)" * (cast_expression "(undefined1 **)(PTR_DAT_00049208 + -0x5af0)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(PTR_DAT_00049208 + -0x5af0)" ( (binary_expression "PTR_DAT_00049208 + -0x5af0" identifier + number_literal) ))))) ;) (do_statement "do {\n        puVar7 = *(undefined4 **)(puVar15 + 8);\n        iVar6 = iVar6 + 4;\n        *puVar15 = 1;\n        *(int *)(puVar15 + 4) = iVar9;\n        puVar10 = (undefined4 *)((int)puVar7 + iVar6);\n        do {\n          *puVar7 = 3;\n          puVar7 = puVar7 + 1;\n        } while (puVar10 != puVar7);\n        puVar15 = puVar15 + 0xc;\n        iVar9 = iVar9 + 3;\n      } while (iVar6 != uVar20 << 2);" do (compound_statement "{\n        puVar7 = *(undefined4 **)(puVar15 + 8);\n        iVar6 = iVar6 + 4;\n        *puVar15 = 1;\n        *(int *)(puVar15 + 4) = iVar9;\n        puVar10 = (undefined4 *)((int)puVar7 + iVar6);\n        do {\n          *puVar7 = 3;\n          puVar7 = puVar7 + 1;\n        } while (puVar10 != puVar7);\n        puVar15 = puVar15 + 0xc;\n        iVar9 = iVar9 + 3;\n      }" { (expression_statement "puVar7 = *(undefined4 **)(puVar15 + 8);" (assignment_expression "puVar7 = *(undefined4 **)(puVar15 + 8)" identifier = (pointer_expression "*(undefined4 **)(puVar15 + 8)" * (cast_expression "(undefined4 **)(puVar15 + 8)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar15 + 8)" ( (binary_expression "puVar15 + 8" identifier + number_literal) ))))) ;) (expression_statement "iVar6 = iVar6 + 4;" (assignment_expression "iVar6 = iVar6 + 4" identifier = (binary_expression "iVar6 + 4" identifier + number_literal)) ;) (expression_statement "*puVar15 = 1;" (assignment_expression "*puVar15 = 1" (pointer_expression "*puVar15" * identifier) = number_literal) ;) (expression_statement "*(int *)(puVar15 + 4) = iVar9;" (assignment_expression "*(int *)(puVar15 + 4) = iVar9" (pointer_expression "*(int *)(puVar15 + 4)" * (cast_expression "(int *)(puVar15 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar15 + 4)" ( (binary_expression "puVar15 + 4" identifier + number_literal) )))) = identifier) ;) (expression_statement "puVar10 = (undefined4 *)((int)puVar7 + iVar6);" (assignment_expression "puVar10 = (undefined4 *)((int)puVar7 + iVar6)" identifier = (cast_expression "(undefined4 *)((int)puVar7 + iVar6)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar7 + iVar6)" ( (binary_expression "(int)puVar7 + iVar6" (cast_expression "(int)puVar7" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) (do_statement "do {\n          *puVar7 = 3;\n          puVar7 = puVar7 + 1;\n        } while (puVar10 != puVar7);" do (compound_statement "{\n          *puVar7 = 3;\n          puVar7 = puVar7 + 1;\n        }" { (expression_statement "*puVar7 = 3;" (assignment_expression "*puVar7 = 3" (pointer_expression "*puVar7" * identifier) = number_literal) ;) (expression_statement "puVar7 = puVar7 + 1;" (assignment_expression "puVar7 = puVar7 + 1" identifier = (binary_expression "puVar7 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(puVar10 != puVar7)" ( (binary_expression "puVar10 != puVar7" identifier != identifier) )) ;) (expression_statement "puVar15 = puVar15 + 0xc;" (assignment_expression "puVar15 = puVar15 + 0xc" identifier = (binary_expression "puVar15 + 0xc" identifier + number_literal)) ;) (expression_statement "iVar9 = iVar9 + 3;" (assignment_expression "iVar9 = iVar9 + 3" identifier = (binary_expression "iVar9 + 3" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar6 != uVar20 << 2)" ( (binary_expression "iVar6 != uVar20 << 2" identifier != (binary_expression "uVar20 << 2" identifier << number_literal)) )) ;) }))) (expression_statement "puVar3 = PTR_DAT_00049208;" (assignment_expression "puVar3 = PTR_DAT_00049208" identifier = identifier) ;) (if_statement "if (uVar18 != 0) {\n      uVar4 = 0;\n      iVar6 = *(int *)(PTR_DAT_00049208 + -0x59b0);\n      do {\n        uVar18 = FUN_00019404(*(undefined4 *)(iVar6 + uVar4 * 4));\n        uVar8 = *(uint *)(puVar2 + -0x59a8);\n        if (uVar20 != 0) {\n          uVar19 = *(uint *)(puVar3 + -0x5a58);\n          pcVar11 = *(char **)(puVar3 + -0x5af0);\n          uVar12 = 0;\n          do {\n            uVar16 = uVar12 + 1;\n            if (*pcVar11 != '\0') {\n              uVar17 = uVar18;\n              if (param_1 == 0) {\n                if (uVar16 == 0) {\n                  trap(7);\n                }\n                uVar21 = uVar4 % uVar16;\n                if (uVar21 != uVar12) {\nLAB_00019864:\n                  uVar17 = uVar18 + 2;\n                  goto LAB_00019868;\n                }\n                iVar6 = *(int *)(pcVar11 + 8);\n              }\n              else {\n                if (uVar16 == 0) {\n                  trap(7);\n                }\n                uVar21 = ((uVar8 + uVar16) - 1) / uVar16;\n                if (uVar21 == 0) {\n                  trap(7);\n                }\n                uVar21 = uVar4 / uVar21;\n                if (uVar21 != uVar12) goto LAB_00019864;\nLAB_00019868:\n                iVar6 = *(int *)(pcVar11 + 8);\n              }\n              puVar14 = (uint *)(iVar6 + uVar21 * 4);\n              uVar12 = *puVar14;\n              if (uVar12 < uVar17) {\n                *(uint *)(pcVar11 + 4) = (*(int *)(pcVar11 + 4) - uVar12) + uVar17;\n                *puVar14 = uVar17;\n                *pcVar11 = *(uint *)(pcVar11 + 4) < uVar19;\n              }\n            }\n            pcVar11 = pcVar11 + 0xc;\n            uVar12 = uVar16;\n          } while (uVar20 != uVar16);\n        }\n        uVar4 = uVar4 + 1;\n        iVar6 = *(int *)(puVar3 + -0x59b0);\n      } while (uVar4 < uVar8);\n    }" if (parenthesized_expression "(uVar18 != 0)" ( (binary_expression "uVar18 != 0" identifier != number_literal) )) (compound_statement "{\n      uVar4 = 0;\n      iVar6 = *(int *)(PTR_DAT_00049208 + -0x59b0);\n      do {\n        uVar18 = FUN_00019404(*(undefined4 *)(iVar6 + uVar4 * 4));\n        uVar8 = *(uint *)(puVar2 + -0x59a8);\n        if (uVar20 != 0) {\n          uVar19 = *(uint *)(puVar3 + -0x5a58);\n          pcVar11 = *(char **)(puVar3 + -0x5af0);\n          uVar12 = 0;\n          do {\n            uVar16 = uVar12 + 1;\n            if (*pcVar11 != '\0') {\n              uVar17 = uVar18;\n              if (param_1 == 0) {\n                if (uVar16 == 0) {\n                  trap(7);\n                }\n                uVar21 = uVar4 % uVar16;\n                if (uVar21 != uVar12) {\nLAB_00019864:\n                  uVar17 = uVar18 + 2;\n                  goto LAB_00019868;\n                }\n                iVar6 = *(int *)(pcVar11 + 8);\n              }\n              else {\n                if (uVar16 == 0) {\n                  trap(7);\n                }\n                uVar21 = ((uVar8 + uVar16) - 1) / uVar16;\n                if (uVar21 == 0) {\n                  trap(7);\n                }\n                uVar21 = uVar4 / uVar21;\n                if (uVar21 != uVar12) goto LAB_00019864;\nLAB_00019868:\n                iVar6 = *(int *)(pcVar11 + 8);\n              }\n              puVar14 = (uint *)(iVar6 + uVar21 * 4);\n              uVar12 = *puVar14;\n              if (uVar12 < uVar17) {\n                *(uint *)(pcVar11 + 4) = (*(int *)(pcVar11 + 4) - uVar12) + uVar17;\n                *puVar14 = uVar17;\n                *pcVar11 = *(uint *)(pcVar11 + 4) < uVar19;\n              }\n            }\n            pcVar11 = pcVar11 + 0xc;\n            uVar12 = uVar16;\n          } while (uVar20 != uVar16);\n        }\n        uVar4 = uVar4 + 1;\n        iVar6 = *(int *)(puVar3 + -0x59b0);\n      } while (uVar4 < uVar8);\n    }" { (expression_statement "uVar4 = 0;" (assignment_expression "uVar4 = 0" identifier = number_literal) ;) (expression_statement "iVar6 = *(int *)(PTR_DAT_00049208 + -0x59b0);" (assignment_expression "iVar6 = *(int *)(PTR_DAT_00049208 + -0x59b0)" identifier = (pointer_expression "*(int *)(PTR_DAT_00049208 + -0x59b0)" * (cast_expression "(int *)(PTR_DAT_00049208 + -0x59b0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_00049208 + -0x59b0)" ( (binary_expression "PTR_DAT_00049208 + -0x59b0" identifier + number_literal) ))))) ;) (do_statement "do {\n        uVar18 = FUN_00019404(*(undefined4 *)(iVar6 + uVar4 * 4));\n        uVar8 = *(uint *)(puVar2 + -0x59a8);\n        if (uVar20 != 0) {\n          uVar19 = *(uint *)(puVar3 + -0x5a58);\n          pcVar11 = *(char **)(puVar3 + -0x5af0);\n          uVar12 = 0;\n          do {\n            uVar16 = uVar12 + 1;\n            if (*pcVar11 != '\0') {\n              uVar17 = uVar18;\n              if (param_1 == 0) {\n                if (uVar16 == 0) {\n                  trap(7);\n                }\n                uVar21 = uVar4 % uVar16;\n                if (uVar21 != uVar12) {\nLAB_00019864:\n                  uVar17 = uVar18 + 2;\n                  goto LAB_00019868;\n                }\n                iVar6 = *(int *)(pcVar11 + 8);\n              }\n              else {\n                if (uVar16 == 0) {\n                  trap(7);\n                }\n                uVar21 = ((uVar8 + uVar16) - 1) / uVar16;\n                if (uVar21 == 0) {\n                  trap(7);\n                }\n                uVar21 = uVar4 / uVar21;\n                if (uVar21 != uVar12) goto LAB_00019864;\nLAB_00019868:\n                iVar6 = *(int *)(pcVar11 + 8);\n              }\n              puVar14 = (uint *)(iVar6 + uVar21 * 4);\n              uVar12 = *puVar14;\n              if (uVar12 < uVar17) {\n                *(uint *)(pcVar11 + 4) = (*(int *)(pcVar11 + 4) - uVar12) + uVar17;\n                *puVar14 = uVar17;\n                *pcVar11 = *(uint *)(pcVar11 + 4) < uVar19;\n              }\n            }\n            pcVar11 = pcVar11 + 0xc;\n            uVar12 = uVar16;\n          } while (uVar20 != uVar16);\n        }\n        uVar4 = uVar4 + 1;\n        iVar6 = *(int *)(puVar3 + -0x59b0);\n      } while (uVar4 < uVar8);" do (compound_statement "{\n        uVar18 = FUN_00019404(*(undefined4 *)(iVar6 + uVar4 * 4));\n        uVar8 = *(uint *)(puVar2 + -0x59a8);\n        if (uVar20 != 0) {\n          uVar19 = *(uint *)(puVar3 + -0x5a58);\n          pcVar11 = *(char **)(puVar3 + -0x5af0);\n          uVar12 = 0;\n          do {\n            uVar16 = uVar12 + 1;\n            if (*pcVar11 != '\0') {\n              uVar17 = uVar18;\n              if (param_1 == 0) {\n                if (uVar16 == 0) {\n                  trap(7);\n                }\n                uVar21 = uVar4 % uVar16;\n                if (uVar21 != uVar12) {\nLAB_00019864:\n                  uVar17 = uVar18 + 2;\n                  goto LAB_00019868;\n                }\n                iVar6 = *(int *)(pcVar11 + 8);\n              }\n              else {\n                if (uVar16 == 0) {\n                  trap(7);\n                }\n                uVar21 = ((uVar8 + uVar16) - 1) / uVar16;\n                if (uVar21 == 0) {\n                  trap(7);\n                }\n                uVar21 = uVar4 / uVar21;\n                if (uVar21 != uVar12) goto LAB_00019864;\nLAB_00019868:\n                iVar6 = *(int *)(pcVar11 + 8);\n              }\n              puVar14 = (uint *)(iVar6 + uVar21 * 4);\n              uVar12 = *puVar14;\n              if (uVar12 < uVar17) {\n                *(uint *)(pcVar11 + 4) = (*(int *)(pcVar11 + 4) - uVar12) + uVar17;\n                *puVar14 = uVar17;\n                *pcVar11 = *(uint *)(pcVar11 + 4) < uVar19;\n              }\n            }\n            pcVar11 = pcVar11 + 0xc;\n            uVar12 = uVar16;\n          } while (uVar20 != uVar16);\n        }\n        uVar4 = uVar4 + 1;\n        iVar6 = *(int *)(puVar3 + -0x59b0);\n      }" { (expression_statement "uVar18 = FUN_00019404(*(undefined4 *)(iVar6 + uVar4 * 4));" (assignment_expression "uVar18 = FUN_00019404(*(undefined4 *)(iVar6 + uVar4 * 4))" identifier = (call_expression "FUN_00019404(*(undefined4 *)(iVar6 + uVar4 * 4))" identifier (argument_list "(*(undefined4 *)(iVar6 + uVar4 * 4))" ( (pointer_expression "*(undefined4 *)(iVar6 + uVar4 * 4)" * (cast_expression "(undefined4 *)(iVar6 + uVar4 * 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + uVar4 * 4)" ( (binary_expression "iVar6 + uVar4 * 4" identifier + (binary_expression "uVar4 * 4" identifier * number_literal)) )))) )))) ;) (expression_statement "uVar8 = *(uint *)(puVar2 + -0x59a8);" (assignment_expression "uVar8 = *(uint *)(puVar2 + -0x59a8)" identifier = (pointer_expression "*(uint *)(puVar2 + -0x59a8)" * (cast_expression "(uint *)(puVar2 + -0x59a8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + -0x59a8)" ( (binary_expression "puVar2 + -0x59a8" identifier + number_literal) ))))) ;) (if_statement "if (uVar20 != 0) {\n          uVar19 = *(uint *)(puVar3 + -0x5a58);\n          pcVar11 = *(char **)(puVar3 + -0x5af0);\n          uVar12 = 0;\n          do {\n            uVar16 = uVar12 + 1;\n            if (*pcVar11 != '\0') {\n              uVar17 = uVar18;\n              if (param_1 == 0) {\n                if (uVar16 == 0) {\n                  trap(7);\n                }\n                uVar21 = uVar4 % uVar16;\n                if (uVar21 != uVar12) {\nLAB_00019864:\n                  uVar17 = uVar18 + 2;\n                  goto LAB_00019868;\n                }\n                iVar6 = *(int *)(pcVar11 + 8);\n              }\n              else {\n                if (uVar16 == 0) {\n                  trap(7);\n                }\n                uVar21 = ((uVar8 + uVar16) - 1) / uVar16;\n                if (uVar21 == 0) {\n                  trap(7);\n                }\n                uVar21 = uVar4 / uVar21;\n                if (uVar21 != uVar12) goto LAB_00019864;\nLAB_00019868:\n                iVar6 = *(int *)(pcVar11 + 8);\n              }\n              puVar14 = (uint *)(iVar6 + uVar21 * 4);\n              uVar12 = *puVar14;\n              if (uVar12 < uVar17) {\n                *(uint *)(pcVar11 + 4) = (*(int *)(pcVar11 + 4) - uVar12) + uVar17;\n                *puVar14 = uVar17;\n                *pcVar11 = *(uint *)(pcVar11 + 4) < uVar19;\n              }\n            }\n            pcVar11 = pcVar11 + 0xc;\n            uVar12 = uVar16;\n          } while (uVar20 != uVar16);\n        }" if (parenthesized_expression "(uVar20 != 0)" ( (binary_expression "uVar20 != 0" identifier != number_literal) )) (compound_statement "{\n          uVar19 = *(uint *)(puVar3 + -0x5a58);\n          pcVar11 = *(char **)(puVar3 + -0x5af0);\n          uVar12 = 0;\n          do {\n            uVar16 = uVar12 + 1;\n            if (*pcVar11 != '\0') {\n              uVar17 = uVar18;\n              if (param_1 == 0) {\n                if (uVar16 == 0) {\n                  trap(7);\n                }\n                uVar21 = uVar4 % uVar16;\n                if (uVar21 != uVar12) {\nLAB_00019864:\n                  uVar17 = uVar18 + 2;\n                  goto LAB_00019868;\n                }\n                iVar6 = *(int *)(pcVar11 + 8);\n              }\n              else {\n                if (uVar16 == 0) {\n                  trap(7);\n                }\n                uVar21 = ((uVar8 + uVar16) - 1) / uVar16;\n                if (uVar21 == 0) {\n                  trap(7);\n                }\n                uVar21 = uVar4 / uVar21;\n                if (uVar21 != uVar12) goto LAB_00019864;\nLAB_00019868:\n                iVar6 = *(int *)(pcVar11 + 8);\n              }\n              puVar14 = (uint *)(iVar6 + uVar21 * 4);\n              uVar12 = *puVar14;\n              if (uVar12 < uVar17) {\n                *(uint *)(pcVar11 + 4) = (*(int *)(pcVar11 + 4) - uVar12) + uVar17;\n                *puVar14 = uVar17;\n                *pcVar11 = *(uint *)(pcVar11 + 4) < uVar19;\n              }\n            }\n            pcVar11 = pcVar11 + 0xc;\n            uVar12 = uVar16;\n          } while (uVar20 != uVar16);\n        }" { (expression_statement "uVar19 = *(uint *)(puVar3 + -0x5a58);" (assignment_expression "uVar19 = *(uint *)(puVar3 + -0x5a58)" identifier = (pointer_expression "*(uint *)(puVar3 + -0x5a58)" * (cast_expression "(uint *)(puVar3 + -0x5a58)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + -0x5a58)" ( (binary_expression "puVar3 + -0x5a58" identifier + number_literal) ))))) ;) (expression_statement "pcVar11 = *(char **)(puVar3 + -0x5af0);" (assignment_expression "pcVar11 = *(char **)(puVar3 + -0x5af0)" identifier = (pointer_expression "*(char **)(puVar3 + -0x5af0)" * (cast_expression "(char **)(puVar3 + -0x5af0)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar3 + -0x5af0)" ( (binary_expression "puVar3 + -0x5af0" identifier + number_literal) ))))) ;) (expression_statement "uVar12 = 0;" (assignment_expression "uVar12 = 0" identifier = number_literal) ;) (do_statement "do {\n            uVar16 = uVar12 + 1;\n            if (*pcVar11 != '\0') {\n              uVar17 = uVar18;\n              if (param_1 == 0) {\n                if (uVar16 == 0) {\n                  trap(7);\n                }\n                uVar21 = uVar4 % uVar16;\n                if (uVar21 != uVar12) {\nLAB_00019864:\n                  uVar17 = uVar18 + 2;\n                  goto LAB_00019868;\n                }\n                iVar6 = *(int *)(pcVar11 + 8);\n              }\n              else {\n                if (uVar16 == 0) {\n                  trap(7);\n                }\n                uVar21 = ((uVar8 + uVar16) - 1) / uVar16;\n                if (uVar21 == 0) {\n                  trap(7);\n                }\n                uVar21 = uVar4 / uVar21;\n                if (uVar21 != uVar12) goto LAB_00019864;\nLAB_00019868:\n                iVar6 = *(int *)(pcVar11 + 8);\n              }\n              puVar14 = (uint *)(iVar6 + uVar21 * 4);\n              uVar12 = *puVar14;\n              if (uVar12 < uVar17) {\n                *(uint *)(pcVar11 + 4) = (*(int *)(pcVar11 + 4) - uVar12) + uVar17;\n                *puVar14 = uVar17;\n                *pcVar11 = *(uint *)(pcVar11 + 4) < uVar19;\n              }\n            }\n            pcVar11 = pcVar11 + 0xc;\n            uVar12 = uVar16;\n          } while (uVar20 != uVar16);" do (compound_statement "{\n            uVar16 = uVar12 + 1;\n            if (*pcVar11 != '\0') {\n              uVar17 = uVar18;\n              if (param_1 == 0) {\n                if (uVar16 == 0) {\n                  trap(7);\n                }\n                uVar21 = uVar4 % uVar16;\n                if (uVar21 != uVar12) {\nLAB_00019864:\n                  uVar17 = uVar18 + 2;\n                  goto LAB_00019868;\n                }\n                iVar6 = *(int *)(pcVar11 + 8);\n              }\n              else {\n                if (uVar16 == 0) {\n                  trap(7);\n                }\n                uVar21 = ((uVar8 + uVar16) - 1) / uVar16;\n                if (uVar21 == 0) {\n                  trap(7);\n                }\n                uVar21 = uVar4 / uVar21;\n                if (uVar21 != uVar12) goto LAB_00019864;\nLAB_00019868:\n                iVar6 = *(int *)(pcVar11 + 8);\n              }\n              puVar14 = (uint *)(iVar6 + uVar21 * 4);\n              uVar12 = *puVar14;\n              if (uVar12 < uVar17) {\n                *(uint *)(pcVar11 + 4) = (*(int *)(pcVar11 + 4) - uVar12) + uVar17;\n                *puVar14 = uVar17;\n                *pcVar11 = *(uint *)(pcVar11 + 4) < uVar19;\n              }\n            }\n            pcVar11 = pcVar11 + 0xc;\n            uVar12 = uVar16;\n          }" { (expression_statement "uVar16 = uVar12 + 1;" (assignment_expression "uVar16 = uVar12 + 1" identifier = (binary_expression "uVar12 + 1" identifier + number_literal)) ;) (if_statement "if (*pcVar11 != '\0') {\n              uVar17 = uVar18;\n              if (param_1 == 0) {\n                if (uVar16 == 0) {\n                  trap(7);\n                }\n                uVar21 = uVar4 % uVar16;\n                if (uVar21 != uVar12) {\nLAB_00019864:\n                  uVar17 = uVar18 + 2;\n                  goto LAB_00019868;\n                }\n                iVar6 = *(int *)(pcVar11 + 8);\n              }\n              else {\n                if (uVar16 == 0) {\n                  trap(7);\n                }\n                uVar21 = ((uVar8 + uVar16) - 1) / uVar16;\n                if (uVar21 == 0) {\n                  trap(7);\n                }\n                uVar21 = uVar4 / uVar21;\n                if (uVar21 != uVar12) goto LAB_00019864;\nLAB_00019868:\n                iVar6 = *(int *)(pcVar11 + 8);\n              }\n              puVar14 = (uint *)(iVar6 + uVar21 * 4);\n              uVar12 = *puVar14;\n              if (uVar12 < uVar17) {\n                *(uint *)(pcVar11 + 4) = (*(int *)(pcVar11 + 4) - uVar12) + uVar17;\n                *puVar14 = uVar17;\n                *pcVar11 = *(uint *)(pcVar11 + 4) < uVar19;\n              }\n            }" if (parenthesized_expression "(*pcVar11 != '\0')" ( (binary_expression "*pcVar11 != '\0'" (pointer_expression "*pcVar11" * identifier) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n              uVar17 = uVar18;\n              if (param_1 == 0) {\n                if (uVar16 == 0) {\n                  trap(7);\n                }\n                uVar21 = uVar4 % uVar16;\n                if (uVar21 != uVar12) {\nLAB_00019864:\n                  uVar17 = uVar18 + 2;\n                  goto LAB_00019868;\n                }\n                iVar6 = *(int *)(pcVar11 + 8);\n              }\n              else {\n                if (uVar16 == 0) {\n                  trap(7);\n                }\n                uVar21 = ((uVar8 + uVar16) - 1) / uVar16;\n                if (uVar21 == 0) {\n                  trap(7);\n                }\n                uVar21 = uVar4 / uVar21;\n                if (uVar21 != uVar12) goto LAB_00019864;\nLAB_00019868:\n                iVar6 = *(int *)(pcVar11 + 8);\n              }\n              puVar14 = (uint *)(iVar6 + uVar21 * 4);\n              uVar12 = *puVar14;\n              if (uVar12 < uVar17) {\n                *(uint *)(pcVar11 + 4) = (*(int *)(pcVar11 + 4) - uVar12) + uVar17;\n                *puVar14 = uVar17;\n                *pcVar11 = *(uint *)(pcVar11 + 4) < uVar19;\n              }\n            }" { (expression_statement "uVar17 = uVar18;" (assignment_expression "uVar17 = uVar18" identifier = identifier) ;) (if_statement "if (param_1 == 0) {\n                if (uVar16 == 0) {\n                  trap(7);\n                }\n                uVar21 = uVar4 % uVar16;\n                if (uVar21 != uVar12) {\nLAB_00019864:\n                  uVar17 = uVar18 + 2;\n                  goto LAB_00019868;\n                }\n                iVar6 = *(int *)(pcVar11 + 8);\n              }\n              else {\n                if (uVar16 == 0) {\n                  trap(7);\n                }\n                uVar21 = ((uVar8 + uVar16) - 1) / uVar16;\n                if (uVar21 == 0) {\n                  trap(7);\n                }\n                uVar21 = uVar4 / uVar21;\n                if (uVar21 != uVar12) goto LAB_00019864;\nLAB_00019868:\n                iVar6 = *(int *)(pcVar11 + 8);\n              }" if (parenthesized_expression "(param_1 == 0)" ( (binary_expression "param_1 == 0" identifier == number_literal) )) (compound_statement "{\n                if (uVar16 == 0) {\n                  trap(7);\n                }\n                uVar21 = uVar4 % uVar16;\n                if (uVar21 != uVar12) {\nLAB_00019864:\n                  uVar17 = uVar18 + 2;\n                  goto LAB_00019868;\n                }\n                iVar6 = *(int *)(pcVar11 + 8);\n              }" { (if_statement "if (uVar16 == 0) {\n                  trap(7);\n                }" if (parenthesized_expression "(uVar16 == 0)" ( (binary_expression "uVar16 == 0" identifier == number_literal) )) (compound_statement "{\n                  trap(7);\n                }" { (expression_statement "trap(7);" (call_expression "trap(7)" identifier (argument_list "(7)" ( number_literal ))) ;) })) (expression_statement "uVar21 = uVar4 % uVar16;" (assignment_expression "uVar21 = uVar4 % uVar16" identifier = (binary_expression "uVar4 % uVar16" identifier % identifier)) ;) (if_statement "if (uVar21 != uVar12) {\nLAB_00019864:\n                  uVar17 = uVar18 + 2;\n                  goto LAB_00019868;\n                }" if (parenthesized_expression "(uVar21 != uVar12)" ( (binary_expression "uVar21 != uVar12" identifier != identifier) )) (compound_statement "{\nLAB_00019864:\n                  uVar17 = uVar18 + 2;\n                  goto LAB_00019868;\n                }" { (labeled_statement "LAB_00019864:\n                  uVar17 = uVar18 + 2;" statement_identifier : (expression_statement "uVar17 = uVar18 + 2;" (assignment_expression "uVar17 = uVar18 + 2" identifier = (binary_expression "uVar18 + 2" identifier + number_literal)) ;)) (goto_statement "goto LAB_00019868;" goto statement_identifier ;) })) (expression_statement "iVar6 = *(int *)(pcVar11 + 8);" (assignment_expression "iVar6 = *(int *)(pcVar11 + 8)" identifier = (pointer_expression "*(int *)(pcVar11 + 8)" * (cast_expression "(int *)(pcVar11 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar11 + 8)" ( (binary_expression "pcVar11 + 8" identifier + number_literal) ))))) ;) }) (else_clause "else {\n                if (uVar16 == 0) {\n                  trap(7);\n                }\n                uVar21 = ((uVar8 + uVar16) - 1) / uVar16;\n                if (uVar21 == 0) {\n                  trap(7);\n                }\n                uVar21 = uVar4 / uVar21;\n                if (uVar21 != uVar12) goto LAB_00019864;\nLAB_00019868:\n                iVar6 = *(int *)(pcVar11 + 8);\n              }" else (compound_statement "{\n                if (uVar16 == 0) {\n                  trap(7);\n                }\n                uVar21 = ((uVar8 + uVar16) - 1) / uVar16;\n                if (uVar21 == 0) {\n                  trap(7);\n                }\n                uVar21 = uVar4 / uVar21;\n                if (uVar21 != uVar12) goto LAB_00019864;\nLAB_00019868:\n                iVar6 = *(int *)(pcVar11 + 8);\n              }" { (if_statement "if (uVar16 == 0) {\n                  trap(7);\n                }" if (parenthesized_expression "(uVar16 == 0)" ( (binary_expression "uVar16 == 0" identifier == number_literal) )) (compound_statement "{\n                  trap(7);\n                }" { (expression_statement "trap(7);" (call_expression "trap(7)" identifier (argument_list "(7)" ( number_literal ))) ;) })) (expression_statement "uVar21 = ((uVar8 + uVar16) - 1) / uVar16;" (assignment_expression "uVar21 = ((uVar8 + uVar16) - 1) / uVar16" identifier = (binary_expression "((uVar8 + uVar16) - 1) / uVar16" (parenthesized_expression "((uVar8 + uVar16) - 1)" ( (binary_expression "(uVar8 + uVar16) - 1" (parenthesized_expression "(uVar8 + uVar16)" ( (binary_expression "uVar8 + uVar16" identifier + identifier) )) - number_literal) )) / identifier)) ;) (if_statement "if (uVar21 == 0) {\n                  trap(7);\n                }" if (parenthesized_expression "(uVar21 == 0)" ( (binary_expression "uVar21 == 0" identifier == number_literal) )) (compound_statement "{\n                  trap(7);\n                }" { (expression_statement "trap(7);" (call_expression "trap(7)" identifier (argument_list "(7)" ( number_literal ))) ;) })) (expression_statement "uVar21 = uVar4 / uVar21;" (assignment_expression "uVar21 = uVar4 / uVar21" identifier = (binary_expression "uVar4 / uVar21" identifier / identifier)) ;) (if_statement "if (uVar21 != uVar12) goto LAB_00019864;" if (parenthesized_expression "(uVar21 != uVar12)" ( (binary_expression "uVar21 != uVar12" identifier != identifier) )) (goto_statement "goto LAB_00019864;" goto statement_identifier ;)) (labeled_statement "LAB_00019868:\n                iVar6 = *(int *)(pcVar11 + 8);" statement_identifier : (expression_statement "iVar6 = *(int *)(pcVar11 + 8);" (assignment_expression "iVar6 = *(int *)(pcVar11 + 8)" identifier = (pointer_expression "*(int *)(pcVar11 + 8)" * (cast_expression "(int *)(pcVar11 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar11 + 8)" ( (binary_expression "pcVar11 + 8" identifier + number_literal) ))))) ;)) }))) (expression_statement "puVar14 = (uint *)(iVar6 + uVar21 * 4);" (assignment_expression "puVar14 = (uint *)(iVar6 + uVar21 * 4)" identifier = (cast_expression "(uint *)(iVar6 + uVar21 * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + uVar21 * 4)" ( (binary_expression "iVar6 + uVar21 * 4" identifier + (binary_expression "uVar21 * 4" identifier * number_literal)) )))) ;) (expression_statement "uVar12 = *puVar14;" (assignment_expression "uVar12 = *puVar14" identifier = (pointer_expression "*puVar14" * identifier)) ;) (if_statement "if (uVar12 < uVar17) {\n                *(uint *)(pcVar11 + 4) = (*(int *)(pcVar11 + 4) - uVar12) + uVar17;\n                *puVar14 = uVar17;\n                *pcVar11 = *(uint *)(pcVar11 + 4) < uVar19;\n              }" if (parenthesized_expression "(uVar12 < uVar17)" ( (binary_expression "uVar12 < uVar17" identifier < identifier) )) (compound_statement "{\n                *(uint *)(pcVar11 + 4) = (*(int *)(pcVar11 + 4) - uVar12) + uVar17;\n                *puVar14 = uVar17;\n                *pcVar11 = *(uint *)(pcVar11 + 4) < uVar19;\n              }" { (expression_statement "*(uint *)(pcVar11 + 4) = (*(int *)(pcVar11 + 4) - uVar12) + uVar17;" (assignment_expression "*(uint *)(pcVar11 + 4) = (*(int *)(pcVar11 + 4) - uVar12) + uVar17" (pointer_expression "*(uint *)(pcVar11 + 4)" * (cast_expression "(uint *)(pcVar11 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar11 + 4)" ( (binary_expression "pcVar11 + 4" identifier + number_literal) )))) = (binary_expression "(*(int *)(pcVar11 + 4) - uVar12) + uVar17" (parenthesized_expression "(*(int *)(pcVar11 + 4) - uVar12)" ( (binary_expression "*(int *)(pcVar11 + 4) - uVar12" (pointer_expression "*(int *)(pcVar11 + 4)" * (cast_expression "(int *)(pcVar11 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar11 + 4)" ( (binary_expression "pcVar11 + 4" identifier + number_literal) )))) - identifier) )) + identifier)) ;) (expression_statement "*puVar14 = uVar17;" (assignment_expression "*puVar14 = uVar17" (pointer_expression "*puVar14" * identifier) = identifier) ;) (expression_statement "*pcVar11 = *(uint *)(pcVar11 + 4) < uVar19;" (assignment_expression "*pcVar11 = *(uint *)(pcVar11 + 4) < uVar19" (pointer_expression "*pcVar11" * identifier) = (binary_expression "*(uint *)(pcVar11 + 4) < uVar19" (pointer_expression "*(uint *)(pcVar11 + 4)" * (cast_expression "(uint *)(pcVar11 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar11 + 4)" ( (binary_expression "pcVar11 + 4" identifier + number_literal) )))) < identifier)) ;) })) })) (expression_statement "pcVar11 = pcVar11 + 0xc;" (assignment_expression "pcVar11 = pcVar11 + 0xc" identifier = (binary_expression "pcVar11 + 0xc" identifier + number_literal)) ;) (expression_statement "uVar12 = uVar16;" (assignment_expression "uVar12 = uVar16" identifier = identifier) ;) }) while (parenthesized_expression "(uVar20 != uVar16)" ( (binary_expression "uVar20 != uVar16" identifier != identifier) )) ;) })) (expression_statement "uVar4 = uVar4 + 1;" (assignment_expression "uVar4 = uVar4 + 1" identifier = (binary_expression "uVar4 + 1" identifier + number_literal)) ;) (expression_statement "iVar6 = *(int *)(puVar3 + -0x59b0);" (assignment_expression "iVar6 = *(int *)(puVar3 + -0x59b0)" identifier = (pointer_expression "*(int *)(puVar3 + -0x59b0)" * (cast_expression "(int *)(puVar3 + -0x59b0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + -0x59b0)" ( (binary_expression "puVar3 + -0x59b0" identifier + number_literal) ))))) ;) }) while (parenthesized_expression "(uVar4 < uVar8)" ( (binary_expression "uVar4 < uVar8" identifier < identifier) )) ;) })) (if_statement "if (1 < uVar20) {\n      iVar6 = *(int *)(PTR_DAT_00049208 + -0x5af0) + uVar20 * 0xc;\n      cVar1 = *(char *)(iVar6 + -0xc);\n      while (cVar1 == '\0') {\n        uVar20 = uVar20 - 1;\n        if (uVar20 == 1) {\n          return 1;\n        }\n        cVar1 = *(char *)(iVar6 + -0x18);\n        iVar6 = iVar6 + -0xc;\n      }\n    }" if (parenthesized_expression "(1 < uVar20)" ( (binary_expression "1 < uVar20" number_literal < identifier) )) (compound_statement "{\n      iVar6 = *(int *)(PTR_DAT_00049208 + -0x5af0) + uVar20 * 0xc;\n      cVar1 = *(char *)(iVar6 + -0xc);\n      while (cVar1 == '\0') {\n        uVar20 = uVar20 - 1;\n        if (uVar20 == 1) {\n          return 1;\n        }\n        cVar1 = *(char *)(iVar6 + -0x18);\n        iVar6 = iVar6 + -0xc;\n      }\n    }" { (expression_statement "iVar6 = *(int *)(PTR_DAT_00049208 + -0x5af0) + uVar20 * 0xc;" (assignment_expression "iVar6 = *(int *)(PTR_DAT_00049208 + -0x5af0) + uVar20 * 0xc" identifier = (binary_expression "*(int *)(PTR_DAT_00049208 + -0x5af0) + uVar20 * 0xc" (pointer_expression "*(int *)(PTR_DAT_00049208 + -0x5af0)" * (cast_expression "(int *)(PTR_DAT_00049208 + -0x5af0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_00049208 + -0x5af0)" ( (binary_expression "PTR_DAT_00049208 + -0x5af0" identifier + number_literal) )))) + (binary_expression "uVar20 * 0xc" identifier * number_literal))) ;) (expression_statement "cVar1 = *(char *)(iVar6 + -0xc);" (assignment_expression "cVar1 = *(char *)(iVar6 + -0xc)" identifier = (pointer_expression "*(char *)(iVar6 + -0xc)" * (cast_expression "(char *)(iVar6 + -0xc)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + -0xc)" ( (binary_expression "iVar6 + -0xc" identifier + number_literal) ))))) ;) (while_statement "while (cVar1 == '\0') {\n        uVar20 = uVar20 - 1;\n        if (uVar20 == 1) {\n          return 1;\n        }\n        cVar1 = *(char *)(iVar6 + -0x18);\n        iVar6 = iVar6 + -0xc;\n      }" while (parenthesized_expression "(cVar1 == '\0')" ( (binary_expression "cVar1 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n        uVar20 = uVar20 - 1;\n        if (uVar20 == 1) {\n          return 1;\n        }\n        cVar1 = *(char *)(iVar6 + -0x18);\n        iVar6 = iVar6 + -0xc;\n      }" { (expression_statement "uVar20 = uVar20 - 1;" (assignment_expression "uVar20 = uVar20 - 1" identifier = (binary_expression "uVar20 - 1" identifier - number_literal)) ;) (if_statement "if (uVar20 == 1) {\n          return 1;\n        }" if (parenthesized_expression "(uVar20 == 1)" ( (binary_expression "uVar20 == 1" identifier == number_literal) )) (compound_statement "{\n          return 1;\n        }" { (return_statement "return 1;" return number_literal ;) })) (expression_statement "cVar1 = *(char *)(iVar6 + -0x18);" (assignment_expression "cVar1 = *(char *)(iVar6 + -0x18)" identifier = (pointer_expression "*(char *)(iVar6 + -0x18)" * (cast_expression "(char *)(iVar6 + -0x18)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + -0x18)" ( (binary_expression "iVar6 + -0x18" identifier + number_literal) ))))) ;) (expression_statement "iVar6 = iVar6 + -0xc;" (assignment_expression "iVar6 = iVar6 + -0xc" identifier = (binary_expression "iVar6 + -0xc" identifier + number_literal)) ;) })) })) (return_statement "return uVar20;" return identifier ;) })) (if_statement "if (uVar20 < uVar4 >> 1) {\n    uVar4 = uVar20 * 2;\n    if (((int)(uVar20 * 0x18) < 0) ||\n       (uVar20 * 3 >> 0x1d != 0 || (uint)(uVar20 * 3 < uVar4) != (int)uVar20 >> 0x1f))\n    goto LAB_000199b4;\n    uVar5 = xrealloc(*(undefined4 *)(PTR_DAT_00049208 + -0x5af0));\n    *(undefined4 *)(puVar2 + -0x5af0) = uVar5;\n  }\n  else {\n    if (((int)(uVar4 * 0xc) < 0) ||\n       (uVar4 * 3 >> 0x1e != 0 || (uint)(uVar4 * 3 < uVar4 * 2) != (int)uVar4 >> 0x1f))\n    goto LAB_000199b4;\n    uVar5 = xrealloc(*(undefined4 *)(PTR_DAT_00049208 + -0x5af0));\n    uVar4 = *(uint *)(puVar2 + -0x5af4);\n    *(undefined4 *)(puVar2 + -0x5af0) = uVar5;\n  }" if (parenthesized_expression "(uVar20 < uVar4 >> 1)" ( (binary_expression "uVar20 < uVar4 >> 1" identifier < (binary_expression "uVar4 >> 1" identifier >> number_literal)) )) (compound_statement "{\n    uVar4 = uVar20 * 2;\n    if (((int)(uVar20 * 0x18) < 0) ||\n       (uVar20 * 3 >> 0x1d != 0 || (uint)(uVar20 * 3 < uVar4) != (int)uVar20 >> 0x1f))\n    goto LAB_000199b4;\n    uVar5 = xrealloc(*(undefined4 *)(PTR_DAT_00049208 + -0x5af0));\n    *(undefined4 *)(puVar2 + -0x5af0) = uVar5;\n  }" { (expression_statement "uVar4 = uVar20 * 2;" (assignment_expression "uVar4 = uVar20 * 2" identifier = (binary_expression "uVar20 * 2" identifier * number_literal)) ;) (if_statement "if (((int)(uVar20 * 0x18) < 0) ||\n       (uVar20 * 3 >> 0x1d != 0 || (uint)(uVar20 * 3 < uVar4) != (int)uVar20 >> 0x1f))\n    goto LAB_000199b4;" if (parenthesized_expression "(((int)(uVar20 * 0x18) < 0) ||\n       (uVar20 * 3 >> 0x1d != 0 || (uint)(uVar20 * 3 < uVar4) != (int)uVar20 >> 0x1f))" ( (binary_expression "((int)(uVar20 * 0x18) < 0) ||\n       (uVar20 * 3 >> 0x1d != 0 || (uint)(uVar20 * 3 < uVar4) != (int)uVar20 >> 0x1f)" (parenthesized_expression "((int)(uVar20 * 0x18) < 0)" ( (binary_expression "(int)(uVar20 * 0x18) < 0" (cast_expression "(int)(uVar20 * 0x18)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(uVar20 * 0x18)" ( (binary_expression "uVar20 * 0x18" identifier * number_literal) ))) < number_literal) )) || (parenthesized_expression "(uVar20 * 3 >> 0x1d != 0 || (uint)(uVar20 * 3 < uVar4) != (int)uVar20 >> 0x1f)" ( (binary_expression "uVar20 * 3 >> 0x1d != 0 || (uint)(uVar20 * 3 < uVar4) != (int)uVar20 >> 0x1f" (binary_expression "uVar20 * 3 >> 0x1d != 0" (binary_expression "uVar20 * 3 >> 0x1d" (binary_expression "uVar20 * 3" identifier * number_literal) >> number_literal) != number_literal) || (binary_expression "(uint)(uVar20 * 3 < uVar4) != (int)uVar20 >> 0x1f" (call_expression "(uint)(uVar20 * 3 < uVar4)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar20 * 3 < uVar4)" ( (binary_expression "uVar20 * 3 < uVar4" (binary_expression "uVar20 * 3" identifier * number_literal) < identifier) ))) != (binary_expression "(int)uVar20 >> 0x1f" (cast_expression "(int)uVar20" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal))) ))) )) (goto_statement "goto LAB_000199b4;" goto statement_identifier ;)) (expression_statement "uVar5 = xrealloc(*(undefined4 *)(PTR_DAT_00049208 + -0x5af0));" (assignment_expression "uVar5 = xrealloc(*(undefined4 *)(PTR_DAT_00049208 + -0x5af0))" identifier = (call_expression "xrealloc(*(undefined4 *)(PTR_DAT_00049208 + -0x5af0))" identifier (argument_list "(*(undefined4 *)(PTR_DAT_00049208 + -0x5af0))" ( (pointer_expression "*(undefined4 *)(PTR_DAT_00049208 + -0x5af0)" * (cast_expression "(undefined4 *)(PTR_DAT_00049208 + -0x5af0)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_00049208 + -0x5af0)" ( (binary_expression "PTR_DAT_00049208 + -0x5af0" identifier + number_literal) )))) )))) ;) (expression_statement "*(undefined4 *)(puVar2 + -0x5af0) = uVar5;" (assignment_expression "*(undefined4 *)(puVar2 + -0x5af0) = uVar5" (pointer_expression "*(undefined4 *)(puVar2 + -0x5af0)" * (cast_expression "(undefined4 *)(puVar2 + -0x5af0)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + -0x5af0)" ( (binary_expression "puVar2 + -0x5af0" identifier + number_literal) )))) = identifier) ;) }) (else_clause "else {\n    if (((int)(uVar4 * 0xc) < 0) ||\n       (uVar4 * 3 >> 0x1e != 0 || (uint)(uVar4 * 3 < uVar4 * 2) != (int)uVar4 >> 0x1f))\n    goto LAB_000199b4;\n    uVar5 = xrealloc(*(undefined4 *)(PTR_DAT_00049208 + -0x5af0));\n    uVar4 = *(uint *)(puVar2 + -0x5af4);\n    *(undefined4 *)(puVar2 + -0x5af0) = uVar5;\n  }" else (compound_statement "{\n    if (((int)(uVar4 * 0xc) < 0) ||\n       (uVar4 * 3 >> 0x1e != 0 || (uint)(uVar4 * 3 < uVar4 * 2) != (int)uVar4 >> 0x1f))\n    goto LAB_000199b4;\n    uVar5 = xrealloc(*(undefined4 *)(PTR_DAT_00049208 + -0x5af0));\n    uVar4 = *(uint *)(puVar2 + -0x5af4);\n    *(undefined4 *)(puVar2 + -0x5af0) = uVar5;\n  }" { (if_statement "if (((int)(uVar4 * 0xc) < 0) ||\n       (uVar4 * 3 >> 0x1e != 0 || (uint)(uVar4 * 3 < uVar4 * 2) != (int)uVar4 >> 0x1f))\n    goto LAB_000199b4;" if (parenthesized_expression "(((int)(uVar4 * 0xc) < 0) ||\n       (uVar4 * 3 >> 0x1e != 0 || (uint)(uVar4 * 3 < uVar4 * 2) != (int)uVar4 >> 0x1f))" ( (binary_expression "((int)(uVar4 * 0xc) < 0) ||\n       (uVar4 * 3 >> 0x1e != 0 || (uint)(uVar4 * 3 < uVar4 * 2) != (int)uVar4 >> 0x1f)" (parenthesized_expression "((int)(uVar4 * 0xc) < 0)" ( (binary_expression "(int)(uVar4 * 0xc) < 0" (cast_expression "(int)(uVar4 * 0xc)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(uVar4 * 0xc)" ( (binary_expression "uVar4 * 0xc" identifier * number_literal) ))) < number_literal) )) || (parenthesized_expression "(uVar4 * 3 >> 0x1e != 0 || (uint)(uVar4 * 3 < uVar4 * 2) != (int)uVar4 >> 0x1f)" ( (binary_expression "uVar4 * 3 >> 0x1e != 0 || (uint)(uVar4 * 3 < uVar4 * 2) != (int)uVar4 >> 0x1f" (binary_expression "uVar4 * 3 >> 0x1e != 0" (binary_expression "uVar4 * 3 >> 0x1e" (binary_expression "uVar4 * 3" identifier * number_literal) >> number_literal) != number_literal) || (binary_expression "(uint)(uVar4 * 3 < uVar4 * 2) != (int)uVar4 >> 0x1f" (call_expression "(uint)(uVar4 * 3 < uVar4 * 2)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar4 * 3 < uVar4 * 2)" ( (binary_expression "uVar4 * 3 < uVar4 * 2" (binary_expression "uVar4 * 3" identifier * number_literal) < (binary_expression "uVar4 * 2" identifier * number_literal)) ))) != (binary_expression "(int)uVar4 >> 0x1f" (cast_expression "(int)uVar4" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal))) ))) )) (goto_statement "goto LAB_000199b4;" goto statement_identifier ;)) (expression_statement "uVar5 = xrealloc(*(undefined4 *)(PTR_DAT_00049208 + -0x5af0));" (assignment_expression "uVar5 = xrealloc(*(undefined4 *)(PTR_DAT_00049208 + -0x5af0))" identifier = (call_expression "xrealloc(*(undefined4 *)(PTR_DAT_00049208 + -0x5af0))" identifier (argument_list "(*(undefined4 *)(PTR_DAT_00049208 + -0x5af0))" ( (pointer_expression "*(undefined4 *)(PTR_DAT_00049208 + -0x5af0)" * (cast_expression "(undefined4 *)(PTR_DAT_00049208 + -0x5af0)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_00049208 + -0x5af0)" ( (binary_expression "PTR_DAT_00049208 + -0x5af0" identifier + number_literal) )))) )))) ;) (expression_statement "uVar4 = *(uint *)(puVar2 + -0x5af4);" (assignment_expression "uVar4 = *(uint *)(puVar2 + -0x5af4)" identifier = (pointer_expression "*(uint *)(puVar2 + -0x5af4)" * (cast_expression "(uint *)(puVar2 + -0x5af4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + -0x5af4)" ( (binary_expression "puVar2 + -0x5af4" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar2 + -0x5af0) = uVar5;" (assignment_expression "*(undefined4 *)(puVar2 + -0x5af0) = uVar5" (pointer_expression "*(undefined4 *)(puVar2 + -0x5af0)" * (cast_expression "(undefined4 *)(puVar2 + -0x5af0)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + -0x5af0)" ( (binary_expression "puVar2 + -0x5af0" identifier + number_literal) )))) = identifier) ;) }))) (expression_statement "uVar18 = uVar4 - *(int *)(puVar2 + -0x6990);" (assignment_expression "uVar18 = uVar4 - *(int *)(puVar2 + -0x6990)" identifier = (binary_expression "uVar4 - *(int *)(puVar2 + -0x6990)" identifier - (pointer_expression "*(int *)(puVar2 + -0x6990)" * (cast_expression "(int *)(puVar2 + -0x6990)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + -0x6990)" ( (binary_expression "puVar2 + -0x6990" identifier + number_literal) )))))) ;) (expression_statement "uVar12 = *(int *)(puVar2 + -0x6990) + 1 + uVar4;" (assignment_expression "uVar12 = *(int *)(puVar2 + -0x6990) + 1 + uVar4" identifier = (binary_expression "*(int *)(puVar2 + -0x6990) + 1 + uVar4" (binary_expression "*(int *)(puVar2 + -0x6990) + 1" (pointer_expression "*(int *)(puVar2 + -0x6990)" * (cast_expression "(int *)(puVar2 + -0x6990)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + -0x6990)" ( (binary_expression "puVar2 + -0x6990" identifier + number_literal) )))) + number_literal) + identifier)) ;) (expression_statement "uVar8 = uVar18 * uVar12;" (assignment_expression "uVar8 = uVar18 * uVar12" identifier = (binary_expression "uVar18 * uVar12" identifier * identifier)) ;) (if_statement "if (uVar4 <= uVar12) {\n    if (uVar18 == 0) {\n      trap(7);\n    }\n    if (((uVar12 == uVar8 / uVar18) && (-1 < (int)((uVar8 >> 1) << 2))) && (-1 < (int)uVar8)) {\n      iVar6 = xmalloc();\n      uVar18 = *(uint *)(puVar2 + -0x6990);\n      if (uVar18 < uVar4) {\n        iVar9 = (uVar18 + 1) * 4;\n        iVar13 = *(int *)(puVar2 + -0x5af0) + uVar18 * 0xc;\n        do {\n          *(int *)(iVar13 + 8) = iVar6;\n          iVar6 = iVar6 + iVar9;\n          iVar9 = iVar9 + 4;\n          iVar13 = iVar13 + 0xc;\n        } while ((uVar4 + 1) * 4 != iVar9);\n      }\n      uVar18 = *(uint *)(puVar2 + -0x59a8);\n      *(uint *)(puVar2 + -0x6990) = uVar4;\n      goto LAB_00019798;\n    }\n  }" if (parenthesized_expression "(uVar4 <= uVar12)" ( (binary_expression "uVar4 <= uVar12" identifier <= identifier) )) (compound_statement "{\n    if (uVar18 == 0) {\n      trap(7);\n    }\n    if (((uVar12 == uVar8 / uVar18) && (-1 < (int)((uVar8 >> 1) << 2))) && (-1 < (int)uVar8)) {\n      iVar6 = xmalloc();\n      uVar18 = *(uint *)(puVar2 + -0x6990);\n      if (uVar18 < uVar4) {\n        iVar9 = (uVar18 + 1) * 4;\n        iVar13 = *(int *)(puVar2 + -0x5af0) + uVar18 * 0xc;\n        do {\n          *(int *)(iVar13 + 8) = iVar6;\n          iVar6 = iVar6 + iVar9;\n          iVar9 = iVar9 + 4;\n          iVar13 = iVar13 + 0xc;\n        } while ((uVar4 + 1) * 4 != iVar9);\n      }\n      uVar18 = *(uint *)(puVar2 + -0x59a8);\n      *(uint *)(puVar2 + -0x6990) = uVar4;\n      goto LAB_00019798;\n    }\n  }" { (if_statement "if (uVar18 == 0) {\n      trap(7);\n    }" if (parenthesized_expression "(uVar18 == 0)" ( (binary_expression "uVar18 == 0" identifier == number_literal) )) (compound_statement "{\n      trap(7);\n    }" { (expression_statement "trap(7);" (call_expression "trap(7)" identifier (argument_list "(7)" ( number_literal ))) ;) })) (if_statement "if (((uVar12 == uVar8 / uVar18) && (-1 < (int)((uVar8 >> 1) << 2))) && (-1 < (int)uVar8)) {\n      iVar6 = xmalloc();\n      uVar18 = *(uint *)(puVar2 + -0x6990);\n      if (uVar18 < uVar4) {\n        iVar9 = (uVar18 + 1) * 4;\n        iVar13 = *(int *)(puVar2 + -0x5af0) + uVar18 * 0xc;\n        do {\n          *(int *)(iVar13 + 8) = iVar6;\n          iVar6 = iVar6 + iVar9;\n          iVar9 = iVar9 + 4;\n          iVar13 = iVar13 + 0xc;\n        } while ((uVar4 + 1) * 4 != iVar9);\n      }\n      uVar18 = *(uint *)(puVar2 + -0x59a8);\n      *(uint *)(puVar2 + -0x6990) = uVar4;\n      goto LAB_00019798;\n    }" if (parenthesized_expression "(((uVar12 == uVar8 / uVar18) && (-1 < (int)((uVar8 >> 1) << 2))) && (-1 < (int)uVar8))" ( (binary_expression "((uVar12 == uVar8 / uVar18) && (-1 < (int)((uVar8 >> 1) << 2))) && (-1 < (int)uVar8)" (parenthesized_expression "((uVar12 == uVar8 / uVar18) && (-1 < (int)((uVar8 >> 1) << 2)))" ( (binary_expression "(uVar12 == uVar8 / uVar18) && (-1 < (int)((uVar8 >> 1) << 2))" (parenthesized_expression "(uVar12 == uVar8 / uVar18)" ( (binary_expression "uVar12 == uVar8 / uVar18" identifier == (binary_expression "uVar8 / uVar18" identifier / identifier)) )) && (parenthesized_expression "(-1 < (int)((uVar8 >> 1) << 2))" ( (binary_expression "-1 < (int)((uVar8 >> 1) << 2)" number_literal < (cast_expression "(int)((uVar8 >> 1) << 2)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((uVar8 >> 1) << 2)" ( (binary_expression "(uVar8 >> 1) << 2" (parenthesized_expression "(uVar8 >> 1)" ( (binary_expression "uVar8 >> 1" identifier >> number_literal) )) << number_literal) )))) ))) )) && (parenthesized_expression "(-1 < (int)uVar8)" ( (binary_expression "-1 < (int)uVar8" number_literal < (cast_expression "(int)uVar8" ( (type_descriptor "int" primitive_type) ) identifier)) ))) )) (compound_statement "{\n      iVar6 = xmalloc();\n      uVar18 = *(uint *)(puVar2 + -0x6990);\n      if (uVar18 < uVar4) {\n        iVar9 = (uVar18 + 1) * 4;\n        iVar13 = *(int *)(puVar2 + -0x5af0) + uVar18 * 0xc;\n        do {\n          *(int *)(iVar13 + 8) = iVar6;\n          iVar6 = iVar6 + iVar9;\n          iVar9 = iVar9 + 4;\n          iVar13 = iVar13 + 0xc;\n        } while ((uVar4 + 1) * 4 != iVar9);\n      }\n      uVar18 = *(uint *)(puVar2 + -0x59a8);\n      *(uint *)(puVar2 + -0x6990) = uVar4;\n      goto LAB_00019798;\n    }" { (expression_statement "iVar6 = xmalloc();" (assignment_expression "iVar6 = xmalloc()" identifier = (call_expression "xmalloc()" identifier (argument_list "()" ( )))) ;) (expression_statement "uVar18 = *(uint *)(puVar2 + -0x6990);" (assignment_expression "uVar18 = *(uint *)(puVar2 + -0x6990)" identifier = (pointer_expression "*(uint *)(puVar2 + -0x6990)" * (cast_expression "(uint *)(puVar2 + -0x6990)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + -0x6990)" ( (binary_expression "puVar2 + -0x6990" identifier + number_literal) ))))) ;) (if_statement "if (uVar18 < uVar4) {\n        iVar9 = (uVar18 + 1) * 4;\n        iVar13 = *(int *)(puVar2 + -0x5af0) + uVar18 * 0xc;\n        do {\n          *(int *)(iVar13 + 8) = iVar6;\n          iVar6 = iVar6 + iVar9;\n          iVar9 = iVar9 + 4;\n          iVar13 = iVar13 + 0xc;\n        } while ((uVar4 + 1) * 4 != iVar9);\n      }" if (parenthesized_expression "(uVar18 < uVar4)" ( (binary_expression "uVar18 < uVar4" identifier < identifier) )) (compound_statement "{\n        iVar9 = (uVar18 + 1) * 4;\n        iVar13 = *(int *)(puVar2 + -0x5af0) + uVar18 * 0xc;\n        do {\n          *(int *)(iVar13 + 8) = iVar6;\n          iVar6 = iVar6 + iVar9;\n          iVar9 = iVar9 + 4;\n          iVar13 = iVar13 + 0xc;\n        } while ((uVar4 + 1) * 4 != iVar9);\n      }" { (expression_statement "iVar9 = (uVar18 + 1) * 4;" (assignment_expression "iVar9 = (uVar18 + 1) * 4" identifier = (binary_expression "(uVar18 + 1) * 4" (parenthesized_expression "(uVar18 + 1)" ( (binary_expression "uVar18 + 1" identifier + number_literal) )) * number_literal)) ;) (expression_statement "iVar13 = *(int *)(puVar2 + -0x5af0) + uVar18 * 0xc;" (assignment_expression "iVar13 = *(int *)(puVar2 + -0x5af0) + uVar18 * 0xc" identifier = (binary_expression "*(int *)(puVar2 + -0x5af0) + uVar18 * 0xc" (pointer_expression "*(int *)(puVar2 + -0x5af0)" * (cast_expression "(int *)(puVar2 + -0x5af0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + -0x5af0)" ( (binary_expression "puVar2 + -0x5af0" identifier + number_literal) )))) + (binary_expression "uVar18 * 0xc" identifier * number_literal))) ;) (do_statement "do {\n          *(int *)(iVar13 + 8) = iVar6;\n          iVar6 = iVar6 + iVar9;\n          iVar9 = iVar9 + 4;\n          iVar13 = iVar13 + 0xc;\n        } while ((uVar4 + 1) * 4 != iVar9);" do (compound_statement "{\n          *(int *)(iVar13 + 8) = iVar6;\n          iVar6 = iVar6 + iVar9;\n          iVar9 = iVar9 + 4;\n          iVar13 = iVar13 + 0xc;\n        }" { (expression_statement "*(int *)(iVar13 + 8) = iVar6;" (assignment_expression "*(int *)(iVar13 + 8) = iVar6" (pointer_expression "*(int *)(iVar13 + 8)" * (cast_expression "(int *)(iVar13 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar13 + 8)" ( (binary_expression "iVar13 + 8" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar6 = iVar6 + iVar9;" (assignment_expression "iVar6 = iVar6 + iVar9" identifier = (binary_expression "iVar6 + iVar9" identifier + identifier)) ;) (expression_statement "iVar9 = iVar9 + 4;" (assignment_expression "iVar9 = iVar9 + 4" identifier = (binary_expression "iVar9 + 4" identifier + number_literal)) ;) (expression_statement "iVar13 = iVar13 + 0xc;" (assignment_expression "iVar13 = iVar13 + 0xc" identifier = (binary_expression "iVar13 + 0xc" identifier + number_literal)) ;) }) while (parenthesized_expression "((uVar4 + 1) * 4 != iVar9)" ( (binary_expression "(uVar4 + 1) * 4 != iVar9" (binary_expression "(uVar4 + 1) * 4" (parenthesized_expression "(uVar4 + 1)" ( (binary_expression "uVar4 + 1" identifier + number_literal) )) * number_literal) != identifier) )) ;) })) (expression_statement "uVar18 = *(uint *)(puVar2 + -0x59a8);" (assignment_expression "uVar18 = *(uint *)(puVar2 + -0x59a8)" identifier = (pointer_expression "*(uint *)(puVar2 + -0x59a8)" * (cast_expression "(uint *)(puVar2 + -0x59a8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + -0x59a8)" ( (binary_expression "puVar2 + -0x59a8" identifier + number_literal) ))))) ;) (expression_statement "*(uint *)(puVar2 + -0x6990) = uVar4;" (assignment_expression "*(uint *)(puVar2 + -0x6990) = uVar4" (pointer_expression "*(uint *)(puVar2 + -0x6990)" * (cast_expression "(uint *)(puVar2 + -0x6990)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + -0x6990)" ( (binary_expression "puVar2 + -0x6990" identifier + number_literal) )))) = identifier) ;) (goto_statement "goto LAB_00019798;" goto statement_identifier ;) })) })) (labeled_statement "LAB_000199b4:\n                    \n  xalloc_die();" statement_identifier : (expression_statement "xalloc_die();" (call_expression "xalloc_die()" identifier (argument_list "()" ( ))) ;)) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (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 (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (labeled_statement statement_identifier : (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 = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + IDENT) )))) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != (binary_expression IDENT << LIT)) )) ;) }))) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) )))) )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) != (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( LIT ))) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT % IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;)) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( LIT ))) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT + IDENT) )) - LIT) )) / IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( LIT ))) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT / IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;)) }))) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) - IDENT) )) + IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) < IDENT)) ;) })) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) }) while (parenthesized_expression ( (binary_expression IDENT < IDENT) )) ;) })) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + (binary_expression IDENT * LIT))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (while_statement while (parenthesized_expression ( (binary_expression IDENT == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (return_statement return LIT ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) })) })) (return_statement return IDENT ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT < (binary_expression IDENT >> LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT * LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT * LIT) ))) < LIT) )) || (parenthesized_expression ( (binary_expression (binary_expression (binary_expression (binary_expression IDENT * LIT) >> LIT) != LIT) || (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (binary_expression IDENT * LIT) < IDENT) ))) != (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT))) ))) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT * LIT) ))) < LIT) )) || (parenthesized_expression ( (binary_expression (binary_expression (binary_expression (binary_expression IDENT * LIT) >> LIT) != LIT) || (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (binary_expression IDENT * LIT) < (binary_expression IDENT * LIT)) ))) != (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT))) ))) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) }))) (expression_statement (assignment_expression IDENT = (binary_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 (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) + IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( LIT ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == (binary_expression IDENT / IDENT)) )) && (parenthesized_expression ( (binary_expression LIT < (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT >> LIT) )) << LIT) )))) ))) )) && (parenthesized_expression ( (binary_expression LIT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (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 < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT + LIT) )) * LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + (binary_expression IDENT * LIT))) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression (binary_expression (parenthesized_expression ( (binary_expression IDENT + LIT) )) * LIT) != IDENT) )) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (goto_statement goto statement_identifier ;) })) })) (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( ))) ;)) })))
(function_definition "uint FUN_00019634(int param_1)\n\n{\n  char cVar1;\n  undefined *puVar2;\n  undefined *puVar3;\n  uint uVar4;\n  undefined4 uVar5;\n  int iVar6;\n  undefined4 *puVar7;\n  uint uVar8;\n  int iVar9;\n  undefined4 *puVar10;\n  char *pcVar11;\n  uint uVar12;\n  int iVar13;\n  uint *puVar14;\n  undefined1 *puVar15;\n  uint uVar16;\n  uint uVar17;\n  uint uVar18;\n  uint uVar19;\n  uint uVar20;\n  uint uVar21;\n  \n  puVar2 = PTR_DAT_00049208;\n  uVar18 = *(uint *)(PTR_DAT_00049208 + -0x59a8);\n  uVar4 = *(uint *)(PTR_DAT_00049208 + -0x5af4);\n  uVar20 = uVar4;\n  if (uVar18 <= uVar4) {\n    uVar20 = uVar18;\n  }\n  if (uVar20 <= *(uint *)(PTR_DAT_00049208 + -0x6990)) {\nLAB_00019798:\n    if (uVar20 != 0) {\n      iVar6 = 0;\n      iVar9 = 3;\n      puVar15 = *(undefined1 **)(PTR_DAT_00049208 + -0x5af0);\n      do {\n        puVar7 = *(undefined4 **)(puVar15 + 8);\n        iVar6 = iVar6 + 4;\n        *puVar15 = 1;\n        *(int *)(puVar15 + 4) = iVar9;\n        puVar10 = (undefined4 *)((int)puVar7 + iVar6);\n        do {\n          *puVar7 = 3;\n          puVar7 = puVar7 + 1;\n        } while (puVar10 != puVar7);\n        puVar15 = puVar15 + 0xc;\n        iVar9 = iVar9 + 3;\n      } while (iVar6 != uVar20 << 2);\n    }\n    puVar3 = PTR_DAT_00049208;\n    if (uVar18 != 0) {\n      uVar4 = 0;\n      iVar6 = *(int *)(PTR_DAT_00049208 + -0x59b0);\n      do {\n        uVar18 = FUN_00019404(*(undefined4 *)(iVar6 + uVar4 * 4));\n        uVar8 = *(uint *)(puVar2 + -0x59a8);\n        if (uVar20 != 0) {\n          uVar19 = *(uint *)(puVar3 + -0x5a58);\n          pcVar11 = *(char **)(puVar3 + -0x5af0);\n          uVar12 = 0;\n          do {\n            uVar16 = uVar12 + 1;\n            if (*pcVar11 != '\0') {\n              uVar17 = uVar18;\n              if (param_1 == 0) {\n                if (uVar16 == 0) {\n                  trap(7);\n                }\n                uVar21 = uVar4 % uVar16;\n                if (uVar21 != uVar12) {\nLAB_00019864:\n                  uVar17 = uVar18 + 2;\n                  goto LAB_00019868;\n                }\n                iVar6 = *(int *)(pcVar11 + 8);\n              }\n              else {\n                if (uVar16 == 0) {\n                  trap(7);\n                }\n                uVar21 = ((uVar8 + uVar16) - 1) / uVar16;\n                if (uVar21 == 0) {\n                  trap(7);\n                }\n                uVar21 = uVar4 / uVar21;\n                if (uVar21 != uVar12) goto LAB_00019864;\nLAB_00019868:\n                iVar6 = *(int *)(pcVar11 + 8);\n              }\n              puVar14 = (uint *)(iVar6 + uVar21 * 4);\n              uVar12 = *puVar14;\n              if (uVar12 < uVar17) {\n                *(uint *)(pcVar11 + 4) = (*(int *)(pcVar11 + 4) - uVar12) + uVar17;\n                *puVar14 = uVar17;\n                *pcVar11 = *(uint *)(pcVar11 + 4) < uVar19;\n              }\n            }\n            pcVar11 = pcVar11 + 0xc;\n            uVar12 = uVar16;\n          } while (uVar20 != uVar16);\n        }\n        uVar4 = uVar4 + 1;\n        iVar6 = *(int *)(puVar3 + -0x59b0);\n      } while (uVar4 < uVar8);\n    }\n    if (1 < uVar20) {\n      iVar6 = *(int *)(PTR_DAT_00049208 + -0x5af0) + uVar20 * 0xc;\n      cVar1 = *(char *)(iVar6 + -0xc);\n      while (cVar1 == '\0') {\n        uVar20 = uVar20 - 1;\n        if (uVar20 == 1) {\n          return 1;\n        }\n        cVar1 = *(char *)(iVar6 + -0x18);\n        iVar6 = iVar6 + -0xc;\n      }\n    }\n    return uVar20;\n  }\n  if (uVar20 < uVar4 >> 1) {\n    uVar4 = uVar20 * 2;\n    if (((int)(uVar20 * 0x18) < 0) ||\n       (uVar20 * 3 >> 0x1d != 0 || (uint)(uVar20 * 3 < uVar4) != (int)uVar20 >> 0x1f))\n    goto LAB_000199b4;\n    uVar5 = xrealloc(*(undefined4 *)(PTR_DAT_00049208 + -0x5af0));\n    *(undefined4 *)(puVar2 + -0x5af0) = uVar5;\n  }\n  else {\n    if (((int)(uVar4 * 0xc) < 0) ||\n       (uVar4 * 3 >> 0x1e != 0 || (uint)(uVar4 * 3 < uVar4 * 2) != (int)uVar4 >> 0x1f))\n    goto LAB_000199b4;\n    uVar5 = xrealloc(*(undefined4 *)(PTR_DAT_00049208 + -0x5af0));\n    uVar4 = *(uint *)(puVar2 + -0x5af4);\n    *(undefined4 *)(puVar2 + -0x5af0) = uVar5;\n  }\n  uVar18 = uVar4 - *(int *)(puVar2 + -0x6990);\n  uVar12 = *(int *)(puVar2 + -0x6990) + 1 + uVar4;\n  uVar8 = uVar18 * uVar12;\n  if (uVar4 <= uVar12) {\n    if (uVar18 == 0) {\n      trap(7);\n    }\n    if (((uVar12 == uVar8 / uVar18) && (-1 < (int)((uVar8 >> 1) << 2))) && (-1 < (int)uVar8)) {\n      iVar6 = xmalloc();\n      uVar18 = *(uint *)(puVar2 + -0x6990);\n      if (uVar18 < uVar4) {\n        iVar9 = (uVar18 + 1) * 4;\n        iVar13 = *(int *)(puVar2 + -0x5af0) + uVar18 * 0xc;\n        do {\n          *(int *)(iVar13 + 8) = iVar6;\n          iVar6 = iVar6 + iVar9;\n          iVar9 = iVar9 + 4;\n          iVar13 = iVar13 + 0xc;\n        } while ((uVar4 + 1) * 4 != iVar9);\n      }\n      uVar18 = *(uint *)(puVar2 + -0x59a8);\n      *(uint *)(puVar2 + -0x6990) = uVar4;\n      goto LAB_00019798;\n    }\n  }\nLAB_000199b4:\n                    \n  xalloc_die();\n}" (type_identifier "uint") (function_declarator "FUN_00019634(int param_1)" (identifier "FUN_00019634") (parameter_list "(int param_1)" (( "(") (parameter_declaration "int param_1" (primitive_type "int") (identifier "param_1")) () ")"))) (compound_statement "{\n  char cVar1;\n  undefined *puVar2;\n  undefined *puVar3;\n  uint uVar4;\n  undefined4 uVar5;\n  int iVar6;\n  undefined4 *puVar7;\n  uint uVar8;\n  int iVar9;\n  undefined4 *puVar10;\n  char *pcVar11;\n  uint uVar12;\n  int iVar13;\n  uint *puVar14;\n  undefined1 *puVar15;\n  uint uVar16;\n  uint uVar17;\n  uint uVar18;\n  uint uVar19;\n  uint uVar20;\n  uint uVar21;\n  \n  puVar2 = PTR_DAT_00049208;\n  uVar18 = *(uint *)(PTR_DAT_00049208 + -0x59a8);\n  uVar4 = *(uint *)(PTR_DAT_00049208 + -0x5af4);\n  uVar20 = uVar4;\n  if (uVar18 <= uVar4) {\n    uVar20 = uVar18;\n  }\n  if (uVar20 <= *(uint *)(PTR_DAT_00049208 + -0x6990)) {\nLAB_00019798:\n    if (uVar20 != 0) {\n      iVar6 = 0;\n      iVar9 = 3;\n      puVar15 = *(undefined1 **)(PTR_DAT_00049208 + -0x5af0);\n      do {\n        puVar7 = *(undefined4 **)(puVar15 + 8);\n        iVar6 = iVar6 + 4;\n        *puVar15 = 1;\n        *(int *)(puVar15 + 4) = iVar9;\n        puVar10 = (undefined4 *)((int)puVar7 + iVar6);\n        do {\n          *puVar7 = 3;\n          puVar7 = puVar7 + 1;\n        } while (puVar10 != puVar7);\n        puVar15 = puVar15 + 0xc;\n        iVar9 = iVar9 + 3;\n      } while (iVar6 != uVar20 << 2);\n    }\n    puVar3 = PTR_DAT_00049208;\n    if (uVar18 != 0) {\n      uVar4 = 0;\n      iVar6 = *(int *)(PTR_DAT_00049208 + -0x59b0);\n      do {\n        uVar18 = FUN_00019404(*(undefined4 *)(iVar6 + uVar4 * 4));\n        uVar8 = *(uint *)(puVar2 + -0x59a8);\n        if (uVar20 != 0) {\n          uVar19 = *(uint *)(puVar3 + -0x5a58);\n          pcVar11 = *(char **)(puVar3 + -0x5af0);\n          uVar12 = 0;\n          do {\n            uVar16 = uVar12 + 1;\n            if (*pcVar11 != '\0') {\n              uVar17 = uVar18;\n              if (param_1 == 0) {\n                if (uVar16 == 0) {\n                  trap(7);\n                }\n                uVar21 = uVar4 % uVar16;\n                if (uVar21 != uVar12) {\nLAB_00019864:\n                  uVar17 = uVar18 + 2;\n                  goto LAB_00019868;\n                }\n                iVar6 = *(int *)(pcVar11 + 8);\n              }\n              else {\n                if (uVar16 == 0) {\n                  trap(7);\n                }\n                uVar21 = ((uVar8 + uVar16) - 1) / uVar16;\n                if (uVar21 == 0) {\n                  trap(7);\n                }\n                uVar21 = uVar4 / uVar21;\n                if (uVar21 != uVar12) goto LAB_00019864;\nLAB_00019868:\n                iVar6 = *(int *)(pcVar11 + 8);\n              }\n              puVar14 = (uint *)(iVar6 + uVar21 * 4);\n              uVar12 = *puVar14;\n              if (uVar12 < uVar17) {\n                *(uint *)(pcVar11 + 4) = (*(int *)(pcVar11 + 4) - uVar12) + uVar17;\n                *puVar14 = uVar17;\n                *pcVar11 = *(uint *)(pcVar11 + 4) < uVar19;\n              }\n            }\n            pcVar11 = pcVar11 + 0xc;\n            uVar12 = uVar16;\n          } while (uVar20 != uVar16);\n        }\n        uVar4 = uVar4 + 1;\n        iVar6 = *(int *)(puVar3 + -0x59b0);\n      } while (uVar4 < uVar8);\n    }\n    if (1 < uVar20) {\n      iVar6 = *(int *)(PTR_DAT_00049208 + -0x5af0) + uVar20 * 0xc;\n      cVar1 = *(char *)(iVar6 + -0xc);\n      while (cVar1 == '\0') {\n        uVar20 = uVar20 - 1;\n        if (uVar20 == 1) {\n          return 1;\n        }\n        cVar1 = *(char *)(iVar6 + -0x18);\n        iVar6 = iVar6 + -0xc;\n      }\n    }\n    return uVar20;\n  }\n  if (uVar20 < uVar4 >> 1) {\n    uVar4 = uVar20 * 2;\n    if (((int)(uVar20 * 0x18) < 0) ||\n       (uVar20 * 3 >> 0x1d != 0 || (uint)(uVar20 * 3 < uVar4) != (int)uVar20 >> 0x1f))\n    goto LAB_000199b4;\n    uVar5 = xrealloc(*(undefined4 *)(PTR_DAT_00049208 + -0x5af0));\n    *(undefined4 *)(puVar2 + -0x5af0) = uVar5;\n  }\n  else {\n    if (((int)(uVar4 * 0xc) < 0) ||\n       (uVar4 * 3 >> 0x1e != 0 || (uint)(uVar4 * 3 < uVar4 * 2) != (int)uVar4 >> 0x1f))\n    goto LAB_000199b4;\n    uVar5 = xrealloc(*(undefined4 *)(PTR_DAT_00049208 + -0x5af0));\n    uVar4 = *(uint *)(puVar2 + -0x5af4);\n    *(undefined4 *)(puVar2 + -0x5af0) = uVar5;\n  }\n  uVar18 = uVar4 - *(int *)(puVar2 + -0x6990);\n  uVar12 = *(int *)(puVar2 + -0x6990) + 1 + uVar4;\n  uVar8 = uVar18 * uVar12;\n  if (uVar4 <= uVar12) {\n    if (uVar18 == 0) {\n      trap(7);\n    }\n    if (((uVar12 == uVar8 / uVar18) && (-1 < (int)((uVar8 >> 1) << 2))) && (-1 < (int)uVar8)) {\n      iVar6 = xmalloc();\n      uVar18 = *(uint *)(puVar2 + -0x6990);\n      if (uVar18 < uVar4) {\n        iVar9 = (uVar18 + 1) * 4;\n        iVar13 = *(int *)(puVar2 + -0x5af0) + uVar18 * 0xc;\n        do {\n          *(int *)(iVar13 + 8) = iVar6;\n          iVar6 = iVar6 + iVar9;\n          iVar9 = iVar9 + 4;\n          iVar13 = iVar13 + 0xc;\n        } while ((uVar4 + 1) * 4 != iVar9);\n      }\n      uVar18 = *(uint *)(puVar2 + -0x59a8);\n      *(uint *)(puVar2 + -0x6990) = uVar4;\n      goto LAB_00019798;\n    }\n  }\nLAB_000199b4:\n                    \n  xalloc_die();\n}" ({ "{") (declaration "char cVar1;" (primitive_type "char") (identifier "cVar1") (; ";")) (declaration "undefined *puVar2;" (type_identifier "undefined") (pointer_declarator "*puVar2" (* "*") (identifier "puVar2")) (; ";")) (declaration "undefined *puVar3;" (type_identifier "undefined") (pointer_declarator "*puVar3" (* "*") (identifier "puVar3")) (; ";")) (declaration "uint uVar4;" (type_identifier "uint") (identifier "uVar4") (; ";")) (declaration "undefined4 uVar5;" (type_identifier "undefined4") (identifier "uVar5") (; ";")) (declaration "int iVar6;" (primitive_type "int") (identifier "iVar6") (; ";")) (declaration "undefined4 *puVar7;" (type_identifier "undefined4") (pointer_declarator "*puVar7" (* "*") (identifier "puVar7")) (; ";")) (declaration "uint uVar8;" (type_identifier "uint") (identifier "uVar8") (; ";")) (declaration "int iVar9;" (primitive_type "int") (identifier "iVar9") (; ";")) (declaration "undefined4 *puVar10;" (type_identifier "undefined4") (pointer_declarator "*puVar10" (* "*") (identifier "puVar10")) (; ";")) (declaration "char *pcVar11;" (primitive_type "char") (pointer_declarator "*pcVar11" (* "*") (identifier "pcVar11")) (; ";")) (declaration "uint uVar12;" (type_identifier "uint") (identifier "uVar12") (; ";")) (declaration "int iVar13;" (primitive_type "int") (identifier "iVar13") (; ";")) (declaration "uint *puVar14;" (type_identifier "uint") (pointer_declarator "*puVar14" (* "*") (identifier "puVar14")) (; ";")) (declaration "undefined1 *puVar15;" (type_identifier "undefined1") (pointer_declarator "*puVar15" (* "*") (identifier "puVar15")) (; ";")) (declaration "uint uVar16;" (type_identifier "uint") (identifier "uVar16") (; ";")) (declaration "uint uVar17;" (type_identifier "uint") (identifier "uVar17") (; ";")) (declaration "uint uVar18;" (type_identifier "uint") (identifier "uVar18") (; ";")) (declaration "uint uVar19;" (type_identifier "uint") (identifier "uVar19") (; ";")) (declaration "uint uVar20;" (type_identifier "uint") (identifier "uVar20") (; ";")) (declaration "uint uVar21;" (type_identifier "uint") (identifier "uVar21") (; ";")) (expression_statement "puVar2 = PTR_DAT_00049208;" (assignment_expression "puVar2 = PTR_DAT_00049208" (identifier "puVar2") (= "=") (identifier "PTR_DAT_00049208")) (; ";")) (expression_statement "uVar18 = *(uint *)(PTR_DAT_00049208 + -0x59a8);" (assignment_expression "uVar18 = *(uint *)(PTR_DAT_00049208 + -0x59a8)" (identifier "uVar18") (= "=") (pointer_expression "*(uint *)(PTR_DAT_00049208 + -0x59a8)" (* "*") (cast_expression "(uint *)(PTR_DAT_00049208 + -0x59a8)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_DAT_00049208 + -0x59a8)" (( "(") (binary_expression "PTR_DAT_00049208 + -0x59a8" (identifier "PTR_DAT_00049208") (+ "+") (number_literal "-0x59a8")) () ")"))))) (; ";")) (expression_statement "uVar4 = *(uint *)(PTR_DAT_00049208 + -0x5af4);" (assignment_expression "uVar4 = *(uint *)(PTR_DAT_00049208 + -0x5af4)" (identifier "uVar4") (= "=") (pointer_expression "*(uint *)(PTR_DAT_00049208 + -0x5af4)" (* "*") (cast_expression "(uint *)(PTR_DAT_00049208 + -0x5af4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_DAT_00049208 + -0x5af4)" (( "(") (binary_expression "PTR_DAT_00049208 + -0x5af4" (identifier "PTR_DAT_00049208") (+ "+") (number_literal "-0x5af4")) () ")"))))) (; ";")) (expression_statement "uVar20 = uVar4;" (assignment_expression "uVar20 = uVar4" (identifier "uVar20") (= "=") (identifier "uVar4")) (; ";")) (if_statement "if (uVar18 <= uVar4) {\n    uVar20 = uVar18;\n  }" (if "if") (parenthesized_expression "(uVar18 <= uVar4)" (( "(") (binary_expression "uVar18 <= uVar4" (identifier "uVar18") (<= "<=") (identifier "uVar4")) () ")")) (compound_statement "{\n    uVar20 = uVar18;\n  }" ({ "{") (expression_statement "uVar20 = uVar18;" (assignment_expression "uVar20 = uVar18" (identifier "uVar20") (= "=") (identifier "uVar18")) (; ";")) (} "}"))) (if_statement "if (uVar20 <= *(uint *)(PTR_DAT_00049208 + -0x6990)) {\nLAB_00019798:\n    if (uVar20 != 0) {\n      iVar6 = 0;\n      iVar9 = 3;\n      puVar15 = *(undefined1 **)(PTR_DAT_00049208 + -0x5af0);\n      do {\n        puVar7 = *(undefined4 **)(puVar15 + 8);\n        iVar6 = iVar6 + 4;\n        *puVar15 = 1;\n        *(int *)(puVar15 + 4) = iVar9;\n        puVar10 = (undefined4 *)((int)puVar7 + iVar6);\n        do {\n          *puVar7 = 3;\n          puVar7 = puVar7 + 1;\n        } while (puVar10 != puVar7);\n        puVar15 = puVar15 + 0xc;\n        iVar9 = iVar9 + 3;\n      } while (iVar6 != uVar20 << 2);\n    }\n    puVar3 = PTR_DAT_00049208;\n    if (uVar18 != 0) {\n      uVar4 = 0;\n      iVar6 = *(int *)(PTR_DAT_00049208 + -0x59b0);\n      do {\n        uVar18 = FUN_00019404(*(undefined4 *)(iVar6 + uVar4 * 4));\n        uVar8 = *(uint *)(puVar2 + -0x59a8);\n        if (uVar20 != 0) {\n          uVar19 = *(uint *)(puVar3 + -0x5a58);\n          pcVar11 = *(char **)(puVar3 + -0x5af0);\n          uVar12 = 0;\n          do {\n            uVar16 = uVar12 + 1;\n            if (*pcVar11 != '\0') {\n              uVar17 = uVar18;\n              if (param_1 == 0) {\n                if (uVar16 == 0) {\n                  trap(7);\n                }\n                uVar21 = uVar4 % uVar16;\n                if (uVar21 != uVar12) {\nLAB_00019864:\n                  uVar17 = uVar18 + 2;\n                  goto LAB_00019868;\n                }\n                iVar6 = *(int *)(pcVar11 + 8);\n              }\n              else {\n                if (uVar16 == 0) {\n                  trap(7);\n                }\n                uVar21 = ((uVar8 + uVar16) - 1) / uVar16;\n                if (uVar21 == 0) {\n                  trap(7);\n                }\n                uVar21 = uVar4 / uVar21;\n                if (uVar21 != uVar12) goto LAB_00019864;\nLAB_00019868:\n                iVar6 = *(int *)(pcVar11 + 8);\n              }\n              puVar14 = (uint *)(iVar6 + uVar21 * 4);\n              uVar12 = *puVar14;\n              if (uVar12 < uVar17) {\n                *(uint *)(pcVar11 + 4) = (*(int *)(pcVar11 + 4) - uVar12) + uVar17;\n                *puVar14 = uVar17;\n                *pcVar11 = *(uint *)(pcVar11 + 4) < uVar19;\n              }\n            }\n            pcVar11 = pcVar11 + 0xc;\n            uVar12 = uVar16;\n          } while (uVar20 != uVar16);\n        }\n        uVar4 = uVar4 + 1;\n        iVar6 = *(int *)(puVar3 + -0x59b0);\n      } while (uVar4 < uVar8);\n    }\n    if (1 < uVar20) {\n      iVar6 = *(int *)(PTR_DAT_00049208 + -0x5af0) + uVar20 * 0xc;\n      cVar1 = *(char *)(iVar6 + -0xc);\n      while (cVar1 == '\0') {\n        uVar20 = uVar20 - 1;\n        if (uVar20 == 1) {\n          return 1;\n        }\n        cVar1 = *(char *)(iVar6 + -0x18);\n        iVar6 = iVar6 + -0xc;\n      }\n    }\n    return uVar20;\n  }" (if "if") (parenthesized_expression "(uVar20 <= *(uint *)(PTR_DAT_00049208 + -0x6990))" (( "(") (binary_expression "uVar20 <= *(uint *)(PTR_DAT_00049208 + -0x6990)" (identifier "uVar20") (<= "<=") (pointer_expression "*(uint *)(PTR_DAT_00049208 + -0x6990)" (* "*") (cast_expression "(uint *)(PTR_DAT_00049208 + -0x6990)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_DAT_00049208 + -0x6990)" (( "(") (binary_expression "PTR_DAT_00049208 + -0x6990" (identifier "PTR_DAT_00049208") (+ "+") (number_literal "-0x6990")) () ")"))))) () ")")) (compound_statement "{\nLAB_00019798:\n    if (uVar20 != 0) {\n      iVar6 = 0;\n      iVar9 = 3;\n      puVar15 = *(undefined1 **)(PTR_DAT_00049208 + -0x5af0);\n      do {\n        puVar7 = *(undefined4 **)(puVar15 + 8);\n        iVar6 = iVar6 + 4;\n        *puVar15 = 1;\n        *(int *)(puVar15 + 4) = iVar9;\n        puVar10 = (undefined4 *)((int)puVar7 + iVar6);\n        do {\n          *puVar7 = 3;\n          puVar7 = puVar7 + 1;\n        } while (puVar10 != puVar7);\n        puVar15 = puVar15 + 0xc;\n        iVar9 = iVar9 + 3;\n      } while (iVar6 != uVar20 << 2);\n    }\n    puVar3 = PTR_DAT_00049208;\n    if (uVar18 != 0) {\n      uVar4 = 0;\n      iVar6 = *(int *)(PTR_DAT_00049208 + -0x59b0);\n      do {\n        uVar18 = FUN_00019404(*(undefined4 *)(iVar6 + uVar4 * 4));\n        uVar8 = *(uint *)(puVar2 + -0x59a8);\n        if (uVar20 != 0) {\n          uVar19 = *(uint *)(puVar3 + -0x5a58);\n          pcVar11 = *(char **)(puVar3 + -0x5af0);\n          uVar12 = 0;\n          do {\n            uVar16 = uVar12 + 1;\n            if (*pcVar11 != '\0') {\n              uVar17 = uVar18;\n              if (param_1 == 0) {\n                if (uVar16 == 0) {\n                  trap(7);\n                }\n                uVar21 = uVar4 % uVar16;\n                if (uVar21 != uVar12) {\nLAB_00019864:\n                  uVar17 = uVar18 + 2;\n                  goto LAB_00019868;\n                }\n                iVar6 = *(int *)(pcVar11 + 8);\n              }\n              else {\n                if (uVar16 == 0) {\n                  trap(7);\n                }\n                uVar21 = ((uVar8 + uVar16) - 1) / uVar16;\n                if (uVar21 == 0) {\n                  trap(7);\n                }\n                uVar21 = uVar4 / uVar21;\n                if (uVar21 != uVar12) goto LAB_00019864;\nLAB_00019868:\n                iVar6 = *(int *)(pcVar11 + 8);\n              }\n              puVar14 = (uint *)(iVar6 + uVar21 * 4);\n              uVar12 = *puVar14;\n              if (uVar12 < uVar17) {\n                *(uint *)(pcVar11 + 4) = (*(int *)(pcVar11 + 4) - uVar12) + uVar17;\n                *puVar14 = uVar17;\n                *pcVar11 = *(uint *)(pcVar11 + 4) < uVar19;\n              }\n            }\n            pcVar11 = pcVar11 + 0xc;\n            uVar12 = uVar16;\n          } while (uVar20 != uVar16);\n        }\n        uVar4 = uVar4 + 1;\n        iVar6 = *(int *)(puVar3 + -0x59b0);\n      } while (uVar4 < uVar8);\n    }\n    if (1 < uVar20) {\n      iVar6 = *(int *)(PTR_DAT_00049208 + -0x5af0) + uVar20 * 0xc;\n      cVar1 = *(char *)(iVar6 + -0xc);\n      while (cVar1 == '\0') {\n        uVar20 = uVar20 - 1;\n        if (uVar20 == 1) {\n          return 1;\n        }\n        cVar1 = *(char *)(iVar6 + -0x18);\n        iVar6 = iVar6 + -0xc;\n      }\n    }\n    return uVar20;\n  }" ({ "{") (labeled_statement "LAB_00019798:\n    if (uVar20 != 0) {\n      iVar6 = 0;\n      iVar9 = 3;\n      puVar15 = *(undefined1 **)(PTR_DAT_00049208 + -0x5af0);\n      do {\n        puVar7 = *(undefined4 **)(puVar15 + 8);\n        iVar6 = iVar6 + 4;\n        *puVar15 = 1;\n        *(int *)(puVar15 + 4) = iVar9;\n        puVar10 = (undefined4 *)((int)puVar7 + iVar6);\n        do {\n          *puVar7 = 3;\n          puVar7 = puVar7 + 1;\n        } while (puVar10 != puVar7);\n        puVar15 = puVar15 + 0xc;\n        iVar9 = iVar9 + 3;\n      } while (iVar6 != uVar20 << 2);\n    }" (statement_identifier "LAB_00019798") (: ":") (if_statement "if (uVar20 != 0) {\n      iVar6 = 0;\n      iVar9 = 3;\n      puVar15 = *(undefined1 **)(PTR_DAT_00049208 + -0x5af0);\n      do {\n        puVar7 = *(undefined4 **)(puVar15 + 8);\n        iVar6 = iVar6 + 4;\n        *puVar15 = 1;\n        *(int *)(puVar15 + 4) = iVar9;\n        puVar10 = (undefined4 *)((int)puVar7 + iVar6);\n        do {\n          *puVar7 = 3;\n          puVar7 = puVar7 + 1;\n        } while (puVar10 != puVar7);\n        puVar15 = puVar15 + 0xc;\n        iVar9 = iVar9 + 3;\n      } while (iVar6 != uVar20 << 2);\n    }" (if "if") (parenthesized_expression "(uVar20 != 0)" (( "(") (binary_expression "uVar20 != 0" (identifier "uVar20") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      iVar6 = 0;\n      iVar9 = 3;\n      puVar15 = *(undefined1 **)(PTR_DAT_00049208 + -0x5af0);\n      do {\n        puVar7 = *(undefined4 **)(puVar15 + 8);\n        iVar6 = iVar6 + 4;\n        *puVar15 = 1;\n        *(int *)(puVar15 + 4) = iVar9;\n        puVar10 = (undefined4 *)((int)puVar7 + iVar6);\n        do {\n          *puVar7 = 3;\n          puVar7 = puVar7 + 1;\n        } while (puVar10 != puVar7);\n        puVar15 = puVar15 + 0xc;\n        iVar9 = iVar9 + 3;\n      } while (iVar6 != uVar20 << 2);\n    }" ({ "{") (expression_statement "iVar6 = 0;" (assignment_expression "iVar6 = 0" (identifier "iVar6") (= "=") (number_literal "0")) (; ";")) (expression_statement "iVar9 = 3;" (assignment_expression "iVar9 = 3" (identifier "iVar9") (= "=") (number_literal "3")) (; ";")) (expression_statement "puVar15 = *(undefined1 **)(PTR_DAT_00049208 + -0x5af0);" (assignment_expression "puVar15 = *(undefined1 **)(PTR_DAT_00049208 + -0x5af0)" (identifier "puVar15") (= "=") (pointer_expression "*(undefined1 **)(PTR_DAT_00049208 + -0x5af0)" (* "*") (cast_expression "(undefined1 **)(PTR_DAT_00049208 + -0x5af0)" (( "(") (type_descriptor "undefined1 **" (type_identifier "undefined1") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(PTR_DAT_00049208 + -0x5af0)" (( "(") (binary_expression "PTR_DAT_00049208 + -0x5af0" (identifier "PTR_DAT_00049208") (+ "+") (number_literal "-0x5af0")) () ")"))))) (; ";")) (do_statement "do {\n        puVar7 = *(undefined4 **)(puVar15 + 8);\n        iVar6 = iVar6 + 4;\n        *puVar15 = 1;\n        *(int *)(puVar15 + 4) = iVar9;\n        puVar10 = (undefined4 *)((int)puVar7 + iVar6);\n        do {\n          *puVar7 = 3;\n          puVar7 = puVar7 + 1;\n        } while (puVar10 != puVar7);\n        puVar15 = puVar15 + 0xc;\n        iVar9 = iVar9 + 3;\n      } while (iVar6 != uVar20 << 2);" (do "do") (compound_statement "{\n        puVar7 = *(undefined4 **)(puVar15 + 8);\n        iVar6 = iVar6 + 4;\n        *puVar15 = 1;\n        *(int *)(puVar15 + 4) = iVar9;\n        puVar10 = (undefined4 *)((int)puVar7 + iVar6);\n        do {\n          *puVar7 = 3;\n          puVar7 = puVar7 + 1;\n        } while (puVar10 != puVar7);\n        puVar15 = puVar15 + 0xc;\n        iVar9 = iVar9 + 3;\n      }" ({ "{") (expression_statement "puVar7 = *(undefined4 **)(puVar15 + 8);" (assignment_expression "puVar7 = *(undefined4 **)(puVar15 + 8)" (identifier "puVar7") (= "=") (pointer_expression "*(undefined4 **)(puVar15 + 8)" (* "*") (cast_expression "(undefined4 **)(puVar15 + 8)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar15 + 8)" (( "(") (binary_expression "puVar15 + 8" (identifier "puVar15") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (expression_statement "iVar6 = iVar6 + 4;" (assignment_expression "iVar6 = iVar6 + 4" (identifier "iVar6") (= "=") (binary_expression "iVar6 + 4" (identifier "iVar6") (+ "+") (number_literal "4"))) (; ";")) (expression_statement "*puVar15 = 1;" (assignment_expression "*puVar15 = 1" (pointer_expression "*puVar15" (* "*") (identifier "puVar15")) (= "=") (number_literal "1")) (; ";")) (expression_statement "*(int *)(puVar15 + 4) = iVar9;" (assignment_expression "*(int *)(puVar15 + 4) = iVar9" (pointer_expression "*(int *)(puVar15 + 4)" (* "*") (cast_expression "(int *)(puVar15 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar15 + 4)" (( "(") (binary_expression "puVar15 + 4" (identifier "puVar15") (+ "+") (number_literal "4")) () ")")))) (= "=") (identifier "iVar9")) (; ";")) (expression_statement "puVar10 = (undefined4 *)((int)puVar7 + iVar6);" (assignment_expression "puVar10 = (undefined4 *)((int)puVar7 + iVar6)" (identifier "puVar10") (= "=") (cast_expression "(undefined4 *)((int)puVar7 + iVar6)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar7 + iVar6)" (( "(") (binary_expression "(int)puVar7 + iVar6" (cast_expression "(int)puVar7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar7")) (+ "+") (identifier "iVar6")) () ")")))) (; ";")) (do_statement "do {\n          *puVar7 = 3;\n          puVar7 = puVar7 + 1;\n        } while (puVar10 != puVar7);" (do "do") (compound_statement "{\n          *puVar7 = 3;\n          puVar7 = puVar7 + 1;\n        }" ({ "{") (expression_statement "*puVar7 = 3;" (assignment_expression "*puVar7 = 3" (pointer_expression "*puVar7" (* "*") (identifier "puVar7")) (= "=") (number_literal "3")) (; ";")) (expression_statement "puVar7 = puVar7 + 1;" (assignment_expression "puVar7 = puVar7 + 1" (identifier "puVar7") (= "=") (binary_expression "puVar7 + 1" (identifier "puVar7") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(puVar10 != puVar7)" (( "(") (binary_expression "puVar10 != puVar7" (identifier "puVar10") (!= "!=") (identifier "puVar7")) () ")")) (; ";")) (expression_statement "puVar15 = puVar15 + 0xc;" (assignment_expression "puVar15 = puVar15 + 0xc" (identifier "puVar15") (= "=") (binary_expression "puVar15 + 0xc" (identifier "puVar15") (+ "+") (number_literal "0xc"))) (; ";")) (expression_statement "iVar9 = iVar9 + 3;" (assignment_expression "iVar9 = iVar9 + 3" (identifier "iVar9") (= "=") (binary_expression "iVar9 + 3" (identifier "iVar9") (+ "+") (number_literal "3"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar6 != uVar20 << 2)" (( "(") (binary_expression "iVar6 != uVar20 << 2" (identifier "iVar6") (!= "!=") (binary_expression "uVar20 << 2" (identifier "uVar20") (<< "<<") (number_literal "2"))) () ")")) (; ";")) (} "}")))) (expression_statement "puVar3 = PTR_DAT_00049208;" (assignment_expression "puVar3 = PTR_DAT_00049208" (identifier "puVar3") (= "=") (identifier "PTR_DAT_00049208")) (; ";")) (if_statement "if (uVar18 != 0) {\n      uVar4 = 0;\n      iVar6 = *(int *)(PTR_DAT_00049208 + -0x59b0);\n      do {\n        uVar18 = FUN_00019404(*(undefined4 *)(iVar6 + uVar4 * 4));\n        uVar8 = *(uint *)(puVar2 + -0x59a8);\n        if (uVar20 != 0) {\n          uVar19 = *(uint *)(puVar3 + -0x5a58);\n          pcVar11 = *(char **)(puVar3 + -0x5af0);\n          uVar12 = 0;\n          do {\n            uVar16 = uVar12 + 1;\n            if (*pcVar11 != '\0') {\n              uVar17 = uVar18;\n              if (param_1 == 0) {\n                if (uVar16 == 0) {\n                  trap(7);\n                }\n                uVar21 = uVar4 % uVar16;\n                if (uVar21 != uVar12) {\nLAB_00019864:\n                  uVar17 = uVar18 + 2;\n                  goto LAB_00019868;\n                }\n                iVar6 = *(int *)(pcVar11 + 8);\n              }\n              else {\n                if (uVar16 == 0) {\n                  trap(7);\n                }\n                uVar21 = ((uVar8 + uVar16) - 1) / uVar16;\n                if (uVar21 == 0) {\n                  trap(7);\n                }\n                uVar21 = uVar4 / uVar21;\n                if (uVar21 != uVar12) goto LAB_00019864;\nLAB_00019868:\n                iVar6 = *(int *)(pcVar11 + 8);\n              }\n              puVar14 = (uint *)(iVar6 + uVar21 * 4);\n              uVar12 = *puVar14;\n              if (uVar12 < uVar17) {\n                *(uint *)(pcVar11 + 4) = (*(int *)(pcVar11 + 4) - uVar12) + uVar17;\n                *puVar14 = uVar17;\n                *pcVar11 = *(uint *)(pcVar11 + 4) < uVar19;\n              }\n            }\n            pcVar11 = pcVar11 + 0xc;\n            uVar12 = uVar16;\n          } while (uVar20 != uVar16);\n        }\n        uVar4 = uVar4 + 1;\n        iVar6 = *(int *)(puVar3 + -0x59b0);\n      } while (uVar4 < uVar8);\n    }" (if "if") (parenthesized_expression "(uVar18 != 0)" (( "(") (binary_expression "uVar18 != 0" (identifier "uVar18") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      uVar4 = 0;\n      iVar6 = *(int *)(PTR_DAT_00049208 + -0x59b0);\n      do {\n        uVar18 = FUN_00019404(*(undefined4 *)(iVar6 + uVar4 * 4));\n        uVar8 = *(uint *)(puVar2 + -0x59a8);\n        if (uVar20 != 0) {\n          uVar19 = *(uint *)(puVar3 + -0x5a58);\n          pcVar11 = *(char **)(puVar3 + -0x5af0);\n          uVar12 = 0;\n          do {\n            uVar16 = uVar12 + 1;\n            if (*pcVar11 != '\0') {\n              uVar17 = uVar18;\n              if (param_1 == 0) {\n                if (uVar16 == 0) {\n                  trap(7);\n                }\n                uVar21 = uVar4 % uVar16;\n                if (uVar21 != uVar12) {\nLAB_00019864:\n                  uVar17 = uVar18 + 2;\n                  goto LAB_00019868;\n                }\n                iVar6 = *(int *)(pcVar11 + 8);\n              }\n              else {\n                if (uVar16 == 0) {\n                  trap(7);\n                }\n                uVar21 = ((uVar8 + uVar16) - 1) / uVar16;\n                if (uVar21 == 0) {\n                  trap(7);\n                }\n                uVar21 = uVar4 / uVar21;\n                if (uVar21 != uVar12) goto LAB_00019864;\nLAB_00019868:\n                iVar6 = *(int *)(pcVar11 + 8);\n              }\n              puVar14 = (uint *)(iVar6 + uVar21 * 4);\n              uVar12 = *puVar14;\n              if (uVar12 < uVar17) {\n                *(uint *)(pcVar11 + 4) = (*(int *)(pcVar11 + 4) - uVar12) + uVar17;\n                *puVar14 = uVar17;\n                *pcVar11 = *(uint *)(pcVar11 + 4) < uVar19;\n              }\n            }\n            pcVar11 = pcVar11 + 0xc;\n            uVar12 = uVar16;\n          } while (uVar20 != uVar16);\n        }\n        uVar4 = uVar4 + 1;\n        iVar6 = *(int *)(puVar3 + -0x59b0);\n      } while (uVar4 < uVar8);\n    }" ({ "{") (expression_statement "uVar4 = 0;" (assignment_expression "uVar4 = 0" (identifier "uVar4") (= "=") (number_literal "0")) (; ";")) (expression_statement "iVar6 = *(int *)(PTR_DAT_00049208 + -0x59b0);" (assignment_expression "iVar6 = *(int *)(PTR_DAT_00049208 + -0x59b0)" (identifier "iVar6") (= "=") (pointer_expression "*(int *)(PTR_DAT_00049208 + -0x59b0)" (* "*") (cast_expression "(int *)(PTR_DAT_00049208 + -0x59b0)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_DAT_00049208 + -0x59b0)" (( "(") (binary_expression "PTR_DAT_00049208 + -0x59b0" (identifier "PTR_DAT_00049208") (+ "+") (number_literal "-0x59b0")) () ")"))))) (; ";")) (do_statement "do {\n        uVar18 = FUN_00019404(*(undefined4 *)(iVar6 + uVar4 * 4));\n        uVar8 = *(uint *)(puVar2 + -0x59a8);\n        if (uVar20 != 0) {\n          uVar19 = *(uint *)(puVar3 + -0x5a58);\n          pcVar11 = *(char **)(puVar3 + -0x5af0);\n          uVar12 = 0;\n          do {\n            uVar16 = uVar12 + 1;\n            if (*pcVar11 != '\0') {\n              uVar17 = uVar18;\n              if (param_1 == 0) {\n                if (uVar16 == 0) {\n                  trap(7);\n                }\n                uVar21 = uVar4 % uVar16;\n                if (uVar21 != uVar12) {\nLAB_00019864:\n                  uVar17 = uVar18 + 2;\n                  goto LAB_00019868;\n                }\n                iVar6 = *(int *)(pcVar11 + 8);\n              }\n              else {\n                if (uVar16 == 0) {\n                  trap(7);\n                }\n                uVar21 = ((uVar8 + uVar16) - 1) / uVar16;\n                if (uVar21 == 0) {\n                  trap(7);\n                }\n                uVar21 = uVar4 / uVar21;\n                if (uVar21 != uVar12) goto LAB_00019864;\nLAB_00019868:\n                iVar6 = *(int *)(pcVar11 + 8);\n              }\n              puVar14 = (uint *)(iVar6 + uVar21 * 4);\n              uVar12 = *puVar14;\n              if (uVar12 < uVar17) {\n                *(uint *)(pcVar11 + 4) = (*(int *)(pcVar11 + 4) - uVar12) + uVar17;\n                *puVar14 = uVar17;\n                *pcVar11 = *(uint *)(pcVar11 + 4) < uVar19;\n              }\n            }\n            pcVar11 = pcVar11 + 0xc;\n            uVar12 = uVar16;\n          } while (uVar20 != uVar16);\n        }\n        uVar4 = uVar4 + 1;\n        iVar6 = *(int *)(puVar3 + -0x59b0);\n      } while (uVar4 < uVar8);" (do "do") (compound_statement "{\n        uVar18 = FUN_00019404(*(undefined4 *)(iVar6 + uVar4 * 4));\n        uVar8 = *(uint *)(puVar2 + -0x59a8);\n        if (uVar20 != 0) {\n          uVar19 = *(uint *)(puVar3 + -0x5a58);\n          pcVar11 = *(char **)(puVar3 + -0x5af0);\n          uVar12 = 0;\n          do {\n            uVar16 = uVar12 + 1;\n            if (*pcVar11 != '\0') {\n              uVar17 = uVar18;\n              if (param_1 == 0) {\n                if (uVar16 == 0) {\n                  trap(7);\n                }\n                uVar21 = uVar4 % uVar16;\n                if (uVar21 != uVar12) {\nLAB_00019864:\n                  uVar17 = uVar18 + 2;\n                  goto LAB_00019868;\n                }\n                iVar6 = *(int *)(pcVar11 + 8);\n              }\n              else {\n                if (uVar16 == 0) {\n                  trap(7);\n                }\n                uVar21 = ((uVar8 + uVar16) - 1) / uVar16;\n                if (uVar21 == 0) {\n                  trap(7);\n                }\n                uVar21 = uVar4 / uVar21;\n                if (uVar21 != uVar12) goto LAB_00019864;\nLAB_00019868:\n                iVar6 = *(int *)(pcVar11 + 8);\n              }\n              puVar14 = (uint *)(iVar6 + uVar21 * 4);\n              uVar12 = *puVar14;\n              if (uVar12 < uVar17) {\n                *(uint *)(pcVar11 + 4) = (*(int *)(pcVar11 + 4) - uVar12) + uVar17;\n                *puVar14 = uVar17;\n                *pcVar11 = *(uint *)(pcVar11 + 4) < uVar19;\n              }\n            }\n            pcVar11 = pcVar11 + 0xc;\n            uVar12 = uVar16;\n          } while (uVar20 != uVar16);\n        }\n        uVar4 = uVar4 + 1;\n        iVar6 = *(int *)(puVar3 + -0x59b0);\n      }" ({ "{") (expression_statement "uVar18 = FUN_00019404(*(undefined4 *)(iVar6 + uVar4 * 4));" (assignment_expression "uVar18 = FUN_00019404(*(undefined4 *)(iVar6 + uVar4 * 4))" (identifier "uVar18") (= "=") (call_expression "FUN_00019404(*(undefined4 *)(iVar6 + uVar4 * 4))" (identifier "FUN_00019404") (argument_list "(*(undefined4 *)(iVar6 + uVar4 * 4))" (( "(") (pointer_expression "*(undefined4 *)(iVar6 + uVar4 * 4)" (* "*") (cast_expression "(undefined4 *)(iVar6 + uVar4 * 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar6 + uVar4 * 4)" (( "(") (binary_expression "iVar6 + uVar4 * 4" (identifier "iVar6") (+ "+") (binary_expression "uVar4 * 4" (identifier "uVar4") (* "*") (number_literal "4"))) () ")")))) () ")")))) (; ";")) (expression_statement "uVar8 = *(uint *)(puVar2 + -0x59a8);" (assignment_expression "uVar8 = *(uint *)(puVar2 + -0x59a8)" (identifier "uVar8") (= "=") (pointer_expression "*(uint *)(puVar2 + -0x59a8)" (* "*") (cast_expression "(uint *)(puVar2 + -0x59a8)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar2 + -0x59a8)" (( "(") (binary_expression "puVar2 + -0x59a8" (identifier "puVar2") (+ "+") (number_literal "-0x59a8")) () ")"))))) (; ";")) (if_statement "if (uVar20 != 0) {\n          uVar19 = *(uint *)(puVar3 + -0x5a58);\n          pcVar11 = *(char **)(puVar3 + -0x5af0);\n          uVar12 = 0;\n          do {\n            uVar16 = uVar12 + 1;\n            if (*pcVar11 != '\0') {\n              uVar17 = uVar18;\n              if (param_1 == 0) {\n                if (uVar16 == 0) {\n                  trap(7);\n                }\n                uVar21 = uVar4 % uVar16;\n                if (uVar21 != uVar12) {\nLAB_00019864:\n                  uVar17 = uVar18 + 2;\n                  goto LAB_00019868;\n                }\n                iVar6 = *(int *)(pcVar11 + 8);\n              }\n              else {\n                if (uVar16 == 0) {\n                  trap(7);\n                }\n                uVar21 = ((uVar8 + uVar16) - 1) / uVar16;\n                if (uVar21 == 0) {\n                  trap(7);\n                }\n                uVar21 = uVar4 / uVar21;\n                if (uVar21 != uVar12) goto LAB_00019864;\nLAB_00019868:\n                iVar6 = *(int *)(pcVar11 + 8);\n              }\n              puVar14 = (uint *)(iVar6 + uVar21 * 4);\n              uVar12 = *puVar14;\n              if (uVar12 < uVar17) {\n                *(uint *)(pcVar11 + 4) = (*(int *)(pcVar11 + 4) - uVar12) + uVar17;\n                *puVar14 = uVar17;\n                *pcVar11 = *(uint *)(pcVar11 + 4) < uVar19;\n              }\n            }\n            pcVar11 = pcVar11 + 0xc;\n            uVar12 = uVar16;\n          } while (uVar20 != uVar16);\n        }" (if "if") (parenthesized_expression "(uVar20 != 0)" (( "(") (binary_expression "uVar20 != 0" (identifier "uVar20") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          uVar19 = *(uint *)(puVar3 + -0x5a58);\n          pcVar11 = *(char **)(puVar3 + -0x5af0);\n          uVar12 = 0;\n          do {\n            uVar16 = uVar12 + 1;\n            if (*pcVar11 != '\0') {\n              uVar17 = uVar18;\n              if (param_1 == 0) {\n                if (uVar16 == 0) {\n                  trap(7);\n                }\n                uVar21 = uVar4 % uVar16;\n                if (uVar21 != uVar12) {\nLAB_00019864:\n                  uVar17 = uVar18 + 2;\n                  goto LAB_00019868;\n                }\n                iVar6 = *(int *)(pcVar11 + 8);\n              }\n              else {\n                if (uVar16 == 0) {\n                  trap(7);\n                }\n                uVar21 = ((uVar8 + uVar16) - 1) / uVar16;\n                if (uVar21 == 0) {\n                  trap(7);\n                }\n                uVar21 = uVar4 / uVar21;\n                if (uVar21 != uVar12) goto LAB_00019864;\nLAB_00019868:\n                iVar6 = *(int *)(pcVar11 + 8);\n              }\n              puVar14 = (uint *)(iVar6 + uVar21 * 4);\n              uVar12 = *puVar14;\n              if (uVar12 < uVar17) {\n                *(uint *)(pcVar11 + 4) = (*(int *)(pcVar11 + 4) - uVar12) + uVar17;\n                *puVar14 = uVar17;\n                *pcVar11 = *(uint *)(pcVar11 + 4) < uVar19;\n              }\n            }\n            pcVar11 = pcVar11 + 0xc;\n            uVar12 = uVar16;\n          } while (uVar20 != uVar16);\n        }" ({ "{") (expression_statement "uVar19 = *(uint *)(puVar3 + -0x5a58);" (assignment_expression "uVar19 = *(uint *)(puVar3 + -0x5a58)" (identifier "uVar19") (= "=") (pointer_expression "*(uint *)(puVar3 + -0x5a58)" (* "*") (cast_expression "(uint *)(puVar3 + -0x5a58)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar3 + -0x5a58)" (( "(") (binary_expression "puVar3 + -0x5a58" (identifier "puVar3") (+ "+") (number_literal "-0x5a58")) () ")"))))) (; ";")) (expression_statement "pcVar11 = *(char **)(puVar3 + -0x5af0);" (assignment_expression "pcVar11 = *(char **)(puVar3 + -0x5af0)" (identifier "pcVar11") (= "=") (pointer_expression "*(char **)(puVar3 + -0x5af0)" (* "*") (cast_expression "(char **)(puVar3 + -0x5af0)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar3 + -0x5af0)" (( "(") (binary_expression "puVar3 + -0x5af0" (identifier "puVar3") (+ "+") (number_literal "-0x5af0")) () ")"))))) (; ";")) (expression_statement "uVar12 = 0;" (assignment_expression "uVar12 = 0" (identifier "uVar12") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n            uVar16 = uVar12 + 1;\n            if (*pcVar11 != '\0') {\n              uVar17 = uVar18;\n              if (param_1 == 0) {\n                if (uVar16 == 0) {\n                  trap(7);\n                }\n                uVar21 = uVar4 % uVar16;\n                if (uVar21 != uVar12) {\nLAB_00019864:\n                  uVar17 = uVar18 + 2;\n                  goto LAB_00019868;\n                }\n                iVar6 = *(int *)(pcVar11 + 8);\n              }\n              else {\n                if (uVar16 == 0) {\n                  trap(7);\n                }\n                uVar21 = ((uVar8 + uVar16) - 1) / uVar16;\n                if (uVar21 == 0) {\n                  trap(7);\n                }\n                uVar21 = uVar4 / uVar21;\n                if (uVar21 != uVar12) goto LAB_00019864;\nLAB_00019868:\n                iVar6 = *(int *)(pcVar11 + 8);\n              }\n              puVar14 = (uint *)(iVar6 + uVar21 * 4);\n              uVar12 = *puVar14;\n              if (uVar12 < uVar17) {\n                *(uint *)(pcVar11 + 4) = (*(int *)(pcVar11 + 4) - uVar12) + uVar17;\n                *puVar14 = uVar17;\n                *pcVar11 = *(uint *)(pcVar11 + 4) < uVar19;\n              }\n            }\n            pcVar11 = pcVar11 + 0xc;\n            uVar12 = uVar16;\n          } while (uVar20 != uVar16);" (do "do") (compound_statement "{\n            uVar16 = uVar12 + 1;\n            if (*pcVar11 != '\0') {\n              uVar17 = uVar18;\n              if (param_1 == 0) {\n                if (uVar16 == 0) {\n                  trap(7);\n                }\n                uVar21 = uVar4 % uVar16;\n                if (uVar21 != uVar12) {\nLAB_00019864:\n                  uVar17 = uVar18 + 2;\n                  goto LAB_00019868;\n                }\n                iVar6 = *(int *)(pcVar11 + 8);\n              }\n              else {\n                if (uVar16 == 0) {\n                  trap(7);\n                }\n                uVar21 = ((uVar8 + uVar16) - 1) / uVar16;\n                if (uVar21 == 0) {\n                  trap(7);\n                }\n                uVar21 = uVar4 / uVar21;\n                if (uVar21 != uVar12) goto LAB_00019864;\nLAB_00019868:\n                iVar6 = *(int *)(pcVar11 + 8);\n              }\n              puVar14 = (uint *)(iVar6 + uVar21 * 4);\n              uVar12 = *puVar14;\n              if (uVar12 < uVar17) {\n                *(uint *)(pcVar11 + 4) = (*(int *)(pcVar11 + 4) - uVar12) + uVar17;\n                *puVar14 = uVar17;\n                *pcVar11 = *(uint *)(pcVar11 + 4) < uVar19;\n              }\n            }\n            pcVar11 = pcVar11 + 0xc;\n            uVar12 = uVar16;\n          }" ({ "{") (expression_statement "uVar16 = uVar12 + 1;" (assignment_expression "uVar16 = uVar12 + 1" (identifier "uVar16") (= "=") (binary_expression "uVar12 + 1" (identifier "uVar12") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (*pcVar11 != '\0') {\n              uVar17 = uVar18;\n              if (param_1 == 0) {\n                if (uVar16 == 0) {\n                  trap(7);\n                }\n                uVar21 = uVar4 % uVar16;\n                if (uVar21 != uVar12) {\nLAB_00019864:\n                  uVar17 = uVar18 + 2;\n                  goto LAB_00019868;\n                }\n                iVar6 = *(int *)(pcVar11 + 8);\n              }\n              else {\n                if (uVar16 == 0) {\n                  trap(7);\n                }\n                uVar21 = ((uVar8 + uVar16) - 1) / uVar16;\n                if (uVar21 == 0) {\n                  trap(7);\n                }\n                uVar21 = uVar4 / uVar21;\n                if (uVar21 != uVar12) goto LAB_00019864;\nLAB_00019868:\n                iVar6 = *(int *)(pcVar11 + 8);\n              }\n              puVar14 = (uint *)(iVar6 + uVar21 * 4);\n              uVar12 = *puVar14;\n              if (uVar12 < uVar17) {\n                *(uint *)(pcVar11 + 4) = (*(int *)(pcVar11 + 4) - uVar12) + uVar17;\n                *puVar14 = uVar17;\n                *pcVar11 = *(uint *)(pcVar11 + 4) < uVar19;\n              }\n            }" (if "if") (parenthesized_expression "(*pcVar11 != '\0')" (( "(") (binary_expression "*pcVar11 != '\0'" (pointer_expression "*pcVar11" (* "*") (identifier "pcVar11")) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n              uVar17 = uVar18;\n              if (param_1 == 0) {\n                if (uVar16 == 0) {\n                  trap(7);\n                }\n                uVar21 = uVar4 % uVar16;\n                if (uVar21 != uVar12) {\nLAB_00019864:\n                  uVar17 = uVar18 + 2;\n                  goto LAB_00019868;\n                }\n                iVar6 = *(int *)(pcVar11 + 8);\n              }\n              else {\n                if (uVar16 == 0) {\n                  trap(7);\n                }\n                uVar21 = ((uVar8 + uVar16) - 1) / uVar16;\n                if (uVar21 == 0) {\n                  trap(7);\n                }\n                uVar21 = uVar4 / uVar21;\n                if (uVar21 != uVar12) goto LAB_00019864;\nLAB_00019868:\n                iVar6 = *(int *)(pcVar11 + 8);\n              }\n              puVar14 = (uint *)(iVar6 + uVar21 * 4);\n              uVar12 = *puVar14;\n              if (uVar12 < uVar17) {\n                *(uint *)(pcVar11 + 4) = (*(int *)(pcVar11 + 4) - uVar12) + uVar17;\n                *puVar14 = uVar17;\n                *pcVar11 = *(uint *)(pcVar11 + 4) < uVar19;\n              }\n            }" ({ "{") (expression_statement "uVar17 = uVar18;" (assignment_expression "uVar17 = uVar18" (identifier "uVar17") (= "=") (identifier "uVar18")) (; ";")) (if_statement "if (param_1 == 0) {\n                if (uVar16 == 0) {\n                  trap(7);\n                }\n                uVar21 = uVar4 % uVar16;\n                if (uVar21 != uVar12) {\nLAB_00019864:\n                  uVar17 = uVar18 + 2;\n                  goto LAB_00019868;\n                }\n                iVar6 = *(int *)(pcVar11 + 8);\n              }\n              else {\n                if (uVar16 == 0) {\n                  trap(7);\n                }\n                uVar21 = ((uVar8 + uVar16) - 1) / uVar16;\n                if (uVar21 == 0) {\n                  trap(7);\n                }\n                uVar21 = uVar4 / uVar21;\n                if (uVar21 != uVar12) goto LAB_00019864;\nLAB_00019868:\n                iVar6 = *(int *)(pcVar11 + 8);\n              }" (if "if") (parenthesized_expression "(param_1 == 0)" (( "(") (binary_expression "param_1 == 0" (identifier "param_1") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                if (uVar16 == 0) {\n                  trap(7);\n                }\n                uVar21 = uVar4 % uVar16;\n                if (uVar21 != uVar12) {\nLAB_00019864:\n                  uVar17 = uVar18 + 2;\n                  goto LAB_00019868;\n                }\n                iVar6 = *(int *)(pcVar11 + 8);\n              }" ({ "{") (if_statement "if (uVar16 == 0) {\n                  trap(7);\n                }" (if "if") (parenthesized_expression "(uVar16 == 0)" (( "(") (binary_expression "uVar16 == 0" (identifier "uVar16") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                  trap(7);\n                }" ({ "{") (expression_statement "trap(7);" (call_expression "trap(7)" (identifier "trap") (argument_list "(7)" (( "(") (number_literal "7") () ")"))) (; ";")) (} "}"))) (expression_statement "uVar21 = uVar4 % uVar16;" (assignment_expression "uVar21 = uVar4 % uVar16" (identifier "uVar21") (= "=") (binary_expression "uVar4 % uVar16" (identifier "uVar4") (% "%") (identifier "uVar16"))) (; ";")) (if_statement "if (uVar21 != uVar12) {\nLAB_00019864:\n                  uVar17 = uVar18 + 2;\n                  goto LAB_00019868;\n                }" (if "if") (parenthesized_expression "(uVar21 != uVar12)" (( "(") (binary_expression "uVar21 != uVar12" (identifier "uVar21") (!= "!=") (identifier "uVar12")) () ")")) (compound_statement "{\nLAB_00019864:\n                  uVar17 = uVar18 + 2;\n                  goto LAB_00019868;\n                }" ({ "{") (labeled_statement "LAB_00019864:\n                  uVar17 = uVar18 + 2;" (statement_identifier "LAB_00019864") (: ":") (expression_statement "uVar17 = uVar18 + 2;" (assignment_expression "uVar17 = uVar18 + 2" (identifier "uVar17") (= "=") (binary_expression "uVar18 + 2" (identifier "uVar18") (+ "+") (number_literal "2"))) (; ";"))) (goto_statement "goto LAB_00019868;" (goto "goto") (statement_identifier "LAB_00019868") (; ";")) (} "}"))) (expression_statement "iVar6 = *(int *)(pcVar11 + 8);" (assignment_expression "iVar6 = *(int *)(pcVar11 + 8)" (identifier "iVar6") (= "=") (pointer_expression "*(int *)(pcVar11 + 8)" (* "*") (cast_expression "(int *)(pcVar11 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pcVar11 + 8)" (( "(") (binary_expression "pcVar11 + 8" (identifier "pcVar11") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (} "}")) (else_clause "else {\n                if (uVar16 == 0) {\n                  trap(7);\n                }\n                uVar21 = ((uVar8 + uVar16) - 1) / uVar16;\n                if (uVar21 == 0) {\n                  trap(7);\n                }\n                uVar21 = uVar4 / uVar21;\n                if (uVar21 != uVar12) goto LAB_00019864;\nLAB_00019868:\n                iVar6 = *(int *)(pcVar11 + 8);\n              }" (else "else") (compound_statement "{\n                if (uVar16 == 0) {\n                  trap(7);\n                }\n                uVar21 = ((uVar8 + uVar16) - 1) / uVar16;\n                if (uVar21 == 0) {\n                  trap(7);\n                }\n                uVar21 = uVar4 / uVar21;\n                if (uVar21 != uVar12) goto LAB_00019864;\nLAB_00019868:\n                iVar6 = *(int *)(pcVar11 + 8);\n              }" ({ "{") (if_statement "if (uVar16 == 0) {\n                  trap(7);\n                }" (if "if") (parenthesized_expression "(uVar16 == 0)" (( "(") (binary_expression "uVar16 == 0" (identifier "uVar16") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                  trap(7);\n                }" ({ "{") (expression_statement "trap(7);" (call_expression "trap(7)" (identifier "trap") (argument_list "(7)" (( "(") (number_literal "7") () ")"))) (; ";")) (} "}"))) (expression_statement "uVar21 = ((uVar8 + uVar16) - 1) / uVar16;" (assignment_expression "uVar21 = ((uVar8 + uVar16) - 1) / uVar16" (identifier "uVar21") (= "=") (binary_expression "((uVar8 + uVar16) - 1) / uVar16" (parenthesized_expression "((uVar8 + uVar16) - 1)" (( "(") (binary_expression "(uVar8 + uVar16) - 1" (parenthesized_expression "(uVar8 + uVar16)" (( "(") (binary_expression "uVar8 + uVar16" (identifier "uVar8") (+ "+") (identifier "uVar16")) () ")")) (- "-") (number_literal "1")) () ")")) (/ "/") (identifier "uVar16"))) (; ";")) (if_statement "if (uVar21 == 0) {\n                  trap(7);\n                }" (if "if") (parenthesized_expression "(uVar21 == 0)" (( "(") (binary_expression "uVar21 == 0" (identifier "uVar21") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                  trap(7);\n                }" ({ "{") (expression_statement "trap(7);" (call_expression "trap(7)" (identifier "trap") (argument_list "(7)" (( "(") (number_literal "7") () ")"))) (; ";")) (} "}"))) (expression_statement "uVar21 = uVar4 / uVar21;" (assignment_expression "uVar21 = uVar4 / uVar21" (identifier "uVar21") (= "=") (binary_expression "uVar4 / uVar21" (identifier "uVar4") (/ "/") (identifier "uVar21"))) (; ";")) (if_statement "if (uVar21 != uVar12) goto LAB_00019864;" (if "if") (parenthesized_expression "(uVar21 != uVar12)" (( "(") (binary_expression "uVar21 != uVar12" (identifier "uVar21") (!= "!=") (identifier "uVar12")) () ")")) (goto_statement "goto LAB_00019864;" (goto "goto") (statement_identifier "LAB_00019864") (; ";"))) (labeled_statement "LAB_00019868:\n                iVar6 = *(int *)(pcVar11 + 8);" (statement_identifier "LAB_00019868") (: ":") (expression_statement "iVar6 = *(int *)(pcVar11 + 8);" (assignment_expression "iVar6 = *(int *)(pcVar11 + 8)" (identifier "iVar6") (= "=") (pointer_expression "*(int *)(pcVar11 + 8)" (* "*") (cast_expression "(int *)(pcVar11 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pcVar11 + 8)" (( "(") (binary_expression "pcVar11 + 8" (identifier "pcVar11") (+ "+") (number_literal "8")) () ")"))))) (; ";"))) (} "}")))) (expression_statement "puVar14 = (uint *)(iVar6 + uVar21 * 4);" (assignment_expression "puVar14 = (uint *)(iVar6 + uVar21 * 4)" (identifier "puVar14") (= "=") (cast_expression "(uint *)(iVar6 + uVar21 * 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar6 + uVar21 * 4)" (( "(") (binary_expression "iVar6 + uVar21 * 4" (identifier "iVar6") (+ "+") (binary_expression "uVar21 * 4" (identifier "uVar21") (* "*") (number_literal "4"))) () ")")))) (; ";")) (expression_statement "uVar12 = *puVar14;" (assignment_expression "uVar12 = *puVar14" (identifier "uVar12") (= "=") (pointer_expression "*puVar14" (* "*") (identifier "puVar14"))) (; ";")) (if_statement "if (uVar12 < uVar17) {\n                *(uint *)(pcVar11 + 4) = (*(int *)(pcVar11 + 4) - uVar12) + uVar17;\n                *puVar14 = uVar17;\n                *pcVar11 = *(uint *)(pcVar11 + 4) < uVar19;\n              }" (if "if") (parenthesized_expression "(uVar12 < uVar17)" (( "(") (binary_expression "uVar12 < uVar17" (identifier "uVar12") (< "<") (identifier "uVar17")) () ")")) (compound_statement "{\n                *(uint *)(pcVar11 + 4) = (*(int *)(pcVar11 + 4) - uVar12) + uVar17;\n                *puVar14 = uVar17;\n                *pcVar11 = *(uint *)(pcVar11 + 4) < uVar19;\n              }" ({ "{") (expression_statement "*(uint *)(pcVar11 + 4) = (*(int *)(pcVar11 + 4) - uVar12) + uVar17;" (assignment_expression "*(uint *)(pcVar11 + 4) = (*(int *)(pcVar11 + 4) - uVar12) + uVar17" (pointer_expression "*(uint *)(pcVar11 + 4)" (* "*") (cast_expression "(uint *)(pcVar11 + 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pcVar11 + 4)" (( "(") (binary_expression "pcVar11 + 4" (identifier "pcVar11") (+ "+") (number_literal "4")) () ")")))) (= "=") (binary_expression "(*(int *)(pcVar11 + 4) - uVar12) + uVar17" (parenthesized_expression "(*(int *)(pcVar11 + 4) - uVar12)" (( "(") (binary_expression "*(int *)(pcVar11 + 4) - uVar12" (pointer_expression "*(int *)(pcVar11 + 4)" (* "*") (cast_expression "(int *)(pcVar11 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pcVar11 + 4)" (( "(") (binary_expression "pcVar11 + 4" (identifier "pcVar11") (+ "+") (number_literal "4")) () ")")))) (- "-") (identifier "uVar12")) () ")")) (+ "+") (identifier "uVar17"))) (; ";")) (expression_statement "*puVar14 = uVar17;" (assignment_expression "*puVar14 = uVar17" (pointer_expression "*puVar14" (* "*") (identifier "puVar14")) (= "=") (identifier "uVar17")) (; ";")) (expression_statement "*pcVar11 = *(uint *)(pcVar11 + 4) < uVar19;" (assignment_expression "*pcVar11 = *(uint *)(pcVar11 + 4) < uVar19" (pointer_expression "*pcVar11" (* "*") (identifier "pcVar11")) (= "=") (binary_expression "*(uint *)(pcVar11 + 4) < uVar19" (pointer_expression "*(uint *)(pcVar11 + 4)" (* "*") (cast_expression "(uint *)(pcVar11 + 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pcVar11 + 4)" (( "(") (binary_expression "pcVar11 + 4" (identifier "pcVar11") (+ "+") (number_literal "4")) () ")")))) (< "<") (identifier "uVar19"))) (; ";")) (} "}"))) (} "}"))) (expression_statement "pcVar11 = pcVar11 + 0xc;" (assignment_expression "pcVar11 = pcVar11 + 0xc" (identifier "pcVar11") (= "=") (binary_expression "pcVar11 + 0xc" (identifier "pcVar11") (+ "+") (number_literal "0xc"))) (; ";")) (expression_statement "uVar12 = uVar16;" (assignment_expression "uVar12 = uVar16" (identifier "uVar12") (= "=") (identifier "uVar16")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar20 != uVar16)" (( "(") (binary_expression "uVar20 != uVar16" (identifier "uVar20") (!= "!=") (identifier "uVar16")) () ")")) (; ";")) (} "}"))) (expression_statement "uVar4 = uVar4 + 1;" (assignment_expression "uVar4 = uVar4 + 1" (identifier "uVar4") (= "=") (binary_expression "uVar4 + 1" (identifier "uVar4") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "iVar6 = *(int *)(puVar3 + -0x59b0);" (assignment_expression "iVar6 = *(int *)(puVar3 + -0x59b0)" (identifier "iVar6") (= "=") (pointer_expression "*(int *)(puVar3 + -0x59b0)" (* "*") (cast_expression "(int *)(puVar3 + -0x59b0)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar3 + -0x59b0)" (( "(") (binary_expression "puVar3 + -0x59b0" (identifier "puVar3") (+ "+") (number_literal "-0x59b0")) () ")"))))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar4 < uVar8)" (( "(") (binary_expression "uVar4 < uVar8" (identifier "uVar4") (< "<") (identifier "uVar8")) () ")")) (; ";")) (} "}"))) (if_statement "if (1 < uVar20) {\n      iVar6 = *(int *)(PTR_DAT_00049208 + -0x5af0) + uVar20 * 0xc;\n      cVar1 = *(char *)(iVar6 + -0xc);\n      while (cVar1 == '\0') {\n        uVar20 = uVar20 - 1;\n        if (uVar20 == 1) {\n          return 1;\n        }\n        cVar1 = *(char *)(iVar6 + -0x18);\n        iVar6 = iVar6 + -0xc;\n      }\n    }" (if "if") (parenthesized_expression "(1 < uVar20)" (( "(") (binary_expression "1 < uVar20" (number_literal "1") (< "<") (identifier "uVar20")) () ")")) (compound_statement "{\n      iVar6 = *(int *)(PTR_DAT_00049208 + -0x5af0) + uVar20 * 0xc;\n      cVar1 = *(char *)(iVar6 + -0xc);\n      while (cVar1 == '\0') {\n        uVar20 = uVar20 - 1;\n        if (uVar20 == 1) {\n          return 1;\n        }\n        cVar1 = *(char *)(iVar6 + -0x18);\n        iVar6 = iVar6 + -0xc;\n      }\n    }" ({ "{") (expression_statement "iVar6 = *(int *)(PTR_DAT_00049208 + -0x5af0) + uVar20 * 0xc;" (assignment_expression "iVar6 = *(int *)(PTR_DAT_00049208 + -0x5af0) + uVar20 * 0xc" (identifier "iVar6") (= "=") (binary_expression "*(int *)(PTR_DAT_00049208 + -0x5af0) + uVar20 * 0xc" (pointer_expression "*(int *)(PTR_DAT_00049208 + -0x5af0)" (* "*") (cast_expression "(int *)(PTR_DAT_00049208 + -0x5af0)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_DAT_00049208 + -0x5af0)" (( "(") (binary_expression "PTR_DAT_00049208 + -0x5af0" (identifier "PTR_DAT_00049208") (+ "+") (number_literal "-0x5af0")) () ")")))) (+ "+") (binary_expression "uVar20 * 0xc" (identifier "uVar20") (* "*") (number_literal "0xc")))) (; ";")) (expression_statement "cVar1 = *(char *)(iVar6 + -0xc);" (assignment_expression "cVar1 = *(char *)(iVar6 + -0xc)" (identifier "cVar1") (= "=") (pointer_expression "*(char *)(iVar6 + -0xc)" (* "*") (cast_expression "(char *)(iVar6 + -0xc)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar6 + -0xc)" (( "(") (binary_expression "iVar6 + -0xc" (identifier "iVar6") (+ "+") (number_literal "-0xc")) () ")"))))) (; ";")) (while_statement "while (cVar1 == '\0') {\n        uVar20 = uVar20 - 1;\n        if (uVar20 == 1) {\n          return 1;\n        }\n        cVar1 = *(char *)(iVar6 + -0x18);\n        iVar6 = iVar6 + -0xc;\n      }" (while "while") (parenthesized_expression "(cVar1 == '\0')" (( "(") (binary_expression "cVar1 == '\0'" (identifier "cVar1") (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n        uVar20 = uVar20 - 1;\n        if (uVar20 == 1) {\n          return 1;\n        }\n        cVar1 = *(char *)(iVar6 + -0x18);\n        iVar6 = iVar6 + -0xc;\n      }" ({ "{") (expression_statement "uVar20 = uVar20 - 1;" (assignment_expression "uVar20 = uVar20 - 1" (identifier "uVar20") (= "=") (binary_expression "uVar20 - 1" (identifier "uVar20") (- "-") (number_literal "1"))) (; ";")) (if_statement "if (uVar20 == 1) {\n          return 1;\n        }" (if "if") (parenthesized_expression "(uVar20 == 1)" (( "(") (binary_expression "uVar20 == 1" (identifier "uVar20") (== "==") (number_literal "1")) () ")")) (compound_statement "{\n          return 1;\n        }" ({ "{") (return_statement "return 1;" (return "return") (number_literal "1") (; ";")) (} "}"))) (expression_statement "cVar1 = *(char *)(iVar6 + -0x18);" (assignment_expression "cVar1 = *(char *)(iVar6 + -0x18)" (identifier "cVar1") (= "=") (pointer_expression "*(char *)(iVar6 + -0x18)" (* "*") (cast_expression "(char *)(iVar6 + -0x18)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar6 + -0x18)" (( "(") (binary_expression "iVar6 + -0x18" (identifier "iVar6") (+ "+") (number_literal "-0x18")) () ")"))))) (; ";")) (expression_statement "iVar6 = iVar6 + -0xc;" (assignment_expression "iVar6 = iVar6 + -0xc" (identifier "iVar6") (= "=") (binary_expression "iVar6 + -0xc" (identifier "iVar6") (+ "+") (number_literal "-0xc"))) (; ";")) (} "}"))) (} "}"))) (return_statement "return uVar20;" (return "return") (identifier "uVar20") (; ";")) (} "}"))) (if_statement "if (uVar20 < uVar4 >> 1) {\n    uVar4 = uVar20 * 2;\n    if (((int)(uVar20 * 0x18) < 0) ||\n       (uVar20 * 3 >> 0x1d != 0 || (uint)(uVar20 * 3 < uVar4) != (int)uVar20 >> 0x1f))\n    goto LAB_000199b4;\n    uVar5 = xrealloc(*(undefined4 *)(PTR_DAT_00049208 + -0x5af0));\n    *(undefined4 *)(puVar2 + -0x5af0) = uVar5;\n  }\n  else {\n    if (((int)(uVar4 * 0xc) < 0) ||\n       (uVar4 * 3 >> 0x1e != 0 || (uint)(uVar4 * 3 < uVar4 * 2) != (int)uVar4 >> 0x1f))\n    goto LAB_000199b4;\n    uVar5 = xrealloc(*(undefined4 *)(PTR_DAT_00049208 + -0x5af0));\n    uVar4 = *(uint *)(puVar2 + -0x5af4);\n    *(undefined4 *)(puVar2 + -0x5af0) = uVar5;\n  }" (if "if") (parenthesized_expression "(uVar20 < uVar4 >> 1)" (( "(") (binary_expression "uVar20 < uVar4 >> 1" (identifier "uVar20") (< "<") (binary_expression "uVar4 >> 1" (identifier "uVar4") (>> ">>") (number_literal "1"))) () ")")) (compound_statement "{\n    uVar4 = uVar20 * 2;\n    if (((int)(uVar20 * 0x18) < 0) ||\n       (uVar20 * 3 >> 0x1d != 0 || (uint)(uVar20 * 3 < uVar4) != (int)uVar20 >> 0x1f))\n    goto LAB_000199b4;\n    uVar5 = xrealloc(*(undefined4 *)(PTR_DAT_00049208 + -0x5af0));\n    *(undefined4 *)(puVar2 + -0x5af0) = uVar5;\n  }" ({ "{") (expression_statement "uVar4 = uVar20 * 2;" (assignment_expression "uVar4 = uVar20 * 2" (identifier "uVar4") (= "=") (binary_expression "uVar20 * 2" (identifier "uVar20") (* "*") (number_literal "2"))) (; ";")) (if_statement "if (((int)(uVar20 * 0x18) < 0) ||\n       (uVar20 * 3 >> 0x1d != 0 || (uint)(uVar20 * 3 < uVar4) != (int)uVar20 >> 0x1f))\n    goto LAB_000199b4;" (if "if") (parenthesized_expression "(((int)(uVar20 * 0x18) < 0) ||\n       (uVar20 * 3 >> 0x1d != 0 || (uint)(uVar20 * 3 < uVar4) != (int)uVar20 >> 0x1f))" (( "(") (binary_expression "((int)(uVar20 * 0x18) < 0) ||\n       (uVar20 * 3 >> 0x1d != 0 || (uint)(uVar20 * 3 < uVar4) != (int)uVar20 >> 0x1f)" (parenthesized_expression "((int)(uVar20 * 0x18) < 0)" (( "(") (binary_expression "(int)(uVar20 * 0x18) < 0" (cast_expression "(int)(uVar20 * 0x18)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(uVar20 * 0x18)" (( "(") (binary_expression "uVar20 * 0x18" (identifier "uVar20") (* "*") (number_literal "0x18")) () ")"))) (< "<") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(uVar20 * 3 >> 0x1d != 0 || (uint)(uVar20 * 3 < uVar4) != (int)uVar20 >> 0x1f)" (( "(") (binary_expression "uVar20 * 3 >> 0x1d != 0 || (uint)(uVar20 * 3 < uVar4) != (int)uVar20 >> 0x1f" (binary_expression "uVar20 * 3 >> 0x1d != 0" (binary_expression "uVar20 * 3 >> 0x1d" (binary_expression "uVar20 * 3" (identifier "uVar20") (* "*") (number_literal "3")) (>> ">>") (number_literal "0x1d")) (!= "!=") (number_literal "0")) (|| "||") (binary_expression "(uint)(uVar20 * 3 < uVar4) != (int)uVar20 >> 0x1f" (call_expression "(uint)(uVar20 * 3 < uVar4)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(uVar20 * 3 < uVar4)" (( "(") (binary_expression "uVar20 * 3 < uVar4" (binary_expression "uVar20 * 3" (identifier "uVar20") (* "*") (number_literal "3")) (< "<") (identifier "uVar4")) () ")"))) (!= "!=") (binary_expression "(int)uVar20 >> 0x1f" (cast_expression "(int)uVar20" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar20")) (>> ">>") (number_literal "0x1f")))) () ")"))) () ")")) (goto_statement "goto LAB_000199b4;" (goto "goto") (statement_identifier "LAB_000199b4") (; ";"))) (expression_statement "uVar5 = xrealloc(*(undefined4 *)(PTR_DAT_00049208 + -0x5af0));" (assignment_expression "uVar5 = xrealloc(*(undefined4 *)(PTR_DAT_00049208 + -0x5af0))" (identifier "uVar5") (= "=") (call_expression "xrealloc(*(undefined4 *)(PTR_DAT_00049208 + -0x5af0))" (identifier "xrealloc") (argument_list "(*(undefined4 *)(PTR_DAT_00049208 + -0x5af0))" (( "(") (pointer_expression "*(undefined4 *)(PTR_DAT_00049208 + -0x5af0)" (* "*") (cast_expression "(undefined4 *)(PTR_DAT_00049208 + -0x5af0)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_DAT_00049208 + -0x5af0)" (( "(") (binary_expression "PTR_DAT_00049208 + -0x5af0" (identifier "PTR_DAT_00049208") (+ "+") (number_literal "-0x5af0")) () ")")))) () ")")))) (; ";")) (expression_statement "*(undefined4 *)(puVar2 + -0x5af0) = uVar5;" (assignment_expression "*(undefined4 *)(puVar2 + -0x5af0) = uVar5" (pointer_expression "*(undefined4 *)(puVar2 + -0x5af0)" (* "*") (cast_expression "(undefined4 *)(puVar2 + -0x5af0)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar2 + -0x5af0)" (( "(") (binary_expression "puVar2 + -0x5af0" (identifier "puVar2") (+ "+") (number_literal "-0x5af0")) () ")")))) (= "=") (identifier "uVar5")) (; ";")) (} "}")) (else_clause "else {\n    if (((int)(uVar4 * 0xc) < 0) ||\n       (uVar4 * 3 >> 0x1e != 0 || (uint)(uVar4 * 3 < uVar4 * 2) != (int)uVar4 >> 0x1f))\n    goto LAB_000199b4;\n    uVar5 = xrealloc(*(undefined4 *)(PTR_DAT_00049208 + -0x5af0));\n    uVar4 = *(uint *)(puVar2 + -0x5af4);\n    *(undefined4 *)(puVar2 + -0x5af0) = uVar5;\n  }" (else "else") (compound_statement "{\n    if (((int)(uVar4 * 0xc) < 0) ||\n       (uVar4 * 3 >> 0x1e != 0 || (uint)(uVar4 * 3 < uVar4 * 2) != (int)uVar4 >> 0x1f))\n    goto LAB_000199b4;\n    uVar5 = xrealloc(*(undefined4 *)(PTR_DAT_00049208 + -0x5af0));\n    uVar4 = *(uint *)(puVar2 + -0x5af4);\n    *(undefined4 *)(puVar2 + -0x5af0) = uVar5;\n  }" ({ "{") (if_statement "if (((int)(uVar4 * 0xc) < 0) ||\n       (uVar4 * 3 >> 0x1e != 0 || (uint)(uVar4 * 3 < uVar4 * 2) != (int)uVar4 >> 0x1f))\n    goto LAB_000199b4;" (if "if") (parenthesized_expression "(((int)(uVar4 * 0xc) < 0) ||\n       (uVar4 * 3 >> 0x1e != 0 || (uint)(uVar4 * 3 < uVar4 * 2) != (int)uVar4 >> 0x1f))" (( "(") (binary_expression "((int)(uVar4 * 0xc) < 0) ||\n       (uVar4 * 3 >> 0x1e != 0 || (uint)(uVar4 * 3 < uVar4 * 2) != (int)uVar4 >> 0x1f)" (parenthesized_expression "((int)(uVar4 * 0xc) < 0)" (( "(") (binary_expression "(int)(uVar4 * 0xc) < 0" (cast_expression "(int)(uVar4 * 0xc)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(uVar4 * 0xc)" (( "(") (binary_expression "uVar4 * 0xc" (identifier "uVar4") (* "*") (number_literal "0xc")) () ")"))) (< "<") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(uVar4 * 3 >> 0x1e != 0 || (uint)(uVar4 * 3 < uVar4 * 2) != (int)uVar4 >> 0x1f)" (( "(") (binary_expression "uVar4 * 3 >> 0x1e != 0 || (uint)(uVar4 * 3 < uVar4 * 2) != (int)uVar4 >> 0x1f" (binary_expression "uVar4 * 3 >> 0x1e != 0" (binary_expression "uVar4 * 3 >> 0x1e" (binary_expression "uVar4 * 3" (identifier "uVar4") (* "*") (number_literal "3")) (>> ">>") (number_literal "0x1e")) (!= "!=") (number_literal "0")) (|| "||") (binary_expression "(uint)(uVar4 * 3 < uVar4 * 2) != (int)uVar4 >> 0x1f" (call_expression "(uint)(uVar4 * 3 < uVar4 * 2)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(uVar4 * 3 < uVar4 * 2)" (( "(") (binary_expression "uVar4 * 3 < uVar4 * 2" (binary_expression "uVar4 * 3" (identifier "uVar4") (* "*") (number_literal "3")) (< "<") (binary_expression "uVar4 * 2" (identifier "uVar4") (* "*") (number_literal "2"))) () ")"))) (!= "!=") (binary_expression "(int)uVar4 >> 0x1f" (cast_expression "(int)uVar4" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar4")) (>> ">>") (number_literal "0x1f")))) () ")"))) () ")")) (goto_statement "goto LAB_000199b4;" (goto "goto") (statement_identifier "LAB_000199b4") (; ";"))) (expression_statement "uVar5 = xrealloc(*(undefined4 *)(PTR_DAT_00049208 + -0x5af0));" (assignment_expression "uVar5 = xrealloc(*(undefined4 *)(PTR_DAT_00049208 + -0x5af0))" (identifier "uVar5") (= "=") (call_expression "xrealloc(*(undefined4 *)(PTR_DAT_00049208 + -0x5af0))" (identifier "xrealloc") (argument_list "(*(undefined4 *)(PTR_DAT_00049208 + -0x5af0))" (( "(") (pointer_expression "*(undefined4 *)(PTR_DAT_00049208 + -0x5af0)" (* "*") (cast_expression "(undefined4 *)(PTR_DAT_00049208 + -0x5af0)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_DAT_00049208 + -0x5af0)" (( "(") (binary_expression "PTR_DAT_00049208 + -0x5af0" (identifier "PTR_DAT_00049208") (+ "+") (number_literal "-0x5af0")) () ")")))) () ")")))) (; ";")) (expression_statement "uVar4 = *(uint *)(puVar2 + -0x5af4);" (assignment_expression "uVar4 = *(uint *)(puVar2 + -0x5af4)" (identifier "uVar4") (= "=") (pointer_expression "*(uint *)(puVar2 + -0x5af4)" (* "*") (cast_expression "(uint *)(puVar2 + -0x5af4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar2 + -0x5af4)" (( "(") (binary_expression "puVar2 + -0x5af4" (identifier "puVar2") (+ "+") (number_literal "-0x5af4")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(puVar2 + -0x5af0) = uVar5;" (assignment_expression "*(undefined4 *)(puVar2 + -0x5af0) = uVar5" (pointer_expression "*(undefined4 *)(puVar2 + -0x5af0)" (* "*") (cast_expression "(undefined4 *)(puVar2 + -0x5af0)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar2 + -0x5af0)" (( "(") (binary_expression "puVar2 + -0x5af0" (identifier "puVar2") (+ "+") (number_literal "-0x5af0")) () ")")))) (= "=") (identifier "uVar5")) (; ";")) (} "}")))) (expression_statement "uVar18 = uVar4 - *(int *)(puVar2 + -0x6990);" (assignment_expression "uVar18 = uVar4 - *(int *)(puVar2 + -0x6990)" (identifier "uVar18") (= "=") (binary_expression "uVar4 - *(int *)(puVar2 + -0x6990)" (identifier "uVar4") (- "-") (pointer_expression "*(int *)(puVar2 + -0x6990)" (* "*") (cast_expression "(int *)(puVar2 + -0x6990)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar2 + -0x6990)" (( "(") (binary_expression "puVar2 + -0x6990" (identifier "puVar2") (+ "+") (number_literal "-0x6990")) () ")")))))) (; ";")) (expression_statement "uVar12 = *(int *)(puVar2 + -0x6990) + 1 + uVar4;" (assignment_expression "uVar12 = *(int *)(puVar2 + -0x6990) + 1 + uVar4" (identifier "uVar12") (= "=") (binary_expression "*(int *)(puVar2 + -0x6990) + 1 + uVar4" (binary_expression "*(int *)(puVar2 + -0x6990) + 1" (pointer_expression "*(int *)(puVar2 + -0x6990)" (* "*") (cast_expression "(int *)(puVar2 + -0x6990)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar2 + -0x6990)" (( "(") (binary_expression "puVar2 + -0x6990" (identifier "puVar2") (+ "+") (number_literal "-0x6990")) () ")")))) (+ "+") (number_literal "1")) (+ "+") (identifier "uVar4"))) (; ";")) (expression_statement "uVar8 = uVar18 * uVar12;" (assignment_expression "uVar8 = uVar18 * uVar12" (identifier "uVar8") (= "=") (binary_expression "uVar18 * uVar12" (identifier "uVar18") (* "*") (identifier "uVar12"))) (; ";")) (if_statement "if (uVar4 <= uVar12) {\n    if (uVar18 == 0) {\n      trap(7);\n    }\n    if (((uVar12 == uVar8 / uVar18) && (-1 < (int)((uVar8 >> 1) << 2))) && (-1 < (int)uVar8)) {\n      iVar6 = xmalloc();\n      uVar18 = *(uint *)(puVar2 + -0x6990);\n      if (uVar18 < uVar4) {\n        iVar9 = (uVar18 + 1) * 4;\n        iVar13 = *(int *)(puVar2 + -0x5af0) + uVar18 * 0xc;\n        do {\n          *(int *)(iVar13 + 8) = iVar6;\n          iVar6 = iVar6 + iVar9;\n          iVar9 = iVar9 + 4;\n          iVar13 = iVar13 + 0xc;\n        } while ((uVar4 + 1) * 4 != iVar9);\n      }\n      uVar18 = *(uint *)(puVar2 + -0x59a8);\n      *(uint *)(puVar2 + -0x6990) = uVar4;\n      goto LAB_00019798;\n    }\n  }" (if "if") (parenthesized_expression "(uVar4 <= uVar12)" (( "(") (binary_expression "uVar4 <= uVar12" (identifier "uVar4") (<= "<=") (identifier "uVar12")) () ")")) (compound_statement "{\n    if (uVar18 == 0) {\n      trap(7);\n    }\n    if (((uVar12 == uVar8 / uVar18) && (-1 < (int)((uVar8 >> 1) << 2))) && (-1 < (int)uVar8)) {\n      iVar6 = xmalloc();\n      uVar18 = *(uint *)(puVar2 + -0x6990);\n      if (uVar18 < uVar4) {\n        iVar9 = (uVar18 + 1) * 4;\n        iVar13 = *(int *)(puVar2 + -0x5af0) + uVar18 * 0xc;\n        do {\n          *(int *)(iVar13 + 8) = iVar6;\n          iVar6 = iVar6 + iVar9;\n          iVar9 = iVar9 + 4;\n          iVar13 = iVar13 + 0xc;\n        } while ((uVar4 + 1) * 4 != iVar9);\n      }\n      uVar18 = *(uint *)(puVar2 + -0x59a8);\n      *(uint *)(puVar2 + -0x6990) = uVar4;\n      goto LAB_00019798;\n    }\n  }" ({ "{") (if_statement "if (uVar18 == 0) {\n      trap(7);\n    }" (if "if") (parenthesized_expression "(uVar18 == 0)" (( "(") (binary_expression "uVar18 == 0" (identifier "uVar18") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      trap(7);\n    }" ({ "{") (expression_statement "trap(7);" (call_expression "trap(7)" (identifier "trap") (argument_list "(7)" (( "(") (number_literal "7") () ")"))) (; ";")) (} "}"))) (if_statement "if (((uVar12 == uVar8 / uVar18) && (-1 < (int)((uVar8 >> 1) << 2))) && (-1 < (int)uVar8)) {\n      iVar6 = xmalloc();\n      uVar18 = *(uint *)(puVar2 + -0x6990);\n      if (uVar18 < uVar4) {\n        iVar9 = (uVar18 + 1) * 4;\n        iVar13 = *(int *)(puVar2 + -0x5af0) + uVar18 * 0xc;\n        do {\n          *(int *)(iVar13 + 8) = iVar6;\n          iVar6 = iVar6 + iVar9;\n          iVar9 = iVar9 + 4;\n          iVar13 = iVar13 + 0xc;\n        } while ((uVar4 + 1) * 4 != iVar9);\n      }\n      uVar18 = *(uint *)(puVar2 + -0x59a8);\n      *(uint *)(puVar2 + -0x6990) = uVar4;\n      goto LAB_00019798;\n    }" (if "if") (parenthesized_expression "(((uVar12 == uVar8 / uVar18) && (-1 < (int)((uVar8 >> 1) << 2))) && (-1 < (int)uVar8))" (( "(") (binary_expression "((uVar12 == uVar8 / uVar18) && (-1 < (int)((uVar8 >> 1) << 2))) && (-1 < (int)uVar8)" (parenthesized_expression "((uVar12 == uVar8 / uVar18) && (-1 < (int)((uVar8 >> 1) << 2)))" (( "(") (binary_expression "(uVar12 == uVar8 / uVar18) && (-1 < (int)((uVar8 >> 1) << 2))" (parenthesized_expression "(uVar12 == uVar8 / uVar18)" (( "(") (binary_expression "uVar12 == uVar8 / uVar18" (identifier "uVar12") (== "==") (binary_expression "uVar8 / uVar18" (identifier "uVar8") (/ "/") (identifier "uVar18"))) () ")")) (&& "&&") (parenthesized_expression "(-1 < (int)((uVar8 >> 1) << 2))" (( "(") (binary_expression "-1 < (int)((uVar8 >> 1) << 2)" (number_literal "-1") (< "<") (cast_expression "(int)((uVar8 >> 1) << 2)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "((uVar8 >> 1) << 2)" (( "(") (binary_expression "(uVar8 >> 1) << 2" (parenthesized_expression "(uVar8 >> 1)" (( "(") (binary_expression "uVar8 >> 1" (identifier "uVar8") (>> ">>") (number_literal "1")) () ")")) (<< "<<") (number_literal "2")) () ")")))) () ")"))) () ")")) (&& "&&") (parenthesized_expression "(-1 < (int)uVar8)" (( "(") (binary_expression "-1 < (int)uVar8" (number_literal "-1") (< "<") (cast_expression "(int)uVar8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar8"))) () ")"))) () ")")) (compound_statement "{\n      iVar6 = xmalloc();\n      uVar18 = *(uint *)(puVar2 + -0x6990);\n      if (uVar18 < uVar4) {\n        iVar9 = (uVar18 + 1) * 4;\n        iVar13 = *(int *)(puVar2 + -0x5af0) + uVar18 * 0xc;\n        do {\n          *(int *)(iVar13 + 8) = iVar6;\n          iVar6 = iVar6 + iVar9;\n          iVar9 = iVar9 + 4;\n          iVar13 = iVar13 + 0xc;\n        } while ((uVar4 + 1) * 4 != iVar9);\n      }\n      uVar18 = *(uint *)(puVar2 + -0x59a8);\n      *(uint *)(puVar2 + -0x6990) = uVar4;\n      goto LAB_00019798;\n    }" ({ "{") (expression_statement "iVar6 = xmalloc();" (assignment_expression "iVar6 = xmalloc()" (identifier "iVar6") (= "=") (call_expression "xmalloc()" (identifier "xmalloc") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "uVar18 = *(uint *)(puVar2 + -0x6990);" (assignment_expression "uVar18 = *(uint *)(puVar2 + -0x6990)" (identifier "uVar18") (= "=") (pointer_expression "*(uint *)(puVar2 + -0x6990)" (* "*") (cast_expression "(uint *)(puVar2 + -0x6990)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar2 + -0x6990)" (( "(") (binary_expression "puVar2 + -0x6990" (identifier "puVar2") (+ "+") (number_literal "-0x6990")) () ")"))))) (; ";")) (if_statement "if (uVar18 < uVar4) {\n        iVar9 = (uVar18 + 1) * 4;\n        iVar13 = *(int *)(puVar2 + -0x5af0) + uVar18 * 0xc;\n        do {\n          *(int *)(iVar13 + 8) = iVar6;\n          iVar6 = iVar6 + iVar9;\n          iVar9 = iVar9 + 4;\n          iVar13 = iVar13 + 0xc;\n        } while ((uVar4 + 1) * 4 != iVar9);\n      }" (if "if") (parenthesized_expression "(uVar18 < uVar4)" (( "(") (binary_expression "uVar18 < uVar4" (identifier "uVar18") (< "<") (identifier "uVar4")) () ")")) (compound_statement "{\n        iVar9 = (uVar18 + 1) * 4;\n        iVar13 = *(int *)(puVar2 + -0x5af0) + uVar18 * 0xc;\n        do {\n          *(int *)(iVar13 + 8) = iVar6;\n          iVar6 = iVar6 + iVar9;\n          iVar9 = iVar9 + 4;\n          iVar13 = iVar13 + 0xc;\n        } while ((uVar4 + 1) * 4 != iVar9);\n      }" ({ "{") (expression_statement "iVar9 = (uVar18 + 1) * 4;" (assignment_expression "iVar9 = (uVar18 + 1) * 4" (identifier "iVar9") (= "=") (binary_expression "(uVar18 + 1) * 4" (parenthesized_expression "(uVar18 + 1)" (( "(") (binary_expression "uVar18 + 1" (identifier "uVar18") (+ "+") (number_literal "1")) () ")")) (* "*") (number_literal "4"))) (; ";")) (expression_statement "iVar13 = *(int *)(puVar2 + -0x5af0) + uVar18 * 0xc;" (assignment_expression "iVar13 = *(int *)(puVar2 + -0x5af0) + uVar18 * 0xc" (identifier "iVar13") (= "=") (binary_expression "*(int *)(puVar2 + -0x5af0) + uVar18 * 0xc" (pointer_expression "*(int *)(puVar2 + -0x5af0)" (* "*") (cast_expression "(int *)(puVar2 + -0x5af0)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar2 + -0x5af0)" (( "(") (binary_expression "puVar2 + -0x5af0" (identifier "puVar2") (+ "+") (number_literal "-0x5af0")) () ")")))) (+ "+") (binary_expression "uVar18 * 0xc" (identifier "uVar18") (* "*") (number_literal "0xc")))) (; ";")) (do_statement "do {\n          *(int *)(iVar13 + 8) = iVar6;\n          iVar6 = iVar6 + iVar9;\n          iVar9 = iVar9 + 4;\n          iVar13 = iVar13 + 0xc;\n        } while ((uVar4 + 1) * 4 != iVar9);" (do "do") (compound_statement "{\n          *(int *)(iVar13 + 8) = iVar6;\n          iVar6 = iVar6 + iVar9;\n          iVar9 = iVar9 + 4;\n          iVar13 = iVar13 + 0xc;\n        }" ({ "{") (expression_statement "*(int *)(iVar13 + 8) = iVar6;" (assignment_expression "*(int *)(iVar13 + 8) = iVar6" (pointer_expression "*(int *)(iVar13 + 8)" (* "*") (cast_expression "(int *)(iVar13 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar13 + 8)" (( "(") (binary_expression "iVar13 + 8" (identifier "iVar13") (+ "+") (number_literal "8")) () ")")))) (= "=") (identifier "iVar6")) (; ";")) (expression_statement "iVar6 = iVar6 + iVar9;" (assignment_expression "iVar6 = iVar6 + iVar9" (identifier "iVar6") (= "=") (binary_expression "iVar6 + iVar9" (identifier "iVar6") (+ "+") (identifier "iVar9"))) (; ";")) (expression_statement "iVar9 = iVar9 + 4;" (assignment_expression "iVar9 = iVar9 + 4" (identifier "iVar9") (= "=") (binary_expression "iVar9 + 4" (identifier "iVar9") (+ "+") (number_literal "4"))) (; ";")) (expression_statement "iVar13 = iVar13 + 0xc;" (assignment_expression "iVar13 = iVar13 + 0xc" (identifier "iVar13") (= "=") (binary_expression "iVar13 + 0xc" (identifier "iVar13") (+ "+") (number_literal "0xc"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "((uVar4 + 1) * 4 != iVar9)" (( "(") (binary_expression "(uVar4 + 1) * 4 != iVar9" (binary_expression "(uVar4 + 1) * 4" (parenthesized_expression "(uVar4 + 1)" (( "(") (binary_expression "uVar4 + 1" (identifier "uVar4") (+ "+") (number_literal "1")) () ")")) (* "*") (number_literal "4")) (!= "!=") (identifier "iVar9")) () ")")) (; ";")) (} "}"))) (expression_statement "uVar18 = *(uint *)(puVar2 + -0x59a8);" (assignment_expression "uVar18 = *(uint *)(puVar2 + -0x59a8)" (identifier "uVar18") (= "=") (pointer_expression "*(uint *)(puVar2 + -0x59a8)" (* "*") (cast_expression "(uint *)(puVar2 + -0x59a8)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar2 + -0x59a8)" (( "(") (binary_expression "puVar2 + -0x59a8" (identifier "puVar2") (+ "+") (number_literal "-0x59a8")) () ")"))))) (; ";")) (expression_statement "*(uint *)(puVar2 + -0x6990) = uVar4;" (assignment_expression "*(uint *)(puVar2 + -0x6990) = uVar4" (pointer_expression "*(uint *)(puVar2 + -0x6990)" (* "*") (cast_expression "(uint *)(puVar2 + -0x6990)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar2 + -0x6990)" (( "(") (binary_expression "puVar2 + -0x6990" (identifier "puVar2") (+ "+") (number_literal "-0x6990")) () ")")))) (= "=") (identifier "uVar4")) (; ";")) (goto_statement "goto LAB_00019798;" (goto "goto") (statement_identifier "LAB_00019798") (; ";")) (} "}"))) (} "}"))) (labeled_statement "LAB_000199b4:\n                    \n  xalloc_die();" (statement_identifier "LAB_000199b4") (: ":") (expression_statement "xalloc_die();" (call_expression "xalloc_die()" (identifier "xalloc_die") (argument_list "()" (( "(") () ")"))) (; ";"))) (} "}")))
(translation_unit (function_definition type: (type_identifier) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (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: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (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: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) consequence: (compound_statement (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (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)))))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (char_literal (escape_sequence)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (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)))))))) alternative: (else_clause (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) right: (number_literal))) right: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (goto_statement label: (statement_identifier))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) right: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier)))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (identifier) right: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (while_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (char_literal (escape_sequence)))) body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (return_statement (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))))))) (return_statement (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) consequence: (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: (cast_expression type: (type_descriptor type: (primitive_type)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))) right: (number_literal))) right: (parenthesized_expression (binary_expression left: (binary_expression left: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal)) right: (number_literal)) right: (binary_expression left: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (identifier)))) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier)))) alternative: (else_clause (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))) right: (number_literal))) right: (parenthesized_expression (binary_expression left: (binary_expression left: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal)) right: (number_literal)) right: (binary_expression left: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (number_literal)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) right: (parenthesized_expression (binary_expression left: (number_literal) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal)))))))) right: (parenthesized_expression (binary_expression left: (number_literal) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (identifier) right: (number_literal))))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal)) right: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (goto_statement label: (statement_identifier)))))) (labeled_statement label: (statement_identifier) (expression_statement (call_expression function: (identifier) arguments: (argument_list)))))))

uint MASKED(int param_1)

{
  char cVar1;
  undefined *puVar2;
  undefined *puVar3;
  uint uVar4;
  undefined4 uVar5;
  int iVar6;
  undefined4 *puVar7;
  uint uVar8;
  int iVar9;
  undefined4 *puVar10;
  char *pcVar11;
  uint uVar12;
  int iVar13;
  uint *puVar14;
  undefined1 *puVar15;
  uint uVar16;
  uint uVar17;
  uint uVar18;
  uint uVar19;
  uint uVar20;
  uint uVar21;
  
  puVar2 = PTR_DAT_00049208;
  uVar18 = *(uint *)(PTR_DAT_00049208 + -0x59a8);
  uVar4 = *(uint *)(PTR_DAT_00049208 + -0x5af4);
  uVar20 = uVar4;
  if (uVar18 <= uVar4) {
    uVar20 = uVar18;
  }
  if (uVar20 <= *(uint *)(PTR_DAT_00049208 + -0x6990)) {
LAB_00019798:
    if (uVar20 != 0) {
      iVar6 = 0;
      iVar9 = 3;
      puVar15 = *(undefined1 **)(PTR_DAT_00049208 + -0x5af0);
      do {
        puVar7 = *(undefined4 **)(puVar15 + 8);
        iVar6 = iVar6 + 4;
        *puVar15 = 1;
        *(int *)(puVar15 + 4) = iVar9;
        puVar10 = (undefined4 *)((int)puVar7 + iVar6);
        do {
          *puVar7 = 3;
          puVar7 = puVar7 + 1;
        } while (puVar10 != puVar7);
        puVar15 = puVar15 + 0xc;
        iVar9 = iVar9 + 3;
      } while (iVar6 != uVar20 << 2);
    }
    puVar3 = PTR_DAT_00049208;
    if (uVar18 != 0) {
      uVar4 = 0;
      iVar6 = *(int *)(PTR_DAT_00049208 + -0x59b0);
      do {
        uVar18 = FUN_00019404(*(undefined4 *)(iVar6 + uVar4 * 4));
        uVar8 = *(uint *)(puVar2 + -0x59a8);
        if (uVar20 != 0) {
          uVar19 = *(uint *)(puVar3 + -0x5a58);
          pcVar11 = *(char **)(puVar3 + -0x5af0);
          uVar12 = 0;
          do {
            uVar16 = uVar12 + 1;
            if (*pcVar11 != '\0') {
              uVar17 = uVar18;
              if (param_1 == 0) {
                if (uVar16 == 0) {
                  trap(7);
                }
                uVar21 = uVar4 % uVar16;
                if (uVar21 != uVar12) {
LAB_00019864:
                  uVar17 = uVar18 + 2;
                  goto LAB_00019868;
                }
                iVar6 = *(int *)(pcVar11 + 8);
              }
              else {
                if (uVar16 == 0) {
                  trap(7);
                }
                uVar21 = ((uVar8 + uVar16) - 1) / uVar16;
                if (uVar21 == 0) {
                  trap(7);
                }
                uVar21 = uVar4 / uVar21;
                if (uVar21 != uVar12) goto LAB_00019864;
LAB_00019868:
                iVar6 = *(int *)(pcVar11 + 8);
              }
              puVar14 = (uint *)(iVar6 + uVar21 * 4);
              uVar12 = *puVar14;
              if (uVar12 < uVar17) {
                *(uint *)(pcVar11 + 4) = (*(int *)(pcVar11 + 4) - uVar12) + uVar17;
                *puVar14 = uVar17;
                *pcVar11 = *(uint *)(pcVar11 + 4) < uVar19;
              }
            }
            pcVar11 = pcVar11 + 0xc;
            uVar12 = uVar16;
          } while (uVar20 != uVar16);
        }
        uVar4 = uVar4 + 1;
        iVar6 = *(int *)(puVar3 + -0x59b0);
      } while (uVar4 < uVar8);
    }
    if (1 < uVar20) {
      iVar6 = *(int *)(PTR_DAT_00049208 + -0x5af0) + uVar20 * 0xc;
      cVar1 = *(char *)(iVar6 + -0xc);
      while (cVar1 == '\0') {
        uVar20 = uVar20 - 1;
        if (uVar20 == 1) {
          return 1;
        }
        cVar1 = *(char *)(iVar6 + -0x18);
        iVar6 = iVar6 + -0xc;
      }
    }
    return uVar20;
  }
  if (uVar20 < uVar4 >> 1) {
    uVar4 = uVar20 * 2;
    if (((int)(uVar20 * 0x18) < 0) ||
       (uVar20 * 3 >> 0x1d != 0 || (uint)(uVar20 * 3 < uVar4) != (int)uVar20 >> 0x1f))
    goto LAB_000199b4;
    uVar5 = xrealloc(*(undefined4 *)(PTR_DAT_00049208 + -0x5af0));
    *(undefined4 *)(puVar2 + -0x5af0) = uVar5;
  }
  else {
    if (((int)(uVar4 * 0xc) < 0) ||
       (uVar4 * 3 >> 0x1e != 0 || (uint)(uVar4 * 3 < uVar4 * 2) != (int)uVar4 >> 0x1f))
    goto LAB_000199b4;
    uVar5 = xrealloc(*(undefined4 *)(PTR_DAT_00049208 + -0x5af0));
    uVar4 = *(uint *)(puVar2 + -0x5af4);
    *(undefined4 *)(puVar2 + -0x5af0) = uVar5;
  }
  uVar18 = uVar4 - *(int *)(puVar2 + -0x6990);
  uVar12 = *(int *)(puVar2 + -0x6990) + 1 + uVar4;
  uVar8 = uVar18 * uVar12;
  if (uVar4 <= uVar12) {
    if (uVar18 == 0) {
      trap(7);
    }
    if (((uVar12 == uVar8 / uVar18) && (-1 < (int)((uVar8 >> 1) << 2))) && (-1 < (int)uVar8)) {
      iVar6 = xmalloc();
      uVar18 = *(uint *)(puVar2 + -0x6990);
      if (uVar18 < uVar4) {
        iVar9 = (uVar18 + 1) * 4;
        iVar13 = *(int *)(puVar2 + -0x5af0) + uVar18 * 0xc;
        do {
          *(int *)(iVar13 + 8) = iVar6;
          iVar6 = iVar6 + iVar9;
          iVar9 = iVar9 + 4;
          iVar13 = iVar13 + 0xc;
        } while ((uVar4 + 1) * 4 != iVar9);
      }
      uVar18 = *(uint *)(puVar2 + -0x59a8);
      *(uint *)(puVar2 + -0x6990) = uVar4;
      goto LAB_00019798;
    }
  }
LAB_000199b4:
                    /* WARNING: Subroutine does not return */
  xalloc_die();
}

